From 9594c294676a926847c3021758df43b4d874f318 Mon Sep 17 00:00:00 2001 From: Christian Date: Thu, 21 Dec 2023 17:37:32 +0100 Subject: [PATCH] Up to Day 21 (excluding day 16) --- Cargo.lock | 238 +++++++++ Cargo.toml | 5 + data/06.in | 2 + data/07.in | 1000 +++++++++++++++++++++++++++++++++++ data/08.in | 748 ++++++++++++++++++++++++++ data/09.in | 200 +++++++ data/10.in | 140 +++++ data/11.in | 140 +++++ data/12.in | 1000 +++++++++++++++++++++++++++++++++++ data/13.in | 1295 ++++++++++++++++++++++++++++++++++++++++++++++ data/14.in | 100 ++++ data/15.in | 1 + data/17.in | 141 +++++ data/18.in | 694 +++++++++++++++++++++++++ data/19.in | 777 ++++++++++++++++++++++++++++ data/20.in | 58 +++ data/21.in | 131 +++++ flake.nix | 2 + src/bin/day05.rs | 2 +- src/bin/day06.rs | 39 ++ src/bin/day07.rs | 142 +++++ src/bin/day08.rs | 49 ++ src/bin/day09.rs | 48 ++ src/bin/day10.rs | 184 +++++++ src/bin/day11.rs | 43 ++ src/bin/day12.rs | 99 ++++ src/bin/day13.rs | 47 ++ src/bin/day14.rs | 104 ++++ src/bin/day15.rs | 46 ++ src/bin/day17.rs | 78 +++ src/bin/day18.rs | 56 ++ src/bin/day19.rs | 160 ++++++ src/bin/day20.rs | 175 +++++++ src/bin/day21.rs | 160 ++++++ 34 files changed, 8103 insertions(+), 1 deletion(-) create mode 100644 data/06.in create mode 100644 data/07.in create mode 100644 data/08.in create mode 100644 data/09.in create mode 100644 data/10.in create mode 100644 data/11.in create mode 100644 data/12.in create mode 100644 data/13.in create mode 100644 data/14.in create mode 100644 data/15.in create mode 100644 data/17.in create mode 100644 data/18.in create mode 100644 data/19.in create mode 100644 data/20.in create mode 100644 data/21.in create mode 100644 src/bin/day06.rs create mode 100644 src/bin/day07.rs create mode 100644 src/bin/day08.rs create mode 100644 src/bin/day09.rs create mode 100644 src/bin/day10.rs create mode 100644 src/bin/day11.rs create mode 100644 src/bin/day12.rs create mode 100644 src/bin/day13.rs create mode 100644 src/bin/day14.rs create mode 100644 src/bin/day15.rs create mode 100644 src/bin/day17.rs create mode 100644 src/bin/day18.rs create mode 100644 src/bin/day19.rs create mode 100644 src/bin/day20.rs create mode 100644 src/bin/day21.rs diff --git a/Cargo.lock b/Cargo.lock index 493e2d2..0f0a41a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,18 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "ahash" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + [[package]] name = "aho-corasick" version = "1.1.2" @@ -11,6 +23,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + [[package]] name = "anyhow" version = "1.0.75" @@ -22,15 +40,192 @@ name = "aoc-2023" version = "0.1.0" dependencies = [ "anyhow", + "gcd", + "hashbrown", + "itertools", + "ndarray", + "num", "regex", ] +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" + +[[package]] +name = "gcd" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" + +[[package]] +name = "hashbrown" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +dependencies = [ + "ahash", + "allocator-api2", +] + +[[package]] +name = "itertools" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0" +dependencies = [ + "either", +] + +[[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 = "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 = "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.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[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 = "regex" version = "1.10.2" @@ -59,3 +254,46 @@ name = "regex-syntax" version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "syn" +version = "2.0.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c8b28c477cc3bf0e7966561e3460130e1255f7a1cf71931075f1c5e7a7e269" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "zerocopy" +version = "0.7.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/Cargo.toml b/Cargo.toml index 0c835e1..8c1e263 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,4 +7,9 @@ edition = "2021" [dependencies] anyhow = "1.0.75" +gcd = "2.3.0" +hashbrown = "0.14.3" +itertools = "0.12.0" +ndarray = "0.15.6" +num = "0.4.1" regex = "1.10.2" diff --git a/data/06.in b/data/06.in new file mode 100644 index 0000000..27b64c4 --- /dev/null +++ b/data/06.in @@ -0,0 +1,2 @@ +Time: 58 81 96 76 +Distance: 434 1041 2219 1218 diff --git a/data/07.in b/data/07.in new file mode 100644 index 0000000..564f3ec --- /dev/null +++ b/data/07.in @@ -0,0 +1,1000 @@ +T33AA 613 +J5JJ5 411 +J4444 240 +T5K98 463 +7Q6K2 4 +772T2 730 +23228 608 +T254A 212 +TJ584 169 +5T555 349 +5A5A5 539 +66K55 341 +7TJK2 70 +Q9999 763 +555J7 359 +A2Q22 607 +699J6 922 +QQQ66 110 +K9KKK 225 +Q646Q 96 +AJ66A 51 +6J234 615 +QAAAQ 723 +99992 453 +77666 497 +8TKQ7 325 +88988 842 +8724K 89 +QJQ53 626 +A5AKA 145 +25TT2 267 +22T69 414 +63A7Q 941 +69655 461 +QT7T3 648 +82929 121 +424Q2 846 +53935 224 +633TJ 619 +42494 85 +39J35 661 +9J449 596 +TTATT 74 +KK88K 219 +99696 811 +33347 916 +6AJJA 716 +24334 281 +T3TTJ 472 +T6TJK 952 +32883 378 +A9J5T 934 +99888 103 +688QQ 836 +45J97 152 +KQJK5 80 +26QKK 499 +3333J 138 +22JQ8 789 +T66TT 475 +9JQA2 511 +356A8 462 +Q8AQQ 148 +6AT95 696 +3752Q 58 +5K88T 270 +TAAA5 793 +J7479 647 +444QQ 853 +83922 584 +34T72 114 +8T23A 546 +999J6 269 +895K9 203 +J58T8 831 +8AK44 875 +A3333 531 +29K67 604 +J9K97 680 +A7AAA 286 +8927T 717 +7KKK8 492 +98839 64 +63K83 444 +QJ2QQ 882 +J828J 769 +3A77A 217 +T9228 266 +73A44 250 +2KK7Q 39 +44KA5 708 +K8K64 535 +3AA9A 981 +KT6TK 825 +4T6TJ 503 +632TK 948 +QT869 813 +24249 348 +A3Q8A 519 +T6385 291 +935Q4 543 +88585 796 +49777 244 +Q3J33 971 +T5J44 868 +99797 319 +88J2K 627 +224JT 571 +J45A4 216 +76847 130 +4922A 263 +66Q49 991 +22J32 823 +48675 277 +AT9QT 153 +86848 232 +QQK6J 669 +K22JK 662 +28TKJ 737 +QJ88Q 745 +39338 177 +TQ5Q4 624 +4J549 752 +AQJT3 228 +736Q6 392 +22A3A 656 +7KK27 724 +4K444 826 +85888 347 +7746J 639 +67777 822 +K9989 671 +5T267 659 +KKTKK 815 +92279 541 +47422 82 +9T3TJ 26 +TTK7Q 13 +Q9J9Q 625 +T495Q 798 +794T6 963 +99TT9 508 +27433 32 +29282 260 +28Q82 521 +95449 756 +28666 191 +A84QT 616 +292Q2 282 +K4JQ5 442 +T3883 866 +66TKT 918 +44KK7 892 +T5T9A 122 +77J79 635 +447J7 273 +8448T 598 +29JTT 5 +33KJT 7 +52454 634 +99A9A 527 +228TQ 747 +3J3AT 715 +QQ6QQ 421 +65KK3 750 +9KK4J 970 +4K769 201 +2255K 183 +95598 564 +7797Q 94 +84442 706 +T28AA 832 +TT949 498 +8669J 218 +5262A 454 +3829J 593 +2J74J 47 +76K95 940 +99899 695 +K252K 298 +AT6K3 173 +T4A22 409 +85558 555 +5TJJT 930 +Q79KA 477 +J83JQ 185 +57J87 630 +JJJ44 643 +JAAAA 787 +6J344 684 +A7J7K 415 +TKATT 242 +K7JA6 873 +22999 170 +T73K6 664 +696T2 699 +9KK9K 707 +J55J9 645 +5Q555 691 +9JJ95 81 +A75J2 621 +KK6K4 274 +92T92 436 +66555 614 +47J69 924 +58A85 673 +6666K 709 +24A8J 220 +3T779 481 +AK478 479 +9QTT9 120 +95Q78 227 +67469 71 +KK9KJ 268 +62599 72 +73733 147 +KJQQQ 761 +33335 294 +355T5 777 +93T62 550 +5777Q 526 +JAJK7 25 +AAA8A 510 +9JTT4 457 +A9AKA 711 +K333K 426 +QQ22Q 222 +8J7K3 986 +KK8TA 894 +6TJQ6 722 +A44KA 418 +794TA 272 +JT5J6 814 +T5328 686 +AA2AA 28 +K39A3 160 +T9A67 382 +JJJJJ 917 +2424J 666 +745AA 312 +4K56K 383 +3K25A 712 +88QQ5 76 +927QT 570 +7K249 288 +5565J 252 +4QQ4T 651 +QQ666 435 +2Q262 967 +K59AQ 175 +K2K26 402 +89J64 188 +8K866 379 +A69J5 331 +77474 504 +AK4A8 352 +T5TKQ 563 +4Q23K 578 +226J2 966 +Q93A5 590 +28T25 505 +6A49T 512 +TTT8T 513 +24342 500 +82882 48 +37JA9 432 +596J8 259 +93993 207 +6A636 629 +TQKKT 938 +66786 433 +96976 243 +A6J33 88 +TATA4 12 +9A999 365 +5623J 292 +6K6KK 158 +6T665 441 +3Q57Q 3 +64644 898 +68888 223 +J8889 14 +T4J6J 360 +J7773 357 +QA4AQ 601 +83A62 812 +QJ7J7 434 +QTK86 705 +5T885 896 +A9575 261 +A95AT 164 +AJJ68 583 +KQJ2Q 742 +7JQ79 518 +T27JJ 317 +QTTTT 586 +5677Q 146 +42442 797 +4AT7T 490 +88JTT 59 +77T77 253 +88JAA 37 +3T633 221 +K28KK 395 +2J22K 1000 +66T54 416 +K2KKK 264 +248Q5 989 +88A87 390 +555JJ 890 +22662 556 +54J54 559 +22264 179 +TA253 694 +TTT9T 27 +3A9K2 861 +Q87QJ 600 +A7K4J 190 +99J99 239 +5JA64 725 +28TAQ 530 +69Q6Q 314 +46443 620 +9Q993 256 +J7K47 482 +26J66 108 +J5855 978 +4QJQK 720 +44449 790 +T5JTT 912 +773TT 862 +9J6K8 340 +K77QQ 744 +T94J4 878 +J2K9T 305 +TTT22 692 +4J877 284 +QJQQQ 487 +3Q39Q 641 +22KKK 494 +8JQK5 591 +J99J2 937 +K3845 19 +55755 278 +82AT8 721 +J6666 323 +K2K6K 77 +T3QJ8 358 +KQTKK 837 +222QQ 968 +263Q3 655 +99222 582 +555KQ 877 +TJTJ4 663 +3KQ4T 985 +268Q4 214 +AAJJA 872 +K444K 9 +89J8Q 753 +22488 144 +Q82J8 734 +54545 20 +99JQJ 886 +88TTA 129 +22525 287 +52A99 182 +8654T 575 +T9572 731 +AQAJQ 611 +8AT45 420 +99934 393 +J5KJK 580 +43A4J 529 +48465 450 +36AA6 998 +KT2JQ 927 +65Q78 488 +89T5A 33 +72AA7 623 +7777J 406 +JQ999 16 +42TK6 729 +Q2QQQ 949 +8J3JK 560 +32323 438 +6687Q 53 +7A7A7 166 +8Q5Q5 828 +899QK 867 +JK4A5 87 +3A33Q 788 +4Q734 821 +33JJJ 746 +7TAAA 118 +AA44J 538 +5JJ8T 931 +JTQ6T 155 +J5555 493 +2AA5T 301 +72732 78 +KTJ7T 255 +KAAAJ 906 +63QQ7 443 +T2653 2 +3Q334 728 +T4J67 205 +7QT86 926 +4J4K4 495 +A7227 68 +69984 786 +2J95A 757 +94AAQ 380 +T2J5A 198 +J5995 22 +54444 91 +K3QA5 840 +4TT44 396 +88883 194 +77722 136 +9A9T6 502 +K54KK 176 +73878 549 +87JA5 758 +KK555 38 +34A44 689 +436K9 123 +9A286 391 +66A56 215 +9QQK9 63 +99392 887 +99994 817 +A9229 125 +446A3 921 +QAAA9 113 +222TT 295 +66227 262 +QTTAA 804 +362A4 417 +AQAAA 976 +5535J 809 +8858T 69 +745QA 486 +62626 928 +92Q2T 558 +55889 445 +QJ857 465 +QQ99Q 925 +69657 576 +33KKK 478 +33QKQ 448 +744AA 300 +36363 322 +2TTJT 785 +QQ8QQ 776 +AQ2K7 740 +J666J 425 +7463Q 79 +TQQQQ 933 +6898J 710 +7Q629 36 +55Q5J 141 +3A7AJ 302 +2K229 458 +JJ999 929 +2J222 368 +55577 167 +5A8J2 960 +74434 806 +3JQ3Q 904 +44884 848 +AATAK 864 +8833Q 67 +788J8 738 +49443 741 +TJTTJ 603 +9999K 11 +43JAA 399 +Q8Q98 953 +996T9 779 +J92AA 171 +4A339 439 +7QJ67 102 +5T52T 446 +9T555 735 +37582 162 +9949T 714 +62444 124 +KTTKT 506 +Q7TK4 473 +4A4J4 983 +K8QT5 587 +9Q299 572 +J252J 683 +23T4Q 181 +Q96AT 820 +8J47J 841 +TA9TA 318 +A58TT 654 +5555K 895 +24372 154 +TTTJT 977 +88285 805 +2T8J4 367 +A7AA7 818 +TT44J 964 +Q799Q 573 +KJQ8Q 829 +2JT23 592 +9A9AJ 585 +J799T 883 +AATTA 568 +39395 289 +A8557 553 +TKTTT 115 +5AA35 132 +T67Q6 507 +KJ773 844 +J39AK 371 +444TJ 397 +7548K 958 +6676J 192 +22822 275 +4J343 638 +93JAQ 525 +TA34K 229 +T44KK 408 +2J229 381 +49JJJ 657 +622K2 364 +66654 111 +KKK4T 394 +35885 551 +J49J9 363 +99567 542 +K49JA 957 +55335 713 +K5577 431 +69987 66 +J9KAK 557 +297A8 994 +799AJ 299 +K3647 276 +33KQ4 988 +8J338 332 +5368J 469 +66AK4 168 +8T688 135 +KK698 336 +7TJ77 987 +TAT43 748 +6K466 703 +TQ567 845 +94998 55 +32363 233 +K2J28 835 +383J3 99 +7629A 65 +4447A 178 +TJTKK 134 +5TTQ5 324 +7KQK7 681 +87877 196 +82282 419 +23TTJ 165 +A888A 850 +7945T 474 +6K339 231 +A5A2K 577 +97A39 491 +766JA 139 +AK73A 951 +3AA99 794 +8JQ47 484 +4QQ47 956 +8ATJA 857 +9KK8Q 57 +6K6K2 675 +Q3QKQ 515 +93J8T 483 +66J46 489 +7QQQ7 765 +T2T45 6 +JA2AJ 992 +434K9 356 +K85TK 610 +QK543 485 +23232 204 +222Q2 697 +668T8 8 +TTJAT 236 +5KKKK 852 +666QJ 876 +84544 579 +9T43Q 93 +53424 561 +7KA42 471 +5J3A5 246 +QKK6Q 567 +3T33J 362 +5967J 827 +3333Q 801 +97832 290 +89299 802 +ATJQ5 727 +22924 954 +8J888 676 +32396 90 +3533K 384 +977T7 910 +TQ4TT 678 +84K44 310 +T8T67 116 +A72K5 839 +TTJTK 100 +A8A6A 133 +A3384 751 +J77J7 733 +A4TJ4 60 +53974 640 +749TK 501 +TT333 516 +6TQQK 387 +T4QT4 112 +747J7 863 +J3868 97 +93K33 995 +8K888 468 +72777 754 +8QQ8Q 803 +48T59 107 +T9TQQ 451 +33JJ3 900 +TT6TT 783 +3JA73 375 +59235 644 +3322Q 781 +T7TTT 843 +KKK68 372 +QAQ5T 52 +7K2KK 528 +J2A82 106 +A5J7A 385 +758Q7 524 +62767 333 +8JAQ2 901 +674AQ 186 +A9T34 10 +3K333 562 +39433 935 +QQQQ5 633 +38Q55 234 +555JK 337 +KKKQ9 407 +QTTQQ 388 +66AQ7 701 +25AA5 338 +QA397 29 +44424 979 +A4JQJ 685 +Q8888 30 +333J6 328 +KKKK3 913 +33897 343 +AATA8 606 +845QJ 589 +93733 98 +4J338 536 +J8488 313 +33T33 49 +7TKTK 280 +QAQQQ 374 +TT7T7 235 +944T9 335 +4KAKA 386 +A8A48 959 +67647 1 +66466 456 +2JT77 35 +Q4QQQ 547 +3J8AA 800 +T5444 354 +7732J 514 +KKTAA 311 +8JJJA 792 +75KKK 427 +JT2K3 137 +K354A 540 +T5TTT 424 +7Q594 303 +J6J6J 642 +65384 914 +5A8AA 189 +82249 984 +8Q76K 140 +875KJ 565 +QJA23 40 +QQ82Q 946 +94T28 258 +7222T 636 +6A9K2 127 +J7725 452 +56656 351 +99969 447 +K3Q63 92 +QJJ58 370 +24368 854 +JJ9K9 612 +8J3J8 833 +88QQ8 321 +JT479 736 +522J6 889 +Q57JT 202 +A5KJT 83 +TTTAA 285 +2A2AA 326 +TQT4A 149 +93333 353 +KKKJK 693 +828J8 62 +95544 860 +2JJJ9 480 +33666 574 +KQ293 915 +888T8 31 +762AJ 637 +43483 599 +46544 377 +8A588 43 +TT35T 668 +59795 226 +2KKKJ 509 +QT492 865 +J3634 945 +88877 279 +49J26 423 +Q838T 307 +A73A3 780 +J3J36 955 +45655 771 +752A4 888 +6A4AA 84 +62Q5J 665 +A222A 858 +QQQQ7 773 +JJJJ8 943 +5AAAA 520 +28696 389 +J9939 15 +57385 618 +2T4J9 874 +99K9K 199 +39749 455 +94273 719 +88358 849 +74TTQ 17 +JK6AQ 117 +K7525 75 +3Q2A6 760 +2J969 460 +55QJT 464 +T2222 544 +9898T 595 +J6866 982 +QJQ54 467 +66996 962 +2552Q 532 +66QQJ 939 +QK477 41 +838J8 755 +5969Q 622 +32555 739 +5TQ79 602 +63979 871 +J3AA3 808 +TTJJJ 791 +88284 923 +666T6 554 +4J4AQ 193 +QT32K 672 +KTA96 403 +TT4TT 251 +5AA86 942 +7373J 950 +45QT8 581 +99Q7J 413 +2662K 838 +77J55 880 +Q8393 157 +KAAAA 936 +T7QKK 329 +JKQAK 412 +22242 45 +7T5T8 105 +5A69K 881 +TJAAA 316 +4A36A 911 +5JJ66 265 +48884 766 +TA385 605 +7A72J 762 +43A3A 652 +24K4Q 195 +67K5T 632 +55TT5 919 +T686T 617 +83667 306 +T6TA6 932 +QJ746 430 +29TQK 772 +63J38 18 +QT2J5 449 +79737 893 +79J8J 104 +Q762J 180 +7J433 996 +9K6K6 34 +K972Q 552 +57877 702 +4AQJA 851 +23337 768 +TTJ67 376 +66686 320 +KA7KA 847 +444AA 210 +58226 346 +AJK22 649 +6AJJ6 631 +TJJT9 698 +T583K 42 +2Q2JQ 334 +99KK8 24 +QQQJJ 770 +J9599 879 +K6287 646 +AA858 891 +3TT3T 400 +5K982 537 +5764T 315 +A8828 73 +TQ8AT 980 +83J27 197 +778KA 594 +335T6 257 +3Q925 670 +5KJKK 237 +8TKJ4 660 +A8AA3 679 +8Q889 131 +726T2 174 +QQ8T8 682 +36436 126 +5J329 21 +J8A9J 920 +JQA95 855 +9Q263 653 +K2555 297 +65J33 990 +2A49T 163 +AQTK2 903 +TK7TT 366 +6A2J4 870 +55534 704 +66469 588 +5K5KK 172 +6AT3A 293 +A5AA9 440 +685Q3 885 +T5A97 767 +K6258 466 +4Q28A 726 +7T555 404 +7KKKK 345 +JJJ88 330 +222KK 496 +ATJQJ 690 +QT563 308 +Q48KQ 206 +TTJT8 209 +TTT3T 522 +82878 405 +JA37T 628 +3T878 159 +77Q96 597 +K9488 245 +J8448 972 +69743 254 +J72Q5 369 +69666 749 +2KTAA 373 +JK556 816 +43833 230 +42242 743 +A28T5 775 +K585J 361 +Q4433 119 +333J4 344 +3A7T9 961 +JT236 249 +84899 807 +TT99K 830 +AAJ2A 50 +36333 429 +9K9KA 869 +J2777 774 +4455T 150 +3KQ87 718 +AAKKJ 247 +94K94 271 +J2759 46 +32495 899 +4T68Q 156 +6JA66 428 +QQ464 213 +9T92J 248 +K7QA8 459 +KJJKK 523 +22JJ2 534 +J96Q6 884 +4K4KJ 327 +66777 109 +K6336 908 +2Q2TT 200 +98494 907 +74547 401 +959J6 545 +444T4 947 +32222 56 +3K66K 834 +AKAAK 859 +3Q3QQ 688 +Q4Q4Q 759 +JJ667 974 +TAQTJ 969 +97474 86 +87K49 142 +J6T77 241 +T99J6 677 +67666 810 +J9K38 784 +24JJ4 410 +A73T6 569 +77377 856 +74784 973 +496JK 339 +2T7KQ 184 +Q52Q8 905 +47AA3 161 +836TK 476 +KT2TT 517 +77QK7 309 +4344J 208 +45J55 824 +57757 355 +J22J3 609 +9AJA7 658 +293T9 993 +66499 674 +7Q777 650 +TA4J3 296 +QQKQQ 304 +48944 799 +25TKJ 342 +T4TT4 795 +88TT8 128 +8A787 187 +K9KK6 44 +64A48 965 +K84KJ 143 +78A5T 548 +66636 23 +Q737Q 470 +83A2J 211 +3Q8K8 902 +T655T 54 +54745 398 +QA869 422 +893AQ 909 +K66J6 819 +99J86 997 +99A9J 95 +44237 566 +3J2T3 975 +J5223 732 +97J7J 778 +67QQ6 350 +7444Q 944 +69Q4A 764 +5TT8T 533 +52242 999 +K5KJ5 687 +JJ87K 667 +TTT2T 283 +QKKKK 437 +J9555 151 +53335 238 +55554 700 +7A6TQ 101 +57AJQ 897 +83485 782 +K7773 61 diff --git a/data/08.in b/data/08.in new file mode 100644 index 0000000..9bf3e0b --- /dev/null +++ b/data/08.in @@ -0,0 +1,748 @@ +LLLRLRLRLLRRRLRRRLRRRLLLRLRLLRRLLRRLRLRLLRLRLRRLLRRRLRLLRRLRRRLRRLLLRRRLRRRLRRRLLLLRRLRRRLRLRRRLRRLLRLRLRRRLRRRLRRLRRRLLLLLLRLRRRLLLLRLRRRLRRRLRLRRLRLRLRLRLRRRLLRRLRLRRLRRLRRLLRLLLRRLRLLRRLRLRRLRRRLRRLLRLRLRLRRLLRLLRRLLLRLRLRRRLRRLLRRRLRLRLRRLLRLRLRLRRLRLRLRRLRRLLRRLRRRLRRRLLLRRRR + +MQF = (DDG, LSH) +QJP = (PCT, XKJ) +JXF = (PMG, NBN) +JCK = (QCD, NRG) +LPD = (NTM, NTM) +DLN = (TXM, QRG) +MTG = (KGC, DMM) +KFV = (FXH, QLX) +SCJ = (HQH, XSD) +JKJ = (PMX, MHH) +SJK = (JXM, GRQ) +CJZ = (DPF, RMT) +QXM = (HGC, SMX) +XJS = (NRV, CCL) +QLB = (RCH, QVQ) +KDB = (QKT, BJB) +FCX = (DXG, SGQ) +PCT = (DXR, PTS) +MGJ = (FKF, HNG) +VBN = (RBK, JPL) +TRH = (SRT, VJV) +PGK = (SNP, QLP) +XVK = (KFK, QQC) +SXC = (XTB, DPQ) +HNG = (VXF, MVH) +QHT = (TTD, LBH) +LMK = (QQT, QTP) +DXR = (KCT, KQS) +FSA = (RXT, BLP) +GHK = (JMM, VBN) +DMM = (VQM, LTG) +FBQ = (FSV, GHJ) +KCN = (QVR, TDG) +KBF = (XNM, HBL) +KJP = (FKG, CJZ) +JLH = (CKG, XLV) +RJX = (KKN, RJH) +PFS = (BVC, SXR) +DHM = (HXV, FRV) +KFK = (PLL, GQC) +CNB = (KNS, HVP) +DDG = (QTS, VRJ) +QVT = (JCK, DJQ) +LRB = (TXD, MPR) +DMS = (QVD, MFS) +PMJ = (LNN, NPJ) +BXD = (MLL, QKQ) +DGF = (FMX, PKP) +RHQ = (RJH, KKN) +MRG = (TNN, LLX) +BBM = (VFP, VGF) +PLP = (BBK, KFX) +RSN = (SBN, DQF) +XTP = (HMT, XNV) +LLX = (KBF, TDV) +KHR = (QGL, NCM) +PFB = (SXR, BVC) +NKP = (JTF, BJH) +RPH = (RSN, VBM) +HBL = (LVT, JXF) +CBC = (LRB, QGN) +FXH = (GCH, KBD) +QTF = (KVL, DLS) +RPQ = (FJB, RMD) +SLD = (MSH, NSN) +PXF = (QXM, HDF) +QBJ = (RDQ, DJH) +QPH = (RKJ, CSC) +TVF = (JMC, MTV) +MJM = (DLM, BQS) +XQV = (LCD, QCL) +KQH = (SJK, BPR) +CSC = (BLD, PDP) +BLP = (XVK, LJB) +BBK = (DJT, LLJ) +PSH = (GQH, RBQ) +RMD = (XQV, KFT) +TJJ = (QLV, HPG) +STS = (BSB, TMP) +FPN = (TCK, GLD) +JPF = (VCS, CMQ) +NVX = (TLD, GMD) +XLV = (LKV, QNK) +GSF = (CKS, BVB) +QHR = (KTV, KPG) +JRX = (FPN, DTC) +KGC = (VQM, LTG) +SSK = (NHP, NHP) +GLN = (RMX, NGG) +NPJ = (QRV, KTB) +PCP = (XSF, BPL) +JTF = (LSL, BHB) +TDV = (HBL, XNM) +FKV = (JVF, HKK) +GSG = (QJP, CLF) +QNK = (XNQ, CGQ) +RQT = (QVQ, RCH) +XNT = (RKM, XRV) +JMM = (RBK, JPL) +LSL = (NGH, KCN) +QLQ = (TLV, KDN) +KXR = (KRH, KRH) +QLV = (GSR, BQV) +PMG = (LPH, XFB) +VNF = (LVQ, HHG) +CSS = (RKK, RQN) +HGR = (PVX, LFX) +QGN = (MPR, TXD) +XNQ = (GTJ, LXQ) +QQC = (GQC, PLL) +CKR = (KQH, HQD) +TLD = (JLJ, VFL) +XSD = (TTQ, LDQ) +FXF = (BXS, LMQ) +ZZZ = (QBJ, MJJ) +HPG = (GSR, BQV) +LJC = (RNF, FNK) +CCL = (DXF, HRM) +FQR = (QBF, CLH) +GHJ = (MPS, NRB) +LLJ = (NVX, BTR) +MCQ = (RTG, CTK) +PLL = (DJD, FTV) +BLD = (XGL, NDH) +MLL = (NHV, PPJ) +KDN = (LLS, DLN) +KKN = (DCC, CCH) +FHB = (TCJ, VLF) +HCC = (RDN, TRJ) +TGV = (TKF, CFG) +TKB = (SVJ, KHH) +QDN = (RXG, PFF) +GQN = (RKT, NKK) +FLV = (TLV, KDN) +KTV = (LKK, VGH) +XHQ = (JLX, SNS) +MHN = (DHV, KMD) +DLD = (SSQ, LDK) +DKD = (CKR, JPC) +SRD = (KPP, LFS) +LVT = (PMG, NBN) +KPP = (FLQ, XTX) +BQV = (GLN, NQG) +BSB = (KHR, FGL) +HGC = (DBX, QTF) +DSF = (RBQ, GQH) +GRQ = (MVQ, RVP) +JGT = (SFN, GQT) +HDF = (SMX, HGC) +QBF = (VKF, XHQ) +QKM = (JTV, LPP) +LJB = (QQC, KFK) +NTH = (QQV, MHS) +QTX = (FMX, PKP) +HCQ = (FFT, CBC) +XKJ = (DXR, PTS) +BHH = (KPP, LFS) +GRH = (QLQ, FLV) +FNX = (MJX, PFZ) +HQN = (CKS, BVB) +SJV = (CGF, VKD) +RDL = (QJV, MLX) +MFR = (DMF, CFD) +LPF = (SRD, BHH) +HCP = (MPV, NVL) +KNS = (VCD, LJL) +CDX = (LLX, TNN) +SGS = (KMC, RQK) +HQS = (NKP, FRN) +QVD = (VML, QHT) +NRG = (LDS, SCH) +BVB = (HCP, NVM) +RBK = (QLB, RQT) +MPV = (CGR, TSC) +VFP = (JXP, QCM) +QFS = (DFQ, FHB) +FTK = (LSH, DDG) +TJH = (KPL, KTR) +HQF = (MQF, FTK) +FGX = (HVP, KNS) +DDK = (NTM, JNC) +BJC = (SQK, RGB) +HVP = (VCD, LJL) +LTG = (RMV, CJC) +BNR = (CSS, RBN) +GQT = (LCN, DTK) +XSF = (BGT, FCN) +SSQ = (KTL, JMR) +RNH = (BXH, BXH) +FTV = (CMM, PBL) +QRK = (TSF, QFS) +CLR = (NFS, PGK) +SRJ = (PFV, SHX) +FQT = (QKT, BJB) +FRN = (BJH, JTF) +RCN = (NRV, CCL) +QTM = (CKR, JPC) +JHT = (HRC, NVR) +KVB = (KRH, KKT) +HJG = (GHN, GHN) +RNF = (QFF, CKV) +PTT = (VNT, FNX) +GRB = (SVJ, KHH) +TRJ = (PVJ, QKP) +MHS = (FCV, JXD) +VBM = (SBN, DQF) +DLM = (VNH, SCJ) +PPJ = (DMH, PHJ) +QJN = (LSX, KBN) +HXV = (SMH, BJP) +GVL = (VMV, DKF) +QCG = (FKV, NVD) +FNM = (XRV, RKM) +JQJ = (NVT, HGR) +KVX = (GRG, PMJ) +JLV = (SMG, RPH) +TXD = (MFN, HQG) +TLJ = (FHD, MHN) +RPV = (GKH, BPT) +CPR = (JLH, PLC) +FLQ = (TPR, LGG) +BTF = (HGR, NVT) +GCH = (QPT, FDV) +JCF = (GHM, NKS) +CLF = (PCT, XKJ) +RMT = (QKM, XCP) +KPL = (DJB, VLV) +RMV = (NMS, HCC) +XRV = (VPH, PHH) +HBB = (XKH, FBQ) +PXB = (QBF, CLH) +HMR = (PCP, LMJ) +KCT = (PFS, PFB) +DCC = (MBP, BJC) +VFV = (VBD, HQS) +DJB = (BQX, SLD) +MFS = (VML, QHT) +RPC = (PHR, JFD) +RDS = (LFC, RNK) +KMC = (RPR, NRL) +CJD = (VJN, GKK) +VST = (VCS, CMQ) +VMC = (RPC, MCV) +VJV = (XTP, DRK) +BXH = (RXT, BLP) +PNQ = (DSF, PSH) +RJJ = (FXH, QLX) +NKS = (QDQ, DPP) +QDQ = (SJV, MRP) +HQQ = (CJD, DVT) +LKV = (CGQ, XNQ) +KTL = (HFF, FPS) +MBP = (RGB, SQK) +MQQ = (HCQ, MDL) +BQS = (SCJ, VNH) +NRT = (FJD, HTS) +HHG = (RTC, RPQ) +VNH = (XSD, HQH) +QTS = (QTG, MHD) +DJQ = (NRG, QCD) +MDX = (BPT, GKH) +QJV = (QQP, VLJ) +HBD = (HBB, CKC) +GBF = (HJG, FPV) +VDC = (JFJ, VNF) +MPH = (PFV, SHX) +TPR = (BXD, FVX) +KFX = (DJT, LLJ) +LSX = (VKN, STS) +HJL = (KFX, BBK) +QLT = (KGC, DMM) +QFF = (BJM, QCG) +DVM = (GCD, FSC) +MHD = (JCF, JPJ) +DPQ = (JJX, GNL) +NMS = (TRJ, RDN) +VLJ = (XJB, HSJ) +JSP = (MHN, FHD) +BTR = (GMD, TLD) +TTD = (SPC, DFJ) +QKT = (XPV, BVJ) +MKK = (HCQ, MDL) +LFC = (LSS, GQN) +QGL = (RPG, HGJ) +JDT = (FPN, DTC) +NCM = (RPG, HGJ) +LCN = (QLT, MTG) +VGS = (VJV, SRT) +CGF = (FXF, STT) +KQS = (PFB, PFS) +PFF = (DLD, MRJ) +LSH = (QTS, VRJ) +FGF = (MPH, SRJ) +BJG = (TVF, BDN) +HQR = (CXG, CPR) +JVF = (RGM, NCG) +SNP = (BLN, DFD) +DQH = (GSC, CFT) +JVA = (RMT, DPF) +VPH = (CRN, CHT) +DFQ = (VLF, TCJ) +DFD = (HQR, QDF) +NJH = (RXG, PFF) +DTK = (QLT, MTG) +MJJ = (DJH, RDQ) +GGB = (CFT, GSC) +SMH = (RHQ, RJX) +NFS = (SNP, QLP) +LNV = (XLR, KQF) +LCD = (FNM, XNT) +GQH = (JDT, JRX) +JPJ = (GHM, NKS) +GMD = (VFL, JLJ) +HTS = (KXR, KVB) +KFT = (LCD, QCL) +SGH = (NVR, HRC) +QKP = (MQD, MLM) +HFF = (MGM, KSX) +HJM = (KBN, LSX) +MJX = (VHC, PXF) +TSF = (FHB, DFQ) +MSH = (GFM, JHC) +VBG = (HJM, QJN) +CKS = (HCP, NVM) +DQF = (LJC, KXM) +FVP = (FJD, HTS) +DPP = (SJV, MRP) +FKM = (CSS, RBN) +VCD = (FCH, GBX) +DJV = (VMC, HVC) +RKM = (VPH, PHH) +TMP = (KHR, FGL) +BVC = (TLJ, JSP) +SRV = (HQS, VBD) +FCN = (DHM, VDX) +DJH = (FBG, MCQ) +NGG = (RPL, DFV) +SRT = (XTP, DRK) +RMN = (QTD, JGS) +MLH = (MQJ, VDR) +KVL = (VFV, SRV) +VDX = (FRV, HXV) +RXT = (LJB, XVK) +LSS = (RKT, NKK) +LNN = (KTB, QRV) +BCC = (CHL, QXP) +GHN = (XBS, XBS) +FCK = (FKM, BNR) +QLP = (BLN, DFD) +BDN = (JMC, MTV) +MLX = (VLJ, QQP) +RDH = (VNT, VNT) +DFV = (JKJ, KDX) +DXG = (JLV, MVL) +TCF = (DSF, PSH) +JJX = (MKM, TJJ) +VFL = (GGB, DQH) +VLV = (SLD, BQX) +RBQ = (JDT, JRX) +JXP = (QXB, QVT) +PFV = (STX, XHF) +BLN = (QDF, HQR) +FVX = (QKQ, MLL) +QTP = (DJV, GMN) +JLP = (NJF, MFR) +CXG = (PLC, JLH) +VKF = (JLX, SNS) +QQT = (GMN, DJV) +KDX = (MHH, PMX) +FJD = (KXR, KXR) +XJB = (PHB, JTH) +VMV = (RCN, XJS) +MKM = (HPG, QLV) +SQK = (GBF, JCS) +PMT = (SGQ, DXG) +LXQ = (GRB, TKB) +RKK = (SSK, SSK) +QXA = (VHC, PXF) +QDP = (QTD, JGS) +VQC = (KQF, XLR) +QKQ = (PPJ, NHV) +TXM = (JLP, JCJ) +SPC = (LRR, SXC) +BHG = (KFL, BCC) +QBK = (VNF, JFJ) +BPB = (LBJ, JGT) +RNK = (LSS, GQN) +BJP = (RHQ, RJX) +VNT = (MJX, MJX) +QLX = (GCH, KBD) +DXF = (RNH, RNH) +DLS = (VFV, SRV) +SXR = (TLJ, JSP) +SGQ = (JLV, MVL) +NRL = (XPP, XGM) +JFD = (LVD, LTQ) +XNM = (JXF, LVT) +PHH = (CHT, CRN) +QTD = (CTJ, LPF) +FCV = (GTC, CKJ) +QRG = (JLP, JCJ) +DKS = (KPL, KTR) +TTQ = (BFV, LVR) +RPR = (XGM, XPP) +DVS = (FTH, FFG) +RRH = (NJH, QDN) +KTR = (DJB, VLV) +KQM = (BJV, MND) +GKS = (BXH, QCZ) +FSV = (MPS, NRB) +QXB = (DJQ, JCK) +FHX = (QFS, TSF) +FGL = (QGL, NCM) +BHB = (KCN, NGH) +KNA = (KTV, KPG) +NBN = (LPH, XFB) +NVM = (NVL, MPV) +LVR = (CNB, FGX) +QCL = (FNM, XNT) +XRR = (MTB, HMR) +LLS = (TXM, QRG) +AAA = (MJJ, QBJ) +RPL = (JKJ, KDX) +QCM = (QVT, QXB) +QVF = (BQS, DLM) +LMQ = (LMK, BVF) +BLS = (CQK, GTG) +JMC = (PLP, HJL) +KXM = (RNF, FNK) +NDH = (FHJ, GML) +SNS = (VJK, FMJ) +KFL = (QXP, CHL) +FSD = (XNH, MJF) +DTC = (GLD, TCK) +MRP = (CGF, VKD) +JHX = (CJD, DVT) +KPG = (LKK, VGH) +DJT = (NVX, BTR) +MQD = (FQT, KDB) +CKJ = (BLS, CGP) +JXD = (GTC, CKJ) +NVL = (CGR, TSC) +PKV = (DBR, PGB) +JPL = (QLB, RQT) +TSC = (FMS, KRS) +XGL = (GML, FHJ) +DJD = (PBL, CMM) +FSC = (BFG, NTH) +DMH = (PBN, HND) +KRS = (FQR, PXB) +LLM = (GMX, VLX) +FJB = (XQV, KFT) +KRH = (QHR, QHR) +RDQ = (MCQ, FBG) +GLD = (VST, JPF) +RVP = (HBD, RBC) +DHV = (RJJ, KFV) +FMX = (RFL, GSG) +SMX = (DBX, QTF) +LPP = (FSD, PHM) +TDG = (MKK, MQQ) +HPL = (BDN, TVF) +MGM = (RDH, RDH) +FHJ = (XFJ, GVL) +TQB = (VFP, VGF) +JLJ = (DQH, GGB) +FMS = (FQR, PXB) +HQD = (BPR, SJK) +VXR = (XQX, VBG) +GML = (XFJ, GVL) +GCS = (RKJ, CSC) +CTJ = (SRD, BHH) +CLH = (XHQ, VKF) +HND = (RDL, PXS) +QPT = (RRH, CKQ) +NVD = (HKK, JVF) +XGM = (VFK, MLH) +GMN = (HVC, VMC) +QDF = (CXG, CPR) +TCK = (JPF, VST) +BJH = (LSL, BHB) +JNC = (BPB, SLZ) +GSC = (QVF, MJM) +XHG = (SRJ, MPH) +CGQ = (GTJ, LXQ) +CHL = (TGV, HPX) +MRJ = (LDK, SSQ) +GKH = (VQC, LNV) +MLM = (FQT, KDB) +BPT = (LNV, VQC) +BXT = (TKD, ZZZ) +PMP = (NHP, KJP) +PLC = (XLV, CKG) +FXA = (LBJ, JGT) +PKP = (RFL, GSG) +BQX = (MSH, NSN) +LBJ = (SFN, GQT) +KMD = (KFV, RJJ) +PVJ = (MQD, MLM) +LDQ = (LVR, BFV) +SLS = (PGB, DBR) +VTP = (HQQ, JHX) +MPS = (QTX, DGF) +VRJ = (QTG, MHD) +HBH = (HNG, FKF) +RTC = (RMD, FJB) +PHB = (LPD, LPD) +CMM = (DMS, KFB) +QVR = (MKK, MQQ) +XFJ = (DKF, VMV) +TLV = (DLN, LLS) +QRV = (SCL, BSJ) +MFN = (GHK, RRL) +NVT = (LFX, PVX) +FVL = (HMR, MTB) +VCS = (TQB, BBM) +XHF = (QBK, VDC) +JTV = (FSD, PHM) +VML = (TTD, LBH) +SCL = (DKS, TJH) +VHC = (QXM, HDF) +LPV = (GMX, VLX) +CFG = (BTF, JQJ) +MCV = (PHR, JFD) +LDS = (FGF, XHG) +VGF = (QCM, JXP) +BVF = (QQT, QTP) +VKN = (TMP, BSB) +VJK = (KQM, DHQ) +CTK = (GSF, HQN) +PHM = (MJF, XNH) +PVX = (MHK, SXL) +JPC = (KQH, HQD) +JGS = (CTJ, LPF) +XNV = (CLR, BLB) +PTS = (KCT, KQS) +BXS = (BVF, LMK) +BJB = (XPV, BVJ) +MHK = (VTP, KKX) +CJC = (NMS, HCC) +RKT = (PMT, FCX) +BFG = (QQV, MHS) +LPH = (HDD, DVM) +GSR = (GLN, NQG) +MHH = (VGS, TRH) +HMT = (BLB, CLR) +JCJ = (NJF, MFR) +MDK = (RPV, MDX) +LRR = (DPQ, XTB) +RKJ = (PDP, BLD) +MJF = (RXX, SGS) +NCG = (NRT, FVP) +QQV = (JXD, FCV) +MJQ = (BCC, KFL) +TKD = (MJJ, QBJ) +MND = (MDK, KBG) +RXG = (MRJ, DLD) +BGT = (DHM, VDX) +XCP = (LPP, JTV) +TRS = (QPH, GCS) +FPS = (MGM, KSX) +MVL = (SMG, RPH) +BJM = (NVD, FKV) +BSJ = (TJH, DKS) +MTV = (PLP, HJL) +GQC = (FTV, DJD) +CQL = (FTK, MQF) +VQM = (RMV, CJC) +SLZ = (JGT, LBJ) +HVC = (MCV, RPC) +LFX = (MHK, SXL) +BJQ = (LFC, RNK) +BFV = (FGX, CNB) +DRK = (HMT, XNV) +VBD = (NKP, FRN) +KBN = (STS, VKN) +XQX = (HJM, QJN) +MPR = (HQG, MFN) +KFB = (MFS, QVD) +GHM = (QDQ, DPP) +KBD = (QPT, FDV) +MVH = (FVL, XRR) +PGB = (RVG, TRS) +RGM = (NRT, FVP) +KKT = (QHR, GNZ) +TCJ = (RDS, BJQ) +MVQ = (HBD, RBC) +CKC = (XKH, FBQ) +SHX = (XHF, STX) +NVR = (RFF, GRH) +DKF = (RCN, XJS) +KTB = (BSJ, SCL) +HSJ = (PHB, JTH) +RJH = (DCC, CCH) +FNK = (QFF, CKV) +XNH = (SGS, RXX) +NRV = (DXF, DXF) +HRM = (RNH, GKS) +LJL = (GBX, FCH) +RDN = (PVJ, QKP) +JXM = (MVQ, RVP) +XLR = (HBH, MGJ) +QXP = (HPX, TGV) +HQH = (TTQ, LDQ) +HGJ = (FCK, HGS) +JTH = (LPD, DDK) +NKK = (FCX, PMT) +DHQ = (MND, BJV) +RFF = (FLV, QLQ) +RGB = (GBF, JCS) +RMX = (DFV, RPL) +VXF = (XRR, FVL) +SMG = (RSN, VBM) +KBG = (RPV, MDX) +QCZ = (BLP, RXT) +CQK = (BJG, HPL) +FDV = (RRH, CKQ) +CKQ = (QDN, NJH) +RRL = (JMM, VBN) +RVG = (QPH, GCS) +FTT = (GRG, PMJ) +FHD = (KMD, DHV) +GFM = (MRG, CDX) +FFG = (QRK, FHX) +RTG = (GSF, HQN) +PXS = (MLX, QJV) +MQJ = (JHT, SGH) +KSX = (RDH, PTT) +VXP = (VBG, XQX) +PMX = (TRH, VGS) +BPR = (GRQ, JXM) +VKD = (STT, FXF) +SXL = (KKX, VTP) +HDD = (GCD, FSC) +GTJ = (GRB, TKB) +CHT = (VXP, VXR) +RBC = (CKC, HBB) +XBS = (TKD, TKD) +KHH = (CQL, HQF) +XTX = (TPR, LGG) +LKK = (LLM, LPV) +VFK = (VDR, MQJ) +JLX = (VJK, FMJ) +FRV = (SMH, BJP) +GTC = (CGP, BLS) +PHR = (LTQ, LVD) +GCD = (BFG, NTH) +SBN = (KXM, LJC) +STX = (QBK, VDC) +FBG = (RTG, CTK) +CKV = (BJM, QCG) +DPF = (XCP, QKM) +FKF = (MVH, VXF) +BLB = (PGK, NFS) +XPV = (MJQ, BHG) +GMX = (FTT, KVX) +LBH = (DFJ, SPC) +JHC = (CDX, MRG) +GNL = (TJJ, MKM) +DSM = (FTH, FFG) +FFT = (QGN, LRB) +GRG = (NPJ, LNN) +JFJ = (HHG, LVQ) +CGR = (FMS, KRS) +LFS = (XTX, FLQ) +DMF = (TCF, PNQ) +LVQ = (RTC, RPQ) +DFJ = (SXC, LRR) +VLF = (RDS, BJQ) +LMJ = (BPL, XSF) +BVJ = (BHG, MJQ) +NRB = (QTX, DGF) +GKK = (RMN, QDP) +CFD = (PNQ, TCF) +GBX = (DSM, DVS) +NTM = (BPB, BPB) +XKH = (GHJ, FSV) +LGG = (BXD, FVX) +DBR = (RVG, TRS) +GTG = (BJG, HPL) +HKK = (NCG, RGM) +CKG = (LKV, QNK) +FKG = (RMT, DPF) +QVQ = (DKD, QTM) +LDK = (KTL, JMR) +PHJ = (PBN, HND) +PFZ = (PXF, VHC) +VLX = (KVX, FTT) +KQF = (HBH, MGJ) +RQN = (SSK, PMP) +CMQ = (TQB, BBM) +NHP = (FKG, FKG) +DVT = (GKK, VJN) +RPG = (FCK, HGS) +RBN = (RKK, RQN) +PBN = (RDL, PXS) +RCH = (QTM, DKD) +CRN = (VXP, VXR) +TNN = (KBF, TDV) +RFL = (QJP, CLF) +NJF = (DMF, CFD) +NQG = (RMX, NGG) +VDR = (JHT, SGH) +FPV = (GHN, BRB) +PBL = (DMS, KFB) +XTB = (JJX, GNL) +HGS = (FKM, BNR) +CCH = (BJC, MBP) +STT = (LMQ, BXS) +LTQ = (SLS, PKV) +SFN = (LCN, DTK) +NGH = (QVR, TDG) +RQK = (RPR, NRL) +PDP = (NDH, XGL) +FCH = (DSM, DVS) +QCD = (SCH, LDS) +TKF = (BTF, JQJ) +BPL = (BGT, FCN) +SVJ = (CQL, HQF) +QTG = (JPJ, JCF) +NSN = (GFM, JHC) +JCS = (HJG, FPV) +HRC = (GRH, RFF) +VGH = (LLM, LPV) +BRB = (XBS, BXT) +JMR = (HFF, FPS) +VJN = (RMN, QDP) +HPX = (TKF, CFG) +CFT = (QVF, MJM) +DBX = (KVL, DLS) +NHV = (PHJ, DMH) +FTH = (QRK, FHX) +XFB = (DVM, HDD) +XPP = (MLH, VFK) +CGP = (CQK, GTG) +MDL = (FFT, CBC) +GNZ = (KPG, KTV) +BJV = (KBG, MDK) +SCH = (FGF, XHG) +RXX = (KMC, RQK) +HQG = (GHK, RRL) +KKX = (JHX, HQQ) +LVD = (SLS, PKV) +QQP = (XJB, HSJ) +MTB = (LMJ, PCP) +FMJ = (KQM, DHQ) diff --git a/data/09.in b/data/09.in new file mode 100644 index 0000000..4fb3525 --- /dev/null +++ b/data/09.in @@ -0,0 +1,200 @@ +10 37 82 150 246 389 638 1129 2122 4057 7618 13804 24006 40089 64478 100247 151210 222013 318226 446434 614326 +4 11 32 93 230 496 975 1798 3150 5243 8219 11979 16093 20384 27760 52853 143831 431834 1235397 3270284 8055403 +26 49 90 163 288 500 869 1531 2730 4871 8584 14799 24832 40482 64139 98903 148714 218493 314294 443467 614832 +-4 4 20 51 110 210 353 506 565 334 -395 -1456 -1197 6132 35806 122961 341002 832656 1860042 3882361 7672508 +-3 -11 -26 -51 -85 -123 -145 -71 358 1848 6104 16888 41913 96030 206362 420524 820437 1547812 2855682 5217834 9561853 +24 46 85 148 242 385 636 1166 2420 5460 12633 28796 63504 134925 276946 552208 1075976 2059234 3884733 7237580 13323150 +21 39 83 178 359 678 1219 2121 3609 6033 9915 16004 25339 39320 59787 89107 130269 186987 263811 366246 500879 +10 25 44 76 151 341 784 1707 3444 6445 11272 18578 29065 43417 62204 85753 113982 146193 180820 215128 244859 +-7 -12 -17 -19 -1 80 320 924 2313 5335 11696 24823 51490 104671 208280 404983 769974 1438716 2670276 5000869 9616078 +11 6 11 42 130 347 846 1920 4090 8237 15798 29051 51519 88528 147959 241239 384621 600808 920981 1387296 2055920 +1 9 28 54 83 111 131 124 37 -251 -937 -2140 -3223 -734 16937 82214 276484 789748 2042200 4924402 11260416 +21 38 63 97 143 206 306 516 1037 2322 5261 11439 23479 45482 83576 146586 246837 401102 631707 967805 1446831 +5 16 33 66 130 257 523 1090 2263 4562 8809 16230 28572 48235 78419 123286 188137 279604 405857 576826 804438 +7 15 45 110 242 510 1037 2019 3752 6686 11563 19784 34327 61856 117179 231986 470861 958909 1926897 3781406 7208824 +17 42 76 131 234 432 797 1439 2554 4570 8522 16908 35479 76730 166325 354352 734215 1473186 2860224 5378689 9814112 +11 30 66 129 241 437 773 1348 2344 4087 7133 12386 21260 35904 59518 96799 154569 242652 375084 571759 860635 +-1 -7 -11 4 83 326 938 2325 5274 11283 23158 46078 89456 170104 317453 581895 1047713 1852557 3216019 5480568 9168937 +4 17 52 119 229 401 674 1132 1955 3519 6594 12758 25329 51585 108157 233992 520718 1181662 2704178 6176752 13973529 +6 20 54 124 252 474 851 1491 2598 4579 8286 15587 30720 63425 135930 297947 657678 1443646 3123770 6627130 13744012 +14 35 74 148 285 534 990 1841 3447 6468 12069 22245 40328 71761 125251 214444 360300 594385 963340 1534834 2405359 +29 41 50 56 59 59 56 50 41 29 14 -4 -25 -49 -76 -106 -139 -175 -214 -256 -301 +19 37 72 149 310 634 1280 2557 5028 9670 18147 33322 60275 108413 196008 360199 679099 1319809 2639656 5392637 11137286 +26 53 88 127 170 238 405 850 1937 4334 9200 18536 35972 68651 131669 258138 521205 1081063 2283755 4866515 10379943 +3 1 -9 -19 -12 33 148 413 1045 2579 6237 14715 33900 76593 170430 374402 812719 1743149 3692707 7722173 15931140 +2 13 29 50 76 107 143 184 230 281 337 398 464 535 611 692 778 869 965 1066 1172 +21 38 66 114 191 306 468 686 969 1326 1766 2298 2931 3674 4536 5526 6653 7926 9354 10946 12711 +20 32 56 120 270 575 1132 2071 3560 5810 9080 13682 19986 28425 39500 53785 71932 94676 122840 157340 199190 +-1 -1 -9 -15 17 161 537 1324 2800 5444 10148 18600 33912 61580 110876 196785 342613 583405 970325 1576163 2502147 +16 22 45 102 210 392 701 1271 2420 4857 10085 21163 44142 90823 184171 369045 733382 1449608 2854917 5606422 10981452 +8 23 41 67 131 298 683 1495 3144 6466 13167 26667 53639 106669 208561 398765 742000 1337993 2328717 3894571 6222067 +9 8 5 0 -7 -16 -27 -40 -55 -72 -91 -112 -135 -160 -187 -216 -247 -280 -315 -352 -391 +23 43 72 109 160 257 497 1116 2629 6094 13593 29059 59605 117533 223295 410138 732799 1287316 2260839 4057511 7605344 +-5 10 35 80 171 359 739 1483 2901 5567 10586 20131 38441 73545 140109 264179 491771 906656 1671501 3127338 6031731 +17 38 75 144 265 466 801 1397 2559 4977 10106 20863 42965 87614 176965 355122 709669 1412564 2795569 5485754 10643249 +-8 -13 -6 33 137 359 783 1538 2811 4852 7961 12444 18522 26174 34892 43323 48770 46521 28972 -15493 -103905 +-3 1 10 26 65 165 397 883 1825 3549 6568 11668 20021 33329 54003 85381 131989 199849 296838 433102 621529 +8 18 43 85 145 231 380 709 1523 3533 8280 18922 41605 87668 176873 341682 632443 1123657 1923398 3193680 5203054 +-5 3 26 78 178 342 586 968 1714 3494 7945 18606 42603 93833 199268 411681 835139 1674971 3333414 6589328 12932182 +11 17 26 38 53 71 92 116 143 173 206 242 281 323 368 416 467 521 578 638 701 +7 17 38 76 134 207 277 308 241 -11 -568 -1588 -3272 -5869 -9681 -15068 -22453 -32327 -45254 -61876 -82918 +13 31 77 163 302 506 777 1100 1461 1929 2868 5401 12360 30160 72376 166334 364813 766067 1546895 3015503 5693514 +11 26 56 118 236 441 774 1299 2147 3635 6526 12509 24983 50243 99229 190181 352951 636508 1122536 1950228 3360746 +16 19 17 18 36 84 171 323 666 1633 4387 11588 28674 65874 141225 284925 545420 997695 1754317 2979862 4909448 +10 19 30 43 60 90 160 348 876 2334 6145 15415 36332 80294 167019 329195 620177 1128708 2010371 3557722 6355595 +4 17 47 106 214 398 691 1131 1760 2623 3767 5240 7090 9364 12107 15361 19164 23549 28543 34166 40430 +18 23 20 12 17 77 269 718 1612 3219 5906 10160 16611 26057 39491 58130 83446 117199 161472 218708 291749 +-3 -3 -1 3 9 17 27 39 53 69 87 107 129 153 179 207 237 269 303 339 377 +13 10 17 46 106 205 359 625 1199 2651 6404 15600 36530 80834 168698 333285 626633 1127232 1949451 3254922 5265898 +18 45 88 163 297 530 933 1655 3015 5658 10797 20566 38512 70257 124364 213444 355544 575859 908814 1400565 2111971 +14 17 19 20 20 19 17 14 10 5 -1 -8 -16 -25 -35 -46 -58 -71 -85 -100 -116 +12 10 4 10 57 188 462 963 1841 3440 6609 13344 27972 59162 123133 248525 483506 905806 1636498 2858486 4840811 +1 11 49 134 295 577 1047 1800 2965 4711 7253 10858 15851 22621 31627 43404 58569 77827 101977 131918 168655 +7 14 39 84 145 210 257 252 147 -122 -637 -1500 -2835 -4790 -7539 -11284 -16257 -22722 -30977 -41356 -54231 +8 19 48 112 246 516 1037 1992 3648 6365 10594 16860 25726 37734 53319 72692 95688 121575 148820 174808 195510 +2 1 -6 -11 10 115 426 1167 2705 5585 10553 18596 31140 50823 83887 146617 281233 592826 1331237 3065196 7038703 +10 24 50 91 157 281 548 1141 2406 4940 9721 18354 33675 61406 114644 225397 472484 1045368 2383345 5466690 12403661 +9 26 53 92 145 214 301 408 537 690 869 1076 1313 1582 1885 2224 2601 3018 3477 3980 4529 +15 23 42 77 127 197 333 699 1738 4505 11355 27360 63198 140949 305518 646813 1342402 2739280 5510713 10957600 21587310 +19 37 61 94 146 245 457 921 1909 3922 7842 15196 28676 53239 98468 183600 348119 673831 1330219 2665814 5387734 +4 -3 -17 -40 -78 -141 -238 -367 -500 -563 -411 202 1658 4515 9552 17819 30692 49933 77755 116892 170674 +-1 1 8 27 66 128 198 213 2 -818 -3003 -7910 -17797 -36193 -68327 -121594 -206023 -334697 -524058 -794011 -1167720 +1 -1 0 11 53 181 512 1270 2872 6117 12616 25730 52480 107173 217866 437281 860403 1651755 3086264 5608725 9918151 +17 31 55 111 236 482 916 1620 2691 4241 6397 9301 13110 17996 24146 31762 41061 52275 65651 81451 99952 +0 10 33 89 223 518 1108 2194 4081 7279 12745 22386 39996 72865 134378 248021 453334 814504 1432481 2461735 4133061 +4 -5 -14 -23 -22 37 297 1104 3202 8074 18526 39669 80531 156610 293712 533311 939276 1604957 2658166 4259557 6587732 +26 49 82 125 178 241 314 397 490 593 706 829 962 1105 1258 1421 1594 1777 1970 2173 2386 +14 24 37 53 80 146 325 794 1957 4702 10900 24317 52213 108112 216713 423068 810836 1540384 2930127 5629961 10984722 +17 32 55 92 151 240 377 625 1165 2420 5243 11182 22835 44308 81789 144251 244297 399160 631871 972608 1460239 +14 18 28 47 72 97 128 213 499 1344 3538 8745 20418 45744 99763 213822 452144 942698 1931932 3877439 7598384 +16 31 57 106 193 331 522 744 942 1042 1015 1009 1514 3379 7175 10748 2592 -53483 -250583 -802088 -2159965 +15 26 43 69 117 221 456 977 2090 4380 8952 17898 35184 68236 130557 245712 453081 816341 1437855 2488540 4278275 +11 12 20 44 95 183 317 515 841 1512 3165 7447 18195 43613 100034 218082 452327 895860 1701610 3112686 5504559 +10 20 40 72 128 251 560 1339 3198 7339 15972 32974 65017 123691 229785 422260 777466 1450816 2767623 5420691 10896672 +9 24 43 65 96 169 380 953 2356 5499 12054 24946 49073 92322 166957 291464 492947 810178 1297413 2029095 3105574 +15 24 48 102 200 348 534 724 887 1103 1867 4799 14114 39405 100553 235907 515279 1059778 2071066 3873260 6971428 +18 41 77 129 203 311 475 728 1120 1765 3022 6012 13867 34429 85620 205451 469702 1021769 2121131 4219443 8076523 +11 18 31 49 89 198 473 1110 2524 5624 12400 27107 58581 124749 261505 540357 1103485 2232434 4479569 8912417 17553909 +5 5 3 9 43 135 327 675 1246 2101 3250 4554 5533 5055 1056 -8925 -23929 -26243 55221 432483 1648635 +24 37 51 71 111 204 412 828 1570 2788 4753 8213 15468 33174 78947 195701 480720 1141251 2595563 5648743 11786953 +9 8 3 -3 3 65 306 1017 2803 6806 15031 30809 59441 109079 191914 325757 536117 858900 1343875 2059077 3096343 +8 18 43 89 164 278 443 673 984 1394 1923 2593 3428 4454 5699 7193 8968 11058 13499 16329 19588 +-2 -12 -14 5 64 200 482 1036 2103 4172 8269 16559 33551 68408 139207 280648 558215 1095495 2130207 4134284 8074665 +2 11 36 82 151 245 374 569 900 1499 2588 4512 7777 13093 21422 34031 52550 79035 116036 166670 234699 +10 16 13 5 4 36 164 534 1456 3557 8101 17694 37848 80395 170752 362969 770150 1624734 3396021 7016083 14308004 +6 22 45 84 167 355 769 1639 3400 6895 13820 27701 56003 114583 236900 492721 1025458 2125312 4369583 8885622 17831503 +3 8 24 73 190 423 833 1494 2493 3930 5918 8583 12064 16513 22095 28988 37383 47484 59508 73685 90258 +8 10 11 11 10 8 5 1 -4 -10 -17 -25 -34 -44 -55 -67 -80 -94 -109 -125 -142 +-3 5 32 89 188 341 561 867 1304 2013 3437 6855 15647 38087 93150 221955 509247 1121997 2376078 4847429 9551590 +13 26 48 91 168 293 481 748 1111 1588 2198 2961 3898 5031 6383 7978 9841 11998 14476 17303 20508 +4 1 5 30 99 248 542 1119 2292 4772 10134 21754 46653 99118 207881 430492 882132 1792807 3618723 7253786 14420127 +6 5 14 53 163 421 955 1959 3708 6573 11036 17705 27329 40813 59233 83851 116130 157749 210618 276893 358991 +20 38 69 109 152 192 234 318 567 1292 3236 8134 19944 47459 109783 247905 549506 1202430 2608943 5624723 12044252 +8 18 39 79 157 311 625 1282 2659 5514 11386 23449 48242 98951 201258 403208 791090 1513994 2820505 5111939 9017627 +14 20 26 46 100 210 400 701 1158 1832 2786 4040 5476 6670 6624 3367 -6610 -29124 -73318 -152974 -288172 +9 21 31 39 61 141 365 893 2053 4591 10254 23022 51549 113813 245773 517287 1061241 2126913 4178213 8075541 15413429 +10 5 0 -5 -10 -15 -20 -25 -30 -35 -40 -45 -50 -55 -60 -65 -70 -75 -80 -85 -90 +2 8 14 20 26 32 38 44 50 56 62 68 74 80 86 92 98 104 110 116 122 +25 43 82 152 271 484 885 1649 3106 5936 11653 23709 49830 106651 228414 482512 996095 1999905 3898092 7376110 13563041 +25 37 58 110 239 536 1174 2470 4995 9773 18638 34882 64481 118529 218222 405141 762261 1456041 2818722 5505066 10782955 +9 9 25 72 165 319 549 870 1297 1845 2529 3364 4365 5547 6925 8514 10329 12385 14697 17280 20149 +0 2 6 13 24 44 86 175 352 678 1238 2145 3544 5616 8582 12707 18304 25738 35430 47861 63576 +6 30 75 162 327 623 1122 1917 3124 4884 7365 10764 15309 21261 28916 38607 50706 65626 83823 105798 132099 +8 6 1 -7 -18 -32 -49 -69 -92 -118 -147 -179 -214 -252 -293 -337 -384 -434 -487 -543 -602 +10 5 -1 -5 -4 5 25 59 110 181 275 395 544 725 941 1195 1490 1829 2215 2651 3140 +4 13 25 51 116 268 605 1333 2875 6078 12633 25968 53154 108866 223288 457209 929642 1866383 3682349 7116701 13448156 +4 0 2 13 42 113 275 610 1240 2340 4170 7146 11982 19959 33423 56695 97708 170888 302090 536811 953458 +13 33 74 145 256 421 664 1027 1588 2525 4326 8374 18378 43560 105290 250237 575532 1275865 2731024 5670202 11488003 +15 44 87 148 246 435 830 1634 3159 5832 10175 16746 26026 38235 53058 69260 84167 92988 87951 57224 -16410 +9 22 35 48 61 74 87 100 113 126 139 152 165 178 191 204 217 230 243 256 269 +3 18 49 114 243 485 923 1695 3025 5296 9266 16673 31761 64816 139895 311086 695823 1541682 3357467 7164580 14967135 +28 44 59 86 152 292 552 1021 1927 3858 8218 18120 40076 87085 184046 376823 746783 1433430 2669722 4840316 8588709 +18 27 47 92 192 399 804 1592 3180 6501 13512 28013 56869 111743 211525 385925 681562 1174191 1996269 3401322 5911706 +20 34 55 83 118 160 209 265 328 398 475 559 650 748 853 965 1084 1210 1343 1483 1630 +9 6 -5 -22 -27 36 293 995 2626 6113 13203 27072 53190 100343 181447 313295 513543 791920 1130659 1446270 1520747 +9 26 59 111 177 254 363 583 1103 2307 4919 10252 20629 40081 75506 138688 250155 447262 801933 1459475 2720655 +11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 101 106 111 +18 25 45 97 205 392 684 1132 1858 3127 5437 9599 16745 28150 44680 65578 86170 93909 61973 -60611 -363635 +7 7 16 46 125 306 672 1338 2462 4296 7335 12657 22590 41893 79697 152519 288737 534997 965114 1692128 2884283 +8 9 1 -8 16 142 491 1277 2889 6031 11937 22674 41526 73399 125094 205199 323391 489436 713718 1014627 1444769 +13 19 33 74 184 433 926 1830 3455 6444 12163 23451 46018 91000 179536 350773 675489 1278617 2375429 4328080 7731708 +11 24 48 94 196 426 916 1903 3839 7652 15309 30921 62746 126592 251301 487210 918739 1682552 2993078 5177568 8723304 +6 27 73 154 275 442 675 1029 1623 2668 4461 7264 10904 13799 10921 -10067 -75636 -237807 -592423 -1307346 -2664647 +-2 -4 -1 13 54 164 435 1047 2326 4828 9455 17609 31390 53844 89267 143571 224718 343228 512767 750821 1079462 +-4 -14 -18 -1 66 242 646 1509 3256 6626 12838 23811 42446 72978 121406 196009 307956 472018 707390 1038631 1496730 +16 23 40 74 123 175 208 191 99 -20 150 1648 7185 23051 62985 156232 364624 818923 1795546 3876244 8274637 +2 18 40 65 98 159 305 691 1716 4348 10809 25940 59770 132095 280246 571702 1123798 2133502 3921102 6992667 12127338 +20 24 25 30 65 200 583 1481 3330 6799 12878 23025 39509 66408 112572 199850 384145 805463 1799712 4135921 9498542 +12 27 62 134 270 505 880 1440 2232 3303 4698 6458 8618 11205 14236 17716 21636 25971 30678 35694 40934 +24 34 44 54 64 74 84 94 104 114 124 134 144 154 164 174 184 194 204 214 224 +11 13 10 14 46 133 321 728 1666 3867 8856 19518 40892 81176 152849 273811 468865 773613 1247830 2017298 3388454 +10 10 25 68 148 264 412 617 999 1879 3928 8359 17159 33355 61305 107002 178376 285576 441211 660526 961486 +4 9 22 51 114 252 548 1148 2286 4325 7849 13904 24647 45033 86956 178824 386516 857089 1906160 4186141 8999036 +1 19 50 96 162 258 401 617 943 1429 2140 3158 4584 6540 9171 12647 17165 22951 30262 39388 50654 +5 12 34 77 147 250 392 579 817 1112 1470 1897 2399 2982 3652 4415 5277 6244 7322 8517 9835 +29 42 59 86 129 194 287 414 581 794 1059 1382 1769 2226 2759 3374 4077 4874 5771 6774 7889 +9 5 -2 -9 2 87 383 1176 2999 6773 14033 27352 51218 93869 170994 312817 576957 1070669 1987696 3667085 6684034 +18 33 70 137 235 357 502 725 1255 2730 6624 15979 36608 79006 161298 313669 584864 1051519 1831290 3100989 5121217 +10 21 59 154 354 736 1428 2659 4873 8969 16761 31792 60696 115426 216996 402316 738199 1352851 2509645 4779745 9436447 +10 23 59 134 281 554 1036 1855 3206 5370 8713 13639 20461 29143 38854 47262 49482 36577 -6505 -103692 -291399 +13 31 65 130 261 522 1016 1902 3436 6071 10672 18922 34010 61698 111857 200538 352599 604839 1009491 1637794 2583195 +12 22 45 99 219 458 881 1549 2490 3654 4849 5655 5313 2586 -4411 -18415 -43256 -84138 -147963 -243701 -382809 +0 5 14 28 55 121 298 761 1902 4571 10602 23944 52989 115115 245094 509913 1033788 2038793 3908662 7286044 13216899 +18 37 68 116 195 335 588 1046 1899 3577 7037 14274 29154 58687 114879 217324 396720 699517 1193930 1977576 3187021 +-7 2 25 70 153 298 537 910 1465 2258 3353 4822 6745 9210 12313 16158 20857 26530 33305 41318 50713 +20 31 42 53 64 75 86 97 108 119 130 141 152 163 174 185 196 207 218 229 240 +11 23 47 99 199 378 692 1247 2244 4058 7386 13567 25338 48605 96353 196685 408273 848345 1740857 3495859 6835425 +14 22 40 82 187 438 999 2180 4547 9117 17722 33698 63175 117473 217603 402985 748977 1403173 2661589 5128171 10043916 +11 34 68 113 169 236 314 403 503 614 736 869 1013 1168 1334 1511 1699 1898 2108 2329 2561 +-1 -11 -12 10 69 179 354 608 955 1409 1984 2694 3553 4575 5774 7164 8759 10573 12620 14914 17469 +18 30 42 54 66 78 90 102 114 126 138 150 162 174 186 198 210 222 234 246 258 +18 27 56 123 259 513 959 1709 2944 4999 8599 15477 29863 61781 133810 294051 639606 1357043 2789234 5541767 10647019 +14 10 2 2 43 186 525 1187 2337 4222 7325 12758 23116 44162 87942 178271 360024 714354 1382892 2605218 4775489 +10 18 26 34 42 50 58 66 74 82 90 98 106 114 122 130 138 146 154 162 170 +5 23 60 134 285 595 1228 2497 4970 9651 18327 34280 63777 119185 225423 433107 844696 1664968 3295303 6503971 12723886 +22 39 68 128 254 500 944 1697 2916 4814 7653 11727 17457 26049 41905 79433 179556 445855 1118254 2715958 6305702 +15 15 25 62 145 299 563 1002 1723 2895 4773 7726 12269 19099 29135 43562 63879 91951 130065 180990 248041 +10 19 46 108 229 440 779 1291 2028 3049 4420 6214 8511 11398 14969 19325 24574 30831 38218 46864 56905 +23 39 56 84 144 260 449 718 1081 1622 2660 5131 11413 27024 63986 147268 326735 698621 1442948 2886826 5608554 +18 34 55 89 150 258 439 725 1154 1770 2623 3769 5270 7194 9615 12613 16274 20690 25959 32185 39478 +15 29 57 115 232 456 866 1590 2829 4887 8207 13413 21358 33178 50352 74768 108795 155361 218037 301127 409764 +14 20 24 23 14 -6 -40 -91 -162 -256 -376 -525 -706 -922 -1176 -1471 -1810 -2196 -2632 -3121 -3666 +6 26 60 121 248 515 1050 2091 4134 8271 16880 34938 72435 148776 300874 598273 1171929 2269863 4365915 8373002 16059681 +8 13 35 97 238 515 1005 1807 3044 4865 7447 10997 15754 21991 30017 40179 52864 68501 87563 110569 138086 +17 25 35 55 107 241 550 1180 2337 4326 7725 13903 26226 52431 108729 226129 459109 895883 1667827 2952731 4961913 +8 26 57 104 173 286 519 1076 2410 5402 11609 23592 45335 82766 144391 242052 391820 615034 939497 1400840 2044065 +3 10 29 78 188 403 780 1389 2313 3648 5503 8000 11274 15473 20758 27303 35295 44934 56433 70018 85928 +-5 -5 -1 18 82 253 651 1515 3345 7216 15440 32908 69721 146196 302134 613573 1222536 2389442 4585992 8663273 16166069 +12 24 50 106 221 436 803 1384 2250 3480 5160 7382 10243 13844 18289 23684 30136 37752 46638 56898 68633 +6 21 61 136 263 470 807 1383 2461 4663 9379 19577 41458 87954 186242 393845 832659 1759550 3710060 7785731 16219200 +-2 1 1 -10 -36 -70 -88 -44 134 547 1327 2638 4676 7668 11870 17564 25054 34661 46717 61558 79516 +0 2 5 14 48 146 386 934 2144 4736 10094 20763 41304 79829 150883 281126 521120 970802 1835611 3549656 7040224 +5 14 23 30 40 75 201 596 1695 4475 11002 25468 56123 118821 243520 486375 952760 1841967 3534836 6765525 12956133 +19 41 76 129 205 309 446 621 839 1105 1424 1801 2241 2749 3330 3989 4731 5561 6484 7505 8629 +13 23 40 84 185 398 844 1803 3900 8445 18024 37522 75971 150138 291990 564885 1099058 2168489 4353507 8875046 18261740 +10 19 39 70 112 165 229 304 390 487 595 714 844 985 1137 1300 1474 1659 1855 2062 2280 +28 41 61 97 171 343 747 1650 3558 7410 14929 29240 55919 104715 192340 347091 616960 1084883 1898873 3332571 5905659 +5 10 31 73 145 271 512 1018 2143 4669 10192 21719 44505 87118 162653 289918 494281 807692 1267173 1910797 2769849 +4 24 65 144 300 615 1244 2461 4749 9003 16979 32223 61894 120239 235122 460136 896646 1732814 3310349 6234322 11546476 +17 31 54 99 194 382 721 1284 2159 3449 5272 7761 11064 15344 20779 27562 35901 46019 58154 72559 89502 +5 4 7 20 54 146 402 1082 2767 6686 15354 33810 71997 149271 302774 602609 1178613 2266292 4283477 7954868 14509316 +14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 +22 42 84 163 293 491 795 1302 2231 4015 7425 13728 24880 43754 74402 122349 194916 301568 454282 667929 960663 +3 0 1 12 36 73 120 171 217 246 243 190 66 -153 -494 -987 -1665 -2564 -3723 -5184 -6992 +20 43 88 178 348 653 1188 2134 3858 7123 13531 26473 53172 109004 226365 472214 981488 2018447 4085466 8109904 15755812 +14 26 48 80 122 174 236 308 390 482 584 696 818 950 1092 1244 1406 1578 1760 1952 2154 +23 29 33 35 35 33 29 23 15 5 -7 -21 -37 -55 -75 -97 -121 -147 -175 -205 -237 +5 12 23 38 57 80 107 138 173 212 255 302 353 408 467 530 597 668 743 822 905 +14 27 44 73 126 224 420 849 1809 3880 8109 16338 31839 60555 113439 210644 388656 711889 1290786 2309103 4063804 +17 33 58 96 170 349 800 1881 4291 9297 19079 37285 69978 127287 226233 395362 681933 1162409 1956784 3246718 5296378 +7 21 43 83 155 274 453 700 1015 1387 1791 2185 2507 2672 2569 2058 967 -911 -3821 -8049 -13925 +12 27 45 64 92 160 339 767 1701 3625 7485 15222 30992 63876 133584 281743 592957 1232214 2509179 4987588 9674485 +12 25 37 43 28 -30 -144 -283 -303 191 2130 7587 21086 52414 122509 275338 600961 1279037 2659960 5417729 10846175 +0 3 22 63 141 300 650 1445 3236 7139 15273 31482 62636 121260 231241 440403 847714 1660461 3311075 6690622 13608639 +5 4 8 22 48 90 174 390 963 2360 5440 11654 23302 43854 78342 133830 219969 349644 539720 811894 1193660 +18 34 60 102 166 258 384 550 762 1026 1348 1734 2190 2722 3336 4038 4834 5730 6732 7846 9078 +15 29 56 116 236 450 799 1331 2101 3171 4610 6494 8906 11936 15681 20245 25739 32281 39996 49016 59480 +9 18 41 106 249 522 1015 1889 3418 6059 10638 18904 35049 69480 147439 327464 738904 1654857 3628600 7740039 16026822 +-7 -3 9 44 136 346 781 1639 3303 6525 12785 25007 49000 96309 189672 373150 730754 1421573 2750017 5316307 10355491 +17 28 58 129 284 596 1172 2157 3745 6202 9900 15351 23216 34246 49090 67879 89465 110160 121782 108773 44108 +4 10 18 29 44 65 100 179 390 951 2348 5598 12758 27924 59182 122318 247584 491440 955886 1818627 3377640 diff --git a/data/10.in b/data/10.in new file mode 100644 index 0000000..30784a7 --- /dev/null +++ b/data/10.in @@ -0,0 +1,140 @@ +FF--7-|7F--7F--|7F77-.FJF7F-7-F|7.77.FF7-F7---7-FJ7.|J--FJJ-FF-.JJ7LF7.J7F-7-F77L7.7-7.7FF77FF7..F--L7JF--.FF.7F|JFL7.7FL77.-7|7.F7-7FJ.FJ.- +FL-JF-L-JJFFJJ.7-JLL.7JF-J---7JLF7|LLF--.LJ.F7.LJL7--JJLJJJ.||JF|.F7LJ7.JJL7-FJ7L|-JL..LJJF-FJJ-|7|||F.|7.F-J7|FJF-JF--7L|7L---7-FL7FJ-FJ7.| +F7.||.7--7-LJ.FJ.|7..J-J7J|F.LFFJ7F7J|LJFL7.FJ7.|FJ..J|.|.F-LL-7..|F|J|7.FF77|F77J.F-JJ-J-|-|7JLL7-FJLFLF-7J.LJ7--7-7-L|JL-J7J7L..L-J|L|-FF7 +||F||FL7F7-|7|LF7|F|7|7|F7|..FJ|FJFJ.L--.FL.F.LF7J|FF.L7FLJ|.|7FJ-LJ|.|FL||.LF7JF.F||7JF--L-|7F7.-..L.7||..L7FL7|JL7L7-L77L|F-7J.7F|FL77.LL7 +-7FJFJFLJJ.F-JJ|LJL--7-F--F-|L|FL-LJF7J|F77.L--7L.|F77LJ7FJJFF-J7LL-J--JJ.FF7LJ.J-FLJFF|J|L7FFJLFLF77F7-F|7FJJJ.|7L-JLLLL.|.|.|||77JFJ.J..LJ +L77-F7FJ|FJJ.|.|J.J7LL7||7L7J7|JL7|FF7-JF-77.LLLJ|J-77.JL7.7LJ|F--FFL-J|JFFF7J|7.|LF-FF7FJ7F|J.FF7|L7F-77-J7LF-FJLF---JF|7LF77.FL.JL7|F7-FF7 +-F|7JLF-JJFJFLF7LFLF.|JFJ7.J.L|JFF|LLJ7.LL7FF.L|7LJJLJ7.--.F.LFL7F--.F|F-7F||LF-7J.|FLLL-7L--F--JLJFJ|FJF7J|F||.L-7FJ..J|7-L|7-FJ7-F||JF-.7| +LLJL-JL7|.|J||LL7|-77L7|--|LF||F7L|JLF|7..L-FF-|-LJ|7-LJ7-F7F77.7J-L77-L7L-J|FJFJJ.L|J.FLLJLFL7F--7L7|L7||7FJFF7JLLF--7.J77-|JJ|F|.F7L-7.-7- +J7F7J|LJ-FJ.|L7.F|7L7-F|7.7F7.L|||||F|LL-7-J..FL7|.-F7||F7|||L77JF-.|F7|L--7||FJ||F-|7-|.|.L|LLJ|||FJL7|||F7.F7|.|LLF---||F7LJ.L-|FJJLLL7LF7 +LFJ|LLJ|JLJF77FL-J-F|JFJF7LJ-|-LJL7-FF.F|.F..F|.FF-JJLF7|LJLJFJF77||-||F7F-J|||.FF7JJJJ|.7J-F-7FF-|L-7||||||FJL7FF---7JLFJL7|.|-7L||.|.F7-LJ +F|LJ.|.|.|F--|LJF7|F|.|7|FJJ|J.|J.F-.JFFF-777-F7|||LFJ||L-7F-J7||77LFJ|||L-7||L-7||J7|F-7LJLL7L7LFJF-J|||||||F7L7L-7FJ77.L7---F7L-J7.L-|..JJ +F|FJ-7---LF-J.FLF.LJL7J|-L|7LFLF7-JJ-LF7L7|F77|L7-F7F7||F-JL--7|L7F7L7|||F-J||F-J|L7-FLJL.|F7|FJFJFJF7||||||||L-JLFJL7|JFFJ|L-J7.LJ|7|F7F7|| +JLLJ7L.|.LL-7--JL7J.7|7---|-J|LL|77L--|L-J||L-JFJFJ|||||L-7F--JL7|||FJ|||L7FJ|L--JFJ.L7-|FFJLJL7L7|FJ||||||LJL7J7J|F-JJ7-L-J7LLF7F|FF.L.J|FJ +|.L-F.L7F..F|J.FJ|7-F77JJ.LFF-77L-L.FLL--7|L7F-J7L7LJLJ|7FJ|LF7FJ||||FJ|L7||L|F---J.-JF7JFL-7F7L7||L7|||||L7F7L7F7|L-77|.L-.|L|J.F7LJ7LFF-JL +J-F||J7LJ777|F-|.L-FJL777.F7|FJ7J.L777FF7|L-JL-7J.L--7FJFJFJFJ|L7|||||FJFJ||FJL----7.F||-JJLLJL7||L7|||||L7||L-J|LJF-J7F7J|F7-J.FFJ|.F.F|L-. +J-FFLFJ7|L77F7|LFJ-L7FJ7FFJLJL7F7-J|F--J|L-7F7FJ|F---J|FJFJJL7L7|||LJ||FJFJLJF-----J7F|L7JF7|F7||L7|||||L7|||JF7L-7|JFFJ|7FJ|-|-7LL--7.FJ-|F +FF7.JJ.LFFF7|7J-JLF-JL--7L--7FJ|L7JLL--7|JFJ|LJF7L---7LJFJJ.FJFJ||L-7LJL7L7F7L7F--77F-JFJFJ|FJLJL-J|||||F|LJL7|L7FJ|F7L7|7L7|JJ.|F7J7|F.LF77 +-FJ7..F.|F7-JL-F|7L--7F-J-F-JL7L7L7LFF-JL7L7|F7||F-7FJF7L7-FJFJFJ|F7L7F-JFJ||FJ|F-JFJF-JFJFJL-----7|||||FJF--JL7|L7LJL-J|F7||-F-77.L|-FJ..|7 +.F7F-J|FFJLJ|LFF-7LF7|L-7JL--7L7|FJF7L-7FJ7|LJLJ||FJL7|L7L7L7L7L7LJ|FJL7FJFJLJFJL7|L7|77|FJF7-F7F-JLJ||LJFJF7F-JL-JF7F--J|LJ|7|FJ--7JL|.F7|. +-LJ||.|-.FJL7.---|L|LJF7L7JF7|FJ||FJ|F-JL7FJF7F-J||7LLJLL7L7L7L7L7FJ|F-JL7L--7|F7L-7|L7FJ|FJL-J|L-7F-J|F-JFJ|L7F7F-J||F-7|F-JFJ|J--J.-LF--77 +|LFL7..L|7J7.7.|-J.|F-JL7L7|||L7|LJFJL7F-J|FJLJF7||F7F--7L7L-JFJFJ|FJL7F7|F--JLJ|F-JL7||FJL---7|F-JL7FJL-7L7|FJ|LJF7LJL7||L7FJFJ7.F--.F|JFJ| +J.7.|77|LL.-F77|FLFLJFF7L7LJLJFJL-7|F7||F7||F7|||||||L7FJJL7F7L7L7||F-J|||L-7-F7||F7FJLJL7F7F-J|L7F7LJF-7L7||L7L7FJL7|FJLJFJL7L-7.FF|7-LJJF7 +LJ7.F7FF7|77F7F7F-7J-FJL7L---7|F77|||||||||||L7|||LJL7|||F7LJ|FJFJLJL7FJ||F-JFJLJ|||L-7F-J||L-7L7LJ|F-J|L-J||||FJL-7L7L-7FJ7-|F-JF|-J-77F7-- +F.L-J-J|FF--JLJLJFJF7|F7L7F7FJ|||FJ||||LJ||||FJ||L-7FJ||FJL7FJL7L--7FJL7LJL-7|F-7||L7FJ|F7|L-7L7L7FJL-7-LF7|L7||7F-JFJ-FJ|FF-JL7-7J.||-|J|FJ +-J77F-LF-|F--7F7FJFJ|LJL7||LJFJ||L7||LJF-J|||L7||F7|L7|||F7LJF-JF7||L-7|F---JLJFJ||FJ|FJ|||F-J.|FJL--7L7FJ||FJ|L7L-7|F7L7L-JF--J7|FFF7FF7|7. +|LL7JF7-.LJ|FJ||L7L7L---JLJF7L-JL-J|L7FJ-FJ||FJ||||L7|||LJL-7|F-J|FJF-J||F7FF7FJFJ|L7|L7|||L-7FJL7|F7|FJL7LJL7|FJF-J||L7L7F-JF--7-F7||7L-J-7 +J-L-.LJ.FL|-L-JL7L7L------7|L7F-7F7|FJL-7L7|||||LJL-J||L7F--J|L-7||FJF7||||FJ||FJFJFJL7|||L-7|L-7|FJLJ|F-JF--J|L7L7FJ|FJFJL--JF7|FJ|||7F|7F| +JJFJ-L7|7F--||F-JFJF7F----JL7||FJ|||L7F-JFJ||L7L----7LJFJL--7|F-JLJ|FJLJLJ||FJ||FL7L--JLJ|F-JL-7||L--7||F-J.F7|FJFJL7|L-JF7F7FJLJL7|||F7F777 +..LJ||F-77FF-7L-7||||L----7FJLJL-J||.||F7L7|L7L7F7F-JF-JJF7FJLJF7F-JL7F--7LJ|FJL7||F-----JL-7F7LJ|F7FJLJ|F-7||||LL7FJ|F--JLJLJ|-F7|||LJLJ|F7 +FF7F7-L7|F7L7|F7|L7|L-7F--J||F----J|FJ||L7|L7L7LJ|L7FJ|F7||L--7|LJF7|LJ7FJF-JL7FJFJ|LF7F-7F7LJL7FJ||L--7||FJ||||F-JL-JL--7F77F7FJLJLJF7F7LJ| +--FJL--JLJL7|LJLJFJL-7|L---JFJF---7LJFJL7|L7|FJF-JFJL-7||||F--JL--JL7F-7|FJF7FJL7L7L7|||FJ|L-7FJL-J|F7FJLJL7|||LJF-7F----J||FJ|L7F7F7|LJ|F7| +.F|F-7F--7FJL---7||F7|L---7.L-JF7F|F-J-FJ|FJ|L7L7FJF--J||||L---7F-7FJL7||L7||L-7|FJFJ|LJL7|F-JL---7|||L-7F-J|LJF-JJLJF77F-JLJFJFJ||||L7FJ|LJ +FFLJ|LJLFJL-7FF-JL-J|L---7|F-7FJ|FJL7F-JFJ|FJ7|FJL7L-7L||||F7F-JL7LJF7|||FJ|L77|||FJJL-7FJ||F7F--7||||F7|L7J|F-JF7JF7||FJF7F7L-JFJ|||FJL7|LJ +LFJ|FLJ7L--7L7L----7L-7F-J||FJL7|L7FJL-7L7||F7||F7|F-JFJ||||||F-7L7FJ||||||L7|FJ||L-7F7|L7|LJ|L-7||||LJ||FJFJL--JL7|LJLJFJLJL--7L7|||L7F||.L +LLJ|F|7|.F-JFJF7F-7L7FJ|F7LJ|JFJL-J|JF7L7|||||||||||F7|FJ||||LJ7|FJL7|||||F7||L7||F-J||L7||F-JF7||||L7FJ||FJF-7F-7LJF---JF7F7F7L-JLJL7|-LJ7. +L7F|J.FF-JF7L7||L7|7|L7LJL-7|FJF7F7L7|L7|||||||LJ|||||||FJ||L7F7|L7FJ|||||||||FJ||L7FJ|FJ||L7FJ||LJ|FJL7|LJFJJLJFJF7L----J||LJL-----7||7||F7 +F77.|F-L-7|L7LJL-JL7|FJF---J||FJLJL7LJLLJ|||||L-7|||||||L7|L7||||FJ|FJ|LJLJLJ||JLJ||L7|L7||FJL7|||FJL7.LJF-JF7F7L-J|F7F--7LJF--7F7F-J||J7LFJ +LJLF-JL|LLJJL-7F--7LJL7L---7|LJF7F7L----7LJ|||F7|||||||L7||FJ||LJ|FJL7|JF7LF-JL7F--JFJL-J|||F7|||FJF7|F--JF7|LJL--7|||L-7L-7L-7LJLJ.LLJJLFJ| +LL.7.||LF-----J|F-JF-7L7F7FJ|F7||||F---7|F7||||LJ||||||FJ||L7|L7FJ|F-JL-JL7L7F7|L7F7L---7LJLJ|||||FJLJL---JLJF7F7FJLJ|F7L7L|F7L---7-JL|F||JL +FF-L7-J-L---7F7||F7L7L7LJ|L7||||||LJF-7LJ|LJ||L-7LJLJLJL7||FJ|FJL7|L-7F---JFJ|||FJ|L7F--JJF7-LJLJ||F7F7F----7|||LJF-7LJL7L7|||F---J7FJL7J.7J +7J--F7||F|7FJ|||LJL-JF|F7L-JLJLJ|L--JFJF7L7FJ|F-J.F7F-7FJ|||FJL-7||F-JL---7L7|LJL7|FJL----J|F---7|||LJLJF--7|||L-7|FJF-7|FJLJ|L--7J-L7J||-|. +LLF7JFLLLJFJFJLJF-----J|L7F7F7F7L---7L-J|FJ|-|L---JLJFJL-JLJL7F-J||L-7F7F7|FJ|F--J|L7F7F--7|L7F7LJ||F7F-JF-JLJ|F7LJL-JFJ||JF7|F7FJJFJL----|- +7F77LJ7||LL7|.LFJF7F7F7L7LJ||LJL7F-7L-7FJL7|FJF----7FJF7F---7|L-7LJF-J|LJ||L7|L7F7|FJ||L-7LJ|LJ|F7|LJLJF7L---7LJL-----JJLJFJ|LJLJFFJJ||LJFF. +|7||FL-|J-LLJ7.L-JLJLJL-JF7LJLF7LJLL-7LJF7LJL7L---7LJFJ|L--7LJF7|F-JF7L-7|L7|L7||||L7||F7L---7FJ|LJFF--JL----JF---7F7FF7F7L7|F7F77J|L|-77FFJ +--J7JF|J|JJLLF7F7JF7FF---JL---J|F---7L-7|L--7L7F-7L-7|FJF--JF7|LJ|F7||F7||FJL-J||LJ7||LJL7F7FJL7L7F7L-7F---7F7|F--J||FJLJL-JLJLJ|F--7LLLL-J7 +FJ.L.FJ.LF7F7FFJL-JL7L----7F--7|L--7L--J|F-7|FJ|FJF7LJ|FJF7FJ||F-J|LJ||LJ|L7-F7LJF7FJL-7.|||L7.L7||L-7||F--J|||L---JLJF---------J|F-J7|LJL7J +FL|7|.LL7LFJL-JF7F-7L77F-7LJF7||F7.L----JL7LJL7|L7||F7|L7||L7|||F7|F-JL-7L7L7|L--JLJF7FJFJ|L7L7||||F7LJ|L7F7|||F---7F7L7F-7F7F---JL-7-|7-LJ| +|JJLJ.FL|JL---7||L7L7L7L7|F-JLJ|||F---7F-7L-7FJL7||||LJFJ|L7|||||LJL7F7FJFJFJL---7F7|LJFJFJ.L7|FJ|LJL--J-LJLJLJL--7||L7LJFJ|LJF7F7F-JLF77J.J +F.FJ|LF.J.F---J||FJ7L7|F||L7F-7LJ|L--7|L7|F-JL7FJ||||F-JFJFJ||||L-7FJ|LJ7L-JF----J||L77L7|F-7LJL-JF7F---------7F7FJLJ-L-7L-JF-JLJ||||LL-7FJ7 +L-JLFJJ|.FL-7F7|LJ.F-JL-JL-J|F|F7L---JL7|LJF-7LJJLJ||L7FJLL7|||L-7|L7L---7F7L-7F7FJL7L-7|LJFJF7F--JLJF-----7F7LJ|L--7F7|L7F-JF-7FJL7-|LF7-L7 +L|.--.F|-7JFJ|||F-7L-7F---7FJFJ|L7F7F-7LJF7L7|F77F7||FJL7-FJ||L-7LJFJF-7FJ|L--J||L-7|F7|L7FJ-||L--7F7|F----J||F7L---J||F-JL--JFJL--J-|.LJ.LJ +F|7|JL-JF-JL-JLJL7L7FJL7F-JL7L-J|LJLJFJF7||FJ||L-J|LJL-7L7|FJ|F-JF-JFJFJ|FJF7F7|L7FJLJLJ7||F-JL7F7LJLJL-----JLJL-7F7-|||F7F7F-J||F777|F-L|.| +7.FJ.LLFF-7-|-F-7L7LJF-JL---JF7F----7L-JLJLJFJ|F--JF-7-L-J||7LJF7L7FJLL-JL-JLJ||FJL----7FJ|L7F7LJ|LF------7F7F7F7LJL7||LJ||||LF77|L77J|FJLF7 +F-J.-7F||.L7|FL7L7L--JF7F--7L||L---7L--7F--7L-JL--7|FJF-7FJ|F--JL-J|F7|F--7F--J||F7F---JL-J-LJL-7L7L-7F--7LJ|||||F-7LJL-7LJLJFJL7|FJ|LJ77.FL +LL77FLFJF7J|L7LL7L---7|||F7L-JL---7L--7|L7.L------J|L-JFJL-JL7F-7F7LJL7L-7LJF7FJ|||L7F-7F-7F7F7L|FJF7LJF7L-7LJLJ|L7L7F-7L7F-7L7FJ||.FJL-77L| +FJJL--7-JJFJJF77|F7F7LJLJ|L7F--7F7L-7FJL7L-------7-L7F-JF----J|FJ|L7F7L7FJF7|||FJ||FJ|FJL7||LJL-JL-JL7FJL-7L---7L7L7|L7L7LJFJFJL-JL7|||.L7.F +7LF-7F7F|F|-FJL7LJLJL7F7FJLLJFFJ|L-7LJF-JF7F7F---JF7||F7L---7FJL7L7||L7||FJLJLJL-J|L-J|F-JLJF7F7F---7|L--7L--7FJ-|FJ|FJ.L-7L-JF---7L-7--7.LJ +L-7LLFLJLL|-L-7L7F-77LJLJF77F7L-JF7L-7L--JLJLJF7F7|||LJL7F-7||F7|FJ||FJ||L7JF--7F-JF-7|L7F-7|LJ||F--J||F7L--7|L-7||7|L7F-7L--7||F7|F-JJ-J-L- +7FJ.J|LJJF--JLL7LJFJF----JL-J|F7FJL--JF7|F----JLJLJLJF-7LJFJ|||LJ|JLJL-J|FJFJF7LJF7L7||FJ|FJ|F-J||F-7L-JL---JL7FJ|L7L7||FJF-7|L7||LJ7FF7..FJ +F|FFJ|7L-7JF.FJ|F7L7|F---7F-7LJ|L-----JL-JF7F--7F7F--JLL7FJ-LJL-7L7-F7|FJ|.|FJ|F7||FJLJ|FJL7|L7FJLJ-L-------77LJFJFJJ|||L-JFJL7LJ|F--7|J-7JJ +LJ-..||.J|FFF7FJ|L7|LJF-7LJFJF7L7F----7F--J|L-7|||L----7|L7|J|F-JFJFJL-JFJFJL7LJ||LJF-7LJF7LJ|LJJF----------JF-7L-JF7LJ|F--JF7|F7||F-J7|-||7 +J.L7L-F7LLFFJ|L-J7||F7L7L-7L-JL7|L---7|L--7|F7||||F----JL7|F7FJF7L7L7F-7|||F7|F-JL7F|FJF-J|F----7L--7F7F-7F7F|FJF7FJ|.FJL7F-J|LJLJ||L|JL7F-7 +.F7J|LJ|7.FJFJJ7LFJ|||FL-7|F7F-JL----JL---J||LJLJ|L-----7|LJ|L7|L7|LLJFJL7|||||F--JFJL7L-7||F--7|JF7LJLJFLJL7||7|||FJFJF7LJF7L7F7FJL7F77|LJ| +FL7FL7.FJ7L7L-7FFJFJ||F--JLJLJF-----------7|L-7F7L-7F---JL--JFLJ-LJ-L-L7FJLJ||LJF7F|F7L--J|LJF-JL7||F7JF7F7FJ||FJLJ|FJFJL7FJL7LJLJF7LJ|-FF-. +7L77F7JJ.F-JF7L7L7|FJLJF--7F-7L7F---------JL-7||L-7|L-----77FF77||JJ-LLLJ.|-|L7FJL-J||F7F7L-7L--7LJLJL-J||LJ7|LJF--J|FJF7|L-7|F---JL--JFF|J. +J-|J-F7L-L--JL7L-JLJF7FJF-J|-L-JL--------7F7JLJ|F-JL7F----JF7||-|..|-FJLJ-L-L7|L-7F7|LJLJL-7L-7FJF-7F7F7LJ7F-JF-JF7FJL-J||F-J|L---------7-7| +.L|JFL-7L||F-7L-7F7FJ||7L--JF7.F--7F7F7F7LJL7F-JL--7|L7F7F-JLJL7F7--.LJ-|.FLLLJF7LJ||F-----JF7LJFJ.||LJL---JF7L--JLJF-7FJ|L7LL7F-7F-7F--JF7| +7.JFJLF|LF7L7L7FJ||L7||F----JL-JF7LJLJLJL---J|F7F7FJL-J|LJF7F7FJ||LL7L7FF-----FJL7|LJL--7F7FJL7FJF-J|F7F7F7FJL7F7F--JJLJ-|FJF7|L7LJFJL-7.|JF +F.FFJFLJL|L7L7|L7||FJLJL--------JL-----7-F7F7||LJ||F7F7|F-JLJLJ-|||.L|F|7-|-|.|F7L7F7F-7LJLJ-FJ|FJF7||LJLJLJF7|||L------7LJF||L-JF7L--7|777| +LFJF-L-|FL7L-JL7LJLJF------------------JFJ||||L-7LJ|||LJL-7F7JF-J|77.|-|LF--|FLJL7|||L7L----7L-JL-JLJL------J|||L7F--7F-JJF-JL---JL-7|||7.7J +F|LJ7-FJFLL--7FJF7F7L----7F-7F7F7F--7|F7L7LJLJF7L-7|LJF---J||7L7FJJL|J-|F|..|F7F-J||L7L7F--7|F-7F-----7F7F7F-JLJFJL-7|L7-FJF7F-7F---JF|L7-7| +-JF.|-J.F7F--JL7||||F7LF-JL7LJLJLJFFJFJL-JF7F7||F-J|F7L----JL--JL77-LLFJ-.--FJ|L-7||FJFJ|F-JLJFJL----7LJLJLJF7F7L---JL-JFJFJLJ|LJ-J-L-L-J7.L +LF-7||LF||L---7LJLJLJL7L7F-J|F-----J7|F---JLJ|||L--J||F7F7F7F7F7FJ7J7|FJL77FL7|F7|||||L7|L7F-7|7F--7LL------JLJ|F7F7F7F7|FJF7|F-7F|77.L.F|7. +F||FF|-FJL7|F7L------7L-J|F-7L-------JL7F---7LJ|F-7FJLJ||LJLJLJ||JJ-L-J||F||FJLJLJ||L77LJLLJFJL7L-7|F-----7F7F-J|LJLJLJ||L7|L7|FJF77F777FF-- +.J.L-J7L-7L-JL----7-FJF7FJL7L-7F-------J|F--JF7LJ7|L-77|L---7|FJ|.|F|7|FFFF7L----7||FJF7JF7FJF7|F7||L----7||||F7|F-----JL7||FJ||L|L7F7FL7L|J +FLJF--JJFL-------7|FJFJLJF7L-7LJF-------JL---JL--7|F7|FJF-7FJFL-JFFF7LF-F-JL7F---J||L7||FJLJFJ|LJLJ|F7F7FJLJLJ|||L--7F-7FJLJL-JL-JFJ|L7JJFJ. +F.L||FFFLF------7||L-JFF-J|F7L--JF---7F-7F7F7F-7FJ||LJL7L7|L7F-7-L-LJLJLL--7LJF--7|L7|||L-7FJFJF7F7LJLJ|L7-F7J|||F--J|FJ|F--------JJ|FJ.F--| +FJ-L7-F7JL-7F7F7LJL7F-7L-7LJL--7.L--7|L7||LJ|L7|L7|L-7FJFJL7|L7|.L7||-7LLF7L--JFFJL7|LJL--J|FL7|LJL7F-7L-JFJL-JLJ|-F-JL-JL---7F7F7F7||F7J-|| +F-77JJF----J|||L7F7|L7|F7L----7|F---J|FJLJF7L-J|FJL7FJL7|J-LJL|L7J7FJ|-LL||F-7F7L-7LJF--7F-JF7LJJF7LJ7L---JF-7F-7L-JF7F---7F7LJLJLJLJLJ|F-J7 +-7F7|.L-7F7FJLJFLJ|L-J|||F----J|L---7|L--7|L--7|L-7|L-7LJF-77L|FJ-F-7F7..||L7LJ|F-JF7|F7||LFJL7F7|L--7F---7L7|L7L--7||||F7LJL--7F------J7||| +FLF-77LLLJLJF7F7F-JF-7|||L--7F7L7F--JL7F-J|F--JL7FJL--J||L7|F7|L-7L7|||F7|L7|F7||F7|LJ|LJ|FJF7LJ|L--7LJF-7|FJL7L--7LJ|L-JL7F--7LJLF7F7||.-F- +F--JL|F7|JJFJLJLJF-JFJLJ|F7LLJL7|L---7LJ-FJL---7|L-7F---7FJ||LJF-JFJLJ||LJFJLJ||LJLJF-JF7|L-JL-7|F7JL-7|FJLJF7L---JF7|F--7LJF7L--7|LJL777L|J +|.L|7F-JJ|-L7F7F7|F-JF-7LJ|F---JL----JF-7|F----JL-7|L-7FJ|FJL7FJ.FJF--JL-7|F7FJL7FF7L--JLJFF-7FJLJL---J|L---JL--7F7||LJF7|F-JL--7LJF--JL7FL7 +.JLFFF7.LFF-J|||LJL--JFL-7|L---7F--7F7|FJ|L-7F--7-LJF-J|FJL7FJL-7L7L-7LLFJ|||L7FJFJ|F--7LF7L7|L7F-7F-7FJF------7LJLJL-7||LJF7F7FL--JF-7.F--J +..F-FJL7||L--JLJFF-------JL-7F-J|F-J|LJL-JF-J|F-JF-7L-7||F-JL7F-JJ|F7L7FJFJ||FJL7|FJL7FJFJL-JL-J|FJ|FJL7L--7F7.L--7F-7LJL7FJLJL-7F7FJFJ-LJ.L +--LJL7FJF----7JF7L-7F-7F-7F7|L--JL--JF7F-7L--JL--JFJF-J||L7LFJL7F7LJ|FJL7L-J|L7FJ||F7|L-JF7F---7|L-JL--J|F7LJL---7|L7|F-7LJF---7LJLJFJF7JFJ7 +|.|||||-L---7|FJL7FJ|FJL7||||F7F-----JLJFJF--7F---JLL-7|L7L-JF7|||F7||F7L--7L7|L-JLJLJF-7||||F-J|F--7F---JL-7F---JL-J|L7|F7L--7L7F7FJL||.|-7 +|7.-FJL7..F7||L-7|L7||F-JLJ||||L------7.L7L-7|L---7.F7||FJF--JLJ|||LJ|||F7FJFJL---7F7FJFJ||L7|F-JL-7|L-----7|L------7|FJ|||F7FJLLJLJ||||-7|| +L-7-L-7L--JLJL7FJL7LJ||F-7FJLJ|F7F---7L-7|F7||F---JFJ|||L7L7F7F-J|L-7LJ|||L7|F7F-7|||L7L7|L7|LJF---JL-7F---JL-------JLJ-LJLJLJF7F-7F7FJ|-JF7 +.LLFJJL7F-7F-7LJF7L-7LJL7LJF-7LJ|L--7|F7||||||L---7L7|||FJFJ|||F-JF-JF-J||FJ||LJFJLJL-JFJ|FJ|F7L-----7|L----7F-7F7F-----------J|L7LJLJFJ7F-L +L.L.L7LLJFLJLL7FJ|F-JF7FJF-JLL-7L---JLJLJLJ|||F7F-JFJ|||L7L7|LJL-7L-7L-7||L7||F-JF7JF-7L-JL7|||LF----JL-----JL7||||F--7F-------JFJF7F-JJJLJJ +|7.FLF7F---7F7LJFJL--JLJFJJF-7FJF7F-------7|||||L-7L7LJ|7L7LJF7F7|F7L7FJ||FJLJ|F7|L7L7|F7F7LJ|L7L--7F7F7F7F---JLJLJL-7|L--------JFJ|L--7|FL7 +LL-F7|LL7F7LJL-7L---7F-7L-7L7LJFJLJF------JLJLJL--JFJF7|F7|F-JLJLJ|L-JL-J||F--J|LJFJ-||||||F7L7|.F7LJLJLJLJF7F7F--7F-JL-7F7F7F--7|-L7F7|JJ-| +77--JJ-LLJ|F7F7L----J|FJF7|7L7FJJF-JF7F7F--7F7F7F7LL-J|LJLJL7|F7F7L-----7||L7F7|F-JF-J||LJLJL7||FJL--------J|||L7FJL---7LJ|||L-7|L7LLJLJ7LF- +|-7JL|.F|JLJLJL7F7F7FJL7|LJF7LJF-JF-JLJLJF-J|||LJL-7F-JF7F7FJFJLJ|F-7F--JLJFJ||||F7L7FJL--7F-J||L----------7LJ|FJL--7F7L-7|||F-JL7|.LLL-|.|J +JJF7JFLJ||F----J|LJ||F7||F-JL-7L7FJF----7L-7|||F---JL--JLJ|L-JF--JL7|L--7F-JFJ||||L-J|F-7FJ|F7||F7F7F-----7L-7||F--7LJL-7||||L7LLLJ--7|F-7L. +||L7.|7|FFL-----JF7LJ|||||F--7L7LJFL---7|F7LJLJ|F-7.F7F7F7|F-7|F7F7||F7FJL7-|FJ||L--7||FJL7|||||||||L----7L--JLJ|F-JJF-7|||||FJ77-JF|77|LJ7J +7-FJFF-LLF-------JL--J|LJLJF7L7|F7F----JLJL----JL7L7|||||||L7|LJ||LJ|||L-7|FJL7||FF7|LJ|F7||||||||||F---7L--7F7FJL---JFJLJ||||F-77.JJL|7LJ7. +L7|F-F--LL7F-7F-7F-7F7|F7JFJL-J|||L----7F7F7F-7F7L7LJ||||LJFJL--JL-7|||F7|LJF-J||FJ||F-J|||LJ||LJLJ|L--7L---J|||F---7FJ7LFJ||LJFJ7FL7L||7JL- +|FL.L|.F-|LJLLJFJ|FJ||LJL-JF--7LJL-----J|||||FJ|L7|F-J|||F-JF7F7F7FJ||LJ||F-JJFJ|L7||L--J||F7|L---7L7F7L---7-|LJL--7LJF7LL-JL7FJJ.LFFF-JL... +FJJ77LF--7F|LLLL-JL-JL-7F--JF-JF--------J||LJ|FJFJ||F7|||L-7||||||L7|L-7LJL7F7|FJ7|||F---JLJ||.F77|FJ|L---7L-JF7F-7L--JL-7-LL||L|7F-|LLL7..F +LJJ||JJLJ|F7.|F-------7LJF7FJF7|F--------JL-7|L7L7|||||||F-J|||LJ|FJL-7L-7FJ||||F7|||L7F7F7FJ|FJL7|L7|F7F7L---JLJJ|F7F---J7.F||F|LF-|7JF---7 +.|LFJJFLF|-|7LL--7F7F7L--J|L-JLJL--7F7F-7F7FJL-JFJ||||||||F7||L-7|L--7|F7||FJ||LJ||||FJ||||L7LJF-J|FJLJLJL-------7LJLJ7FF---7|L7|F|-FJL|JF|| +F-L|J7F--|F77-|F7LJ||L7F-7L7JF7F7F7|||L7|||L---7|FJ|||||||||||F7||F--J||||||FJL-7||LJL7|||L7L-7|F-J|F7F7F-7F-----JF7F7F7|F--JL-JF---L7|.||F7 +|F7-7F|L|L-L7-FJL7-LJLLJ.L7L-JLJLJLJ||-||||F7F7||L7|||||||||||||||L-7FJ||||||F7J||L--7||||FJF7||L-7|||||L7|L------JLJLJLJ|LL|FL--.F-L-|-LJ|J +.||F-||-FJ7L--|F7L--7F--7FL7F7F-7F-7||FJ||LJ|||||FJ||LJ|||||||||||F7||FJLJ||||L7|L7F-J|||||FJ|||F7|LJ|||FJL7F------7F7F-7L7.L|F-FJ-|LLLFJ-.J +F|F--F7F|-J.|7LJL7F7|L-7|F7||||FJ|7||||-LJF7||||||FJ|F-J|||||||||||||||F7FJ|LJF||FJL-7||LJ||FJ|LJ|L7FJ||L-7LJF---7LLJLJ-L-J7|||.L7.7|..L|..| +7-J|F|F7|L|.LLF-7LJ|L-7|||LJ|||L-JFJ||L---J|||||||L7|L-7|LJ||||||LJ|||LJ|L7L7FFJ|L-7FJ|||FJ|L7L-7|FJ|FJ|F-JLFJF7FJF7F7JF7F7F--7JJ7F|-J7F|.FJ +F7L|7JLL7-77F7L7L--JF7LJLJF-JLJF-7L7|L7F---J||||LJ-||F-JL-7LJ||||JFJ|L7FJFL7L7L7|F-J|F|L7L7L7L7FJLJFJL7|L---JFJ|L-JLJL7|||LJF-J.FJLJL|7F-|-- +L7F|.F|JL7|7LL.L-7F7|L-7F7L--7LL7L-J|FJL--7-LJLJ.F-J||F7F7L7FJ|LJFJFJFJ|F--JFJFJ||F7L7|FJFJFJFJL--7L-7||F7F7FJ-L------J|||F7|7-LF|7LF-JJ-F7| +7||-|F|F-JLJJL7LFJ|||F-J||F--JF7L-7FJL7F--JF7F7.FJF7|LJ|||FJL-JF-JFJJL7||F7FJ-|FJLJL7||L7L-J|L7F-7L7FJ|LJ||LJ7JF7JF7FF7||||LJJ7L|J.|L7.||L|J +L|JL7--J|7.FF7.FL-J||L7FJ|L7F-JL--J|F-JL---JLJL7L7|LJLFJ|||F-7JL7FJF7FJ||||L7FJ|F---J|L7L--7F-JL7L-JL7|F-JL7F7FJL-JL7|||LJL-7JJ|F-L-J-L7FJLF +LJJFJ-F-7F-7FL-LF--JL7|L7L-JL--7F-7|L7F-7F-7F7FJ||L7F-JFJ|LJFJF7|L-J|L7|LJ|FJ|FJL7F7FJJ|F--JL7F-JF--7LJL7F7LJLJF-7F7LJLJF7F7|7JFJF|-|JL7L7FJ +LF|7..LF|F-FF7.LL-7F7|L-J-F7F7FJL7||FJ|FJ|J||||F-JFJL-7|.L7FJ7|LJF7FJFJ|F-JL7|L77|||L-7LJF---JL-7|F7L7F-J|L7F7FJ|LJ|F-7FJLJ|L7-|7F-J|.FJ.L77 +FFJ.|JFF|.--JF.7JLLJLJ7F--JLJLJF7|LJL-JL7L7|||||F7L-7FJL-7|L7FJF7|||FJFJ|F7FJ|FJFJ||F7L-7L7F7F-7LJ|L7|L-7|7|||L7F-7LJF|L-7L|FJLL7FJ-|J-JFLJJ +-J7|J|--J||LLF.|L-JF--7L----7F7|LJ|F77F7|FJLJLJLJ|F-J|F7FJ|FJL7|||LJL7L7|||L7||FJFJ||L7FJ7LJ||J|F7L7LJF-JL7||L-J|FJF7FJF7L7||.|L|.LFJJ.F7LFJ +|L-7FJ..F-777.77FJJL-7L7F7F7||||JF-JL-JLJL----7F-JL-7|||L7|||FJ||L7F7|FJ|||FJLJL7L7||FJL-7F-JL7||L7L7FJF7FJLJF7-|L-J||FJL-JLJFFF77LFJFF7J-J7 +77JLJJL77L|77-|LLJ.LLL7LJLJLJ||L7L7F---7F-7F--JL-7F-JLJ|FJ|L7|FJ|FJ|LJL7|||L7F--JFJLJL7F-JL-7FJ||7|FJL-J|L---JL-JF7FJ||F7F--77L7J7LL-7F|-7-F +.7L7.FLL|-F7J.|-.|7.|-L7F7F-7||FJFJ|F--J|FJL---7FJL7F7FJL7L7|LJFJ|FL7F7||||FJL7F7|F---JL7FF-J||LJFJL-7F-JF7F-7F7FJLJF|LJLJF-J-JL7|7JF-7L-L-J +.77L-|7FL7L777J|7F-.FFFJ|LJFJ|||LL7||F7FJL7F7F7||F7LJ|L7FJFJL-7L7|F-J||||||L-7LJLJL7F7F7L7L-7L--7|F--JL7FJ|L7|||L---7|F7F7L77--7|JF7L7J|J7L- +F||7FJ.L.L7.J7-7|J-LFFJFJF7|FJ||F-J||||L-7||LJLJLJ|F-JFJL7L7F7L7|||F7|LJ|||F7|-F7F-J|LJ|FJF7L7F7||L---7|L7|FJ|S|F--7|LJ||L7L7JF-7---L|LFFJ7| +-7L-L.FJ.F77JF.|JJFLLL-JFJLJL7LJ|F7|||L7FJ|L-7JF--JL-7L7FJFJ||FJ|||||L-7|||||L-J|L-7L7FJL-J|F||||L7F--J|FJ||L|||L-7|L-7||FJFJ7F-|7L7F-F-J-J7 +FL.|-L77F7LJ.L.|F-7-|F-7L-7F-JF-J||||L7|L7|F-JFJF7F7FJFJ|FJFJ|L7||LJL7FJ|||||F-7|.FJFJL7F--JFJ|||||L--7|L7|L7LJ|F-JL7FJ||L7L77L-FJF|J-L7F--7 +-77||7|7J|JLJ|.LL7|F-L7L--JL-7L-7||||FJL7||L-7|FJ|||L7L-JL7|-L7|||FF7|L7|||||L7LJFJFJF-JL-7FJFJ|L7L7F-JL-JL7L7FJL--7||JLJJ|FJJ7-JFL|JL|-LJ7| +F|J|FFJ.F|.F-FJ-LJL-J.L---7F7L7-LJ||LJ.FJ||F7||L7|||FJF---JL-7||||FJLJFJ||||L-J|FJFJLL7F7FJ|FJFJFJFJL---7F-JFJL-7F-JLJF||.LJJL7.|7-|LLF7LF-J +F|-LF-7F|F-J-JF-7LFJ7FF---J||FJF--J|F--JFJ|||||FJ||||-L--7F7FJLJ||L-7FJ|LJLJF7F7L7|F7FJ|LJFJL7L7L7L-7F7FJ|F7L-7-LJJ|-J-F7JJ7.|L.FJF--FJ-.J.J +L|.LLJF|.F|J7L|J|7.|7FL-7F7|||FL7F7|L7F7L7LJ||LJFJ|||FF7FJ||L--7||F-J|F7F-7FJLJL-JLJ|L7|F7|F7L7L7|.FJ|LJ|LJ|F7L---7||7.|J|7L77.FJJL7|FJ|.|7| +FJ-7.FJ.--JF7J|7L-|-7-J.LJ|||L7|||||FJ|L7L7FJL7JL-JLJFJ|L7||F--JLJL-7LJ|L7LJF7F7F7F7|FJLJ|LJ|FJFJL7L7L--7JLLJ|F-7FJ-.-FJ.J7F--7|.F-L-|F7.F-L +|L7F7|J7.|7F77L-7LJ.F-|-||LJL-JFJ|||L-JF|FJL7FJJ|||.FL7L-J||L--7JF--JF7L7L7FJLJ||||LJL7F-J7FJL7L7FJLL---J-.LJ|L7||.|7L|LLF-7|-LL.LFJLJ-|7LJL +F-J.FJ.J.FJ7|FJ.777--7JF.JJ|J.LL-J||F---JL-7||JF--J.F-JF-7||F7FJFJF7FJ|FJFJL7F-J||L7F7|L--7L7FJ|||LF--7J|JFJLL7|LJ777-|.L|J-J.LJ7L-7-LF7FJ-7 +F7F|L|-FFJJ.L---LJ-7FLFJL77F---JJLLJL-7F7F-JLJ.||.|-L7FJFJ|||LJFL7||L7||FJF-J|F-JL7||LJF7FJJ||F-JL-JF7L---77-L||J-JJ7J.77L-FL.J.|J|77.JJFJF- +FJ7L--77L--7L|77LJLL-JLFJF--7-|JJ|LL-LLJ|||||.JF|FF7LLJFJFJ|L7||J||L7|||L7|F-JL--7LJ|F7|LJJLLJ|F7F-7|L7F--J|LLLJFJJ.L..7JLF-.7LL.FFJ77||J.|. +L-|.|7LJF|F|-FF7FFJJ|J.L--FJJ.||FJ|LJ|LJ||7-LJLJ.JLJ7-LL7|LL7|J-FJ|LLJLJFLJL7F7F7||FJ|LJFLJJF-J|||-|L7||7|L|.|L7-7|F|-LJ.FLJF|7LFFLJ-777-|.| +|JL77-LJF-7L-J|LJF|-|.F77|LLF-|-LLJJ.L..LJJ.|.L|7J|L-7JL||JLLJ-LL-JJ|LJ-LLF-J|LJ|L7L-JFJJ|FFL7FJ|L7|FJLJ--LJ-JJ||---7FLJL7J||J|L7JF|F-FJ-L-L +|J|.L7|7.L|FLFLL-L.||..J7-7.L-|7L7LF|LF77.F--7|L|LFF|..LLJ7LLJJ.L-JF|J.LLLL--JJL|FJ-|---LL--.LJFJFJ|L7.L.FL|-|.LF7L--JJ|.L-J|-|-J.LJL-77|..| +|-J7LJ|FL7.F.|JL77LFL7.L|L--7LL|7|L-JF7JL-||L-7.LF|-777.|J77|J.F|J.7J-F7L|.F|..FJL-7J.|.7.LLFJ-|FJFJFJ7L-7.|.7-JJF.FFL7-LJ-F|77JF7-F|L-777.F +77JF.||77.J-.|--J77|L7.F7J7|LFLLF|7J7.|F|.J7.L|.-|J|JFFJ.||LJ7FFJ-7L7FFF.L7F-F7L-7FJ77|.LJ.FJ77LJ-L7L7.LL--J.|7F7L.FJ||.|L7-L.JFJ77|LJL--L.L +|F-|FFL7-.|F7-7.LL|-J|LLJ-F-FJ7-LJJF-7FL7.FL7F-7---J--.LLL-7F7L||.|JFLJJ.|--.|L7.LJF--J-7.FF--7.L|FL-J7.LLL-FLL--7F7LLL-JFJ7|.|FLLJ7|LLJJJ.. +|JJ|LL7JF--LJ7LF7|L|||JJ|-7J|7L.LJ-7.-7FL-LJ-7JJ.LFJ.LL-|FF|LJF---JF-7.7JJ..7-.J-FL|J-J.FJ--7JJ-7||-JJ---L|.LJ|.F|L77J||LJ.FL--J.FJLF7.|F7FF +L|L|.LLL-JL|.|-777-L77J.L-LL|7L|.L7J-L.FL-J.LJL7J-7J-L.LL-77.7-JFJL--|7L|J.--J.LJL-JJ.F7LJ.LJ.L----JLJJ.FJ|...7J-L-L7L|-7L7-LFJJ-|J--|7JLL-L diff --git a/data/11.in b/data/11.in new file mode 100644 index 0000000..8d33eef --- /dev/null +++ b/data/11.in @@ -0,0 +1,140 @@ +..................................................................................................#..................#...................... +............#...............................................#.........#........................................#............................ +........................#................#.........#....................................................#......................#.......#.... +....#............................................................#.............#............................................................ +...............................................#....................................................#....................................... +...........................#..........................#..................................................................................... +..................................#...................................................................................#............#........ +...................#.....................................................#....................................................#.........#... +.......#.................................#.......#...........#...............................#.............#.....#.......................... +............................................................................................................................................ +....................................................................#.........#........#.................................................... +.#........#.....#.......#..............................................................................#.........................#.......... +............................................#...........................................................................#................... +.......................................#.......................#............................................................................ +.......#....................#............................#......................................................#........................... +.............#..............................................................#.....#......................#.................#................ +...........................................................................................#................................................ +.........................#............................#.....#............................................................................... +...................................#...................................#.................................................................... +........................................................................................#............................#................#..... +..............#......#........#.........#.........................#................#........................................................ +....#...........................................................................................#........................#.................. +............................................................................................................................................ +............................................................#...............#...........................#........................#.......... +...................................................#.............................#.................#........................................ +..#......................................................................................................................................#.. +...................#....................#..............................#....................#...................#.........#................. +.......................................................#.................................................................................... +......#.............................#..............................................#........................................................ +...........................................................................#....................#.........#................................. +....................................................................................................................#....................... +#............................#............................................................#...................................#.......#..... +...................................................#............#........................................................................... +........................#................#........................................................#......................#.................. +.......#.......................................#.................................................................#.......................... +...........................................................#...............................................#................................ +..#.................................#................#.......................................................................#.............. +.............#....................................................#......................................................................... +.........................................................................#.........#.....#..........................#...............#....... +....................#.......#..................................................................#............................................ +..................................#............#...............#............................................................................ +.#.......#.............................#....................................#............................................................... +.........................#...........................#.............#................................#..........#.........#.................. +.....#.........................#............................................................................................................ +...............#............................................#...........#................................................................... +....................................#............................................#.....#.................#..........#........#.............. +............................................................................................................................................ +.#................#.................................................................................................................#....... +.........................................#..............#......................................#.....#...................................... +.....#.....#...............#................................................................................................................ +.................................#.........................................................................#.............#.......#.......... +.............................................................................#.........................................................#.... +.......................................#.......................#............................................................................ +.................#.................................#.....#..........#.....................#.....................#........................... +............#..................................................................................................................#............ +#...................................#....................................................................................................... +........#..............#..............................#..................................................................#.................. +............................................#..............#................#......................................#........................ +............................................................................................................................................ +...................#......#.......................#..............#..........................................................#.....#........# +................................#............................................................#.............................................. +......#...................................#.......................................#...............#......................................... +.....................................#........................#.......#......................................#.................#............ +...........#...........#...............................#.............................................................................#...... +.#...........................................#.........................................................................#.................... +............................................................................................................................................ +..................................................................#...............................................#......................... +..................................................................................#.......#................#................#............... +.........................#.......#...........................................#........................................................#..... +.....#..............#......................#.........#......#.........................................#..................................... +.....................................................................................................................#...................... +....................................................................................#.....................................................#. +.............#.......................#...................................................................................................... +.#......................#....................#.....................#.............................................................#.......... +..................................................#.........................................................#............................... +.................................#........................................#................................................................. +.....................................................................................#..............................................#....... +............................................................................................................................................ +.......#..................#.............................#........................#.................#.................#....................#. +..........................................................................................#................................................. +....................................#..........................#.........................................#.....................#............ +......................#...................#..................................#....................................#......................... +....#........#.............................................................................................................#................ +...............................#...............#......................#...............................#..................................... +.........#.......#.......#.................................................................................................................. +.#.....................................................#....................................#.............#...........................#..... +...........................................#......#......................#.....................................#............................ +.............................................................#.............................................................................. +.............................#......#..........................................#............................................................ +....#..................#............................................#...............................#....................................... +.........#.......#.............................#.........................................#..................#........#............#......... +.......................................................................................................................................#.... +#.............................................................................................#............................................. +...................................#..............................#......................................................#.................. +............................#...........................#................#.............................#.......#..............#............. +................................................#.........................................................................................#. +........#.............#..................................................................................................................... +....................................................................#......................................................#................ +............................................................#........................................#...................................... +.............#...................#.................................................#........................................................ +.............................................................................#.......................................#...................... +.........#...................#........#.........#........................................................#..............................#... +.#....................................................................#..................................................#.......#.......... +................#...............................................................................................#........................... +......................#....................#............#...............................#................................................... +......#.......................................................#...................................#......................................... +.........................................................................#......#............................................#.............. +..........#.........................................................#....................................................................... +............................#.........#................................................................#............#....................... +.......................#......................................................................#.............#............................... +................#.......................................#...............................................................................#... +#..............................#.....................................................#...................................................... +............#....................................................................................#..............#.......#................... +.....................#..............#............................#.......................................................................... +....#.............................................................................#.......................................................#. +.....................................................................................................#.....#.......................#........ +...............#..............#............#.............................................#................................#................. +...........................................................#.........................................................#...................... +.....................................................#...........................................#..............#........................... +...........#...............#.......................................#...............#........................................................ +................................#........................................................................................................... +................#.........................#...............................#.............#.......................................#.....#..... +...............................................................#.............................#........#...............#..................... +..#......................................................................................................................................... +............................#......#................................#.............#...............#......................................... +...........#.........#.............................#.........................................................#.............................. +.....#...................................................#..................#..................................................#...........# +..........................................#..............................................................#.................................. +.....................................#...................................................................................................... +.......................#......#............................................................#.......................#........#.....#......... +.#........#.......................................#.........................................................#............................... +................#................................................................#.......................................................... +.........................................#.............................................#.................................................... +...............................................#.......................................................................#........#........... +............................................................................................................................................ +..............................#.........................#......#....................#....................................................... +.............................................................................................................#.............................. +.................#.......................................................................................................................#.. +........#................................#.........................#............#.........#......#........................#................. +........................#...............................................................................#................................... diff --git a/data/12.in b/data/12.in new file mode 100644 index 0000000..c18164d --- /dev/null +++ b/data/12.in @@ -0,0 +1,1000 @@ +??#??????#..????? 9,2,1 +???##??#?.?#? 5,1,2 +????.????. 1,1 +.?#?????###???. 1,6,1 +????.?#????#?? 2,1,1,3 +??.??.?????#??##.??. 1,1,10,2 +??.?###?#??????? 2,7,2,1 +?????..#??? 4,1,1 +#?????.?#???.#.???# 1,2,4,1,1,1 +??#??#???????.?#??? 1,1,7,1,2,1 +?..??#????#?.? 3,1,2 +..#?????.#.??#.? 1,3,1,1,1 +?#.?.?.??#??#?#??? 2,1,1,10 +???#???.##?#?????#.? 1,1,1,6,1,1 +?.??#?#?#?#?? 1,8 +?#??????????? 2,4 +??????????? 4,1,1 +????.??#?. 4,3 +??###??????? 6,1,1 +?.?.?#???#?. 1,5 +??.?#?..???.???###? 3,1,7 +?????#.????? 3,2 +#???????.??????#?? 1,4,1,2 +?#??????????#??. 1,11 +?.????..?..???##? 4,1,6 +??????#???#?#?.# 9,1 +?#?#??#?##?##?.#??. 10,3,3 +??##?#?##????? 8,2 +???#??#?.?.???? 5,2 +?.??.?..??????.????# 1,2,1,6,3,1 +?..#????#???#??.?.?# 1,1,9,1 +.?#?.?????. 2,1 +???##.???#???#???? 1,2,5,3,1 +??????????#?.?.??.?? 9,1,1,2 +.#.???????.???#. 1,1,5,1 +??.??????##?.? 1,2,4 +?????.??.#?.#.# 1,2,1,1,1 +#?????.???????#.??? 1,2,1,1,2,2 +?#?????..#????#? 6,1,4 +.??????.???#??? 5,1,1 +??????.?#??# 5,2,1 +??.?#?.?#?.#??? 2,2,1 +???#?.#???.?. 4,3,1 +???.?#??##..##??.? 1,6,3 +???##?#?#.#???.?#?. 1,7,3,3 +#.?????#??????? 1,1,1,6,1 +?#.?.???## 2,1,2 +?.???#????? 1,2,1 +?.?#??.?#?#??.#.?#?? 1,1,6,1,1,1 +??.????.??#? 1,1,1,2 +??.#?#??.???#??#?? 1,1,1,1,7,1 +.?.??.#??? 1,1,2 +????????##?#??#?..? 6,1 +?.???#?#.?.?#. 1,5,1,1 +?.??#???.??. 4,1 +???.???.?#.?#??#?.?? 2,1,2,2,3,1 +.#????#.??#? 6,4 +#?????.???##?? 4,1,1,4 +..????#??????????# 10,3 +#????##?#..? 9,1 +?#.?.?#?.? 2,1,1 +?#?.##???????.????? 3,4,2,3,1 +?..?#??##????????# 1,7,1,1 +??.?#.??????????. 1,2,2,6 +?????..?#?????????#? 1,1,8,1,2 +??#???????. 1,4 +?????????##.?????? 1,8,1,4 +#?#.?.??###??#????? 1,1,1,9 +??#????#.??????.??## 1,6,2,2,4 +...#?.?###? 1,4 +#.?#..???#??. 1,1,1,3 +.????.???? 1,3 +.#??..???????.?? 1,1,5,1 +.???????????? 3,1,4 +?..#????????.?.#?? 1,3,1,1,1,1 +???##??.???.#? 2,2,3,1 +??#?#?????????. 7,1,1,1 +???###?#??.???? 9,2 +??#?.??????.??##???? 3,1,2,4,1 +????.???.? 2,1,1 +?..?...#??????#?.?? 1,2 +????#???#?????? 4,1,6 +??####??????.#??#?? 8,2,1,1 +#???????.??.??. 5,1,1,2 +????#?#??? 1,5 +.????????? 1,2 +???????#?. 1,2 +?###..##?. 3,2 +.??#??.??????.??#.#? 2,1,4,1,1,1 +?.??###?#.? 5,1 +???##???#?#?.#?. 11,2 +.??#???..?#?????#? 3,5,2 +???#?#.???#?? 1,1,4 +?.??.??.?? 1,1,1 +???.???#???#?????#? 1,12 +?#??????#?.?#? 3,1,3,2 +?#??.?##???.?.?. 3,5,1 +????.?????# 1,4,1 +.???#???#??#.?.??? 2,5 +##??????.?????? 5,1,1,1,1 +.?##?###??#?? 7,2 +#.????#?????????#??# 1,2,11,2 +?.??.?#???????? 1,1,10 +???#????#?? 2,1,1 +????..??#? 1,2 +.??..????##.? 2,5 +?????.#??? 1,2,1 +?..#.??????? 1,1,4 +??#??#???###?# 5,3,1 +???.?#..#? 1,1,1 +??#?????#??#????##?? 1,2,1,3,1,6 +??????????###??.?. 2,3,3,1,1 +??#???.??? 3,1,1 +????????.? 1,3,1 +?#??.??????.? 2,6 +???.#????..#??#? 2,1,3,5 +????.?#??#? 2,2,2 +??.????#????#????#. 1,1,5,1,1,1 +??#.????##?#??# 1,8 +?#???##?#???.#????. 8,2,1 +#?#????#?#?.#?. 1,8,2 +#??#??##?#???. 1,10 +.?????.??? 5,2 +?#???????.?. 2,1,1,1 +?.##???..??#??###?? 5,1,8 +?.??????#???.?#? 1,7,1 +??.#??????.?.#???#? 1,4,1,1,3 +.?#?????#????# 2,10 +##??????#..? 2,2,3,1 +#?????.??????#?? 6,2,2 +?.#?????#?# 5,1,1 +????.???#????????? 4,12 +???##??.??????? 5,3,1 +#?????#.?.??.#?# 1,1,1,1,3 +??##??#?#? 4,1,1 +???????????.?? 1,3,1,2 +.?????#.??#. 2,2,1 +#.#?.??##????#????? 1,1,1,7,1,1 +?.??#.??????? 1,1,1,2 +#?.?#??#?????.?.? 1,5,1,1 +?.?.??#??? 1,4 +???#??#?.?.????#.#. 7,1,2,2,1 +..???#????????#? 5,1,1,2 +##????..#???? 3,2,4 +?.?.#?#?????.#??#?? 6,1,4 +???.?##???.????.?? 2,4,1,1,1,1 +??#????.?#?. 4,2 +?#???????#?#???#? 3,1,7,2 +????..#???? 2,5 +?#.?????????? 2,1,3,1 +?????.??##?#.#????? 1,1,6,1,2,1 +#??#??..#? 1,1,1 +?????#????#??#???.? 2,8,1,1,1 +.????##?.#????#?. 4,6 +.?.???.#?###.? 1,5 +?.??##??????.#??# 8,4 +?#????#??#. 2,5 +??#??#.#???#???# 1,2,2,1,1 +.#?..???.#??#?????#. 2,1,1,2,5,1 +?.???##??#?##.? 1,7,2,1 +?#??#?#.??.?.? 3,3,1 +??#???#???#????. 11,1 +.###?????????? 4,1,3 +??#??#????..###?.?? 6,2,3,1 +#???.##?.?? 4,2,1 +??.##??#??.????# 6,4 +????#?????. 1,7 +???.???????#???#? 2,1,10 +?????###??.?##?? 1,5,3 +???#.##?#???#?#??? 2,1,8,1,1 +?..?##?.?????#? 1,3,5 +????????????###???? 1,1,2,1,8 +#??.?#?#?.?????#?. 3,1,1,1,1,1 +?.?????.?#??##??# 2,1,3,5 +???##?#??????#.??? 10,1,1 +??.?###?#? 1,6 +???###??????? 6,4 +??????#.?.#??? 1,2,2 +.?.?.??#?????#???#?? 1,1,8,2 +?#..??????#.????. 2,1,2,1,2 +.??#?.????##??#.?.# 1,2,7,1,1 +??###????.???#???? 5,2,2,2,1 +?#???#?#..?? 2,1,1,2 +?.#?#??.???? 3,3 +.???#?.??????###???? 3,9 +????.##?????..#??.? 1,1,3,1,1,3 +????????.??????#? 1,3,6 +????.#.?#?#?????#??. 2,1,11 +#???????#? 1,1,1 +?????##?##? 3,6 +?#???.??##?#?????.# 1,2,7,1,1,1 +.?.#??.??.???##???#? 3,1,9 +#????????#???.??? 2,1,1,5,1 +????#??.?.?#??###?# 2,1,1,1,9 +?#.??..??###???? 1,1,1,5,1 +?.??????.?#.?.?#???. 6,2,1,2 +????#??????? 1,6,1 +#?.??.??#?.??#??? 1,2,1,1,5 +.?##?????#?##??.? 5,6 +?????..####????.? 4,8 +?#?????###???????. 9,5 +?????????#???..? 1,3 +??#?.???.?.?.?? 2,1,1 +???.??????#??#??#. 1,2,1,1,2,1 +.#???###??#???.?#??? 11,3 +?.???.??##?. 2,3 +???#???????##??#? 4,1,5 +.???#?.?????## 1,1,2,3 +?..????##????.??#.?. 7,2 +?#?#.??#???.????#.? 4,6,1,1 +.#??????##??##.?###? 2,2,4,2,3 +?????#???##???.##?. 1,4,3,1,3 +#..???##???##?.??#. 1,5,4,1 +.????#?#..????#??. 6,2 +??#??.???#?####. 2,1,8 +.???.??#?? 1,4 +?#?..????#??????? 2,9,1 +????#??#??#???.?. 6,4,1,1 +???????#.?..?? 5,1,1 +??##?????##.??.????? 11,1,1 +.#?##?????. 5,1 +#.??????#??????? 1,10,1 +??#??????.##???. 1,1,1,1,4 +?????#??#?. 1,1,2 +?.?#?#??.?.#???? 4,3 +#?#.?#.????? 1,1,1,1 +??????????#? 5,1 +??????#?.?##?#?????? 3,7 +.????????.?...? 1,2,1,1,1 +??##???##??#.???? 1,2,4,1,3 +???#?.#????? 1,1,1,2 +.??????.????.??#? 4,3,4 +??????.??????? 1,1,2,2 +????..#??#??? 1,2,1,1 +??#??????#?????.???. 10,2 +?..#???..??..?.? 4,1 +??#?#??#??.#.??#? 7,1,1 +..?#???.?.?????? 5,3 +?.????#???.?#?? 1,2,4,2 +.?#????#??.?? 5,3,1 +.#.????##??????????# 1,17 +???????.???.# 2,2,2,1 +??##?????.??. 7,1 +?.?.????.??? 1,1,1,1 +?.????????.# 1,4,1 +?????#??..#?#.? 1,1,3,3 +?#?.#?##??#?? 1,5,2 +?.??##??#??#???? 5,4 +?.?##?..???###??? 3,6 +??#.??#.??.. 2,1,1 +#?##?????????#???? 1,2,1,6,2 +?.?????.?????#??.#.? 1,1,1,8,1,1 +??.?#?.#?##????#.? 3,5,3 +..??.????????..? 1,2 +.???..????.???..? 3,2,2,1 +?.?.??.???. 1,1,1 +????#?#??????.??.??. 8,1 +??#????????? 4,1,3 +??#??????..#?#?? 2,1,2,3,1 +?#??#.???# 1,1,1 +??#?????#?? 2,4 +????#.?#???? 5,1,2 +??.???#?????.??#??#? 1,3,1,6 +?#.?#.????.#? 1,2,2,1 +#?#??#????.?.??????? 8,1,1,2 +??##???#.??. 4,2,1 +?##??#???.? 6,1,1 +?.#?#.?#??????? 3,5 +?????#???#..?. 1,8,1 +??#..#????.. 2,1,1 +?#????.?#?. 2,2,3 +?.#????#????###?? 8,3 +????...?.?? 2,1 +##.????#?????.?##?? 2,5,4 +.?#????.???? 6,1 +??.?????..???..??? 2,3,3,2 +???????#???#???????? 1,1,8,1,1,1 +.?.???.?#??.?.?? 1,1,3,1,1 +????#.????###.?? 1,1,1,7,1 +?.?##?#???.#???.? 5,4 +????#?...??.##?????? 2,2,1,5,1 +??.???###? 2,6 +??.??.?.?##???. 1,2,6 +???????#???#?.??#??? 10,5 +?.???????#?#??. 1,8,3 +..?#?##?.???? 4,2 +.?##?#?????. 5,1 +?#????#?.??. 1,2,1 +??#?#.???????. 3,3 +???.????#??.# 2,7,1 +????#?.#????????? 5,1,1,1,1 +????##???????? 5,1,1,1 +???#?????..?#? 2,5,3 +?..??##.?????#.?? 4,1,1 +.?#????.???#####?? 4,2,7 +???.?###.???.? 4,2 +?#?????.?#???? 6,4 +???#?.?..????? 5,1,1,2 +??.#??????####??? 1,1,2,1,7 +?.???????#? 2,3 +..#????????#? 8,1 +?#?##?##?##????. 12,1 +?#?.??.?.?# 2,1,1 +.?.?#???#?.????. 1,6,1 +?#???.??.???????? 5,1,1,2 +???????#?#??.?..?? 1,6,1,1,1 +???????#???.. 3,1,1 +..??#?????????? 1,2,6 +??????##?????#???## 8,1,2 +??????.#?####?#?#??# 1,1,1,6,2,1 +#?#????..#?.? 1,5,1,1 +?##???..?#? 2,1,1 +.????#.????.??#?#. 1,2,2,3,1 +?###??????#. 5,1,1 +.?##??#?????...???? 9,4 +?.???#?##?#??? 1,10 +???.?.?#???#???? 2,1,3,2,2 +?????##?##?#? 2,2,2,2 +????#???## 2,2 +??##..#.??.? 4,1,1,1 +??..#?#????? 4,1 +.??#??????#?????#?? 3,3,3,4 +#?#??#?#??#??. 6,1,4 +???##????.?#. 5,1,2 +??????##?????# 7,1,2 +#??##?#?#????#?????? 12,1,1,1 +?.?.???.???. 1,1,3,2 +???#.??#####??##?? 1,1,12 +??#?##.?#.?? 4,2 +?????????.???.??#?. 1,6,1,4 +?.#??.?#.???.?. 1,1,2,1,1 +?.#????#??.??? 6,2 +#?..?#?#???###??#?? 2,14 +????????##?????.?#. 3,5,1,2 +.#??#?..?????#????? 2,2,8,2 +#?????#?????.?.?# 1,1,4,1,2 +???#???????? 1,2,6 +???????.?..? 1,1,1,1 +..?#.?#???.#????#?. 1,3,1,1,1,2 +.??#?????##????##.?? 11,3 +.##?.##???##?#?#??? 3,11 +?##???#.????#??.#? 7,1,1,3,1 +???.??#??#?????????? 1,1,1,10,1 +?#.#??????#????#???# 2,4,3,7 +.#????#?##??#????#? 2,8,3 +????????#???.???#??? 1,5,1,2,1,1 +.#??????#? 2,4 +#?#?????????# 3,5,1 +..??#??.#?? 1,1,2 +??.?#????.??? 3,3 +???#?#?##?#?????? 11,1 +#?????#?##???#?.?.?? 4,8,1 +?#??.?#??. 2,4 +???????..?#?.??? 3,2 +?.##?#?.????##?. 5,4 +???.#???????????##? 1,7,2,3 +.??#?.??#??? 1,1,4 +??.??.?#??? 1,4 +..?????#.?.. 1,1 +??????.???#?#?##??# 1,1,1,1,6,2 +??##?#..#??##?#???.? 5,7,1 +???#?#????#?.#. 1,5,1,1 +.????????? 1,1,1 +?#??????????????? 6,1,1,1,1 +?.?##???..#. 1,2,1,1 +#?#????.#.?????##??. 3,1,1,7 +?????.?#?#??#??????? 1,1,1,6,5 +??..?.??.#????# 2,1,2,4,1 +?##??#??????????.? 9,2,1,1 +#?.#..?#?### 1,1,6 +???#???.???#??#.?? 1,1,1,3,1,1 +?#?????.?#????#???? 3,9 +.??????.??.? 4,2 +?#?#?.?#??#?#???? 4,2,2,1,1 +???.#??#?##??? 1,1,6 +??.?..??.?..#????. 1,1,2,1,2,1 +???#?????. 2,1,2 +.???#??#??? 3,4 +#????#?#???? 1,2,3,2 +??#??.#?... 2,2 +??.?.??#??#?. 2,1,5 +???#??????????? 8,1 +#????#?????# 2,7 +??????.#.##?? 4,1,2,1 +?.?.?#?###??#? 1,1,6,2 +??.?.?#???#???? 1,1,8,1 +?###?..??????.#?.??# 4,5,1,1,1 +??##?#???????##??# 6,8 +???.?????.????. 1,3,1 +????#?????????#??? 9,3 +??#???#??????#???? 10,3 +.??.##?#??#???#??.. 9,2 +..#?#?###???.? 7,1 +?????#??#???#??.?.? 2,6,2,1,1 +??????.???#????.? 1,8 +.?????.#.##? 2,1,2 +?.??#?#??????? 1,4,1,1 +??#???#.?.?#??#? 2,2,2,3 +.?#?..????# 2,1,2 +.??##??#?#??? 4,2,1,1 +?#???#?#?#..? 2,3,1 +.?????###????. 1,5,1 +??.???#???#?# 1,8 +?#?.#?#?#??.?#?. 2,6,2 +?.????#??#???.?? 1,7,1 +?.??...???? 1,2,1 +.#?.?#.?.???? 1,1,1 +.#?##??????? 5,3 +..#?#??.#????#?? 3,7 +?.?#??##?#?????##?? 1,1,7,2 +??????#..?#????? 6,2,2 +??#.??.?..?.???? 2,1,1,1,2 +???..???????? 3,7 +???????.#.??????. 1,1,1,1,6 +?#?.??.?#?#?#??????. 2,1,6,1,1 +.?#??????. 1,1,1 +.?##??#.????? 6,1 +?.?#?.?#.?? 3,1,1 +?????.????? 1,1,2 +??.???????#?? 1,5 +???????#?.???.????? 3,2,1,2,5 +??????????##?????? 2,2,6,1,1 +??#????.?????#?##?# 2,1,9,1 +??????#?#.?.?. 8,1 +?..#?.??##.?.?? 1,2,2,1,1 +??..#??##.?#????#? 1,1,2,1,4 +????#?#..?.#?????? 7,1,1,5 +.#??????????.???.? 6,1,1,2,1 +#?..???.?? 1,3,1 +..?????.??.??# 2,2,2,3 +.??????.???#??.?? 1,3 +..?#.?.????.#?????? 1,1,2,7 +??#?#?.???????.? 3,1,1,3 +????#??????????## 11,1,2 +##??????.???????. 5,1,1 +#????#????#?##? 1,10 +???##???##?#?????#?? 15,1 +????.??????#?#?? 2,7 +???#??..?#??##?? 3,8 +.##?.#.???? 2,1,2 +.?#?????????#?##?#?? 2,1,8,1,1 +???###..?#?..??###?? 5,3,1,5 +?#?.??#?#?. 1,3,1 +??????#?????#??.?.# 1,6,5,1,1 +??????#???.# 3,4,1 +??#?.??.?##.?#? 3,2,2 +????????..??.?.. 1,1 +#???#??.????# 7,1,2 +??????.?#??. 1,1,1,2 +?.#???#???????.? 1,6,1 +#.#.##????.#? 1,1,6,1 +?.?#?????.?#?#? 4,5 +??.?#????? 1,1,1 +.?##?????#.????.??? 7,1,1 +####.#???#.?.???#?#? 4,1,2,6 +???.##??#???##????? 1,1,14 +??????#??#??#?#???? 7,1,2,2 +.#.????##???????? 1,9,3 +#??#?.???##?? 2,2,2 +#??#?.??.? 5,2 +?#?##?#####????#.?# 12,1,1,1 +.?#?#??#??#?????.. 10,2 +?????.???#????? 3,7 +?.????#.??.??.???##? 1,2,1,1,1,4 +?????#??..?????##? 6,7 +?#??#?.???????##? 1,1,1,1,3 +?##?????.#.?#? 8,1,1 +.?#????.??? 4,2 +#????#???#????.?#?? 1,1,8,3 +?.??????#????#???# 1,1,1,7,2 +???????#?#?#?? 2,7 +??#?????.#? 3,2,1 +?#?.??.?..#????.??## 1,1,1,5,1,2 +?????..????????. 2,1,4 +.???#?#??#??#?.???? 13,1,1 +.#?..???????? 1,1,1,2 +??????#??????? 3,9 +??#?.??.?.????#???? 4,1,2,2 +??##??.????#? 3,1,1 +.???##?.?????###. 4,6 +?#.??#???#? 1,5,1 +????.???.????#. 2,1,5 +??.?.?#?????#?. 2,3,2 +?.???##??##.????? 9,1 +..?.??????????#?.??? 1,1,9,1,1 +#?.##??##??#???.? 1,7,1,1,1 +#???.#?.????????.# 3,2,3,1,1 +?#???#?.#?????## 1,2,2,1,2 +.#?##?##??#?# 1,10 +?#?##.????.#?????? 1,2,2,1,2,4 +#..??###????.#? 1,5,2 +.???#??????##???#?? 8,4,1 +?.????#???????????. 1,9,2 +?#??#????##?.??????? 11,1,2 +??#?#.???? 5,1 +#?????.???# 4,1,2 +???#??#???????????? 2,2,1,7,2 +????.???#?????? 1,1,1,1,3 +?????????.???#????? 9,1,3,1 +??????.??.??.???.??. 4,1,1,2,2,1 +???.?#???????#??? 2,4,2,2 +###???#???#??.??##?. 7,5,5 +.?????####???????? 6,1 +????.????? 1,1,1 +?????###??#???? 2,5,5 +.??.???#??.?.???. 2,5,1,3 +#.??#????.???### 1,3,3,1,3 +????????#.? 1,3 +????##??#.?????. 1,3,1,1,1 +..#????#..?#?????? 3,1,5 +??#??#?#???#?.? 2,2,2,3,1 +###??#?????.?. 4,5 +????.?#???.?? 3,2,1 +#??????..??#??????? 4,2,2,1,2 +???#?#?..#??.??? 4,3 +???#????..?? 8,1 +#?.?#?????? 2,2,3 +??#.????.????## 1,1,1,1,4 +???#.?.#?..? 1,1,1,1 +#??#????#??##?#? 6,2,5 +.????.#???. 1,2 +?????.?????.??##??.? 3,1,1,2,4,1 +.?#??#??.?. 2,4 +????????#???..? 2,6 +?#???##???#?.?..??# 8,2,2 +.??#?..#????.?? 1,5 +.??????#???.?#?#. 1,4,3 +????.?????#? 1,1,1,2 +.#.?.?.??? 1,1,1 +#??????.#? 3,2 +?????.#?##?.???#. 2,1,5,2,1 +???#?.?.???##??.?. 1,4 +?##???????? 4,5 +?#?#??#???#??.#?#?? 3,8,4 +##?????#??????? 2,5,1,1 +????.?#??..????##?? 1,1,1,1,6 +????.#???.????#??#? 1,3,1,3,2 +?..???#??###???? 1,1,8 +??#?#??#???? 3,4,2 +#????.??.#?? 5,1,1,1 +?.????##???#?????.? 1,11 +??????..?.?#?.??. 1,2,1,3,1 +?????.?#?? 1,1,1 +.?.????????# 1,2,5 +.?.?.#?#.????. 1,1,1,3 +.???.??#?????#?? 3,10 +???#?#????.?? 5,2,1 +??#.???.?? 2,1,1 +??###??????.?#?? 11,3 +??.?????????#?. 2,2 +.??#?#??##???????.# 12,1,1 +.##??????????.. 3,1,1,2 +?????##.?#??.#?.??# 1,1,2,1,1,3 +.??..???#??#??.# 2,1,1,2,1 +??#.?#.#?.?##?#?#??# 2,1,1,6,1 +?.??.??#??? 1,1 +#?##??.?##?#?#?#?? 5,10 +.??#?.#??#. 1,2,1 +?#??????#?.?? 1,5,1 +##???..???#?..?????? 2,2,4,3 +??.#????.#?? 1,1,2,1 +?.?#.???.???? 1,1,2,1 +.???##?..?..?#?.??? 3,1 +?????????.##????.??. 7,4 +##???#?.??.???. 3,1,2,1 +????????#..#?.?##?.? 9,2,3 +?.??.?..?#. 1,1,1 +???????.?##. 5,1,3 +#?#.#.???????????##? 3,1,6,6 +?.??#??????? 4,3 +??#?##???.##? 8,2 +???.???.#????.#?.? 2,3,3,1,2 +???????##???? 2,2,4,1 +????##?#???? 1,7,1 +##??..???? 2,1,1 +?#??..??.? 3,1 +?.??#??#..????.??? 3,2,1,1,3 +#?#..#?????#??.? 3,1,5 +?????.???????#??. 1,3,2 +?.?#????.?? 4,1 +?#???#????????#? 11,1 +#????#.#??#????#?#?. 1,3,6,3 +?????##?.##??.? 2,3 +??.??#??..??? 4,2 +?#?#???#??#??##????? 1,8,4,1 +?????.?.?. 2,1,1 +?.?#..???##??.?. 1,1,5,1 +??##???#???#?#.?.?. 1,8,1,1,1,1 +?#???#??????.???#??. 10,2,2 +#?.???#??#?.?????? 1,7,4 +???????##?#??? 1,1,8 +??.?????##?? 1,1,5 +??#??##??##?????##?? 2,2,9,1 +?.?#??#?##?.???????? 8,7 +???#?#?#?#??????.?? 2,1,11 +.????????..?? 1,1,2,1 +?#??#?.??.?#? 4,1,1 +???.?????#.?#??.. 6,3 +#..?#???????. 1,8 +?.???##?##?##??#?..? 14,1 +?.???..??.??##?? 2,2,2 +????#.#?.? 1,1,2 +??????#??????#??? 1,4,1,4 +?????.?.??. 4,2 +?##??..#?.? 3,2 +#?.??#.?##??#??#? 1,1,1,8 +??#??##?##?#?#?..? 2,10,1 +??????##??????.???? 1,10,1,1 +?????...?# 3,1 +?#?.?#?#?.?# 3,1,1,2 +.#?.?#.?#? 1,1,2 +??#????????#???.???? 13,1 +.????????###????#. 2,1,8 +???.?##??.??????# 1,5,1,2 +????????.?? 1,5,1 +??.?#?##???#?#.. 5,3 +.#????????#?#? 3,4,4 +???????.??#??? 4,4 +##..????##?.?.?. 2,2,4,1 +?.???????#?#.????#? 10,4 +.?????#??.????#??. 5,1 +?#.##??#?????. 1,7 +?????????.????? 6,1,2 +.?..????#? 1,4 +?.##???????#?? 1,3,5 +??#?????#??#?#?????. 2,11 +.?.???????## 1,6 +#???..?.?.?? 3,1,1,1 +##?????..??? 2,1,2 +#?.??.???????#.???? 1,1,1,2,2,4 +?#?#?????.?.?? 4,1,1,1 +?????#?#?.???.?.? 8,1,1,1 +??###?#??????.?.#?. 10,1 +?#????.?????.?? 1,1,4,1 +?#?#???##?#??#??#.# 1,1,7,4,1 +#.?????#????? 1,1,6 +?..#??.???. 1,2 +????#?#??.???. 1,5,1 +.???.?????#?##?..? 1,8 +#??#?#???????.#???#? 6,4,1,1,1,1 +.?.##?.?..??????? 3,5 +??.#???.#?#?.???#??? 1,4,3,1,1,2 +.##?.??.?## 2,1,2 +?##.??#.?#???#? 3,2,1,3 +.??????#?????? 8,2 +#..?????#????#.?#?#. 1,6,1,1,2,1 +.????.??.?#?? 2,2,3 +?#?#???????####.?#? 3,1,4,3 +?#.????#.?.??? 1,1,2,2 +???????.?#??#????? 1,1,9 +.#?##.????? 1,2,3 +???#??#?.??.?. 8,1 +..??#??.???#???.? 4,4 +???#??##???##??????? 13,1 +?????#.?????#???#? 1,1,1,1,4,1 +????##????.??.?##. 6,3 +#???.#?.?#? 1,1,2 +##???????#?#.???? 10,1,1,1 +??#??##??#??.??.?.? 10,1 +?#??#?#????#????? 1,9,1 +#???????.##?.?#???? 2,1,3,2,2 +?###??#?#?.#..??? 10,1,1,1 +??##??.?????.??. 3,1,1,1,1 +??#.?#???.?? 1,5 +?##?#????##??#? 10,1 +???#??????##?#???? 2,10 +???#?.??#??? 1,1,4 +???#?#????##?#?.?? 13,1 +?#??????????.??. 2,4,2 +?#.?##?#?? 1,4 +????????..? 1,1 +.??##?#???? 5,2 +?##???#????###? 3,5,4 +??..?.???????##?? 1,1,8 +??#?##?????##??. 8,3 +.##?..#?????##...? 3,8 +????????#??.???# 10,1,1 +.??????#?????. 1,1,5 +?????#???#. 1,3,1 +#.?#.??#.???##.. 1,1,2,4 +??#.?.??#? 3,1,1 +?.?.##??#??#.?.# 1,8,1,1 +??????##?#?#? 1,5,1,1 +??????#?????..????? 3,3,2,5 +?##?????#.? 5,1,1 +??????.??#.##???? 2,3,3,1 +####???????#??#?# 6,1,5,1 +.??#??#.?#.????##??# 1,1,1,2,1,6 +#?#?#?#????????.?? 9,4,1 +???###?##??.???. 1,8,1 +???##???#??#.??? 2,6,2,1 +???.??#????? 1,6 +..?????#?. 1,1,1 +#?#??.#????#? 5,6 +.????#?????#?? 5,1,1 +??.??.??#.??????.# 1,1,3,1,1,1 +???????..#?#??#. 5,6 +??.???###??##?????# 1,1,12,1 +???.??????#?##?. 2,10 +#????????.?..#.#.? 2,5,1,1,1,1 +.?#???##.???#????##. 7,1,1,2 +???????#???.##???# 2,1,1,6 +?#???#???.?.?? 2,4,1,1 +?.?.?.???.???.???? 1,1,2,1,2,1 +?#??????.?#????#???. 4,1,1,1,1,1 +??#?.##???? 1,1,5 +?????#???# 3,1,1 +.????.????#.. 3,1,2 +???????#?.??##.???.? 5,2,1 +?????????#?. 8,2 +????#?#?.?.??##????? 1,5,1,1,4,1 +?#.?#????####??#.? 2,12,1 +?.?##..????#? 3,5 +???#???#??? 1,6 +??###???#????#.????? 1,7,1,1,2,1 +??.????.?? 1,1,1 +????.?##?#?## 2,7 +.??????#???. 2,5 +???##????#?#..## 1,2,4,2 +.????.?##?? 1,1,4 +#.??#?#.????.?.. 1,5,3,1 +#.??.?#?.?#??. 1,1,1,3 +???#??????#.?#?? 6,1,1,2 +??.?.?#?.?? 1,3 +?#???????#.? 4,1,1 +?..????##????????.? 1,5,1,1,3,1 +#..?#.?#??#??#??##?? 1,2,2,9 +#??#?##??..??. 1,5,1,2 +?#?????#????#??#..?? 2,12,1 +??#.???#??????? 3,2,3,1,1 +.?????.#????#???? 3,9 +???.????#??????.?# 1,2,1,4,1 +??.???.?#?# 1,3,4 +#????????#??#..?#.? 4,8,2 +????#?#?#??????????? 9,6 +#???????#???#???.?.? 1,1,1,9,1,1 +?????#?#?#??????. 1,9,2 +?#????..?#????# 1,1,1,7 +#?????????### 5,1,3 +.#?????????? 1,3,1,1 +?.?##???????#??#..?# 7,1,4,1 +?#???????##??##?? 3,11 +.????.#??.?#?#?#?.#? 2,1,1,1,7,1 +???????#?.. 2,2 +??#?#.?###??##??#?? 1,1,1,8,1,1 +??##.?????????#?? 1,2,10 +.?????.?#?. 1,1,2 +#?????#??#???#..# 1,1,6,3,1 +?#????#???.?.#?. 1,1,4,1,2 +??#???##??.????#? 8,5 +.????.?????#??. 4,1,4 +????.??###?. 3,6 +????.#???.? 1,4,1 +??#???#????###?.. 3,8 +.?#???????###??.## 13,2 +????.#.????#??? 1,1,1,1,2 +#??#?????.? 4,1,1 +#?#.???????.? 3,3,1,1 +.????????.??. 3,2,1 +??.?.??.??##?????? 1,1,1,9 +?..?#??#?#??#.?? 1,7,1 +??.???##??#?.?? 2,5 +.????#.??????? 3,1,2,3 +??..??????#? 1,1,2,2 +??#??.????# 1,3 +??.???????? 1,6 +??.?.?????????.???. 1,6,3 +#???###???.#??? 1,6,2 +?.#???#??????# 2,4,1 +??##.???#??.????##. 2,5,6 +##.?.????????# 2,1,3,1 +#?##.??.#???? 4,4 +????#????..?#?? 5,3 +.??##?#???.?.???? 9,1,1 +???#?#?#?.?.?.. 8,1,1 +#????##???#???#???.# 4,2,7,1 +.?.???#.?##?????# 1,1,2,3 +#?????????#???..#. 5,8,1 +???#??????#?..??? 5,3,2 +???#?????? 4,1,1 +?.???#????####????#? 1,3,6,1 +????#?.#???.??#??? 1,1,2,1,5 +##????#?..???? 7,2 +?#??.?.??#?..???#? 4,1,1,2,5 +.##????????..?? 6,1,1,1 +????????.#????. 1,1,1,1,2 +??????????#??.?????? 3,4,2,1,1,1 +?#?.??????.? 1,2,2 +.?.?#????#???? 2,1 +?.?#????.?? 1,6,1 +.?##???.?????. 2,2,4 +#.????##?? 1,7 +??#???##?#?? 2,6 +.?.?#????. 3,2 +?#??#?#.?.?##???? 6,1,4,1 +?????.?.???#??????? 1,1,1,5,3 +.#???????.#? 5,1 +????..??#???#?. 3,8 +?#??#???.?#?##.?? 7,4 +?#????#..#????????? 2,1,1,4,1,1 +...?#??#?.#?? 3,2,2 +###???#?.???? 4,2,3 +???#??????..?##? 4,4,4 +????.????#? 2,1 +????##?#???.???? 7,1,1 +?????????.?..??. 3,2,1,2 +#?..#????? 1,1,2 +##???#????#?.???.. 7,2,1,1 +??#????????#?..?##?? 11,3 +.?#?..#??##???.. 3,8 +##?#????#.?#?.#???## 2,2,3,2,2,2 +???#???????????.? 1,3,5,1,1 +#.????????#? 1,1,1,3 +??.?.??.?.?.??????? 1,2 +???.#???????#??## 1,3,8 +..?#??.??##?????. 2,5 +????.?????????? 1,1,2,2 +#????.??#? 5,2 +?.#??#????#?????.?# 5,5,1 +?.?#??#??? 4,1 +????????.????.? 8,2 +????.?#?????. 1,1,3,2 +???#??.?#??# 5,5 +????#.?#?.##??????. 1,1,3,5,2 +.?#??.?#?#?????. 4,4,2 +??..?#?#????.#? 6,1 +.?.#.?#????#???#?##? 1,1,15 +#.?????##.? 1,5,1 +.##?????.????????? 5,2,4 +???.???.##???#.?#?? 1,1,1,6,4 +???#??#?????# 1,2,4,1 +#???.##??##????? 4,9 +???...#?...???# 1,2,3 +##?#?#????.# 6,1,1 +.??#??..????.?# 2,1,1,1,1 +##??#???????#.??# 5,1,1,1,2 +.#???#?????##.??#?. 1,3,1,1,2,3 +??????#???? 2,3 +?.???#??#? 1,2,2 +?#??.##?????#? 2,2,1,2 +??#.??#?.??.#?#??? 3,3,1,1,1,1 +?.?##?.?.???#?#.? 1,3,1,4 +??.???#?###?#.? 1,1,6,1,1 +.?.#?????#?.?????? 1,3,3,2,1 +?#?#?####..#.? 8,1 +???##?#????.??#??#?? 9,1,3,3 +??#????#?.??#?. 1,7,4 +???#..?.?? 1,1,1 +?????#????.??###? 6,1,6 +.#?????#?????.??# 1,5,1,1,2 +???#????..???#### 3,7 +???????##..? 1,4 +.??.??.???... 1,2,3 +.??.#?#?????#? 1,9 +???#???.?????? 1,4,2,1 +??.?#.?.??.?#???#?? 2,1,1,8 +##.##?????????#.?? 2,2,7 +???###??##?..??.??? 5,3,1,2 +#..????#?#???? 1,1,4,2 +???????????#? 2,2 +??.?##?#????????#??# 1,8,2,1 +????#?#???????????? 7,1,1,2,1 +.#??.?#??.# 1,2,1 +?#???????? 2,1,2 +?????#??#???.??? 1,4,1,2 +?.?????.?.????##? 3,7 +???..#???#???#??. 1,2,7 +???.#??#?#???#.?? 1,1,8,2 +###?##?.???#??# 7,5 +.???.?.??#? 1,1,2 +??#??.???# 2,4 +??###?????. 6,1 +???#?#????.?.?#.?.# 4,5,2,1,1 +.??????.?#...?#??. 2,1,3 +.??#.??#?? 1,2 +??#??.?#??#? 1,1,1,4 +.?#?#?..#?.??? 5,1,2 +#??#?##?#?..?#??? 1,7,1 +#???????## 2,3,2 +???.????##??#?#?.#?? 1,11,1 +#.?..????#?#??..?#? 1,1,9,1 +.?.?????#??? 1,4,1,1 +.???.???..#?##??? 3,1,5 +??..????.???.?# 1,4,1,2 +???????#?? 1,1,3 +.????????#??#.??. 1,9,1 +?.?.#????.#????????. 3,7 +????#??#??????.??.#? 8,3,2,1 +?????.#???..???#??? 2,1,4,4,1 +??#????..?.? 5,1 +???#?#?#????.?##???? 11,7 +?????????????#??? 4,10 +?.??#...?#???.?.. 1,3 +.????...???#...? 1,2 +??#?.#.?????##? 3,1,1,1,2 +????#.??#?.#. 1,1,3,1 +#.??????#??##??#???? 1,17 +###????.#?? 5,2 +??????????#.?.?...?. 10,1,1 +#.#.#.???##??#??.# 1,1,1,9,1 +.??.??.#?. 1,1,1 +?#???.???##??#?#? 1,1,1,8 +.??##?#??????#???## 9,3,3 +.???????#? 5,3 +.????###??#?.???? 9,2 +#?##??????????? 7,3,1 +???..#?#???#???.? 1,9 +??#.???#.# 2,1,1 +#.?#??.#?.?? 1,3,1,2 +.#??????#???????. 2,4,1,2 +..??????.??? 1,2 +?##???.??.??#???. 2,2,1,3,1 +.?.?##???#.?? 3,2,1 +..???????? 3,1 +??.??#????????#?#? 1,1,1,1,5 +#?.?#.###??##??????? 2,1,9,1 +.#?????.??. 2,1,1 +.??.??#????## 2,4,2 +?#?#?#?#?###?..?? 12,1 +??#??.??#???? 3,2 +#??#??????.?????? 1,1,4,1,1 +#??#???#??.????#??? 4,2,5,1 +???????.?#?? 5,1 +?.#??#??#????#???.? 8,6,1 +.?##?#?.?.?? 5,1 +??###??????##??. 5,4 +?#?#.???.??# 1,1,2,2 +.???????.?#?... 3,3 +??.?#?????.?.??##?#? 1,1,3,1,7 +?#.???????.???#? 2,1,1,1,2 +.??#?????. 4,1 +????.?#???.??????.. 2,3,1,5 +.??????.#? 1,2 +.??.???#?.? 2,3,1 +#?##?.?.???.## 5,1,1,2 +.##????.?? 4,1 +#??.?#???.?##?... 1,1,4,3 +?...##??.? 1,2,1 +?###..#??? 3,1,1 +?#?##?#??##??? 1,8,1 +.??###??.?#?.???###? 4,3,5 +?.??????#?##???? 1,1,9,1 +?????#??.?????? 7,2 +.???#????#???#? 6,2,3 +????.????.?#?..??? 3,4,3,2 +????.#?.???#?? 1,1,2,6 +?.#???#?#?.?#?? 1,5,2,1,1 +?#?.#.???????.?? 1,1,1,3,1 +?#?????????????? 3,1,2,1,3 +???.#??#?#???# 7,1 +??#????#???.##??#. 8,1,5 +???#?????#??.? 2,5 +.#????.???? 5,1 +??????#?????###?? 5,3 +?..??#???.????? 1,1,1,2,1 +#??.?...?.??. 2,1,2 +?#???#?????.#??? 2,1,1,2,1 +?#?????????.??????? 2,3,1,3,2 +.?#???????? 2,2,1 +?#??.?.?.?.? 3,1 +?##?..????#?? 4,1,4 +???#?..???????# 1,2,7 +??#??##?.??????.?? 2,2,1,1,1,1 +.#?#...#?????? 3,1 +.??..??##? 1,4 +?????##??.??##?.. 6,5 +#?..?#???.?? 1,3,1 +?##??.?.#?#????? 3,1,3,1,2 +.?#?????..#?#..?? 7,3,1 +????????##?##.?#.#?? 1,1,1,7,1,2 +???..????.?.???##?? 2,2,1,1,2,1 +??????.??????.# 3,1,2,1 +#.??#????.??#?? 1,3,1,1,1 +??#####??#?????#?# 10,3 +##???###?#????? 12,1 +????????????? 2,5 +??#??.????.?##? 2,4,2 +?.?#???.#?#.???#.. 1,4,3,2 +????#????#? 2,2,2 +???.#?.?#????? 1,1,2,6 +?.#???#?????#?????. 5,5 +??????#??#??? 1,7 +??.??????#???#?????# 1,1,7,3,1 +#?..?????? 1,3 +??#???..???.# 3,2,2,1 +?###?????? 6,1 +???##.#??#?? 1,3,1,3 +???##??..?#?#??? 3,4 +??????##??.?????#? 9,1,5 +?#???#?.?#???? 5,5 +??.?.???.?? 1,2 +??##??#?????# 2,7 +???????.???????##?#. 1,1,1,1,7 +#?#????#???.##.? 8,1,2,1 +???#.??###??..#?#?? 1,1,4,1,1,3 +.?.??###???#?.?????? 7,1 +?#?#?#???????.?#? 5,2,3,2 +???##???.??????#? 1,3,1,1,5 +???????#?#??.? 1,2,5 +????#?.??? 2,1,1 diff --git a/data/13.in b/data/13.in new file mode 100644 index 0000000..bee3814 --- /dev/null +++ b/data/13.in @@ -0,0 +1,1295 @@ +...#..##.####.# +##..##.###..### +#.#............ +#...#...#..#.#. +.#..###.#.##.#. +###.###.##..##. +.....##........ +##..#....#..#.. +#....#...#..#.. +#..##.#.#.##.#. +#..##.#.#.##.#. +#....#...#..#.. +##..#....#..#.. +.....##........ +###.###.##..##. + +...#.#.####.#.# +#..#..##.###..# +..#.##..##..##. +##...########.. +.####..####..## +.##............ +#...#.#.##.#.#. +.#..#.#.##.#.#. +.#.##..####..## +##..####..####. +##..####..####. +.#.##..####..## +.#..#.#.##.#.#. +#...#.#.##.#.#. +.##............ + +#...##. +####..# +....##. +..#.##. +#.##..# +.##.... +...#..# +..###.# +#..#### +#...##. +#...##. + +.#.#.######## +..#..####..## +#.#..####..## +.#.#.######## +...##.#.####. +.##.##...##.. +.#####.#....# +....#.#.#..#. +#..##..##..## +#...####....# +###...###..## +#.##....####. +#..#.#....... +##.##..#.##.# +##.###....... + +.#...## +#..#### +.##.... +..#.... +..#.#.. +#.#.#.. +..#.... +.##.... +#..#### +.#...## +#..#.## +#..#... +..#.### +..##### +.###... + +.####.##......# +...##.##..##..# +...##.##..##..# +.####.##......# +#.##.#..#.##.#. +..#####.##.###. +.#...#...#..#.. +#######.######. +.#.#...######## + +..#..#.## +##.#####. +.##.#..## +...#.##.. +..#...##. +....##..# +####.##.. +####.##.. +....##..# +..#...##. +...#.##.. + +#....#.#.#....#.# +#....###.#....#.# +.##.#....#.##.#.. +.###.###.#....#.# +.##.....##....##. +###.#.#..#.##.#.. +##...#.#.######.# +##..##.####..#### +#.#..###..#..#..# +.#####..#.#..#.#. +.#.##.#..#.##.#.. + +.##.##.## +#..####.# +#..####.# +.##.##.## +##.##.### +.##..###. +#..#.#... + +#...#..#. +#...#..#. +.####..#. +..#..#..# +...#....# +##..###.. +#...####. +#...####. +##..##... +...#....# +..#..#..# +.####..#. +#...#..#. + +#.##.#..#.##. +......##..... +..#.#.##.#.#. +###.#....#.## +..#...##...#. +......##..... +###.#....#.## + +...#..#.....##.## +...#........##.## +......###........ +..##....#...##### +##..###.######.#. +#.....#..##.###.# +#.#######.#...##. +#.###..#.##.##.#. +..##..#..##.####. +.#.#..###...##.## +###..##.###..##.# +#.##.##.##..##..# +#.##.##.##..##..# + +#..#....# +#..#....# +#....##.. +.###..#.# +.#.##...# +..#....## +..#....## +.#.##...# +.###..#.. + +...###...## +##....#..#. +###.#.#.... +#..###.##.# +#..###.##.# +###.#...... +##....#..#. +...###...## +...###...## +##....#..#. +###.#...... + +..#.#.###...##... +##.#...##.######. +##.#...##.######. +#.#.#.###...##... +.#...#..##.####.# +.###..#.####..### +#.##.#.#.#.#..#.# + +#..#.#..#...... +.####.....####. +.#.#####....... +#.#.#####.####. +##..#...##.##.# +...####...####. +.####.######### +....#..######## +...#.##...####. +...#.##...####. +....#..######## +.###..######### +...####...####. + +##.###.#. +#.#..#.#. +...#.#.## +...#.#.## +#.#..#.#. +##.###.#. +..#....#. +#..#.#### +..###.#.# +#####..#. +..#.####. +...###.#. +...###.#. +..#.####. +#####..#. +..###.#.# +#....#### + +##..#..#..# +#...#....#. +#.......##. +#.#...##..# +.#..#...##. +.########## +.#....##..# +.##.###.... +#.###..#..# +#.###..#..# +.##.###.... + +#.#.#.#.##.#. +.##.###.##.## +..#...#...##. +##.#....##... +##...###..### +#.##....##... +#.##....##... + +#.####.##..##.. +#.###..##..##.. +#.###..####.### +.#..#.#...###.. +...##..#..##... +##..#.#..#.#.## +.....#.##..#..# +.##....#.####.# +###.##.######## +#.....#..#...## +...##...#####.# +##....#..##.... +##....#..##.... +...##...#####.# +#.....#..#...## + +##..####..####. +##...##...####. +#.##.##.##.##.# +###.####.###### +.####..####..## +.#.#...##.#..#. +#..........##.. +....#..#....... +.##.#..#.##..## +#####..######## +...#....#...... + +###.#.#..#. +#..##.##### +.##.###..## +..#.#.####. +.#.#...##.. +##...###### +.#.....##.. +.#.....##.. +##...###### + +..#....#..... +##########..# +#........#..# +..........##. +#.#....#.#### +#....#...#### +.#.####.#.##. +#.##..##.#### +..........##. + +.#...#..#.. +#..#....#.. +#..#...##.. +##.#..#..## +.###...#### +#.#.#...#.. +.###.#.#... +###.#####.. +#.......... +.#....#.... +.#....#.#.. + +#...##.#...#.## +##...#.###..### +#....##..#.###. +.###..#.##..... +##.#..##.#.#.#. +####.#...#.#... +.#.....#..#...# +.#.....#..#...# +####.#...#.#... +##.#..##.#.#.#. +.###..#.##....# +#....##..#.###. +##...#.###..### +#...##.#...#.## +##..#...#.#.#.# +#...#.##.##.... +#...#.##.##.... + +#.#..####..#.##.# +..###....###....# +.##.#.##.#.##..## +...########...... +.###.####.###..## +.###..##..###..## +###..#..#..###### +...##.##.##...... +.#..##..##..#..#. +##...####...####. +..#.#.##.#.#....# +##..........####. +..#.######.#....# +..#.#.####.#....# +#.#..#..#..#.##.# +####.#..#.####### +.#...####...#..#. + +..#.##.#...#..# +.#..##..#.#..#. +#..####..##.##. +.#.#..#.#.##... +###########.... +#.#....#.#..#.. +.###..###.#...# +##.####.###..#. +.#..##..#...##. +#.######.#.#..# +##..###.####... +#........##.#.# +.########.#.... +.########.#.... +#........##.#.# + +###...##...## +#.#.##..##.#. +#.#.##..##.#. +###...##...## +#....####.... +##.##.##.##.# +.##........## +.#.#.#..#.#.# +##..#....#..# +#..##.##.##.# +.#.###..###.# +.##........## +..#...##...#. + +#..#....#..## +.##.#..#.##.. +...#.##.#.... +##...##...### +.#..#..#..#.. +#..##..##..## +.##......##.. +....####...## +...#.##.#.... +.##..##..##.. +.###.##.###.. +#....##....## +####....##### +#.#.####.#.## +###......#### +....#..#..... +#.#.#..#.#.## + +##.###..#....#..# +..###..#.###..... +##.#####...####.. +#...#.#.###..#.## +#...###.###..#.## +##.#####...####.. +..###..#.###..... +##.###..#....#..# +#.#....##...##### +#.#....##...##### +##.###..#....#..# + +#..#..#..#..#.. +####..######### +.##..#.#......# +#.#..#.#.####.# +..#...######### +#..####..#..#.. +..#..##.##..##. +##...##.#....#. +##.#.##.#....#. + +.#.##.##.#.##.. +###.##.####..#. +.#.#.#..####.## +.#.#.#..####.## +###.##.####..#. +.#.##.##.#.##.. +...##.###.###.# +.##....#.###.## +#..#.#.##.#..#. +.###.######.... +####...##.#.... +####...##.#.#.. +.###.######.... + +..##.#.## +##.#.#.## +###...... +#..#.##.. +.#..##.## +..###.#.. +#....#.## +#..##..## +##.#..#.. +..#.###.. +..#.##... +##.#..#.. +#..##..## +#....#.## +..###.#.. + +..#..#.##.# +.......##.. +####....... +.#...##..## +#.######### +..##.##..## +#.###...... + +....####.#.#.## +.##...##...#.## +####...###.##.. +#..###....#..#. +#..###....#..#. +####...###.#... +.##...##...#.## + +##....#...# +######..##. +##.#####.#. +.......#.#. +..##......# +..#........ +####.##.##. +.....#..### +...#####.## +...###.#.## +.....#..### + +##...#.###. +###.####.#. +###.#.....# +...###.#.#. +...#######. +##.....###. +##..##.#### +..####.#... +#####..#.## +##.....##.# +....##..#.. +###..###.#. +###...##.#. + +#...####.##.### +.#####.#...#### +#.#.#..#.#..##. +#.#.#..#.#..##. +.#####.#...#### +....####.##.### +###..###.###.#. +..##...#.#..#.# +#.#.#...###.### +.###..#...##..# +######.......#. +#...#####..##.# +#...#####..##.# +######.......#. +.###..#...##..# + +###.#.####.#. +.#####.##.##. +#.#..#.###.#. +#..####.#...# +#..####.#...# +#.#..#.###.#. +.#####.##.##. +###.#.####.#. +.##..#.#.#..# +.##..#.#.#..# +###.#.####.## +.#####.##.##. +#.#..#.###.#. + +#.####.####..#.## +.##..##..#.##.#.. +.........######.. +.##..##.#.####.#. +#..##..#.#....#.# +##.##.####....### +.#.##.#.##....##. +..####.....##.... +#.#..#.###.##.### +#......########## +#......#...##...# + +.#..#####.# +.#.#....#.# +......##.## +#.....##.## +.#.#....#.# +###.#...... +###.#...... +.#.#....#.# +#.....##.## +......##.## +.#.#....#.# + +#.##..##.#...##.# +#..#..#..##.##.## +##......##..##..# +#.##..##.#..#.### +#.##..##.#..#.### +##......##..##..# +#..#..#..##.##.## +#.##..##.#....#.# +.###..###..###... +##.####.##..###.# +#.#....#.###.###. +.#......#.#.##... +##..##..##.###.#. + +####...##..#. +##.#..#...... +##.#.####.### +...........#. +.##.##.#####. +..###..#.#... +..#..#.##.... +###..##....## +..##..#.#.### +..#..#.##.#.# +..#..#.##.#.# + +##.###### +..#.#..#. +..#..##.. +.#.#.##.# +##...##.. +..#...... +.##...... + +#..#.#.#.## +....#.#..#. +#..##.#..#. +#..##.#.##. +#..##..###. +#..#..###.. +.##.##..#.# +.##.##.##.# +#..#..###.. + +.#.#..#.... +.#.#..##... +.#.##...#.. +#...#.#..## +#...##.#### +..##....### +#...####.## + +####.####.#.### +####.####.#.### +..#...#####.##. +#.#.#...#..#... +#.###.#.#..#... +.....##.####### +.#..###...###.# +...###.##...#.. +...#.#.##...#.. + +.....#..###..#. +##...#...##.##. +###..#..####... +##..##....##.## +##.#..########. +###...#..#####. +..##.#..#.#.... +##..####...###. +###..#...#....# +####.##.#..##.. +####.####..##.. +###..#...#....# +##..####...###. + +.#.#.##.###.#.. +#..###.....#### +.....##.##..... +#.#..#...##.#.. +#..####...###.. +..######.#.#... +.##.#.#..##.#.. +.#...##.#...### +.#...##.#...### +.##.#.#..##.#.. +..######.#.#... +#..####...###.. +#.##.#...##.#.. + +##..##. +.....## +##..##. +..##... +##..##. +.####.. +......# +##..### +.####.# +#....## +######. +......# +#.##.## +#.##.#. +#.##.#. + +.#.##.#.#.##.## +##....###..##.. +#.#..#.#..####. +.######....##.. +#.####.###.##.. +#.####.###.##.. +.######....##.. +#.#..#.#..####. +##....###..##.. +.#.##.#.#.##.## +........####... +#..##..#....#.# +#......#.##.#.. +##....###.####. +.#.#..#..#.##.. + +#..........#. +.##...##...## +#.#...##...#. +...#.#..#.#.. +...###..###.. +.....#..#.... +..##.#..#.##. +.#..######..# +.#..######..# + +..#..###..... +..##.###..... +.....##.#.##. +.####..#.##.. +.##.#..##...# +#.#.#...#...# +......###.##. +.####..#####. +#..#.##..#.## +#..#.##..#.## +.####..#####. +......###.##. +#.#.#...#...# + +.#.###.## +..#.##### +#.####.## +#.#.#.##. +...#..#.. +#..##..## +##...#.## +.#...##.. +.#..#..## +.#..#..## +.#...##.. +##...#.## +#..##..## + +.#..####...#....# +.......##...##.## +.......##...##.## +.#..####...#....# +.#.###.###..##..# +.##.###.......... +#####.#.#.##.###. +.#.###.#######... +...##..##.#.##..# +.###.#.####.#...# +.###.#.####.#.#.# + +.#..#..#..#..#. +####....####### +#####..######## +...#....#...... +..##.##.##....# +#..#....#..##.. +...######...... +.###....###...# +.#..####..#..#. + +..##......#.# +###.###..#..# +######.#.#..# +######..##.## +#....#..##.#. +.####.#....#. +..##..####..# +##..####.##.. +##..####.##.. + +..#.##..##. +....#....#. +.##..#..#.. +#..#..##..# +.##..####.. +.##..#..#.. +#..###..### +.##.#.##.#. +#..##....## + +##.##.### +#.####.## +...##.... +.##..##.. +...##.... +#.####.## +#..##..## +##....### +#..##..## +...##.... +#.####.## +##....### +.##.###.. +#.####.## +#..##..## +#......## +..#..#... + +.####.###..#. +#....#...#.## +#....###.##.# +......#####.. +......#.###.# +.#..#..#.##.. +..##..##.##.# +......##.#.#. +..#......##.# +######...#### +.........#### +#.##.#.##.#.. +#.##.#.##.#.. +.........#### +######...#### + +..##.###.#. +###.###.##. +.#.##.##... +.#.##.##... +###.###.##. +..##.###.#. +###..##...# +...#.###.#. +#.##.##..#. +..#.....#.. +##.....#### +.#.###..### +####..#..## +####..#..## +.#.###..##. + +##..#..#....# +#.###.#.###.. +#.#..#.#...#. +####.#..###.. +.#..##.#.#..# +.#....####### +..#.####.##.# +..#.####.##.# +.#....####### +.#..##.#.#..# +####.#..###.. +#.#..#.#...#. +#.##..#.###.. +##..#..#....# +##..#..#....# + +##..#.##.## +##.##.#.#.. +#.#.####### +.##....#.#. +#.###..##.# +#.###..##.# +.##....#.#. +#.#.####### +##.##.#.#.. +##..#.##..# +..#..###.#. +#.##.#.#.## +#.##.#.#.## +..#..###.#. +##..#.##..# + +#.#............ +...##.##..##..# +.#..###.##.###. +####.#.#..#.#.# +..#.##......##. +#..#.#......#.# +..##.#......#.# +.#.#....##....# +#####........## +#..#..##..##..# +#..#..##..##..# +#####........## +.#.#....##....# +..##.#......#.# +#..#.#......#.# + +##.##.#.##.#..# +.##.#.#.#.###.# +....#.#......## +....#.#......## +.##.#.#.#.###.# +##.##.#.##.#..# +#..##..#....#.# +.###.#####...#. +.###.#####...#. +...##..#....#.# +##.##.#.##.#..# + +#.##.###. +.##.##... +.##.##... +#.##.###. +....#.### +##..#..## +..##.#.#. +...#.##.# +..####### +..######. +...#.##.# + +.#.#.####.....# +#....#....#.#.# +.#####.#.#..#.# +...#..###...### +..##...#.###### +###.#####..#### +....#....####.# +....#....####.# +###.#####..#### +..##...#.###### +...#..###...### +.#####.#.#..#.# +#....#....#.#.# +.#.#.####.....# +..##....#....## +##..#..#...###. +##..#..#...#.#. + +##.######## +##.######## +####.#..#.# +.#..##.###. +.##.######. +#..#......# +.#####..### +.###......# +.#.#.####.# +.....####.. +.....#..#.. +##..#.##.#. +.#...####.. + +.....###. +...#.##.. +.....###. +.....###. +...#.##.. +.....###. +####..... +#...###.# +#...###.# +####..#.. +.....###. + +##....### +.#....#.. +#..##..#. +##.##.#.# +#.#..#.#. +.##..##.. +#..##..#. +.######.# +##.##.##. +..#..#..# +##....### +##....##. +#.####.#. +#.####.#. +#.####.#. + +.##..#.##.#.. +#.###.#..#.## +......####... +#......##.... +.#.#.#....#.. +..#.#.####.#. +####..####..# +#.#..#....#.. +..#...####... +..#...####... +#.#..#....#.. +####..####..# +..#.#.####.#. + +.##.#..#..##.##.# +.###.#...###.##.# +.###...#.....##.. +.###..##.....##.. +.###.#...###.##.# +.##.#..#..##.##.# +..####....#...... +###...##..#..##.. +#...#...####.##.# +.####.#.###..##.. +##.#####..###..## + +###.#.##..... +.##...##..### +.##...##..### +###.#.##..... +.....###.##.. +##...###.#... +#####.#...... +.##.#..##.##. +.##.#..##.##. +#####.#..#... +##...###.#... +.....###.##.. +###.#.##..... + +...##.##.#. +####..##... +.##.##..#.. +.##...#.#.# +#..#.#...#. +##.#.#.#... +#.......##. +#........#. +##.#.#.#... +####.##...# +#.##.#.##.. +#.##.#.##.. +####.##...# +##.#.#.#... +#........#. +#.......##. +##.#.#.#... + +#.##.#.#.##.#.#.# +.......##..##.... +########.##.##### +.#..#.##....##.#. +.####..##..##..## +#######......#### +......########... +#.##.#.#.##.###.# +........#..#..... +..##..#.#..#.#..# +.####..######..## +#.##.###....###.# +.#..#..........#. +..##...#.##.#...# +......#......#... + +####..#..###### +#.#.#.##.##.##. +...###.#.#..... +...###.#.#..... +#.#.#.#####.##. +####..#..###### +.##.#...##.#.## +..###.####.##.. +#...##...#..#.# +.#.#..#.####### +......##.###..# +####...#.#####. +....###.#..#... +..####.######## +..####.######## + +.#####.#..#.### +..#.....##..... +######.####.### +##.##..####..## +##.##..####..## +######.####.### +..#.....##..... +.#####.#..#.### +.############## +.#..#...##...#. +...###.#.##.### +.##.#.#....#.#. +#####...##...## + +#...#..#### +#.#.#...##. +..##.###..# +#.#..#.#### +##.#.#..##. +##.#.#..##. +#.#..###### +..##.###..# +#.#.#...##. + +######.##.##. +...##.....##. +##....##.##.. +.######.#..#. +#.#..#.#.##.. +.######.#.#.. +#......##.### +###..###..... +###..###..... + +#.######### +####..##..# +.########## +#..###..### +..##..##..# +....##..##. +...#..##..# + +.##.##..# +....#.##. +.##.#.##. +.....#### +#..###..# +....#.##. +.##.#.##. +.#...#..# +.....#..# +####.#..# +.##.##..# +#..#..... +#..##.##. +.##...##. +######..# +####.#### +.##...##. + +#####.##...#. +..#......##.. +.###.#.#.##.. +####...#.##.# +#...#....#... +..###.####### +#.####..###.# +#.####..###.# +..###.####### +#...#....#... +####...#.##.# +.###.#.#.##.. +..#......##.. +#####..#...#. +#####..#...#. + +..#.###.##..# +######.#.#.#. +######.#.#.#. +..#.###.##..# +#...#..###.#. +############. +..##.####...# +#####.###.... +#...#####.... +##..#......#. +##..#......#. +#...#####.... +#####.###.... +..##.####...# +############. +#...#..###.## +..#.###.##..# + +#.#..#### +.##.##### +##.#.#... +##.#.#... +.##.##### +#....#### +##..#.#.. + +#####.#.. +#.#.##### +..##.##.. +.....#.## +..#####.# +..#####.# +.....#.## + +#..##.##. +###.#.### +#..####.# +.##...#.# +....##... +....#.##. +#..##..## +....####. +.##...#.# +.##...#.# +....####. +#..##..## +....#.##. + +##..####..##..##. +.#..#..#...#..#.. +##..##...##.##.## +##..###.#..####.. +.#..#......#..#.. +.......#.##.##.## +.......###......# +#######.###.##.## +#....##.##......# +##..###.#........ +##..###..#.####.# +.#..#.#.#.......# +##..#####..#..#.. +......##.######## +..##....#.######. + +.......#.#.#..#.. +.####.#.##.#..#.. +######.#####.#.## +######.#####.#.## +.####.#.##.#..#.. +.......#.#.#..#.# +##..##..#.#..##.. +#.##.#.#..#..#.## +.#..#.##..###...# + +#.#...... +...##..## +.##.####. +#..#....# +#..#....# +.##.####. +#..##..## + +.#..#.. +#....## +#....## +.#..#.. +..##... +..##..# +#.##.## +#....#. +##..##. +#....#. +##...## + +##.###... +..#.#...# +####.###. +##.#.##.# +..#...#.# +####..#.. +.......## +...#.#... +####.#... +...#.#..# +..#..#... +....#.#.# +..###..## +..##..... +..##..... +..###..#. +....#.#.# + +##.#.#.#.###...#. +.##.#...#.###.#.. +###.######..#.... +###.######..#.... +.##.#...#.###.#.. +##.#.#.#.###...#. +.##.#####.##..#.. +..##..###.#..#.## +###..####.##.#..# +###..####.##.#..# +..##..###.##.#.## + +#....#.## +#....#.#. +.#..#.### +..##..#.# +#....##.# +#.##.#... +#.##.#..# +.......#. +##..####. + +##.#..#.##..... +..........##.#. +.#.#..#.#.##... +###....######## +.########.###.# +.##....##.#.... +#.#....#.#.#.## +#.#....#.#.#.## +.##....##...... + +#.#.#.#..#. +..##....... +....##.##.# +##...###### +#####.####. +###..##..## +.....###### + +.....##...... +##..####.#### +..#..##..#... +..#.####.#... +#..#....#..## +##...##...### +.#..####..#.. +#.#......#.## +.#.#.##.#.#.. +..##....##... +##.##..##.### + +########. +......### +.####.##. +.#..#.##. +....#.### +#######.. +......### +##..##.## +.#..#.#.. +.#..#.#.. +##..##.## + +##.#......#.##. +###........#### +###..#..#..#### +.###..##..###.# +.#.###..###...# +.....####.....# +#.###.##.###.## +#............#. +..###.##.###..# +##.#.#..#.#.### +...#..##..#.... +##.#.####.#.##. +###.#.##.#.###. +....######..... +####......##### +####......##### +....######..... + +.....######..## +######.....##.. +..###.##..####. +.#..###.###..## +#..###..####### +.##..##.#.#..#. +.##.###.#.#..#. + +#..#..# +######. +.....#. +#..#### +.##.... +....### +#..##.# +#..###. +####.#. +.##.#.# +#..#.#. +....### +.###.#. +.##..#. +.##..#. diff --git a/data/14.in b/data/14.in new file mode 100644 index 0000000..ee9c108 --- /dev/null +++ b/data/14.in @@ -0,0 +1,100 @@ +O#O#O#O..OO....#O..........#.#OO..........#..#....O.........O#...#...OOO.O.#.##...#.#..##..O.....#.. +#.#....O..O...#..O...O.##.OO....#.#.O..#.OOO.O....#..#..OO......O#...#.#.#O.O..#OO..O.....#.##O...O. +###O#O#O.O#..OOOO.........#.#.O#.OO..#.##.#..O....O....#.O.#..O..O####.#..O#...O....OO..#O.....OO..# +.##.O#.......#....O#.......O.......OO......#...OO#..#####.O.......OOOO###O............#O..#O#.....O. +....O..#.#.#...O......O........O#..O..#O.#O...#O.#O...O#.#...#.O....##.OO.#...........#O.#O#...O.... +O...O..O.....#..O.#...O.OO..##..#OO...O........O.O.......O.#O.#..O......O#.......#O.....O.#....#..O# +.....O.OO..OO.....O##.....O.#........##.O.#..O..#OO...#.#..#....#O..#.OO...OO#...#..O.....#OO..#.O.. +#..#OOO.O.....OO...O##..........###..##.O#...O.O...#..O#...........OO..#O..#..O#O......O#.#....#.O#O +..#O...#.#OOO..#O.O..#O..#....O......O.O...O##O.....................O..##....#...O...#..#......#.... +.#...#.#.#O.O...#.O.#.#O.......#.....O.#.....OO....O.OO.#OO.#...OO..O.O#.OO.O...##...O..#...O#..O.O. +....OO#...###...##O...O.#..OO#..#.......O#....#.#.#..O..O..O......O.....OO#O..#...#....#.#O..#O..... +.OO....O..........O..##.OO#O.....O#.O..O.O...........##O..O......OO.O...O#.#.#.#O...##....#O..O..O.# +...O#.....O....#.........OO........O#.#O....O......O....#..#.##.#.#O##.#......#...OO.#....O.......#. +..#.O...#..#...O...#.#.........OO.........O#......###.#.#.O.O..O..O.#O...O#O.#....O..O...O.#......O. +..#.............#OO.....##...#O....O...#...O....#O..#O...#.#.O..O#.#.....#O#.#O#....#...O...#..###.. +#..O.OO...O.......O..O.O..#...O.....O..#.O##....O#.#......#..###.......O.O..#O....O##.O......###...O +....O..O#OO.O#......OO...O#.O...##...O.###.#O.O.O..#.#O...O....OOO.O...O...#....OO.O.##.....O#O##... +#...#OO......O............#.O..#O..OO.O#.O.O...O.....O..O.OOO..O...#......O............O.#..####O... +#..#....O....O..#O.......#.OO#......##....O...#....O#...#O....#...#....O...O....O#O...O.#.O........# +...O........O#....O.#O......#.##....O#.#.O...##O.##..#.....#....OO..OO.....#.#.#####......#.O....... +.#O......#..#O#..O.##.....#.......OO###....O#..O##.O#OO.#.#.OO##.OO.#....#.#.#.....OO....#O#...O.... +OO..O.#OO....#...#....#..O.OO....O...O#.....O...#.O.O....O.O...O###....O.O..O.#.O.........O#....O#O# +.O..OO..##.O.#OO.OOO#........#.OO#....O..#O...O#.#....O.O.##O..O.O...O#...........O...O.##O.##....O# +....#...O.#.....O#..#.#...O.OOO.#.....O..O.#O...#O....O.O#.O#.O....#O#......##......O.#.....O...OO#. +..#..O.....O.....#..O...O...#.....O.O.O...OO.O####..O#.##..O#...#..O#..O...O.###..#......O.O.....#.. +..O..O#.......OO.#.O.O#.#O..OO..O..#O....#......O.......OO#...#.#.......OOO##....O....O.....#O#..#.O +O#..O.O.......O#.OO....O...#OOO.#O#O.O#....O####.#......#.......O....#O#..#.#.....O..O.#.#O..#.O..OO +#..#.#.O.O..O...O.........O.#.O...OO.....#..#...#...O..OO.O..#...#..O.O.O....O#..O....#O#..O#.O.##.. +#.......##..O.O..###O.OO....#OO.#O..O..#.O..####O#.O......O...O#........#.#.O.O.#...##.OO..##...#O.. +OOOO#O...##...#.......O....O..OO.O##..O#.O.......O#....O##.O.....O#....O..O.....#.......O#....OO#... +O..#.O#.#.OO..OO.OO..OO..O#...O#.O.....O........O.......#..#..#..O.OO.........O.O.....O.OO...O..O.#. +....OOO......OOO..#....#.O..O#...O....##...O...O##O..#O.#.OO.O.....OO.O#.#...OO..O...##......#..O.#O +.#....#.O.#...O.O.O#...OO..O.#.............OO.#..........O....#..OO#.#.O....OO.OO##.O...##....OO..O. +...OO...O#O#O......##..O.OOO..O.#..O..O#.O#O....#..##..#....O.#.O..OO.O.....#O.O..#.O..#...#.O.#.... +O....O.O.....O.O....#.#..O.OOO.O..#....OO.O..O#OO..O#..#.O.O......O.O..O#O..O.#.#...O...O..###.O.... +........#.O.O#O#O..#...#.O.O..#.OO.#...O.......O....O.O#....O....O.O..O#..O#....O.....#.O....#O.O.O# +...##.O##..O.......O.OO..#O......O...............#.OO.....OO#....#..OO..O...O..#OO..O..O..##....OO#O +.##.#.#O.......O..O...O...OO...O#....##.#OO..O.....#OO.#.OO.....O..#.O.#......O.O.#.O...#....#.O#... +...O.####.#O#..O..OO.O..OOO#.#O..#O.O#.#O..#.#...#O....#...#.#.#....##..##.......#.O..#OOO...O.#.... +..#O..O#O.OO.O.O....O.O...O#....##..##OO.#...#...O.OO#...O..#....O#.....#.O#OO..O........O....O...#. +....#OO.O.#.#.#O.......O..O#........#.#OO.####..O#........#.O#....#..O..O#..#.O.OO.O.......#.O..O..# +.#.#..OO#.#...#.OO...#...O#...##.#......#OO....#...OOOOO#..#O.#.#..#O.....#..OO.#.#....O...O.O...... +O#..#OO......#.O.#..O.......OO...O.O...OO..##....#...#.#OOO......#.#.O.O..###O.OO.O...#.O....O...#.. +O...O.O..OO..#O#.O.#.O..#..O#..#...#..O.O.........O#..##.....#.O...#O.....O.#.#O.OO.O.#O.O#...O.O#OO +......O..#.....#.O#...O..OO..O....#..O.....#.#OO....O.O.O.#..#.......O...O.O...O.O.O.O.##..##.OO.O.. +.....OO##.....O..O#O.#.O.O...#......#.#....OO..OOO#..##.#O..O.#.#OOO.#O...O......OO.##..O.#.O....... +#.....O.......#......O..#..O.#.##...O.O..O........OO...O#O.###...O.#.O.O........#.#O...O##OO#.....## +O.O..#....O....#.O.O#O.O.....O..##....##...O...#O...#.#...O..#..O.......#..#.......##..O...O...O.OO. +.#.#.O.....O##O...###....O.O......#O...OO......O###O.O.......#..............O.O.O#.O......#...O#.... +##O....O.......#..O...........O...#...#.O......#..O#.OO..#...#...O.....#......O.O........O#.O#.OO... +O#....O.......O.OO.#..O.........##....OO....#O.#...OOO#......O.......OOO#O.O.O#.#..#..#OO..OO..O...O +.O..#.O....OO.#O....#O......#...#O..O#.O#OO#.......O.#.....#......O....O...#..O#.....#...##..#.#.#.# +.....OO#....#......O.....OO.O#O#.........#.#......O.##....O.OO....##.#O..OO...O#.#....O..OO.O..#.O.. +.....#...#....OO......O...#....#OO#.##.O.OO#O.O..O.O.......O...#..O...OO....OOO......O#.....#.O..... +.##..OO##......OOO....O.#.#...O#.O...O...#....O#..#...O.....O...#.....#O....O...OO#.O.OO...O..##...O +O..#OO#O#.##.#....OO.O.....O..#..O..#.#O...#.#.O...#O...O.....O.O....OO........#.#.OO.OO....OOO.#... +O...OO.O..##O..O.....O#...O.....O..#.....#.O..#...#.O.##.O##....O.O.....O#.#.O.O..#..O.....O........ +O..O#.O....O#.O#.O.O.O...#O.....#....O..O.OO#O...#.#O#........#..OO#O..#..O.#O.....O...O....#O.#.... +...#O.#..#O..O#O........O..O#........O#....##......OO#.#..O.#OO..##..O..........#.......#O....O#.O.# +.O..OO...###.O........O..........O..#.##.##.##.#O...O.##...O..##.##...O###.....#..#.O#O.OOO.OOO#...O +........##.O..#O#.....#..#...O..#.O......#OOOO##......#.O.O.....#.##......OO.#...#.O....O..O.OOO.#.. +#.#....#.............OO....OO#.OO#..........OO.OO.O.O.O.....O.....O....#....#.#.#...O...#..##....... +..#O#OO...#.....#.......##O..#O......O.....O.O.O...#.....#O.O...O....#.O...#O.O.#....O...#.##.O..... +.....#...#.#..O.O.O.#....O##O.....O...#O.O....#.....##.O....O...#...O.#.....##....#.O...#......OO#.. +O..#......OO#.....OO#..OOO..O.OO.....O.....#....O...O....##.O#.....##.O#.#OO...#.#.......#...#...... +.O......O#.....O.O........##.O.O...#.OO...#OO..O#OOOO.....#........#..#.#..O#..#....O.#...#.....##O# +#.O...O#.#.#....##..O..........#.O.OO.#..#.O#....................O.OO.O#.#O..#..O#..#..OO.#O..OO##.O +O#O..O.#..#O...O....#....O##..O.O..#OO.O..O#O...O.OO.....#..O....#.....#..#...#.........O....O.O.#.. +..O..O...OO......##OO#....O...#.#.....O...........O...O.#.O.#.OO#...#...OO..O.#.O.#O...#O..OO#.O...O +O..O.#O......O.O....OO..#..#...O...O#...O.OO.....O#...O..O#..O..O..#OO.#..O#....#...##O#.........#.# +O..OO#...#.OO............#OOO....O.O...#........#..#....O........OO#O....#.......##O.O.O#.#..O#O.#.# +#....O.O##..O...#..O#..#.....O.#..O.#..O#.##....O....O......#...#..OO.O..O.#OO...........#OO...#OO.. +#.#.#.O.#.O.##.O....O#.#..O#...O....##O.#.O.O...#..O..O..##.O#.......##O..#O#.#.#.....O##O...O.O.... +....#.....O.O.#....#..O.........O...O.O.....O#.....#...#..O.#.....OOO..#........O#.#O.....#....O#O.. +......#O##.....#O##.....OO..O.O....#.O.......O.OO....#...#.O#OO..#O..O...#........##...#.....#...O.. +#O..O.O...#.O##OO#..OO..O..#.#..##.O.....OO.#....O..O#..OO.......#.......OO.#.........O..........OO. +O.......O...#O.......O...#O#.O..#...#.O.......#...#.#..#O.O..........OO##.O.O..#......O...O..O#O..#. +.#......O.#......O#O...O.O....#..#O.O..#.#....O.##O#..O....O..OOO..O....OO......OO..O#O...#....#..#. +.........###.O..O........#...#..OO#.#.....#.#....#.#....#OO.O...O..O...O...O#.......O.........OO.#.# +O#O#.#.#..O..........#O..O.#.O.O##...OO......OO.O#..#O#...O.O...O..##..#.OO##..O....OO..#.OO........ +O..O.O#..O#.O......O.O..OO...O.......O......#.O.OO#..###OO...##...#O.OO...OO..##..#O..OO.O....O....# +O....O..O....O..OO..##..OO...O##O...O..#O..O..O#.#O....O.....##..#O...O#.#O##.#.##O...##.#O...O..... +........O.OO#OO.###OO....O....#....O..#....#....#...O..#......O#O#O##.#O#.......O#..#O.....OOO...O.. +O.....O.O..O......O.O....O.....O.....................O#..#...O.#...O.O...#..OO###...#...O##.#O...... +..#O#.#O##...O..O....O#.##..OO#.O.#.OO..O#.O..##O..#OO.O.#.O##.#OO..#...O#O.O..O..O.O...#..#....O#.. +...O.....O......#.O.O...O.#...O..#.OO..O...O..#..#.#...#O.....O...##O..#.....#O.#....O..O..O..O#.... +..............OO#.........#.#.O...##...OO.OO..O..O##.#..O..O....O..#...#OO.OOO....#OO..O.#.#O.O.O#.. +..#..O.O.O..##O.##.OO...O..##...O.O..O#.#.#..OO..OO..O#O.#O.#.....#O...OO#..O#......#..O......OO..O. +..OOO.O.#...#.O......#..OOO.#.#...O.O.O.O..#....O..O..#....#...O............O.....O..#O...O.O.O...#. +O..O.O..O.O....###OO.#..#.O.O....#.....OO.O#.O#.#.O..OO#O..#.....#.OO..O##..OO.....#...O.#.....#.... +..O.O........O..OO#...##....O..O....O.......O....#....O##.......O.#.#......#..O.....O.#.#.....O...#. +.#.O#.O#..#....O.....#.O#.....OOOO..#.O...#.#....#O...O..O...#.#.....#OO#.#.#..#.O.#O...O...O.O#..O. +.O.......OO.O...#.O.OO.O.O..........#.O#........O.#.#.O...O.#O.O....OO...#......#...###OO#.#.O.O#... +..O.......#..O...#..O..##...........#.#..#....#.....#O...O.#.##.O....O#...#..O..##..O............#.. +...O....#.#.#..###..O...#O.O#.O.OO...O....O#O#OO..#O..O..#...##.O...OOO.##..O..#......O..O...O.#..#. +#.#O.OO.O.#..O..O.##O.....#O..OO.....O....#.#OO...O.O..O..#O.#OO...#....#..##.........O...#.O......O +....#O.#..O.#......O..OO.#......O.O.O.OO.OO.#OO...O..#OO.O#...#O#...O.#O..O...OO.O.#O..O.O..O......O +O..O..O##....O......#O....O.O....##.OO...O.O#...O.....#O.O....OO......#.O.....#...OO.#...#...#..#.#. +....OO#.O...O.O#..OO..#.....O...O.OO..O.#...O..O..O#.....#.O#...O...#OOOO.##.#..OO...#..........#O.. +..O.O.O.O.#...O..#.#OOO.#.#.##.#..O......OO.#O..O.#....#O#.O##......#.##.OO#.O.O.#..O..#O.#..#.OOO#. diff --git a/data/15.in b/data/15.in new file mode 100644 index 0000000..f3b0d56 --- /dev/null +++ b/data/15.in @@ -0,0 +1 @@ +mpp=7,nzr-,lms-,lq-,lhqrxp=8,psb=2,jznz-,hf-,kpns=8,gq-,lm-,hlgzpp=5,gp=1,dzd-,xx-,hm-,kvz-,lzls=1,dbl-,dzd-,hcgd=7,lff=2,gbvzq=5,lql=7,hvk-,mpp=6,tx-,rg=4,lzhv=8,pdd=9,ds-,tcr-,bhm=6,cnn=8,ntms-,bkg-,hfnk-,pvf=1,tzh=5,mp-,zhdr-,nvj-,dfl=5,ccm=5,gc-,vmrr=5,zn-,kfq-,ts=2,tf-,pz=8,gp=2,hs-,lqrlg=8,rs-,pdm=1,kvbq-,sdk=1,vr=8,cls=4,fhzbjq-,nqn-,dlssls=4,ft-,pdd-,fphd-,sjg=7,jt=9,kl-,lps=7,npr-,jdk-,jj=1,dxd-,qjngd-,xjp-,btlt-,btm=3,gjhz-,bg=3,bjn-,bkd=2,clb=6,lq=9,jvx-,pvpn=3,dqzdbx-,tsj=1,vcjdc-,jgkzf=7,jtm=9,rxsj=1,xr=1,kvj-,kh-,fkz=7,dvg-,njzgjp=4,kfz=7,dm=6,zmql=7,gr-,nmv-,fpfzc-,sr=7,lvfd-,chs-,kbf-,ds-,srl-,rxcfx-,nbp=8,qm=8,xzf-,nbxlm-,nk=6,gmn-,nbp=7,dcj-,zgnp-,zmg=5,jznz=1,tnm-,vrhb-,ljvv=4,lcm=1,zkx=3,fpfzc=8,ll=5,lmktdb=5,hfnk-,ksf-,ml-,kfp=7,zdnr=9,cv-,vl-,jgkzf=2,cg=1,srp-,lms-,cxfh=3,vq-,mgt=7,sjg-,mmgq-,qdx-,vb-,xvmb-,qjngd=3,dxd=7,jxb=4,xhn=3,vrcrz=5,zsvhrh-,tmvns=5,knb-,bbng-,fn=8,nln=6,mxm=3,hb-,qr-,sp=5,pz-,gccsrh-,hm=2,btlt=7,xtg-,dbl=1,nbxlm-,gsq=3,gf-,zlg=6,bjn-,db-,kvbq-,lr=4,ht-,fljt=2,bnvb=9,vv=7,vrhb-,hggm-,ht=2,bbng=4,zxt=7,vzf-,dvl-,nq-,pdm=3,xv=9,vq-,rxcv=6,cf-,kl=3,btm-,fnxn=7,ztv-,vrq-,srl=6,njzgjp-,nl-,vrhb-,cgr=2,fz-,hpvp-,nnpd-,jffc-,tv=3,hf=8,bl=7,xdqs-,kfp=3,bljv-,sr=7,vz=6,cg-,fr=1,tjf-,mdcjcv=8,ksd=6,qd-,lc-,qncs=4,dn-,zn-,jznz=5,fx-,ch=3,tj=9,hsr-,qxrlr=5,pmr=3,ms=2,njzgjp=8,rbjmn-,kl-,lms-,rmc-,gbvzq=7,kh=8,dcj-,tjf-,btm=6,zt=8,dj-,fr=8,zzz-,mf=3,cxfh-,jc=6,gf-,lr=3,kpnltb-,fcb-,bzkc=1,kpns=6,sr-,zsvhrh=8,thq-,phfgr-,gvtcn-,hlgzpp=2,vz-,bhm-,fhpnc=3,tg-,qncs-,btm=1,xdv-,qngk=1,lps=2,qrd=6,ksf=2,zf=3,hnd-,thl=3,bpv-,lnhp=8,vtm=8,nc-,sjg=5,rm=3,pdm-,zvf=1,pzjs-,hmhs-,dshp=8,vr-,hb-,fn=8,hvqmc-,hsbtx-,kfq=4,qnh-,kpns=4,slk=1,hvxdf=4,hgh-,fc=8,tkk=1,pvht=7,dvl-,ntms-,jfx=2,cztdj=7,lq=2,pgckd-,jtm=9,smh-,fxvg-,dcj-,jqs-,hsbtx-,mlnd-,msm-,nnpd-,xng-,lz-,nbxlm=7,jgzst-,tvzv=7,jtm=4,bkj=7,nqn-,rjqxh=3,zhx=9,mlfj-,rz-,drl=9,gf=4,fn=1,xc-,rb-,dvn=8,bcr-,hq=8,xbh=4,jmnh-,xx-,nqn-,gf=9,nvj=5,vvgx-,mgt-,dvq-,tjf=3,ljvv-,phfgr=3,ljvv=8,ngx=9,vbbdk=4,bnh-,ccfj=5,fhpnc=4,xvmb-,fz-,cg=6,qt=5,cj-,lg-,th-,drl=9,jgzst=3,jmnh=3,rjj=5,vrhb-,mfdp-,hqc-,lmmc-,tzh=5,mmgq-,hx-,nc-,qncs=5,bzkc-,nbq=5,hfn-,mlfj=9,zf-,vrc-,zhdr=7,drl-,bl=7,mtbflg-,xvnr=5,jdk-,kvbq=7,xlb-,tnkv-,lc-,vvgx-,gr-,mpp-,zl=3,kfp=6,bnvb=3,rgl-,xlb-,qtm-,hvk-,tnkv=2,vmrr=1,df=6,xgd=7,fd=8,kh=5,fhpnc-,jffc-,cl=2,hzr-,bljv-,vlc-,vv-,grm-,xhn=7,zd-,xlb-,dm=7,nln-,lcm-,rhn-,blf-,lth=3,lth-,rz=2,hsbtx-,lcqz=9,gsq=9,mdlz=7,dvjdr=3,kpns=5,lzhv=2,nqn-,mgf=1,zvl=8,dxd-,cbkk-,gm-,zzz-,rhv-,sp-,pmr-,gbvzq-,gzt=1,rkkd-,bkj-,tqhs=7,hfnk-,nq-,hlv=2,tgh-,zlsd=4,vb-,mx=2,gq=2,bdkp=4,pk-,fnxn=5,fhzbjq=9,psb-,qdq=2,fljt-,lthlq=1,nlg=5,rg=8,ms=5,zxt-,bqq=2,xv=3,mxm-,gvf-,bzkc-,kpns=4,fr=4,pvf=6,mt-,kr-,vp=5,hfnk=9,jfx-,bljv-,grchdx-,kvj-,nbq-,hzr-,fz-,pds-,lqrlg-,nq=5,nth=1,btlt-,tqb-,lg=9,vfcz-,qngk-,msm=9,npr=4,nmv=3,dqzdbx-,jjhtxb=1,djdd=6,nq=8,fmbv=2,tmvns=9,zmg-,qdq=6,rv=9,qncs=9,zd-,rg-,qd=9,cnn-,mx=8,md-,tnkv-,rm-,rdq=6,xr=2,hs=6,lthlq-,kn-,lv=3,jg=6,drl-,bbng-,md=9,dvn-,pvgstv-,tnqhlk-,dvg-,ccfj-,rb-,mt=1,psb-,btlt=6,vfk-,zdnr=5,kmrzk=7,hzqh=6,fpfzc-,njzgjp=8,fnhpf=3,kh=5,xc=8,jmnh=9,zn-,rmc=3,tfmq=5,kz-,fn-,vx-,kx=3,hqc=8,fljt-,fxvg=9,msm=9,fhpnc=4,clnxp=5,rfkbqp-,cplm=1,nmv-,vp=9,vl=8,sp-,fm=4,tmn-,lz=7,gzdxh-,mgf-,vfcz=5,lc-,slk-,gsdvk=6,fn=9,ccfj-,qn=5,ptxfn-,ztv-,hf-,ktd=9,tf=6,qt=1,nlg-,gjbm=1,dzd-,rxsj-,lth=9,qqjc=1,mfnm-,rjqxh=3,kvj=3,lms=9,lc=9,smh=7,crr-,zlg-,vd=8,hf-,kmrzk=1,mcx-,rjqxh=8,drl-,mqc-,dxd=7,ggsx=1,tvf-,hv-,nvj=5,tp=1,lt-,fk-,kfz=5,dbl-,kfp-,hvxdf=2,gvtcn=2,phfgr=2,ggsx-,rb=4,jf=1,gs=5,hvk-,fphd-,lms=3,qr-,hrq-,gm=5,pgckd=4,zlsd-,tf-,jlp=5,ktd=8,zxt-,ds=3,tqhs=9,rtxt=6,gp=4,nlg=8,gvf=6,pgltk-,thxnd-,zx=7,qjngd-,jgkzf=4,dv=9,dvjdr-,jt=4,fnxn-,fx=1,nl-,cgr-,msm=4,hch-,cj-,vb-,ft-,gr-,rg-,bkd=4,thl=2,sp-,hf=3,jf-,pgckd-,xb-,hggm-,rhv-,hrq=6,xnx=2,fljt=7,rmc=8,ssv-,jqrb-,hggm=4,gt=5,rxcfx=3,dvg=5,zjhsg-,fd-,thxnd=1,rgl-,grchdx-,tfmq-,tqhs=2,rxcv=3,rl-,pvgstv=7,cg=8,bg=5,lnhp-,blf-,gr=5,nqk-,fm-,sp=7,hsbtx=8,grchdx=1,tkk-,mfdp=4,jvg=2,fj=3,tt=6,hq-,thl-,fzt-,tv-,mdcjcv=7,lt-,tqb-,qnh=2,lthlq-,fhzbjq=8,mx=2,vz-,hlv-,hfn-,gc-,jsdb=5,kx-,tnm-,jg=5,sz=3,bts=5,kqb-,gtt=3,hsr-,zvl-,cbkk=6,jf=7,kpns-,zl=5,mp-,kfp=4,nx-,ssv-,nqk-,ccm-,gbvzq-,pds-,hpvp=1,bg=7,kv=4,sxnj-,hgc=4,gm-,dc=5,mn-,zkl-,thq=6,ccfj-,fnbgjj-,hnd=6,hvxdf=7,dvl-,xng-,kd=4,rjj-,lzhv=1,pvht-,kfq=5,nnx=5,dvjdr-,gtt-,vfcz-,btm-,jlp-,nzq=2,zzz-,mfnm=5,fljt=8,lzhv=4,qf-,zdnr-,clnxp-,dshp=2,ktd=9,pf=1,zhx=1,lmmc=3,jt=2,rsps=1,xj-,glrql=7,pk=5,pvht-,jffc=5,rlsl-,hcgd-,hcvsn=8,kh=7,xl-,cl-,rsps=2,npm=9,sm-,gf=3,vq-,tsj=6,zxr-,rrg-,bts=3,drt-,hvxdf-,tkfcrj=4,phfgr=6,jffc=9,fm=4,jt=6,smh=5,kj=2,qncs=9,crr=4,hj-,kx-,sz=7,mpp=2,nbq-,ztv=3,hm-,nshbkn-,qrd=2,pdm-,kz=5,lmktdb=8,vx=3,jg=6,ms-,pvf=8,nxm=7,df=4,tkk-,kmrzk=4,qncs=6,ncvj=6,tnkv=8,phfgr-,vrc-,dvg-,jqs-,ff-,srl-,kn=7,xlb=5,kfz=1,kx-,lcm=9,lmlbf=7,hch-,rfkbqp-,vb=6,rmc=9,rkr-,dfl=4,vcgxs=3,npm-,vrb-,dvn=5,kfz-,vr=3,dxd-,scb-,slk-,pdm=5,xhn=1,sdk-,jxb=3,hsr-,hf=8,jznz=9,lm-,ssv-,pdd-,bv=4,jj-,dcs=1,hvxdf=4,vhrcbm-,bg-,ds-,xc=3,nln=6,jfx-,ncvj-,xr-,kfz=4,fr-,vb-,fpfzc-,vv-,jssb-,zjhsg-,qdq=3,df=4,pxzc-,dc=3,fpfzc-,tmb=7,zgnp=8,xvmb=1,fp=4,jj-,tkk=7,grm-,mgt=6,tnkv-,mqc-,bkg=1,njzgjp-,fphd=9,fljt-,vt-,pvht-,lth=2,ngx=8,tbvx=9,gzt=7,hqc-,xpkljm=3,kr-,mcx-,lzls-,rhv=4,tnm=5,rxp=8,tg-,xhn-,slk=6,xbh=2,fm=4,mlfj=4,rg-,fz=2,vfk-,pf-,df=1,cf-,rhn=2,tp=1,kt-,dj-,lms=2,lq=6,nln=3,nzp=7,bkj=1,hnd=7,gsdvk-,qxrlr-,bg=3,zsvhrh=8,rtxt-,dvjdr=2,nln-,lps=3,tnqhlk=6,nxm-,bkj-,jt-,kgb=5,jznz=3,dcj=4,bcr=7,bb=6,xr=5,bb-,knb-,crr-,ksd-,cplm=5,tgh-,ghqj-,kr=6,dvg=5,vdgn-,zsckf-,nzp-,gs=9,ppk-,ksd-,ksf=3,ngx-,bfdbb-,kpnltb-,grfv=4,blf-,ztd=5,jpj=1,nj=8,bq=8,tnm-,jzs=2,rg=5,psb-,hcgd-,bzkc=9,gc-,xzf=2,jfx=9,sjg-,mlnd=1,sjg=9,lql=7,hfn=3,zdnr=3,nzp-,nbxlm=3,rb=4,dv=5,xv=8,dshp=2,mxm-,qngk=5,blf-,jffc-,cplm=5,kq-,lmmc=5,gs=8,jzs-,hcgd=3,chs=1,xvnr-,fxvg-,vfk=3,dvn-,gc-,zhx=9,hgc=6,tp-,vdgn=9,nqk=6,srp=7,hvk-,qsg=8,gccsrh=5,hggm=8,xlb=2,kv=7,df-,vz-,lff=1,pr=9,rmc=5,pds=7,ccfj-,sgs=5,dcj-,xgd=9,zn-,df-,kt-,hcgd=6,knb-,clb=7,nl=8,xttmp=6,hx=6,rm-,cxfh-,ngx-,lff=7,dj=7,kpnltb=4,fnhpf-,rvq=4,hcvsn=8,hs-,vmrr-,tvzv-,clb=1,fc=8,vthzt=2,jffc-,qr=8,kvj-,bhm=5,mgf=9,sp-,xng=7,lmmc-,mp-,kxmlkn=7,clb=4,vd=8,fx=5,vt=2,slk-,gccsrh-,fxvg=6,gccsrh=6,xr-,fxp-,fbh-,rhn-,bts=4,db=5,nbp-,kpg=6,btm-,bsp-,fj-,kh-,tvdl-,jssb=9,gb=3,bb-,qd=6,mf-,zxr=9,grchdx-,nth=2,kvz-,bkj=3,jlp-,nnx=6,nxm-,xx-,xc-,bljv=8,grm=4,hzr=9,kj=7,xbh=2,rtxt-,glrql=3,vfk=4,clb=3,mlfj-,dlssls=6,gt-,ccm=9,fxvg=4,thl=4,vz-,jt-,ml=2,tsj-,fkz-,mfs=8,hnd=8,pdd-,tnm-,jssb=2,pjv-,rb-,rmc=8,hch=8,qf=1,jlp=3,dvjdr-,zf=2,dzd-,hb-,vlc-,thxnd=8,kgb=7,gvtcn-,dlssls-,xttmp-,pxzc-,dv-,rdq-,lv-,chs=1,hq-,ntms-,hlv=6,nh-,rjqxh=8,ft=6,jj=5,nnx-,cq=4,zf-,vz=1,gp=6,zsckf-,lqrlg-,kxmlkn-,nq=2,dvjdr=9,pgckd=2,tvf=2,zxr-,thl=2,jlbm-,ztv=1,xnx=3,tvzv-,zsckf=9,xzf=9,kd=5,kz=8,ngx-,gzt=6,zxr=7,cbkk=2,hggm=7,dm-,hv=1,kvbq-,blf-,djdd-,rp-,zsvhrh=6,jj=5,jmnh=5,lz=9,zl-,vt=8,vhrcbm-,pzjs=8,cq-,jsdb-,vd-,hlv=5,nshbkn-,ntms=6,bv-,gbk-,vzf-,kc=3,lv=8,fkz-,rlsl=8,tg=1,pds=5,rm=7,jsdb=8,zd=3,bl=1,vthzt-,hggm=1,xzf-,qf-,ms=7,xc-,jqs=9,qncs-,lzhv=8,kx=3,hj=7,vz=5,pp=7,gb=9,dshp-,nc-,rsps=1,qjngd-,fjqc-,rtxt=9,gzdxh=3,ksd=2,cbkk=9,zkx-,kx-,hmhs=8,hcgd-,zkx-,hsr=7,jlp=1,rrg-,mlnd-,hcgd-,qnhgvl-,vrhb-,cplm=2,lth=3,lt=6,gs-,hggm=5,gp-,vd=6,tmb-,qtm-,zd-,ccfj=8,fhpnc=5,lth-,rfkbqp=3,cl=8,dc=8,rm-,kg-,bnvb-,jmnh-,tvdl-,fd-,lff=2,lrvb=3,gp-,rjj-,psb=4,bzc=9,kz-,fx=8,dj=1,hb=1,zkl=5,njzgjp-,rxsj-,vrq=6,jgzst-,kfq=8,fphd-,rxcv=8,gzdxh-,pjv-,fphd=1,jsdb=1,mcx-,vx-,lmmc=9,rs=2,vx=9,hgh-,ts=5,vrc-,nzr=2,gcf=4,ks-,hg-,gsq-,mgf=3,mgf=7,pgckd-,pgckd-,jpj=2,psb-,fljt=4,thq=2,tf-,rkr=1,ccfj-,dbl=1,dc-,nqn=8,gjbm-,qngk-,btm-,xc=6,tkfcrj-,rvq-,gbk=4,ll=3,zn=5,xtg=8,mmgq-,fxp-,ksd-,tvzv=1,scb=2,zgnp-,lps=5,fkz-,vdgn=9,zmg=9,vvgx-,fljt-,rxsj=5,ms-,fq=6,pvgstv-,zkl=3,bkg=6,jzs-,mfs=8,zkx=6,xqx=8,jmnh-,xlb-,tnm-,ksf-,hv-,rrg=8,tvzv=1,rz=8,lcm=2,sqvq=2,kq-,ckzq=6,nc-,tbvx-,vd=8,lm-,nln-,btm-,ccfj-,gbvzq-,nnx=1,sp=3,qn=8,nj-,ml=5,ngx=4,rb-,zlg=8,zjhsg=9,bs-,fphd-,sgs-,bhm-,rv=7,ggsx-,bdkp=8,pmr-,hcgd=3,gtt-,tnkv=9,nl-,gccsrh-,qr-,vrb=1,zn=4,lff-,bhm-,rl=5,vx=3,zmg=4,xr=5,nqr-,tmb-,vfk-,qxrlr-,ktd=5,btlt=7,fs-,ddbxf=5,pvht-,vzf=2,zd=7,hv=4,hggm-,nbq-,xbh=2,th-,mx=9,ktd=6,dqzdbx=9,kg-,qr-,lpmh=9,xx-,gzdxh-,th=8,vfk-,zxr-,lmktdb=5,jmnh-,fjqc-,nqn-,mfs-,xv-,lhqrxp=3,pn-,gvf=5,rbjmn=5,pxzc-,nbxlm-,gvtcn=1,tbvx=5,cnn-,vrcrz-,hsbtx=8,drt-,mfdp-,vt=2,pr=9,dcs=4,cq=1,zsckf-,smh-,fx=5,hg-,hj=1,rz=5,nzp-,zxr-,sz=1,hg=6,fq=4,lmlbf=3,cf-,jdk=1,qdq-,cgrv=5,dxd-,dvn=7,fnhpf=1,hcvsn=5,zjhsg=4,bv-,fnxn=6,tkk-,vp=2,gq=3,bv=7,lps-,ggsx=3,fnxn=2,nq=1,hj-,nth-,sm=3,sxnj=8,jxb=7,tqb-,jpj-,dvn-,xng=7,sdk=7,fzt-,hqln-,vt=2,bzc-,kc-,nh=4,kmrzk=3,hm-,jfx=8,cv-,rtxt-,mdcjcv=2,dbl-,zsvhrh-,lrvb=2,pf=8,xr-,jlp-,qsg-,tcr=2,nqn-,vmrr=2,sdk=6,nxm=4,xqx=8,gf=4,zlsd-,hs=1,tvf-,rz=3,xtg=1,tnqhlk-,kxmlkn-,gzt=5,kl=3,smh=2,fq-,sz-,fnhpf-,hmhs-,dvq=6,kvz=2,vt-,tfmq=2,vrhb=1,tqb=6,hzqh=6,dp=6,nlg-,lcqz=1,dlssls-,lqrlg-,hggm-,mfdp-,hm=9,cxfh=3,vv-,rkkd-,nbp=1,rhn=3,gr-,npm-,lpsr-,rjj-,xng-,bnh=7,pdm=4,lm-,jvg-,gvsr=7,mn-,tsj=2,grfv-,tg-,zzz=7,cq=4,jzs=5,nh-,zhdr=1,tg=4,ll=6,rlsl=9,hlgzpp=1,kg=3,rs=6,hgh=8,ztv-,vx-,pvpn-,gr-,pjv-,tvf=6,md-,dbl=4,ddbxf-,tnm-,nzq-,rxcfx-,gvtcn-,xr-,xb=8,vbbdk-,cplm=2,fd=9,cls-,drt-,tjf-,md=3,lmmc=9,hv-,sr-,vfk=4,hrq=5,bzkc-,cj=5,qngk-,thq-,nlg-,lps-,lcm=3,lt-,grfv=7,tx=8,zkx-,scb=8,jlp-,rxcfx=1,jdk=3,dvl=2,pf=4,mlfj-,nktx-,tkfcrj-,vfcz-,nzp=8,lpsr=3,hsr=8,ddbxf-,pxzc=3,tf-,rxcv-,mfdp=9,qnhgvl=5,pf=1,dv-,rv-,rm=3,tkfcrj-,mts=2,fk=7,qf-,vlc-,ztd=1,grchdx=7,rmc=7,rxcv-,xttmp-,rjj=5,srp-,xc=4,pvpn=5,cgr-,thq=5,cgr=8,zlsd-,thl-,qtm=5,rvq=4,ft-,fzt-,fn-,bhm-,qvhkp=4,jc-,nqn-,crr=2,zmql=2,qsg=1,bjn=1,sz-,cv=3,lm-,cj=1,jqfmp=1,hcgd=8,rg=3,jvg=4,fq=7,pdd=8,kfz-,tx-,zf=5,gbvzq=7,jjcpm-,ts-,kfq=8,bzc=4,dvjdr-,tx=1,fz-,fs-,zf=1,jh-,jc-,hvqmc=8,thq=5,lmktdb=5,zzz=1,gsdvk=5,grchdx=7,jsdb=5,tbvx-,nj-,jgzst=7,cq=4,nx-,jvg=6,gvsr-,tfmq-,mn=2,hzr-,pzjs=6,fcb=5,jlbm=1,lnhp-,lnhp=3,grchdx=8,bs=1,gmn-,jxb-,tvf-,xttmp=1,bnvb=2,gp=4,hq-,mn-,tvdl=6,zlg=4,vb-,tmb-,clb=8,kqb-,gjbm=9,qncs=8,thq-,fd-,fnbgjj=1,gsdvk-,rg=5,lvfd=8,tzh=9,rdq-,zkx-,xpkljm-,pr=3,mxm-,nqn=4,hs-,nnpd-,tv-,kfq=3,tp-,fxp-,cv-,btm=1,ksf-,pf=3,hgc-,bbng-,hpvp-,kz=9,xl=2,ksf=3,fbh=7,dfl-,kxmlkn=2,nk-,ksf-,ksd=4,gp=3,hlgzpp-,crr-,kr=2,bkg=7,mx-,rm-,zmql=2,bfdbb-,th=3,crr-,vrhb-,clnxp=8,qr-,xttmp=5,tjf=5,rxp-,rjqxh-,cv-,vrq-,jqs=9,xhn=7,nhb-,cl-,bl=7,gbk=2,cq=6,dbl-,gvsr-,jt=8,qsg=3,rlsl-,hgh=4,ht=4,vr=2,tqb=2,fm=7,tnm-,bdkp=6,tmb=8,lpmh-,vz=7,bsp=6,bkg-,fcb-,clnxp-,lg=8,fx-,qnhgvl-,kl-,db=2,knb-,hq-,lr-,ljvv=3,bv-,vz=3,xlb=7,kpnltb-,gsq-,pgltk=9,bkj-,lps=9,rb=4,jjhtxb=6,zsckf=2,gr=5,kz=6,hlgzpp=9,kv-,xtg-,xvmb=4,rs=3,fxvg-,tvzv=4,kfp=6,gsdvk=5,gzt-,jpj-,vrhb-,hs=7,kqb=3,cx-,sgs=2,rp=2,gr-,ztd-,qjngd-,xbh-,sqvq=2,dxd-,mlfj=1,ptxfn=6,bkg=5,btlt-,mdlz=9,jqrb-,nbq-,npm=8,kpnltb-,pgltk=3,cf-,zkl=5,ft=7,cf-,jjhtxb=7,qt-,fc=2,zjhsg=7,npr-,dvq=2,hb-,nln=2,zmg=3,hsr-,nbp-,mx=1,npm-,pdd=9,zzkc=7,nbq=1,jqrb-,kqb-,vz=2,nk=9,hs-,vrhb=7,hpvp=3,kj=1,zdnr-,gvtcn=5,zxt=3,bkd=8,zkx=1,gp-,gsdvk=8,nqk-,jlp=5,vhrcbm-,lpsr-,clnxp-,lm=3,jjcpm=9,nlg-,clnxp=8,vbbdk-,xlb=6,hvqmc=3,hg-,kfp=7,fx=8,lcqz-,djdd-,srl-,tt-,cl-,pz-,kl=2,tkfcrj=6,kvj-,kbf=1,nktx=3,fphd-,vd=6,bnvb=6,pdm=1,rp-,ds-,nl-,fn=4,mxm=1,rvq-,nh=1,qtm=4,fnhpf-,xttmp-,gc-,zd=9,szp=6,vdgn=3,hg-,gzdxh-,mlfj-,pgltk=1,cgrv=5,gsq-,hf=3,qdx=6,kx=4,vzf-,lmktdb-,gvf-,xtg-,hsbtx=2,gsq=4,rjqxh-,gvtcn=7,ztv=3,lmktdb=4,npr-,pgckd=2,nqk=3,xpkljm=8,ntms-,ks-,bs=6,vlc-,knb-,mfs=3,xvmb=1,hggm=5,fk-,zn=1,xpkljm=3,tmvns=5,zdnr-,tcr-,ks=8,vmrr=6,zgnp=8,dvl-,zhdr-,dvg-,mxm-,hfn-,vql=4,mts-,pvht=3,bhm-,pgltk=5,hgh-,jqrb-,bnvb=3,jh-,cbkk=1,vlc-,jdk-,bzkc-,chs-,qt-,kh=6,gs=2,tnqhlk=7,qxrlr=7,bs=1,qx-,dqzdbx-,gt-,jffc-,ztv-,tqb-,lp=5,gzdxh=3,tqb=8,tx-,bkg=8,gsq-,dvjdr=8,cbkk-,xvmb-,gm=3,lzls=3,sgs=6,fpfzc=1,tfmq-,lps-,vrq-,kc-,tnkv=5,rtxt=2,nk-,kvbq-,qxrlr=4,zvl-,sxnj=7,mts=6,gmn=3,zxr=5,hmhs=2,tvdl=1,fc=9,rfkbqp=2,lv=6,xlb-,kbf=8,vcgxs-,vvgx=2,rlsl=7,ztd=1,tkk-,pp=5,thq-,zl-,vvgx=4,msm-,gb-,sz=1,nk-,nl=8,lm=7,nl=4,rxcfx=8,mxm-,jxb=3,ztv=3,gc-,szp-,fr-,fk=2,mfdp-,zt-,tfmq=2,hpvp=8,fq-,bs-,rb=7,fnxn=9,xv-,lmmc-,bts-,jqfmp-,hfn=1,thl-,hvxdf=1,bs-,dj-,fhpnc-,qt-,pvpn=1,tjf=5,rb-,gtt-,vthzt-,gzdxh=3,vtm-,lv=9,lpmh=8,hsr=8,lpmh-,zdnr=9,hghph=4,lv-,ngx-,zmql=7,xnx-,cg=1,kfq=4,vp=4,hpvp-,pn-,vq-,bnh=7,dzd=2,ztd-,hldlq-,vthzt-,hqln-,tfmq-,hmhs=7,bts=8,qnh=1,xqx=6,clb=3,jssb=4,jvg-,gmn=5,hs-,vp-,qngk=9,ptxfn-,dvn=3,tqhs=8,fd-,rtxt-,mxm-,gbk-,bqq-,ghqj-,ml=5,xvnr-,rg-,rkkd-,lc-,gf=6,jjhtxb=5,vx=2,kd-,mt-,vthzt-,rgl=1,bcr-,kq=1,grm=3,fnxn=7,mmgq-,hsr-,npm-,hzqh=4,npr-,lql=9,bnvb-,ggsx-,rrg-,rkr=9,nqn=8,bkd=3,sdk-,jfx-,lm-,qt-,zd=5,dj=3,xv-,dzd=2,nbp=8,tnqhlk-,fn-,lrvb-,vrc=5,bts=5,lms=9,hx=5,nqr=3,nmv=5,rrg=3,gr-,zsckf-,gbvzq-,npr-,gcf=6,qd-,pvf-,fgdh=1,nc=6,rdq=6,hv=8,mdlz=7,ff=1,kqb=5,vhrcbm=4,hgc-,blf-,pzjs=1,zn=2,pvpn=7,lt=1,gcf=4,qnhgvl=1,kg-,ztd-,fn=2,lmmc-,lthlq=6,mqc-,hg-,rmc=5,fxvg-,sdk=9,ddbxf=5,qrd=3,zlsd=5,nzr=2,hx-,dcj-,kfz=4,jssb-,kvz=5,hx-,thq=3,pdd=8,hvxdf=6,fbh=3,dc-,mtbflg=8,dshp=4,pz=4,lv=7,mtbflg=8,blf=6,jgzst-,dv=8,lqrlg-,hcgd-,ms=7,mfdp=4,kc=9,zd=7,qjngd-,kx=9,tcr=2,xtg=5,hgc=3,pgckd=4,mmgq=8,rvq=6,vp-,lt-,vql-,fxp-,zkx=1,ts-,lq-,hcgd=2,qx-,bkj=4,crr=3,zsvhrh=6,tnm=2,mk=8,xr-,xr=5,hgc-,fhzbjq-,fnbgjj-,hpvp-,hgc=4,cgr-,bljv-,ptxfn=4,vx-,kz-,dvg-,ssmm=4,ksf=9,bbng=7,nqr-,sz-,thq=8,pvpn-,ssmm-,ch=7,gjbm-,qn=6,zx=2,zvl=2,slk-,jzs=9,qm-,cj=8,qnh-,nbxlm=2,thxnd-,xr-,ztd-,hj=5,pr=4,gtt-,lpsr-,cbkk=4,pjc=5,lz-,lc=2,hvqmc=3,fhpnc-,bts-,fn-,fnxn-,qx-,jpj=2,ptxfn-,hcgd=3,xc=4,kgr-,btm-,sm-,vb-,tsj-,vt=5,db-,hzr=3,df-,xhn-,rm-,nqn=9,gvf-,kvbq=7,dp=6,xjp=1,xdv=8,nc=5,tbvx-,xbh=4,kvz-,tjf=5,kh-,vv=6,rxsj-,cls=8,kmrzk-,zf-,bjn=5,rkkd-,lcm-,fn-,hfnk-,hfn-,zkl-,bhm-,nln=7,kn-,gvtcn-,bjn=1,kvz=8,rkr=9,vcgxs=3,qnh-,nbp-,clnxp-,mdlz-,dshp=9,gccsrh-,pgckd-,kpns=5,kgb-,jssb-,fs=7,cj=4,md=1,zmg-,jssb-,vl-,mmgq=6,fxp=6,zd=9,nzr-,cx-,ppk=1,vthzt-,bnvb-,nzp=5,nbq=6,pnzs=9,vfcz-,ppk-,qngk=2,hvxdf=9,zmql=4,zgnp-,qt-,ktd=9,vlc=6,jc=9,lrvb=7,sxnj-,hs-,pjc=4,mk-,cq=2,bpv=2,jmnh=1,kn=5,ggsx-,qm=9,tkk=2,hnd=4,gvf-,zlsd=9,drt=4,db-,mdlz=7,hlgzpp-,zvl=8,thq=4,ksf=7,nzr=3,lps=4,nqr-,dcj=2,gcf-,vcgxs=7,fx-,mn-,ts=8,gjhz-,blf=7,lg-,jjcpm-,pnzs=1,pvgstv-,bsp=3,ds=1,sr-,dvq-,ddbxf-,kpnltb-,lzhv-,kx=1,fjqc-,kxmlkn-,fr-,jtm=7,th-,rxp=9,hsbtx-,hg=3,nj-,ds-,mt-,tp=6,ntms-,lqrlg-,ts=4,nshbkn-,mfnm-,pmr-,ktd-,hggm-,pgltk=9,jfx-,kpg=4,tgh-,vb=5,jfx-,hgc=9,zt-,nbxlm-,fnhpf=7,ccm=6,vfcz-,gjbm-,tp-,vp=8,zmql=5,vdgn-,zvf=1,vrq-,npm=4,xdqs=7,ckzq-,rgl=9,pp-,tkfcrj-,bqq-,kfq=3,cgngq-,qqjc=1,nshbkn-,mf-,fxvg-,fphd=6,ff=4,jffc-,nqn=8,vt=5,tzh=6,fkz-,tj=8,nbp=2,ms=4,kz=3,cv-,tp-,fzt=4,kj-,kj-,vrcrz-,bs=2,lpmh=2,sgs-,xdqs=5,zvl=8,hzr-,zvf=8,sqvq-,drl-,vfk-,rs=2,qdq=2,pjc=7,pgltk=3,fcb=1,rhv-,jxb-,pf-,ntms-,fgdh-,smh=8,njzgjp-,pf-,hgh=8,vrhb=2,bv-,glrql=8,vd-,jgzst-,lthlq-,ddbxf=8,kx=8,mmgq=5,gsq=2,ff=2,gt=3,gb-,bnh=8,hs-,fxp-,mgt-,ntms=3,hpvp=4,xj-,nxm=3,hsr=7,dcs-,nnx-,gbvzq-,lnhp=6,sm=4,drl=6,dcj=1,xbh-,lthlq-,zvl=7,hj=9,gvf=7,ms-,nnpd=5,tnqhlk-,vfcz=4,kt=1,dcs=2,cnn-,zhdr-,ht-,lm=9,vrb=6,lm-,gbvzq-,hmhs-,kq-,dj=1,kfz=1,fxvg-,ssv-,hqc=9,df=3,ch-,kgb=7,fd-,ml-,zvl=5,mts=5,lg=1,pdm=2,vrb=4,qx-,pjc=1,bdkp=5,dlssls=7,hvk=1,kvj-,tvdl=5,ms-,kfz=2,lthlq=1,cj=7,dbl=3,cgr-,tj=8,vp-,jssb=2,lq=6,xpkljm-,lpmh-,hj-,lz-,kvj-,vtm=3,sxnj-,pk=7,btm=9,rb=1,ms=7,pk-,blf-,hlv-,pdm=7,crr=7,fnbgjj-,dcs=1,xlb-,kl-,lvfd-,kmrzk=8,gzdxh-,lpmh=5,lhqrxp-,kfp-,mfdp=4,hs=6,njzgjp-,fnbgjj-,qx=1,kpns-,lrvb=9,fj-,pdm-,kqb-,jffc=2,hlgzpp=8,cls-,pmr-,tqhs-,gb=9,qm=3,zt-,qvhkp=8,fp-,cg-,mn=9,lmlbf=5,xlb-,xnx-,rm=2,slk=5,gcf-,ljvv=5,xc=6,dfl=3,hsr-,rkr-,cgngq-,nh-,mtbflg-,sr=3,gjbm=6,xc=9,fxp=7,kd-,jjcpm=1,grchdx=4,nktx=9,ksf-,rkkd=5,rg=2,btlt=2,dzd=9,gsdvk=4,vcgxs=8,ngx-,rxsj-,tmvns=1,dc-,tp-,qpcjt=9,fr=2,hmhs=5,tgh-,xv=5,jt=4,tqb-,tp=4,fzt-,blf=4,ljvv-,rrg=3,fm-,xqx-,psb-,fr=3,nzp=6,zkl=2,thxnd=3,djdd-,ktd-,tmn=2,vzf=7,tp=7,zxr=6,lmktdb=9,kvbq=9,rjqxh-,xvnr-,hfnk=8,pgltk=9,pzjs-,hgh-,zhx=3,nxm=5,dcs=8,tsj-,vcgxs-,ssv=6,kgr=2,dvjdr=8,tzh-,slk-,vfk-,jlp=2,nbxlm-,pv-,rbjmn-,tx-,jjcpm-,tmvns-,lcqz=3,nnx=5,dj=7,kgb-,jznz=8,phfgr-,hg=9,xtg-,rl-,dj-,fd=6,ts-,cls-,nc-,pn=9,lc-,blf-,hzqh=2,xnx-,fzt-,ktd-,thq-,scb-,fhpnc=9,pf=2,xc=2,cnn-,pgckd-,bbng-,vrhb=3,rg=2,nh-,tvdl-,zf-,szp-,rbjmn-,xl-,gmn=6,gjbm-,bl-,drt-,fhpnc=1,mdlz=4,tkfcrj=4,fhzbjq=2,fbh-,ks=8,kpnltb=2,ngx-,gp=3,fpfzc=6,sxnj-,gsdvk=4,gc-,tnm-,hfn=8,kpns-,qsg-,fn-,jf=1,vr=3,pxzc-,lql-,zhdr-,vfcz-,dm-,lvfd-,tzh=1,xvmb-,lcqz=5,lp-,gtt-,nbp=4,vq=8,gjhz=3,ff=2,nbq-,jlbm=6,kqb-,cxfh=5,tmn-,qsg-,mfdp=5,nh=8,kc-,bts-,xj-,cgr-,rv=7,lcqz=9,lc-,tgh-,zd-,rxsj=8,tvf=8,rb=4,dqzdbx=4,rtxt-,thxnd=2,dshp=2,hcvsn=7,xl=6,gt=4,nzr-,hnd-,pzjs-,ts=3,kfz-,bbng=6,fm-,nk=2,sqvq-,mtbflg=1,nktx=1,rtxt-,jtm-,dm-,kvj=9,ccfj-,qrd=5,kvbq-,tbvx=6,vl-,rhn-,jvx=1,lm=9,mn=6,pvht=5,sp-,bkj-,fpfzc=2,bdkp-,cbkk=6,sp=2,gjbm-,gzt=9,nkd-,hf=6,jzs=9,lq=3,qx-,rxcv=6,gvtcn-,npm-,jj-,ckzq=7,qjngd=1,kg-,lzhv=3,qd=9,bpv-,pjc-,rkr=9,cgr-,tsj=2,tqhs-,gp=8,bkg=2,mxm-,qjngd-,qt-,fhpnc=4,qxrlr-,szp-,mdlz=6,rp-,xgd=7,jffc-,gr-,nth-,fs-,nqr-,jsdb-,vcgxs-,rhn-,xdqs-,dcs-,mqc-,ckzq=7,vrhb-,hch-,bqq-,fj-,hm=6,nxm=1,vv=9,hpvp-,gtt=1,cj=5,mp=6,mmgq=7,fq=7,fphd=4,fnxn=4,bsp-,gzt-,kl-,kj-,jjcpm-,mqc=8,lhqrxp=8,gq-,xv=4,mgf-,hlv=3,dc=4,vmrr-,hx=2,vz-,sjg=9,vthzt-,mlnd=9,cj-,ht-,hfn=2,xbh-,dcj-,kfp-,nx-,cq-,th=5,kfz-,ccfj-,cztdj=3,bfdbb-,lms=1,btlt-,hx-,bzkc=3,jmnh=1,pk=6,ts=7,xtg=9,tf=1,hqln-,gq=9,zsckf-,gbvzq=2,fljt=5,vcjdc=8,zmql=8,jvg-,chs-,bzc=8,hgc=1,fmbv-,ll-,pn=6,tt-,tcr=2,vtm=9,kqb-,hvqmc-,vv=8,gtt-,mlfj=8,sqvq=4,rmc-,vz-,qxrlr=4,kpg-,rxcv-,fxvg=3,vv-,ksd-,ztv-,sr=5,bts=8,tvdl=5,jqs-,lnhp-,vfcz=7,blf-,gzt-,xzf=1,pdm=5,bkd-,cx=7,kfp-,jssb=3,ft-,gs=6,hrq-,ssmm-,bkg=7,dvl=1,hf-,rb-,thq-,nbp=6,lzhv-,xj-,zzz-,bnh=2,fp=1,tnm-,mx-,mp-,vp-,jtm=3,zxr=3,jjcpm-,sjg-,hb=8,szp-,qdx-,zdnr-,hzqh-,lmmc-,vmrr=2,ksf=4,dp-,rg=4,nj-,cnn-,dcs-,zlg=3,ff-,pgltk=2,hgc=1,vql=9,bljv=1,tcr-,jvx-,sjg-,bnvb=7,jt=4,vr-,rxcfx=1,tt-,vcjdc-,fgdh-,vrb=7,gsq=1,nmv-,cxfh-,rdq=6,fc-,zhx=1,hrq-,fq=2,kvbq-,jgzst=8,btm-,hqc-,lzhv=9,hvxdf-,fk=9,tsj-,dbl=7,rz-,nln=1,zzkc-,pds-,gb=9,tmb=1,fp-,ncvj-,fnbgjj-,ppk-,ghqj-,zt=5,tvf-,cx=8,rz=9,qd-,lg=6,jg=9,pjv-,tvf-,dn=6,jznz-,tgh=8,cbkk-,mqc=4,zkl-,jzs-,mp-,ztd-,hm=3,pjc-,kpnltb-,kpnltb-,fk=4,nj-,qpcjt-,ccm-,thq-,vbbdk-,tmvns-,jznz=4,rsps=1,drt=7,hf=3,drt-,jssb-,mt=6,kj-,nzp=9,hg-,rhn-,pk-,mmgq-,dfl-,fphd-,xqx=4,zlsd=2,dv=6,nth=5,jtm-,qpcjt-,ngx-,xzf=5,lc-,ncvj=2,btm=4,jc=3,dcs=1,njzgjp-,cplm-,bdkp=6,df=1,pjc-,mfs-,hcvsn-,pdd=6,vbbdk-,cg-,bbng-,sdk-,mpp-,cplm=4,gmn-,sz=3,cgrv-,tkk=7,lrvb=8,pv=1,qjngd=1,dvjdr=7,hpvp=3,zsckf=8,ks-,fnxn-,npr-,fq-,hzr-,lm-,nj=5,rxp=4,rkkd-,hfnk-,btm=2,cq-,hvqmc-,kx=2,rv=7,hpvp-,sp=6,jlp-,hm=9,qr-,clnxp=3,ptxfn-,ddbxf-,qf=2,ksd-,lpsr-,kt=5,lpmh=7,tzh-,dvl=9,rz-,dj-,rhn=4,bkg-,kxmlkn-,lhqrxp=8,grfv=5,nbq-,pk-,tmn-,dm=1,szp=2,pf=1,jssb-,xdv-,vvgx-,hfn-,nvj-,tgh-,jznz=3,ngx-,gm=5,bl=5,mt=1,bljv-,db-,nqn-,bg=3,tvf=8,thl-,xpkljm=6,nl=1,tgh=8,mgf=5,bkj-,nvj=4,hgh=9,ggsx-,qf-,lqrlg-,smh-,bq=7,nzq-,qqjc=1,nzp=6,nth-,fz=4,lrvb-,zzz-,dvq=2,phfgr-,xqx-,bv-,bzc=6,kpns=1,hqc-,bkj=9,rbjmn=9,hlgzpp=1,rv=6,zsvhrh-,kc-,szp=9,nnpd-,mfdp=7,szp-,cnn-,bhm-,lqrlg=9,vfcz=4,nln-,ztv=7,hghph-,rv=4,gbvzq-,ngx-,ljvv=5,ckzq-,vvgx=7,lff-,xlb=9,tkk-,cplm=3,hlv-,kd-,ksf=4,vrq=5,pr-,pk-,hgc=5,cv-,jvx=5,hs=8,cgngq-,tkk-,gr=5,hvxdf=6,vd-,hvqmc-,npm-,lrvb=5,tfmq-,pdd-,xpkljm=4,nzp=6,kvj=2,hcvsn=1,qm-,rjj-,rjqxh-,mfdp-,zsckf-,xvnr=3,jjhtxb-,vfcz-,zlg-,tj=4,jxb-,fgdh=1,blf=5,tp-,sjg-,rtxt-,jqrb-,vrb-,mcx-,zdnr-,jlbm-,zxr=8,mts=5,xv=7,npr=2,ngx=1,vd-,pds=8,cls-,zhx=5,bzkc=1,tcr-,dvjdr=8,qtm=2,zxr-,zsckf-,kqb-,hx-,rfkbqp-,gc=7,vt=5,jg=4,fgdh=4,fcb=8,qdq=2,mlnd-,vql-,ppk-,bzkc-,gr=6,nc-,vl-,gccsrh-,dbl=8,gt-,dshp=1,dn-,kfz=1,hlgzpp=3,vthzt-,ptxfn=8,hm=4,kx-,ks=4,fnbgjj-,bcr=7,gvtcn=2,hsbtx=1,ngx-,ccfj=8,thl-,kd=7,rdq-,nhb=8,cgrv-,nx=9,gq=3,nxm=6,npr-,tqb-,gjhz-,cbkk-,gbk=2,dv=9,tbvx-,sz=5,bbng=2,zl=9,qqjc=5,xzf=6,xv-,cq=8,bts=6,grfv=8,bqq=9,gcf=1,jg-,nl=8,dfl-,fxvg=7,nc=2,lv-,vt=8,djdd-,kx-,dbl-,fjqc=6,nlg-,rxsj=3,gbk-,jjcpm=4,pf-,kpg-,nktx=3,gm-,jfx-,gzt-,cgngq-,zx-,fhzbjq=4,jmnh-,ds=7,hg-,xj=9,thxnd=2,pn-,btm-,tmvns-,nnx-,jqrb-,lv=8,nq=8,ts-,nnpd=8,jpj-,kq=9,pdm=8,ch-,xb=3,fxvg-,kfq-,phfgr=2,gb=8,qsg-,jqs-,grfv=9,qtm-,rvq-,pzjs-,jfx=6,kvbq=9,jqfmp=4,jfx-,rxcv-,bts=2,nvj-,qdq=1,rhn=6,mqc-,kv-,tvzv=9,pdm=7,xpkljm-,kgb-,ckzq-,kn-,xr=3,pp=2,gs-,pdd=7,gp-,dn=2,nj-,pdm-,mgf-,xdv=8,fc=4,psb-,ts-,xpkljm=1,bsp-,lzhv-,xc-,pmr=5,dm=3,xhn=4,jjcpm-,hv=2,hcgd=8,nzr=7,zmg=6,zvl=1,ds-,tvf-,fnhpf=1,gccsrh-,xr=7,fgdh=9,phfgr=7,thq=7,nbp=2,hs=2,jjhtxb-,nzp-,fnhpf=6,fhpnc-,hvxdf=9,dm=8,rz=6,dshp-,kvj=6,jjhtxb=9,fs-,fj-,ff-,mdlz-,mqc=7,lc-,vz=4,lff-,hrq-,rhv=4,lps=1,tsj=1,pdm=6,zmg=6,bv=1,vthzt-,mx=3,lzhv-,bzkc=8,gjbm=6,chs-,rkr=3,fn=5,rdq=1,pgltk=1,dvn-,nq-,cf=5,dvg-,rtxt-,cgr=2,ljvv=5,qd=9,vvgx=9,ghqj=4,xgd=3,mts-,zsckf=5,rsps=3,rlsl-,xvmb-,qd-,pdd-,btlt=7,bg-,nvj=4,lps-,zzz=8,lqrlg=5,cf-,btlt-,mt-,hzr-,vq=4,xc-,hvqmc-,jj-,gjhz-,xc-,kl=3,jvg=7,nhb-,tvf=2,kfq=9,drt-,zmg-,qnhgvl=8,vcjdc-,kd=1,pp=3,rm=5,jpj-,xl-,jgzst=8,fbh-,kqb-,fp=6,pvht-,cnn=6,fnxn-,msm-,mp-,xzf-,pvpn-,nqk-,bsp=4,jf-,kfz-,zvl-,sgs-,fm=2,slk=3,hggm-,bzkc-,pdm-,rxcfx=3,nnx=2,gzt=2,hzqh=7,fxp-,fzt=1,gt-,lmlbf=4,xl=6,bts=9,vx=6,hldlq=8,bts-,zhdr=9,zlsd-,vv-,pmr=6,ckzq-,rs-,jtm=8,ccm=7,tg=4,jvx-,tkk=8,gvtcn-,dcj=5,lzhv-,hghph=4,rm=1,fnbgjj=4,zzz=2,ccm-,cv=5,clb-,cxfh-,qngk=6,fk=5,kqb-,mgt=6,fhpnc-,ll=4,fzt=3,qncs-,clnxp-,jffc=5,kfp-,fxvg=2,bsp=9,bjn-,zsvhrh=8,qngk=5,hpvp-,lms=7,jffc=2,xzf-,bbng-,drt=3,mlfj-,xjp=9,cgngq=7,tnm-,kgb=8,mxm-,rp-,hf-,dvg-,vx=6,cx-,mdcjcv-,pmr=1,qx-,hf-,tmb-,lzhv=2,ddbxf-,hggm-,gcf-,rxcfx=8,kc=7,pgckd-,rmc=2,xbh-,hm-,lhqrxp-,lff-,rxcfx=5,fnhpf=3,zhx=5,cg-,kd=2,hzqh=3,jgkzf-,dshp=4,jjcpm=7,nlg=5,bl=7,scb=5,dv=2,kq-,nvj-,hq-,tmn-,xgd-,tf=3,dv=6,sjg=2,lms=8,zdnr=9,gm=6,mcx-,gzt-,kmrzk-,hsr-,vv=4,qjngd=5,kj=2,qngk=3,vthzt-,hggm-,mfnm=9,jssb-,nkd-,tnkv-,xvnr-,gjbm-,tp-,pvpn=7,cls-,szp-,qnh=4,dlssls=8,ptxfn=5,xb=4,gzt-,nnx-,xr=2,vql=2,cxfh-,rp=5,fz=5,bs=2,tqb=4,fljt=7,tp=7,kn=2,zd=4,cgr-,jqrb=4,hq=7,kc-,fnbgjj-,jlbm-,cg=4,lpsr=1,hsbtx=1,cl-,thl-,vd=7,hsr-,rkr-,pzjs-,dvjdr=9,tvf=9,jg-,nln=7,ccfj-,jqrb=5,zzz-,dm-,bkj=9,hv-,lthlq-,bnvb-,zsckf=4,tmb=4,xlb=8,cg=5,lz=3,jh=9,smh-,xpkljm-,nzq-,cls=6,tnqhlk=4,bkj=8,pmr-,dcs-,ddbxf=6,vtm-,jc=6,xvmb=2,gmn=4,jffc-,pgckd=8,crr-,fnxn=5,gvtcn-,rgl=4,bsp-,vthzt=6,tfmq=3,mdlz-,sz=5,qnhgvl-,jfx-,rhn=2,ztd-,bdkp=5,zsvhrh=4,pmr-,jlbm=6,thq=6,dvl=6,xzf-,xdqs=9,ppk=6,sp-,lzls-,gbvzq-,jqrb=5,vfk-,hq-,lrvb=8,cg-,dvq=4,rfkbqp=3,ppk-,fnbgjj-,vdgn-,qt=6,vrcrz=6,rb-,zx-,bts-,bcr=4,zkx=6,qdx-,nktx=9,xttmp-,jfx-,ms-,zkx=3,zjhsg=3,fj=2,kq-,gq=6,vrb-,vcgxs-,fp=2,knb-,tf=1,pr-,gc=3,gmn-,jqrb-,nbq-,rdq=8,mfnm=6,vl-,srl-,lcqz=4,qxrlr-,qr-,rb-,btm-,vdgn-,bnvb=5,lms-,hch-,zmg-,glrql=7,npr-,tvdl=3,qnh=2,mx-,fbh-,srp-,grchdx-,zlg=1,mqc=1,zjhsg-,qtm=6,bzc-,gq=2,cgrv-,rb=8,pnzs=1,kt=3,fxp-,gt-,pn=7,rxcv=4,jtm=8,sr-,xlb=3,dvn-,fs=8,mn=3,zhdr-,cgngq-,fbh-,sqvq-,zzkc=2,drt=8,hcvsn=9,tvzv=9,dn=5,jg-,nnpd-,rxp=1,hv-,bg-,mgt=6,zx-,rtxt=7,bkj=1,kq=6,lff-,xhn-,qx-,dv-,pr-,lp-,rdq=3,mcx=7,zl-,zf-,nk- diff --git a/data/17.in b/data/17.in new file mode 100644 index 0000000..0820b5c --- /dev/null +++ b/data/17.in @@ -0,0 +1,141 @@ +544611123131461715341411271353635151515335122158611336476148348778436382521167743275166634227758333614434221217256627554165443316443534211453 +663635426335622721222454357737412226878625184546618766386221541247824481537273154322282382741846453432718776246762152515521117666462463411663 +612354524523332474575331744121533755141845178365542823533635436387642174875263142884251157553531662556686473615131271611612225163317535235336 +125653253617772412346542632322225684713858257336546532261172227746722747852734481581424727526866322686473642322674432414653171415763164456326 +665555562351111265554372256156741557361786573468744518468511386121447874621231261811174667753431435313585128116264354732243671665166763622616 +112551466667441641521735661226212327685257544662173144332236121114248833576166327232332762318163372477531353843285714526234723745445654325635 +435123322133663773175521363812216162716217642441315611716841663691786314816745773276748776774278273436665468544317223164667326376216412233431 +264435141335131312176146125537543886555644785428427636657738557378312663547332772116231125476646442162431458414134874622726575372237535655154 +364545154252541141623316672245886523325146381175357763649635243331819291673318943757641327227431561428633314383588575423526644166765464443452 +455151416331433564614231437611448651423343747325884671845826851779229198687825241364397697325511285546425585431646428627156464162517525146345 +452652127777221436712252482488128141578715783711677195492925447493458959457352127938114645319484473337886685553341743438375436467744542623315 +623247553511727323562453872141457243445658814137766361583468753845144841547818598571284299579739284541251875121712445181482774143162454337647 +372763573336335776678528464741215587377367583821834367973355358188546555664116625221196993128375618522858525548677822564513135265717512622662 +253172763757113544653645738377184234722151555365493418221952887361724733586624256861685821238582389155733584447372472561766277212512625556731 +762416536512772111187686681585341144828161479815246567859968751338215615251697545999954875346418914752165553473413137816482365114725175225113 +221633366173336622434334424366876432136714593567121181567313852436921219848638965181916557592384329988178846531384571134135156824426677626546 +563277571323676718636266522115375773478223948397975728363944247952371265465663865465855132415728734843879644124224625114187864744321123546257 +255653676375465265114652633858684623891754715837548879661727393199744398543479746842758526664626637475662715882614566723153226377573454775671 +271523747172448453267258476516414781448772429621773125922756186776839272345514827945597489995294587726166681264383687375478143868624647317142 +724614742641753683143546856375553332313619496763794389396784869263493834326482446622949811228336445949749685661667752315654474223635455435646 +327422337665758856461854786578256686918931862895826111851211376673979332667882287868292163832972533957155231685866516363172774261252214146146 +122636671216275785588533484514988819678556547243982672347983334842352899842254653443883169289684429567387252649776574438137462378871211327742 +126656347544358278257538315565636527122925717263431822676543954634887523333252855945858883678267247373224194975865922244474355217753263225221 +115176356227862778382344226172331768417968719572858495954374259223946598253392598383296787547174431125625938648632776152446544442711124574617 +425565456682264552872662681825899689687234967157256367247859338949293395365594232347797235473245767572618114564388354442727261123347152267221 +142451431653255373335777352517832925213857696683268332264487862738223883455995778223452245527357778388855559657934975878265646782136183563264 +573524757765633684584741665929935317165588839947984593856543985599293325547488487276259986283497263822666183673871926262346513686617374513254 +517576733855733817216733759675555955764836575534828334737686845858346989675982494665843984644757748761941143835273151592856661567753353773455 +277313724278774227424585877178361315389651843423367384937249494758633342393586385835767995685493987386373929412674974493235214314332517152432 +425551578474428181417313982771319341589926742292686733946526896979875257434972955565227967668768956566511268233217286591528365565612116478244 +651338667675562254181784971853383789531635837346433594922782724563634987694348723638979366468585386952234622753357972435888565724237748317645 +367364558635146153355759999172154168865833523369438734534597955829823269887886993232652474868342922722994432531378333681346278336527514856114 +434676885812872576728157245589637598869289274924932954527368585874968988548429832723698545487928486927487537617745673849143442888318445637567 +517667176172536125746257817856244356275372777455429899867594747848883745835785953277452375975564963432683277697592694482259946423851774735772 +417368544537532274234311846349172772928644673896275872774578955869986759453354944458799397825325856556572557553455988861273416524787156417713 +325175145877618283357272217378239462945859576233386288923548939539473957356574648485468942658453696738759985545123557599675311764877145213125 +557434846623176536772168477653179956367633556738387489764574485536996966684965895843949674934797569647769946824229673198317447262285185576752 +721823654713464271637949823917379232799757843367575933685875567665568357683543736767365779794884896855284298468164195227819552521861672268512 +467338221147174544258444961946826362783377426473894743576976383688868984735779363588466736739779769893547327625469126646181875327774365186728 +328374351871373931689332484213822638622249258493764655665833737345463494363757339465367774849668295723866222877261418632215764516728151753616 +136568653257677245885185143574543742877635275933436699695583475876383887533437958979868398833986689276554949426395339222434223448488546735458 +163563486432563524923438819218392927735896985455767637557744354384543555556475948768847635798599597373288627264362815181758926578131513588412 +361664338741172268761671916234888288835955592495983397373566883476545965344933485586598374497334958285492533937234825229258956622366357548522 +184462316433191189443123917663462287873994847359679767488944546853543489375977469659865436774944457334333937247968483141214643697596175783277 +233423173535134697149982991597968355489249763747666345379687499947334948737339968467567847368545387625268244779498378346733932872897415747526 +575222455666443495633692524359586979778352467744854646996668438673686855763546934366677575989696988746968224563836929257527667136748451654613 +583858881359629627385957698293527726339276993475648693353867677598657569674955857634539646858485374559557562738463752749835672594717768271723 +371888172228967199311393453726625797457434869938495949836795648896644856868946756459973367558345576946627335556532685532666222666283355562745 +731578718871418283568249396247344572768268668969664639835555697758566648584484889545876649775478389846963356746277635599744791818858745157146 +263836872437798346453346445326856962232545758388644599497696965888689859855477445799473779543469877436349226366675795672111857734956442318685 +156433515746627379697383344698338344365999375736739936537957778566964454457875759647485934734465895587394533469877978578141911929473945458182 +563356475157511751393332492528434565894695875369335666798869689965489474876997968757488893935753776836639762647959629294258951588349331236338 +385443338914128289217188776982395852495663477866896749695646555866756977598799545779749965738949458845984492728387632279193177984888367281561 +268435457166276784225564242777753344548785775994675749499795946455596664476978665699989997639436989885868644376828396898214184164829956863224 +681722838887871769572498839824584566445577764634398985964587576466846758594779565986644858898768979356439539939348389586528779611281974737467 +544452588665524574444444868287868424587487375583883944995889598489584489675545587997994758945788683763786769966563289564954228712118831715165 +367658453135248828132438795545963774376369749767478576989644749659848858679889876759964568497884964863437373685295882289624485141158617726226 +474287222464592943161289624237698657494835433854895796497476444749694946597549459665785648999546999963654498469926332843425855634471837681261 +762627478662378117797727883638274838986835733873596467646789799469964595547969767576658885677574876594353378896695344939281247833594486974624 +375252129153828614514787697786676297763885675958687479998878795875787678998685956756698464657844799975436999854262294323279151935851455978753 +587772368922665242219724633564742948699764975586878876469575478965655859579758785589668854578774977454756573836556227789966919459135972527442 +261677158161883151325979633963397658383769734395969878456959676665678687566599988989585445879869668666498996537766296688742722738417951653334 +873267256111714354456564833998292763659695567645858769774489579656877966899966589654947464454589937469367459497429464373364993388127889285123 +472112345415272176914525224465232489857858667874876459999959855587695998676858956594589646774786974745784863376925272487657299992422559743822 +116828926796319239592667255278762766584785386454467949664464697695777757978796688988597897497456497357384364974946567963354426612329686514288 +768338967427841114894755744276635466347746496595589779879664878688969886579688685568468449568894935688378876655272986234923641315523267312414 +365173137549444794149393827737862877674983838679576775494966768979857586559758697669645676976789678938379995384924846856785649485237148731881 +367376596777675591428335692245785836577599535657477847549759886686779968898699758559664655854598486485353893947487864839952361958348366967576 +652663627789775776852623933324843646978545485854477475868478968995675577965959578876647864844764934987967333544455692652763355941618237112637 +225247419981382989842532456632287598555589538495678589745947796558789998697978965569476554688587643554886638668427579249747534944671475266283 +867446796216926789169837875998364446838487865989457557547959879856669575765578779777854746764548689969985985675629428553773825815464295648268 +778684936279279971965947858878554434778985748598989459599958556655898986656976566859788794685555689787874868537797599577892669272195436887652 +141672441882148752964798774978744594337574467947446899498995676767556655659758796689887468849698687654349546474462547286943976788983672377128 +877144838339522571585886938393487746453466684869864847948979975975657658579559658875476759969459959758537786744523952384435399124826874973566 +468775919737378249567883297872868538344667755974665844667956878885668696975776796588749787669966888556556496779664323836652917226432594534366 +514561459118261464769799783432397346554547577684486484778475658766856565995659579789545794768759667436666655748549577647989851893141456333882 +378757564863449277884647776924947375888559973848586968979647587665955996787689758959976585944959645594367595996689228377723313794282775427181 +558611726339349813137773844946955485889933843775779678994789755599757679875699679598797598755686963669756688832986858842292632975871673661286 +274323798857721979478362252222865333448589393686545546785564975655876599697578668879548747657578585784587933699823792868497585214446143448345 +616512618311619267277397288883374397845966669768848599989595656965758897876657567774595669649845768578378594984666678935529219573558889364151 +786332644488427393922295588825994633839934479468795554695566458657598599865678966856745555867644749536776537483937329492895911362343293428877 +486843612732893872635484356443896437886845545584997799844889555567555985578767765497494768996846538687559463372599937849838165142815665527486 +116564269859251229444927847624768553786954538388789459476684659496887985559588757667676859864675556546478975659838936489828198836555198216314 +166737739444581324891996724797865255867745939495744764677466948567765978869895878697678494847744637966863545527448599444762976595585396716224 +884872824463717894416423565485848363349333768486367789564496956954497797566744467998977744996535934943556699469873544788335689713877963712157 +421141833629218263182855873458637648897635954665557975566446665675978664989574958666476799464457635937654788729687338776831938647668185217775 +644871319744158192999539342434769324679956495593334458994479557699699887457749756969468568779983758977855848663992677778849366678539497746636 +753663225236529537133586395884543644549874389764435569468974899487676698584486455495784996645646575345468985968882783292461112353445726436573 +675224416543537315233262447858928396733547485669965369997788994866679864947595496565557779597738394685494883683737397462465558579651696358624 +363825427222624843259638462453355326639965874883546698759546487548748885677594588899958877439383484959833576595425746288456543982222584537575 +732236715274595749511837449826647395264999863453557436596584668969886654986456865844775984466479849565694989369454369258213779535374295872176 +766638846645677422274135625897666384869466936693483464588884779674656499886696847478946787485644637377567334765559622926634228184917758578477 +362617132378894632789375686284559692565839838785439893384449796777577889974586798689689646988693699534488238454765882591549998128125414874552 +341435142265451679197272772526724677425938684489844888745965958589847786844866775454845838796573555745592247883882886786315175657336124141335 +642185276386239718373371884929996766775655559569458993489944947975475557587559467964844579336478673758557852586963474793496739439934132362365 +763525216254469215792621252672259574299246363675465737846573466955496688769565544898386488373647448654535992483338938939457284318829432654457 +452437131625248542855445825445437239569457468435695944648367896567759666446886587377439854338586787859872547953449323482896183178661262867266 +884786454717748663998436262983787753756756434798384467557463378486985995674338538638894756994675447544492268269448234347119622475763453341258 +676378761886792978936273751999376925677759984783498978786947546558764557965337337776778974594958757687833229969473972411355573999188655327326 +716748875413894137813222366468292877783275394675784595584696954683995854895765943494558937737744848269744577466626346315369556573138626148267 +244513638122675978278395629246287296737658978583939374659679856493969668798773444874597689584748875487592486885788356463632822429487847525388 +526718153765365228781725532925762569726826532454967698597344487375768534476839863553587863963649835645673822688779413387461678316285521125185 +841364768431263613964285845752545367456596585846574379793653938387735576966893697555656856365334558428976537883568761334167576858855614418126 +578176576734174664291488957624476799827885479432354534965983869445537654869739758639583333754477782937365865667555262424166359355283711212533 +242761543162242283856164156432268248984824456587466784353935735695685387843775636634589465645646362936939977435332781387977151757374753122273 +126216672855878148795918619265665523468943397537364547459464835556383438864996936965997735736637298977894495494569837631957266466418434576162 +641316821176368766124495853718565876293693497597773925484586963478486667738468648688353573259243843349345463927298399516447384633647442583522 +116165456245886816181925722432952396945823422589577399889897483487957984796988436757768769326368624254569982354399149724146976885152881323217 +246443682546256744861527919789176999736275873549955225325535353758943384387655977833899662477888573769678553614383849996926954626837165768716 +254283524317268171815525591589555841257443482999237796644774545479364353496546637952347923349734793333628226582231772748433782373758211476471 +614144457711628412141465256992259535247748372888629797347744828587244879663728494497833445536577432362537559879149174242837841717887757513255 +512681252736375123232886341781295562266966599896636936237423298843342944598478799322832659232693296228443132626579791599335826252353756216744 +432538423856833435713464184455638263596694648445842934476734472884264683372345798279535498426243597328884668877232637334282454375238114857651 +564533645388582651641394175855264586211655349989784352972425672932334275957873927468328323458978645279475712362878453218691748616877611138176 +472127232452436637246189173656276981827928545948946969275223734748255946974673487554966243438287275772662819267169991635155123358432484256573 +635453134656165556351824893737789125262272736493764479376996545655857268694636722677872885286358468234867648846653831776178776317854588835724 +577162646237527126432751993319627916282331235974266323829885785759352274843738258673438252668993244698448564761989555781453836253854561816542 +267643257487532153137211261393153588426867389776693257954987253795822242649373333725293858594924981222354677413818143921558766233265487547371 +124655562846648162314383115688692834741512254349938793593688992276659693756282887586599687333298918126187129692863149617884668435383733713731 +152713642564734283876641848658276124174183265981699586837552378578656327786742284658529944229513816872672266272787251137261628754776523432541 +221716357643533356243722364755542957761972338579929446544968248793355576623748379488886652526452614619712443517933461838717863738457366667441 +777676513574274333266715541646695763844416588753597687567894276455582737966452484899846791925874491997339918934268588115525544818517554126311 +441752661127628666515445711175515346267977659371656992637217726488395924864869648998568171456622116727918933755316326561516753151625537657726 +665216743346655565185788135422887292127965876171828253829777626371947774946673373178896169375624456544667656532841153642241576467637147342767 +136623463222325645551271315162475958627627943534821528877697634643222925545627699243116645347813719715653426387572148171424284224472566115726 +152463416355425666142218327843777671253948839262697974881165256679373197318252277164551728556657474494468438334418468674745543673442766172264 +415562466777756347416814875424333552762392354264187329972437271969692482183799691881447398883939271235881335626563626633657188317466212666264 +235242324523765323366415466685717623118345338581634223937792862712411313189476868739465414933792362183851713423854216645887317574331251563123 +471265155575125567486423846883115121581792638362991182523544987864212716429958626234784294122381411313211447151247853248257652226552427156616 +462453245361427551576372347388332865234729442784166554623755869471629833763953484143335472824494417628647614321885631247884773356775444624242 +256656417224666563726343187841126311752387493976327395811493983435658726464594357675152431871916661754515622665858438347665133537362621535746 +436662432622415117547141644847845211371168426573919916655313899672567864281656457263229886699834712156826168452886534331356126411745146773636 +113226716356756651221462858775166738652477786277861473768843899433955837797782173198572635988278316237515878231835116571241271371633711556214 +263347474731567232236428741522164251512785187548111356318461374451835997933287362647339616412432763742174536525817662363511151525564442755232 +154524742213146331646273188664344244322746356335362625284462369675837644126982637342512531877218636236522318774856317327165766322616411537125 +155336277264467332223434142548161682616878874532348382377651948415995947771324891518147873747676673235862437178215125615643537662312637222421 +666621233315344447454132717317683737584261811251612218267827262613952166393478566556448682264128725572813535162227777633645214343514452421221 +114261514712764472671716677211815577671866243352474572774685164752335284132443368755718621162364228838121778735837537355632551275324364555641 +564235416611744357573166154765542476827723264521612613278441218534255586825342166276766585538426138835884134236227622235752464251252336445132 +213266534424275421416277643712717313685416417288473153473567222546116827386355354748853366477754286753756528368421357651413463663737313416544 +524456442222241725231454254464415783288235443253712375137166361347476518581333177436683466272263663125833231761636467272525323351245263652244 diff --git a/data/18.in b/data/18.in new file mode 100644 index 0000000..4c34fdd --- /dev/null +++ b/data/18.in @@ -0,0 +1,694 @@ +L 7 (#2ac8e2) +D 5 (#14b771) +L 14 (#302602) +U 5 (#14b773) +L 4 (#55b782) +D 6 (#535223) +L 3 (#3bf082) +D 8 (#7be433) +L 9 (#4c1060) +D 12 (#3a69b3) +L 4 (#5f1760) +D 6 (#6832c3) +L 6 (#2f0d60) +U 3 (#0f6c51) +L 5 (#2a1042) +U 7 (#464ee1) +R 5 (#2a1040) +U 5 (#4ce141) +L 2 (#1261c0) +U 11 (#1a05f3) +L 3 (#22a220) +U 6 (#6f3d13) +L 6 (#677110) +D 6 (#38ccd3) +L 6 (#1a3370) +D 3 (#4f3b43) +L 12 (#0086e0) +D 3 (#68f4b1) +L 4 (#5c97f0) +D 5 (#4bee81) +R 8 (#556760) +U 5 (#447f53) +R 3 (#2a7580) +D 5 (#7063e3) +R 7 (#2c84b0) +D 9 (#193141) +L 7 (#1ae260) +D 10 (#4e32c1) +L 3 (#4f4a70) +U 10 (#356251) +L 8 (#7ea0b2) +D 4 (#580771) +R 4 (#7ea0b0) +D 10 (#002e51) +L 12 (#0f93b0) +D 5 (#024911) +L 9 (#16ca20) +U 2 (#14e323) +L 3 (#77c5d0) +U 7 (#4db283) +L 8 (#7b4722) +U 5 (#1f8db3) +R 8 (#0a5fd2) +U 3 (#3dd443) +L 11 (#5ad430) +U 11 (#33f903) +R 5 (#5ad432) +D 7 (#1f0493) +R 14 (#4e8c52) +U 7 (#28bcc3) +R 3 (#4f1792) +U 5 (#31ad71) +L 11 (#196172) +U 6 (#6707d1) +L 11 (#556db2) +U 3 (#6707d3) +L 6 (#457dc2) +U 3 (#31ad73) +L 8 (#01d4d2) +U 4 (#525cb3) +L 6 (#225382) +U 12 (#0fc663) +L 4 (#701292) +U 5 (#0fc661) +L 7 (#0398a2) +U 8 (#525cb1) +L 2 (#46ac42) +U 5 (#6c89c3) +L 8 (#320b70) +D 3 (#319c33) +L 5 (#7b0110) +D 11 (#319c31) +R 5 (#4286b0) +D 4 (#2db113) +L 8 (#806100) +U 14 (#5c7523) +L 4 (#1a96c0) +U 8 (#40b8d3) +R 8 (#5bab20) +U 6 (#43c6f3) +L 8 (#3a4b90) +U 5 (#3e3133) +L 3 (#679780) +U 9 (#584113) +L 8 (#559c02) +U 7 (#60bf53) +L 4 (#5aca62) +U 8 (#4d0163) +R 9 (#2237e2) +D 5 (#106f13) +R 12 (#5c2362) +D 8 (#80b7d3) +R 7 (#26b6b2) +D 6 (#08d3b3) +R 14 (#59afa2) +U 4 (#241333) +R 9 (#0c0eb2) +U 3 (#28a8c3) +R 4 (#47b022) +U 12 (#279703) +R 7 (#47b020) +U 5 (#4e01a3) +L 5 (#6c4722) +U 5 (#607023) +R 5 (#609b62) +U 5 (#6ec7a3) +L 9 (#152722) +U 6 (#022cf1) +L 14 (#481a02) +U 5 (#7ce951) +L 5 (#4316f2) +U 6 (#0f1061) +L 2 (#2b14e2) +U 3 (#3e10c1) +L 12 (#435d72) +U 2 (#6d75e3) +L 8 (#4a4142) +U 8 (#5ec183) +L 12 (#5a9f02) +U 8 (#390f33) +R 8 (#655e52) +U 11 (#757e23) +R 10 (#031912) +U 7 (#10ea33) +R 14 (#4a55c0) +D 6 (#1d2fc3) +R 9 (#7aa260) +D 12 (#07c993) +R 9 (#315c00) +U 8 (#88b083) +R 5 (#52fb50) +U 5 (#2b4ed3) +L 9 (#428cf0) +U 6 (#0225f3) +R 9 (#36f490) +U 6 (#0225f1) +R 7 (#595110) +D 4 (#374603) +L 4 (#44efe0) +D 6 (#2b1b03) +R 4 (#664590) +D 7 (#2b1b01) +R 5 (#1bfe40) +U 6 (#2c7a81) +R 2 (#3bc8f0) +U 9 (#416101) +R 10 (#003f10) +D 7 (#3a4a51) +R 2 (#003f12) +D 5 (#4ba511) +R 3 (#5190e0) +D 3 (#400191) +R 12 (#1a09a0) +D 8 (#3aef23) +R 11 (#0cb780) +D 10 (#6a6393) +R 9 (#561c80) +U 10 (#124da3) +R 6 (#2b0af0) +U 8 (#563841) +R 12 (#73b520) +U 3 (#199441) +R 5 (#73b522) +U 4 (#47d3d1) +R 4 (#70a9a0) +U 8 (#18f861) +L 4 (#18de92) +U 3 (#5bc8a1) +L 12 (#59e082) +U 2 (#4aacb1) +R 12 (#0b5a82) +U 6 (#708aa1) +L 5 (#3902b2) +U 5 (#171153) +R 5 (#3745f2) +U 5 (#081ad3) +R 5 (#45f1c0) +D 8 (#527f53) +R 6 (#45f1c2) +D 6 (#47e013) +L 6 (#3745f0) +D 4 (#01abd3) +R 8 (#51f1e2) +D 8 (#6aa421) +L 5 (#6114f2) +D 7 (#786041) +R 5 (#31b050) +D 3 (#4f62d1) +R 10 (#5ba7a0) +U 8 (#14c261) +R 4 (#2d27d0) +U 7 (#2cd791) +R 4 (#2db660) +U 5 (#7a4801) +R 9 (#19e300) +U 5 (#17adf1) +L 10 (#19e302) +U 10 (#63c5a1) +L 2 (#6881e0) +U 6 (#2ba711) +R 12 (#148ef0) +U 6 (#1a9ba3) +R 9 (#0597f0) +D 8 (#4f1ee3) +R 10 (#4dd080) +D 4 (#33a753) +L 4 (#3fb6d0) +D 3 (#1ebdb3) +R 10 (#0b0872) +D 8 (#0e1853) +L 10 (#3547f2) +D 5 (#21e0e3) +R 4 (#52cee2) +D 5 (#3b66c3) +L 10 (#5b91a0) +D 6 (#26bac3) +R 11 (#222710) +D 2 (#2d5211) +R 7 (#44f020) +U 12 (#505ed1) +R 3 (#358270) +D 12 (#505ed3) +R 5 (#16c910) +U 7 (#36a931) +R 12 (#849ea0) +U 6 (#36a933) +R 10 (#1e8c20) +U 10 (#55b611) +L 11 (#2cded0) +D 5 (#5f5281) +L 12 (#00e5b2) +U 5 (#4a2981) +L 3 (#379182) +U 8 (#3e19a1) +R 6 (#644222) +U 9 (#0f4fe1) +R 6 (#570b02) +U 7 (#551e33) +R 7 (#07ea32) +D 5 (#35bb93) +R 4 (#0a12d2) +D 4 (#0cb943) +L 4 (#3b7242) +D 7 (#28d521) +R 7 (#2d9d60) +U 10 (#7332e1) +R 3 (#44d090) +D 4 (#7baf51) +R 7 (#01b8e0) +U 4 (#1b4e01) +R 6 (#0b27b2) +U 3 (#642a61) +L 4 (#0b27b0) +U 6 (#21beb1) +R 4 (#64df80) +U 7 (#08c4b3) +R 10 (#626c00) +D 6 (#34e6b3) +R 5 (#06b262) +U 4 (#6e38c3) +R 5 (#06b260) +D 4 (#710243) +R 5 (#05c140) +D 4 (#1e5571) +L 15 (#54bee0) +D 6 (#0a4df1) +R 6 (#1f4bd0) +U 3 (#0a4df3) +R 13 (#4057c0) +U 11 (#701d41) +R 6 (#16f352) +U 4 (#449eb3) +L 15 (#69f132) +U 6 (#449eb1) +R 15 (#337df2) +U 6 (#2a2871) +L 6 (#3946a0) +U 6 (#112121) +R 15 (#107a70) +D 5 (#66a2e1) +R 2 (#4b4f50) +D 12 (#277781) +R 8 (#32cc40) +D 3 (#1184e1) +R 5 (#439160) +D 8 (#43e2d1) +R 3 (#496410) +D 2 (#0fb6d1) +R 9 (#12a250) +D 12 (#2abc23) +R 4 (#123e22) +D 15 (#834853) +R 4 (#123e20) +U 4 (#453473) +R 8 (#0281c0) +U 12 (#27c921) +R 7 (#543410) +U 3 (#2cd3a3) +R 5 (#3bdd30) +U 3 (#73d693) +R 13 (#2bfb40) +U 6 (#3f93d1) +L 13 (#1f66f0) +U 8 (#3e3911) +R 6 (#1f66f2) +U 10 (#137901) +L 8 (#3ea9b0) +U 3 (#0f6451) +L 10 (#2ea050) +U 8 (#450f13) +R 14 (#1758c2) +U 4 (#21cd73) +R 2 (#1758c0) +U 9 (#39b8e3) +R 14 (#0255c0) +D 4 (#290d23) +R 4 (#0ad710) +D 9 (#0a59f3) +R 8 (#3b9950) +D 4 (#7bae53) +R 11 (#3e54a0) +D 8 (#753163) +R 9 (#4dc1b0) +D 6 (#2c5541) +L 2 (#564600) +D 13 (#292593) +L 8 (#5b16b0) +D 4 (#292591) +L 4 (#21f3f0) +U 4 (#2c5543) +L 8 (#0bafd0) +D 4 (#4cda43) +L 10 (#6241a0) +D 5 (#5e31a3) +R 10 (#1c5f90) +D 3 (#4e18a1) +R 7 (#2445d0) +D 9 (#24fc71) +R 6 (#299cc0) +D 6 (#37a491) +R 7 (#299cc2) +U 6 (#43e8d1) +R 10 (#2445d2) +U 9 (#410ad1) +R 10 (#67e350) +U 8 (#5d9801) +R 9 (#12bd80) +D 8 (#30b691) +R 15 (#2ebe00) +D 2 (#6062d1) +R 5 (#113860) +D 13 (#55fa81) +R 8 (#657e80) +U 11 (#6be1c1) +R 9 (#3d83c0) +U 2 (#83eee3) +R 11 (#0755a0) +U 10 (#389d53) +R 6 (#669170) +U 10 (#246853) +R 13 (#26ef30) +D 10 (#362743) +R 6 (#0a7380) +D 8 (#0b2353) +R 8 (#370cd0) +D 10 (#2d3c43) +R 14 (#72d862) +D 8 (#5dc733) +L 5 (#72d860) +D 8 (#034b23) +L 6 (#1d5e70) +D 7 (#163871) +L 4 (#085d00) +D 9 (#5c3901) +R 3 (#5c2d00) +D 8 (#1eead1) +R 12 (#189f80) +D 4 (#12f0c1) +R 5 (#612270) +D 3 (#24db21) +R 9 (#120470) +D 12 (#645371) +R 3 (#4c8030) +D 11 (#28ed73) +R 3 (#491000) +D 10 (#3e0563) +R 8 (#181d10) +D 6 (#139513) +R 6 (#171f80) +D 3 (#467203) +R 7 (#171f82) +D 12 (#3f62a3) +R 5 (#181d12) +D 4 (#2d1f13) +L 9 (#333730) +D 2 (#2eef11) +L 10 (#84f660) +D 4 (#386021) +L 3 (#491a90) +D 7 (#849781) +R 6 (#491a92) +D 3 (#2e2731) +L 6 (#3403a0) +D 6 (#588431) +L 10 (#6dde22) +D 11 (#4b8081) +L 4 (#0770b2) +D 4 (#525a71) +R 7 (#106a92) +D 10 (#12b753) +R 4 (#06ce12) +U 10 (#2da5b3) +R 5 (#7eb4d2) +D 6 (#2da5b1) +R 3 (#21deb2) +D 8 (#12b751) +R 12 (#333f42) +D 12 (#4df5d1) +L 7 (#1e5502) +D 3 (#3b11d1) +L 8 (#2add42) +D 5 (#2a2461) +L 6 (#2add40) +D 7 (#3332c1) +L 3 (#0e2cd2) +U 7 (#756e81) +L 7 (#4756b2) +D 5 (#4d0ca1) +L 3 (#56ef42) +D 11 (#3d05a1) +L 4 (#46a2c2) +U 6 (#5bdcb3) +L 5 (#2e3fe2) +U 11 (#781b83) +R 5 (#4f8f62) +U 3 (#21dae3) +L 3 (#3e9a92) +U 2 (#1add33) +L 9 (#3732e2) +D 12 (#07f113) +L 2 (#0c88b2) +D 10 (#853513) +L 8 (#0c88b0) +D 8 (#091c53) +L 4 (#326e32) +D 3 (#2a2593) +R 4 (#642632) +D 13 (#6a4c83) +L 4 (#6a1472) +D 6 (#082b33) +L 3 (#47d362) +D 8 (#48ba61) +L 7 (#300792) +D 5 (#6148c1) +L 8 (#0100d0) +U 11 (#20efd3) +L 6 (#377920) +D 11 (#7895f3) +L 4 (#3a8d50) +D 3 (#7895f1) +L 12 (#26a8b0) +D 7 (#20efd1) +L 7 (#0e6f20) +D 4 (#6390c1) +L 9 (#03cd40) +U 8 (#0ffa71) +L 3 (#151ed2) +U 12 (#147cd3) +L 7 (#843392) +U 6 (#147cd1) +R 10 (#1299f2) +U 11 (#0736e1) +R 11 (#654672) +U 8 (#2465b3) +L 4 (#38ffb0) +D 4 (#0b0b53) +L 13 (#2a0df2) +U 4 (#72d2c3) +L 4 (#2a0df0) +U 3 (#0f7b73) +L 12 (#38ffb2) +U 2 (#2a4ba3) +L 11 (#66dd22) +D 3 (#2577b1) +L 5 (#6a82b2) +D 3 (#516653) +L 7 (#093060) +D 12 (#79ad63) +L 6 (#093062) +D 5 (#348f83) +L 4 (#83e322) +U 8 (#0da4d3) +L 4 (#251e42) +D 6 (#356721) +L 15 (#060892) +U 6 (#304a61) +L 3 (#226e72) +U 5 (#021bb3) +R 9 (#7123c2) +U 4 (#021bb1) +R 13 (#1a4822) +U 6 (#304a63) +L 3 (#157e22) +U 14 (#56fb41) +R 7 (#4a75b0) +U 7 (#4578a1) +R 6 (#7eeb50) +U 6 (#3b6d01) +L 11 (#0ba9e2) +U 5 (#8a0ba1) +R 11 (#3ac130) +U 6 (#3faf21) +R 6 (#6a9062) +D 7 (#3460e1) +R 15 (#6a9060) +D 3 (#421101) +L 15 (#3838a0) +D 7 (#58cf13) +R 6 (#715670) +D 7 (#6b3d83) +R 4 (#715672) +D 10 (#366933) +R 8 (#591620) +U 10 (#2f6453) +R 4 (#8295e0) +U 10 (#3cb3f1) +R 9 (#117f00) +U 10 (#497781) +R 5 (#1ce3c2) +U 6 (#14c9a1) +L 13 (#1ce3c0) +U 4 (#3060a1) +L 8 (#2f4880) +U 5 (#3b2431) +L 4 (#2f4882) +U 12 (#236031) +L 7 (#251ac0) +D 5 (#0052b1) +L 4 (#3d5a30) +D 4 (#372e11) +L 12 (#58bf50) +D 10 (#5db081) +L 2 (#1582a2) +D 4 (#60b921) +L 7 (#39fe02) +D 8 (#657e23) +L 3 (#291c72) +D 7 (#657e21) +L 2 (#393a72) +D 7 (#3196a1) +L 9 (#10c4f2) +D 8 (#650ba1) +L 10 (#052452) +D 4 (#0980a1) +L 13 (#301942) +D 10 (#18a341) +L 4 (#60a8f2) +D 10 (#73c9b1) +R 6 (#006630) +D 6 (#0c04c1) +R 5 (#35f0f0) +U 6 (#7db103) +R 7 (#34c280) +D 9 (#7db101) +L 6 (#25a890) +D 3 (#1bf0a1) +R 12 (#17e9c2) +D 8 (#018d01) +L 12 (#7c9bc2) +D 6 (#5e24b3) +L 4 (#0c6ce2) +U 5 (#4fa793) +L 4 (#5a26b2) +U 7 (#14b5d3) +R 4 (#330d12) +U 5 (#1b3311) +L 8 (#20c112) +D 9 (#1c8ed1) +L 10 (#0f11d2) +U 11 (#5f2d41) +R 4 (#76d4f2) +U 11 (#2b92f1) +L 4 (#184052) +U 8 (#63a4f3) +L 6 (#24fea2) +U 3 (#4fc613) +R 6 (#453b70) +U 7 (#52e7c3) +L 3 (#307370) +U 10 (#1edca3) +L 7 (#75aee2) +D 3 (#1d4c43) +L 3 (#6e3de2) +U 13 (#10edc3) +L 8 (#293ec2) +D 13 (#68f773) +L 8 (#373872) +D 6 (#6a7d73) +L 3 (#5f5212) +D 5 (#649e01) +R 6 (#53fed2) +D 6 (#6bc451) +R 4 (#04d680) +U 6 (#25e6f1) +R 8 (#1e60d0) +D 3 (#456061) +R 4 (#1e03f0) +D 6 (#398451) +L 11 (#648390) +D 2 (#15d5f1) +L 7 (#369602) +D 10 (#5054a1) +L 7 (#53bcc2) +U 15 (#5054a3) +L 5 (#0fd012) +D 15 (#2915a1) +L 4 (#0b9c02) +D 4 (#0f1fd1) +R 11 (#79edf2) +D 5 (#63a4f1) +R 7 (#011ec2) +D 5 (#3452d1) +R 8 (#2ccf12) +U 5 (#790d01) +R 8 (#3f7272) +D 8 (#06e261) +L 7 (#28e202) +D 15 (#4c0ee1) +L 3 (#1161b2) +U 15 (#433e91) +L 6 (#74d6b0) +D 5 (#45c0f1) +L 14 (#74d6b2) +D 7 (#339011) +L 3 (#038fa2) +U 2 (#2a3983) +L 10 (#06bc22) +U 3 (#10e1f3) +L 10 (#27a8d2) +U 9 (#19d373) +L 4 (#748b22) +D 6 (#65bbe3) +L 9 (#04b122) +D 4 (#3d31f1) +L 13 (#010b22) +U 10 (#05d651) +L 4 (#74a772) +D 14 (#05d653) +L 8 (#14e752) +U 3 (#4534a1) +L 9 (#8a99e0) +U 11 (#0e0ab1) +R 5 (#421542) +U 7 (#2a3981) +R 8 (#6c1e52) +U 6 (#1d91e1) +L 13 (#4a4082) +U 3 (#3e5c83) +R 6 (#0ebd62) +U 10 (#21a223) +L 5 (#153ec2) +U 6 (#502eb3) +R 5 (#1299a2) +U 13 (#461143) +L 6 (#691cb2) +U 3 (#1d6533) +L 4 (#495722) +U 2 (#3c61e3) +L 11 (#0cc8b0) +D 4 (#1fd653) +L 7 (#0cc8b2) +D 5 (#340273) +R 7 (#2c7ec2) +D 8 (#699123) +L 4 (#2c7ec0) +D 2 (#69da23) +L 6 (#39c2c2) +U 15 (#18e693) +L 5 (#3d0762) +U 4 (#043ac3) +L 8 (#49ca22) +U 7 (#057783) +L 6 (#57e6a2) +U 12 (#2d7e63) diff --git a/data/19.in b/data/19.in new file mode 100644 index 0000000..931cf9c --- /dev/null +++ b/data/19.in @@ -0,0 +1,777 @@ +ft{m<1347:R,m<1967:A,A} +gbv{x<51:R,R} +lks{m<2978:kgl,a<680:ntb,x<577:hzp,mg} +db{a>2314:R,A} +rml{a<479:R,m>2803:A,R} +ncv{x<3567:R,a>3316:A,s>1415:R,R} +jsm{m>1434:brj,a>3142:vtk,x<2888:bpt,dl} +frt{s>210:R,a<1114:R,R} +zjq{m<195:A,R} +lv{m<1450:A,m<2105:xll,R} +kp{x>1194:A,x>1146:A,R} +nl{a>2317:A,A} +lrf{s<493:mpt,R} +cxf{x>2054:ktk,x<1860:qmg,lzk} +xb{s<1524:A,s>1602:A,R} +zz{x>3135:svb,x>2399:R,A} +ds{a>2495:R,x>924:R,pm} +zxf{m<2815:stp,a<2750:jpf,R} +fg{s>2319:A,A} +jb{a>3248:rm,s<3444:gdc,A} +trb{s<3836:A,x<1957:A,R} +nrk{x<995:bmc,R} +hk{m<968:btp,s<1545:nl,m>1092:npt,tlg} +ff{x<1733:R,s>2152:A,A} +msh{a>3446:R,A} +qt{m<1335:A,s<2757:tx,R} +ksm{a<3350:gr,R} +fsm{x>2098:R,a<360:R,R} +rff{m>312:R,A} +ddm{s<2671:R,trz} +bd{s<3121:A,R} +nr{s>2748:vmb,s<2491:xd,fbm} +fdn{a>659:cv,x>2325:xc,rt} +rcj{a<453:R,a<847:A,a>993:A,R} +brf{x<1485:A,R} +mzt{x>3019:A,m>306:R,A} +pc{x<2446:R,hc} +xf{a<3423:ln,x>1473:zjc,x>1440:R,cgx} +xn{s<3870:A,R} +qzn{m>1697:A,m>1501:A,R} +cdl{s<3605:A,s>3831:R,s<3743:dph,A} +mbq{x<3235:A,s<2567:A,s>2647:R,R} +sqt{x>2051:R,a>2036:A,s<1695:R,R} +tc{s<952:A,x>3099:R,m<3427:A,R} +kt{m<1388:jg,m>2013:mxm,xdr} +jxb{s>3521:R,x<851:A,x>1017:A,A} +qx{m>404:A,x<2423:R,a<2849:A,R} +ptj{m<3906:njh,R} +hd{s<566:R,m>1077:A,A} +bvh{s<1046:vd,x<2962:bz,m<1264:R,cqj} +zgs{m<388:A,x<1595:gqn,s<3635:R,khx} +pj{a<2319:R,a<2479:R,x<1521:llm,R} +kx{m>3616:kqd,x<1472:R,m>3298:kg,A} +mk{a<3610:R,m<2065:R,R} +jd{x<756:A,x>802:vcg,zgr} +qbq{x<1667:A,m>1173:R,x>1697:R,R} +cn{m>3371:nqj,m>3154:A,a>1170:R,sbx} +zrk{a<3201:A,m<1459:R,A} +qtz{m>517:nt,m>212:vpq,x<3049:pl,hb} +nhk{x>455:A,m<3081:A,s<3489:A,A} +rfd{m>1850:A,A} +nns{s<1799:A,A} +dm{s>95:A,R} +vz{m>3248:vb,nkr} +dcz{a>2149:km,R} +rrl{a<3198:ptk,s>3017:zgs,x>1554:hht,cht} +hs{m<673:A,R} +vf{s>1621:A,R} +qf{x>538:A,a<427:jc,lhf} +xbh{m>2071:jjb,s<582:xpc,a>3248:hpr,npd} +fz{m<1150:A,s<200:R,s<371:A,A} +gd{m>592:vt,a>1033:R,a>636:nlj,R} +znb{a<3808:A,x<3379:A,m<2068:A,A} +st{s<2677:R,a>1494:R,s>3382:A,R} +zf{m<3760:A,s<3288:A,R} +hh{s<2789:mz,jb} +tp{s<2498:R,A} +kz{a>2094:vqx,m>414:hzc,kzp} +xc{m>2388:nqp,a>432:A,x<3265:xch,A} +zgt{m<3336:A,s>2892:A,a>3062:R,A} +gtz{s>2688:tg,dp} +tf{m>3151:A,s<1440:A,R} +mxm{a<3193:A,x>816:R,a<3543:gqk,R} +fsp{a<3234:A,A} +tzf{s>2391:A,x>877:R,s>1154:A,R} +xgh{s>1188:mkk,a>2481:jm,kdc} +mjr{a>2688:zf,s>3239:gq,x<1313:R,fkc} +tvs{m<3240:gz,m<3630:clp,mjr} +zxp{a<2636:R,m<2968:R,a<2656:R,R} +kzp{a<2031:A,R} +rjl{s<592:frt,A} +vbz{a>2594:R,R} +klg{x>3362:A,s<1485:R,a>3704:R,A} +gr{m>1117:A,R} +nm{m>2633:R,A} +qkc{x>2875:R,R} +tsb{a<3865:A,x>2852:R,R} +lhm{s>3225:xs,a<2729:pj,m>3065:kx,xf} +blb{m<1562:A,R} +nsz{s<2211:jn,x<2387:nb,R} +tsj{x<3454:A,a<3740:R,x>3695:R,R} +bxk{x<487:A,m<3001:jzs,m>3535:R,zgt} +qq{a>2875:A,s<1314:A,m<982:A,R} +ksq{s<1649:R,x>2393:R,R} +hdz{x>3225:R,s>2321:A,R} +hp{m<1838:R,s<2302:A,x<588:R,A} +kf{a>748:A,A} +vb{m>3549:gvm,m>3403:R,A} +nx{s>486:R,A} +vtk{x<3172:tr,a>3353:nz,jr} +mlt{a>2987:A,s>286:A,A} +mv{s>2214:A,s<1986:A,s<2104:R,A} +fs{m<551:nll,hrj} +nh{s<3247:R,m>693:A,a>2956:A,R} +vpn{m<1447:R,gf} +bpd{a<3269:A,A} +mq{m<404:A,x>243:A,A} +jjx{x>3138:A,a>670:R,s>3088:R,A} +pn{s<1297:ds,m>1065:bj,bmf} +xp{x<1214:A,a<3436:R,m>866:R,A} +mpt{s>266:R,a>2276:A,A} +vk{m<1307:hd,tsj} +ql{a<1594:A,A} +bsb{m>2463:lks,x>626:tz,kk} +fn{a>1154:A,m<2652:R,s<1641:vtg,pzz} +knc{x<883:rfg,s<731:lv,s<1274:jkh,vdh} +kc{x<1160:jt,a>2721:qzg,m>1522:lrf,dg} +px{s<239:R,s>302:A,R} +bzf{m>3078:tln,s>575:gp,ml} +qfg{x>1167:R,x<1086:R,a>705:R,A} +ffn{a<1088:mbb,m<520:sb,vf} +jhg{m<3331:R,R} +llm{s>2346:R,a>2587:A,R} +xdr{s>3119:jxb,x>714:R,m<1724:zxl,hp} +cf{x<369:A,x<488:R,a<1340:A,A} +pvt{s>301:A,x<1488:A,a>3250:A,R} +dpm{x<3365:A,m>3696:A,R} +dhk{a>611:R,m>497:A,a<349:A,R} +dg{s>517:R,m<1250:fz,R} +ph{x<3427:R,a<2511:R,A} +hsx{x<1317:R,a<970:bzc,a<1412:cp,A} +mzb{m<2475:A,a<3151:R,s<101:A,A} +jtj{m<657:R,m<1047:R,s<1082:R,R} +xv{x>1004:A,s<1572:R,R} +cx{a<2527:A,A} +zn{m<2693:A,s>2559:R,m>3231:A,A} +nll{m<187:R,a>3715:A,R} +dh{x<1366:A,fq} +dr{a<3764:hf,a<3914:A,m<3290:A,R} +qz{s<257:R,fsp} +xfl{x>3188:A,x<2536:R,s<2342:A,A} +cz{m>3153:R,x<1136:R,x<1184:A,A} +qcf{s>2754:kmb,R} +fm{m<1085:R,a>2556:A,a>2420:R,R} +ld{s>737:A,s>489:R,a<88:A,R} +rfg{s<1129:ft,m>1514:mk,m>934:jpb,ggs} +lzh{m<1134:R,m<1308:R,A} +ckk{s>1464:lzh,s>1179:qq,R} +bvc{x>510:kt,m>1338:hh,pmm} +xtr{x>1686:A,R} +gxb{s<352:R,s<392:A,x>2751:A,R} +npd{a<3087:A,m>1379:vg,R} +hch{a>2219:R,A} +nj{m<2605:R,s<2930:R,R} +cvj{x<1520:R,qtm} +cgx{a<3678:R,s<2581:R,R} +tm{x>2596:A,A} +qtm{s>1379:A,a<2574:R,R} +ftt{s<2273:R,s>3405:A,m<609:R,A} +gqk{m<2274:R,a>3345:A,a<3279:A,R} +xqn{m<2098:R,a<1184:R,A} +qpm{x<2347:rff,x<2776:A,x>2977:A,ntz} +hvj{x<3486:R,A} +tpb{m<2448:lh,rjg} +shq{m>671:R,s>206:A,R} +htg{a>904:A,x>231:R,A} +jq{s<2890:dn,R} +gf{a<1251:A,A} +vl{m>913:ccb,a<1148:tb,s>2525:kbs,qtz} +xhl{s>399:R,a>2578:zxp,A} +ntz{m<273:A,R} +ntb{m<3543:qf,m<3783:lss,jj} +thm{a>1424:R,A} +km{m>3338:R,m>2932:A,x<3299:R,A} +fh{s>1157:xq,vk} +ljt{a>2529:R,m<1762:R,A} +hgv{s<1087:R,m<1627:A,x<1370:A,A} +brj{a>3113:gdz,a<2926:gkc,a<3040:zz,khd} +nz{x>3516:R,x<3380:A,A} +nvx{a>3182:R,x<3714:R,x>3816:A,R} +fx{a>3193:A,nhk} +spv{a>2824:vbl,m>2404:vtb,kqz} +zpn{s>2774:nj,m<2788:jmx,hvj} +cnx{s<1825:R,A} +jkl{a<2564:R,A} +lhf{s>1439:A,s<718:A,m<3252:A,A} +rm{x<225:A,A} +jxz{a<2321:A,a>2367:A,m>185:A,R} +hzq{a>651:R,x>2192:A,a>607:R,A} +jhv{a>3199:knc,s>776:pn,m>1007:kc,bx} +svj{a>3616:R,m>3421:R,m>2865:A,R} +vcg{s>2903:R,R} +vhm{m>1914:R,m<1754:R,x>1550:A,R} +ccb{s>1843:qt,bvh} +qr{x>2395:sv,A} +tlg{m<1031:A,x>2590:xfh,zp} +pt{s>435:A,a<2696:gg,s>170:mlt,xkz} +rj{x>1493:A,m<523:R,s>2867:A,R} +pr{a>2732:A,m<2650:A,A} +hzp{a>1120:kvf,m>3388:mf,hv} +btf{s<3748:xxc,A} +tr{m>717:R,A} +rv{a>672:R,R} +qg{s<2427:R,m<319:R,R} +lk{s<3170:A,A} +ksr{m>3137:gs,a<3314:hbg,s<1465:R,zk} +dbs{m>720:hk,a>2451:mvg,a<2212:kz,frl} +zdx{x<3645:R,s>849:A,A} +gvv{s>3441:R,A} +jlj{x>3003:cl,mcj} +vtb{s<2272:xgh,s>3350:ffz,vpj} +bdt{x<2027:px,x<2238:qh,R} +hbg{a<2847:R,A} +xd{x>2897:rd,a<3376:qr,nsz} +hb{m<77:R,a<1618:A,s>1205:nns,A} +lzj{m>2039:R,A} +ml{a>3118:R,s>304:R,zkv} +mt{s>2057:A,x>3358:npn,xzh} +htv{x>3422:A,a<1058:jjx,s>3318:R,mb} +lrm{x<2442:jxt,s>1388:hcm,R} +zjc{x>1530:A,a>3635:R,R} +kgl{x<688:fn,a<795:prh,dk} +pcz{m>3387:A,x<2362:A,A} +sf{a>690:A,mhf} +gqn{a<3554:A,A} +xfh{a>2277:A,s<2581:A,x<3067:R,A} +nlj{m<379:R,s<2220:A,R} +mcj{a>3825:ncb,x>2185:xjm,m>3112:R,R} +tln{s<565:pvt,a<3200:jlq,m>3598:lsx,A} +xns{m>2818:A,x>1648:R,m<2614:A,ht} +mx{s<940:R,s>1425:A,m>3518:tpn,A} +qgs{s>3234:rml,x>1876:pht,s<2763:R,tfv} +gt{s<3681:A,a<3251:R,R} +rcq{s>317:R,m<747:A,x>1403:R,R} +hzc{x<3241:A,s<1489:A,jbc} +fq{x>1398:A,s>2516:A,m>2301:R,R} +kvf{a<1562:cf,x>248:R,s>1776:qlm,A} +jfj{x<3469:A,a<2580:jz,s<2074:dbj,A} +vdh{s>1624:R,m>1500:rfd,zjn} +mg{s>1357:cn,rjl} +qnt{s<483:R,x>3442:R,A} +mp{s>3114:xqz,bq} +crp{a<3714:R,vj} +kq{m>3155:A,x>1456:R,R} +fhm{x>702:A,a<1104:rcj,zgp} +sl{x<1100:R,a<1423:A,A} +stp{s>2555:A,s>2383:A,s>2339:A,A} +pb{x<247:A,a>2834:fhp,a>2286:fm,R} +kbs{a>1536:zkr,xqb} +chf{s>2200:A,R} +bmc{x<968:A,x<982:A,A} +tjq{x<2908:btn,a<2595:dpm,mzg} +vfr{s>2143:pg,bsv} +bm{m<1791:R,m<1877:R,A} +kv{m>1866:jlj,m<870:fs,x<3127:vm,fh} +jpr{x<3038:R,a>3300:A,R} +gs{s>1177:R,R} +nhz{s>1928:R,s>1173:R,A} +hht{a<3615:msh,A} +mz{s>2285:R,s<2080:lzj,a>2672:gfp,gc} +kg{s>2590:R,R} +jr{a>3221:R,s<1664:nvx,ddv} +jpf{s<2652:A,a>2699:R,A} +cp{s>3057:A,x<1389:R,A} +tpn{m>3810:A,s<1214:A,x<2439:A,R} +vm{m>1226:tj,pc} +fr{m>557:A,a>3034:zjq,R} +gjj{m<3399:qzj,m<3784:cdl,a>2319:btf,ptj} +tjl{m<2439:A,m<3400:R,a<3075:A,R} +jkh{m<1257:jtj,qzn} +npt{s<2730:A,s>3447:R,a<2249:R,A} +xh{a<750:R,x<368:R,x>484:R,A} +sbx{s<2867:R,R} +zpj{s<1876:vpn,sf} +ln{a>3164:R,m<2847:R,m<2960:R,R} +cg{a<2409:R,s>3521:R,m>3415:R,A} +pg{x<2668:bjj,m>3516:htv,dvl} +lzk{m<3217:A,s>3712:trb,m>3591:qrz,A} +qkg{m<422:gx,x<3500:A,x<3738:zdx,R} +vkc{a>791:lnt,tzf} +ktk{s>3706:A,x>2390:R,cg} +dph{x>3090:R,a>2301:A,x<2908:R,R} +rq{x>327:R,x>164:A,R} +gl{s>487:A,a>1655:A,a<1331:R,A} +jmx{a<1052:A,s<2652:A,x>3318:R,A} +tk{s<3036:zpn,skp} +xkz{s<107:A,A} +ncb{s<760:R,s>1392:A,a>3927:R,A} +zv{s<859:R,A} +jzs{a<2665:A,s>2889:R,s>2655:A,A} +zbv{s<2370:npx,szq} +sxd{x<3268:R,a<3101:A,A} +kqd{s>2509:R,A} +fhp{m>943:R,s<3533:R,A} +jcg{a<2636:rgg,s>2865:xtr,a>3473:qbq,qtd} +fv{x>1586:sfh,s>1744:lhm,s<1005:bzf,ppd} +ppd{a>3253:prl,x<1484:zq,m>3222:cvj,mn} +zp{a<2416:A,m<1055:A,a<2598:A,A} +dl{s>1430:fr,ddt} +rvs{x<2743:jng,s<71:A,m>1651:mzb,dm} +lss{a>446:A,x>912:A,s>2317:tpj,dt} +cj{m<2996:A,m>3036:A,A} +vt{s>2338:R,a<1268:A,R} +zxl{x<637:A,R} +jng{m>2074:R,s<55:A,s<103:A,R} +gdc{s>3086:R,x>291:A,A} +jm{a<2685:xhl,rlq} +bst{m>1876:R,s>175:R,a>3154:A,A} +vtg{m>2801:A,s<673:A,m<2719:R,A} +gxs{a<2679:ljt,x>2149:A,s>2360:R,R} +tg{s>3232:gt,a>2631:xp,hfz} +xch{s<1053:R,s>1849:R,s<1395:R,R} +mvg{x<3100:qpm,s>2375:jkt,qkg} +cl{m>2802:cd,s<810:A,rfn} +ptk{s>2833:A,a>2436:sdx,s>2408:xfc,mv} +jj{x<576:A,R} +dvl{x>3429:A,a>954:R,a<621:lk,A} +jpb{m<1263:R,s>1379:A,x>568:A,A} +lsx{x>1481:R,m>3782:R,A} +nk{m>797:R,A} +qs{x<1815:A,a<208:ld,R} +jrr{x<2672:gxs,m<1958:hdz,jfj} +xs{s>3692:brf,x<1496:kq,mnl} +bh{a<1203:A,R} +gpm{m<414:A,x<3045:R,A} +xl{x>2732:kh,s<3328:jq,hzg} +lbr{s>2768:R,m>2649:mbq,jkl} +rpj{a<2149:A,x<2393:R,a<2171:A,A} +jbx{a>2843:bpd,s<571:cz,m<3351:cx,R} +gc{x>209:A,s<2192:A,R} +gp{m>2717:R,m>2542:xhq,A} +btp{m>880:A,x<2832:A,nk} +zx{a>374:R,m>2870:A,x<1136:R,A} +cqj{m<1430:A,x<3333:R,s<1454:A,R} +mzg{m<3447:A,m<3636:A,A} +pcg{a>746:mp,a<342:nsj,a<566:qgs,kck} +cjv{x>97:R,a>1081:ql,m<1933:gbv,nn} +lr{x>984:rcq,x<597:A,m<744:bpm,A} +mn{m<2758:R,R} +mbb{m>592:qfg,qg} +vqx{x<2718:rpj,m<417:fk,ftt} +zgr{m<1436:A,A} +gx{m>266:A,m<109:A,R} +zh{a>1474:A,x<1765:A,m>809:R,R} +rd{a<3284:sxd,a>3557:znb,s<2290:R,scc} +vpq{m<385:thm,s<850:gl,A} +sr{x>3148:R,s>2593:zrk,m>1611:zn,R} +btn{x>2233:A,s>2963:A,m<3546:R,R} +ddv{m<929:R,a<3189:R,R} +lj{s>720:hgv,s<311:A,m>1726:R,R} +dt{s>1007:A,m<3666:R,R} +jn{s>2145:A,A} +qtd{m<1205:A,a>3048:A,m<1281:R,A} +prl{m>3410:R,s<1367:hns,A} +mrg{x<2908:A,s<1375:R,x>3291:R,R} +pmm{s<3127:qlh,m>628:pb,xk} +sb{m>186:jbn,x>1199:R,s>1631:st,sl} +vj{x>3191:R,s<2638:A,A} +xq{x>3521:psx,klg} +trz{x>1532:R,R} +kck{m<2847:hzq,m>3005:R,m>2951:txt,dd} +jqg{x<1371:R,a<2887:R,A} +npn{x<3611:A,a>2239:R,a>2073:R,R} +xjm{s<752:R,a<3700:A,A} +bhj{s<2435:ndb,a>3069:nbp,x<1135:sjg,tvs} +mm{x<427:R,R} +vbb{s<129:rvs,x>2919:xg,x>2355:qz,bdt} +jlq{s<782:R,R} +gvm{s<2807:R,x>3086:A,a>2154:R,A} +vpj{a>2388:fbs,vz} +scc{s>2384:A,A} +bsv{a>993:tm,a>339:mx,x<2540:qs,nf} +fd{x>1200:rcv,x>1108:R,cnx} +tfv{s<2966:A,A} +qzj{s<3758:A,xn} +tz{x<939:ctb,m<1285:ffn,ch} +hv{a>827:A,s>1420:xh,R} +xpv{x<1644:R,R} +khd{x<2613:tjl,a<3080:A,A} +lz{a<2446:pz,jrr} +hfz{x<1227:R,x<1306:R,x>1351:A,A} +tj{x>2413:blb,A} +cd{a<3723:A,s>824:R,x>3620:A,A} +jkz{s<574:R,x<2957:R,s<839:A,A} +bpm{s<309:R,a<2751:R,R} +sjg{s>3133:dlk,qcf} +lnj{s>408:A,m<3185:A,s<382:R,A} +qlm{m>3399:A,m>3160:R,s<2770:A,R} +nqj{m>3601:A,s<2462:A,R} +qmk{a<218:A,m<2581:A,x<1964:R,A} +zkv{a<2439:A,a>2836:R,s>108:A,R} +dbj{a<2726:A,m>2173:A,A} +skp{a>1102:R,x<3363:ks,R} +pl{a>1567:lld,ss} +sdx{x>1582:A,a<2789:A,a>2991:R,R} +kpp{a<3749:R,a>3896:R,a>3815:R,A} +tjp{a>2329:R,R} +jsd{x<1697:R,a<2402:ff,m<3616:R,nhz} +rjg{x<955:zbv,x<1405:bhj,fv} +bpt{a>2950:lrm,m>712:ckk,kft} +rbf{s>3056:R,m>2843:A,A} +jqn{a>2437:A,x>2389:A,x<2155:R,R} +lld{a<1799:R,m>116:A,s>1201:A,R} +hm{x>1051:A,s>3482:A,x>1005:R,A} +bq{s<2735:R,a<1253:R,s>2952:A,A} +mc{m<103:A,s>2774:A,jxz} +mb{m>3733:A,a>1638:A,x<3043:R,A} +jkt{a<2628:ph,A} +xll{m>1829:A,x<1433:A,m<1592:A,R} +nnx{m<1438:gd,cjv} +nbp{x>1168:vx,x<1027:nrk,m<3404:xlh,jh} +jxt{a>3018:R,a>2989:R,x<2081:A,A} +qlh{s>2464:A,a>3258:fvc,R} +pkr{m>99:A,s<992:tjp,a>2330:R,R} +msc{m<1704:vl,m<3193:rbv,vfr} +ncx{x>3527:R,rv} +mnl{a<2870:R,s<3477:A,x>1527:A,A} +bzc{a>534:R,s>2369:R,R} +cv{m<2520:R,a>1382:A,R} +bjj{s<3237:sc,x>2020:R,A} +dxt{x>1973:R,x>1653:A,m<2147:R,A} +rbv{s<2474:fdn,m<2300:xl,x>2579:tk,pcg} +tb{x>3001:ncx,dhk} +hpr{s>740:R,A} +vg{m>1757:A,A} +zk{x>699:A,a>3640:A,A} +hns{x>1525:A,a<3550:R,a<3709:R,A} +in{a<1943:sg,x<1758:tpb,spv} +hpn{s<1880:jqn,A} +zjn{s<1412:R,A} +nhf{x<1660:A,x<1701:A,a>3374:A,R} +sc{x>1869:A,x<1591:R,R} +mkk{s<1676:tqm,x>2973:mt,hpn} +hz{a>2110:A,x>3216:R,a>2048:R,A} +ggs{s<1546:R,x>545:R,a>3613:A,R} +rgg{m>1130:A,R} +gdz{a<3255:A,a>3354:R,x<2961:ksq,ncv} +bmf{s>1655:R,a>2724:cgc,s>1420:xb,R} +khx{a>3552:R,x<1651:R,A} +qh{s>220:R,a<3157:R,R} +br{m<2805:pr,a>2750:cj,R} +jbc{a<2031:R,a<2059:A,m>600:R,R} +ddt{s>1226:A,A} +nqp{a<237:A,x<3128:A,s<1505:A,A} +nv{a<2139:rdn,s>247:gxb,m<2991:R,R} +pm{s<1106:A,A} +xhq{m>2657:R,s<856:R,A} +gkc{a<2864:A,s>1480:qkc,a>2894:R,R} +jh{x<1078:jls,A} +nf{a>157:R,R} +kft{a<2892:qx,m<461:R,R} +nkr{s<2913:A,x<2665:A,a<2197:R,R} +npx{x>520:ksr,ktf} +dn{x>2107:R,m<1969:A,a<693:A,A} +ss{a<1365:A,A} +kh{m>1995:xqn,A} +svb{m>2476:A,A} +gq{x>1247:A,x>1201:R,s<3631:A,R} +txt{s<3120:A,m>2972:R,R} +lh{s<1864:jhv,x<1112:bvc,lp} +prh{m>2745:zx,R} +sfh{a>3014:xkl,m>3147:jsd,xns} +xpc{x<2539:nx,m<990:qnt,a<3196:A,R} +ktf{a>3147:R,rq} +jls{a>3554:A,R} +bz{s>1380:R,A} +xlh{m>2973:A,a>3598:A,s<3449:R,vpb} +mf{s<2422:htg,A} +xxc{x<3193:A,s>3483:R,a>2650:A,A} +ks{x>3068:A,a>438:A,A} +kmb{a>2559:A,x>1045:A,R} +dlk{a<2513:hm,x>1045:jhg,A} +dj{s>354:xbh,vbb} +jc{m>3180:A,a>209:R,R} +pzz{m>2855:R,R} +fkc{s<2799:R,R} +rfn{x>3437:A,s<1636:A,R} +gz{x<1228:A,rbf} +rt{a<330:qmv,m>2632:A,x<2000:R,R} +clp{s<3277:R,s>3578:A,x<1236:R,A} +hrj{a>3673:tsb,s>1280:jbm,a>3584:A,R} +rcv{a<2713:A,m<3092:R,a>3295:A,R} +jg{x<847:A,nh} +rhz{m>1561:vhm,x<1609:ddm,m>1357:vnp,jcg} +gg{a<2326:R,m>232:R,R} +vbl{s>2050:nr,a>3485:kv,s>998:jsm,dj} +dk{m<2735:A,m<2834:A,R} +xzh{a<2518:A,a>2621:A,A} +jbn{a>1459:R,m>326:R,R} +szq{s<3344:bxk,s<3665:fx,a<3313:vbz,dr} +fbm{a>3537:crp,sr} +rlq{s>644:tc,R} +nrv{x>3604:A,s>180:R,m>3198:R,R} +lm{x<1301:A,x<1356:A,A} +ck{a>2781:R,s>2456:A,s>2295:R,A} +zq{x<1440:R,s<1354:A,m>3127:R,R} +pxq{x<1540:R,x<1654:R,A} +tpj{x<398:R,R} +qmg{x<1806:A,R} +qmv{s>915:A,A} +hc{s>1234:A,a<3777:A,s<543:A,R} +kdc{s<448:nv,x>2934:dcz,hch} +vmb{m>2094:gvv,s>3496:ksm,bd} +xqb{m<485:mzt,s>3300:A,hs} +hzg{a<746:fsm,m>1952:dxt,s>3756:bm,bh} +vnp{x<1675:xpv,A} +nb{x>1991:A,R} +xk{a<3000:mq,s<3447:vr,x<333:R,R} +ctb{x>831:vkc,s<1355:fhm,a<914:jd,tp} +xg{m<1340:shq,m<2708:R,s>261:A,nrv} +bj{a<2444:R,xv} +zkr{s<3365:R,A} +ndb{s>904:fd,x<1242:jbx,lm} +dd{a>665:R,R} +lnt{a<1177:A,x<901:A,x<919:R,R} +nn{m<2151:R,m>2257:A,R} +psx{x>3837:A,R} +zgp{m>1002:A,A} +rjt{s<1606:kf,R} +tqm{x<3109:pcz,tf} +xkl{m>3259:nhf,m<2733:nm,ltt} +fvc{s<2245:R,a>3610:R,a<3395:A,A} +vx{s>3405:A,s<2864:R,x<1291:svj,A} +fbs{m>3094:tjq,a<2671:lbr,s>2980:br,zxf} +sv{x<2686:A,A} +jt{s>307:mm,s>190:A,A} +ltt{m<2932:A,m>3097:R,R} +klj{a<190:R,R} +zj{a<3839:R,a<3898:R,a<3932:R,A} +qrz{a>2385:R,a<2103:A,a<2217:A,A} +dp{x>1276:fg,s>2212:ck,a>3255:kp,A} +qzg{a<2978:jqg,s>401:A,a<3083:pxq,bst} +fk{x<3153:R,R} +rdn{s<275:A,x>2619:A,s>365:A,R} +xdd{a>2338:xfl,db} +ht{s>1867:R,a<2561:R,a>2852:R,R} +ffz{x>2633:gjj,cxf} +xfc{a>2266:R,m>607:A,R} +gfp{m>1781:A,A} +ch{x<1246:rjt,m>2038:dh,s<1350:lj,hsx} +kqz{m>1171:lz,dbs} +njh{a>2157:A,m<3857:R,R} +nt{m<710:R,x>2315:mrg,s>1511:A,zh} +gv{a>2350:chf,m>516:A,gpm} +kk{x<285:nnx,zpj} +vpb{a<3293:R,a>3455:A,R} +pz{a>2276:xdd,fkl} +jbm{x<2951:A,s<1599:R,m<734:R,R} +tx{x>2805:R,R} +lp{x<1388:gtz,m>1008:rhz,rrl} +xqz{m>2687:A,s>3438:A,A} +hcm{s<1693:R,x<2623:A,R} +frl{m>274:gv,s<1923:pkr,mc} +fkl{x>2563:hz,a<2108:sqt,A} +nsj{m<2752:qmk,klj} +mhf{a>337:R,R} +cgc{s>1479:R,a>2929:R,R} +hf{a<3567:A,A} +jz{x<3661:R,R} +vr{x>269:A,x<163:A,s<3259:R,A} +jjb{a<3106:jkz,s>650:zv,s>457:jpr,lnj} +bx{m>437:lr,pt} +cht{a<3523:A,s>2630:rj,m>418:zj,kpp} +pht{x>2122:A,A} +vd{s>601:A,m>1408:A,A} +sg{x>1447:msc,bsb} + +{x=238,m=232,a=127,s=30} +{x=489,m=234,a=187,s=941} +{x=2468,m=1586,a=611,s=1302} +{x=3030,m=825,a=221,s=748} +{x=1624,m=855,a=450,s=1328} +{x=2230,m=1545,a=397,s=179} +{x=115,m=98,a=233,s=353} +{x=1243,m=261,a=1160,s=301} +{x=1435,m=740,a=1442,s=16} +{x=2214,m=944,a=803,s=235} +{x=205,m=28,a=1261,s=591} +{x=1727,m=2967,a=1451,s=503} +{x=523,m=199,a=1088,s=1280} +{x=287,m=1673,a=558,s=2635} +{x=825,m=425,a=1999,s=1170} +{x=2442,m=1080,a=695,s=2139} +{x=450,m=2398,a=774,s=1790} +{x=460,m=1105,a=1617,s=2377} +{x=715,m=150,a=323,s=446} +{x=95,m=57,a=418,s=59} +{x=593,m=773,a=1205,s=1522} +{x=1305,m=365,a=2267,s=748} +{x=1882,m=698,a=649,s=1619} +{x=1438,m=58,a=366,s=317} +{x=105,m=457,a=351,s=409} +{x=2637,m=48,a=1364,s=120} +{x=546,m=1212,a=553,s=2020} +{x=289,m=1487,a=433,s=72} +{x=819,m=1468,a=1981,s=63} +{x=3224,m=304,a=2422,s=1500} +{x=1805,m=225,a=1755,s=138} +{x=1165,m=2002,a=337,s=1705} +{x=1140,m=2753,a=1535,s=491} +{x=1302,m=1637,a=228,s=1471} +{x=2472,m=293,a=1432,s=96} +{x=1950,m=298,a=573,s=492} +{x=92,m=869,a=1050,s=13} +{x=300,m=1946,a=539,s=8} +{x=2314,m=296,a=344,s=838} +{x=2344,m=261,a=809,s=3} +{x=355,m=1190,a=2970,s=74} +{x=1006,m=1092,a=825,s=2021} +{x=216,m=920,a=494,s=2965} +{x=392,m=816,a=863,s=175} +{x=2724,m=1041,a=1005,s=229} +{x=1371,m=269,a=627,s=1167} +{x=411,m=442,a=455,s=731} +{x=116,m=1840,a=2947,s=380} +{x=1958,m=383,a=960,s=897} +{x=379,m=1018,a=540,s=1312} +{x=180,m=1900,a=1999,s=437} +{x=1698,m=113,a=62,s=1213} +{x=6,m=295,a=24,s=2020} +{x=808,m=3042,a=920,s=1168} +{x=2905,m=93,a=2757,s=341} +{x=651,m=1805,a=435,s=3238} +{x=1763,m=384,a=1075,s=616} +{x=214,m=3035,a=536,s=844} +{x=775,m=43,a=353,s=413} +{x=1285,m=1315,a=429,s=1249} +{x=564,m=38,a=1534,s=268} +{x=665,m=1685,a=292,s=243} +{x=1047,m=875,a=2636,s=616} +{x=6,m=495,a=1926,s=2163} +{x=768,m=1896,a=458,s=22} +{x=163,m=741,a=451,s=796} +{x=106,m=794,a=1675,s=2563} +{x=824,m=2607,a=42,s=843} +{x=78,m=83,a=1718,s=2672} +{x=22,m=1108,a=197,s=307} +{x=160,m=190,a=3555,s=508} +{x=229,m=564,a=830,s=3129} +{x=594,m=1196,a=364,s=1703} +{x=2721,m=1009,a=872,s=3632} +{x=2893,m=564,a=282,s=536} +{x=1317,m=2746,a=427,s=602} +{x=1741,m=104,a=986,s=2976} +{x=637,m=1381,a=1037,s=255} +{x=1398,m=1991,a=682,s=1001} +{x=537,m=1433,a=148,s=773} +{x=143,m=2070,a=3859,s=358} +{x=2483,m=1234,a=779,s=361} +{x=277,m=462,a=585,s=1220} +{x=90,m=2449,a=2007,s=1234} +{x=192,m=1049,a=1542,s=1112} +{x=1907,m=13,a=105,s=3675} +{x=716,m=425,a=349,s=2780} +{x=841,m=2048,a=196,s=661} +{x=235,m=737,a=761,s=1338} +{x=337,m=29,a=2368,s=1528} +{x=346,m=2113,a=1210,s=31} +{x=325,m=1303,a=963,s=370} +{x=404,m=120,a=7,s=39} +{x=365,m=1286,a=846,s=8} +{x=985,m=338,a=724,s=731} +{x=132,m=127,a=257,s=349} +{x=752,m=5,a=1352,s=2079} +{x=923,m=513,a=861,s=1540} +{x=344,m=1492,a=432,s=2336} +{x=1598,m=13,a=848,s=1218} +{x=63,m=2897,a=825,s=781} +{x=928,m=786,a=315,s=1069} +{x=92,m=512,a=2113,s=1421} +{x=1624,m=763,a=1679,s=2171} +{x=207,m=668,a=85,s=1765} +{x=60,m=2722,a=69,s=3242} +{x=520,m=145,a=827,s=21} +{x=290,m=13,a=2511,s=1} +{x=736,m=831,a=1352,s=505} +{x=2405,m=272,a=1729,s=356} +{x=480,m=1087,a=298,s=178} +{x=764,m=56,a=637,s=484} +{x=2977,m=426,a=2928,s=261} +{x=2578,m=175,a=857,s=49} +{x=323,m=1228,a=1597,s=789} +{x=80,m=85,a=1637,s=1499} +{x=2443,m=1388,a=1084,s=105} +{x=152,m=1105,a=594,s=17} +{x=1,m=2959,a=1212,s=2164} +{x=93,m=570,a=2985,s=506} +{x=58,m=166,a=19,s=479} +{x=48,m=3218,a=534,s=927} +{x=2853,m=1521,a=628,s=38} +{x=963,m=285,a=460,s=2077} +{x=370,m=474,a=555,s=305} +{x=1440,m=8,a=751,s=856} +{x=1522,m=1839,a=3393,s=679} +{x=1501,m=850,a=117,s=1264} +{x=513,m=704,a=303,s=824} +{x=2778,m=769,a=786,s=2078} +{x=643,m=1653,a=1183,s=1101} +{x=599,m=34,a=81,s=1551} +{x=1927,m=1347,a=890,s=167} +{x=270,m=491,a=1367,s=2548} +{x=656,m=1953,a=1256,s=374} +{x=369,m=841,a=694,s=41} +{x=307,m=2036,a=5,s=210} +{x=588,m=148,a=422,s=622} +{x=1045,m=644,a=667,s=46} +{x=955,m=253,a=2044,s=1816} +{x=340,m=1166,a=70,s=1416} +{x=446,m=2736,a=185,s=1831} +{x=410,m=495,a=1996,s=1263} +{x=396,m=292,a=1697,s=178} +{x=104,m=976,a=2453,s=437} +{x=1018,m=1114,a=1377,s=89} +{x=1112,m=2070,a=611,s=389} +{x=965,m=239,a=2490,s=3543} +{x=629,m=494,a=1964,s=246} +{x=1509,m=292,a=2019,s=222} +{x=806,m=902,a=2764,s=757} +{x=452,m=2631,a=3531,s=61} +{x=976,m=959,a=247,s=771} +{x=1437,m=183,a=410,s=631} +{x=1984,m=792,a=1049,s=102} +{x=2670,m=583,a=146,s=2063} +{x=21,m=965,a=272,s=666} +{x=939,m=668,a=605,s=887} +{x=1956,m=1374,a=1251,s=1838} +{x=2159,m=1647,a=2537,s=1086} +{x=1366,m=1926,a=1117,s=385} +{x=426,m=387,a=1672,s=60} +{x=454,m=973,a=1007,s=1745} +{x=1230,m=1294,a=111,s=2851} +{x=947,m=1357,a=589,s=3} +{x=387,m=460,a=880,s=1002} +{x=409,m=886,a=1385,s=312} +{x=2082,m=219,a=3224,s=967} +{x=40,m=1073,a=2745,s=213} +{x=192,m=168,a=462,s=313} +{x=3387,m=782,a=937,s=272} +{x=2172,m=1671,a=890,s=1794} +{x=717,m=684,a=118,s=388} +{x=2392,m=26,a=108,s=1298} +{x=537,m=1924,a=241,s=2892} +{x=2531,m=1322,a=600,s=149} +{x=485,m=500,a=101,s=1} +{x=597,m=3017,a=397,s=1541} +{x=1234,m=172,a=225,s=383} +{x=337,m=3497,a=868,s=1029} +{x=1175,m=1917,a=226,s=3485} +{x=1627,m=2067,a=1210,s=2355} +{x=370,m=1609,a=3437,s=876} +{x=640,m=125,a=1038,s=216} +{x=327,m=6,a=189,s=29} +{x=3,m=1821,a=819,s=66} +{x=115,m=1831,a=662,s=970} +{x=2709,m=458,a=1189,s=1403} +{x=2202,m=731,a=858,s=913} +{x=209,m=94,a=2212,s=457} +{x=756,m=3382,a=1674,s=1311} +{x=624,m=738,a=233,s=137} +{x=1310,m=1252,a=314,s=2120} +{x=15,m=2772,a=182,s=84} +{x=549,m=785,a=69,s=923} +{x=1623,m=1888,a=457,s=24} +{x=619,m=828,a=336,s=762} +{x=573,m=101,a=217,s=2115} +{x=50,m=1103,a=230,s=1461} +{x=780,m=2290,a=339,s=3021} diff --git a/data/20.in b/data/20.in new file mode 100644 index 0000000..410063f --- /dev/null +++ b/data/20.in @@ -0,0 +1,58 @@ +%fg -> nt, gt +&zp -> rx +%fh -> nt, xz +%pj -> zj, zq +%jc -> nt, nk +%mr -> vv, pz +%cl -> fp, zq +%xb -> bl, vv +%nc -> zq +%mg -> vn +%zj -> cf +&sb -> zp +%ht -> pp +%gt -> jc +%rq -> ft +&nt -> rq, fg, ft, nd, gt, xz +%ps -> xm +%fs -> ff +%nb -> dv +%qd -> xb +%kg -> mr, vv +%dv -> vv, hr +%rm -> zq, fs +%nk -> rq, nt +%hr -> dm, vv +%xm -> vn, ht +%pp -> mq +%br -> vn, jz +%gr -> ln +%bh -> qd, vv +%cf -> gr, zq +&vv -> dm, bl, sb, nb, qd, bh +%zc -> zv +%zv -> dc, vn +%jz -> qs +&nd -> zp +%rd -> nc, zq +&ds -> zp +%mq -> vn, zc +%bl -> bb +%qn -> nt +%pz -> vv +%qs -> vn, ps +%lm -> nt, qn +%xz -> dr +%bb -> nb, vv +%dm -> kg +%ft -> fh +&vn -> br, jz, ht, ps, zc, pp, ds +%xd -> nt, lm +&hf -> zp +broadcaster -> pj, fg, bh, br +%fp -> rd, zq +&zq -> fs, gr, ff, hf, ln, zj, pj +%ff -> cl +%dr -> xd, nt +%ln -> rm +%dc -> mg, vn diff --git a/data/21.in b/data/21.in new file mode 100644 index 0000000..ed8b0bd --- /dev/null +++ b/data/21.in @@ -0,0 +1,131 @@ +................................................................................................................................... +...........##......#..........#.#....#....................#....................#...#....#...........#................##...#......#. +....................#..........#.#.....###.............................#.......#.....#...........##.##.....#..............#..#..... +.#........#......................#...#.#..#..........#..........................###......#.#.#.#................#.............##... +.....#...........#..........#.#.#....................#.......................#.#..##.......##........#....##....#.......#..#....... +....#.#......#.....#............#............#..#...#..#...................#......#......#.............#.......#..#.....#....#..... +..#...#............#....#......#......#......#..#....#.#..........#..............#..................#..#......#...........##.#..#.. +.............##...............#............#..................#....#..........#........#...............................#...#.#..... +......#......#....#....##......#.....#.........#...................................#....#................#....#......#.......##.... +.....#.....#...................#....................#.......#..#....#..................#..........................#.#.......#...... +...#.#..#..#................#..............#.........................##.................#..........#............#.##...........#.#. +....#........###.#..##.......#.......#..##..#...................................#.....#...##.........#..................#.......#.. +..............#.............#...........#...........................#....#..........#..#...#.............#....#...........#........ +.#.#.......#..#.....#..#............#...........#.........#.....#....#.........................#.............#.#...#..........#.... +.......#.....#..#..#...............#...#...................##.#..........................................##.#...................... +.............#........##.....#.............................#.........#..#.......................#.....#.........................#.. +........#..............#......#......................#..........#..............................#...........#...........#........... +.....#.....#........#..................#....#.............#....#.........#..........................##............................. +....................#.#.....#...#........#..............#.......#.......#..#.........................#.............#.........#..... +...##.#....#.......#..........#.#........##..........#............#...#....#...#.............#...............#.............#....... +...#........#.#...................##.............#.#.......#...........#..#..................................#................#.... +.........#............................................##..........#...#..#.......#..............#.....#..##...##....#..#........... +.#.....#.............#........#.......#...........#........#.#....##............................................#..............#... +.......#....##...#.....###.#....#..#............#...#.........................#.................#..#.#...........#................. +.................##....#.........#............##..#..........#.........#.....##.##............#...#.......#.......#......#.#....... +..##..............#..#..#...#.......#.......#...#..........#..........#.......##....#..........##............#.#....#....#..#...... +........#...................#.#..###..............#...#.#.#.#.....#.....##..#...###..............#.......#..........#.....#........ +..........##.............#......#.#....................#.#...................#..........#.............#.#....................#..##. +.#............................#..........#.#...#.........##..#...........#.#.....#...............#.........#.....#..#.............. +....................#....#...##..........................#...#....#.#.......#.#...........................#...................#..#. +..........##......###....###.#............#.................................#..#...........#.......#..#.........................#.. +..#.........#......###..................................#..........................##.#.#..................#.........#.##..#.#..... +.....#...................#...#...........#..#......#...................#...#...........#...#.........#...............#............. +........#.#.#.....................................#.#.........##......#.##.....#.#...#...................#.....................#... +..###..#......#.#.#.#................#.......#.#.....................#.#..#.#...............#....................#........#.##..#.. +.#........#......#.##.....#...........#.............#....#...........#................................................#............ +....#.........#..#................................#...............................#............................#................... +....#...#....#..#......#.........#..........#.......#.......#..........#.........#.......#.....#.............#......#...#.......... +.....#..#......................................................#...#.........#................##...........#...........#..###...... +...##....#...........#..........#.........#..........#..........#....##.............#....................................#......#.. +....#........#.................#...........#..........#...##...................#....##...#.....#..#..............#..#..#....#...... +...#.#............#.#.......................................#..#..#..................................#...............#.#.#......... +....#............#...........#...#..........#..#......................#.#...#.....#....................#.......##..........#....... +................#...................#....#....................##.........................#........................#......#......... +..............#...............#..#.......#..#......#....#...#.................#..#....#........#..#.....#.....................#.... +.......#........................#.#....#....#..#................#....#.........#..............#........#...........#............... +...#.......#................#.....#........#....##.................#...#...............##.......#...#....................#......... +........#.........................#..#...##..........................##......##....#.....#.#....#..##............................#. +..#...##................##........#.........#..#.........##................................#.............#.#.................#..... +....#.............................#.............#...............#...........#...............#....#.....#....#.#.................... +..........##.............#......#..................#.........#......#....#.......#....#......#....#................................ +.....#.#.#........................#..#.........#.....................#..##...#.......#......#..#.....#...#..#...#..........#....... +...................#.#..........#...............#...#.#......#....#.................#.................###.....................#.... +.....................................#.......#....#................#..........................#..........#.................##...#.. +....#................#..#......#....#..................#..........................................#....#....#......#.......#....... +......#..........#........#...#...#..#................#.........#.........#...#.........#.#....................#..#................ +.....#................#...#.#.#....#.#............##....#...........#......##..##............#......##.......#...#...............#. +...#..........#..........................#.................................#................#..........###...##.......#............ +...........................#..........#......#.....#...#.#....#.....##.........##.....#.......................##..#..#..........#.. +....................#......##...#.............#.....#.#....#...........#...##..#..#............#...#...............#............... +...............#.##.....#..........#..............#......#........#...........#..#.#......................#...#..#..##............. +...................#....##...#..#..............#....................###.....#............#.........##..#.....#.##..#............... +............................#......#.##.....#....#..#...#..###............#.............#.....................##...........#....... +............#.....#.#.#.........#...#........................#......#...................#...##..#.................#........#....... +................................#.........................................#...#.......#....#.........#.........#.....#...#......... +.................................................................S................................................................. +................#.......#.............................#.#......#................#..#..#......#..........#.............#............ +.............##........#.......#.#............#.......#.#.......#...#.....#...........#....#..#................#...........#....... +............................#.#....##............#.##..###..............................#....#............#..#........#............ +..................#........#.........##.....#....#...##.#......................###.....#..#........#.#.......##.......#............ +...................#...##..........#.#..#................##....................###...................#.....#........#.#..........#. +.................##........................#....#.#..#.....##................#...........................#......#................#. +............................#........#........#..##.....#..#.......#......#.#...#...................................#...........##. +..............#..........#............#...#...............#.........#.#...#...##..##.....#...........#...#..........#.#............ +.#.............#...#.........#.....###.#...............................#.....#.....#............#..#.........#.#.#................. +....#...............#..#.....#.....#.......##....#.#........#.##.............##..#.............#.#.#...........................#... +........................#.....#..#....#......#......#..#....#...#..#..........#....#...............#.........##..#................. +....#................#.....#.#............#..................#..#................#.........#.....#.............#................... +.................#.......#.....##.##.....#..................#..#......#....#...............#............#.#.#....#.........#....#.. +.......#................#..#.........#......###.....#.#........#....##......#.......#..#.#.......#.#....#.#...............#........ +...#.....#.#...............#....#..............#.........#...........#............#............#..#.#..##.......................... +......#...............##.............#.#...............#....................#..#..##.#.#.................#......................#.. +..#.....##..#.............#...#.......#.......................#........#.#.#............#...................#...................#.. +........................#..#..................#..#.#.#..............................#...#...#......#....#.#........................ +...#....................#................................#...#.....#...........#........#..#........#...................##.#.....#. +......#...##...#.................#..#..#....#.....#.....#.....#...#..................#.............................#..#......#..... +....................................#..................#....#...#.........#....#......................#.............#....###..#.... +.##..#..#...##..........................#..#..#...........#..............#....#.........#....#....................#......##........ +.##............#.#...............##....#.....#.......#..........#......#...............#..#...#........#.................#..#...... +.#..#.##.........##.#..........#...........#...#...#.....#.#..#............##.........##...#.....................#...#........#.... +.......#....#.#.....#........#..................#.............##........#..........##.........#..............#.#..#...#.....#.#..#. +...#..#....#........#.......................#.......#........#....#.........#..............#...#..#.#.......##...........#.#.#..#.. +................#......#......................#...#...............#.#.....#......#..........#.##.#.........#....#...#......#..#.... +..............##.#..#...............#.#...........#..#......#......#..#.#..#.................#.....................#.........#.#... +..#................#..#..#..........#........#.#.........#....#...........#...#.......#.#.......#......................#..#......#. +......#............#...##..........#...#..................#.....#............##............................#...#..#........#....#.. +..................#..................................###.#..........#....##......#....#.................#..........#..#............ +...#..#.......#......#........................#...#......#..................#.#.#.#.#.....#...................#..#...#......##...#. +....................#.#......#.......#......#....#.......#.#.......#.............#...#..#.........................#................ +.........#................#.#...........##......#..#..#..................#....#......#......#.......#.#......#.........#.....#..... +..#..........#...........#.........................#.......#..........#....#...........#.#..............................#.....##... +.....#.#..#......#....#....#.............................##.....#...#......#..#..#...#..............#..........#.................#. +.............##....##.......................#.#............#................#....#.......#...................#..................... +..#.......#.........#......................................................#..#..#..............#..#.##............................ +......#.......#....#............................................#.#...................##...............##......#.......#.........#. +..............#..#..............#...........#...............................#...................................#....#......#.#.... +.........#....#......#.....#.................#..............#.................................................#........##.......... +......#...##..............#....#.#............#..#....#...........#.........#..........................#......#.#..........##.#.... +...#....#.....#........##...#...................#.#....#...........................#...........................#..........#........ +.#..........#.#.....#............#.#................#...#.#..#...............#....#..........#.........#............#.......#.#.... +.........#......#.#.#.......#....#...#.#......................#........#..#...#...................#.......#.........#............#. +..........................#.....#.................................#.#.....#.................................#.#...#.###....#....... +...#.................#..#.................#..............#........#.......#.#.............#................#...#..#...........#.... +....#..#....................#...............................#.#....#...........................#..#.....##..#................##..#. +....#...#...#..##........##......#...#......#................#..#.......................#....#........#...#.......#..........#..... +............#.....#................#.........#.............#...#...#.#................#...........#......#..#.......#........#.#... +......#...#...........#....#..#.#..............................#......................................................#............ +................#.....#.....#....#.......#..#...#..........#.#......................#..#...#.....#...........#.............#..#.... +..............#.....#.......#.#.............#.................#.........##.............#......#..............#..................... +...#......#.##...............#..........#...#....#............##................#........#.#......#.#.#............................ +.#....#......................#...............###.....................#..................#..#..........#...........#.....#.......... +............#..#.......#....#...........#...##..#...........##....#.............#..#.#....#............#..#.......#.#.#.....#...... +......#.....##.##.#.....#.#...........#.#.#...................#..................#..#..#..#........#........................#.#.... +....#.........#........................#..#....##.................#............#.......#..........................##.#.....#....... +..#..#....................#..........#..........#...........................#..............#....................#.................. +..............#...#...............#...........##................#..........#........#.#....#......##.......#....#.......#...##..... +......#...............#........#...#...........#.....#......................#............#.............#..........#...........##... +..#..........#.#.#........#.#..#.#..##...........#.........................#........#.#....#.#........#.........#........#......##. +..........#.#.#...#...#.#...............................#..............#....#......##..........#.#..........#...#....#............. +.....................#............#......#.#..#....#..#..#..............#....#.#........................##......#............#..... +................................................................................................................................... diff --git a/flake.nix b/flake.nix index f95f7ba..036871d 100644 --- a/flake.nix +++ b/flake.nix @@ -20,6 +20,8 @@ devShells = forAllSystems (pkgs: with pkgs; { default = mkShell { nativeBuildInputs = [ rustc cargo ]; + buildInputs = [ hyperfine ]; + RUST_SRC_PATH = "${rustPlatform.rustLibSrc}"; }; }); diff --git a/src/bin/day05.rs b/src/bin/day05.rs index 24e0c87..a1afdf5 100644 --- a/src/bin/day05.rs +++ b/src/bin/day05.rs @@ -69,7 +69,7 @@ impl Entry { fn main() -> Result<()> { let filename = env::args() .nth(1) - .context("./day03 ")?; + .context("./day05 ")?; let input = fs::read_to_string(filename)?; let mut sections = input.split("\n\n"); diff --git a/src/bin/day06.rs b/src/bin/day06.rs new file mode 100644 index 0000000..25d5ab1 --- /dev/null +++ b/src/bin/day06.rs @@ -0,0 +1,39 @@ +use anyhow::{Context, Result}; +use itertools::Itertools; + +fn win_bounds(time: u64, record: u64) -> (u64, u64) { + let det_sq = time * time - 4 * record; + let det = (det_sq as f64).sqrt(); + let mut low = ((time as f64 - det) / 2.0).ceil() as u64; + low += ((time - low) * low <= record) as u64; + let mut high = ((time as f64 + det) / 2.0).floor() as u64; + high -= ((time - low) * low <= record) as u64; + (low, high) +} + +fn main() -> Result<()> { + let filename = std::env::args() + .nth(1) + .context("./day06 ")?; + let input = std::fs::read_to_string(filename)?; + + let mut nums = input.lines().map(|line| { + line.split_ascii_whitespace() + .skip(1) + .map(|d| d.parse().unwrap()) + .collect::>() + }); + + let (times, records) = nums.next_tuple().unwrap(); + let races = times.iter().zip(records.iter()); + let range = |(low, high)| high - low + 1; + let part1: u64 = races.map(|(&t, &r)| range(win_bounds(t, r))).product(); + + let concat = |v: Vec<_>| v.iter().join("").parse().unwrap(); + let part2 = range(win_bounds(concat(times), concat(records))); + + println!("1) {}", part1); + println!("2) {}", part2); + + Ok(()) +} diff --git a/src/bin/day07.rs b/src/bin/day07.rs new file mode 100644 index 0000000..86829c8 --- /dev/null +++ b/src/bin/day07.rs @@ -0,0 +1,142 @@ +use std::env; +use std::fs; + +#[derive(PartialEq, Eq, PartialOrd, Ord, Debug)] +enum Kind { + HC, + OP, + TP, + THREE, + FH, + FOUR, + FIVE, +} + +impl Kind { + fn from_sorted_frequencies(slice: &[u8]) -> Kind { + match slice { + &[5] => Kind::FIVE, + &[4, _] => Kind::FOUR, + &[3, _] => Kind::FH, + &[3, _, _] => Kind::THREE, + &[2, _, _] => Kind::TP, + &[2, _, _, _] => Kind::OP, + &[1, _, _, _, _] => Kind::HC, + _ => unreachable!(), + } + } +} + +fn find_frequencies(hand: [u8; 5]) -> (u8, [u8; 5], [u8; 5]) { + let mut distinct = 0u8; + let mut cards = [0u8; 5]; + let mut counts = [0u8; 5]; + + for c in hand { + let mut was_seen: bool = false; + for i in 0..5 { + if c == cards[i] { + counts[i] += 1; + was_seen = true; + break; + } + } + + if !was_seen { + cards[distinct as usize] = c; + counts[distinct as usize] = 1; + distinct += 1; + } + } + + (distinct, cards, counts) +} + +fn kind(hand: [u8; 5]) -> Kind { + let (distinct, _, mut counts) = find_frequencies(hand); + counts.sort(); + counts.reverse(); + Kind::from_sorted_frequencies(&counts[..distinct as usize]) +} + +fn joker_kind(hand: [u8; 5], joker: u8) -> Kind { + let (mut distinct, cards, mut counts) = find_frequencies(hand); + let mut joker_count = 0; + for c in 0..distinct as usize { + if cards[c] == joker { + joker_count += counts[c]; + distinct -= 1; + counts[c] = 0; + break; + } + } + + distinct = distinct.max(1); + counts.sort(); + counts.reverse(); + counts[0] += joker_count; + Kind::from_sorted_frequencies(&counts[..distinct as usize]) +} + +fn solve(encoding: impl Fn(u8) -> u8, kind_eval: impl Fn([u8; 5]) -> Kind, input: &str) -> u64 { + let mut hand_bid_pairs: Vec<_> = input + .lines() + .map(|line| { + let mut hand: [u8; 5] = (&line.as_bytes()[..5]).try_into().unwrap(); + for b in hand.iter_mut() { + *b = encoding(*b); + } + let kind = kind_eval(hand); + + let bid = line + .bytes() + .skip(6) + .map(|c| (c - b'0') as u64) + .reduce(|a, b| a * 10 + b) + .unwrap(); + + (kind, hand, bid) + }) + .collect(); + + hand_bid_pairs.sort(); + + hand_bid_pairs + .into_iter() + .zip(1..) + .map(|((_, _, bid), i)| bid * i) + .sum() +} + +fn main() { + let filename = env::args().nth(1).unwrap(); + let input = fs::read_to_string(filename).unwrap(); + + let encode_p1 = |byte| match byte { + b'T' => b'V', + b'J' => b'W', + b'Q' => b'X', + b'K' => b'Y', + b'A' => b'Z', + _ => byte, + }; + + let part1 = solve(encode_p1, kind, &input); + + let encode_p2 = |byte| match byte { + b'T' => b'V', + b'J' => b'1', + b'Q' => b'X', + b'K' => b'Y', + b'A' => b'Z', + _ => byte, + }; + + let kind_eval = |hand| joker_kind(hand, encode_p2(b'J')); + + let part2 = solve(encode_p2, kind_eval, &input); + + + println!("1) {}", part1); + println!("2) {}", part2); +} diff --git a/src/bin/day08.rs b/src/bin/day08.rs new file mode 100644 index 0000000..3ae9fe0 --- /dev/null +++ b/src/bin/day08.rs @@ -0,0 +1,49 @@ +use gcd; +use hashbrown::{HashMap, HashSet}; +use anyhow::{Context, Result}; + +fn lcm(a: u64, b: u64) -> u64 { + (a * b) / gcd::binary_u64(a, b) +} + +fn main() -> Result<()> { + let filename = std::env::args() + .nth(1) + .context("./day08 ")?; + let input = std::fs::read_to_string(filename)?; + let mut lines = input.lines().map(|line| line.as_bytes()); + let instructions = lines.next().unwrap(); + let connections: Vec<_> = lines.skip(1).collect(); + let sources = connections.iter().map(|c| &c[..3]); + + let name_ids: HashMap<_, _> = sources.clone().zip(0..).collect(); + let id = |name: &[u8]| name_ids[name]; + let mut neighbours = vec![(0u32, 0u32); connections.len()]; + for (from_id, conn) in connections.iter().enumerate() { + neighbours[from_id] = (id(&conn[7..10]), id(&conn[12..15])); + } + + let cycle_len = |start: &[u8], ends: &HashSet<_>| -> u64 { + let mut step_count = 0; + let mut pos = id(start); + let mut plan = instructions.iter().cycle(); + + while !ends.contains(&pos) { + let (to_l, to_r) = neighbours[pos as usize]; + pos = if plan.next().unwrap() == &b'L' { to_l } else { to_r }; + step_count += 1; + } + + step_count + }; + + let ends = sources.clone().filter(|s| s[2] == b'Z').map(id).collect(); + let part1 = cycle_len("AAA".as_bytes(), &ends); + let starts = sources.filter(|s| s[2] == b'A'); + let part2 = starts.map(|pos| cycle_len(pos, &ends)).reduce(lcm).unwrap(); + + println!("1) {}", part1); + println!("2) {}", part2); + + Ok(()) +} diff --git a/src/bin/day09.rs b/src/bin/day09.rs new file mode 100644 index 0000000..b206b7e --- /dev/null +++ b/src/bin/day09.rs @@ -0,0 +1,48 @@ +use anyhow::{Context, Result}; + +fn extrapolate(sequence: &mut Vec) -> Option<(i64, i64)> { + let diff = |seq: &mut Vec| { + (0..seq.len() - 1).for_each(|i| seq[i] = seq[i + 1] - seq[i]); + seq.pop(); + }; + + let mut fwd = 0; + let mut bwd = 0; + let mut f = 1; + + while sequence.len() > 1 { + fwd += sequence[sequence.len() - 1]; + bwd += f * sequence[0]; + diff(sequence); + f *= -1; + + if sequence.iter().all(|&num| num == 0) { + return Some((bwd, fwd)); + } + } + + None +} + +fn main() -> Result<()> { + let filename = std::env::args() + .nth(1) + .context("./day09 ")?; + let input = std::fs::read_to_string(filename)?; + + let mut part1 = 0; + let mut part2 = 0; + + for line in input.lines() { + let parse_i64 = |str: &str| str.parse::().unwrap(); + let mut initial: Vec = line.split_ascii_whitespace().map(parse_i64).collect(); + let (p2, p1) = extrapolate(&mut initial).context("malformed input")?; + part1 += p1; + part2 += p2; + } + + println!("1) {}", part1); + println!("2) {}", part2); + + Ok(()) +} diff --git a/src/bin/day10.rs b/src/bin/day10.rs new file mode 100644 index 0000000..0f5cca1 --- /dev/null +++ b/src/bin/day10.rs @@ -0,0 +1,184 @@ +use std::env; +use std::fs; + +use anyhow::{anyhow, Context, Result}; + +#[derive(PartialEq, Eq, Copy, Clone, PartialOrd, Ord, Debug)] +struct Point { + x: usize, + y: usize, +} + +impl From<(T, T)> for Point +where + T: Into, +{ + fn from(p: (T, T)) -> Self { + return Point { + x: p.0.into(), + y: p.1.into(), + }; + } +} + +impl Point { + #[rustfmt::skip] + fn walk(&self, d: Dir) -> Self { + match d { + Dir::U => Self { x: self.x - 1, y: self.y }, + Dir::D => Self { x: self.x + 1, y: self.y }, + Dir::L => Self { x: self.x, y: self.y - 1 }, + Dir::R => Self { x: self.x, y: self.y + 1 }, + } + } +} + +#[derive(PartialEq, Eq, Copy, Clone, Debug)] +enum Dir { + U, + D, + L, + R, +} + +impl Dir { + fn invert(&self) -> Dir { + match self { + Dir::U => Dir::D, + Dir::D => Dir::U, + Dir::L => Dir::R, + Dir::R => Dir::L, + } + } +} + +struct Pipe { + end1: Dir, + end2: Dir, +} + +impl TryFrom for Pipe { + type Error = anyhow::Error; + + #[rustfmt::skip] + fn try_from(byte: u8) -> Result { + match byte { + b'|' => Ok(Pipe { end1: Dir::D, end2: Dir::U }), + b'-' => Ok(Pipe { end1: Dir::L, end2: Dir::R }), + b'F' => Ok(Pipe { end1: Dir::D, end2: Dir::R }), + b'7' => Ok(Pipe { end1: Dir::D, end2: Dir::L }), + b'J' => Ok(Pipe { end1: Dir::U, end2: Dir::L }), + b'L' => Ok(Pipe { end1: Dir::U, end2: Dir::R }), + _ => Err(anyhow!("{} ({}) is not a pipe,", byte as char, byte)), + } + } +} + +impl Pipe { + fn other_end(&self, from: &Dir) -> Option { + if *from == self.end1 { + Some(self.end2) + } else if *from == self.end2 { + Some(self.end1) + } else { + None + } + } +} + +struct Grid { + grid: Vec, + width: usize, +} + +impl std::ops::Index for Grid { + type Output = T; + + fn index(&self, p: Point) -> &T { + &self.grid[p.x * self.width + p.y] + } +} + +impl std::ops::IndexMut for Grid { + fn index_mut(&mut self, p: Point) -> &mut T { + &mut self.grid[p.x * self.width + p.y] + } +} + +fn main() -> Result<()> { + let filename = env::args() + .nth(1) + .context("./day10 ")?; + let input = fs::read_to_string(filename)?; + + let width = input.lines().next().context("bad input")?.trim().len(); + let grid: Vec<_> = input.lines().flat_map(|line| line.trim().bytes()).collect(); + let height = grid.len() / width; + let grid = Grid { grid, width }; + + let mut all_points = (0..height).flat_map(|x| (0..width).map(move |y| (x, y).into())); + let start: Point = all_points + .find(|point: &Point| grid[point.clone()] == b'S') + .context("start not found")?; + + let mut start_directions = Vec::new(); + for dir in [Dir::U, Dir::D, Dir::L, Dir::R] { + let neighbour = start.walk(dir); + let byte = grid[neighbour]; + + if byte != b'.' { + let pipe = Pipe::try_from(byte)?; + + if pipe.end1 == dir.invert() || pipe.end2 == dir.invert() { + start_directions.push(dir); + } + } + } + + assert_eq!(start_directions.len(), 2); + + let mut on_loop = Grid { + grid: vec![false; height * width], + width, + }; + + let end = start.walk(start_directions[0]); + + on_loop[end] = true; + on_loop[start] = true; + + let mut loop_length = 2; + let mut entry: Dir = start_directions[1].invert(); + let mut position: Point = start.walk(start_directions[1]); + + while position != end { + loop_length += 1; + on_loop[position] = true; + let pipe = Pipe::try_from(grid[position])?; + let exit = pipe.other_end(&entry).context("broken pipe")?; + position = position.walk(exit); + entry = exit.invert(); + } + + let is_vertical = |b| b == b'|' || b == b'L' || b == b'J'; + + let mut enclosed_count = 0; + for x in 0..height { + let mut parity: bool = false; + for y in 0..width { + let byte = grid.grid[x * width + y]; + if !on_loop.grid[x * width + y] { + enclosed_count += parity as usize; + } else { + if is_vertical(byte) || byte == b'S' { + parity = !parity; + } + } + } + } + + println!("1) {}", loop_length / 2); + println!("2) {}", enclosed_count); + + Ok(()) +} diff --git a/src/bin/day11.rs b/src/bin/day11.rs new file mode 100644 index 0000000..80d0656 --- /dev/null +++ b/src/bin/day11.rs @@ -0,0 +1,43 @@ +use anyhow::{Context, Result}; +use itertools::Itertools; + +fn main() -> Result<()> { + let filename = std::env::args() + .nth(1) + .context("./day11 ")?; + let input = std::fs::read_to_string(filename)?; + let lines: Vec<_> = input.lines().map(|line| line.as_bytes()).collect(); + + let height = lines.len(); + let width = lines[0].len(); + + let galaxies: Vec<_> = (0..height) + .cartesian_product(0..width) + .filter(|&(x, y)| lines[x][y] == b'#') + .collect(); + + let mut is_empty_row = vec![true; height]; + let mut is_empty_col = vec![true; width]; + + galaxies.iter().for_each(|&(x, y)| { + is_empty_row[x] = false; + is_empty_col[y] = false; + }); + + let empty_rows_count = |a: usize, b| (a.min(b)..a.max(b)).filter(|&x| is_empty_row[x]).count(); + let empty_cols_count = |a: usize, b| (a.min(b)..a.max(b)).filter(|&y| is_empty_col[y]).count(); + + let distance = |(&(x1, y1), &(x2, y2)): (&(usize, usize), &(usize, usize)), scale: usize| { + let emptiness = empty_rows_count(x1, x2) + empty_cols_count(y1, y2); + x1.abs_diff(x2) + y1.abs_diff(y2) + (scale - 1) * emptiness + }; + + let galaxy_pairs = galaxies.iter().tuple_combinations(); + let part1: usize = galaxy_pairs.clone().map(|p| distance(p, 2)).sum(); + let part2: usize = galaxy_pairs.clone().map(|p| distance(p, 1000000)).sum(); + + println!("1) {}", part1); + println!("2) {}", part2); + + Ok(()) +} diff --git a/src/bin/day12.rs b/src/bin/day12.rs new file mode 100644 index 0000000..b86357e --- /dev/null +++ b/src/bin/day12.rs @@ -0,0 +1,99 @@ +use hashbrown::HashMap; +use ndarray::Array3; + +use anyhow::{Context, Result}; + +fn solve(str: &[u8], groups: &[usize]) -> usize { + if groups.iter().sum::() + groups.len() > str.len() + 1 { + return 0; + } + + let groups_max = groups.iter().max().unwrap(); + let mut dp = Array3::::zeros((str.len() + 1, groups.len() + 1, *groups_max + 1)); + dp[[0, 0, 0]] = 1; + + for s in 0..str.len() { + if str[s] == b'.' || str[s] == b'?' { + for g in 0..groups.len() { + dp[[s + 1, g, 0]] += dp[[s, g, 0]]; + dp[[s + 1, g + 1, 0]] += dp[[s, g, groups[g]]]; + } + dp[[s + 1, groups.len(), 0]] += dp[[s, groups.len(), 0]]; + } + + if str[s] == b'#' || str[s] == b'?' { + for g in 0..groups.len() { + for p in 0..groups[g] { + dp[[s + 1, g, p + 1]] += dp[[s, g, p]]; + } + } + } + } + + dp[[str.len(), groups.len(), 0]] + dp[[str.len(), groups.len() - 1, groups[groups.len() - 1]]] +} + +type Cache<'a> = HashMap<(&'a [u8], &'a [usize], usize), usize>; + +fn solve_rec<'a>(str: &'a [u8], groups: &'a [usize], pos: usize, cache: &mut Cache<'a>) -> usize { + let mut ans = 0; + + if let Some(result) = cache.get(&(str, groups, pos)) { + return *result; + } + + if str.len() == 0 { + return (groups.len() == 0 || (groups.len() == 1 && pos == groups[0])) as usize; + } + + if str[0] == b'.' || str[0] == b'?' { + if groups.len() == 0 || pos == 0 { + ans += solve_rec(&str[1..], groups, pos, cache); + } else if pos == groups[0] { + ans += solve_rec(&str[1..], &groups[1..], 0, cache); + } + } + + if str[0] == b'#' || str[0] == b'?' { + if groups.len() > 0 && pos < groups[0] { + ans += solve_rec(&str[1..], groups, pos + 1, cache); + } + } + + cache.insert((str, groups, pos), ans); + + return ans; +} + +fn main() -> Result<()> { + let filename = std::env::args() + .nth(1) + .context("./day12 ")?; + let input = std::fs::read_to_string(filename)?; + + let mut part1 = 0; + let mut part2 = 0; + for line in input.lines() { + let (record, groups) = line.split_once(' ').context("malformed input")?; + let groups: Vec = groups.split(',').map(|v| v.parse().unwrap()).collect(); + + part1 += solve_rec(record.as_bytes(), &groups, 0, &mut HashMap::new()); + + let mut record5 = record.to_string(); + let mut groups5 = groups.clone(); + record5.reserve_exact(4 * (record.len() + 1)); + groups5.reserve_exact(4 * groups.len()); + for _ in 0..4 { + record5.push('?'); + record5.push_str(record); + groups5.extend(&groups); + } + + part2 += solve(record5.as_bytes(), &groups5); + } + + println!("1) {}", part1); + println!("2) {}", part2); + + Ok(()) +} diff --git a/src/bin/day13.rs b/src/bin/day13.rs new file mode 100644 index 0000000..e9ba1a7 --- /dev/null +++ b/src/bin/day13.rs @@ -0,0 +1,47 @@ +use anyhow::{Context, Result}; + +fn grid_count(x_max: usize, y_max: usize, predicate: impl Fn(usize, usize) -> bool) -> usize { + let mut count = 0; + for x in 0..x_max { + for y in 0..y_max { + count += predicate(x, y) as usize; + } + } + count +} + +fn main() -> Result<()> { + let filename = std::env::args() + .nth(1) + .context("./day13 ")?; + let input = std::fs::read_to_string(filename)?; + + let mut part1 = 0; + let mut part2 = 0; + + for section in input.split("\n\n") { + let height = section.lines().count(); + let grid: Vec<_> = section.lines().flat_map(|line| line.bytes()).collect(); + let width = grid.len() / height; + + let is_smudge_h = |i, x, y| grid[(i + x) * width + y] != grid[(i - x - 1) * width + y]; + let is_smudge_v = |i, x, y| grid[x * width + i + y] != grid[x * width + (i - y - 1)]; + + for i in 1..height { + let smudge_count = grid_count(i.min(height - i), width, |x, y| is_smudge_h(i, x, y)); + part1 += 100 * i * usize::from(smudge_count == 0); + part2 += 100 * i * usize::from(smudge_count == 1); + } + + for i in 1..width { + let smudge_count = grid_count(height, i.min(width - i), |x, y| is_smudge_v(i, x, y)); + part1 += i * usize::from(smudge_count == 0); + part2 += i * usize::from(smudge_count == 1); + } + } + + println!("1) {}", part1); + println!("2) {}", part2); + + Ok(()) +} diff --git a/src/bin/day14.rs b/src/bin/day14.rs new file mode 100644 index 0000000..03dccaf --- /dev/null +++ b/src/bin/day14.rs @@ -0,0 +1,104 @@ +use hashbrown::HashMap; +use itertools::iproduct; + +fn tilt_hori(mut grid: Vec, h: usize, w: usize, range: I, y_delta: i64) -> Vec +where + I: Iterator, +{ + let d = if y_delta == 1 { 0 } else { w - 1 }; + let mut next_free = vec![d; h]; + for (x, y) in range { + if grid[x * w + y] == b'#' { + next_free[x] = (y as i64 + y_delta) as usize; + } + if grid[x * w + y] == b'O' { + grid[x * w + y] = b'.'; + grid[x * w + next_free[x]] = b'O'; + next_free[x] = (next_free[x] as i64 + y_delta) as usize; + } + } + + grid +} + +fn tilt_vert(mut grid: Vec, h: usize, w: usize, range: I, x_delta: i64) -> Vec +where + I: Iterator, +{ + let d = if x_delta == 1 { 0 } else { h - 1 }; + let mut next_free = vec![d; w]; + for (x, y) in range { + if grid[x * w + y] == b'#' { + next_free[y] = (x as i64 + x_delta) as usize; + } + if grid[x * w + y] == b'O' { + grid[x * w + y] = b'.'; + grid[next_free[y] * w + y] = b'O'; + next_free[y] = (next_free[y] as i64 + x_delta) as usize; + } + } + + grid +} + +fn spin(mut grid: Vec, h: usize, w: usize) -> Vec { + grid = tilt_vert(grid, h, w, iproduct!(0..h, 0..w), 1); // north + grid = tilt_hori(grid, h, w, iproduct!(0..h, 0..w), 1); // west + grid = tilt_vert(grid, h, w, iproduct!((0..h).rev(), (0..w).rev()), -1); // south + grid = tilt_hori(grid, h, w, iproduct!((0..h).rev(), (0..w).rev()), -1); // east + return grid; +} + +fn spin_n(mut grid: Vec, h: usize, w: usize, spin_count: usize) -> Vec { + let mut past: HashMap<(usize, usize), usize> = HashMap::new(); + for spins in 0..spin_count { + let mut load = (0, 0); + for (x, y) in iproduct!(0..h, 0..w) { + if grid[x * w + y] == b'O' { + load.0 += h - x; + load.1 += w - y; + } + } + + if let Some(first_seen) = past.get(&load) { + let offset = (spin_count - first_seen) % (spins - first_seen); + for _ in 0..offset { + grid = spin(grid, h, w); + } + return grid; + } + + past.insert(load, spins); + grid = spin(grid, h, w); + } + + grid +} + +fn main() { + let filename = std::env::args().nth(1).unwrap(); + let input = std::fs::read_to_string(filename).unwrap(); + let w = input.lines().next().unwrap().len(); + let grid: Vec<_> = input.lines().flat_map(|line| line.bytes()).collect(); + let h = grid.len() / w; + + let tilt_north = |grid: Vec| tilt_vert(grid, h, w, iproduct!(0..h, 0..w), 1); + + let boulder_load = |(x, y), grid: &Vec| { + if grid[x * w + y] == b'O' { + h - x + } else { + 0 + } + }; + + let north_load = |grid| -> usize { iproduct!(0..h, 0..w).map(|p| boulder_load(p, grid)).sum() }; + + let grid1 = tilt_north(grid.clone()); + let part1 = north_load(&grid1); + println!("{}", part1); + + let grid2 = spin_n(grid, h, w, 1_000_000_000); + let part2 = north_load(&grid2); + println!("{}", part2); +} diff --git a/src/bin/day15.rs b/src/bin/day15.rs new file mode 100644 index 0000000..9af9e58 --- /dev/null +++ b/src/bin/day15.rs @@ -0,0 +1,46 @@ +use std::collections::HashMap; + +use anyhow::{Context, Result}; + +fn main() -> Result<()> { + let filename = std::env::args() + .nth(1) + .context("./day15 ")?; + let input = std::fs::read_to_string(filename)?; + let sequence: Vec<_> = input.trim().split(',').map(|s| s.as_bytes()).collect(); + + let update = |state, c| (state + c as usize) * 17 % 256; + let hash = |w: &[u8]| w.iter().copied().fold(0, update); + let part1: usize = sequence.iter().map(|w| hash(w)).sum(); + + let mut buckets = vec![HashMap::new(); 256]; + for (counter, step) in sequence.into_iter().enumerate() { + if step[step.len() - 1] == b'-' { + let key = &step[..step.len() - 1]; + buckets[hash(key)].remove(key); + } else { + let (key, focal) = step.split_at(step.len() - 2); + let focal = focal[1] - b'0'; + + buckets[hash(key)] + .entry(key) + .and_modify(|(_, old_focal)| *old_focal = focal) + .or_insert((counter, focal)); + } + } + + let mut part2 = 0; + for (bucket, b_id) in buckets.into_iter().zip(1..) { + let mut v: Vec<_> = bucket.into_values().collect(); + v.sort(); + + for ((_, focal), position) in v.into_iter().zip(1..) { + part2 += b_id * position * (focal as usize); + } + } + + println!("1) {}", part1); + println!("2) {}", part2); + + Ok(()) +} diff --git a/src/bin/day17.rs b/src/bin/day17.rs new file mode 100644 index 0000000..7b48186 --- /dev/null +++ b/src/bin/day17.rs @@ -0,0 +1,78 @@ +use anyhow::{Context, Result}; + +fn min_heat_loss(grid: &Vec, h: i32, w: i32, min_steps: i32, max_steps: i32) -> Option { + let is_valid = |x, y| 0 <= x && x < h && 0 <= y && y < w; + let read = |x, y| (grid[(x * w + y) as usize] - b'0') as usize; + + let bucket_count = ((max_steps * 9) as usize).next_power_of_two(); + let mut queue = vec![Vec::new(); bucket_count]; + queue[0].push(((0, 0), (0, 1))); + queue[0].push(((0, 0), (1, 0))); + let mut dist = vec![[usize::MAX, usize::MAX]; grid.len()]; + let mut heat_loss = 0; + let mut queue_size = 2; + + while queue_size > 0 { + while let Some(((x, y), (dx, dy))) = queue[heat_loss % bucket_count].pop() { + queue_size -= 1; + + if x == h - 1 && y == w - 1 { + return Some(heat_loss); + } + + if heat_loss > dist[(x * w + y) as usize][(dx == 0) as usize] { + continue; + } + + for (dx, dy) in [(dy, -dx), (-dy, dx)] { + let (mut nx, mut ny) = (x, y); + let mut path_loss = 0; + + for i in 1..=max_steps { + nx += dx; + ny += dy; + + if !is_valid(nx, ny) { + break; + } + + path_loss += read(nx, ny); + + if i >= min_steps { + let is_horizontal = dx == 0; + let dist_pos = nx * w + ny; + let old_dist = dist[dist_pos as usize][is_horizontal as usize]; + let new_dist = heat_loss + path_loss; + if new_dist < old_dist { + dist[dist_pos as usize][is_horizontal as usize] = new_dist; + queue[new_dist % bucket_count].push(((nx, ny), (dx, dy))); + queue_size += 1; + } + } + } + } + } + + heat_loss += 1; + } + + None +} + +fn main() -> Result<()> { + let filename = std::env::args() + .nth(1) + .context("./day17 ")?; + let input = std::fs::read_to_string(filename)?; + let width = input.lines().next().unwrap().len(); + let grid: Vec<_> = input.lines().flat_map(|l| l.bytes()).collect(); + let height = grid.len() / width; + + let part1 = min_heat_loss(&grid, height as i32, width as i32, 1, 3); + let part2 = min_heat_loss(&grid, height as i32, width as i32, 4, 10); + + println!("1) {:?}", part1); + println!("2) {:?}", part2); + + Ok(()) +} diff --git a/src/bin/day18.rs b/src/bin/day18.rs new file mode 100644 index 0000000..1555bbf --- /dev/null +++ b/src/bin/day18.rs @@ -0,0 +1,56 @@ +use std::str; + +use anyhow::{Context, Result}; + +fn area(moves: impl Iterator) -> i64 { + let (mut x, mut y) = (0i64, 0i64); + let mut area = 0; + for ((dx, dy), dist) in moves { + let (nx, ny) = (dist * dx + x, dist * dy + y); + area += x * ny - y * nx; + area -= i64::abs(nx - x) + i64::abs(ny - y); + (x, y) = (nx, ny); + } + i64::abs(area / 2) + 1 +} + +fn main() -> Result<()> { + let filename = std::env::args() + .nth(1) + .context("./day18 ")?; + let input = std::fs::read_to_string(filename)?; + let lines = input.lines().map(|line| line.as_bytes()); + + let dirs = [(0, 1), (1, 0), (0, -1), (-1, 0)]; + let to_dir = |c| match c { + b'R' => dirs[0], + b'L' => dirs[2], + b'U' => dirs[3], + b'D' => dirs[1], + _ => unreachable!(), + }; + + let read_p1 = |line: &[u8]| { + let dir = line[0]; + let dist = &line[2..line.len() - 10]; + let dist = str::from_utf8(dist).unwrap().parse::().unwrap(); + (to_dir(dir), dist) + }; + + let read_p2 = |line: &[u8]| { + let dir = line[line.len() - 2] - b'0'; + let dist = &line[line.len() - 7..line.len() - 2]; + let dist = str::from_utf8(dist).unwrap(); + let dist = i64::from_str_radix(dist, 16).unwrap(); + + (dirs[dir as usize], dist) + }; + + let part1 = area(lines.clone().map(read_p1)); + let part2 = area(lines.clone().map(read_p2)); + + println!("1) {}", part1); + println!("2) {}", part2); + + Ok(()) +} diff --git a/src/bin/day19.rs b/src/bin/day19.rs new file mode 100644 index 0000000..9893365 --- /dev/null +++ b/src/bin/day19.rs @@ -0,0 +1,160 @@ +use std::cmp::Ordering; +use std::collections::HashMap; + +use itertools::Itertools; + +use anyhow::{Context, Result}; + +const MALFORMED: &str = "malformed input"; + +struct Rule { + property: u8, + comp: Ordering, + value: u32, +} + +struct Workflow<'a> { + rules: Vec<(Rule, &'a str)>, + default: &'a str, +} + +impl<'a> TryFrom<&'a str> for Workflow<'a> { + type Error = anyhow::Error; + + fn try_from(str: &'a str) -> Result { + match str.rsplit_once(',') { + Some((rules_str, default)) => { + let mut rules = Vec::new(); + for rule in rules_str.split(',') { + let (condition, dest) = rule.split_once(':').context("MALFORMED")?; + let property = index(condition.as_bytes()[0]); + let comp = condition.as_bytes()[1].cmp(&b'='); + let value = (&condition[2..]).parse()?; + rules.push(( + Rule { + property, + comp, + value, + }, + dest, + )); + } + Ok(Workflow { rules, default }) + } + None => Ok(Workflow { + rules: Vec::new(), + default: str, + }), + } + } +} + +impl<'a> Workflow<'a> { + fn process(&self, state: &[u32; 4]) -> &'a str { + for (rule, dst) in self.rules.iter() { + if state[rule.property as usize].cmp(&rule.value) == rule.comp { + return dst; + } + } + + return self.default; + } +} + +fn index(b: u8) -> u8 { + match b { + b'x' => 0, + b'm' => 1, + b'a' => 2, + b's' => 3, + _ => unreachable!(), + } +} + +fn main() -> Result<()> { + let filename = std::env::args() + .nth(1) + .context("./day19 ")?; + let input = std::fs::read_to_string(filename)?; + let (workflows_str, parts_str) = input.split("\n\n").next_tuple().context(MALFORMED)?; + + let mut workflows = HashMap::new(); + for workflow in workflows_str.lines() { + let (name, body) = workflow.split_once('{').context(MALFORMED)?; + workflows.insert(name, Workflow::try_from(&body[..body.len() - 1])?); + } + + let mut parts = Vec::new(); + for part_str in parts_str.lines() { + let mut part = [0, 0, 0, 0]; + for (idx, property) in part_str[1..part.len() - 1].split(',').enumerate() { + part[idx] = property[2..].parse()?; + } + + parts.push(part); + } + + let mut part1: u64 = 0; + for part in parts.iter() { + let mut current = "in"; + while (current != "A") & (current != "R") { + let workflow = workflows.get(¤t).context(MALFORMED)?; + current = workflow.process(part); + } + + if current == "A" { + part1 += part.iter().map(|&v| v as u64).sum::(); + } + } + + let split_bound = |rule: &Rule, bound: (u32, u32)| match rule.comp { + Ordering::Less => ( + (bound.0, bound.1.min(rule.value)), + (bound.0.max(rule.value), bound.1), + ), + Ordering::Greater => ( + (bound.0.max(rule.value + 1), bound.1), + (bound.0, bound.1.min(rule.value + 1)), + ), + _ => unreachable!(), + }; + + let mut part2 = 0; + let mut stack = Vec::new(); + stack.push(("in", [(1, 4001), (1, 4001), (1, 4001), (1, 4001)])); + 'outer: while let Some((current, mut bounds)) = stack.pop() { + if current == "A" { + part2 += bounds.iter().map(|(a, b)| (b - a) as u64).product::(); + continue; + } + + if current == "R" { + continue; + } + + let workflow = workflows.get(¤t).context(MALFORMED)?; + + for (rule, dest) in workflow.rules.iter() { + let bound = bounds[rule.property as usize]; + let (send, carry) = split_bound(rule, bound); + if send.0 < send.1 { + let mut new_bounds = bounds; + new_bounds[rule.property as usize] = send; + stack.push((dest, new_bounds)); + } + + if carry.0 < carry.1 { + bounds[rule.property as usize] = carry; + } else { + continue 'outer; + } + } + + stack.push((workflow.default, bounds)); + } + + println!("1) {}", part1); + println!("2) {}", part2); + + Ok(()) +} diff --git a/src/bin/day20.rs b/src/bin/day20.rs new file mode 100644 index 0000000..95fc920 --- /dev/null +++ b/src/bin/day20.rs @@ -0,0 +1,175 @@ +use std::collections::VecDeque; + +use anyhow::{Context, Result}; +use hashbrown::{HashMap, HashSet}; + +#[derive(Clone)] +enum Gate<'a> { + FlipFlop { + high: bool, + }, + Conjugation { + memory: HashSet<&'a str>, + in_count: usize, + }, + Negate, + Broadcast, +} + +fn main() -> Result<()> { + let filename = std::env::args() + .nth(1) + .context("./day20 ")?; + let input = std::fs::read_to_string(filename)?; + + let mut gates: HashMap<&str, Gate> = HashMap::new(); + let mut outs = HashMap::new(); + let mut ins = HashMap::new(); + for line in input.lines() { + let (source, dsts) = line.split_once(" -> ").context("malformed input.")?; + let dsts: Vec<_> = dsts.split(", ").collect(); + let name = source.trim_start_matches(['&', '%']); + + for dst in dsts.iter().copied() { + ins.entry(dst).or_insert(Vec::new()).push(name); + } + outs.insert(name, dsts); + + let gate = match source.chars().next().unwrap() { + '%' => Gate::FlipFlop { high: false }, + '&' => Gate::Conjugation { + memory: HashSet::new(), + in_count: 0, + }, + 'b' => Gate::Broadcast, + _ => unreachable!(), + }; + + gates.insert(name, gate); + } + + for (name, gate) in gates.iter_mut() { + if let Gate::Conjugation { + memory: _, + in_count, + } = gate + { + *in_count = ins[name].len(); + + if *in_count == 1 { + *gate = Gate::Negate; + } + } + } + + let mut counts = [0, 0]; + let mut queue = VecDeque::new(); + for _ in 0..1000 { + queue.push_back(("broadcaster", "button", false)); + + while let Some((dest, source, is_high)) = queue.pop_back() { + counts[is_high as usize] += 1; + + let outs = match outs.get(dest) { + Some(v) => v, + None => { + continue; + } + }; + + if let Some(gate) = gates.get_mut(dest) { + match gate { + Gate::Broadcast => { + for out in outs { + queue.push_back((out, dest, false)); + } + } + Gate::Negate => { + for out in outs { + queue.push_back((out, dest, !is_high)); + } + } + Gate::FlipFlop { high } => { + if !is_high { + *high = !(*high); + for out in outs { + queue.push_back((out, dest, *high)); + } + } + } + Gate::Conjugation { memory, in_count } => { + if is_high { + memory.insert(source); + } else { + memory.remove(source); + } + + let signal = memory.len() < *in_count; + for out in outs { + queue.push_back((out, dest, signal)); + } + } + } + } + } + } + + let part1 = counts[0] * counts[1]; + + // Assumed structure: + // broadcast ----> COUNTER1 ----> NEGATE -----> CONJ ----> rx + // |----------> COUNTER2 ----> NEGATE --------| + // |----------> COUNTER3 ----> NEGATE --------| + // `----------> COUNTER4 ----> NEGATE --------´ + // + // Where Counter: + // IN + // | + // v + // FF <-> Core --> OUT + // | ? ^ + // V | | + // FF ?----´ | + // | | + // v | + // FF--------´ + // + // Counters are assumed to trigger on prime values + // + + + let mut part2 = 1; + for mut root in outs["broadcaster"].iter().copied() { + let core = match &gates[&outs[root][0]] { + Gate::Conjugation { + memory: _, + in_count: _, + } => outs[root][0], + _ => outs[root][1], + }; + + let mut period = 0u64; + let mut exp = 0u64; + + loop { + if outs[root].contains(&core) { + period += 1 << exp; + } + exp += 1; + + root = match outs[root].iter().find(|&&v| v != core) { + Some(v) => v, + None => { + break; + } + }; + } + + part2 *= period; + } + + println!("1) {}", part1); + println!("2) {}", part2); + + Ok(()) +} diff --git a/src/bin/day21.rs b/src/bin/day21.rs new file mode 100644 index 0000000..8c47cd7 --- /dev/null +++ b/src/bin/day21.rs @@ -0,0 +1,160 @@ +use anyhow::{Context, Result}; + +fn bfs(grid: &Vec, height: usize, width: usize, start: (i64, i64)) -> Vec { + let mut distances = vec![u64::MAX; grid.len()]; + distances[start.0 as usize * width + start.1 as usize] = 0; + + let height = height as i64; + let width = width as i64; + + let mut todo = Vec::from([start]); + let mut next = Vec::new(); + let mut distance = 0; + while !todo.is_empty() { + for (x, y) in todo.iter() { + for (dx, dy) in [(1, 0), (-1, 0), (0, 1), (0, -1)] { + let (nx, ny) = (x + dx, y + dy); + if 0 <= nx && nx < height && 0 <= ny && ny < width { + let index = (nx * width + ny) as usize; + if grid[index] != b'#' && distance + 1 < distances[index] { + distances[index] = distance + 1; + next.push((nx, ny)); + } + } + } + } + + todo.clear(); + todo.append(&mut next); + distance += 1; + } + + return distances; +} + +fn repeat_grid(factor: usize, grid: &Vec, height: usize, width: usize) -> Vec { + let mut result = vec![0; height * width * factor * factor]; + + for xf in 0..factor { + for yf in 0..factor { + let base = xf * height * width * factor + yf * width; + for x in 0..height { + for y in 0..width { + result[base + x * width * factor + y] = grid[x * width + y]; + } + } + } + } + return result; +} + +fn main() -> Result<()> { + let filename = std::env::args() + .nth(1) + .context("./day21 ")?; + let input = std::fs::read_to_string(filename)?; + let width = input.lines().next().unwrap().len(); + let grid: Vec<_> = input.lines().flat_map(|line| line.bytes()).collect(); + let height = grid.len() / width; + + let mut start1 = (0, 0); + for x in 0..height { + for y in 0..width { + if grid[x * width + y] == b'S' { + start1 = (x as i64, y as i64); + } + } + } + + let distances = bfs(&grid, height, width, start1); + + let steps_p1 = 64; + let mut part1 = 0; + for x in 0..height { + for y in 0..width { + let distance = distances[x * width + y]; + if distance <= steps_p1 && distance % 2 == steps_p1 % 2 { + part1 += 1; + } + } + } + + let center = (height as i64 / 2, width as i64 / 2); + let scale = 2usize; + let repeats = scale * 2 + 1; + let scale_center = ( + center.0 + (scale * height) as i64, + center.1 + (scale * width) as i64, + ); + let scale_grid = repeat_grid(repeats, &grid, height, width); + + let distances = bfs(&scale_grid, height * repeats, width * repeats, scale_center); + + let mut counts = vec![vec![0; repeats]; repeats]; + let limit = (scale * height + height / 2) as u64; + for qx in 0..repeats { + for qy in 0..repeats { + let base = qx * height * width * repeats + qy * width; + for x in 0..height { + for y in 0..width { + let distance = distances[base + x * width * repeats + y]; + if distance <= limit as u64 && limit as u64 % 2 == distance % 2 { + counts[qx][qy] += 1; + } + } + } + } + } + + let part_2_steps = 26501365; + let part_2_scale: u64 = ((part_2_steps - height / 2) / height) as u64; + + let mut part2 = 0; + + for x in 0..repeats { + for y in 0..repeats { + print!("{: >6} ", counts[x][y]); + } + + println!(); + } + + // ..*#*.. + // .*'o'*. + // *'o+o'* + // #o+o+o# + // *'o+o'* + // .*'o'*. + // ..*#*.. + + // o Even centers + let inner_even_count = ((part_2_scale - 1) | 0x1) * ((part_2_scale - 1) | 0x1); + part2 += inner_even_count * counts[scale][scale]; + + let inner_odd_count = (part_2_scale & (!0x1)) * (part_2_scale & (!0x1)); + // + Odd centers + part2 += inner_odd_count * counts[scale][scale + 1]; + + // # Pointy ends + part2 += counts[0][scale]; + part2 += counts[repeats - 1][scale]; + part2 += counts[scale][0]; + part2 += counts[scale][repeats - 1]; + + // * Outer edges + part2 += part_2_scale * counts[0][scale - 1]; + part2 += part_2_scale * counts[0][scale + 1]; + part2 += part_2_scale * counts[repeats - 1][scale - 1]; + part2 += part_2_scale * counts[repeats - 1][scale + 1]; + + // ' Inner edges + part2 += (part_2_scale - 1) * counts[1][scale - 1]; + part2 += (part_2_scale - 1) * counts[1][scale + 1]; + part2 += (part_2_scale - 1) * counts[repeats - 2][scale - 1]; + part2 += (part_2_scale - 1) * counts[repeats - 2][scale + 1]; + + println!("1) {}", part1); + println!("2) {}", part2); + + Ok(()) +}