diff --git a/aoc/src/dev/ctsk/aoc/Main.scala b/aoc/src/dev/ctsk/aoc/Main.scala index 0da9c12..dc2f561 100644 --- a/aoc/src/dev/ctsk/aoc/Main.scala +++ b/aoc/src/dev/ctsk/aoc/Main.scala @@ -8,7 +8,8 @@ val solvers = Map[Int, Solver]( 3 -> Day03, 4 -> Day04, 5 -> Day05, - 6 -> Day06 + 6 -> Day06, + 7 -> Day07 ) def runSolver(solver: Solver, input: os.Path): Unit = diff --git a/aoc/src/dev/ctsk/aoc/Util.scala b/aoc/src/dev/ctsk/aoc/Util.scala new file mode 100644 index 0000000..a1c25c4 --- /dev/null +++ b/aoc/src/dev/ctsk/aoc/Util.scala @@ -0,0 +1,6 @@ +package dev.ctsk.aoc + +def NAT_REGEX = """(\d+)""".r + +def longs(string: String): Vector[Long] = + NAT_REGEX.findAllIn(string).map(_.toLong).toVector diff --git a/aoc/src/dev/ctsk/aoc/days/Day07.scala b/aoc/src/dev/ctsk/aoc/days/Day07.scala new file mode 100644 index 0000000..6120a59 --- /dev/null +++ b/aoc/src/dev/ctsk/aoc/days/Day07.scala @@ -0,0 +1,39 @@ +package dev.ctsk.aoc.days + +import dev.ctsk.aoc._ + +object Day07 extends Solver(7): + def concat(a: Long, b: Long): Long = + var m: Long = 1 + while m * 10 <= b do m *= 10 + a * (m * 10) + b + + class Searcher(target: Long, nums: Vector[Long], elephants: Boolean): + def search(acc: Long = nums(1), pos: Int = 2): Boolean = + if (pos >= nums.length) acc == target + else if (acc > target) false + else + search(acc + nums(pos), pos + 1) || search(acc * nums(pos), pos + 1) + || (elephants && search(concat(acc, nums(pos)), pos + 1)) + + def run(input: os.ReadablePath): (Timings, Solution) = + val (pre_time, in) = timed { os.read.lines(input).map(longs).toVector } + + val (p1_time, p1_solution) = timed { + in + .filter(nums => Searcher(nums(0), nums, false).search()) + .map(_.head) + .sum + } + + val (p2_time, p2_solution) = timed { + in + .filter(nums => Searcher(nums(0), nums, true).search()) + .map(_.head) + .sum + } + + ( + Timings(pre_time, p1_time, p2_time), + Solution(Long.box(p1_solution), Long.box(p2_solution)) + ) diff --git a/data/07.ans b/data/07.ans new file mode 100644 index 0000000..84b8437 --- /dev/null +++ b/data/07.ans @@ -0,0 +1,2 @@ +1430271835320 +456565678667482 diff --git a/data/07.in b/data/07.in new file mode 100644 index 0000000..3be04d7 --- /dev/null +++ b/data/07.in @@ -0,0 +1,850 @@ +3240922: 256 6 83 6 8 2 76 2 2 +4781829: 3 1 471 3 23 80 49 556 +185303830: 72 646 498 8 15 7 +4396909609: 594 17 67 1 6 9 74 845 +51395424: 611 9 7 24 85 579 348 +8080451: 230 83 4 350 1 +51187716609: 213 67 7 88 8 619 827 +149: 16 3 2 66 45 +36764030: 8 6 14 686 94 8 7 36 2 +90: 77 8 1 1 1 2 +579799: 58 6 4 946 86 9 73 +1711: 40 4 4 73 998 +4629997428: 799 378 73 8 21 +55138352: 4 9 24 1 94 9 292 34 6 6 +12784: 965 95 4 3 4 4 +166306618368: 936 1 5 792 3 86 2 8 9 6 +57804175: 231 59 876 5 481 +3383139751778: 1 92 9 761 6 2 5 6 1 778 +282539018188: 84 299 4 365 5 51 837 +116348400: 4 31 8 3 7 95 3 4 9 6 1 2 +350064: 7 4 8 21 48 770 68 6 +26848040198: 2 7 63 76 885 8 99 74 7 +506811072174: 1 6 9 2 9 184 8 6 85 9 8 1 +50430798783: 6 6 7 9 9 3 93 171 5 3 7 9 +9245211: 88 79 80 692 91 +5112: 839 5 1 7 6 +24786163: 740 2 965 33 6 163 +41507809: 117 9 83 567 1 7 +395795: 94 79 414 4 7 5 +103220542: 5 3 2 8 8 32 8 5 6 9 30 9 +6607912951: 6 67 228 617 397 +4842305966: 4 567 971 325 21 23 2 +210648864274: 6 8 36 30 8 239 4 3 274 +40421763628632: 364 5 8 6 37 3 628 635 +22257: 77 328 13 2 53 +6186110889: 2 92 71 5 980 63 1 483 +152540: 44 3 16 518 58 +8020356: 474 5 881 125 19 +147723: 2 29 3 849 +436636368: 51 97 397 655 84 +88373874: 1 9 35 96 25 8 365 74 +4377820491: 28 796 5 4 2 16 38 91 +114504: 3 6 8 734 6 +3739374: 759 8 4 9 75 855 63 1 8 +2859367: 42 80 1 851 7 +3017779: 397 38 2 24 555 +112867776: 4 4 558 98 129 +1627098747: 4 8 5 11 8 9 8 648 2 4 9 3 +1722017: 3 5 6 36 9 3 1 37 2 9 45 2 +7263: 259 6 65 22 3 +1119901426: 5 580 70 581 2 8 649 6 +296493: 6 90 2 42 9 8 4 50 1 81 6 +11619105439: 7 64 2 8 296 6 76 23 +99815364: 5 3 422 73 3 9 6 6 2 2 6 3 +3354: 35 3 55 36 6 +53583: 1 9 8 491 555 +415463030: 5 9 15 7 141 30 30 +2175040: 5 44 2 2 8 9 317 6 7 2 5 8 +3609508: 7 11 4 84 5 79 2 +7393: 620 9 9 818 20 5 6 7 +311202: 936 4 98 9 9 +40694678: 3 764 7 61 775 848 6 +51242352: 914 91 9 6 35 8 8 7 +27945216600: 931 2 60 8 26 1 1 5 24 +116395: 20 831 7 54 1 +8481174364: 84 811 739 4 64 +105596926: 836 554 6 38 94 +4661761090: 582 72 8 2 2 4 5 5 6 7 5 1 +452569: 7 67 862 340 29 +25265: 28 145 70 5 75 6 5 +601311600: 40 20 9 60 277 +220549392: 1 23 252 63 604 +8819510: 24 334 6 371 86 7 5 +26645751: 9 9 148 57 51 +940551780: 6 92 384 75 346 1 930 +8938951: 4 7 164 55 7 905 1 8 2 6 +38570960: 6 40 237 5 80 6 4 955 5 +7599410: 2 835 6 4 67 +1780: 1 2 406 486 1 1 481 +22879250: 3 6 210 2 115 865 +167089216: 77 92 21 3 35 21 49 64 +225191202: 4 9 9 18 1 2 1 1 6 9 244 8 +2647323: 38 90 1 86 27 9 +7820: 79 6 23 4 +60151: 2 4 623 8 1 1 69 2 6 197 +6381: 69 6 5 1 9 3 6 115 9 2 3 9 +999963: 1 82 28 9 886 77 +8187831: 7 8 162 3 60 45 3 66 3 9 +1066338: 135 9 82 9 168 9 5 3 1 9 +13431313: 8 4 4 7 1 308 9 4 7 53 +4888422: 5 49 475 16 42 +40483869182: 70 7 918 9 4 3 62 1 82 +148617: 30 75 3 5 22 7 +1706: 26 8 2 8 456 9 5 797 7 8 +404411: 206 305 8 79 89 1 +73904332: 923 80 63 1 33 2 +222360: 32 333 42 1 545 +455431: 7 88 2 4 78 8 57 +833: 5 9 62 487 3 264 3 1 +11652001507: 770 5 8 5 72 25 5 502 3 +112387: 4 4 8 1 9 8 32 2 6 1 1 601 +568992114: 6 942 31 590 429 6 +449890: 3 3 9 908 8 1 71 64 78 7 +6431892: 9 5 2 3 7 879 7 7 9 346 1 +47177856: 9 1 9 37 1 4 940 544 22 +12512667: 1 4 73 75 721 914 7 +111681944: 282 396 1 57 41 44 +3836539035: 57 36 910 21 735 +209051443965: 549 9 9 574 6 5 65 3 1 7 +12432: 789 2 464 30 6 +1893052: 1 61 227 697 7 +75516636: 5 258 500 53 796 116 +7198107126: 899 76 327 12 8 6 +324356: 4 2 22 18 12 8 62 960 4 +1651812: 76 472 1 3 1 829 5 9 42 +2986566: 97 6 2 51 2 3 +2213348: 1 410 4 6 1 4 6 3 1 3 74 8 +713349465: 63 804 4 63 13 465 +317513: 29 489 44 7 792 13 67 +1705056857: 9 5 66 45 9 3 1 684 1 8 6 +109631599: 9 27 88 564 408 5 72 7 +4524000: 720 7 527 84 4 160 5 +170710: 958 891 43 9 43 10 +950453: 7 87 2 1 7 7 8 7 52 691 6 +11497532: 73 3 525 3 2 +14004606: 81 7 7 196 4 105 9 6 2 +14435: 18 97 46 8 99 +2587924: 3 1 837 8 8 2 384 532 +52827036: 97 6 47 541 9 +17555: 256 4 960 372 916 7 +12560: 484 5 91 1 5 +439274: 827 58 496 9 305 +829089344333: 987 1 84 9 34 433 3 +120971158: 21 2 6 8 172 6 2 4 9 766 +1454786: 209 91 169 62 5 88 7 +955240: 747 23 86 101 55 +52113349: 9 4 4 73 289 46 1 1 408 +358844792: 460 646 1 1 779 +3641: 289 8 741 2 +13213623: 317 8 52 264 22 +83270: 9 9 34 8 9 5 928 1 906 2 +1965: 36 28 122 31 75 729 +2001540608: 9 29 6 2 3 17 4 458 688 +283932217: 283 930 49 172 7 +55776554516: 22 13 347 9 75 7 20 9 4 +156858658339: 2 7 3 4 9 85 862 3 834 2 +122078: 941 5 2 8 834 22 +1747653839996: 191 915 3 839 999 +1323: 5 83 9 35 859 5 +99171744: 80 62 7 4 56 51 +558: 36 14 54 +205597: 685 3 97 +106153647: 4 4 9 3 2 91 9 9 4 864 6 9 +6485019068: 2 4 47 3 2 561 7 9 2 4 61 +4232: 84 38 62 23 +26576163856: 1 755 80 37 24 44 +479050: 6 83 36 7 9 871 +1439650999: 1 3 9 6 79 860 25 9 90 9 +2071304352: 980 20 279 8 9 928 +88640: 196 912 20 4 +707827: 45 5 85 5 37 1 9 8 +446247: 55 695 595 1 +27533085: 7 2 4 13 6 423 3 89 8 7 3 +1197659: 2 90 95 70 659 +3404211: 14 81 737 3 +22210: 6 10 370 8 2 +47275323: 7 87 33 6 5 508 843 +17040242236: 8 1 3 84 196 5 2 7 8 3 6 +67472505: 52 9 3 640 8 8 94 6 4 3 3 +106090934: 7 3 5 5 6 9 3 2 476 5 22 2 +60501: 23 6 1 519 9 56 81 1 1 +12560: 8 2 785 +6397313: 7 9 7 64 4 4 6 572 8 8 1 +10576368040663: 464 3 84 985 25 8 911 +55739: 324 16 781 54 9 2 47 +5354536482085: 5 3 120 4 8 6 77 3 54 1 7 +719328: 42 18 6 118 8 +5209255: 514 6 91 1 55 +35104400: 6 20 29 80 5 589 +992101552532: 177 16 7 6 939 1 66 8 4 +2648300: 645 799 917 2 4 +3048437: 48 962 11 2 6 293 516 +1963982: 480 99 76 306 41 +21: 9 7 5 +1571724093: 98 25 18 396 9 4 89 +107152643: 5 2 715 25 51 3 89 +93706: 800 570 8 68 2 +504494: 7 3 608 63 26 1 1 9 5 79 +2773798: 2 782 60 61 28 6 +33250535: 2 175 95 1 99 337 +56621021: 2 1 4 7 7 1 504 52 55 1 4 +45618793: 4 20 432 179 8 93 +8502445733: 59 12 4 1 1 3 444 1 7 33 +194395: 388 499 684 99 +21285718: 779 8 694 1 1 664 9 3 +496128467526: 984 323 5 53 8 8 63 8 6 +155022: 34 7 339 499 3 6 6 8 30 +3737283012: 864 4 6 5 4 703 6 7 4 4 9 +131594: 15 12 404 3 56 6 4 82 +3035928: 9 4 746 3 300 7 7 51 8 +134436: 99 6 91 2 6 359 6 5 6 +57187572390828: 8 459 7 676 390 828 +59144157078: 351 11 8 587 466 7 6 +1322895: 5 774 68 15 603 903 +16108056803: 7 2 4 7 603 5 8 5 16 530 +20155: 4 67 91 3 690 82 +3308929647: 47 9 54 2 3 69 3 50 +1719: 8 9 1 500 3 +384: 8 70 306 +1547960154: 9 8 595 6 26 1 981 1 32 +881783: 26 1 4 5 7 2 806 1 9 3 6 +39740: 7 33 1 72 32 8 231 4 +4248270589: 7 2 4 39 11 1 7 53 3 5 8 9 +2831: 48 1 57 1 38 1 +1740: 42 80 99 69 6 +1463042528: 7 306 9 2 42 481 47 +6518232: 692 75 20 753 9 5 63 9 +295: 19 1 4 6 49 +12600: 95 5 7 3 129 8 +18941825816881: 3 7 9 412 6 2 5 8 16 88 1 +10906: 4 8 8 5 2 481 971 3 7 +23569563: 9 9 620 981 2 3 647 +563162984: 41 453 190 37 2 6 64 4 +8779552: 81 6 613 52 127 3 55 +670151107604: 98 992 2 972 6 591 20 +46058: 8 357 68 908 3 4 74 +23352233001: 546 966 55 5 805 76 +2598992457: 9 67 54 4 133 376 6 57 +6041811: 8 8 1 3 4 8 12 874 3 723 +546092: 2 8 195 9 2 +112521276: 6 6 3 7 50 315 9 4 6 6 2 7 +123165126274: 68 3 1 2 5 3 209 1 6 81 6 +183841440: 512 15 85 804 80 3 +92972296: 8 77 6 2 6 688 9 2 59 96 +12917242: 893 20 786 3 9 9 6 1 8 2 +19870855592: 8 7 323 7 1 2 8 9 55 7 7 +19093: 188 78 9 38 61 +42220695615: 71 54 2 247 4 1 6 9 553 +408850045524: 77 387 48 7 79 343 4 4 +193249318320: 3 48 2 1 326 4 830 51 +1559778746: 1 733 9 70 8 746 2 +5978523468: 4 850 7 522 679 789 +57475: 3 598 32 63 4 +82199776: 84 2 2 24 8 9 637 3 4 2 8 +3684: 3 6 2 6 4 +2133774: 498 7 34 19 18 +223090269: 9 3 1 5 9 4 5 115 124 7 2 +3230835: 354 608 75 82 15 +152071519611: 36 4 8 3 525 81 2 34 1 2 +400642248: 353 3 9 84 3 5 1 3 +1319052: 45 345 561 82 +214120: 2 7 765 756 8 2 +1525: 786 313 10 382 10 24 +168952128: 15 6 2 3 6 1 9 4 3 63 49 8 +12600: 86 418 25 +4753664: 938 52 2 599 8 +183144217197: 8 78 2 128 19 450 56 +177156107: 725 4 184 83 4 907 +907988: 5 38 9 1 848 2 734 30 +34005187376: 425 8 5 186 82 7 549 +48458919: 376 520 54 74 919 +232708: 7 517 6 64 1 708 +9889376521: 988 93 7 5 779 6 3 733 +356266: 5 7 5 606 74 583 +2717: 6 4 78 237 2 +15624: 3 9 7 60 9 8 100 73 221 +177529338: 4 717 619 93 44 +709294260: 40 7 5 2 4 4 3 5 4 5 524 3 +33208: 92 45 1 10 8 +947417877: 52 9 52 53 243 651 +465478112: 12 2 590 3 6 66 9 2 83 2 +21882695057: 6 2 5 367 2 183 63 2 +4329385230214: 8 908 2 972 604 1 5 4 6 +408039258: 15 4 7 46 80 3 9 8 6 11 +8156: 8 15 6 +1912903905: 76 516 5 344 431 6 5 +605236611: 8 7 6 11 7 3 9 4 15 2 9 3 +164820: 223 61 63 69 12 +777761919: 9 1 6 3 3 2 5 986 1 6 1 27 +63644912: 952 77 359 864 80 +249992724: 513 564 11 18 7 8 5 6 6 +108534: 9 95 3 988 69 477 +510545: 4 1 254 67 6 5 +3010875466: 3 747 9 7 594 2 6 7 4 +849: 4 772 19 16 38 +14295764555: 327 9 33 3 7 291 7 8 79 +22155: 621 5 7 7 5 +764: 5 9 34 664 7 +33936: 87 1 8 6 18 8 +22969: 756 7 5 6 79 +455349313: 4 80 42 485 92 6 6 +26289: 4 73 90 5 2 +1449447323: 9 6 54 5 6 638 7 7 14 9 +7079478539: 393 314 947 85 40 +107875040: 956 62 5 1 364 +80556: 6 821 84 416 734 6 +3780000: 68 3 8 99 2 29 9 270 4 +31828005: 7 9 5 350 366 844 5 5 +468: 77 6 6 +6153: 3 3 153 +445144: 43 165 273 35 16 60 4 +24330378244: 544 1 783 1 68 84 4 +12948699481: 38 426 2 624 9 6 60 1 +12715: 207 9 22 53 45 56 +816252255180: 473 3 1 913 2 7 9 1 5 3 1 +7721: 1 12 555 275 786 +34738898530: 9 7 7 7 9 7 73 9 97 9 70 +1119853: 67 896 9 6 12 16 22 87 +204771350237: 7 1 294 733 8 45 383 +847061: 5 75 94 6 24 99 818 +340774: 370 1 84 6 9 70 +1315650: 30 7 1 35 179 +65059: 87 614 924 1 1 3 1 4 +119439888: 962 134 123 443 2 +3013933: 556 6 956 78 9 949 +1712980: 901 5 82 4 21 58 82 +1197932383: 72 69 2 274 88 +1240: 354 45 6 8 7 38 9 767 6 +5482453790475: 6 8 4 9 3 713 196 2 7 5 9 +623463848: 869 6 783 910 98 +1029: 93 9 3 2 4 +111457: 856 3 4 129 130 +2541440: 8 3 6 1 6 1 26 3 1 4 440 +28407083811: 239 424 757 94 566 7 +2986462: 3 732 3 2 2 8 446 +1716392396: 85 2 777 1 89 73 971 2 +7030: 31 9 24 136 198 +10958979: 931 8 27 9 4 3 6 4 6 6 1 2 +2154511: 2 29 2 99 5 23 157 +353801856: 32 647 89 35 27 192 +6055043734: 33 1 9 58 5 5 6 97 304 7 +97551305: 2 3 5 22 618 287 5 +7752834: 764 4 56 47 625 11 23 +8017779: 6 3 777 427 +1634: 944 613 9 62 6 +4943080: 857 654 399 647 4 +2088456: 7 563 11 72 519 +62000: 4 701 553 843 999 4 5 +1341: 2 6 36 909 +2833918: 2 2 75 168 15 4 20 54 +3572208: 826 4 5 9 48 +829269132: 7 6 97 3 82 4 8 53 1 32 +65065129238: 5 896 2 681 9 4 1 5 9 5 8 +1573: 68 4 8 83 5 8 6 3 203 17 +445398583: 8 2 2 33 7 6 992 1 90 2 3 +4070556556: 8 848 26 6 55 9 +4733412: 194 8 7 298 424 724 +3000986447: 75 40 891 2 93 4 4 7 +186912: 556 91 2 8 36 +68909: 17 2 4 95 7 7 +544353645: 165 406 8 272 7 9 5 +3991: 499 5 6 967 1 +648: 71 8 1 76 3 +225402: 3 6 1 8 4 446 4 8 1 91 6 +57123: 163 35 6 31 36 +113: 1 5 17 3 8 +23556642: 314 4 7 30 2 1 994 642 +10486: 1 3 4 2 98 7 +180390: 4 6 8 8 1 178 5 7 6 4 921 +8605146: 6 9 4 9 8 5 5 45 57 3 541 +17616456: 402 6 62 8 57 11 78 59 +176424: 3 860 17 31 6 2 1 +384655: 1 94 808 5 855 +30262: 73 29 39 862 1 2 81 +177915546: 778 9 1 6 9 2 254 1 737 +11360958: 98 74 87 233 1 3 8 5 6 6 +96296769: 60 15 2 659 2 5 1 8 3 3 9 +42275: 3 34 2 15 95 5 +139: 7 7 8 82 1 +925: 613 6 71 9 95 82 49 +312832: 13 8 3 35 5 2 41 3 +576900656: 4 3 941 8 50 6 656 +95919151932: 61 898 19 120 31 932 +94848596: 5 8 6 5 2 394 78 592 3 1 +15668345980: 41 7 970 263 214 +18489900: 4 6 85 7 2 4 33 7 22 6 5 +9308198312: 1 9 1 9 20 8 5 8 9 4 695 8 +23946624: 1 6 7 99 6 3 1 234 832 +2638191: 3 550 90 53 9 372 +19588249: 83 236 240 8 1 +638513427: 2 60 9 9 513 427 +1216718: 9 163 8 64 3 969 7 1 9 +222109: 22 1 3 78 729 +4733783: 95 2 680 544 98 3 +8356663: 8 8 806 3 54 55 +354352601687: 8 4 9 186 9 9 1 4 236 5 7 +2878: 1 63 1 6 6 5 1 3 7 7 140 1 +1262211174: 7 95 28 52 70 567 +1899: 2 7 8 8 883 986 +845283: 6 42 335 4 5 9 8 3 +152: 3 4 4 4 2 +2009491: 591 34 91 +12627321994: 1 802 8 7 1 771 1 994 +38022583: 4 75 7 44 9 9 20 5 7 7 6 +275043600458: 2 716 4 7 6 4 675 3 5 3 5 +334234846: 172 286 97 2 6 +10136940081840: 650 1 769 3 3 767 880 +455076: 332 24 71 6 18 +902: 19 29 53 19 279 +169: 2 36 97 +195391386: 74 4 474 9 6 7 2 6 8 87 9 +2114: 510 940 7 640 19 +14445848: 97 6 37 55 4 95 736 +123370: 72 5 546 198 16 +55503552: 3 3 12 803 8 1 5 3 2 8 8 +525816: 9 8 527 3 6 +241150070: 1 5 8 5 8 37 1 9 5 49 941 +149304064: 5 2 4 4 3 4 26 4 58 8 26 +27050: 56 135 5 6 23 2 +7856120149: 8 72 1 9 9 195 6 49 +27763005: 454 49 8 3 52 +50731: 157 562 10 4 85 62 6 9 +127589897: 85 482 708 89 897 +143720: 1 84 58 658 62 +2781830: 556 261 81 24 5 +15891692: 39 7 5 905 7 8 4 2 4 8 +378529376: 63 457 673 727 105 +8556592: 107 9 66 868 88 +8199886: 9 8 6 186 9 2 2 6 5 18 1 3 +142099: 98 144 1 4 965 +9721098229: 8 9 5 5 54 5 6 4 85 822 6 +3817254485: 7 9 1 2 5 267 4 4 222 5 +408599747716: 417 36 44 979 95 5 16 +55794762211: 867 725 643 447 11 +10839344: 97 986 9 319 25 +2231247: 620 11 6 814 1 4 73 75 +261299012: 1 653 247 53 4 +18110146987: 371 1 488 46 6 987 +99971: 8 40 449 13 1 +298713002449: 3 36 27 495 867 661 3 +238033532: 237 945 3 882 32 +10556: 99 8 9 9 8 5 258 5 9 6 2 +524481: 9 515 481 +2276999438: 8 8 9 5 3 756 96 3 3 7 2 +44941674: 2 3 4 4 7 76 7 1 431 1 8 3 +49317: 2 3 8 6 4 3 889 2 1 44 37 +480984715: 9 7 3 8 226 3 6 2 7 2 7 15 +25589960: 96 55 840 2 44 95 +6873212: 31 1 221 8 5 2 32 +986172: 8 15 168 3 170 +430428157: 430 359 69 154 3 +65733: 5 42 87 676 81 8 62 53 +42642235: 52 74 416 175 9 476 +40868100: 3 773 9 7 65 7 2 4 75 1 7 +603298736: 2 1 1 43 49 11 4 8 34 7 9 +2983206: 4 847 6 51 8 3 87 842 +20877362: 9 8 5 7 494 40 903 2 +31364: 32 98 6 +37943222606: 63 61 1 9 84 1 34 709 +206643072: 81 3 7 9 9 4 444 6 4 8 6 4 +43636126068: 18 202 33 6 8 3 4 5 69 +21341959: 8 6 45 4 941 3 3 5 2 8 3 7 +2440764: 4 5 2 37 78 2 7 5 4 9 449 +5537: 6 919 9 6 8 +36738: 4 7 8 729 7 +67127: 5 671 1 2 7 +12: 6 1 2 +332334874: 9 9 400 666 874 +66677: 90 729 5 932 90 40 +2464753: 35 15 97 131 293 8 6 1 +11091442110: 3 210 4 7 7 177 7 705 +382211: 4 97 3 4 8 64 +6269: 80 78 29 +21082627056485: 739 7 413 285 64 88 +1375909900: 410 1 497 7 8 2 1 6 844 +27565274880: 297 528 1 1 522 640 +15680994: 3 9 4 76 4 89 9 94 +252648: 6 39 4 21 264 +207180: 9 2 8 4 27 3 169 376 4 +631098808: 4 611 216 1 6 754 808 +12874752: 2 2 6 8 14 922 2 528 3 4 +28433: 4 687 94 7 6 +170688807219: 948 2 7 1 6 4 1 4 5 5 73 3 +25564711968: 53 9 1 2 464 69 837 +14176365: 622 1 1 37 615 +1087250: 6 89 8 92 3 83 599 7 2 6 +5226130: 17 563 6 44 9 329 3 +8856: 1 1 207 1 8 41 +46932: 7 7 3 8 4 1 11 4 23 2 2 3 +1276683: 72 42 522 9 4 6 819 4 3 +87938458114: 4 930 7 4 8 7 42 6 3 8 5 5 +269458560: 65 98 6 3 8 8 5 287 +57646: 9 567 46 +48882363: 747 14 793 9 4 81 +156800964917: 3 10 418 350 964 917 +11781: 5 1 6 9 4 91 980 8 41 2 2 +8548714: 683 5 25 90 7 15 1 4 +34195857433: 1 341 95 857 433 +49555840: 6 145 712 8 80 +44079: 87 8 56 625 32 12 1 1 2 +8413057884: 458 994 440 22 42 +110858: 1 9 712 7 2 5 882 104 8 +236698619898188: 83 4 9 9 8 50 62 79 1 88 +460385: 1 8 44 867 7 79 1 5 +4418270730: 4 9 18 23 166 75 878 6 +67213: 841 8 78 39 952 +385816: 3 828 8 90 2 198 8 28 +93881308: 50 88 96 7 4 121 8 1 88 +33589984: 876 7 2 383 471 4 +176936: 8 6 8 5 741 136 +12875: 5 9 5 9 4 7 31 9 9 147 6 5 +12232620: 50 5 4 6 5 1 6 5 13 9 9 5 +329919079975: 61 3 2 169 3 6 901 75 +193235224: 379 19 8 91 7 +155328: 149 653 7 4 8 6 +36967: 2 2 4 6 7 3 44 597 8 4 8 7 +65955: 61 148 315 22 98 +2811281831: 8 66 345 74 511 +7376: 64 68 908 +3609: 2 4 10 6 9 +1288605: 209 8 6 48 5 951 +20371644924: 4 5 5 929 11 23 8 5 3 +591: 57 55 35 4 3 +4766235: 3 67 596 7 1 546 915 +2594601: 45 9 1 4 9 8 41 8 92 8 +4606: 5 453 1 7 8 +43871524233198: 979 2 8 6 7 8 4 23 3 19 8 +15505891709: 1 5 5 664 28 5 521 7 77 +917: 4 25 16 704 97 +24252714: 2 6 8 1 6 89 1 753 8 8 7 6 +10821339: 2 654 95 857 9 +1726956: 1 978 882 2 +446810: 812 83 87 91 5 +35291: 636 9 6 939 8 +6094: 3 2 24 2 1 3 8 215 7 1 51 +30503902271525: 6 5 503 9 5 2 22 715 2 8 +11930387478: 6 355 8 62 279 7 478 +2627928: 45 195 12 4 6 3 76 +21034853780: 233 6 9 3 8 92 3 77 780 +90548137: 236 6 23 4 83 8 1 49 1 7 +1413: 60 4 2 5 203 +634246200: 3 10 63 340 987 +83865602: 5 2 8 34 2 5 4 4 9 160 7 2 +758333016: 6 35 94 14 7 3 8 7 7 +630205: 185 6 655 936 5 +14289: 33 1 7 60 9 +3329920: 1 87 473 40 2 +4136648: 4 13 665 1 +3948306410635: 3 927 21 306 410 635 +1048233: 1 8 382 8 57 +1458: 2 891 4 8 421 9 67 49 7 +1636231872: 29 659 6 473 838 +20691044705019: 9 2 8 815 84 884 2 7 4 9 +8835966: 5 34 2 8 8 857 6 1 2 6 7 6 +356400253174: 6 8 9 825 15 8 1 22 174 +26469: 2 5 540 7 9 +225297: 4 3 49 24 368 81 1 +2668: 4 4 650 4 4 +484139630: 480 1 2 2 9 3 96 30 +7099676410310: 7 47 3 343 58 98 95 +1019402861: 1 88 9 7 3 1 67 5 67 861 +617322420: 304 7 36 4 334 5 58 +781895: 7 8 516 41 1 1 31 6 9 5 +26017029657: 5 52 158 3 9 291 9 46 8 +187360: 66 6 314 1 811 8 +7681: 844 9 1 1 83 +15104247: 35 4 49 13 3 77 79 +663129363: 1 2 6 7 35 129 4 786 6 4 +324737: 1 9 8 272 361 6 931 2 5 +22853568: 71 5 2 4 4 1 362 4 68 52 +764449: 78 98 49 +32185023: 2 4 575 597 4 4 5 2 9 33 +261588496: 38 1 862 867 2 778 +496800: 508 1 930 1 345 +408: 2 1 93 6 4 +499838805: 4 9 911 5 705 18 805 +221260: 3 5 4 3 22 659 94 7 230 +20166689766943: 60 6 11 8 6 8 6 7 8 694 3 +1536: 9 181 1 8 8 8 +19758946: 1 484 485 84 45 +14280: 29 72 866 818 4 2 +2145600: 52 26 334 35 5 960 1 1 +207872626799: 933 557 56 70 40 +12902400: 210 80 16 1 48 +1892679164: 1 189 2 679 162 +68800092: 6 3 80 3 7 3 65 +110: 11 14 85 +37000: 30 7 86 2 880 +124160173238: 2 608 407 476 36 +20446289: 117 9 2 230 38 5 137 +24726218: 4 99 8 18 3 21 723 74 +8674082462: 1 3 2 6 737 816 2 4 5 8 5 +24056850: 2 652 7 5 734 5 +40048062647: 4 5 5 4 472 8 61 1 4 2 47 +8183110518751: 49 201 77 9 828 8 8 3 7 +2931: 3 1 2 80 4 2 6 6 3 5 808 3 +575029629: 89 7 923 5 76 53 +139144: 34 37 288 9 4 +303299: 9 351 4 7 30 4 4 885 6 +413032933098: 4 80 27 860 73 30 98 +28651637: 3 6 7 3 66 51 8 6 38 9 8 +4371578: 9 541 2 458 242 642 +9489820950: 414 5 9 6 693 8 4 355 9 +41886: 221 97 30 5 2 3 4 1 6 +5866443: 5 814 6 518 43 +265613: 45 65 7 9 27 61 82 4 29 +1226636: 14 34 28 5 92 +13802162457: 326 3 669 2 4 39 3 1 9 3 +132435472: 6 9 4 248 47 598 +21650: 1 6 4 1 48 750 5 3 7 8 10 +296410818: 83 113 28 40 833 786 +22359: 37 579 5 4 6 4 900 17 +449129634: 1 3 28 445 38 2 3 1 31 +239: 3 27 5 8 9 72 +2922740921: 4 5 9 9 66 87 9 79 7 2 8 9 +5834400: 2 388 68 4 55 +2564: 42 61 2 1 +721703: 35 3 5 89 1 13 63 85 9 7 +4687: 3 7 458 9 98 +448519503: 615 5 4 17 5 11 39 1 2 +8022: 32 44 4 2 5 +164334333035: 412 49 493 22 37 1 6 +851904: 47 39 951 9 34 +383934: 566 2 61 4 61 +1660902076262: 692 4 17 20 3 762 60 2 +3022: 3 10 97 9 72 31 +52497: 40 9 115 92 5 +250624: 3 916 64 +919152: 918 4 1 29 724 +298566832673: 38 81 97 832 674 +9601: 8 4 276 530 3 6 220 2 8 +1220415: 32 810 52 65 5 21 +47290143: 4 75 9 5 51 4 87 6 15 5 +2924959312: 305 959 9 253 59 +3511836: 3 8 1 225 7 2 854 8 188 +24731293: 953 6 2 6 75 7 9 8 5 4 9 +186921: 73 2 757 207 +12622: 48 9 220 82 +5099353: 869 1 8 5 5 8 8 2 8 89 8 1 +5374004: 34 2 21 4 1 65 1 4 6 75 5 +25507440: 8 50 3 743 9 +1531956: 9 326 87 6 4 7 8 5 384 +100407: 5 9 8 842 4 37 92 9 9 7 3 +11815095: 3 47 1 4 34 95 +546574583: 63 555 14 86 5 374 +56789271: 9 97 73 4 9 27 2 3 9 11 +922332: 7 5 337 241 5 85 9 303 +8951: 99 459 8 2 23 +44833500: 228 1 477 117 410 +15619868: 64 53 267 7 5 8 10 +27837018: 8 9 3 1 8 863 16 1 9 9 7 2 +29988083337: 49 970 9 4 7 31 7 84 6 6 +3882750097665: 167 5 75 620 9 76 65 +136114788: 133 413 59 7 7 72 6 +7107373: 49 19 84 339 7 +37004: 2 979 2 208 6 5 +532545780: 58 7 13 42 5 45 77 3 7 +382484592: 882 951 114 4 +80040: 14 5 89 92 5 8 450 62 +366200: 1 2 1 72 57 342 90 9 9 1 +85170961: 84 1 73 82 472 6 28 45 +121824: 7 73 1 738 2 17 96 +227158: 5 4 6 32 6 9 2 4 8 7 8 106 +131095569: 32 1 6 1 4 4 3 5 88 2 3 33 +10194609: 30 4 6 2 51 7 26 3 2 1 7 1 +26991869: 3 2 1 508 7 2 6 7 8 838 +209499770024: 5 64 87 501 35 43 5 +5499: 6 9 31 62 6 +504783997: 504 7 83 829 169 +74468820: 958 6 83 62 2 465 +53087400: 7 2 966 258 725 +11104: 3 716 44 5 53 82 1 6 3 +1341837369: 6 938 8 405 70 19 24 9 +20321309: 3 3 7 140 6 6 64 9 4 9 7 +704762544: 61 56 460 424 6 +8145: 2 23 8 7 1 3 371 1 10 1 +1575: 71 4 3 4 2 872 79 +3837597: 68 21 19 85 141 +2697369: 260 6 3 73 4 1 6 3 9 7 4 +350742714: 16 2 856 2 84 1 671 7 4 +24882336093: 9 57 8 880 62 2 31 1 3 +5260: 6 4 43 20 5 +84760: 684 834 60 4 48 52 +32195501: 64 125 3 74 3 8 3 17 +9773075972: 725 35 7 401 12 1 53 4 +2263: 8 23 72 31 1 +319336: 319 249 86 +596229888: 7 4 85 1 454 6 5 4 8 3 32 +777296: 25 8 769 6 962 +3630504993: 74 5 2 270 5 9 14 6 6 6 6 +1167712814: 7 8 2 7 7 13 3 1 3 164 7 7 +59925338900: 3 2 392 3 8 378 1 2 490 +1143664016358: 9 129 6 98 401 636 1 +451243440: 25 5 61 9 728 586 930 +96979: 371 855 1 66 75 4 +32592: 637 51 1 97 7 +281215: 3 79 5 7 98 17 9 15 +1240533200: 609 97 42 40 5 +177223221: 5 822 880 7 7 4 1 6 6 5 +669480: 10 2 74 74 1 430 1 829 +16395: 859 11 6 3 8 6 721 +230642792: 8 541 7 3 9 73 95 1 93 +2653946354772: 1 57 94 3 5 65 29 4 318 +7203575: 6 72 6 9 185 733 49 +23585069: 9 2 3 593 26 59 2 7 4 6 5 +1875280072: 872 54 675 8 59 +361349: 6 930 4 13 988 +8801598: 5 415 70 8 480 7 99 2 +717: 41 3 7 3 8 398 +12118286: 91 30 1 828 6 +116973878000: 30 48 56 500 812 +2535626817: 61 90 6 491 81 19 3 +2385: 394 2 7 3 +109572: 8 9 8 4 6 2 390 8 8 65 4 +81224908677: 4 468 7 20 5 79 363 +36103148: 390 9 30 754 407 4 +3863889: 5 25 412 98 98 89 42 +7158760: 94 7 9 65 1 25 6 5 10 +93759996960: 91 858 47 5 6 7 730 +786357: 78 50 64 56 2 2 8 7 99 +2038622: 753 66 41 997 7 +373685: 781 18 2 616 5 1 8 13 +15591: 47 43 74 93 339 +105251390157: 1 92 7 7 7 982 4 4 8 210 +3725159: 8 992 8 3 1 2 4 85 607 +36406960: 789 4 4 571 80 +408622: 64 304 7 3 46 +2478: 1 42 59 +1199435490: 5 65 61 14 14 4 6 605 +104684: 1 10 89 4 681 +150774920: 7 4 6 6 9 1 4 58 5 83 440 +338745: 45 57 66 14 2 90 47 +35057: 333 8 9 57 +2065336: 1 516 211 4 492 +12994083: 4 95 7 4 7 9 676 7 4 2 5 +59094735045: 8 873 3 4 1 4 6 555 4 7 +317202: 85 690 49 928 747 8 2 +40708711: 22 4 1 6 9 459 1 +32694300: 319 71 723 195 84 21 +253046610: 6 3 2 3 307 6 636 3 1 4 2 +114748: 72 398 1 29 1 4 +23317289089: 9 420 97 26 49 4 5 88 +450512522712: 1 5 528 39 1 2 1 632 8 9 +10228512: 8 64 961 248 28 +64514: 85 5 3 8 2 9 2 104 7 6 4 2 +34: 3 4 4 4 2 +27328: 1 28 216 112 1 +1281329910: 79 2 3 4 595 699 35 6 +375758: 8 281 13 59 +312352: 77 425 7 22 780 4 +19811: 6 9 73 6 1 3 7 3 5 9 7 364 +795267: 329 1 6 3 649 9 249 87 +3510959: 5 7 109 59 +783516: 717 95 80 3 3 990 4 +10355981: 799 54 240 7 934 +94864: 147 6 1 616 1 +3515: 1 2 5 6 5 1 173 69 2 7 2 5 +151977: 6 3 5 508 13 85 +108112: 43 99 76 6 186 +796102075: 3 7 25 1 6 860 70 5 +8990: 14 98 6 664 32 62 +40554858: 19 96 7 107 23 9 39 +8653752: 735 644 1 2 196 914 6 +10582077: 4 163 7 9 6 2 4 3 7 808 7 +352033406: 78 5 539 64 87 13 597 +20030793021: 4 252 552 5 2 947 993 +1763041: 96 491 67 2 7 3 4 +497341235: 3 99 46 809 5 6 53 6 8 2 +290305266: 672 8 9 500 8 2 6 573 2 +40539212: 754 8 56 34 3 8 5 3 89 +15029: 7 4 2 760 9 +457576: 9 56 469 6 8 3 5 2 89 +6226858092: 37 9 2 7 6 8 9 6 60 4 273 +699210: 78 2 97 9 90 +31731: 4 424 8 9 236 7 +102: 9 7 5 +2973576: 16 8 274 54 598 749 6 +12222284: 6 1 5 338 269 22 74 3 9 +45145752762: 627 6 4 570 7 7 254 3 +36036528: 2 79 7 9 424 524 2 6 11 +740491: 74 5 69 5 491 +1836207923040: 57 30 7 388 837 4 360 +74510: 8 6 7 12 9 86 4 4 5 22 80 +1228415259: 57 7 573 27 7 5 199 +194940: 2 9 8 2 440 7 81 9 1 3 95 +4739029339: 649 73 9 8 10 349 339 +7371: 219 30 538 120 143 +2936835272: 1 8 34 1 698 55 5 5 27 2 +1818672: 50 7 77 9 29 26 1 2 24 +4914: 34 1 101 47 2 4 +48531129: 31 1 593 264 9 +398402: 4 249 5 8 1 1 1 +13046500: 4 144 906 4 25 +19458633533: 926 51 9 7 1 4 6 17 7 3 +856: 9 11 1 366 465 2 2 +938590387485: 9 9 3 3 652 7 1 166 9 3 5 +7808941968: 8 3 87 5 89 7 3 9 54 9 6 4 +34632322: 1 524 731 66 76 +3963: 68 2 268 2 7 11 8 571 +9952828: 4 21 7 99 20 7 4 181 +18895: 88 3 2 6 93 +99421: 4 3 7 8 329 6 8 2 3 2 7 9 +159011265: 991 563 57 72 5 +348312220113: 843 370 971 22 7 59 4 +6880: 256 478 5 8 8 1 7 9 8 5 +352393632: 1 814 72 6 432 +4008: 326 7 8 990 4 350 +12661158318: 535 8 98 7 7 665 5 543 +518193210: 2 90 714 6 6 8 2 74 7 52 +46254139: 7 8 593 1 39 +394686: 577 604 5 79 2 39 4 6 +112728: 6 5 3 4 782 93 9 3 61 1 2 +2306719800: 420 89 726 17 5 +7267681530: 1 2 6 1 7 74 6 6 9 153 1 +1134704: 2 8 3 5 6 82 6 2 3 2 70 8 +652478: 690 944 32 996 88 2 +5997: 426 26 2 91 6 9 8 2 1 7 +28975385016: 90 542 9 6 5 91 11 6 +4040151: 93 22 4 389 9 +28446: 45 90 848 7 303 22 +74958967774: 5 962 783 29 33 3 1 5 6 +375425820: 61 7 1 21 57 5 660 63 +16455144: 8 846 77 5 6 2 5 8 4 3 48 +337280: 5 388 93 1 919 5 9 8 6 +6168708: 11 50 8 94 882 +690590: 7 92 17 9 5 30 53 +7496: 742 5 2 76 +28376568: 65 88 75 948 66 +1070640: 3 44 7 7 74 6 6 93 167 3 +104380007560: 4 9 5 4 2 5 850 7 560 +9963: 76 22 476 848 7 9 +28656749040: 50 24 341 979 8 20 58 +6995418: 563 230 7 39 9 70 8 6 6 +21372: 117 96 72 +1067: 687 287 93 +12623966456: 10 21 558 8 4 7 4 645 8 +105355968: 1 404 4 7 1 6 1 5 6 8 194 +826063098: 185 2 610 3 6 61 +16871129: 187 4 57 1 90 +2824034019: 227 33 3 4 2 9 9 70 2 1 9 +7915404000: 3 9 48 161 1 964 8 85 +6558605: 17 1 5 9 716 4 2 7 6 9 1 3 +7925: 95 8 489 336 5 +42147842: 447 1 64 42 35 2 +8072613: 9 7 8 458 828 9 3 501 +517482: 879 84 31 1 58 7 +1401397: 9 1 5 7 440 +357489: 136 6 54 4 409 8 4 2 7 2 +63499: 503 35 5 932 9 85 235 +227: 8 16 99 +5854167: 4 9 6 4 430 6 9 964 203 +175: 64 19 5 11 76 +574393600: 4 652 199 200 22 +722: 1 3 9 5 31 193 2 +536406271461: 993 3 44 5 4 1 4 6 1 6 9 9 +4860859152991: 33 5 3 5 9 9 4 601 8 991 +22242550: 94 87 2 75 5 1 407 5 5 +733090: 5 25 85 9 12 4 8 +16391: 351 5 53 7 4 +2540: 314 8 20 8