Completed day 17. Had to look at some other peoples stuff for guidance though
This commit is contained in:
794
day_16/Cargo.lock
generated
Normal file
794
day_16/Cargo.lock
generated
Normal file
@@ -0,0 +1,794 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aho-corasick"
|
||||||
|
version = "1.1.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "anes"
|
||||||
|
version = "0.1.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "atty"
|
||||||
|
version = "0.2.14"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
|
||||||
|
dependencies = [
|
||||||
|
"hermit-abi",
|
||||||
|
"libc",
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "autocfg"
|
||||||
|
version = "1.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bitflags"
|
||||||
|
version = "1.3.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bumpalo"
|
||||||
|
version = "3.14.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bytecount"
|
||||||
|
version = "0.6.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e1e5f035d16fc623ae5f74981db80a439803888314e3a555fd6f04acd51a3205"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cast"
|
||||||
|
version = "0.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cfg-if"
|
||||||
|
version = "1.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ciborium"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926"
|
||||||
|
dependencies = [
|
||||||
|
"ciborium-io",
|
||||||
|
"ciborium-ll",
|
||||||
|
"serde",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ciborium-io"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ciborium-ll"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b"
|
||||||
|
dependencies = [
|
||||||
|
"ciborium-io",
|
||||||
|
"half",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clap"
|
||||||
|
version = "3.2.25"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags",
|
||||||
|
"clap_lex",
|
||||||
|
"indexmap",
|
||||||
|
"textwrap",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "clap_lex"
|
||||||
|
version = "0.2.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
|
||||||
|
dependencies = [
|
||||||
|
"os_str_bytes",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "combinations"
|
||||||
|
version = "0.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "728b7ab3119b5167cc60a4aad16b6086b762278f5571cc650e7eed2e89a23a15"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "criterion"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
|
||||||
|
dependencies = [
|
||||||
|
"anes",
|
||||||
|
"atty",
|
||||||
|
"cast",
|
||||||
|
"ciborium",
|
||||||
|
"clap",
|
||||||
|
"criterion-plot",
|
||||||
|
"itertools 0.10.5",
|
||||||
|
"lazy_static",
|
||||||
|
"num-traits",
|
||||||
|
"oorandom",
|
||||||
|
"plotters",
|
||||||
|
"rayon",
|
||||||
|
"regex",
|
||||||
|
"serde",
|
||||||
|
"serde_derive",
|
||||||
|
"serde_json",
|
||||||
|
"tinytemplate",
|
||||||
|
"walkdir",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "criterion-plot"
|
||||||
|
version = "0.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
|
||||||
|
dependencies = [
|
||||||
|
"cast",
|
||||||
|
"itertools 0.10.5",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crossbeam-deque"
|
||||||
|
version = "0.8.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"crossbeam-epoch",
|
||||||
|
"crossbeam-utils",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crossbeam-epoch"
|
||||||
|
version = "0.9.15"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"cfg-if",
|
||||||
|
"crossbeam-utils",
|
||||||
|
"memoffset",
|
||||||
|
"scopeguard",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crossbeam-utils"
|
||||||
|
version = "0.8.16"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "csv"
|
||||||
|
version = "1.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe"
|
||||||
|
dependencies = [
|
||||||
|
"csv-core",
|
||||||
|
"itoa",
|
||||||
|
"ryu",
|
||||||
|
"serde",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "csv-core"
|
||||||
|
version = "0.1.11"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "day_16"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"combinations",
|
||||||
|
"criterion",
|
||||||
|
"csv",
|
||||||
|
"itertools 0.12.0",
|
||||||
|
"ndarray",
|
||||||
|
"nom",
|
||||||
|
"nom_locate",
|
||||||
|
"num",
|
||||||
|
"strum",
|
||||||
|
"strum_macros",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "either"
|
||||||
|
version = "1.9.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "half"
|
||||||
|
version = "1.8.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "hashbrown"
|
||||||
|
version = "0.12.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "heck"
|
||||||
|
version = "0.4.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "hermit-abi"
|
||||||
|
version = "0.1.19"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "indexmap"
|
||||||
|
version = "1.9.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"hashbrown",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "itertools"
|
||||||
|
version = "0.10.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
|
||||||
|
dependencies = [
|
||||||
|
"either",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "itertools"
|
||||||
|
version = "0.12.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0"
|
||||||
|
dependencies = [
|
||||||
|
"either",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "itoa"
|
||||||
|
version = "1.0.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "js-sys"
|
||||||
|
version = "0.3.66"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca"
|
||||||
|
dependencies = [
|
||||||
|
"wasm-bindgen",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "lazy_static"
|
||||||
|
version = "1.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "libc"
|
||||||
|
version = "0.2.150"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "log"
|
||||||
|
version = "0.4.20"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "matrixmultiply"
|
||||||
|
version = "0.3.8"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"rawpointer",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "memchr"
|
||||||
|
version = "2.6.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "memoffset"
|
||||||
|
version = "0.9.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "minimal-lexical"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ndarray"
|
||||||
|
version = "0.15.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "adb12d4e967ec485a5f71c6311fe28158e9d6f4bc4a447b474184d0f91a8fa32"
|
||||||
|
dependencies = [
|
||||||
|
"matrixmultiply",
|
||||||
|
"num-complex",
|
||||||
|
"num-integer",
|
||||||
|
"num-traits",
|
||||||
|
"rawpointer",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "nom"
|
||||||
|
version = "7.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
"minimal-lexical",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "nom_locate"
|
||||||
|
version = "4.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1e3c83c053b0713da60c5b8de47fe8e494fe3ece5267b2f23090a07a053ba8f3"
|
||||||
|
dependencies = [
|
||||||
|
"bytecount",
|
||||||
|
"memchr",
|
||||||
|
"nom",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num"
|
||||||
|
version = "0.4.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af"
|
||||||
|
dependencies = [
|
||||||
|
"num-bigint",
|
||||||
|
"num-complex",
|
||||||
|
"num-integer",
|
||||||
|
"num-iter",
|
||||||
|
"num-rational",
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-bigint"
|
||||||
|
version = "0.4.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"num-integer",
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-complex"
|
||||||
|
version = "0.4.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214"
|
||||||
|
dependencies = [
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-integer"
|
||||||
|
version = "0.1.45"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-iter"
|
||||||
|
version = "0.1.43"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"num-integer",
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-rational"
|
||||||
|
version = "0.4.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
"num-bigint",
|
||||||
|
"num-integer",
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-traits"
|
||||||
|
version = "0.2.17"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "once_cell"
|
||||||
|
version = "1.18.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "oorandom"
|
||||||
|
version = "11.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "os_str_bytes"
|
||||||
|
version = "6.6.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "plotters"
|
||||||
|
version = "0.3.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45"
|
||||||
|
dependencies = [
|
||||||
|
"num-traits",
|
||||||
|
"plotters-backend",
|
||||||
|
"plotters-svg",
|
||||||
|
"wasm-bindgen",
|
||||||
|
"web-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "plotters-backend"
|
||||||
|
version = "0.3.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "plotters-svg"
|
||||||
|
version = "0.3.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab"
|
||||||
|
dependencies = [
|
||||||
|
"plotters-backend",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro2"
|
||||||
|
version = "1.0.70"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b"
|
||||||
|
dependencies = [
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "quote"
|
||||||
|
version = "1.0.33"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rawpointer"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rayon"
|
||||||
|
version = "1.8.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
|
||||||
|
dependencies = [
|
||||||
|
"either",
|
||||||
|
"rayon-core",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rayon-core"
|
||||||
|
version = "1.12.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
|
||||||
|
dependencies = [
|
||||||
|
"crossbeam-deque",
|
||||||
|
"crossbeam-utils",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex"
|
||||||
|
version = "1.10.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-automata",
|
||||||
|
"regex-syntax",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-automata"
|
||||||
|
version = "0.4.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-syntax",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-syntax"
|
||||||
|
version = "0.8.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rustversion"
|
||||||
|
version = "1.0.14"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ryu"
|
||||||
|
version = "1.0.15"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "same-file"
|
||||||
|
version = "1.0.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
|
||||||
|
dependencies = [
|
||||||
|
"winapi-util",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "scopeguard"
|
||||||
|
version = "1.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde"
|
||||||
|
version = "1.0.193"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89"
|
||||||
|
dependencies = [
|
||||||
|
"serde_derive",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde_derive"
|
||||||
|
version = "1.0.193"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde_json"
|
||||||
|
version = "1.0.108"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b"
|
||||||
|
dependencies = [
|
||||||
|
"itoa",
|
||||||
|
"ryu",
|
||||||
|
"serde",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "strum"
|
||||||
|
version = "0.25.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "strum_macros"
|
||||||
|
version = "0.25.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0"
|
||||||
|
dependencies = [
|
||||||
|
"heck",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"rustversion",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "syn"
|
||||||
|
version = "2.0.39"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "textwrap"
|
||||||
|
version = "0.16.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tinytemplate"
|
||||||
|
version = "1.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
|
||||||
|
dependencies = [
|
||||||
|
"serde",
|
||||||
|
"serde_json",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-ident"
|
||||||
|
version = "1.0.12"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "walkdir"
|
||||||
|
version = "2.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
|
||||||
|
dependencies = [
|
||||||
|
"same-file",
|
||||||
|
"winapi-util",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasm-bindgen"
|
||||||
|
version = "0.2.89"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"wasm-bindgen-macro",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasm-bindgen-backend"
|
||||||
|
version = "0.2.89"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826"
|
||||||
|
dependencies = [
|
||||||
|
"bumpalo",
|
||||||
|
"log",
|
||||||
|
"once_cell",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
"wasm-bindgen-shared",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasm-bindgen-macro"
|
||||||
|
version = "0.2.89"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2"
|
||||||
|
dependencies = [
|
||||||
|
"quote",
|
||||||
|
"wasm-bindgen-macro-support",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasm-bindgen-macro-support"
|
||||||
|
version = "0.2.89"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
"wasm-bindgen-backend",
|
||||||
|
"wasm-bindgen-shared",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasm-bindgen-shared"
|
||||||
|
version = "0.2.89"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "web-sys"
|
||||||
|
version = "0.3.66"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f"
|
||||||
|
dependencies = [
|
||||||
|
"js-sys",
|
||||||
|
"wasm-bindgen",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi"
|
||||||
|
version = "0.3.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
|
||||||
|
dependencies = [
|
||||||
|
"winapi-i686-pc-windows-gnu",
|
||||||
|
"winapi-x86_64-pc-windows-gnu",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi-i686-pc-windows-gnu"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi-util"
|
||||||
|
version = "0.1.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
|
||||||
|
dependencies = [
|
||||||
|
"winapi",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi-x86_64-pc-windows-gnu"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
||||||
28
day_16/Cargo.toml
Normal file
28
day_16/Cargo.toml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
[package]
|
||||||
|
name = "day_16"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
combinations = "0.1.0"
|
||||||
|
csv = "1.3.0"
|
||||||
|
itertools = "0.12.0"
|
||||||
|
ndarray = "0.15.6"
|
||||||
|
nom = "7.1.3"
|
||||||
|
nom_locate = "4.2.0"
|
||||||
|
num = "0.4.1"
|
||||||
|
strum = "0.25.0"
|
||||||
|
strum_macros = "0.25.3"
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
criterion = { version = "0.4", features = ["html_reports"] }
|
||||||
|
|
||||||
|
[[bench]]
|
||||||
|
name = "part1"
|
||||||
|
harness = false
|
||||||
|
|
||||||
|
[[bench]]
|
||||||
|
name = "part2"
|
||||||
|
harness = false
|
||||||
11
day_16/benches/part1.rs
Normal file
11
day_16/benches/part1.rs
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
use criterion::{black_box, criterion_group, criterion_main, Criterion};
|
||||||
|
|
||||||
|
use day_16::prelude::*;
|
||||||
|
|
||||||
|
fn criterion_benchmark(c: &mut Criterion) {
|
||||||
|
let input = include_str!("../input.txt");
|
||||||
|
c.bench_function("part 1", |b| b.iter(|| part1(black_box(input))));
|
||||||
|
}
|
||||||
|
|
||||||
|
criterion_group!(benches, criterion_benchmark);
|
||||||
|
criterion_main!(benches);
|
||||||
11
day_16/benches/part2.rs
Normal file
11
day_16/benches/part2.rs
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
use criterion::{black_box, criterion_group, criterion_main, Criterion};
|
||||||
|
|
||||||
|
use day_16::prelude::*;
|
||||||
|
|
||||||
|
fn criterion_benchmark(c: &mut Criterion) {
|
||||||
|
let input = include_str!("../input.txt");
|
||||||
|
c.bench_function("part 2", |b| b.iter(|| part2(black_box(input))));
|
||||||
|
}
|
||||||
|
|
||||||
|
criterion_group!(benches, criterion_benchmark);
|
||||||
|
criterion_main!(benches);
|
||||||
12
day_16/cheating.py
Normal file
12
day_16/cheating.py
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
l = [[int(i) for i in s.split()] for s in open('input.txt').read().split('\n') if s.strip()]
|
||||||
|
|
||||||
|
def n(l):
|
||||||
|
if sum(i != 0 for i in l) == 0:
|
||||||
|
return 0
|
||||||
|
m = []
|
||||||
|
for i in range(len(l)-1):
|
||||||
|
m.append(l[i+1]-l[i])
|
||||||
|
return l[-1] + n(m)
|
||||||
|
|
||||||
|
print([n(i) for i in l])
|
||||||
|
print(sum(n(i[::-1]) for i in l))
|
||||||
491
day_16/flamegraph.svg
Normal file
491
day_16/flamegraph.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 1.4 MiB |
110
day_16/input.txt
Normal file
110
day_16/input.txt
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
\./....\../......................|............../-.......|....................|....../|\..../.............\...
|
||||||
|
...........|.-.............|.././........../........................./...........||.....................-....\
|
||||||
|
...............\.............-...................-............/.|...|.......-...............................-.
|
||||||
|
.......................................\..|-.../\....../.........|............/...|.....-.|...........\...|...
|
||||||
|
............/.-..|...\........|...........-......................\.........-........\....../....|.........|...
|
||||||
|
................-...........-|....\.................-........\........\...|.././......./......................
|
||||||
|
......................-....../.-........../........\....../..../.............-..........|.|.................|.
|
||||||
|
...|....................|.|../.......\.......|.......-...............|.......\......\....................|\...
|
||||||
|
.........\.............|.......-.....................|....................|..................-.......\-...\...
|
||||||
|
.../............-........../.||..../........-...../-.........-......./......\........|........................
|
||||||
|
....|..../.../../.....\..............-.-................../........|...../....\....\...................|......
|
||||||
|
.......\..-..................|..../..........|....................-............/...................\|../......
|
||||||
|
..-.\................../................../....\........./...\.\/.............................\|..............
|
||||||
|
.......-...............................-.......|....................|......................../...........|/...
|
||||||
|
................|...\-....-.......|/......./.......................|../.\-...-....../...\........\......\.|...
|
||||||
|
.....................-.......-....-................|.............-........-....................\....../....-..
|
||||||
|
\..|.|....-......../......../.../...................|.....................\..--...............-.......||......
|
||||||
|
.....-.\.....................-...\............../....\.......-/../|...|......../..\..................../......
|
||||||
|
....|...\......................|...|.../...|...............\...........-........................|.......--.-..
|
||||||
|
......\....|.-...........\................................|.................\..............\..|...............
|
||||||
|
...................||..................\|...................|....\............-....../........\.../.....-...-.
|
||||||
|
....................................|....|......./.\..................../..............|../.............\.....
|
||||||
|
......|...\./......../......|....\..././.......|...............................-.........../.-..\.............
|
||||||
|
.|.../....|.................-..............|..................\....../..........-..........|...|......|./.....
|
||||||
|
.........|.........../..\...|....../...................................................-......................
|
||||||
|
../....|/.............|.........../....................\.......\............./.........../.......-.........\-.
|
||||||
|
................\....................\.....-..|............-......-|...............\......\...-...............
|
||||||
|
..........|..........|...........|.../.............................-......\.....|\.........\.\.............../
|
||||||
|
.........................../...........\.............|................../.-.......-....././\.........-........
|
||||||
|
\....\................../..../.............-../......|.\.........-./..\........./.............................
|
||||||
|
.\..../..............|........../.......\........|.-.-........//\.......|.....-.../..-.....-...........-......
|
||||||
|
.......|................\.....................\.............-........./..................-...-...........\....
|
||||||
|
....../.......-......././.-.....|..........|.........|..........\............................/................
|
||||||
|
................\......\................\\.\..\........\.................................\......-/.....-......
|
||||||
|
..-...../......-.......................................|.................|......-.-...-.....\....../...-......
|
||||||
|
........................\....|.....\....|............................\..............\.......................\.
|
||||||
|
............................/|...|........\.\....\......-|......................|.....|.\-...-......-.........
|
||||||
|
\..|...........................\.................\.-................../................./..../.\..............
|
||||||
|
|.../.............\...............................|..|..-......-.......-.......|..\../.........-...........|..
|
||||||
|
...........|................\............................../.......................|..../-|...................
|
||||||
|
...\.|.\..................|.\-/....../-/..|/............\......../\.\...........\\.......-....-\..............
|
||||||
|
.................................-......./..-............|..\../..................................|/./|..../..
|
||||||
|
.../..../........|-.........|.....|..............-.................../.....|-.......|.....|...............\...
|
||||||
|
-..-...................//............................./.........-...............-.........|.../...........\...
|
||||||
|
.............././\......|..............\..................|...............-............................-......
|
||||||
|
/.........|/.....-../|......-.........|..-.-...........-........|..........-..................................
|
||||||
|
.............\.......|/........../.....|.......-....-....../......-...................-....|........\.........
|
||||||
|
\...|.|.../..|....../....-.........................-..............|.....\.......-........\........-....|......
|
||||||
|
-.-..\..........|........................./..........|..-./...........................|...........-........-..
|
||||||
|
....\./..............-.........|......./.-..............-.-../\........|..|.........-..............\...\.../..
|
||||||
|
..|...........\...../......../.../.........\....../....-..................................|/............-...|.
|
||||||
|
.../.........|..-................|..........|....\/..........|..|\.......|...........|........................
|
||||||
|
........../.............\...\.............................-...................|................-...-..........
|
||||||
|
.....................-.................................../../.............................-../................
|
||||||
|
.-........./......|........-...../...................\..|-........-...\..........././||.......................
|
||||||
|
.........|../../.....-...........-....-..-...|.............................\..................................
|
||||||
|
...................-.....\......../............./...............-.......\.........../........|............../.
|
||||||
|
.|\.............................................-.........-....|.....\..................-..-.......\..........
|
||||||
|
/................/....\.........\|...............-.............|......./...........-.....\........-.......--..
|
||||||
|
..........-........\........\-...\....\\........../...|./.........................\.....|.................\../
|
||||||
|
............................-.|............................\...\../..........................\......./...../..
|
||||||
|
.....//.......|..\.........-..\.........-....\..-..\.....-.....//.../.........................................
|
||||||
|
................................|....|..\............/|./.\....|.............-..\|................./..........
|
||||||
|
.....|.......-.............-../...../.........|../.....................|........................./.....|......
|
||||||
|
.-...\...../................\.-........|..|...|...|.........\|......|...../...../..........\................|.
|
||||||
|
.../../............-.........|................\.....\....-...................../.../...........-...|...../|...
|
||||||
|
..-..........-.......-.............\..............-..............\.......|....................................
|
||||||
|
..|................/........................-...................../.................................|......../
|
||||||
|
...../........\......./....../......||.......|-...............-.....-............../../.......................
|
||||||
|
...\..../...................-........\.........\............................/....|.........-..........-.......
|
||||||
|
.../................\....\..|-...........................\.-..-......|.|.-/.....-............./...............
|
||||||
|
../............\...........................-../....|....................-..............|........./......|...\\
|
||||||
|
.........................\..................|..\........................./....................\...............
|
||||||
|
/.............|.....................-.....\.....-..|............/..........|./...|....-...-....|-....../......
|
||||||
|
.\.-.....\............././.........................\..........-......................|........\...............
|
||||||
|
........\../............../......\.....\..-............|............\............../..|.......................
|
||||||
|
....-../....\..................................-......../...|................................................-
|
||||||
|
.......................\............-...................../.........\............-../.........\/..|../....-/|.
|
||||||
|
..../.............|....../............-.|......../.....................|...../..|.....-.............../.......
|
||||||
|
....................|\...........-...................................../.......................-...-..|..\.|/.
|
||||||
|
......................-....-\........../..............\.......-....\.....|...............\.........-..........
|
||||||
|
.|......../.....|.........||.................../.....\...|.........\........../........\............../.......
|
||||||
|
.-............/-..........-...........\..........\.......-....................................................
|
||||||
|
.....|/....-.../......-......................../.|./...\.......\/......./......../..\...../...|...|.........\-
|
||||||
|
.............../..\.../-......|\\......../............../............|/......................./.......\.......
|
||||||
|
.....\.-./....../............/..-................../....\..................-.................|.......-/..-....
|
||||||
|
.-................-..-...........................-..|............-.................../...........-...........|
|
||||||
|
-......\......|......\............../.............../...-/.../....\.........................-.....|.....-.....
|
||||||
|
.......\.....--.-............................\..........-./........||......|..\...../..../................|...
|
||||||
|
.............-.....|..../.......|............|....................-......\.............../|...............|...
|
||||||
|
............|........../........|....................-....|....../.........\..........-........-..-...........
|
||||||
|
..............|.................-....|...........\.|.../.........../..........-......\|.............\..-......
|
||||||
|
......-............\.......\....................................................|\..\.......................-.
|
||||||
|
................||...........\...-\/..|..............\.........................../.......\.|.............|...|
|
||||||
|
....-...................-...../....|............\.../.........-..../....\........../..../.|..........\........
|
||||||
|
........-.....\........../....|.........\......./...........\.......-..|............../...........-..|........
|
||||||
|
.................../.....-...........|....-...\......\...|...|...........................\.......||......\|...
|
||||||
|
......-.........|.....\....-..........|.......\....\..................................../........|...|./......
|
||||||
|
..................\.........../.............../.................../.........-.......-..../............/\.../..
|
||||||
|
........\...\...\....../.......\\........../............../.-.................../........|..............-.....
|
||||||
|
....../........................|................-.-......-....|......\\.-...-.|..........|..../...............
|
||||||
|
/.......-.....|.....\...................|...../..............|......|.../....................\.....|..........
|
||||||
|
|.\....-...............|/....|........../....................................\.-............................/.
|
||||||
|
.......................-...............-.|...................|......\.....-\..|.......-......./\.....-......-.
|
||||||
|
................................|../.................................-........-...................|...........
|
||||||
|
.....-.........\..-................./...........|...............|....................\/../../........|.-......
|
||||||
|
............................../......./.\/........./..|..............|.......................\................
|
||||||
|
......./.-.......\...........-...............|............|.............|..........|.|..........|.........--..
|
||||||
|
............-..............-.............\./...|.....|................|..........|/.............\.............
|
||||||
|
.../....................-........-.................../.....\.............-...................\................
|
||||||
BIN
day_16/perf.data
Normal file
BIN
day_16/perf.data
Normal file
Binary file not shown.
BIN
day_16/perf.data.old
Normal file
BIN
day_16/perf.data.old
Normal file
Binary file not shown.
193
day_16/src/lib.rs
Normal file
193
day_16/src/lib.rs
Normal file
@@ -0,0 +1,193 @@
|
|||||||
|
#[derive(Debug, PartialEq, Clone)]
|
||||||
|
enum Direction {
|
||||||
|
North,
|
||||||
|
South,
|
||||||
|
East,
|
||||||
|
West,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Clone)]
|
||||||
|
struct RayState {
|
||||||
|
x: usize,
|
||||||
|
y: usize,
|
||||||
|
direction: Direction,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl RayState {
|
||||||
|
fn advance(&self, rows: &usize, columns: &usize) -> Option<Self> {
|
||||||
|
use Direction::*;
|
||||||
|
match self.direction {
|
||||||
|
North => {
|
||||||
|
if self.y > 0 {
|
||||||
|
Some(Self {
|
||||||
|
x: self.x,
|
||||||
|
y: self.y - 1,
|
||||||
|
direction: North,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
},
|
||||||
|
South => {
|
||||||
|
if self.y < columns - 1 {
|
||||||
|
Some(Self {
|
||||||
|
x: self.x,
|
||||||
|
y: self.y + 1,
|
||||||
|
direction: South,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
},
|
||||||
|
East => {
|
||||||
|
if self.x < rows - 1 {
|
||||||
|
Some(Self {
|
||||||
|
x: self.x + 1,
|
||||||
|
y: self.y,
|
||||||
|
direction: East,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
},
|
||||||
|
West => {
|
||||||
|
if self.x > 0 {
|
||||||
|
Some(Self {
|
||||||
|
x: self.x - 1,
|
||||||
|
y: self.y,
|
||||||
|
direction: West,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fn handle_mirror(&self, mirror_char: u8) -> Vec<Self> {
|
||||||
|
match mirror_char {
|
||||||
|
b'|' => {
|
||||||
|
match self.direction {
|
||||||
|
Direction::East | Direction::West => {
|
||||||
|
vec![
|
||||||
|
RayState{x: self.x, y: self.y, direction: Direction::North},
|
||||||
|
RayState{x: self.x, y: self.y, direction: Direction::South},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
_ => {vec![self.clone()]},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
b'-' => {
|
||||||
|
match self.direction {
|
||||||
|
Direction::North | Direction::South => {
|
||||||
|
vec![
|
||||||
|
RayState{x: self.x, y: self.y, direction: Direction::East},
|
||||||
|
RayState{x: self.x, y: self.y, direction: Direction::West},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
_ => {vec![self.clone()]},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
b'/' => {
|
||||||
|
match self.direction {
|
||||||
|
Direction::North => {
|
||||||
|
vec![RayState{x: self.x, y: self.y, direction: Direction::East}]
|
||||||
|
},
|
||||||
|
Direction::South => {
|
||||||
|
vec![RayState{x: self.x, y: self.y, direction: Direction::West}]
|
||||||
|
},
|
||||||
|
Direction::East => {
|
||||||
|
vec![RayState{x: self.x, y: self.y, direction: Direction::North}]
|
||||||
|
},
|
||||||
|
Direction::West => {
|
||||||
|
vec![RayState{x: self.x, y: self.y, direction: Direction::South}]
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
b'\\' => {
|
||||||
|
match self.direction {
|
||||||
|
Direction::North => {
|
||||||
|
vec![RayState{x: self.x, y: self.y, direction: Direction::West}]
|
||||||
|
},
|
||||||
|
Direction::South => {
|
||||||
|
vec![RayState{x: self.x, y: self.y, direction: Direction::East}]
|
||||||
|
},
|
||||||
|
Direction::East => {
|
||||||
|
vec![RayState{x: self.x, y: self.y, direction: Direction::South}]
|
||||||
|
},
|
||||||
|
Direction::West => {
|
||||||
|
vec![RayState{x: self.x, y: self.y, direction: Direction::North}]
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
_ => {vec![self.clone()]},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_energized(input: &str, start_rays: Vec<RayState>, rows: usize, columns: usize) -> usize {
|
||||||
|
let mut history = Vec::<RayState>::new();
|
||||||
|
let mut energized = std::iter::repeat(
|
||||||
|
std::iter::repeat(false).take(columns).collect()
|
||||||
|
)
|
||||||
|
.take(rows)
|
||||||
|
.collect::<Vec<Vec<bool>>>();
|
||||||
|
start_rays.iter().for_each(|RayState {x, y, ..}| { energized[*y][*x] = true; });
|
||||||
|
let _ = (0..).try_fold(start_rays, |rays, _| {
|
||||||
|
let new_rays = rays.into_iter().filter_map(|ray| {
|
||||||
|
ray.advance(&rows, &columns).and_then(|next_ray| {
|
||||||
|
energized[next_ray.y][next_ray.x] = true;
|
||||||
|
if history.contains(&next_ray) {
|
||||||
|
None
|
||||||
|
} else {
|
||||||
|
history.push(next_ray.clone());
|
||||||
|
let mirror_bytes = input.lines().nth(next_ray.y).unwrap().as_bytes()[next_ray.x];
|
||||||
|
Some(next_ray.handle_mirror(mirror_bytes))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}).flatten().collect::<Vec<RayState>>();
|
||||||
|
if new_rays.is_empty() {
|
||||||
|
Err("Empty")
|
||||||
|
} else {
|
||||||
|
Ok(new_rays)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
energized.into_iter().map(|line| {
|
||||||
|
line.into_iter().map(|character| {
|
||||||
|
if character {
|
||||||
|
1
|
||||||
|
} else {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}).flatten().sum::<usize>()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn part1(input: &str) -> String {
|
||||||
|
let rows = input.lines().count();
|
||||||
|
let columns = input.chars().position(|c| c=='\n').unwrap();
|
||||||
|
let first_char = input.lines().nth(0).unwrap().as_bytes()[0];
|
||||||
|
let first = RayState{x: 0, y: 0, direction: Direction::East};
|
||||||
|
let start_rays = first.handle_mirror(first_char);
|
||||||
|
get_energized(input, start_rays, rows, columns).to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn part2(input: &str) -> String {
|
||||||
|
let rows = input.lines().count();
|
||||||
|
let columns = input.chars().position(|c| c=='\n').unwrap();
|
||||||
|
let edges =
|
||||||
|
std::iter::zip(0..rows, std::iter::repeat(0)).into_iter().map(|(y,x)| RayState{x, y, direction: Direction::East})
|
||||||
|
.chain(std::iter::zip(std::iter::repeat(0), 0..columns).into_iter().map(|(y,x)| RayState{x, y, direction: Direction::South}))
|
||||||
|
.chain(std::iter::zip(std::iter::repeat(rows - 1), 0..columns).into_iter().map(|(y,x)| RayState{x, y, direction: Direction::North}))
|
||||||
|
.chain(std::iter::zip(0..rows, std::iter::repeat(columns - 1)).into_iter().map(|(y,x)| RayState{x, y, direction: Direction::West}));
|
||||||
|
edges.map(|edge| {
|
||||||
|
let first_char = input.lines().nth(edge.y).unwrap().as_bytes()[edge.x];
|
||||||
|
let start_rays = edge.handle_mirror(first_char);
|
||||||
|
let temp = get_energized(input, start_rays, rows, columns);
|
||||||
|
temp
|
||||||
|
}).max().unwrap().to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub mod prelude {
|
||||||
|
pub use super::part1;
|
||||||
|
pub use super::part2;
|
||||||
|
}
|
||||||
41
day_16/src/main.rs
Normal file
41
day_16/src/main.rs
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
use day_16::prelude::*;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let input = include_str!("../input.txt");
|
||||||
|
println!("{}", part1(input));
|
||||||
|
println!("{}", part2(input));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_part1() {
|
||||||
|
assert_eq!(part1(".|...\\....
|
||||||
|
|.-.\\.....
|
||||||
|
.....|-...
|
||||||
|
........|.
|
||||||
|
..........
|
||||||
|
.........\\
|
||||||
|
..../.\\\\..
|
||||||
|
.-.-/..|..
|
||||||
|
.|....-|.\\
|
||||||
|
..//.|...."), "46".to_string());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_part2() {
|
||||||
|
assert_eq!(part2(".|...\\....
|
||||||
|
|.-.\\.....
|
||||||
|
.....|-...
|
||||||
|
........|.
|
||||||
|
..........
|
||||||
|
.........\\
|
||||||
|
..../.\\\\..
|
||||||
|
.-.-/..|..
|
||||||
|
.|....-|.\\
|
||||||
|
..//.|...."), "51".to_string());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
140
day_16/test.csv
Normal file
140
day_16/test.csv
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,970,969,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,971,968,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1421,1420,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,973,972,967,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1422,1419,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,974,975,966,965,964,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1423,1418,1417,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,976,979,980,963,962,953,952,0,0,0,0,0,0,77,78,0,0,145,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1424,1425,1416,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1035,1034,1033,0,977,978,981,960,961,954,951,0,0,0,0,0,75,76,79,142,143,144,147,148,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1428,1427,1426,1415,1414,1413,0,1347,1346,0,0,0,0,0,0,0,0,0,0,0,0,0,1036,1031,1032,0,0,983,982,959,956,955,950,949,946,945,0,0,74,73,80,141,140,139,138,149,154,155,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1429,1430,1431,1432,1433,1412,0,1348,1345,1342,1341,0,0,0,0,0,0,0,0,0,0,1038,1037,1030,1003,1002,0,984,985,958,957,936,937,948,947,944,0,0,71,72,81,134,135,136,137,150,153,158,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1443,1442,1441,1438,1437,1434,1411,1410,1349,1344,1343,1340,1319,1318,1303,1302,0,0,0,0,1041,1040,1039,1028,1029,1004,1001,1000,0,986,987,934,935,938,941,942,943,62,63,70,69,82,133,132,131,130,151,152,159,160,161,218,219,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2528,2527,0,2523,2522,0,0,0,0,0,0,0,0,1897,1896,0,1444,1445,1440,1439,1436,1435,1408,1409,1350,1337,1338,1339,1320,1317,1304,1301,1300,0,0,1043,1042,1025,1026,1027,1006,1005,998,999,990,989,988,933,0,939,940,0,0,61,64,65,68,83,84,85,86,129,128,165,164,163,162,217,220,223,224,0,246,247,254,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2822,2821,0,2799,2798,0,0,0,2530,2529,2526,2525,2524,2521,2520,0,0,0,0,0,0,0,1898,1895,0,0,1446,1447,1450,1451,1452,1407,1352,1351,1336,1331,1330,1321,1316,1305,1306,1299,1298,1297,1044,1045,1024,1021,1020,1007,1008,997,996,991,992,931,932,0,0,0,0,0,60,59,66,67,90,89,88,87,0,127,166,171,172,0,216,221,222,225,226,245,248,253,256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2823,2820,2819,2800,2797,0,0,0,2531,2532,2533,2516,2517,2518,2519,0,0,0,0,0,1901,1900,1899,1894,1893,0,0,1448,1449,1454,1453,1406,1353,1354,1335,1332,1329,1322,1315,1308,1307,1294,1295,1296,1047,1046,1023,1022,1019,1018,1009,1010,995,994,993,930,929,0,35,34,0,48,49,58,57,56,91,92,121,122,123,126,167,170,173,0,215,214,229,228,227,244,249,252,257,258,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2850,2849,0,2843,2842,2825,2824,2817,2818,2801,2796,0,0,0,0,2535,2534,2515,2510,2509,2508,1925,1924,1923,0,0,1902,1903,1904,1891,1892,1879,1878,1877,1456,1455,1404,1405,1356,1355,1334,1333,1328,1323,1314,1309,1310,1293,1292,1291,1048,1049,1050,1053,1054,1017,1016,1011,924,925,926,927,928,37,36,33,32,47,50,51,52,55,94,93,120,119,124,125,168,169,174,175,212,213,230,231,242,243,250,251,260,259,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2854,2853,2852,2851,2848,2847,2844,2841,2826,2827,2816,0,2802,2795,2794,2545,2544,0,2536,2537,2514,2511,2506,2507,1926,1927,1922,0,0,1907,1906,1905,1890,1881,1880,1875,1876,1457,1458,1403,1402,1357,1358,1359,1360,1327,1324,1313,1312,1311,1288,1289,1290,0,0,1051,1052,1055,1056,1015,1012,923,922,0,44,43,38,39,30,31,46,43,42,53,54,95,98,99,118,117,116,179,178,177,176,211,210,233,232,241,240,263,262,261,268,269,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2855,2856,2857,2858,2859,2846,2845,2840,2829,2828,2815,0,2803,2804,2793,2546,2543,2542,2539,2538,2513,2512,2505,2504,0,1928,1921,1920,0,1908,1909,1910,1889,1882,1883,1874,1461,1460,1459,1400,1401,0,1363,1362,1361,1326,1325,1284,1285,1286,1287,1122,1121,0,1109,1108,1059,1058,1057,1014,1013,920,921,46,45,42,41,40,29,28,45,44,41,38,37,96,97,100,0,114,115,180,181,202,203,208,209,234,235,236,239,264,265,266,267,270,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2925,2924,2901,2900,2897,2896,0,2860,2837,2838,2839,2830,2813,2814,2809,2808,2805,2792,2547,2548,2541,2540,2495,2496,2497,2498,2503,2502,1929,1930,1919,1918,1915,1914,1911,1888,1885,1884,1873,1462,1463,1464,1399,1366,1365,1364,1371,1372,1281,1282,1283,1148,1147,1146,1123,1120,1119,1110,1107,1060,1061,1062,917,918,919,0,47,48,51,52,25,26,27,10,9,40,39,36,35,102,101,112,113,184,183,182,201,204,207,288,287,286,237,238,277,276,273,272,271,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2926,2923,2902,2899,2898,2895,2862,2861,2836,2835,2832,2831,2812,2811,2810,2807,2806,2791,2790,2549,2552,2553,2494,2489,2488,2499,2500,2501,0,1931,1932,1917,1916,1913,1912,1887,1886,1871,1872,1863,1862,1465,1398,1367,1368,1369,1370,1373,1280,1279,1278,1149,1150,1145,1124,1117,1118,1111,1106,1065,1064,1063,916,913,912,909,908,49,50,53,24,23,22,11,8,13,14,33,34,103,104,111,186,185,0,199,200,205,206,289,290,285,280,279,278,275,274,469,470,475,476,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3203,3202,0,0,0,0,0,0,2927,2922,2903,2904,2905,2894,2863,2864,2865,2834,2833,2780,2781,2784,2785,2786,2787,2788,2789,2550,2551,2554,2493,2490,2487,2472,2471,2460,2459,2458,1933,1934,1935,1936,1937,1938,1939,1870,0,1864,1861,1466,1397,0,1393,1392,1375,1374,1273,1274,1277,1152,1151,1144,1125,1116,1115,1112,1105,1066,1067,1068,915,914,911,910,907,906,55,54,19,20,21,12,7,12,15,32,31,30,105,110,187,192,193,198,299,298,295,294,291,284,281,0,455,456,457,468,471,474,477,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3204,3201,0,0,0,0,2934,2933,2928,2921,2914,2913,2906,2893,2892,2891,2866,2867,2778,2779,2782,2783,2752,2751,2748,2747,0,0,2556,2555,2492,2491,2486,2473,2470,2461,2456,2457,1948,1947,1946,1945,1944,1941,1940,1869,1868,1865,1860,1467,1396,1395,1394,1391,1376,1271,1272,1275,1276,1153,1154,1143,1126,1127,1114,1113,1104,1103,1070,1069,898,899,902,903,904,905,56,57,18,17,0,13,6,11,16,17,18,29,106,109,188,191,194,197,300,297,296,293,292,283,282,453,454,459,458,467,472,473,478,479,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3205,3200,0,3196,3195,0,2935,2932,2929,2920,2915,2912,2907,2888,2889,2890,2869,2868,2777,2776,0,2754,2753,2750,2749,2746,2685,2684,2557,2558,2559,2484,2485,2474,2469,2462,2455,2454,1949,1952,1953,1954,1943,1942,1959,1960,1867,1866,1859,1468,1469,1470,1471,1390,1377,1270,1269,1268,1159,1158,1155,1142,0,1128,1129,1100,1101,1102,1071,1072,897,900,901,438,437,436,435,58,59,16,15,14,5,10,9,8,19,28,107,108,189,190,195,196,301,302,0,428,429,436,437,452,451,460,0,466,465,482,481,480,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3206,3199,3198,3197,3194,2937,2936,2931,2930,2919,2916,2911,2908,2887,2882,2881,2870,2871,2872,2775,2774,2755,2756,2743,2744,2745,2686,2683,2682,2561,2560,2483,2482,2475,2468,2463,2452,2453,1950,1951,0,1955,1956,1957,1958,1961,1962,1857,1858,1475,1474,1473,1472,1389,1378,1265,1266,1267,1160,1157,1156,1141,1136,1135,1130,1099,0,1075,1074,1073,896,895,894,439,440,441,434,0,60,61,62,63,4,1,2,7,20,27,26,315,314,313,312,309,308,303,304,427,430,435,438,0,450,461,462,463,464,483,484,485,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3207,3208,3209,3210,3193,2938,2939,2940,2941,2918,2917,2910,2909,2886,2883,2880,2877,2876,2873,2772,2773,2758,2757,2742,2741,2740,2687,2680,2681,2562,2563,2480,2481,2476,2467,2464,2451,2450,2137,2136,2103,2102,2101,1966,1965,1964,1963,1856,1855,1476,1477,1478,1479,1388,1379,1264,1263,0,1161,1162,1163,1140,1137,1134,1131,1098,1097,1076,1077,1078,889,890,893,446,445,442,433,432,67,66,65,64,3,2,1,6,21,24,25,316,317,318,311,310,307,306,305,426,431,434,439,448,449,508,507,506,503,502,501,486,487,488,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3221,3220,3217,3216,3211,3192,3167,3166,3165,2942,2943,2944,2945,2946,2885,2884,2879,2878,2875,2874,2771,2770,2759,2736,2737,2738,2739,2688,2679,2678,2565,2564,2479,2478,2477,2466,2465,2448,2449,2138,2135,2104,2105,2100,1967,1968,1969,1970,1853,1854,1485,1484,1483,1480,1387,1380,1381,1262,1261,1260,1259,1164,1139,1138,1133,1132,1095,1096,1083,1082,1079,888,891,892,447,444,443,430,431,68,69,70,71,74,75,2,5,22,23,330,329,328,319,320,321,392,393,394,425,432,433,440,447,510,509,0,505,504,0,500,499,498,489,490,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3222,3219,3218,3215,3212,3191,3168,3169,3164,3163,3162,3161,0,2947,2948,2949,2952,2953,2954,2767,2768,2769,2760,2735,0,2695,2694,2689,2676,2677,2566,2567,2442,2443,2444,2445,2446,2447,0,2139,2134,2107,2106,2099,0,1975,1974,1971,1852,1851,1486,1487,1482,1481,1386,0,1382,1255,1256,1257,1258,1165,1166,1167,1168,1093,1094,1085,1084,1081,1080,887,886,885,448,449,450,429,0,417,416,0,72,73,76,3,4,333,332,331,0,327,326,325,322,391,396,395,424,423,442,441,446,511,512,513,526,527,530,531,0,497,496,491,492,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3223,3224,3225,3214,3213,3190,3189,3170,3171,3172,3173,3160,3147,3146,3145,2950,2951,2956,2955,2766,2765,2762,2761,2734,2733,2696,2693,2690,2675,2570,2569,2568,2441,2440,2409,2408,2395,2394,2141,2140,2133,2108,2109,2098,1977,1976,1973,1972,1849,1850,1489,1488,1495,1496,1385,1384,1383,1254,1253,1252,1229,1228,1227,1170,1169,1092,1091,1086,1087,880,881,882,883,884,455,454,451,428,427,418,415,86,85,0,77,78,79,334,335,346,347,350,351,324,323,390,397,418,419,422,443,444,445,516,515,514,525,528,529,532,533,534,495,494,493,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3226,3227,3230,3231,3188,3187,3186,0,3174,3159,3148,3143,3144,2959,2958,2957,2968,2969,2764,2763,2730,2731,2732,2697,2692,2691,2674,2571,2572,2573,2574,2439,2410,2407,2396,2393,2142,2143,2132,2131,2110,2097,1978,1979,1980,1847,1848,0,1490,1491,1494,1497,1498,1499,1500,1249,1250,1251,1230,1231,1226,1171,1172,1173,1090,1089,1088,879,878,459,458,457,456,453,452,425,426,419,414,87,84,83,82,81,80,337,336,345,348,349,352,381,382,389,398,417,420,421,558,557,518,517,522,523,524,541,540,539,536,535,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3267,3266,0,0,0,3228,3229,3232,3233,3234,3185,3176,3175,3158,3149,3142,3141,2960,2963,2964,2967,2970,2973,2974,2729,2728,0,2698,2699,2700,2673,2672,2577,2576,2575,2438,2411,2406,2397,2392,2145,2144,2129,2130,2111,2096,0,1982,1981,1846,1845,1794,1793,1492,1493,1780,1779,0,1501,1248,1247,0,1233,1232,1225,1176,1175,1174,873,874,875,876,877,460,461,462,463,464,465,424,0,420,413,88,91,92,93,94,95,338,0,344,357,356,353,380,383,388,399,416,561,560,559,556,519,520,521,548,547,542,543,538,537,622,623,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3269,3268,3265,3264,3263,3240,3239,3238,3237,3236,3235,3184,3177,3178,3157,3150,3139,3140,2961,2962,2965,2966,2971,2972,2975,2976,2727,2726,0,2702,2701,2670,2671,2578,2579,2580,2437,2412,2405,2398,2391,2146,2127,2128,2113,2112,2095,2094,1983,1984,1843,1844,1795,1792,1791,0,1781,1778,1503,1502,1245,1246,1235,1234,1223,1224,1177,1178,1179,872,871,870,869,868,483,482,481,476,475,466,423,422,421,412,89,90,99,98,97,96,339,340,343,358,355,354,379,384,387,400,415,562,567,568,555,554,553,550,549,546,545,544,617,618,621,624,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3270,3273,3274,3275,3262,3241,3242,3245,3246,3249,3250,3183,3182,3179,3156,3151,3138,3137,0,3121,3120,3101,3100,2983,2982,2977,2978,2725,2724,2703,2704,2669,2584,2583,2582,2581,2436,2413,2404,2399,2390,2147,2126,2125,2114,2115,2092,2093,1986,1985,1842,1841,1796,1789,1790,1783,1782,1777,1504,1505,1244,1243,1236,1237,1222,1221,1182,1181,1180,861,862,865,866,867,484,485,480,477,474,467,408,409,410,411,156,155,100,101,102,105,106,341,342,359,360,377,378,385,386,401,414,563,566,569,572,573,552,551,594,595,0,615,616,619,620,625,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3271,3272,0,3276,3261,3260,3243,3244,3247,3248,3251,3252,3181,3180,3155,3152,3135,3136,3123,3122,3119,3102,3099,2984,2981,2980,2979,2722,2723,2706,2705,2668,2585,2586,2587,2588,2435,2414,2403,2400,2389,2148,2123,2124,2117,2116,2091,2090,1987,1988,1839,1840,1797,1788,1787,1784,1775,1776,0,1506,1507,1242,1239,1238,1219,1220,1183,1184,859,860,863,864,0,488,487,486,479,478,473,468,407,406,405,158,157,154,153,0,103,104,107,108,363,362,361,376,405,404,403,402,413,564,565,570,571,574,591,592,593,596,597,614,613,628,627,626,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3277,3278,3259,3258,3257,3256,3255,3254,3253,3288,3289,3154,3153,3134,3133,3124,3117,3118,3103,3098,2985,2986,2987,2988,2721,2720,2707,2666,2667,2604,2603,0,2589,2434,2415,2402,2401,2388,2149,2122,2121,2118,2087,2088,2089,0,1989,1838,1837,1798,1799,1786,1785,1774,1773,1772,1509,1508,1241,1240,1217,1218,1187,1186,1185,858,0,0,539,538,489,490,491,492,493,472,469,402,403,404,159,160,161,152,135,134,119,118,109,364,369,370,375,406,407,408,409,412,579,578,577,576,575,590,601,600,599,598,611,612,629,630,631,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,3643,3642,3641,0,0,0,0,3518,3517,0,3279,3280,3281,3282,3283,3284,3285,3286,3287,3290,3291,3292,3293,3132,3125,3116,0,3104,3097,3076,3075,2990,2989,2718,2719,2708,2665,0,2605,2602,2591,2590,2433,2416,2385,2386,2387,2150,2151,2120,2119,2086,2069,2068,2067,1990,1991,1836,1835,1800,1801,1768,1769,1770,1771,1510,1511,1512,1513,1216,1215,1188,1189,1190,857,856,541,540,537,536,509,508,495,494,471,470,401,184,183,172,171,162,151,136,133,120,117,110,365,368,371,374,697,696,695,410,411,580,581,582,585,586,589,602,603,604,609,610,643,642,641,632,633,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,3644,3639,3640,0,0,0,3520,3519,3516,3505,3504,3491,3490,3489,0,3469,3468,3299,3298,3297,3296,3295,3294,3131,3126,3115,3106,3105,3096,3077,3074,2991,2992,2717,2710,2709,2664,2663,2606,2601,2592,2593,2432,2417,2384,0,2172,2171,2152,2153,2154,2085,2070,2065,2066,0,1992,1993,1834,0,1802,1767,1766,1765,1538,1537,1534,1533,1514,1213,1214,1205,1204,1191,854,855,542,543,534,535,510,507,496,497,398,399,400,185,182,173,170,163,150,137,132,121,116,111,366,367,372,373,698,699,694,671,670,667,666,583,584,587,588,657,656,605,608,645,644,0,640,635,634,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,3646,3645,3638,0,0,0,3522,3521,3514,3515,3506,3503,3492,3493,3488,3471,3470,3467,3300,3301,3302,3303,3304,3305,3130,3127,3114,3107,3108,3095,3078,3073,3072,2993,2716,2711,2658,2659,2662,2607,2600,2599,2594,2431,2418,2383,2382,2173,2170,2163,2162,2155,2084,2071,2064,2063,2004,2003,1994,1833,1832,1803,1762,1763,1764,1539,1536,1535,1532,1515,1212,1207,1206,1203,1192,853,852,545,544,533,512,511,506,499,498,397,396,187,186,181,174,169,164,149,138,131,122,115,112,719,718,713,712,701,700,693,672,669,668,665,662,661,660,659,658,655,606,607,646,647,648,639,636,869,870,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,3647,3648,3637,0,0,0,3523,3524,3513,0,3507,3502,3495,3494,3487,3472,3473,3466,3317,3316,3315,3314,3307,3306,3129,3128,3113,3112,3109,3094,3079,3080,3071,2994,2715,2712,2657,2660,2661,2608,2609,2598,2595,2430,2419,2380,2381,2174,2169,2164,2161,2156,2083,2072,2073,2062,2005,2002,1995,1830,1831,1804,1761,1754,1753,1540,1541,1542,1531,1516,1211,1208,1201,1202,1193,850,851,546,547,532,513,514,505,500,393,394,395,188,189,180,175,168,165,148,139,130,123,114,113,720,717,714,711,702,691,692,673,674,675,664,663,836,837,838,839,654,653,652,651,650,649,638,637,868,871,874,875,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,3649,3636,3601,3600,3599,3526,3525,3512,3511,3508,3501,3496,3497,3486,3475,3474,3465,3318,3319,3320,3313,3308,3309,3338,3339,3340,3111,3110,3093,3082,3081,3070,2995,2714,2713,2656,2655,2648,2647,2610,2597,2596,2429,2420,2379,2176,2175,2168,2165,2160,2157,2082,2075,2074,2061,2006,2001,1996,1829,1828,1805,1760,1755,1752,1751,1544,1543,1530,1517,1210,1209,1200,1195,1194,849,848,549,548,531,516,515,504,501,392,211,210,191,190,179,176,167,166,147,140,129,124,723,722,721,716,715,710,703,690,689,684,683,676,677,678,835,834,833,840,841,842,843,0,861,862,865,866,867,872,873,876,877,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,3651,3650,3635,3602,3597,3598,3527,3528,3529,3510,3509,3500,3499,3498,3485,3476,3477,3464,3323,3322,3321,3312,3311,3310,3337,3336,3341,3342,0,3092,3083,3084,3069,2996,2997,2998,2999,2654,2649,2646,2611,2612,2613,2428,2421,2378,2177,0,2167,2166,2159,2158,2081,2076,2059,2060,2007,2000,1997,1826,1827,1806,1759,1756,1749,1750,1545,0,1529,1518,1519,1520,1199,1196,845,846,847,550,551,530,517,518,503,502,391,212,209,192,0,178,177,0,145,146,141,128,125,724,725,726,727,728,709,704,705,688,685,682,681,680,679,828,829,832,847,846,845,844,859,860,863,864,883,882,881,880,879,878,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,3652,3653,3634,3603,3596,3589,3588,0,3530,3531,3532,3533,3534,3483,3484,3479,3478,3463,3324,3325,3326,3331,3332,3333,3334,3335,0,3343,3344,3091,3086,3085,3068,3057,3056,3001,3000,2653,2650,2645,2644,2615,2614,2427,2422,2377,2178,2179,2180,2181,2182,2183,2080,2077,2058,2057,2008,1999,1998,1825,1808,1807,1758,1757,1748,1747,1546,1547,1528,1523,1522,1521,1198,1197,844,843,558,557,552,529,520,519,388,389,390,213,208,193,194,195,196,197,144,143,142,127,126,733,732,731,730,729,708,707,706,687,686,823,824,825,826,827,830,831,848,849,850,0,858,857,886,885,884,0,892,893,894,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,3658,3657,3654,3633,3604,3595,3590,3587,3580,3579,3578,3537,3536,3535,3482,3481,3480,3461,3462,3457,3456,3327,3330,3353,3352,3351,3350,0,3346,3345,3090,3087,0,3067,3058,3055,3002,3003,2652,2651,2642,2643,2616,2617,2426,2423,2376,2191,2190,2189,2188,2185,2184,2079,2078,0,2056,2009,2010,1823,1824,1809,1810,1743,1744,1745,1746,1549,1548,1527,1524,0,838,839,840,841,842,559,556,553,528,521,386,387,218,217,214,207,202,201,200,199,198,0,756,755,752,751,734,735,736,739,740,813,814,817,818,0,822,983,982,981,976,975,968,967,966,851,852,0,856,887,888,889,890,891,896,895,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,3660,3659,3656,3655,3632,3605,3594,3591,3586,3581,3582,3577,3538,3541,3542,3543,3544,3545,3460,3459,3458,3455,3328,3329,3354,3355,3356,3349,3348,3347,0,3089,3088,3065,3066,3059,3054,3053,3004,3005,3006,2641,2640,2619,2618,2425,2424,2375,2192,2193,2194,2187,2186,0,2052,2053,2054,2055,2012,2011,1822,1813,1812,1811,1742,1581,1580,1551,1550,0,1526,1525,836,837,658,657,656,655,560,555,554,527,522,385,384,219,216,215,206,203,762,761,760,759,758,757,754,753,750,747,746,737,738,741,812,815,816,819,820,821,984,985,980,977,974,969,970,965,964,853,854,855,918,917,914,913,898,897,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,3661,3662,3663,3664,3631,3606,3593,3592,3585,3584,3583,3576,3539,3540,3565,3564,3563,3546,3547,3548,3453,3454,3445,3444,3373,3372,3357,3358,3359,3360,3361,3362,3363,3064,3063,3060,0,3052,3051,3050,3007,0,2639,2620,2623,2624,2373,2374,2209,2208,2195,0,2049,2050,2051,2036,2035,2034,2013,1820,1821,1814,1739,1740,1741,1582,1579,1552,1553,1554,1555,1556,835,834,659,652,653,654,561,564,565,526,523,382,383,220,221,222,205,204,763,766,767,770,771,774,775,776,749,748,745,744,743,742,811,1016,1015,1014,1013,1008,1007,986,979,978,973,972,971,962,963,950,949,920,919,916,915,912,899,900,903,904,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,3667,3666,3665,3630,3607,3608,3611,3612,3613,3614,3575,3572,3571,3566,3567,3562,3551,3550,3549,3452,3451,3446,3443,3374,3371,3370,3369,3368,3367,3366,3365,3364,0,3062,3061,3040,3041,3048,3049,3008,2637,2638,2621,2622,2625,2372,2371,2210,2207,2196,2197,2048,2047,2038,2037,2032,2033,2014,1819,1818,1815,1738,1735,1734,1583,1578,1567,1566,1565,1558,1557,832,833,660,651,650,649,562,563,566,525,524,381,380,227,226,223,1168,1167,764,765,768,769,772,773,778,777,782,783,786,787,808,809,810,1017,1018,1019,1012,1009,1006,987,990,991,992,993,994,961,960,951,948,921,922,923,924,911,910,901,902,905,0,0,0,0
|
||||||
|
0,0,0,0,0,0,3669,3668,3681,3682,3629,3628,3609,3610,3617,3616,3615,3574,3573,3570,3569,3568,3561,3552,3553,3554,3555,3450,3447,3442,3375,3376,3377,3378,3379,3380,3381,3382,3383,3384,3385,3386,3039,3042,3047,3046,3009,2636,2635,2634,2627,2626,0,2370,2211,2206,2205,2198,2199,2046,2039,2040,2031,2030,2015,2016,1817,1816,1737,1736,1733,1584,1577,1568,1569,1564,1559,1560,831,830,661,662,0,648,647,568,567,376,377,378,379,228,225,224,1169,1166,1165,0,1161,1160,1157,1156,779,780,781,784,785,788,807,806,1025,1024,1023,1020,1011,1010,1005,988,989,1000,999,996,995,958,959,952,947,940,939,938,925,926,909,908,907,906,0,0,0,0
|
||||||
|
0,0,0,3673,3672,3671,3670,3679,3680,3683,3684,3627,3626,3625,3618,3619,3748,3749,3756,3757,3760,3761,3560,3559,3558,3557,3556,3449,3448,3441,3440,3413,3412,3411,3410,3393,3392,3391,3390,3389,3388,3387,3038,3043,3044,3045,3010,3011,3012,2633,2628,0,2368,2369,2212,2213,2204,2201,2200,2045,2042,2041,2028,2029,2018,2017,1728,1729,1730,1731,1732,1585,1576,1575,1570,1563,1562,1561,0,829,664,663,644,645,646,569,570,375,374,367,366,229,230,231,1170,1171,1164,1163,1162,1159,1158,1155,1154,0,796,795,794,789,790,805,1026,1027,1022,1021,1038,1039,1004,1003,1002,1001,998,997,0,957,956,953,946,941,942,937,936,927,928,929,0,0,0,0,0,0
|
||||||
|
0,0,0,3674,3675,3676,3677,3678,3707,3706,3685,3686,3687,3624,3621,3620,3747,3750,3755,3758,3759,3762,3763,3790,3791,3792,3795,3796,3797,3798,3439,3414,3415,3416,3409,3394,3395,3396,3397,3398,3399,3400,3037,3036,3035,3034,3015,3014,3013,2632,2629,2366,2367,2218,2217,2214,2203,2202,0,2044,2043,0,2027,2026,2019,2020,1727,1724,1723,1594,1593,1586,1587,1574,1571,824,825,826,827,828,665,666,643,642,573,572,571,0,373,368,365,236,235,232,1173,1172,1177,1178,1181,1182,1185,1186,1153,1152,797,798,793,792,791,804,1029,1028,1033,1034,1037,1040,1043,1044,1047,1048,1051,1052,0,0,955,954,945,944,943,0,935,934,933,930,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,3710,3709,3708,3705,3690,3689,3688,3623,3622,3745,3746,3751,3754,3767,3766,3765,3764,3789,0,3793,3794,3801,3800,3799,3438,3419,3418,3417,3408,3407,3406,3405,3404,3403,3402,3401,3880,3881,0,3033,3016,3017,3018,2631,2630,2365,2364,2219,2216,2215,0,2227,2228,2229,2230,1711,1712,2025,2024,2021,1726,1725,1722,1595,1592,1589,1588,1573,1572,823,820,819,818,817,668,667,640,641,574,577,578,579,372,369,364,237,234,233,1174,1175,1176,1179,1180,1183,1184,1187,1188,1151,1150,799,800,801,802,803,1030,1031,1032,1035,1036,1041,1042,1045,1046,1049,1050,1053,1054,1057,1058,1061,1062,1063,0,0,0,0,932,931,0,0,0,0,0,0
|
||||||
|
0,0,0,0,3719,3718,3711,3712,3713,3704,3691,3692,3693,3694,3695,3744,0,3752,3753,3768,3785,3786,3787,3788,3817,3816,0,3802,3803,3804,3437,3420,3421,3422,3423,3424,3425,3426,3427,3874,3875,3876,3879,3882,3883,3032,3029,3028,3019,3020,3021,2362,2363,2220,2221,2222,2225,2226,2233,2232,2231,1710,1713,0,2023,2022,1719,1720,1721,1596,1591,1590,807,808,0,822,821,814,815,816,669,670,639,638,575,576,581,580,371,370,363,238,239,1310,1309,1308,1307,1306,1303,1302,1195,1194,1189,1190,1149,1148,1147,1144,1143,1142,1141,1140,1139,1138,1137,1136,1135,1134,1087,1086,1083,1082,1055,1056,1059,1060,1065,1064,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,3721,3720,3717,3716,3715,3714,3703,0,3699,3698,3697,3696,3743,3774,3773,3772,3769,3784,3821,3820,3819,3818,3815,3808,3807,3806,3805,3436,3435,3434,3433,3432,3431,3430,3429,3428,3873,3872,3877,3878,3885,3884,3031,3030,3027,3026,3025,3022,2361,2360,2351,2350,2223,2224,2235,2234,2245,2246,1709,1714,1715,1716,1717,1718,1669,1668,1597,1598,0,806,809,810,811,812,813,682,681,680,671,672,637,636,583,582,359,360,361,362,241,240,1311,1312,1323,1324,1305,1304,1301,1196,1193,1192,1191,1202,1203,1146,1145,1212,1213,1214,1215,1216,1217,1218,1219,1132,1133,1088,1085,1084,1081,1080,1079,1076,1075,1066,1067,1068,1069,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,3722,3723,3724,3727,3728,3729,3702,3701,3700,3739,3740,3741,3742,3775,3776,3771,3770,3783,3822,3823,3824,3825,3814,3809,3810,3843,3844,3845,3850,3851,3860,3861,3862,3865,3866,3869,3870,3871,3888,3887,3886,3899,3900,3905,3906,0,3024,3023,2358,2359,2352,2349,2238,2237,2236,0,2244,2247,1708,1707,1706,1705,1704,1671,1670,1667,1666,1599,1600,805,804,803,802,801,684,683,0,679,678,673,634,635,584,585,358,357,356,355,242,243,0,1313,1322,1325,1326,1327,1300,1197,1198,1199,1200,1201,1204,1207,1208,1211,1226,1225,1224,1223,1222,1221,1220,1131,1130,1089,1090,1091,1094,1095,1078,1077,1074,1073,1072,1071,1070,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,3725,3726,0,3730,3731,3736,3737,3738,4135,4134,4131,4130,3777,3778,3779,3782,3829,3828,3827,3826,3813,3812,3811,3842,3841,3846,3849,3852,3859,3858,3863,3864,3867,3868,4043,4042,3889,3890,0,3898,3901,3904,3907,3908,3909,3910,2357,2354,2353,2348,2239,2240,2241,2242,2243,2248,2249,1700,1701,1702,1703,1672,1673,1674,1665,1664,1601,1602,1603,798,799,800,685,686,693,694,677,674,633,630,629,586,587,588,589,354,353,244,245,1314,1321,1320,1329,1328,1299,1298,0,1294,1293,0,1205,1206,1209,1210,1227,1228,1231,1232,1233,1234,1235,1128,1129,1124,1123,1092,1093,1096,1097,1098,1099,1100,1101,1102,1103,1104,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,3732,3735,4138,4137,4136,4133,4132,4129,4122,4121,3780,3781,3830,3831,3834,3835,3836,3837,3838,3839,3840,3847,3848,3853,3854,3857,4048,4047,4046,4045,4044,4041,3892,3891,3896,3897,3902,3903,3914,3913,3912,3911,2356,2355,0,2347,2298,2297,2292,2291,2284,2283,2250,1699,1698,1697,1680,1679,1676,1675,0,1663,1606,1605,1604,797,796,795,688,687,692,695,676,675,632,631,628,599,598,591,590,0,352,351,246,1315,1316,1319,1330,1331,1332,1297,1296,1295,1292,1291,1290,1289,1288,1285,1284,1229,1230,1239,1238,1237,1236,1127,1126,1125,1122,1121,1120,1119,1118,1117,1114,1113,1110,1109,1108,1105,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,3733,3734,4139,4140,4141,4144,4145,4128,4123,4120,0,4080,4079,3832,3833,4074,4073,4072,4071,4068,4067,4064,4063,0,3855,3856,4049,4050,4051,4052,4053,4040,3893,3894,3895,3920,3919,3916,3915,3932,3933,2342,2343,2344,2345,2346,2299,2296,2293,2290,2285,2282,2251,0,1695,1696,1681,1678,1677,0,1661,1662,1607,1608,791,792,793,794,689,690,691,696,697,0,623,624,627,600,597,592,345,346,349,350,247,248,1317,1318,1335,1334,1333,1356,1357,1370,1371,1376,1377,0,1287,1286,1283,1282,1281,1240,1241,1242,1243,1244,1245,1248,1249,1250,1251,1252,1253,1116,1115,1112,1111,0,1107,1106,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,4155,4154,0,4142,4143,4146,4127,4124,4119,4082,4081,4078,4077,4076,4075,4092,4093,4070,4069,4066,4065,4062,4061,4060,4059,4058,4057,4056,4055,4054,4039,4030,4029,3922,3921,3918,3917,3930,3931,3934,2341,2336,2335,2334,2301,2300,2295,2294,2289,2286,2281,2252,1693,1694,1683,1682,1657,1658,1659,1660,1617,1616,1609,790,789,780,779,778,777,704,703,698,621,622,625,626,601,596,593,344,347,348,257,256,249,250,1337,1336,1351,1352,1355,1358,1369,1372,1375,1378,1379,1380,1381,1382,1383,1280,1279,1278,1277,1276,1275,1246,1247,1260,1259,1256,1255,1254,1635,1636,1637,1640,1641,0,1657,1658,1659,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,4158,4157,4156,4153,4152,0,4148,4147,4126,4125,4118,4083,4084,4085,4086,4089,4090,4091,4094,4097,4098,4099,4226,4227,4228,4229,4230,4231,4232,4233,4234,4235,4038,4031,4028,3923,3924,3925,3926,3929,3936,3935,2340,2337,2332,2333,2302,2303,2304,2305,2288,2287,2280,2253,1692,1691,1684,1655,1656,1649,1648,1619,1618,1615,1610,787,788,781,774,775,776,705,702,699,620,607,606,603,602,595,594,343,342,341,258,255,252,251,1338,1339,1350,1353,1354,1359,1368,1373,1374,1391,1390,1389,1386,1385,1384,1407,1408,1409,1410,1411,1274,1273,1262,1261,1258,1257,1606,1607,1634,1633,1638,1639,1642,1643,1656,1661,1660,1667,1668,1669,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,4159,4160,4175,4176,4151,4150,4149,4198,4199,4200,4117,4116,4113,4112,4087,4088,4107,4106,4095,4096,4101,4100,4225,4244,4243,4242,4241,4240,4239,4238,4237,4236,4037,4032,4027,3962,3961,3960,3927,3928,3937,0,2339,2338,2331,2328,2327,2326,2307,2306,0,0,2279,2254,1689,1690,1685,1654,1653,1650,1647,1620,1621,1614,1611,786,783,782,773,772,707,706,701,700,619,608,605,604,335,336,337,338,339,340,259,254,253,1342,1341,1340,1349,1362,1361,1360,1367,1394,1393,1392,0,1388,1387,1402,1403,1406,1415,1414,1413,1412,1271,1272,1263,1600,1601,1604,1605,1608,1631,1632,1647,1646,1645,1644,1655,1662,0,1666,1671,1670,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,4163,4162,4161,4174,4177,4178,4181,4182,4197,0,4201,4202,4115,4114,4111,4110,4109,4108,4105,4104,4103,4102,4223,4224,4245,4246,4249,4250,4251,4252,4253,4254,4255,4036,4033,4026,3963,3964,3959,3958,3957,3938,3939,3942,3943,2330,2329,0,2325,2308,0,0,2277,2278,2255,1688,1687,1686,0,1652,1651,1646,1623,1622,1613,1612,785,784,0,770,771,708,709,710,711,618,609,316,317,334,333,332,331,264,263,260,1445,1444,1343,1344,1345,1348,1363,1364,1365,1366,1395,1396,1397,1398,1399,1400,1401,1404,1405,1416,1417,1418,1419,1270,1269,1264,1599,1602,1603,1610,1609,1630,1629,1648,1651,1652,1653,1654,1663,1664,1665,1672,1673,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,4164,4165,4166,4173,0,4179,4180,4183,4196,4205,4204,4203,4212,4213,4214,4215,4216,4217,4218,4219,4220,4221,4222,0,0,4247,4248,0,4260,4259,4258,4257,4256,4035,4034,4025,3966,3965,3970,3971,3956,3955,3940,3941,3944,3945,3946,2323,2324,2309,2312,2313,2276,2275,2256,0,0,1641,1642,1643,1644,1645,1624,1625,764,765,766,767,768,769,730,729,720,719,712,617,610,315,318,327,328,329,330,265,262,261,1446,1443,1442,1441,1346,1347,1436,1435,1434,1433,1432,1431,1430,1429,1428,1427,1426,1425,1424,1423,1422,1421,1420,0,1268,1265,1598,1613,1612,1611,1626,1627,1628,1649,1650,1683,1682,1681,1680,1679,1678,1675,1674,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,4168,4167,4172,4187,4186,4185,4184,4195,4206,4207,4208,4211,4346,4345,4336,4335,4334,4333,4328,4327,4318,4317,0,0,4306,4305,4262,4261,4268,4269,4270,4271,4272,4273,4024,3967,3968,3969,3972,3973,3954,3951,3950,3949,3948,3947,2322,2321,2310,2311,2314,2273,2274,2257,2258,2259,1640,1635,1634,1631,1630,1627,1626,763,762,761,740,739,738,731,728,721,718,713,616,611,314,319,326,325,324,267,266,1449,1448,1447,1472,1473,1440,1439,1438,1437,1482,1483,1484,1485,1486,1487,1488,1489,1490,1573,1574,1579,1580,1585,1586,1591,1592,1267,1266,1597,1614,1619,1620,1625,1720,1719,1714,1713,1684,1685,1686,1687,1688,1677,1676,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,4169,4170,4171,4188,4189,4190,4193,4194,4353,4352,4209,4210,4347,4344,4337,4338,4339,4332,4329,4326,4319,4316,4315,4308,4307,4304,4263,4264,4267,4278,4277,4276,4275,4274,4023,4022,4021,3976,3975,3974,3953,3952,0,3984,3985,3986,0,2320,2317,2316,2315,2272,2265,2264,2261,2260,1639,1636,1633,1632,1629,1628,755,756,759,760,741,742,737,732,727,722,717,714,615,612,313,320,321,322,323,268,269,1450,1451,1452,1471,1474,1475,1476,1477,1478,1481,1498,1497,1496,1495,1494,1493,1492,1491,1572,1575,1578,1581,1584,1587,1590,1593,1594,1595,1596,1615,1618,1621,1624,1721,1718,1715,1712,1709,1708,1691,1690,1689,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,4191,4192,4355,4354,4351,4350,4349,4348,4343,4342,4341,4340,4331,4330,4325,4320,4321,4314,4309,4310,4303,4302,4265,4266,4279,4280,4281,4282,4283,4284,4285,4020,3977,3978,3979,3980,3981,3982,3983,3988,3987,0,2319,2318,0,2270,2271,2266,2263,2262,0,1638,1637,0,0,0,753,754,757,758,745,744,743,736,733,726,723,716,715,614,613,312,293,292,291,278,277,270,1455,1454,1453,1470,1469,1524,1523,1522,1479,1480,1499,1500,1501,1502,1503,1504,1505,1570,1571,1576,1577,1582,1583,1588,1589,1742,1741,1740,1739,1616,1617,1622,1623,1722,1717,1716,1711,1710,1707,1692,1693,1694,1695,1696,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,4396,4395,4356,4357,4358,4359,4360,4361,4364,4365,4368,4369,4372,4373,4324,4323,4322,4313,4312,4311,4300,4301,4296,4295,4294,4293,4290,4289,4288,4287,4286,4019,4016,4015,4004,4003,4002,4001,4000,3989,3990,3991,0,0,0,2269,2268,2267,0,0,0,0,0,0,0,0,752,751,750,747,746,0,0,735,734,725,724,307,308,309,310,311,294,289,290,279,276,271,1456,1461,1462,1467,1468,1525,1526,1521,1520,0,1516,1515,1512,1511,1508,1507,1506,1569,1568,1567,1756,1755,1754,1753,1752,1743,1744,1745,1738,1737,1736,1735,1734,1723,1724,1725,1726,1727,1706,1701,1700,1699,1698,1697,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,4399,4398,4397,4394,4393,4392,4391,4390,4389,4362,4363,4366,4367,4370,4371,4374,4375,4376,4445,4446,4449,4450,4299,4298,4297,4692,4693,4292,4291,4698,4699,4702,4703,4018,4017,4014,4005,4006,4007,3998,3999,3994,3993,3992,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,749,748,0,0,0,0,0,0,0,306,303,302,299,298,295,288,281,280,275,272,1457,1460,1463,1466,1533,1532,1527,1528,1519,1518,1517,1514,1513,1510,1509,1560,1561,0,1565,1566,1757,1758,1759,1760,1751,1748,1747,1746,0,1804,1805,1806,1733,1732,1731,1730,1729,1728,1705,1702,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,4400,4401,4402,4407,4408,4409,4420,4421,4388,4387,0,4383,4382,4381,4380,4379,4378,4377,4444,4447,4448,4451,4452,4689,4690,4691,4694,4695,4696,4697,4700,4701,4704,4705,4706,4013,4012,4009,4008,3997,3996,3995,4722,4723,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,305,304,301,300,297,296,287,282,283,274,273,1458,1459,1464,1465,1534,1531,1530,1529,1550,1551,1552,1555,1556,1557,1558,1559,1562,1563,1564,1767,1766,1765,1762,1761,1750,1749,0,1799,1800,1803,1808,1807,0,1845,1846,0,1850,1851,1704,1703,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,4403,4406,4411,4410,4419,4422,4423,4386,4385,4384,4435,4436,4437,4440,4441,4442,4443,0,4455,4454,4453,4688,4763,4762,4761,4760,4759,4758,4757,4754,4753,4752,4707,4708,4011,4010,4713,4714,4717,4718,4721,4724,4727,4728,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2176,2175,2170,2169,286,285,284,2149,2148,2147,2146,2139,2138,1535,1536,1537,1538,1549,0,1553,1554,2111,2110,2107,2106,2105,1770,1769,1768,0,1764,1763,0,0,1786,1787,1798,1801,1802,1809,1810,1811,1844,1847,1848,1849,1852,1853,1854,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,4404,4405,4412,4413,4418,4417,4424,4425,4428,4429,4434,4433,4438,4439,0,4461,4460,4457,4456,4685,4686,4687,4764,4765,4766,4779,4780,4781,4756,4755,0,4751,4750,4709,4710,4711,4712,4715,4716,4719,4720,4725,4726,4729,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2177,2174,2171,2168,0,2162,2161,2150,2151,2152,2145,2140,2137,1542,1541,1540,1539,1548,2121,2120,2113,2112,2109,2108,2103,2104,1771,1772,1773,1774,1775,1778,1779,1784,1785,1788,1797,1816,1815,1814,1813,1812,1843,1862,1861,1860,1859,1856,1855,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,4506,4505,4414,4415,4416,0,4426,4427,4430,4431,4432,4467,4466,4463,4462,4459,4458,4683,4684,4771,4770,4769,4768,4767,4778,4783,4782,0,4788,4789,0,4749,4748,4747,4746,4743,4742,4739,4738,4735,4734,4733,4730,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2180,2179,2178,2173,2172,2167,2166,2163,2160,2157,2156,2153,2144,2141,2136,1543,1544,1545,1546,1547,2122,2119,2114,2115,2270,2271,2102,2101,2098,2097,2094,2093,1776,1777,1780,1783,1790,1789,1796,1817,1818,1819,1820,1821,1842,1863,1864,1865,1858,1857,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,4509,4508,4507,4504,4503,4502,4501,4476,4475,4474,4473,4472,4469,4468,4465,4464,4671,4672,4681,4682,0,4772,4773,4774,4775,4776,4777,4784,4785,4786,4787,4790,4791,4792,4793,4794,4745,4744,4741,4740,4737,4736,0,4732,4731,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2181,2200,2201,2202,2203,2204,2165,2164,2159,2158,2155,2154,2143,2142,2135,2134,2129,2128,2125,2124,2123,2118,2117,2116,2269,2272,0,2100,2099,2096,2095,2092,2077,2076,1781,1782,1791,1792,1795,1828,1827,1824,1823,1822,1841,1876,1875,1866,1867,1868,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,4510,4511,4512,4513,4514,4515,4500,4477,4478,4479,4480,4471,4470,4659,4660,4661,4670,4673,4680,4679,4810,4809,4808,4807,4806,4805,4804,4803,4802,4801,4800,4799,4798,4797,4796,4795,4886,4887,0,4891,4892,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2183,2182,2199,2208,2207,2206,2205,2218,2219,2220,2221,2222,2223,2224,2225,2226,2133,2130,2127,2126,2259,2260,2263,2264,2267,2268,2273,2274,2275,2278,2279,2090,2091,2078,2075,2072,2071,2070,1793,1794,1829,1826,1825,1836,1837,1840,1877,1874,1873,1872,1869,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,4519,4518,4517,4516,4499,4498,4497,4482,4481,4652,4653,4658,4663,4662,4669,4674,4675,4678,4811,4812,4813,4814,4815,4816,4827,4828,4831,4832,4835,4836,4837,4838,4841,4842,4885,4888,4889,4890,4893,4894,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2184,2185,2198,2209,2210,2213,2214,2217,2234,2233,2232,2231,2230,2229,2228,2227,2132,2131,2256,2257,2258,2261,2262,2265,2266,0,2292,2291,2276,2277,2280,2089,2088,2079,2074,2073,2068,2069,2050,2049,1830,1831,1832,1835,1838,1839,1878,1879,1880,1871,1870,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,4520,4521,4522,4523,4524,4495,4496,4483,4484,4651,4654,4657,4664,4667,4668,0,4676,4677,5038,5037,4820,4819,4818,4817,4826,4829,4830,4833,4834,4849,4848,4839,4840,4843,4884,4899,4898,4897,4896,4895,4910,4911,4912,4913,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2188,2187,2186,2197,2196,2211,2212,2215,2216,2235,2236,2237,2238,2249,2250,2251,2252,2253,2254,2255,0,2305,2304,2301,2300,2297,2296,2293,2290,2287,2286,2281,2282,2087,2080,2081,2082,2067,2066,2051,2048,2047,2046,1833,1834,1885,1884,1883,1882,1881,1916,1917,1918,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,4531,4530,4529,4528,4527,4526,4525,4494,4487,4486,4485,4650,4655,4656,4665,4666,5047,5046,5043,5042,5039,5036,4821,4822,4823,4824,4825,5028,5027,5026,4851,4850,4847,4846,4845,4844,4883,4900,4905,4906,4907,4908,4909,4916,4915,4914,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2189,2190,2191,2192,2195,2520,2519,2518,2517,2242,2241,2240,2239,2248,2313,2312,2311,2310,2309,2308,2307,2306,2303,2302,2299,2298,2295,2294,2289,2288,2285,2284,2283,2086,2085,2084,2083,0,2065,2052,2043,2044,2045,1888,1887,1886,1893,1894,1897,1898,1915,1920,1919,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,4532,4533,4534,4535,4536,4537,4538,4493,4488,4489,4648,4649,5052,5051,5050,5049,5048,5045,5044,5041,5040,5035,5034,5033,5032,5031,5030,5029,0,5025,4852,4853,4854,4855,4856,4857,4882,4901,4904,4923,4922,4919,4918,4917,4942,4943,4944,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2193,2194,2521,2522,2523,2516,2243,2244,2245,2246,2247,2314,2315,2316,2317,2318,2319,2320,2321,2322,2323,2324,2325,2356,2357,2364,2365,2366,2369,2370,2371,2372,2373,2374,2063,2064,2053,2042,2035,2034,1889,1890,1891,1892,1895,1896,1899,1914,1921,1922,1929,1930,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,4544,4543,4542,4541,4540,4539,4492,4491,4490,4647,0,5053,5062,5063,5070,5071,5076,5077,5078,5079,5100,5101,5102,5105,5106,5107,5108,5109,5024,4863,4862,4861,4860,4859,4858,4881,4902,4903,4924,4921,4920,4937,4938,4941,4946,4945,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2527,2526,2525,2524,2515,2512,2511,2510,2339,2338,2337,2336,2335,2334,2333,2332,2331,2330,2329,2328,2327,2326,2355,2358,2363,2362,2367,2368,2381,2380,2379,2376,2375,2062,2061,2054,2041,2036,2033,2028,2027,1904,1903,1902,1901,1900,1913,1924,1923,1928,1931,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,4571,4570,4545,4546,4547,4548,4549,4550,4551,4632,4633,4646,5055,5054,5061,5064,5069,5072,5075,5082,5081,5080,5099,5098,5103,5104,5113,5112,5111,5110,5023,4864,4867,4868,4875,4876,4877,4880,4927,4926,4925,4932,4933,4936,4939,4940,4947,4948,4949,0,0,0,0,0,0,0,0,0,0,0,0,0,5033,5032,0,0,0,0,0,0,0,2528,2529,2532,2533,2514,2513,2508,2509,2340,2341,2342,2343,2344,2345,2346,2347,2348,2349,2350,2351,2352,2353,2354,2359,2360,2361,2384,2383,2382,0,2378,2377,0,2059,2060,2055,2040,2037,2032,2029,2026,1905,1908,1909,1910,1911,1912,1925,1926,1927,1932,1933,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,4574,4573,4572,4569,4568,4557,4556,4555,4554,4553,4552,4631,4634,4645,5056,5057,5060,5065,5068,5073,5074,5083,5084,5085,5096,5097,5124,5123,5114,5115,5116,5117,5022,4865,4866,4869,4874,4873,4878,4879,4928,4929,4930,4931,4934,4935,4960,4959,4956,4955,4950,4951,0,0,0,0,0,0,0,0,0,0,0,0,5034,5031,0,0,0,0,0,0,0,0,2530,2531,2534,2535,2536,2507,2504,2503,2500,2499,0,2495,2494,2493,2492,2491,2490,2489,2488,2487,2486,0,2482,2481,2480,2385,2388,2389,2392,2393,2396,2397,2058,2057,2056,2039,2038,2031,2030,2025,1906,1907,1942,1941,1940,1939,1938,1937,1936,1935,1934,1953,1954,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,4575,4576,4577,4578,4567,4558,4559,4560,4627,4628,4629,4630,4635,4644,0,5058,5059,5066,5067,5184,5183,5088,5087,5086,5095,5126,5125,5122,5121,5120,5119,5118,5021,5016,5015,4870,4871,4872,4987,4986,4985,4984,4983,4982,4981,4980,4961,4958,4957,4954,4953,4952,0,0,0,0,0,0,0,0,0,0,0,5036,5035,5030,5029,5028,0,0,0,0,0,0,0,2540,2539,2538,2537,2506,2505,2502,2501,2498,2497,2496,2559,2560,2561,2562,2563,2564,2589,2590,2485,2484,2483,2478,2479,2386,2387,2390,2391,2394,2395,2398,2399,2402,2403,0,2407,2408,2409,2024,2021,2020,1943,1944,1945,1946,1947,1948,1949,1950,1951,1952,1955,1956,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,4597,4596,4595,0,4579,4566,0,4562,4561,4626,4625,4638,4637,4636,4643,5192,5191,5190,5189,5188,5185,5182,5089,5090,5091,5094,5127,5128,5129,5130,5131,5132,5133,5020,5017,5014,5011,5010,5009,4988,4989,4992,4993,4996,4997,4998,4979,4962,4963,4964,4965,4966,0,0,0,0,0,0,0,0,5065,5064,5061,5060,5037,5038,5039,5040,5027,5026,5025,0,0,0,0,0,2541,2542,2543,2544,2545,2548,2549,2554,2555,2556,2557,2558,2573,2572,2569,2568,2565,2588,2591,2592,2611,2612,2477,2476,2475,2474,2473,2472,2469,2468,2467,2400,2401,2404,2405,2406,2411,2410,2023,2022,2019,1978,1977,1976,1975,1974,1971,1970,1967,1966,1965,1958,1957,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,4598,4599,4594,4581,4580,4565,4564,4563,4620,4621,4624,4639,4640,4641,4642,5193,5194,5195,5196,5187,5186,5181,5180,0,5092,5093,5140,5139,5138,5137,5136,5135,5134,5019,5018,5013,5012,0,5008,5007,4990,4991,4994,4995,5000,4999,4978,4977,4974,4973,4968,4967,0,0,0,0,0,0,0,5067,5066,5063,5062,5059,0,0,5042,5041,5022,5023,5024,0,0,0,0,0,3014,3013,3010,3009,2546,2547,2550,2553,2736,2735,2576,2575,2574,2571,2570,2567,2566,2587,0,2593,2610,2613,2614,2615,2616,2617,2618,2471,2470,0,2466,2417,2416,2415,2414,2413,2412,2429,2430,2017,2018,1979,1980,1981,1982,1973,1972,1969,1968,1963,1964,1959,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,4604,4603,4600,4593,4582,4583,4584,4585,4586,4619,4622,4623,5216,5215,5214,5213,0,5209,5208,5197,5198,5199,5200,5179,5174,5173,0,5141,5142,5145,5146,5149,5150,5153,5154,5483,5484,5487,5488,0,5006,5005,5004,5003,5002,5001,5498,5499,4976,4975,4972,4969,0,0,0,0,0,0,0,0,5068,5069,5070,5071,5058,5055,5054,5043,5044,5021,5020,0,0,5005,5004,0,3016,3015,3012,3011,3008,3007,0,2551,2552,2737,2734,2577,2578,2579,2580,2583,2584,2585,2586,2595,2594,2609,2624,2623,2622,2621,2620,2619,2644,2645,2646,2465,2418,2419,2420,2421,2424,2425,2428,2431,2016,2013,2012,1985,1984,1983,0,0,0,0,1962,1961,1960,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,4605,4602,4601,4592,4591,4590,4589,4588,4587,4618,5261,5260,5217,5218,5219,5212,5211,5210,5207,5206,5205,0,5201,5178,5175,5172,5169,5168,5143,5144,5147,5148,5151,5152,5155,5482,5485,5486,5489,5490,5491,5492,5493,5494,5495,5496,5497,5500,0,0,4971,4970,0,0,0,0,0,0,0,0,5777,5776,5073,5072,5057,5056,5053,5052,5045,5046,5019,5018,5007,5006,5003,3018,3017,3030,3031,3034,3035,3006,3005,0,2739,2738,2733,2732,2731,0,2581,2582,2599,2598,2597,2596,2607,2608,2625,2626,2627,2640,2641,2642,2643,2648,2647,2464,2457,2456,2455,2422,2423,2426,2427,2432,2015,2014,2011,1986,1987,1988,1989,1990,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,4606,4607,4608,4611,4612,4613,4614,4615,4616,4617,5262,5259,5250,5249,5220,5221,5222,5223,5224,5225,5204,5203,5202,5177,5176,5171,5170,5167,5166,5165,5164,5159,5158,5157,5156,5481,5564,5563,5562,5561,5560,5531,5530,5527,5526,5523,5522,5501,5502,5503,0,0,0,0,0,0,0,5781,5780,5779,5778,5775,5074,5075,5078,5079,5080,5051,5050,5047,5016,5017,5008,5009,5002,3019,3020,3029,3032,3033,3036,3037,3004,3003,2740,2741,2728,2729,2730,2723,2722,0,2600,2601,2602,2605,2606,2631,2630,2629,2628,2639,2656,2655,2654,2649,2650,2463,2458,2459,2454,2449,2448,2443,2442,2433,2434,2435,2010,1997,1996,1995,1994,1991,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,4609,4610,0,5268,5267,5266,5265,5264,5263,5258,5251,5248,5241,5240,5239,5230,5229,5226,5447,5448,5453,5454,5461,5462,5463,5466,5467,5468,5163,5160,5477,5478,5479,5480,5565,5566,5567,5558,5559,5532,5529,5528,5525,5524,5521,5520,5505,5504,0,0,0,6146,6145,0,0,5782,5783,5772,5773,5774,0,5076,5077,0,5081,5082,5049,5048,5015,5014,5013,5010,5001,5000,3021,3028,3027,3048,3047,3038,3039,3002,2743,2742,2727,2726,2725,2724,2721,2720,2719,2718,2603,2604,0,2632,2633,2636,2637,2638,2657,2658,2653,2652,2651,2462,2461,2460,2453,2450,2447,2444,2441,2438,2437,2436,2009,1998,1999,2000,1993,1992,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,5274,5273,5272,5269,5292,5293,5294,5295,5256,5257,5252,5247,5242,5243,5238,5231,5228,5227,5446,5449,5452,5455,5460,5459,5464,5465,5470,5469,5162,5161,5476,5581,5580,5579,5578,5569,5568,5557,5556,5533,5534,5537,5538,5539,5540,5519,5506,5507,5508,5509,5510,6147,6144,0,5788,5787,5784,5771,5750,5749,5748,5747,5746,5745,0,5083,5084,5085,5086,5087,5012,5011,4998,4999,3022,3023,3026,3049,3046,0,3040,3001,2744,2745,2746,2757,2758,2759,2760,2761,2762,2717,2714,2713,2692,2691,2634,2635,2682,2681,2660,2659,2664,2665,2666,2667,2844,2845,2452,2451,2446,2445,2440,2439,2858,2859,2008,2007,2006,2001,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,5275,5276,5271,5270,5291,5298,5297,5296,5255,5254,5253,5246,5245,5244,5237,5232,5233,5444,5445,5450,5451,5456,5457,5458,5619,5618,5471,5472,5473,5474,5475,5582,5583,5584,5577,5570,5571,5572,5555,5554,5535,5536,5543,5542,5541,5518,5515,5514,5513,5512,5511,6148,6143,0,5789,5786,5785,5770,5751,5752,5753,5742,5743,5744,0,5564,5563,5090,5089,5088,4993,4994,4997,4978,4977,3024,3025,3050,3045,3042,3041,3000,2749,2748,2747,2756,2755,2766,2765,2764,2763,2716,2715,2712,2693,2690,2687,2686,2683,2680,2661,2662,2663,2670,2669,2668,2843,2846,2849,2850,2853,2854,2855,2856,2857,2860,2861,2862,2005,2002,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,5279,5278,5277,5286,5287,5290,5299,5300,5303,5304,5307,5308,5311,5312,5313,5236,5235,5234,5443,5442,5645,5644,5643,5636,5635,5620,5617,5614,5613,5612,5589,5588,5587,5586,5585,5576,5575,5574,5573,0,5553,5552,5551,5544,5545,5546,5517,5516,6445,6444,0,0,6149,6142,6141,5790,5791,5792,5769,5768,5767,5754,5741,5740,5567,5566,5565,5562,5091,5094,5095,4992,4995,4996,4979,4976,4975,3052,3051,3044,3043,2998,2999,2750,2751,2752,2753,2754,2767,2768,2769,2770,2771,2772,2711,2694,2689,2688,2685,2684,2679,2678,2677,2676,2671,2672,0,2842,2847,2848,2851,2852,2869,2868,2867,2866,2865,2864,2863,2004,2003,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,5280,5281,5282,5285,5288,5289,0,5301,5302,5305,5306,5309,5310,5315,5314,5429,5430,5435,5436,5441,5646,5647,5642,5637,5634,5621,5616,5615,5610,5611,5590,5591,5592,5593,5594,5595,5698,5699,5702,5703,5704,5705,5550,5549,5548,5547,6450,6449,6446,6443,6152,6151,6150,6139,6140,6129,6128,5793,5794,5765,5766,5755,5738,5739,5568,5569,5570,5561,5092,5093,5096,4991,4986,4985,4980,4973,4974,3053,3054,3057,3058,2997,2996,2995,2994,2985,2984,0,2778,2777,2776,2775,2774,2773,2710,2695,2696,2697,2698,2699,2700,2701,0,2675,2674,2673,2840,2841,2896,2895,2892,2891,2870,2871,2872,2873,2874,2875,2876,2877,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,5368,5367,5366,5283,5284,0,5324,5323,5322,5321,5320,5319,5318,5317,5316,5427,5428,5431,5434,5437,5440,0,5648,5641,5638,5633,5622,5623,5624,5609,5608,5607,5600,5599,5598,5597,5596,5697,5700,5701,5716,5715,5706,5707,5708,5709,6452,6451,6448,6447,6442,6153,6154,6155,6138,6137,6130,6127,0,5795,5764,5757,5756,5737,5736,5575,5574,5571,5560,5559,5098,5097,4990,4987,4984,4981,4972,0,0,3055,3056,3059,3060,3061,2992,2993,2986,2983,2780,2779,2788,2789,2790,2793,2794,2709,2708,2707,2706,2705,2704,2703,2702,2815,2816,2817,2818,2839,2898,2897,2894,2893,2890,2889,2888,2885,2884,2883,2880,2879,2878,0,3300,3301,3302,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,5369,5364,5365,5358,5357,5326,5325,5330,5331,5332,5333,5334,5335,5336,5425,5426,0,5432,5433,5438,5439,5650,5649,5640,5639,5632,5631,5630,5625,5626,5605,5606,5601,0,5693,5694,5695,5696,5731,5730,5717,5714,5713,5712,5711,5710,6453,6454,6439,6440,6441,6374,6373,6156,6157,6136,6131,6126,5797,5796,5763,5758,5733,5734,5735,5576,5573,5572,5557,5558,5099,5100,4989,4988,4983,4982,4971,4970,4947,4946,3065,3064,3063,3062,2991,2990,2987,2982,2781,2782,2787,2786,2791,2792,2795,2798,2799,2800,2801,2804,2805,2808,2809,2814,2813,2820,2819,2838,2899,2902,2903,2904,2917,2918,2887,2886,0,2882,2881,3296,3297,3298,3299,3304,3303,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,5370,5363,0,5359,5356,5327,5328,5329,5342,5341,5340,5339,5338,5337,5424,5657,5656,5655,5654,5653,5652,5651,5672,5673,5680,5681,5682,5629,5628,5627,5604,5603,5602,5691,5692,5735,5734,5733,5732,5729,5718,5719,5720,5721,5722,6459,6458,6455,6438,6437,6376,6375,6372,6159,6158,6135,6132,6125,5798,5799,5762,5759,5732,0,5578,5577,5554,5555,5556,5519,5518,5101,5102,5103,4966,4967,4968,4969,4948,4945,3066,3067,3068,3071,3072,2989,2988,2981,2980,2783,2784,2785,2960,2959,2796,2797,2954,2953,2802,2803,2806,2807,2810,2811,2812,2821,2822,2837,2900,2901,2906,2905,2916,2919,2920,2921,2922,3291,3292,3295,3308,3307,3306,3305,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,5372,5371,5362,5361,5360,5355,0,5351,5350,5343,5344,5345,5406,5407,5422,5423,5658,5661,5662,5665,5666,5669,5670,5671,5674,5679,5678,5683,5684,5685,5686,5687,5688,5689,5690,5737,5736,5741,5742,0,5728,5727,5726,5725,5724,5723,6460,6457,6456,6435,6436,6377,6370,6371,6160,6161,6134,6133,6124,5801,5800,5761,5760,5731,5730,5579,5580,5553,5548,5547,5520,5517,5106,5105,5104,4965,4964,4961,4960,4949,4944,4943,4942,3069,3070,3073,3074,3075,3076,2979,2978,2977,2962,2961,2958,2957,2956,2955,2952,2951,2950,2949,2828,2827,2826,2825,2824,2823,2836,2909,2908,2907,2914,2915,2926,2925,2924,2923,3290,3293,3294,3309,3310,3311,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,5374,5373,5380,5381,5386,5387,5354,5353,5352,5349,5348,5347,5346,5405,5408,5421,5420,5659,5660,5663,5664,5667,5668,5773,5772,5675,5676,5677,5764,5763,5762,5761,5760,5759,5758,5757,5738,5739,5740,5743,5744,5745,5746,5747,6704,6703,6702,6461,6432,6433,6434,6379,6378,6369,6366,6365,6162,6163,6164,6123,5802,5803,5804,5727,5728,5729,5582,5581,5552,5549,5546,5521,5516,5107,5108,5113,5114,4963,4962,4959,4950,4951,4952,4941,4940,4939,3084,3083,3082,3077,3078,2975,2976,2963,2964,2965,2966,2967,3118,3119,3120,3121,2948,2829,2830,2831,2832,2833,2834,2835,2910,2911,2912,2913,2928,2927,3286,3287,3288,3289,3318,3317,3314,3313,3312,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,5375,5376,5379,5382,5385,5388,5389,5394,5395,5400,5401,5402,5403,5404,5409,5410,5419,5418,5779,5778,5777,5776,5775,5774,5771,5770,5769,5768,5765,5812,5813,5814,5815,5824,5825,5756,5755,5754,5753,5752,5751,5750,5749,5748,6705,6700,6701,6462,6431,6430,6429,6380,6381,6368,6367,6364,6169,6168,6165,6122,6121,5806,5805,5726,5721,5720,5583,5584,5551,5550,5545,5522,5515,5514,5109,5112,5115,5122,5123,4958,0,4954,4953,4936,4937,4938,3085,3086,3081,3080,3079,2974,2973,2972,2971,2970,2969,2968,3117,3124,3123,3122,2947,2946,2943,2942,2939,2938,2937,2936,2933,2932,2931,2930,2929,0,3285,3322,3321,3320,3319,3316,3315,0,0,3392,3393,3396,3397,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,5377,5378,5383,5384,0,5390,5393,5396,5399,5926,5925,5924,5923,5412,5411,5416,5417,5780,5783,5784,5785,5786,5787,5796,5797,5798,5767,5766,5811,5818,5817,5816,5823,5826,5829,5830,5831,6094,6095,6096,6099,6100,0,6706,6699,6464,6463,6424,6425,6428,6383,6382,6359,6360,6363,6170,6167,6166,6119,6120,5807,5808,5725,5722,5719,5718,5585,5586,5543,5544,5523,5512,5513,5110,5111,5116,5121,5124,4957,4956,4955,4934,4935,0,4765,4764,3087,3088,3097,3098,3107,3108,3109,3110,3111,3112,3115,3116,3125,3126,3127,3128,2945,2944,2941,2940,3267,3268,2935,2934,3279,3280,3281,3282,3283,3284,3323,3324,3325,3326,3327,3388,3389,3390,3391,3394,3395,3398,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,5947,5946,5391,5392,5397,5398,5927,5928,5929,5922,5413,5414,5415,0,5781,5782,5907,5906,5789,5788,5795,5800,5799,5808,5809,5810,5819,5820,5821,5822,5827,5828,5833,5832,6093,6092,6097,6098,6101,6102,6707,6698,6465,6466,6423,6426,6427,6384,6357,6358,6361,6362,6171,6172,6173,6118,5811,5810,5809,5724,5723,5716,5717,5588,5587,5542,0,5524,5511,0,5153,5152,5117,5120,5125,5126,4927,4928,4933,4932,4767,4766,4763,3090,3089,3096,3099,3106,0,3146,3145,0,3113,3114,3133,3132,3131,3130,3129,0,3183,3184,0,3266,3269,3270,3277,3278,3339,3338,3337,3334,3333,3332,3331,3330,3329,3328,3387,3404,3403,3402,3401,3400,3399,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,5949,5948,5945,5942,5941,0,5933,5932,5931,5930,5921,5920,5919,5918,5917,0,5909,5908,5905,5790,5791,5794,5801,5802,5807,5806,5861,5860,5859,5856,5855,5836,5835,5834,5843,5844,6091,6090,6105,6104,6103,6708,6697,0,6467,6422,6421,0,6385,6356,0,0,6181,6180,0,6174,6117,5812,5813,5712,5713,5714,5715,0,5589,5590,5541,5540,5525,5510,5155,5154,5151,5118,5119,0,5127,4926,4929,4930,4931,4768,4769,4762,3091,3092,3095,3100,3105,3148,3147,3144,3143,3142,0,3134,3173,3174,3177,3178,3181,3182,3185,3186,3265,3272,3271,3276,3341,3340,0,3336,3335,3350,3351,3352,3353,3384,3385,3386,3405,3432,3433,3438,3439,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,5965,5964,0,5950,5951,5944,5943,5940,5939,5934,5935,6002,6003,6008,6009,6012,6013,5916,5915,5910,5911,5904,5903,5792,5793,0,5803,5804,5805,5862,5863,5858,5857,5854,5837,5838,0,5842,5845,6088,6089,6106,6107,6108,6709,6696,6695,6468,6419,6420,6387,6386,6355,6354,6183,6182,6179,6176,6175,6116,5815,5814,5711,5710,5709,5690,5689,5592,5591,5538,5539,5526,5509,5156,5157,5150,5149,0,5129,5128,4925,4924,4919,4918,0,4770,4761,4760,3093,3094,3101,3104,3149,3150,3151,3140,3141,3136,3135,3172,3175,3176,3179,3180,3189,3188,3187,3264,3273,3274,3275,3342,3343,3344,0,3348,3349,3356,3355,3354,3383,3410,3409,3406,3431,3434,3437,3440,3443,3444,3447,3448,0,0,0
|
||||||
|
0,0,0,0,0,5966,5963,5962,5961,5952,5953,5954,5955,5938,5937,5936,6001,6004,6007,6010,6011,6014,6015,5914,5913,5912,5901,5902,0,5892,5891,5876,5875,5874,5873,5864,5865,5866,5853,5852,5839,5840,5841,5846,6087,6112,6111,6110,6109,6710,6693,6694,6469,6418,0,6388,6389,6352,6353,6184,6185,6178,6177,6114,6115,5816,5817,5706,5707,5708,5691,5688,5593,5536,5537,5528,5527,5508,5507,5158,5159,5148,5147,5130,5131,5132,4923,4920,4917,4916,4771,4772,4759,4752,4751,3102,3103,3154,3153,3152,3139,3138,3137,3170,3171,3200,3199,3198,3197,3190,3191,3262,3263,3516,3515,3512,3511,3510,3345,3346,3347,3358,3357,3378,3379,3382,3411,3408,3407,3430,3435,3436,3441,3442,3445,3446,3449,3450,3451,3452
|
||||||
|
0,0,0,0,0,5967,5968,5969,5960,5959,5958,5957,5956,5989,5990,5999,6000,6005,6006,6031,6030,6029,6016,6017,6020,6021,5900,5897,5896,5893,5890,5877,5878,5879,5872,5869,5868,5867,0,5851,5850,5849,5848,5847,6086,6113,6114,6115,6712,6711,6692,6691,6470,6417,6416,6391,6390,6351,6226,6225,6186,6187,6188,6113,6112,6111,5818,5705,5698,5697,5692,5687,5594,5535,5530,5529,5504,5505,5506,0,5160,5161,5146,5135,5134,5133,4922,4921,4914,4915,4774,4773,4758,4753,4750,4749,4748,3155,3158,3159,3164,3165,3168,3169,0,3201,3202,3203,3196,3193,3192,3261,3518,3517,3514,3513,0,3509,3508,3365,3364,3359,3360,3377,3380,3381,3412,3425,3426,3429,3470,3469,3468,3467,3466,3465,3458,3457,3454,3453
|
||||||
|
0,0,0,0,0,0,0,5970,5971,5976,5977,5978,5979,5988,5991,5998,5997,6038,6037,6032,6033,6028,0,6018,6019,6022,5899,5898,5895,5894,5889,5888,0,5880,5871,5870,6071,6072,0,6080,6081,6082,6083,6084,6085,6118,6117,6116,6713,6688,6689,6690,6471,6472,6415,6392,6349,6350,6227,6224,6191,6190,6189,6108,6109,6110,5819,5704,5699,5696,5693,5686,5595,5534,5531,5502,5503,5456,5455,5448,5447,5162,5145,5136,5137,5138,4911,4912,4913,0,4775,4776,4757,4754,4745,4746,4747,3156,3157,3160,3163,3166,3167,3210,3209,3206,3205,3204,3195,3194,0,3260,3519,3520,3521,3522,3523,3524,3507,3366,3363,3362,3361,3376,3415,3414,3413,3424,3427,3428,3471,0,3481,3482,3483,3464,3459,3456,3455,0
|
||||||
|
0,0,0,0,0,0,0,0,5972,5975,5982,5981,5980,5987,5992,5995,5996,6039,6036,6035,6034,6027,6026,6025,6024,6023,6054,6055,6056,6057,5886,5887,5882,5881,6068,6069,6070,6073,6074,6079,6078,6123,6122,6121,6120,6119,6716,6715,6714,6687,6686,6479,6478,6473,6414,6393,6348,0,6228,6223,6192,6193,6194,6107,6086,6085,5820,5703,5700,5695,5694,5685,5596,5533,5532,5501,5500,5457,5454,5449,5446,5163,5144,5143,5142,5139,4910,4909,4786,4785,4778,4777,4756,4755,4744,4711,4710,4709,4708,3161,3162,3213,3212,3211,3208,3207,0,3221,3222,0,3258,3259,3530,3529,3528,3527,3526,3525,3506,3367,3368,3371,3372,3375,3416,3419,3420,3423,3474,3473,3472,3479,3480,3485,3484,3463,3460,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,5973,5974,5983,5984,5985,5986,5993,5994,0,6040,6041,6042,6043,6044,6047,6048,6051,6052,6053,0,6059,6058,5885,5884,5883,6066,6067,6142,6141,6140,6075,6076,6077,6124,6127,6128,6719,6718,6717,6682,6683,6684,6685,6480,6477,6474,6413,6394,6347,6346,6229,6222,6201,6200,6195,6106,6087,6084,5821,5702,5701,5680,5681,5684,5597,5598,5599,5498,5499,5458,5453,5450,5445,5164,5165,5166,5141,5140,4907,4908,4787,4784,4779,4740,4741,4742,4743,4712,4713,4706,4707,4346,4345,3214,3215,3216,3217,3218,3219,3220,3223,3224,3257,3256,3531,3534,3535,3538,3539,0,3505,3504,3369,3370,3373,3374,3417,3418,3421,3422,3475,3476,3477,3478,3487,3486,0,3462,3461,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,6279,6278,6277,6276,6275,6274,6263,6262,6261,6260,6259,0,6045,6046,6049,6050,0,6164,6163,6060,6061,6062,6063,6064,6065,6144,6143,0,6139,6138,6135,6134,6125,6126,6129,6720,6721,6722,6681,6680,6665,6664,6481,6476,6475,6412,6395,6396,6345,6230,6221,6202,6199,6196,6105,6088,6083,5822,5823,5678,5679,5682,5683,5602,5601,5600,5497,5460,5459,5452,5451,5444,5437,5436,5167,5168,4905,4906,0,4788,4783,4780,4739,4738,4723,4722,4715,4714,4705,4348,4347,4344,4343,3236,3235,3234,3231,3230,3229,3226,3225,3254,3255,3532,3533,3536,3537,3540,3555,3556,3503,3502,3501,3500,3497,3496,3495,3494,3493,3492,3491,3490,3489,3488,3593,3594,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,6280,6281,6284,6285,6286,6273,6264,6265,6266,6257,6258,6175,6174,6173,6170,6169,6166,6165,6162,6161,0,6157,6156,6155,6154,6145,6146,6147,6148,6137,6136,6133,6132,6131,6130,6895,6896,6723,6678,6679,6666,6663,6482,6483,6484,6411,6410,6397,6344,6231,6220,6203,6198,6197,6104,6089,6082,0,5824,5677,5674,5673,0,5603,5604,5605,5496,5461,5462,5463,5442,5443,5438,5435,5170,5169,4904,4903,4902,4789,4782,4781,4736,4737,4724,4721,4716,4717,4704,4349,4350,4351,4342,3237,3238,3233,3232,0,3228,3227,0,3253,3546,3545,3544,3543,3542,3541,3554,3557,3560,3561,0,3499,3498,3567,3568,3569,3570,3571,3572,3589,3590,3591,3592,3595,3596,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,6282,6283,0,6287,6272,0,6268,6267,6256,6255,6176,6177,6172,6171,6168,6167,6200,6201,6160,6159,6158,6207,6208,6153,6152,6151,6150,6149,6840,6841,6842,6891,6892,6893,6894,6897,6724,6677,6676,6667,6662,6661,6660,6485,6486,6409,6398,6343,6232,6219,6204,6205,6206,6103,6090,6081,6080,5825,5676,5675,5672,5671,5614,5613,5606,5495,5486,5485,5464,5441,5440,5439,5434,5171,4898,4899,4900,4901,4790,4791,4792,4735,4734,4725,4720,4719,4718,4703,4368,4367,4352,4341,3240,3239,3244,3245,3248,3249,3250,3251,3252,3547,3548,3549,3550,3551,3552,3553,3558,3559,3562,3563,3564,3565,3566,3577,3576,3575,3574,3573,3588,3603,3602,3599,3598,3597,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,6290,6289,6288,6271,6270,6269,6298,6299,6254,6179,6178,6189,6190,6197,6198,6199,6202,6203,6204,6205,6206,6209,6210,6211,6212,6827,6828,6839,6838,6843,6890,6889,6888,6887,6898,6725,6674,6675,6668,6657,6658,6659,0,6487,6408,6399,6342,6233,6218,6213,6212,6207,6102,6091,6092,6079,5826,5827,5828,5669,5670,5615,5612,5607,5494,5487,5484,5465,5430,5431,5432,5433,5172,4897,4894,4893,0,4887,4886,4793,4732,4733,4726,4699,4700,4701,4702,4369,4366,4353,4340,3241,3242,3243,3246,3247,3924,3923,3918,3917,3816,3815,3814,3813,3812,3809,3808,3805,3804,3803,3698,3697,3696,3695,3578,3581,3582,0,3586,3587,3604,3601,3600,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,6291,6292,6293,6294,6295,6296,6297,6300,6253,6180,6181,6188,6191,6196,6227,6226,6225,6222,6221,6218,6217,6216,6215,6214,6213,6826,6829,6836,6837,6844,6845,6884,6885,6886,6899,6726,6673,6672,6669,6656,6553,6552,6489,6488,6407,6400,6341,6234,6217,6214,6211,6208,6101,6100,6093,6078,6077,5830,5829,5668,5667,5616,5611,5608,5493,5488,5483,5466,5429,5426,5425,5174,5173,4896,4895,4892,4889,4888,4885,4794,4731,4728,4727,4698,4697,4408,4407,4370,4365,4354,4339,4338,4331,4330,3927,3926,3925,3922,3919,3916,3817,3818,3821,3822,3811,3810,3807,3806,0,3802,3699,3700,3701,3694,3579,3580,3583,3584,3585,3606,3605,3610,3611,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,6314,6313,0,6309,6308,6305,6304,6301,6252,6183,6182,6187,6192,6195,6228,6229,6224,6223,6220,6219,6432,6433,6434,6435,6436,6825,6830,6835,6848,6847,6846,6883,6882,6901,6900,6727,6728,6671,6670,6655,6554,6551,6490,0,6406,6401,6340,6235,6216,6215,6210,6209,6098,6099,6094,6075,6076,5831,5832,0,5666,5617,5610,5609,5492,5489,5482,5467,5428,5427,5424,5175,5176,5177,0,4891,4890,4883,4884,4795,4730,4729,4692,4693,4696,4409,4406,4371,4364,4355,4356,4337,4332,4329,3928,3931,3932,3921,3920,3915,3914,3819,3820,3823,3824,3825,3826,3827,3828,3801,3704,3703,3702,3693,3692,3687,3686,3677,3676,3607,3608,3609,3612,3613,3614,3627,3628,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,6316,6315,6312,6311,6310,6307,6306,6303,6302,6251,6184,6185,6186,6193,6194,0,6230,6231,6232,6429,6430,6431,0,6439,6438,6437,6824,6831,6834,6849,6856,6857,6880,6881,6902,6905,6906,6729,6730,6731,6654,6555,6550,6491,6492,6405,6402,6339,6236,6237,6238,6239,0,6097,6096,6095,6074,6073,5834,5833,5664,5665,5618,5619,5620,5491,5490,5481,5468,5421,5422,5423,5180,5179,5178,4877,4878,4881,4882,4797,4796,4687,4688,4691,4694,4695,4410,4405,4372,4363,4362,4357,4336,4333,4328,3929,3930,3933,3936,3937,3938,3913,3912,3847,3846,3843,3842,3837,3836,3829,3800,3705,3706,3707,3708,3691,3688,3685,3678,3675,3674,3619,3618,3617,3616,3615,3626,3629,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,6317,6318,6319,6320,6321,6322,6325,6326,6327,6250,6249,6248,6247,6244,6243,6242,6235,6234,6233,6428,6443,6442,6441,6440,6451,6452,6823,6832,6833,6850,6855,6858,6879,6878,6903,6904,6907,6906,6733,6732,6653,6556,6549,6548,6493,6404,6403,6338,6337,6242,6241,6240,6063,6064,6067,6068,0,6072,5835,0,5663,5624,5623,5622,5621,5478,5479,5480,5469,5420,5293,5292,5181,5182,4875,4876,4879,4880,4799,4798,4685,4686,4689,4690,4675,4674,4411,4404,4373,4374,4361,4358,4335,4334,4327,4310,4309,3934,3935,3940,3939,0,3911,3848,3845,3844,3841,3838,3835,3830,3799,3798,3797,3710,3709,3690,3689,3684,3679,3680,3673,3620,3621,3622,3623,3624,3625,3630,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,6346,6345,6344,6343,6342,6323,6324,0,6328,6329,6330,6331,6246,6245,6240,6241,6236,6423,6424,6427,6444,6447,6448,6449,6450,6453,6822,6821,6820,6851,6854,6859,6876,6877,6902,6903,6904,6905,6734,6651,6652,6557,6546,6547,6494,6495,6496,6335,6336,6243,6244,6245,6062,6065,6066,6069,6070,6071,5836,5661,5662,5625,5626,5627,5628,5477,5474,5473,5470,5419,5294,5291,5184,5183,4874,4873,4866,4865,4800,0,4684,4681,4680,4677,4676,4673,4412,4403,4376,4375,4360,4359,4322,4323,4326,4311,4308,3943,3942,3941,3948,3949,3910,3849,3852,3853,3840,3839,3834,3831,3794,3795,3796,3711,3712,3713,3714,3683,3682,3681,3672,3665,3664,3663,3634,3633,3632,3631,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,6347,6352,6353,6354,6341,6340,6339,6338,0,6334,6333,6332,6403,6404,6239,6238,6237,6422,6425,6426,6445,6446,6457,6456,6455,6454,6815,6816,6819,6852,6853,6860,6875,6900,6901,6890,6889,6736,6735,6650,6559,6558,6545,6544,6499,6498,6497,6334,6251,6250,6247,6246,6061,6060,6059,6038,6037,5838,5837,5660,5643,5642,5639,5638,5629,5476,5475,5472,5471,5418,5295,5290,5185,5186,5187,4872,4867,4864,4801,4802,4683,4682,4679,4678,0,4672,4413,4402,4377,4380,4381,0,4321,4324,4325,4312,4307,3944,3945,3946,3947,3950,3909,3850,3851,3854,3855,0,3833,3832,3793,3792,3791,3718,3717,3716,3715,3724,3725,0,3671,3666,0,3662,3635,3636,3637,3638,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,6348,6351,6356,6355,6370,6371,6372,6337,6336,6335,6400,6401,6402,6405,6406,6417,6418,6421,0,6463,6462,6459,6458,6609,6610,6813,6814,6817,6818,6863,6862,6861,6874,6899,6898,6891,6888,6737,6738,6649,6560,6561,6562,6543,6500,6501,0,6333,6252,6249,6248,6055,6056,6057,6058,6039,6036,5839,5840,5659,5644,5641,5640,5637,5630,5631,5414,5415,5416,5417,5296,5289,5192,5191,5188,4871,4868,4863,4862,4803,4804,0,4668,4669,4670,4671,4414,4401,4378,4379,4382,4383,4320,4317,4316,4313,4306,4273,4272,4271,4270,3951,3908,3907,3896,3895,3856,3857,3860,3861,3862,3789,3790,3719,3720,3721,3722,3723,3726,3727,3670,3667,3660,3661,3644,3643,3640,3639,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,6349,6350,6357,6358,6369,0,6373,6390,6391,6392,6399,6410,6409,6408,6407,6416,6419,6420,6465,6464,6461,6460,6607,6608,6611,6812,6809,6808,6807,6864,6867,6868,6873,6896,6897,6892,6887,6740,6739,6648,6567,6566,6563,6542,6541,6502,6503,6332,6253,6254,0,6054,6051,6050,6049,6040,6035,5842,5841,5658,5645,5646,5647,5636,5633,5632,5413,5412,5411,5410,5297,5288,5193,5190,5189,4870,4869,0,4861,4860,4805,4806,4667,4666,4665,4664,4415,4400,4387,4386,4385,4384,4319,4318,4315,4314,4305,4274,4275,4268,4269,3952,3953,3906,3897,3894,3893,3858,3859,3864,3863,3788,3787,3734,3733,3732,3731,3730,3729,3728,3669,3668,3659,3658,3645,3642,3641,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,6360,6359,6368,6375,6374,6389,6394,6393,6398,6411,6412,6413,6414,6415,6472,6471,6466,6467,6598,6599,6606,6605,6612,6811,6810,6805,6806,6865,6866,6869,6872,6895,6894,6893,6886,6741,6646,6647,6568,6565,6564,0,6540,6539,6504,6331,6330,6255,6256,6053,6052,6047,6048,6041,6034,5843,5844,5657,5652,5651,5648,5635,5634,5403,5404,5407,5408,5409,5298,5287,5194,5195,5196,4851,4852,4855,4856,4859,4808,4807,4660,4661,4662,4663,4416,4399,4388,4389,4390,4391,0,4301,4302,4303,4304,4277,4276,4267,4266,3955,3954,3905,3898,3899,3892,3867,3866,3865,3872,3873,3786,3735,3736,3737,3738,3739,3740,3741,3742,0,0,3657,3646,3647,3648,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,6361,6362,6367,6376,6377,6388,6395,6396,6397,6478,6477,6476,6475,6474,6473,6470,6469,6468,6597,6600,6601,6604,6613,6746,6747,6804,6803,6802,0,6870,6871,6880,6881,6884,6885,6742,6645,6644,6569,6570,6571,6572,6573,6538,6505,0,6329,6328,6257,6258,6259,6046,6043,6042,6033,5846,5845,5656,5653,5650,5649,0,5401,5402,5405,5406,5303,5302,5299,5286,5283,5282,5197,4850,4853,4854,4857,4858,4809,4658,4659,4644,4643,4642,4417,4398,4397,4396,4393,4392,4299,4300,4295,4294,4293,4278,4279,4264,4265,3956,0,3904,3901,3900,3891,3868,3869,3870,3871,3874,3785,3768,3767,3764,3763,3746,3745,3744,3743,0,0,3656,3651,3650,3649,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,6363,6366,6379,6378,6387,6386,6481,6480,6479,6506,6507,6514,6515,6516,6585,6586,6587,6596,6595,6602,6603,6614,6745,6748,6751,6752,6801,6800,6799,6798,6879,6882,6883,6744,6743,6642,6643,6614,6613,6612,6575,6574,6537,6506,6507,0,6327,6306,6305,6260,6045,6044,0,6032,5847,0,5655,5654,5855,5856,5857,5400,5399,5398,5397,5304,5301,5300,5285,5284,5281,5198,4849,4848,4843,4842,4811,4810,4657,4646,4645,0,4641,4418,4419,4420,4395,4394,0,4298,4297,4296,4291,4292,4281,4280,4263,4262,3957,3958,3903,3902,0,3890,3889,3888,3883,3882,3875,3784,3769,3766,3765,3762,3747,3750,3751,0,0,0,3655,3652,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,6364,6365,6380,6381,6384,6385,6482,6501,6502,6505,6508,6513,0,6517,6584,6589,6588,6593,6594,6619,6618,6615,6744,6749,6750,6753,6788,6789,6796,6797,6878,6843,6842,6745,6746,6641,6640,6615,0,6611,6576,6577,6536,6535,6508,6325,6326,6307,6304,6261,6028,6029,6030,6031,5848,5849,5850,5853,5854,5859,5858,5393,5394,5395,5396,5305,5306,5307,5308,5279,5280,5199,5200,4847,4844,4841,4812,4655,4656,4647,4638,4639,4640,4443,4442,4421,4422,4423,4424,4425,4426,4427,4290,4289,4282,4255,4256,4261,4260,3959,3960,3961,3962,3963,3964,3887,3884,3881,3876,3783,3770,3771,3772,3761,3748,3749,3752,0,0,0,3654,3653,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6382,6383,6484,6483,6500,6503,6504,6509,6512,6519,6518,6583,6590,6591,6592,6621,6620,6617,6616,6743,6742,6741,6754,6787,6790,6795,6794,6877,6844,6841,6840,6747,0,6639,6616,6609,6610,6579,6578,0,6534,6509,6324,6309,6308,6303,6262,6027,6026,6007,6006,5989,5988,5851,5852,5861,5860,0,5392,5391,5390,5389,5388,5311,5310,5309,5278,5277,5202,5201,4846,4845,4840,4813,4654,4649,4648,4637,4636,4635,4444,4441,4440,4439,4436,4435,4432,4431,4428,4287,4288,4283,4254,4257,4258,4259,3972,3971,3970,3969,3966,3965,3886,3885,3880,3877,3782,3781,3774,3773,3760,3755,3754,3753,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6487,6486,6485,6498,6499,6528,6527,6510,6511,6520,6581,6582,6625,6624,6623,6622,6649,6650,6729,6730,6731,6740,6755,6786,6791,6792,6793,6876,6845,6838,6839,6748,6637,6638,6617,6608,6581,6580,0,6532,6533,6510,6323,6310,6311,6302,6263,6024,6025,6008,6005,5990,5987,5984,5983,5862,5863,5864,5865,5384,5385,5386,5387,5312,5313,5314,5275,5276,5203,5204,5205,5206,4839,4814,4653,4650,4629,4630,4631,4634,4445,4446,4447,4438,4437,4434,4433,4430,4429,4286,4285,4284,4253,4196,4195,3974,3973,3978,3979,3968,3967,0,3985,3986,3879,3878,0,3780,3775,3776,3759,3756,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6488,6491,6492,6497,6530,6529,6526,6525,0,6521,6580,6627,6626,6633,6634,6647,6648,6651,6728,6733,6732,6739,6756,6785,6784,6783,6782,6875,6846,6837,6836,6749,6636,6619,6618,6607,6582,6529,6530,6531,6512,6511,6322,6321,6312,6301,6264,6023,6022,6009,6004,5991,5986,5985,5982,5869,5868,5867,5866,5383,5338,5337,5336,5331,5330,5315,5274,5273,5210,5209,5208,5207,4838,4815,4652,4651,4628,4627,4632,4633,4468,4467,4448,4449,4450,4451,4452,0,4246,4247,4250,4251,4252,4197,4194,3975,3976,3977,3980,3981,3982,3983,3984,3987,3988,0,0,3779,3778,3777,3758,3757,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6489,6490,6493,6496,6531,6532,6533,6524,6523,6522,6579,6628,6629,6632,6635,6646,6653,6652,6727,6734,6735,6738,6757,6760,6761,6780,6781,6874,6847,0,6835,6750,6635,6620,6621,6606,6583,6528,6527,6514,6513,6318,6319,6320,6313,6300,6265,6020,6021,6010,6003,5992,5979,5980,5981,5870,5871,5872,5873,5382,5339,5340,5335,5332,5329,5316,5271,5272,5211,5212,5213,4836,4837,4816,4817,0,0,4626,4549,4548,4469,4466,4463,4462,4457,4456,4453,4244,4245,4248,4249,4208,4207,4198,4193,4192,4059,4058,4057,3994,3993,3992,3991,3990,3989,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6494,6495,0,0,6534,6537,6538,6539,6578,6577,6630,6631,6636,6645,6654,6655,6726,6725,6736,6737,6758,6759,6762,6779,6872,6873,6848,6833,6834,6751,6634,6633,6622,6605,6584,6525,6526,6515,6516,6317,6316,6315,6314,6299,6266,6019,6012,6011,6002,5993,5978,5977,5976,5881,5880,5879,5874,5381,5342,5341,5334,5333,5328,5317,5270,5269,5226,5225,5214,4835,4824,4823,4818,4623,4624,4625,4550,4547,4470,4465,4464,4461,4458,4455,4454,4243,4242,4219,4218,4209,4206,4199,4200,4191,4060,4061,4056,3995,3996,3997,0,4001,4002,4003,4004,4005,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6535,6536,0,6540,6541,6576,6575,6574,6637,6644,0,6656,6657,6724,6723,6722,6721,6720,6763,6778,6871,6870,6849,6832,6753,6752,0,6632,6623,6604,6585,6524,6523,6518,6517,6294,6295,6296,6297,6298,6267,6018,6013,6000,6001,5994,5995,5974,5975,5882,5883,5878,5875,5380,5343,5344,5345,5326,5327,5318,5267,5268,5227,5224,5215,4834,4825,4822,4819,4622,4557,4556,4551,4546,4471,4472,4473,4460,4459,4238,4239,4240,4241,4220,4217,4210,4205,4204,4201,4190,4063,4062,4055,4046,4045,3998,3999,4000,4011,4010,4007,4006,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6546,6545,6544,6543,6542,6565,6566,6573,6638,6643,6660,6659,6658,6695,6696,6711,6712,6719,6764,6777,0,6869,6850,6831,6754,6757,6758,6631,6624,6603,6586,6587,6522,6519,0,6293,6292,6281,6280,6279,6268,6017,6014,5999,5998,5997,5996,5973,5972,5885,5884,5877,5876,5379,5368,5367,5346,5325,5320,5319,5266,5229,5228,5223,5216,4833,4826,4821,4820,4621,4558,4555,4552,4545,4542,4541,4474,4475,4476,4237,4236,4227,4226,4221,4216,4211,0,4203,4202,4189,4064,4065,4054,4047,4044,4043,4038,4037,4012,4009,4008,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6547,6548,6549,6552,6553,6564,6567,6572,6639,6642,6661,6664,6665,6694,6697,6710,6713,6718,6765,6776,6867,6868,6851,6830,6755,6756,6759,6630,6625,6602,6589,6588,6521,6520,0,0,6291,6282,6277,6278,6269,6016,6015,5962,5963,0,5967,5968,5971,5886,5887,5888,5377,5378,5369,5366,5347,5324,5321,5264,5265,5230,5231,5222,5217,4832,4827,4616,4617,4620,4559,4554,4553,4544,4543,4540,4479,4478,4477,0,4235,4228,4225,4222,4215,4212,4185,4186,4187,4188,4067,4066,4053,4048,4049,4042,4039,4036,4013,4014,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6550,6551,6554,6563,6568,6571,6640,6641,6662,6663,6666,6693,6698,6709,6714,6717,6766,6775,6866,6865,6852,6829,6828,6761,6760,6629,6626,6601,6590,6591,6592,0,0,0,6290,6283,6276,6275,6270,5959,5960,5961,5964,5965,5966,5969,5970,5893,5892,5889,5376,5371,5370,5365,5348,5323,5322,5263,5262,5233,5232,5221,5218,4831,4828,4615,4618,4619,4560,4561,4562,4537,4538,4539,4480,4481,4482,4483,4234,4229,4224,4223,4214,4213,4184,4183,4096,4095,4068,0,4052,4051,4050,4041,4040,4035,4034,4015,4016,4017,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6556,6555,6562,6569,6570,6673,6672,6671,6668,6667,6692,6699,6708,6715,6716,6767,6774,6773,6864,6853,6826,6827,6762,0,6628,6627,6600,6597,6596,6593,0,0,6288,6289,6284,0,6274,6271,5958,5945,5944,5939,5938,5937,5896,5895,5894,5891,5890,5375,5372,5363,5364,5349,5350,5259,5260,5261,5234,5235,5220,5219,4830,4829,4614,4613,4612,4565,4564,4563,4536,4531,4530,4489,4488,4487,4484,4233,4230,4177,4178,4179,4180,4181,4182,4097,4094,4069,4070,4073,4074,0,0,4031,4032,4033,4024,4023,4018,4019,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6557,6558,6561,0,0,6674,6675,6670,6669,6690,6691,6700,6707,6706,6705,6768,6771,6772,6863,6854,6825,6824,6763,6764,6765,0,6599,6598,6595,6594,0,0,6287,6286,6285,0,6273,6272,5957,5946,5943,5940,5935,5936,5897,5898,5899,5900,0,5374,5373,5362,5353,5352,5351,5258,5257,5248,5247,5236,5237,4606,4607,4608,4609,4610,4611,4566,4567,4568,4535,4532,4529,4490,4491,4486,4485,4232,4231,4176,4175,4174,4173,4172,4099,4098,4093,4092,4071,4072,4075,4076,0,4030,4029,4028,4025,4022,4021,4020,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6559,6560,0,0,0,6676,6677,6678,6689,6688,6701,6702,6703,6704,6769,6770,0,6862,6855,6822,6823,6798,6797,6766,6767,6770,6771,6772,0,0,0,0,0,0,0,0,0,5956,5947,5942,5941,5934,5933,5904,5903,5902,5901,0,0,5360,5361,5354,5355,0,0,5256,5249,5246,5239,5238,4605,4604,4603,4600,4599,4590,4589,4588,4569,4534,4533,4528,4527,4492,4495,4496,4497,4498,4167,4168,4169,4170,4171,4100,4101,4102,4091,4090,4079,4078,4077,0,0,0,4027,4026,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6680,6679,6686,6687,0,0,0,0,0,0,6860,6861,6856,6821,6800,6799,6796,6795,6768,6769,6774,6773,0,0,0,0,0,0,0,0,5954,5955,5948,0,0,5931,5932,5905,5906,5907,5908,0,0,5359,5358,5357,5356,0,0,5255,5250,5245,5240,0,0,0,4602,4601,4598,4591,4586,4587,4570,0,4524,4525,4526,4493,4494,4501,4500,4499,4166,4165,4164,4163,4110,4109,4108,4103,4104,4089,4080,4081,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6681,6682,6685,0,0,0,0,0,0,0,6859,6858,6857,6820,6801,6802,6793,6794,6777,6776,6775,0,0,0,0,0,0,0,0,0,5953,5952,5949,0,0,5930,5929,5918,5917,5910,5909,0,0,0,0,0,0,0,0,5254,5251,5244,5241,0,0,0,0,4596,4597,4592,4585,4584,4571,4572,4523,4520,4519,4504,4503,4502,0,0,4159,4160,4161,4162,4111,0,4107,4106,4105,4088,4083,4082,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6683,6684,0,0,0,0,0,0,0,6816,6817,6818,6819,6804,6803,6792,6791,6778,6779,0,0,0,0,0,0,0,0,0,0,0,5951,5950,0,5926,5927,5928,5919,5916,5911,5912,0,0,0,0,0,0,0,0,5253,5252,5243,5242,0,0,0,0,4595,4594,4593,4582,4583,4574,4573,4522,4521,4518,4505,4506,4509,4510,0,4158,4157,4156,4155,4112,4113,4114,4115,4116,4087,4084,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6815,6814,6813,6812,6805,6806,0,6790,6781,6780,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5925,5924,5923,5920,5915,5914,5913,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4581,4580,4575,0,0,0,4517,4516,4507,4508,4511,4150,4151,4152,4153,4154,4129,4128,4127,4118,4117,4086,4085,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6811,6808,6807,6788,6789,6782,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5922,5921,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4579,4576,0,0,0,0,4515,4514,4513,4512,4149,4148,4141,4140,4131,4130,4125,4126,4119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6810,6809,0,6787,6786,6783,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4578,4577,0,0,0,0,0,0,0,0,4146,4147,4142,4139,4132,4133,4124,4121,4120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6785,6784,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4145,4144,4143,4138,4135,4134,4123,4122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4137,4136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
12
day_17/Pipfile
Normal file
12
day_17/Pipfile
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
[[source]]
|
||||||
|
url = "https://pypi.org/simple"
|
||||||
|
verify_ssl = true
|
||||||
|
name = "pypi"
|
||||||
|
|
||||||
|
[packages]
|
||||||
|
numpy = "*"
|
||||||
|
|
||||||
|
[dev-packages]
|
||||||
|
|
||||||
|
[requires]
|
||||||
|
python_version = "3.11"
|
||||||
64
day_17/Pipfile.lock
generated
Normal file
64
day_17/Pipfile.lock
generated
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
{
|
||||||
|
"_meta": {
|
||||||
|
"hash": {
|
||||||
|
"sha256": "09a1230e580eaa3316a4e22c8cde61e6c6f10a97b72d483d6afb8e89cfdda897"
|
||||||
|
},
|
||||||
|
"pipfile-spec": 6,
|
||||||
|
"requires": {
|
||||||
|
"python_version": "3.11"
|
||||||
|
},
|
||||||
|
"sources": [
|
||||||
|
{
|
||||||
|
"name": "pypi",
|
||||||
|
"url": "https://pypi.org/simple",
|
||||||
|
"verify_ssl": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"default": {
|
||||||
|
"numpy": {
|
||||||
|
"hashes": [
|
||||||
|
"sha256:06fa1ed84aa60ea6ef9f91ba57b5ed963c3729534e6e54055fc151fad0423f0a",
|
||||||
|
"sha256:174a8880739c16c925799c018f3f55b8130c1f7c8e75ab0a6fa9d41cab092fd6",
|
||||||
|
"sha256:1a13860fdcd95de7cf58bd6f8bc5a5ef81c0b0625eb2c9a783948847abbef2c2",
|
||||||
|
"sha256:1cc3d5029a30fb5f06704ad6b23b35e11309491c999838c31f124fee32107c79",
|
||||||
|
"sha256:22f8fc02fdbc829e7a8c578dd8d2e15a9074b630d4da29cda483337e300e3ee9",
|
||||||
|
"sha256:26c9d33f8e8b846d5a65dd068c14e04018d05533b348d9eaeef6c1bd787f9919",
|
||||||
|
"sha256:2b3fca8a5b00184828d12b073af4d0fc5fdd94b1632c2477526f6bd7842d700d",
|
||||||
|
"sha256:2beef57fb031dcc0dc8fa4fe297a742027b954949cabb52a2a376c144e5e6060",
|
||||||
|
"sha256:36340109af8da8805d8851ef1d74761b3b88e81a9bd80b290bbfed61bd2b4f75",
|
||||||
|
"sha256:3703fc9258a4a122d17043e57b35e5ef1c5a5837c3db8be396c82e04c1cf9b0f",
|
||||||
|
"sha256:3ced40d4e9e18242f70dd02d739e44698df3dcb010d31f495ff00a31ef6014fe",
|
||||||
|
"sha256:4a06263321dfd3598cacb252f51e521a8cb4b6df471bb12a7ee5cbab20ea9167",
|
||||||
|
"sha256:4eb8df4bf8d3d90d091e0146f6c28492b0be84da3e409ebef54349f71ed271ef",
|
||||||
|
"sha256:5d5244aabd6ed7f312268b9247be47343a654ebea52a60f002dc70c769048e75",
|
||||||
|
"sha256:64308ebc366a8ed63fd0bf426b6a9468060962f1a4339ab1074c228fa6ade8e3",
|
||||||
|
"sha256:6a3cdb4d9c70e6b8c0814239ead47da00934666f668426fc6e94cce869e13fd7",
|
||||||
|
"sha256:854ab91a2906ef29dc3925a064fcd365c7b4da743f84b123002f6139bcb3f8a7",
|
||||||
|
"sha256:94cc3c222bb9fb5a12e334d0479b97bb2df446fbe622b470928f5284ffca3f8d",
|
||||||
|
"sha256:96ca5482c3dbdd051bcd1fce8034603d6ebfc125a7bd59f55b40d8f5d246832b",
|
||||||
|
"sha256:a2bbc29fcb1771cd7b7425f98b05307776a6baf43035d3b80c4b0f29e9545186",
|
||||||
|
"sha256:a4cd6ed4a339c21f1d1b0fdf13426cb3b284555c27ac2f156dfdaaa7e16bfab0",
|
||||||
|
"sha256:aa18428111fb9a591d7a9cc1b48150097ba6a7e8299fb56bdf574df650e7d1f1",
|
||||||
|
"sha256:aa317b2325f7aa0a9471663e6093c210cb2ae9c0ad824732b307d2c51983d5b6",
|
||||||
|
"sha256:b04f5dc6b3efdaab541f7857351aac359e6ae3c126e2edb376929bd3b7f92d7e",
|
||||||
|
"sha256:b272d4cecc32c9e19911891446b72e986157e6a1809b7b56518b4f3755267523",
|
||||||
|
"sha256:b361d369fc7e5e1714cf827b731ca32bff8d411212fccd29ad98ad622449cc36",
|
||||||
|
"sha256:b96e7b9c624ef3ae2ae0e04fa9b460f6b9f17ad8b4bec6d7756510f1f6c0c841",
|
||||||
|
"sha256:baf8aab04a2c0e859da118f0b38617e5ee65d75b83795055fb66c0d5e9e9b818",
|
||||||
|
"sha256:bcc008217145b3d77abd3e4d5ef586e3bdfba8fe17940769f8aa09b99e856c00",
|
||||||
|
"sha256:bd3f0091e845164a20bd5a326860c840fe2af79fa12e0469a12768a3ec578d80",
|
||||||
|
"sha256:cc392fdcbd21d4be6ae1bb4475a03ce3b025cd49a9be5345d76d7585aea69440",
|
||||||
|
"sha256:d73a3abcac238250091b11caef9ad12413dab01669511779bc9b29261dd50210",
|
||||||
|
"sha256:f43740ab089277d403aa07567be138fc2a89d4d9892d113b76153e0e412409f8",
|
||||||
|
"sha256:f65738447676ab5777f11e6bbbdb8ce11b785e105f690bc45966574816b6d3ea",
|
||||||
|
"sha256:f79b231bf5c16b1f39c7f4875e1ded36abee1591e98742b05d8a0fb55d8a3eec",
|
||||||
|
"sha256:fe6b44fb8fcdf7eda4ef4461b97b3f63c466b27ab151bec2366db8b197387841"
|
||||||
|
],
|
||||||
|
"index": "pypi",
|
||||||
|
"markers": "python_version >= '3.9'",
|
||||||
|
"version": "==1.26.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"develop": {}
|
||||||
|
}
|
||||||
141
day_17/input.txt
Normal file
141
day_17/input.txt
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
124223341431231241232125113311132141242622413151336162425123616224422443661624336241465321661235163421625333241321313543325254114432334411141
|
||||||
|
314414312413111315445554231121544134261246142554656264256525333166254234251153113516514464332553633213534213313122143442534453121124144143423
|
||||||
|
223443441413434424232552335344144255254651515616226353645645242151321232511551225221326612311534431215246646224415432332431452254344311421114
|
||||||
|
413412123342352515522535113121431323543546626525145546331414663165662336446631641564566234534115215262515355355233454443443131313523123224232
|
||||||
|
323321323224253513232145233211266225346314655461124451122332626556547557545221454431524535236636432513345514415542533441415245335252241132221
|
||||||
|
321221243325452255121131552444555116333344542426525366616521774144465616711563536243461253161521434122212332543642331225524152423514112231423
|
||||||
|
122221121122121212211554212443433616546521135124226661215173467767564367611662133564576245551423552411333646413255253322212513424344413133444
|
||||||
|
212314212543123412154122133512261564446555155254115553634174757543743655561524621411714463523456211524223161416555151511523341115123223412234
|
||||||
|
432221441454424415512153561512322333653313552222117162376317131145547263543454715155411673531161142624525322266433265145222153122142343233142
|
||||||
|
334242355435432511115424254541463242445622124364432533255564656136744731633272627437414241473461435233564321234345643623232443251253553221214
|
||||||
|
334443211232542222311241552311455254323624133161476553342241471725343277631511476772374622434614152231656123231532444114613131424312424451321
|
||||||
|
121112334544144312324534451264415531445134576173644173674624547545474512336143427756464726526241643336226532644121535422131224454441552214342
|
||||||
|
234211133155545145533445633355223416356341326744214411773623533174616636765571553137444165776367635611162252464663534321556231314352131325523
|
||||||
|
334421144453535432311645345234555653215357732331675711355247514445536344544753276233222234263431467431254646543325536631341122252345133314132
|
||||||
|
232445225522142544532635221526312363134364115576725717774355372362573413313623377143414511752415245311227566444522631546223621424111512554314
|
||||||
|
342234431321514514315645625253665647476665664436215637547454451655162677317572632456437357443714377233122136161523622333412565551551541413211
|
||||||
|
114425335511122562623455416622436425632434724573613366111674156543325244383826764222743146443424463315543347263226421355163636321445443253341
|
||||||
|
313215354551332153231551231233651336425777416557274157417724368684844286362364482464826152321542415252322431673243546651541664622434542235412
|
||||||
|
534341532122543535351414322415635522333267575221745611843645285655464554746863687334352642131121231767722744767212161255664534631432542551315
|
||||||
|
415212155312455442522445244662761564731712476337611858574638776846647353378852827273652376231242445457513654731162365531535251622253445342212
|
||||||
|
222235455422341346363436162447723617134133256445785443522727533736243655747288457238845848355476432264473164223145763463563215564533124115444
|
||||||
|
111122332252622453414161252236773175742456761214475483623237782625335375632546582855385374572868227742245154723367516254465223435146511242445
|
||||||
|
142331353353113614315514656212535242642512654846646334476284748445642745358357423332243746335647226126222325715251247415552552626325631233531
|
||||||
|
224323252151625314544356331135276273255354645566652528856548684325688573548454565683352833635355865262414157547316442254152155615662433515131
|
||||||
|
211352333145224554243511731137261312735422832783665447836372483454454332677736873225686457263588624853114176255113446233133525365142611453545
|
||||||
|
135441324446151251323216514332122534417572472686676622726764846827572747258266275668758722456272783242874735534437574714466314233633166332134
|
||||||
|
155544452144446521236642224624525543415734266487238653623455277525788667478468884687537684737288865732354763564544461553245516345452251354452
|
||||||
|
335112535565323525222771766163326253686764636523234622466276288283694678655965833568643882786336362567783324523722215454723555165244116625453
|
||||||
|
233535162124223531144123614213131552772344878748453552853854949436943756373578396358558378625838373243726281513146267554274621236443256352413
|
||||||
|
321341636354436341276741453321457748357842276666387762853539598773395798478465585793357476752282655428547882712165646315714325513113114141522
|
||||||
|
433154422365316132716456433113241663528877422847483656769593743357593856795477794847764445727276676588345552733435444657261211643524451446332
|
||||||
|
344143655145531261545136321575245757325654638482632253463667575467377697976334666339343539553532274354824224642121251451735313261161616622335
|
||||||
|
214231352554165566146424426175762534583434378255424955438634745753346975668899375644547389737742247858223333836225617317211117161553453266155
|
||||||
|
341131416241542364115232423472223863485547555754566663959876944438755785898397934699936866784397258377865643486214521652514376352324645325114
|
||||||
|
432513261121412314437227731242868636727232775546946895434767497979775549945485739596766667496456624528686535376763261443136265246213416645461
|
||||||
|
246333536635311235664222367752485826263522887446899896847937648365357866678777437944779483885585362668888426582663614456621335771613444124643
|
||||||
|
322362164411165415142771227286454532462647624868334443454854566448494797765763554835944548657735869486466472543335333573755661733411542135122
|
||||||
|
331323245236343777744343147752687653886628946799857859767949853898589867585853334766499545995595639837652358583486322242142633714626442523356
|
||||||
|
512125523243136642547273113324224345866339347963654768883847995489989844897998588344595583666898794664546762475528722315636442436665253221351
|
||||||
|
132556151565372314456133676422786568342738375595543867574678686649865788987478986939999773847599588833864584575786443717161613453221113126646
|
||||||
|
125362626245115255665732423772487863275978439773359535754376658588779695484499856466487535354377988469765456385624423654252642126576636141335
|
||||||
|
525635331664371435722226655877642767665958887535345355745598658599648877546578455757473744987593766833474647882233343553172252567776111156346
|
||||||
|
661356356645115423142325364238737335857353659799353533975668647475754649966997759985569754697335899345478622778352635854214341331546621651226
|
||||||
|
643244225544667627621167345634233538285443979595966396888948667459565468697755869474487447737777588764586736836373754487633552322743442336315
|
||||||
|
251222146424354465244627442867757753689737553337777894579849965575449989958947474574864995983535867479657854776878677646466462222145233426424
|
||||||
|
351633633566642312771157545236477433588335533985449896989945757669864585954679556765477898845464366793733877554353557655214745367733315122541
|
||||||
|
235665533567114111266527755653764267388474983876547856594884575959859648445867945769899656484975785395547886445636834847227645116445151556263
|
||||||
|
132236212332154577423842742328533739959977385647485694476999794898966467895978697596476798946976749777786676437235332528337212715621671131666
|
||||||
|
146416441556326672255862463363445498577848348699648959454799899994945469554869464668648586584697496689548978378535746426867667234673361344554
|
||||||
|
543311111727523521634863644444228384835836333847556958764884784479657998988884579845499645568776477953559545547635425773836273421277111651451
|
||||||
|
226645527651734533443563732465433837438485947748688594867566584478796786969696644969956699767969576447945433395862277873734616215524515336353
|
||||||
|
511156321145113535767462882345826586864938644974848859895748745969568998766885668877765455444775993957748784946275544245336245375731251126363
|
||||||
|
643144321223571322555636864523559539944643865849499945998479978776899678887995575889847979468975674458537495973948383838333317655326131336415
|
||||||
|
223211122172141455562688543854435983877788576566454547499689686898558596879657685569898989858465448863734775486447373846433312642634651631141
|
||||||
|
651222413754124524885846756673664887574768779488775784789867699688889786656757679775977568786559798787844547696675773525663347534332227524115
|
||||||
|
643252614554343574846683575232673944997997899859667796845758957767567556656686587989879554898497946474565437795936765563366247763142313145313
|
||||||
|
365345324344564276586842787724359749995399986675994956487688776678895865655986588675576587748444456475868346499448475223355237741164127246356
|
||||||
|
411642375717126555755555675657989669973799857449676655567967577795957556569595598755966575974467776765784635934693752573428572355277637515225
|
||||||
|
364332461733575714722477848575793493366847856594885557767685785585985667867998598766899776874585578654578499954974467747868437143737726665336
|
||||||
|
261524221661724514684274563664955436538997746956487946796975877559899599999767795888956579899888744979598864587758787747637585734621714125246
|
||||||
|
665332656321655642824447235666499499777954787968754957686699569777955788976666695885857658699668867688559938344384332665458375713255315635545
|
||||||
|
432522242674427272834622642686975638395595855895944566755965575975968976696787878898878678768498994768855543993843472526446524334575212613434
|
||||||
|
523242463752262722425368424888693398474886455687784578979676885758669889987879677655889758796956474997675544889789464244322824365315662253213
|
||||||
|
442431421532652327454525657533997846379854985445677859669858969898977866789976687557978568755588747666578649435884888382584537531571335722134
|
||||||
|
435237532466775735682235732389344564948874987846756995678799885776887886687986786688979788896654499777493747744336557237265687866443173445533
|
||||||
|
642247736354411375867323832983379484785844876957985899799959569898989898988878667676977558585488695798953667889748672286243467762737521467645
|
||||||
|
516527775143615755252775532984973437885955558898888658887776996899799766898766879658875879888566776967499765848873756856455525737433356171621
|
||||||
|
111556426752343322837725375543983977846954589875765996977798789697869976776899997689975768667945798869858436343339475234647455413464522325614
|
||||||
|
652436276736172654447235835753676546567984796895667858587969887899886886776977796757988857796584764658774437684459638825524243623333313364234
|
||||||
|
524462145661234164255724574474867946634599596686776978899587596969688678886897777998776698998976655646859987746846352644426625461551523354712
|
||||||
|
265661522154563257586778268384363736754986748785966676577979796987969777797697977878558857599849579788489977756885665685574556266731272671541
|
||||||
|
622245565614427345443745543377476986857964946864797557989875666897966787966796879966858675957978749694766453775737362334586753457444731124755
|
||||||
|
651316613675756272833243328759543444948647687588996997559575999767967787999876686786877687556974996868944393877673952652448588325277551126365
|
||||||
|
314264634465765126365537226554789394835494457964677567596785666898689699687689778856959696678897979869548548948445698476355535864713576117551
|
||||||
|
551275612177446356484355784665994986844599667694878799688758566998888897797979667968585675689958694857664497984434966442226656337221137542444
|
||||||
|
311512162174165253832746487734986849485859558647799678958769767777796866788898698958677779898958588767669988443956355354642782561616754312453
|
||||||
|
232154741134271655433744277786983593875547946779786955896586598869899976668688769598676888789776854585546634836833346675765264416473664444634
|
||||||
|
355612321326252258335524577335589848648455985555878978858576667677778886888896969598755768876858498965896939865873932386473252357722446664532
|
||||||
|
335526135634254178552624772773869798377787595777675958966797759977878788666869987956797998885789887477597947738495744875372665326726373264414
|
||||||
|
256345233634136367683873467688845577694955774566945668875656978698888779966668997798888675884689997476768643387337386886284565827424747335361
|
||||||
|
662464562125316753536763576363978598455866448787474985989576588596697977688976689798555986985658859966796839579999635465684473221336465241425
|
||||||
|
666251736365551573366772736266357788635479688894497776888788987958986798878867978676576975794776856896848973883795365677664473272275314432113
|
||||||
|
213667747446764528444355874774579959355444699968647458689778896878695998999895776957596987948746647858647859783855366572264758762127121266544
|
||||||
|
156463241232113665823878745665443488666389556946887446987986897965579555768659755959588895446496875545968587677485844757487385715632734525362
|
||||||
|
415313345245276328254535738553896879848855644967574559955689869559668965978675598986575687964757658895553576557569764823235656115246627763614
|
||||||
|
156322545534123165836357788337955669679674596858757458596767555776686559955986699867595557864796988457388895357397852582344787432554746364265
|
||||||
|
244623125537127645485864444454784339676486476669969896958569576969959599759858795887865744456896649979888545337557225852443722571415331244212
|
||||||
|
556163265422555132644227652525597373367343664954647784645586965695595767857785697778899897876555988863676539776666828773656424764424562252366
|
||||||
|
324624577446232666583754287444753764484436965955746769948779766689899687958956565698859495889659744754747846538687732477458856112133675311552
|
||||||
|
415453241733471661163255326286857658673365664767947565978486779866965577955977588799579656648579546479778793474554653685468873535713327264315
|
||||||
|
455455572712174216455574637243493939434998455756945666648799558979878769899679966896688469944695497467499487959658682677674472275233224453116
|
||||||
|
134154357772221567365227388784883655378636544447548557844665969588767688866877785565555587868566679589394759759266865577235722773167227751266
|
||||||
|
133551517171342417658426726266555396543975974895578968958958656557575879785789658477579595845996774978749434846383376345262411722724735254642
|
||||||
|
641656251142725344125282535568876797796687975469684695845666894475699579789465654568895598747567935834476698887287382384522415222477224451631
|
||||||
|
666566651727735671766822425342686534775855493948989698754884884459697866774946994686879947465678787396855489733863787635652754664656616452664
|
||||||
|
151256441752223727122882372487348635375977398563694898868868844476658758995579589645466698487473796843468567766537248323582247652516234412311
|
||||||
|
236536456376433326223426632786766498384454378573844645747848575547669949645755699984887897547788847499533538764482758572612615626563226563153
|
||||||
|
565165211142515233567752348353435757793457575578689749599468774944486567577594758448795597678659877455553497622888458357614156152113636266542
|
||||||
|
553316423274226657427326826827258683846634933637363784656995875874795777956656749484584877937376535969937598756725736766217427315166513651532
|
||||||
|
621615335524576773445743473627862577769934334789894865555766699955479589654659964779769589586777453899558467265525782564753133753735332411425
|
||||||
|
326112262543362673374476425446378558689898769444787437768449796654954976969596776965557787663345955475859982664643556686535334577757116526332
|
||||||
|
522111341663171764151773747662458348834955963456743983677477574955678857795648789569655986488993835983369333653463386827772352135273251121211
|
||||||
|
642354353451452225721416227743734533263547954586748756937689685665568497856695746675556843447549576444775375654348548774473461552613244512421
|
||||||
|
256221412631222566142362275337473424742799789759475996354356946885459787678797787539938589347558378638567248375383385151357345422516623154656
|
||||||
|
565524136656554335247176438764862778462275959747574464564875843793799894765749697666784586688836374573867558378287462613517475555451151466136
|
||||||
|
334363212423117543621246616875327236724655758757366944364336349347967483968446877965374576885395899793632525542582364271463463115634412542344
|
||||||
|
435633463112455224253422432622578688885462639988456879389565767549873487634637957768864776995564959322463533745656735412343247267566425413544
|
||||||
|
534525515411454217362315612167376274756244254553687489967386765648897837699546565434493577534395798227857276872584446352234776415436552152432
|
||||||
|
113633315126144622432656524621884846875335558668678365934535659553584638756745788848346777454587468763364476727774377722165364426334551232243
|
||||||
|
434426131654445674356563745444273376576255365446957643865435374474386667554556649799488958963386274536584563784661672252373665646322463345453
|
||||||
|
452563662431635465536212555777285427634657847285453735454883377457554474895965664679583854874664246328837567332276623726722434463216163121122
|
||||||
|
543443361352625522452676644162438425538563843626746747586689333583365495694496768954596437727865846667454866844251662613637236433463561345152
|
||||||
|
515335164231564654521635364357375648443657224753465648938395379883649487663794438865388872826445656456445583333334247415745561243654225646414
|
||||||
|
333226564224213664372525544557676525547457526835522557826698869985553444368839537796893658354328858428885448177652435246743264614331416426133
|
||||||
|
323453353661466464615325654575136515566788233245547745374784976956643699894388676369636587475357528577585524111317574424473554441631444151242
|
||||||
|
224551132454263154332174473655531437464354354523773227532248372349975834469687383228272223234364675737543851323233631133113223363116256552444
|
||||||
|
153452536551225113526461263321545545435743333564768854757666685567275858683382834778487437522587485287465726551522312162136113635324646314131
|
||||||
|
431233143311151443423255163774657217222562777678566385528875636724858762274425546633283283753255775478641245166477733341441611631215466213455
|
||||||
|
334552342256442631216643614567547723733455574773888332664636757537585823765567745683637443465433242437566232775143377444422344222636334335354
|
||||||
|
311451245213532225114456365413467433122736523284774245652334826834267282872735767843878754434584346777616325322234762445166323536163633143145
|
||||||
|
452454312445452413135424121246725767624275663855428525752354342366754353233846245735548225756366472425533677346454471234236131525612352225122
|
||||||
|
224112121422441623332625233511571676262475565625625255422766662445528846864374435527573548235325221142557412315732253552133665122521434254115
|
||||||
|
513551453311422546355266364223156115432463356634575353643327725557523723426232643544868258535342326524257653665514261663446565443154211121441
|
||||||
|
314143242232135431665146244135633565131323651313566225844234653635332466663773372468745284865234663321534337222445136255214333644641242255145
|
||||||
|
255535151315224634141665155311151217152575713146347141273563766865487264758566574654658323463523561314764265644465643343464164251123313135122
|
||||||
|
511544435233135131464142154432116165155614754765716763715888548322677322224247222444776616231366121674724666626363131426454615264152111545523
|
||||||
|
415115114531533525464612635166314324166326621611414336231614226373427545625453243315134636244566237341723347544134542416241333321441151141311
|
||||||
|
432125311344134254254256543511125533646615663311742514421234665134136567235742141164436346213154546115151633334566165232641512215244352314325
|
||||||
|
322132113532351521434345341656543336674665321355325732756226463717643434232566534566514524577341113124375122525265621562112663223424232115223
|
||||||
|
341535513152131413455435431156261534126231121314721663265625573773616777747613617421535263511257237144153352665351424412346123134411243321423
|
||||||
|
322322431555115311133641514112321631642227671377522573654662215341136261126356117366475151667137663655251326532661455433665434513445131212214
|
||||||
|
222131245452524443525532644645412662213355426365211315561626111124276532342222672314766336267315112346216246464644522343253245111434135344312
|
||||||
|
313433453234251443321352641345243514361621251753625332242465255374374363656433635721515634555764431221331316246423326311315541331335531354214
|
||||||
|
131413225125211222111124252123133434615635343523516443257363322423761727244172274446232664374771515631451411346333536525511452552453115424122
|
||||||
|
121132445335133352145324464633243356464152311122717632345417325565674411235513333522474755776722251256551633564341126315241425545252144323441
|
||||||
|
323322241144321133555311556446454244655611366564433535172461427732255556225335133556516772464151341634322361631363662344214514432514454413143
|
||||||
|
422314231321512143542122224131124653154414252151122554526334315525711443672543324235753626153566245632426524565115352412125113342414323141213
|
||||||
|
331214442335143312511414325126126536411216515661443215562445513144122413146334126253541254416264416241331151323451455442351342551415224234422
|
||||||
|
314314233233533541213145453223466416416536543562533643664116115544327522537146351554533221136241165531221221232623235311341222543212142323331
|
||||||
|
142331213314333432515222225451424542313641313521414421611166254153446553141234513446165525326164252653523413531541213134222434452221333324232
|
||||||
|
244112212233331544312335514214224311526525524351665431666546465555324325253233552552456263343356255364435362124354421313123132324121421431124
|
||||||
1
day_17/input_test.txt
Normal file
1
day_17/input_test.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7
|
||||||
5
day_17/main.py
Normal file
5
day_17/main.py
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
import part1 as p1
|
||||||
|
import part2 as p2
|
||||||
|
|
||||||
|
# print(p1.run())
|
||||||
|
print(p2.run())
|
||||||
58
day_17/part1.py
Normal file
58
day_17/part1.py
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
def test(input, solution):
|
||||||
|
# print(f"Running input {input}")
|
||||||
|
result = process(input)
|
||||||
|
print(f"Solution was {result}")
|
||||||
|
assert result == solution
|
||||||
|
|
||||||
|
def run():
|
||||||
|
file = open("input.txt", "r")
|
||||||
|
return process(file.read()[:-1])
|
||||||
|
|
||||||
|
def neighbors(node, height, width):
|
||||||
|
(down, right) = node
|
||||||
|
current_neighbors = [("D", (down+1, right)), ("U", (down-1, right)), ("R", (down, right+1)), ("L", (down, right-1))]
|
||||||
|
if down == 0:
|
||||||
|
current_neighbors.remove(("U", (down-1, right)))
|
||||||
|
if down == height:
|
||||||
|
current_neighbors.remove(("D", (down+1, right)))
|
||||||
|
if right == 0:
|
||||||
|
current_neighbors.remove(("L", (down, right-1)))
|
||||||
|
if right == width:
|
||||||
|
current_neighbors.remove(("R", (down, right+1)))
|
||||||
|
return current_neighbors
|
||||||
|
|
||||||
|
def dijkstra(input):
|
||||||
|
down = len(input.split("\n")) - 1
|
||||||
|
right = len(input.split("\n")[0]) - 1
|
||||||
|
unvisited_nodes = {}
|
||||||
|
visited_nodes = {}
|
||||||
|
current_node = (0, 0, 0, 0) # x, y, direction of last move x, direction of last move y
|
||||||
|
unvisited_nodes[0, 0, 0, 0] = 0
|
||||||
|
# This is genius. Shamelessly stolen. Easy bounds checking by making a dict of indices -> scores
|
||||||
|
board = { (i,j): int(cell) for i,row in enumerate(input.split('\n')) for j,cell in enumerate(row) }
|
||||||
|
while unvisited_nodes:
|
||||||
|
current_node = sorted(unvisited_nodes.items(), key=lambda item: item[1])[0][0]
|
||||||
|
(x,y,dx_last,dy_last) = current_node
|
||||||
|
current_score = unvisited_nodes[current_node]
|
||||||
|
del unvisited_nodes[current_node]
|
||||||
|
if current_node[0] == down and current_node[1] == right: return current_score
|
||||||
|
if current_node in visited_nodes: continue
|
||||||
|
visited_nodes[current_node] = current_score
|
||||||
|
possible_directions = {(1,0), (-1,0), (0,1), (0,-1)} - {(dx_last,dy_last), (-dx_last,-dy_last)}
|
||||||
|
for (dx, dy) in possible_directions:
|
||||||
|
new_x, new_y, new_score = x, y, current_score
|
||||||
|
for _ in range(1,4):
|
||||||
|
new_x = new_x + dx
|
||||||
|
new_y = new_y + dy
|
||||||
|
if (new_x, new_y) in board:
|
||||||
|
new_score += board[new_x, new_y]
|
||||||
|
if (new_x, new_y, dx, dy) not in unvisited_nodes:
|
||||||
|
unvisited_nodes[(new_x, new_y, dx, dy)] = new_score
|
||||||
|
elif new_score < unvisited_nodes[(new_x, new_y, dx, dy)]:
|
||||||
|
unvisited_nodes[(new_x, new_y, dx, dy)] = new_score
|
||||||
|
return int("inf")
|
||||||
|
|
||||||
|
|
||||||
|
def process(input):
|
||||||
|
sol = dijkstra(input)
|
||||||
|
return sol
|
||||||
59
day_17/part2.py
Normal file
59
day_17/part2.py
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
def test(input, solution):
|
||||||
|
# print(f"Running input {input}")
|
||||||
|
result = process(input)
|
||||||
|
print(f"Solution was {result}")
|
||||||
|
assert result == solution
|
||||||
|
|
||||||
|
def run():
|
||||||
|
file = open("input.txt", "r")
|
||||||
|
return process(file.read()[:-1])
|
||||||
|
|
||||||
|
def neighbors(node, height, width):
|
||||||
|
(down, right) = node
|
||||||
|
current_neighbors = [("D", (down+1, right)), ("U", (down-1, right)), ("R", (down, right+1)), ("L", (down, right-1))]
|
||||||
|
if down == 0:
|
||||||
|
current_neighbors.remove(("U", (down-1, right)))
|
||||||
|
if down == height:
|
||||||
|
current_neighbors.remove(("D", (down+1, right)))
|
||||||
|
if right == 0:
|
||||||
|
current_neighbors.remove(("L", (down, right-1)))
|
||||||
|
if right == width:
|
||||||
|
current_neighbors.remove(("R", (down, right+1)))
|
||||||
|
return current_neighbors
|
||||||
|
|
||||||
|
def dijkstra(input):
|
||||||
|
down = len(input.split("\n")) - 1
|
||||||
|
right = len(input.split("\n")[0]) - 1
|
||||||
|
unvisited_nodes = {}
|
||||||
|
visited_nodes = {}
|
||||||
|
current_node = (0, 0, 0, 0) # x, y, direction of last move x, direction of last move y
|
||||||
|
unvisited_nodes[0, 0, 0, 0] = 0
|
||||||
|
# This is genius. Shamelessly stolen. Easy bounds checking by making a dict of indices -> scores
|
||||||
|
board = { (i,j): int(cell) for i,row in enumerate(input.split('\n')) for j,cell in enumerate(row) }
|
||||||
|
while unvisited_nodes:
|
||||||
|
current_node = sorted(unvisited_nodes.items(), key=lambda item: item[1])[0][0]
|
||||||
|
(x,y,dx_last,dy_last) = current_node
|
||||||
|
current_score = unvisited_nodes[current_node]
|
||||||
|
del unvisited_nodes[current_node]
|
||||||
|
if current_node[0] == down and current_node[1] == right: return current_score
|
||||||
|
if current_node in visited_nodes: continue
|
||||||
|
visited_nodes[current_node] = current_score
|
||||||
|
possible_directions = {(1,0), (-1,0), (0,1), (0,-1)} - {(dx_last,dy_last), (-dx_last,-dy_last)}
|
||||||
|
for (dx, dy) in possible_directions:
|
||||||
|
new_x, new_y, new_score = x, y, current_score
|
||||||
|
for i in range(1,11):
|
||||||
|
new_x = new_x + dx
|
||||||
|
new_y = new_y + dy
|
||||||
|
if (new_x, new_y) in board:
|
||||||
|
new_score += board[new_x, new_y]
|
||||||
|
if i >= 4:
|
||||||
|
if (new_x, new_y, dx, dy) not in unvisited_nodes:
|
||||||
|
unvisited_nodes[(new_x, new_y, dx, dy)] = new_score
|
||||||
|
elif new_score < unvisited_nodes[(new_x, new_y, dx, dy)]:
|
||||||
|
unvisited_nodes[(new_x, new_y, dx, dy)] = new_score
|
||||||
|
return int("inf")
|
||||||
|
|
||||||
|
|
||||||
|
def process(input):
|
||||||
|
sol = dijkstra(input)
|
||||||
|
return sol
|
||||||
32
day_17/test.py
Normal file
32
day_17/test.py
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
import part1
|
||||||
|
import part2
|
||||||
|
|
||||||
|
# RRDRRRURRRDDRRDDRDDDRDDDLDDR
|
||||||
|
|
||||||
|
part1.test("""2413432311323
|
||||||
|
3215453535623
|
||||||
|
3255245654254
|
||||||
|
3446585845452
|
||||||
|
4546657867536
|
||||||
|
1438598798454
|
||||||
|
4457876987766
|
||||||
|
3637877979653
|
||||||
|
4654967986887
|
||||||
|
4564679986453
|
||||||
|
1224686865563
|
||||||
|
2546548887735
|
||||||
|
4322674655533""", 102)
|
||||||
|
|
||||||
|
part2.test("""2413432311323
|
||||||
|
3215453535623
|
||||||
|
3255245654254
|
||||||
|
3446585845452
|
||||||
|
4546657867536
|
||||||
|
1438598798454
|
||||||
|
4457876987766
|
||||||
|
3637877979653
|
||||||
|
4654967986887
|
||||||
|
4564679986453
|
||||||
|
1224686865563
|
||||||
|
2546548887735
|
||||||
|
4322674655533""", 94)
|
||||||
Reference in New Issue
Block a user