diff --git a/.ipynb_checkpoints/Untitled-checkpoint.ipynb b/.ipynb_checkpoints/Untitled-checkpoint.ipynb deleted file mode 100644 index 363fcab..0000000 --- a/.ipynb_checkpoints/Untitled-checkpoint.ipynb +++ /dev/null @@ -1,6 +0,0 @@ -{ - "cells": [], - "metadata": {}, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/11/.ipynb_checkpoints/11-checkpoint.ipynb b/11/.ipynb_checkpoints/11-checkpoint.ipynb deleted file mode 100644 index 709d82c..0000000 --- a/11/.ipynb_checkpoints/11-checkpoint.ipynb +++ /dev/null @@ -1,18 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "language_info": { - "name": "python" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/11/11.ipynb b/11/11.ipynb index b8cac99..0b94dec 100644 --- a/11/11.ipynb +++ b/11/11.ipynb @@ -2,21 +2,20 @@ "cells": [ { "cell_type": "code", - "execution_count": 336, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ - "input = r'''0 1 10 99 999'''\n", - "input = r'''125 17'''\n", + "#input = r'''0 1 10 99 999'''\n", + "#input = r'''125 17'''\n", "input = r'''475449 2599064 213 0 2 65 5755 51149'''\n", "\n", - "\n", - "stones = {int(x):1 for x in input.split()}\n" + "stones = {int(x):1 for x in input.split()}" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -40,17 +39,29 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "193269" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "for i in range(75):\n", - " stones=step(stones)\n" + "for i in range(25):\n", + " stones=step(stones)\n", + "sum(stones.values())" ] }, { "cell_type": "code", - "execution_count": 269, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -59,77 +70,22 @@ "228449040027793" ] }, - "execution_count": 269, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ + "stones = {int(x):1 for x in input.split()}\n", + "for i in range(75):\n", + " stones=step(stones)\n", "sum(stones.values())" ] - }, - { - "cell_type": "code", - "execution_count": 459, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "defaultdict(, {6072: 673206953446361827286, 4048: 2734962356528935214636, 14168: 1343031271242210938014, 12144: 2300399947749196772879, 32772608: 1863779202753698640740, 40: 1800617350854067786011, 48: 1963004354915731679509, 2024: 1901242329177217918652, 80: 2071514762314577986161, 96: 1909127758252913749300, 16192: 2830947128757671518126, 18216: 1268972356388161972299, 8096: 2899816988343294077917, 10120: 569045306257576076768, 1: 2887855190943409245055, 36869184: 835429087093576428724, 24579456: 1514487337123235977781, 28: 545640724430717426974, 67: 383253720369045854463, 60: 826473730693175762336, 32: 1191095444078885640165, 24: 1908139147880629965130, 57: 656448851778621933102, 94: 656448851778621838017, 56: 656448851778627848108, 3: 1022537248590681705286, 2: 4154202543052785522877, 7: 2039928642914626319453, 6: 3494049803451761028009, 77: 807841723709838053671, 26: 807841723709836079846, 8: 4299935420757677600191, 36: 362115363446705336479, 86: 362115363446702092621, 91: 362115363446699634033, 84: 362115363446704267359, 20: 1414077300163673644677, 0: 4024270438576582418162, 4: 4404541520680163316089, 9: 1927418059972380388541, 72: 443220010324135438919, 28676032: 884207592768322392473, 3277: 1227019168257705602169, 2608: 1227019168257705617679, 20482880: 374644389308688664777, 3686: 550006170363052763461, 9184: 550006170363052763461, 2457: 997052327100450699998, 9456: 997052327100450699998, 5: 864321261489050567651, 2867: 582104108096953186703, 6032: 582104108096953405172, 2048: 246636878600168153652, 2880: 246636878600168153652, 291: 1789758, 151: 342634, 849: 342634, 472: 1844850, 7644: 902465, 6480: 902465, 8717: 902465, 7728: 902465, 7827: 1013758, 104: 2102093, 277518444544: 1013758, 485: 1329398, 760: 2384941, 848: 1206102, 3490282752: 24893, 582: 978569, 912: 1136525, 383: 139159, 177: 64484, 332: 546023, 736: 924747, 514096: 1532150, 902704: 709670, 1068672: 1538929, 1036288: 1746323, 7296: 827680, 3176: 685472, 355910522880: 685472, 36459: 399206, 52640: 399206, 22940: 4557788, 82560: 4557788, 26750: 1000893, 64128: 1000893, 30806: 1830556, 25152: 1830556, 6964: 1212535, 7864: 1212535, 4825: 1661335, 2160: 1423211, 276: 80970, 338: 2639160, 630: 80970, 656: 886237, 327: 439800, 463: 309842, 899: 309842, 136: 1139416, 4294: 961302, 9280: 961302, 5336: 961302, 8832: 961302, 1190112: 1118783, 1991616: 2000995, 1866128: 1680826, 1910656: 1888411, 7097: 179997, 3584: 179997, 282893152256: 179997, 1256904: 253530, 744832: 856504, 26545: 894907, 81248: 894907, 2318662016: 617107, 2949534720: 2453816, 4576: 1106822, 8712: 253523, 409: 711184, 133: 51132, 238: 342218, 272: 215231, 316: 381339, 714: 826842, 483: 436766, 712: 2471469, 7511: 198201, 8736: 501195, 400874541056: 198201, 6235: 1342286, 1344: 1342286, 5090: 1342286, 7648: 1342286, 28757: 184489, 96352: 184489, 1341912: 1767369, 1764928: 4344696, 21384: 506160, 12672: 506160, 785312: 313055, 1230592: 447840, 4593: 258062, 4680: 258062, 30478: 608194, 52544: 608194, 34083: 656657, 51232: 656657, 1260952: 384633, 793408: 1223060, 21097: 255457, 36640: 255457, 817696: 773910, 1619200: 1207773, 1477520: 388830, 1343936: 696267, 1165824: 528848, 1700160: 2254190, 941160: 371454, 1052480: 1580061, 24251: 815059, 72992: 815059, 763: 471883, 827: 522166, 816: 1780515, 2982307328: 2142927, 4170: 376772, 4520: 376772, 318418659328: 376772, 8092: 398269, 3568: 398269, 238322405376: 398269, 378: 181581, 195: 1336377, 896: 1362239, 320: 665404, 2162992128: 1323657, 249: 1118147, 71: 3838249, 820: 476981, 800: 1415292, 623: 452973, 392: 1439963, 920: 2335213, 3219908736: 355285, 2031901696: 1539696, 26422: 118500, 91520: 118500, 26873: 551159, 53856: 551159, 4958: 92533, 1928: 92533, 214857218048: 92533, 39204: 108810, 23232: 108810, 1441088: 2111239, 906752: 475091, 1789216: 601144, 987712: 1556273, 752928: 750103, 841984: 852123, 530288: 633355, 1426920: 526219, 455400: 544669, 1473472: 2494680, 29495: 2095582, 34720: 2095582, 22285: 4328598, 37344: 4328598, 1853984: 1459066, 1540264: 1731186, 394: 1392627, 39378944: 314596, 347: 405899, 258: 420481, 554: 566990, 368: 1009121, 6840: 560668, 3104: 912076, 308062515200: 560668, 6566: 706360, 6656: 706360, 361285230592: 706360, 5737: 41638, 6352: 41638, 6191: 41638, 8208: 385856, 1720400: 121360, 40638: 493941, 3392: 695861, 7462: 115095, 2856: 115095, 3724: 115095, 1600: 115095, 5638: 2326812, 544: 6922743, 293642567680: 2326812, 4692: 383261, 8464: 383261, 254053257216: 383261, 5969: 1537165, 7880: 1537165, 7027: 1537165, 3280: 1558662, 22695: 351408, 23596: 387076, 27776: 387076, 1993640: 85057, 1392512: 4265707, 32117: 764042, 15584: 764042, 1513952: 12930, 1781120: 1280411, 1605032: 896373, 825792: 1413315, 6168: 446442, 7472: 446442, 215250489344: 446442, 82: 4305448, 23: 2720733, 27: 3133528, 65: 6737772, 59: 4095116, 61: 4788411, 327463: 361498, 899136: 361498, 1453232: 589783, 37278: 315239, 84160: 315239, 36049: 938929, 86880: 938929, 2228537344: 5074874, 293: 2126708, 642: 1708852, 567: 1708852, 680: 5085788, 3289550528: 284538, 49498944: 152427, 113084928: 152427, 2122026368: 1537246, 456: 2688143, 2568553152: 373186, 890: 641662, 560: 7284919, 78436072: 92212, 123253504: 92212, 41787504: 133049, 150391296: 133049, 58370136: 510720, 181156096: 510720, 45104840: 3713392, 75584256: 3713392, 593: 2240477, 2630001792: 1250259, 2322758592: 1250259, 2785671680: 3718640, 7528: 236334, 4704: 426395, 372821188608: 214998, 6434: 316995, 936: 1529841, 8698: 316995, 3424: 329228, 5497: 950303, 1840: 1075867, 6049: 950303, 3312: 950303, 7230: 2335400, 1328: 2335400, 2888: 2335400, 6528: 2767119, 35230: 518453, 55360: 518453, 892: 44622, 584: 469045, 469: 183361, 568: 306962, 43694112: 8333, 193397248: 8333, 62185376: 8333, 64768000: 8333, 588: 1311363, 984: 2345222, 922: 1967365, 944: 2211887, 2195764736: 2562196, 728: 2928150, 640: 2128579, 81421472: 8333, 76167168: 8333, 4026934208: 68990, 2720126464: 601205, 43777096: 966408, 186467072: 966408, 260: 575822, 607: 575822, 778: 575822, 386: 1017854, 454: 683523, 536: 3501102, 461: 217969, 3617276608: 69679, 3662338944: 69679, 550: 157649, 528: 1804486, 301: 108519, 901: 100416, 264: 1692418, 6898: 481537, 3992: 481537, 209875781632: 481537, 671: 401387, 968: 4565894, 3432930688: 353952, 2482525056: 429353, 3473896448: 886080, 479: 486686, 688: 5012155, 2191668160: 1597265, 3531248512: 577078, 3211715584: 899864, 37852: 1218192, 36224: 1218192, 39654: 2854112, 85568: 2854112, 35148: 1269716, 62208: 1269716, 720544: 2158552, 453376: 2721300, 833: 439337, 888: 814434, 3670532096: 993808, 2335048320: 180830, 3146170368: 671549, 74041968: 70880, 85752832: 70880, 621: 296675, 2654581248: 1049022, 4427: 569896, 5000: 569896, 293249296384: 569896, 27856: 3174683, 71680: 3174683, 232: 250962, 426: 190103, 3768849920: 1710044, 574: 552481, 4055610240: 552481, 2453849024: 1287406, 340: 1857598, 80259696: 2447204, 173189632: 2447204, 360: 1221169, 3863071168: 860673, 3834395136: 1120168, 2294082560: 5336320, 213: 2444635, 314: 2444635, 28020: 1207227, 57984: 1207227, 457424: 3082082, 696256: 1542679, 26013: 1157865, 25760: 1157865, 21957: 2186825, 64736: 2186825, 4643: 3334329, 338213314560: 3334329, 479688: 566330, 1082840: 1863338, 1744688: 671244, 1586816: 1044439, 3785236224: 1420079, 3965485568: 3344143, 3514862208: 1481528, 356: 2527640, 224: 3185827, 44: 13900256, 16: 10334782, 89: 5170732, 63: 5658650, 12: 8895319, 30: 4510261, 13: 6434685, 88: 9658637, 57708288: 1389738, 34197504: 1389738, 1277144: 933509, 536360: 1020588, 394680: 1136847, 1908632: 1000518, 1894464: 1303196, 1384416: 1648670, 226688: 3563369, 872344: 1528511, 1285240: 1582811, 1084864: 2983277, 3969582144: 305272, 57044416: 2676528, 89638912: 2676528, 35: 3134828, 79: 3318753, 279222: 855300, 620160: 855300, 47: 2831856, 14: 1867224, 98: 2827252, 18: 2849568, 31: 5110236, 54: 2787269, 350: 1531150, 535: 2180348, 815: 1560076, 168: 2534570, 254: 1790393, 839: 678420, 799: 977594, 808: 1143312, 24087: 819047, 86688: 819047, 40310: 1466228, 30784: 1466228, 37770: 1232605, 43072: 1232605, 38671: 1385001, 67744: 1385001, 52: 9915991, 83: 2393991, 76: 12869720, 85: 2530209, 81836392: 795849, 41516288: 795849, 59034008: 1322734, 125714688: 1322734, 708400: 1310444, 1649560: 1335070, 340032: 2161198, 44440968: 1872071, 131025664: 1872071, 2621808640: 1556270, 3264971072: 745959, 56380544: 2721334, 145080320: 2721334, 78: 6771388, 291545: 460163, 120768: 460163, 62: 4880066, 389731: 599202, 854336: 599202, 237535: 756862, 862784: 756862, 924: 1941291, 858: 2024270, 176: 3181965, 72301328: 2724491, 28886528: 2724491, 2851216896: 1898974, 518: 2098949, 144: 1440182, 631488: 1274270, 1959232: 3900265, 265195: 1368785, 943936: 1368785, 684112: 2256663, 431112: 2091384, 635536: 2091384, 1133440: 6233700, 336: 2267057, 509: 193536, 138: 140056, 2310468864: 446752, 908: 469601, 776: 691901, 663: 2073770, 872: 5093204, 51405552: 392002, 156090880: 392002, 653: 1592878, 752: 2920558, 3441123840: 1932821, 29003: 701064, 75808: 701064, 1637416: 1659088, 1214400: 2547457, 4435: 997990, 7984: 1041237, 279222620160: 997990, 6757: 714454, 5288: 714454, 323840: 2539067, 21056: 821107, 40064: 821107, 6956: 311070, 4880: 311070, 5518: 311070, 2336: 563569, 6624: 446681, 7544: 446681, 263098497024: 446681, 6699: 523413, 4400: 1893038, 6761: 523413, 7792: 648977, 75: 7513354, 260607: 668682, 778816: 668682, 386454: 793356, 593536: 793356, 718520: 805790, 248952: 463896, 1983520: 375314, 582912: 1141144, 425040: 1314047, 1003904: 1793953, 560648: 633725, 1048432: 1793346, 898656: 633725, 1101056: 5914631, 514: 1314077, 902: 618523, 704: 952413, 2097446912: 1496222, 58702072: 601745, 153435392: 601745, 3314129984: 1420008, 2457945600: 2187104, 2818444288: 3665086, 323: 2180609, 840: 2644440, 2408786688: 960890, 4031030784: 1716643, 45187824: 211231, 68654080: 211231, 489: 757227, 3604986880: 1098310, 63677064: 490223, 142424832: 490223, 3224005312: 275023, 64: 8992158, 60608680: 275023, 196441344: 275023, 70807616: 275023, 153629696: 275023, 969: 417812, 496: 2102522, 44357984: 1169600, 137955840: 1169600, 71471488: 420925, 98188288: 420925, 65004808: 657818, 31542016: 657818, 7661: 891566, 2448: 1625448, 7331: 891566, 7376: 891566, 8025: 2091112, 9696: 2091112, 350535815168: 2091112, 7113: 929359, 9552: 929359, 254839799808: 929359, 1457280: 2860096, 916872: 1992909, 761024: 2363626, 52318376: 584053, 79858944: 584053, 4043320512: 1087618, 2916762112: 1807663, 25: 5494311, 350535: 1789498, 815168: 1789498, 797: 1019739, 78187120: 628666, 144044032: 628666, 77606232: 818788, 192555264: 818788, 56712480: 1035384, 117359616: 1035384, 457: 2656147, 424: 2769541, 3572214272: 3726916, 696: 2594219, 256: 1775016, 52650312: 992960, 52138240: 992960, 46: 5257257, 43: 5855230, 338213: 2859261, 314560: 2859261, 473: 237410, 616: 49244, 522: 811186, 192: 505884, 2462042176: 47589, 4676: 279010, 2496: 527407, 282106609664: 279010, 5770: 1191242, 8288: 1552308, 3419: 1191242, 7504: 1304190, 5231: 502587, 8376: 502587, 7985: 502587, 8944: 908379, 40433: 934368, 20512: 934368, 29167: 1549166, 62112: 1549166, 425: 1127955, 648: 1434279, 898: 545623, 433: 378689, 50494752: 152202, 29922816: 152202, 55054824: 439376, 53563136: 439376, 928: 643302, 3363288896: 371185, 380: 115504, 512: 2042551, 2490718208: 386215, 52816280: 96405, 38277888: 96405, 46430560: 3909991, 167101440: 3909991, 68: 6097296, 11: 2022385, 319598: 220834, 473216: 220834, 989: 554886, 3310033408: 838822, 72963176: 803374, 175845120: 803374, 530: 583860, 288: 1337348, 2888086080: 452114, 455: 674779, 400: 2650103, 25685: 316149, 53152: 316149, 1801360: 546167, 4585: 171769, 1696: 1486180, 1928872: 171769, 615296: 976711, 33796: 763385, 75200: 763385, 32444: 961821, 88192: 961821, 37196: 293497, 91008: 293497, 31789: 433203, 42976: 433203, 27160: 1294768, 29888: 1294768, 35722: 3185797, 14272: 3185797, 315: 244617, 927: 244617, 941: 564253, 120: 799118, 262705: 623937, 225728: 623937, 50: 4680758, 90: 1807271, 4410: 123516, 9032: 123516, 321302648832: 123516, 25849: 684345, 39456: 684345, 1997688: 1273269, 402: 532727, 578: 279873, 716: 119805, 672: 405295, 405462: 185154, 706176: 185154, 4018741056: 713922, 63013192: 1280336, 197866240: 1280336, 58: 6533238, 33: 3155788, 44275000: 661411, 144886016: 661411, 45: 6725545, 232554: 219543, 426368: 219543, 74: 5759110, 29: 2958767, 1862080: 1995582, 574816: 638561, 2003760: 638561, 1212376: 1494242, 70309712: 648290, 195210752: 648290, 860: 822869, 200: 1234615, 41125656: 1124783, 42949280: 1123534, 53368832: 1123534, 3678725248: 397949, 2687353856: 646813, 60527720: 245576, 971520: 537055, 47758304: 333931, 56218624: 333931, 69647864: 1412471, 48252160: 1412471, 3854878016: 412816, 43115248: 996208, 39508480: 996208, 49: 5468127, 299017: 513434, 275392: 513434, 7329: 324038, 5112: 324038, 299803817984: 324038, 38016: 403627, 22528: 403627, 34452: 465784, 20416: 465784, 2965921024: 143844, 2425172992: 960896, 3322323136: 127777, 2556263424: 355476, 985: 100527, 661: 334976, 3637759488: 597483, 62351344: 1562773, 50907648: 1562773, 3256777920: 149687, 874: 311394, 720: 3347735, 453: 2331586, 376: 2766375, 526: 474195, 423: 350107, 3584504000: 314502, 3199425856: 804705, 2589036032: 730100, 7735: 73184, 9304: 73184, 7918: 620739, 2928: 652602, 6088: 620739, 1920: 620739, 69066976: 236121, 96763392: 236121, 73627048: 438485, 120403712: 438485, 700304: 625494, 955328: 1575831, 2383: 487080, 4624: 487080, 25030: 293426, 7936: 293426, 1014024: 1444311, 1926848: 1364236, 6782: 226294, 2216: 226294, 406249248768: 226294, 7437: 226294, 3904: 322298, 5803: 226294, 2128: 269886, 7628: 1072341, 204501073920: 1072341, 2617712064: 204906, 2392400384: 343704, 59199976: 444032, 111854336: 444032, 4002354752: 334336, 856: 391663, 152: 552788, 977: 456455, 592: 1311722, 3015079936: 676316, 2109736640: 300941, 404: 904231, 730: 458109, 664: 819109, 576: 623087, 465: 437199, 520: 1857396, 93: 1559223, 69: 4189608, 2052384576: 1237910, 3899940352: 1171483, 78933976: 859742, 81672448: 859742, 42: 6019463, 21: 2370857, 1572648: 548266, 437184: 1118540, 7594: 784470, 8576: 784470, 260607778816: 784470, 6309: 931413, 6176: 931413, 386454593536: 931413, 503: 818390, 976: 865096, 599: 1760133, 777: 643163, 216: 1314580, 204501: 917484, 73920: 917484, 2900375808: 822341, 809: 1940505, 600: 2988506, 67575288: 837683, 160: 2977134, 66247544: 524039, 129989376: 524039, 3977775296: 452625, 2130219520: 1360949, 876: 276186, 275: 1275236, 310159: 170128, 962112: 170128, 4153: 776275, 8552: 776275, 346472011776: 776275, 7893: 733882, 3976: 733882, 8167: 780093, 7130: 379538, 5520: 379538, 226786447360: 379538, 1653608: 768444, 1408704: 2220170, 32772: 885965, 60800: 885965, 838: 481539, 606: 583975, 220: 466558, 625: 297204, 197: 297204, 32485: 658444, 84768: 658444, 1669800: 1040558, 1603008: 1309778, 1837792: 400874, 1570624: 591149, 4742: 121416, 6368: 121416, 8393: 121416, 9328: 121416, 4510: 3171360, 4840: 3171360, 7558: 3171360, 4256: 3171360, 33387: 975173, 9440: 976096, 27528: 255248, 99072: 255248, 6284: 90825, 9248: 90825, 4394: 268516, 3064: 268516, 349356001280: 268516, 5671: 885199, 2480: 885199, 237535862784: 885199, 924968: 2266610, 858176: 2363410, 28184: 3127860, 44288: 3127860, 397: 205478, 204: 818545, 282: 335568, 893: 131521, 526240: 489102, 1228568: 489102, 1574672: 489102, 1651584: 1511967, 781264: 865571, 918896: 579989, 1200232: 1903114, 1145584: 714243, 1645512: 422768, 1311552: 1221529, 1777072: 191530, 33141: 1215069, 29984: 1215069, 24579: 1866109, 45600: 1866109, 39859: 483384, 68448: 483384, 6301: 1093544, 3192: 1093544, 400481269760: 1093544, 1161776: 468053, 40556: 468053, 10240: 468053, 24538: 1096494, 49024: 1096494, 688160: 1580005, 1301432: 391827, 1279168: 851877, 1712304: 271050, 26996: 372050, 43584: 372050, 973544: 900023, 1317624: 404649, 1657656: 367476, 71305520: 439786, 112048640: 439786, 817: 897425, 3277260800: 1032608, 73: 6539016, 51: 2295613, 299803: 275337, 817984: 275337, 76944384: 344148, 45596672: 344148, 69730848: 397879, 41321984: 397879, 81587440: 1253798, 62306816: 1253798, 981640: 1134603, 1538240: 2037887, 23760: 358461, 14080: 358461, 26300: 1063111, 1792: 1063111, 23227: 1063111, 58592: 1063111, 846032: 368765, 1576696: 28102, 485760: 1552919, 259: 313624, 821: 507893, 236: 191245, 48752088: 700536, 175456512: 700536, 76446480: 1052058, 87177728: 1052058, 78270104: 1183301, 137113856: 1183301, 8283: 62418, 325366452224: 62418, 7495: 154515, 4792: 282456, 6367: 418869, 7064: 433717, 288267859968: 418869, 890560: 745257, 653752: 1861348, 20728: 149431, 67456: 149431, 40515: 345583, 13664: 345583, 30150: 575128, 79936: 575128, 28512: 1624686, 16896: 1624686, 291456: 1230763, 1732544: 333238, 307648: 470423, 7255: 195695, 280: 1144523, 6475: 505056, 5856: 505056, 5233: 505056, 2544: 505056, 5240: 456458, 1360: 456458, 7292: 456458, 8768: 456458, 6906: 201920, 6976: 201920, 9676: 201920, 7362: 373242, 7048: 373242, 243697113088: 373242, 700: 537364, 304: 1144666, 955: 1355784, 328: 2830943, 50660720: 251431, 22: 1469733, 406249: 193434, 248768: 193434, 37: 1258093, 39: 3147123, 627: 508009, 440: 874033, 2265406528: 275783, 471: 275783, 825: 1221101, 792: 1540584, 708: 1122026, 3338709440: 1143053, 4444: 1602560, 265195943936: 1602560, 29823: 1828887, 7328: 1954499, 26218: 1330642, 8640: 1330642, 32649: 635597, 71072: 635597, 545: 393362, 768: 916161, 389: 512378, 731: 512378, 854: 512378, 1248808: 155908, 647680: 564083, 25562: 300812, 63424: 353336, 7039: 155908, 2696: 155908, 381079885824: 155908, 39122: 847031, 30080: 847031, 860200: 962512, 20319: 1314411, 21220: 1314954, 26368: 1314954, 1817552: 464563, 1327744: 753402, 4916: 1026092, 7008: 1026092, 284990599168: 1026092, 240: 1812375, 580: 575292, 992: 794670, 355: 942715, 123: 543305, 980: 440464, 910: 502251, 880: 1497435, 540: 224941, 408: 1661853, 3518958784: 224941, 803: 388989, 2445655872: 208558, 566: 839519, 3875360896: 125660, 2064674304: 181257, 2883989504: 696067, 24784: 309357, 28480: 309357, 6657: 177812, 9480: 177812, 206991792128: 177812, 6774: 414181, 1256: 414181, 8158: 1075718, 7440: 1077023, 6230: 1075718, 6816: 1172582, 1040336: 1121712, 1825648: 528312, 1424896: 812920, 21629: 1127290, 92128: 1127290, 20974: 1280465, 46912: 1280465, 7030: 550200, 9712: 550200, 395106562048: 550200, 5870: 513090, 2072: 857308, 310553233408: 513090, 279: 833039, 222: 875424, 620: 730553, 263: 369703, 497: 358638, 8050: 281622, 8648: 281622, 308455786496: 281622, 4311: 847921, 5248: 954362, 3950: 847921, 8480: 847921, 35886: 172732, 1125344: 793856, 1080816: 1055314, 680064: 1932827, 321: 233483, 3940906112: 106566, 226: 3618686, 81: 4238859, 92: 8553094, 41: 3521574, 254446: 966531, 528512: 966531, 437: 963360, 184: 963360, 1698136: 581548, 1617176: 833936, 1635392: 978010, 59697880: 1793488, 70273280: 1793488, 3752463616: 1248997, 3117494336: 1480846, 31256: 293982, 87488: 293982, 33878: 324627, 68352: 324627, 33428: 1110111, 6016: 1148294, 29249: 515645, 55264: 515645, 1932920: 1154586, 663872: 2411586, 6036: 1344195, 1752: 1344195, 643632: 283519, 1333816: 507848, 481712: 291059, 651728: 546837, 819720: 499910, 1548360: 112788, 797456: 1184412, 1376320: 4333364, 36705: 851455, 32096: 851455, 1309528: 413103, 4377: 826679, 7096: 826679, 377409353728: 826679, 1018072: 697513, 1975424: 737117, 33591: 297668, 92320: 297668, 2802057984: 1416901, 344: 1809507, 2601325760: 1358984, 237: 664840, 862: 787937, 784: 1228462, 1870176: 1662350, 1736592: 1732830, 356224: 2717163, 5704: 2295010, 4416: 2295010, 8963: 2295010, 8912: 2311686, 631: 1093346, 488: 1823654, 265: 1199719, 943: 1175716, 684: 1933958, 112: 4179025, 431: 1791072, 635: 1854495, 1961256: 355901, 7147: 361066, 1488: 361066, 9818: 361066, 6500: 561278, 4808: 561278, 3154: 561278, 2016: 561278, 95: 1550994, 254839: 793600, 799808: 793600, 916: 1707156, 761: 2026395, 53: 5969582, 3777043072: 1441367, 3867167744: 1620190, 1295360: 1814449, 1613128: 867310, 922944: 2295589, 7818: 537471, 7120: 537471, 291545120768: 537471, 7760: 774217, 6232: 699345, 389731854336: 699345, 518144: 1517040, 5265: 849486, 312: 1494778, 5213: 849486, 8240: 849486, 39777: 383233, 75296: 383233, 21302: 1155567, 19520: 1155567, 1773024: 234931, 556600: 1084971, 534336: 1441298, 310: 692881, 159: 144719, 962: 144719, 884488: 820059, 372416: 820059, 4104: 33355, 2672: 33355, 333: 33355, 231: 33355, 878: 222925, 480: 630081, 214: 516707, 2302275712: 318838, 32158: 170115, 12160: 170115, 5041: 242248, 1768: 242248, 3685: 242248, 2992: 372222, 6517: 222300, 37033: 211397, 5563: 183657, 5712: 183657, 395: 405041, 106: 609088, 562: 431910, 36869: 157028, 18400: 157028, 23186: 524587, 62016: 524587, 245: 100191, 794: 100191, 32977: 100191, 43680: 100191, 22613: 345215, 9952: 345215, 775: 102706, 3945002688: 69762, 3330516288: 362842, 3596793728: 164102, 841: 743358, 67077384: 1040183, 60687616: 1040183, 49747896: 1600044, 92294400: 1600044, 80674616: 414071, 138538752: 414071, 400481: 937923, 269760: 937923, 706376: 166928, 66: 5203164, 316714: 445372, 483712: 445372, 25931: 145058, 32608: 145058, 1072720: 498491, 273: 152780, 847: 152780, 448: 559781, 6574: 483923, 9640: 483923, 347258554368: 483923, 501: 1689850, 149614080: 784465, 64340936: 371725, 86983424: 371725, 553: 376764, 233: 376764, 6707: 891025, 7384: 891025, 6068: 891025, 7616: 1132739, 4974: 1369625, 7896: 1369625, 9229: 1369625, 564: 611027, 449: 642187, 2539877120: 535741, 1321672: 1367185, 1522048: 2498943, 34411: 1655180, 23840: 1655180, 27488: 248397, 6948: 219617, 1896: 219617, 6211: 219617, 2512: 219617, 5024: 328705, 5800: 266606, 5071: 266606, 3344: 266606, 31748: 63005, 46400: 63005, 6800: 43247, 4609: 427694, 8624: 711320, 394320019456: 427694, 6135: 129625, 5536: 129625, 271357194240: 129625, 361: 626205, 678: 107243, 5099: 399483, 632: 997564, 386061322240: 399483, 358: 267920, 401: 158524, 241: 186986, 162: 175393, 393: 277493, 6425: 46631, 7952: 46631, 9391: 46631, 3600: 468457, 1588840: 230300, 24907: 328420, 18208: 328420, 29659: 121702, 21024: 121702, 20523: 1059249, 84576: 1059249, 38999: 1001286, 40352: 1001286, 1064624: 405611, 24866: 360314, 21632: 360314, 31871: 360314, 36128: 360314, 1580744: 937060, 1858032: 481889, 1813504: 1162641, 24292: 1398733, 69568: 1398733, 5820: 135937, 4168: 135937, 394713290752: 135937, 4328: 370526, 1216: 373070, 2564: 370526, 8128: 457242, 25521: 282216, 66848: 282216, 4270: 187832, 7415: 187832, 9360: 187832, 29905: 285322, 27201: 510494, 26464: 510494, 1904584: 482990, 4908: 598667, 4024: 598667, 299017275392: 598667, 6807: 231787, 1168: 231787, 364169220096: 231787, 1556456: 72133, 242880: 685846, 20605: 513222, 77728: 513222, 39982: 542263, 58176: 542263, 31830: 401828, 39552: 401828, 38876: 84931, 50624: 84931, 4709: 140894, 4432: 140894, 225999904768: 140894, 42451376: 1096076, 94949888: 1096076, 412: 601879, 302818: 576365, 897920: 576365, 5306: 974620, 5232: 974620, 6608: 466854, 1576: 466854, 291151849472: 466854, 2232633920: 288549, 242: 586058, 787: 375432, 2994597056: 375432, 3498475904: 375432, 70: 7606903, 310553: 440059, 233408: 440059, 564696: 713063, 449328: 748852, 1254880: 625663, 532312: 316505, 1005928: 306687, 2486621632: 420715, 3187136128: 420715, 3342806016: 1303372, 781: 1099223, 918: 562706, 2429269568: 1639122, 1465376: 165250, 1198208: 1112939, 1641464: 147527, 1262976: 409588, 985688: 115948, 661848: 374584, 1797312: 694374, 1609080: 173067, 874368: 190830, 97: 1833518, 402971: 179692, 987968: 179692, 87: 2036480, 290758: 186200, 578176: 186200, 17: 3917563, 392222: 168066, 572544: 168066, 667920: 86766, 702328: 343313, 15: 717787, 291151: 397872, 849472: 397872, 593032: 1809157, 1299408: 1454678, 1147608: 1454678, 1750760: 138414, 572792: 138414, 43611128: 253898, 200327424: 253898, 981: 974882, 3113397760: 1747152, 64755856: 589113, 52332544: 589113, 2187571584: 907247, 76114544: 300943, 114898432: 300943, 74290920: 728850, 64962304: 728850, 284990: 875611, 599168: 875611, 1740640: 706259, 404800: 1054808, 4112: 987292, 5656: 963553, 36787: 339683, 25248: 339683, 6052: 209383, 7720: 209383, 971: 616514, 5505: 373621, 4824: 373621, 5356: 381077, 3136: 420610, 4775: 283626, 8304: 283626, 5621: 332585, 38548: 353858, 78016: 353858, 299: 678149, 3937: 266790, 503976: 951365, 599104: 1168705, 777216: 702368, 38: 2390386, 293642: 1989277, 567680: 1989277, 548504: 87669, 722568: 80905, 392656: 80905, 27774: 66999, 78528: 66999, 36377: 508479, 59488: 508479, 25890: 622324, 36032: 622324, 99: 2475570, 21793: 168775, 78432: 168775, 4120: 163533, 6616: 163533, 402578716672: 163533, 32199: 302994, 347258: 410053, 554368: 410053, 68403104: 650921, 152204800: 650921, 65666656: 821988, 178500608: 821988, 394320: 364372, 19456: 364372, 293249: 483303, 296384: 483303, 5198: 231060, 6440: 231060, 217741207552: 231060, 26586: 105831, 77824: 105831, 28839: 594551, 89504: 594551, 6765: 813550, 8272: 941491, 349356: 227447, 1280: 227447, 48256208: 523793, 75616640: 609034, 156479488: 609034, 712448: 353292, 1281192: 197488, 76280512: 1252854, 101038080: 1252854, 6740: 225972, 9320: 225972, 3296: 424240, 6912: 225972, 5372: 655758, 7080: 890214, 332838606848: 655758, 7279: 102248, 7208: 102248, 383963875328: 102248, 434: 258335, 973: 770319, 813: 494149, 416: 998403, 210: 1539583, 277: 744001, 444: 744001, 3985968448: 563945, 48090240: 309496, 28497920: 309496, 82251312: 426992, 10: 3131868, 53231200: 916746, 47011448: 916746, 118590208: 916746, 39040: 125736, 36928: 125736, 1244760: 744696, 609: 283198, 637: 178884, 3797525952: 178884, 5414: 733561, 2000: 733561, 262705225728: 733561, 33305: 309470, 16288: 309470, 35967: 140502, 93728: 140502, 1702184: 635888, 8067: 354460, 4616: 354460, 280402434048: 354460, 481: 1052540, 269: 838928, 4059706816: 95959, 3244488192: 1127415, 4261: 600373, 7344: 1046414, 8108: 600373, 9536: 600373, 7478: 283465, 8824: 283465, 2338: 283465, 1248: 283465, 5837: 435444, 366659938304: 435444, 377: 642664, 353: 606572, 54805872: 180191, 74353664: 180191, 77689216: 130342, 185625088: 130342, 2277696256: 686062, 367: 48600, 209: 477405, 2105640064: 961440, 884: 704367, 372: 878337, 41953472: 128949, 136530944: 128949, 82002360: 297588, 27655936: 297588, 61023600: 497926, 161790464: 497926, 702: 297781, 2269503104: 415268, 744: 973616, 832: 1050953, 308: 618834, 515: 411746, 285: 585753, 230: 518962, 534: 1239191, 2666870976: 348869, 819: 430085, 935: 116756, 2892182656: 222383, 8133: 446041, 8488: 446041, 8309: 446041, 296: 1370575, 384: 824149, 2351434624: 403995, 82085344: 403995, 20725760: 403995, 49664912: 941821, 99224576: 941821, 50990632: 468107, 190741760: 468107, 19: 2808031, 54971840: 1109613, 60493312: 1109613, 597080: 131007, 1475496: 131007, 605176: 575520, 76612448: 1038924, 73317376: 1038924, 71139552: 1083520, 125908992: 1083520, 763048: 547596, 827816: 605511, 714472: 516672, 41704520: 437450, 157321472: 437450, 80923568: 462363, 117748224: 462363, 378195: 186283, 896320: 186283, 249071: 553989, 820800: 553989, 433136: 437599, 23022: 269408, 75712: 269408, 254053: 330831, 257216: 330831, 1001880: 61956, 32526: 61956, 81344: 61956, 2009832: 134745, 5779: 125612, 1272: 125612, 2726: 125612, 933064: 185495, 68071168: 272875, 179925504: 272875, 61687472: 518952, 106349056: 518952, 41538552: 906487, 171181824: 906487, 288267: 359111, 859968: 359111, 3412447808: 322701, 346472: 664019, 11776: 664019, 1236664: 401646, 501952: 930157, 33509: 309065, 99168: 309065, 36746: 309065, 28672: 309065, 37688: 1462538, 49920: 1462538, 405: 586863, 462: 159745, 706: 303448, 40187: 609930, 41056: 609930, 71056568: 43206, 132839168: 43206, 72550280: 230628, 52401360: 536154, 72928768: 536154, 63262144: 253089, 177075712: 253089, 68569072: 280323, 138344448: 280323, 67658272: 953439, 3912230080: 992963, 643: 460599, 846: 317854, 2699643584: 436224, 651: 476031, 3133880640: 97277, 2650484672: 356143, 377409: 708784, 353728: 708784, 2060577728: 597725, 3998258176: 631833, 67988184: 255212, 186855680: 255212, 66330528: 757968, 123059200: 757968, 615: 872140, 791: 70668, 4092479424: 101273, 3703304704: 246388, 445: 343702, 2560360000: 218727, 398: 218727, 639: 279824, 2924955264: 605451, 4875: 600559, 2088: 600559, 355123980288: 600559, 532: 272095, 2035998272: 263862, 786: 484403, 7263: 127418, 3264: 127418, 2359627776: 456890, 22776: 582030, 96256: 582030, 21875: 777400, 71584: 777400, 649: 171818, 79763816: 78528, 64423920: 344695, 80053248: 344695, 597: 283916, 2986403904: 112518, 307: 406119, 605: 497971, 556: 936377, 793: 1056556, 3695111552: 451215, 25439: 186049, 73696: 186049, 1505856: 827129, 1683968: 893400, 295: 153620, 729: 153620, 937: 242058, 3682821824: 227876, 2716029888: 1519067, 7802: 260292, 1152: 260292, 319598473216: 260292, 73295112: 376248, 148124416: 376248, 3080625152: 2135474, 3801622528: 469558, 3445220416: 543113, 45851696: 202446, 953: 202446, 3379675200: 892843, 46762496: 327642, 139380736: 327642, 3719691008: 344292, 3178942976: 507269, 55: 2130840, 315927: 287584, 941120: 287584, 2675064128: 1164118, 3355095744: 314999, 70890600: 73449, 146699520: 73449, 81006552: 244898, 110818048: 244898, 611: 468886, 248: 1089430, 595: 41781, 388: 370708, 608: 528374, 55716672: 218819, 200521728: 218819, 3142073792: 124173, 3424737536: 124173, 718: 691763, 3727884160: 368819, 2138412672: 594138, 435160: 462325, 28921: 189667, 82656: 189667, 1293336: 238361, 1182016: 400616, 1977448: 389780, 5903: 1134534, 4008: 1134534, 254446528512: 1134534, 37114: 271038, 97856: 271038, 23842: 612232, 7232: 612232, 37360: 709836, 77312: 709836, 4245: 937443, 1376: 937443, 9494: 937443, 9888: 952800, 833888: 513549, 302: 640293, 818: 492398, 897: 492398, 271: 102366, 357: 94511, 194: 94511, 142: 5021, 591: 5021, 6442: 294491, 3920: 294491, 8005: 294491, 3248: 348478, 36213: 441383, 73184: 441383, 1878272: 549701, 342: 124975, 8001: 47200, 392615843840: 47200, 8034: 190868, 2680: 190868, 336509138944: 190868, 1432992: 957346, 809600: 2263354, 21916: 1362326, 68160: 1362326, 34370: 425296, 27264: 425296, 32731: 609623, 64224: 609623, 33100: 715061, 33408: 715061, 75948576: 913610, 128758784: 913610, 63096176: 1083584, 190936064: 1083584, 257: 338516, 79182928: 728035, 60881920: 728035, 2027805120: 54043, 65832624: 54043, 164640256: 54043, 2593132608: 170615, 4560: 71943, 2744: 71943, 3400: 71943, 3200: 408192, 5364: 222955, 4096: 222955, 346865283072: 222955, 4966: 804340, 4912: 804340, 9922: 804340, 5323: 779943, 1200: 779943, 4701: 779943, 1448: 779943, 240026580992: 779943, 1590864: 412819, 904728: 237028, 728640: 1040380, 67741256: 481099, 1358104: 340144, 34329: 300509, 30688: 300509, 24825: 364052, 25056: 364052, 34738: 749907, 96448: 749907, 900680: 291316, 566720: 980737, 25603: 184693, 60000: 184693, 805552: 184693, 6208: 448800, 7561: 520359, 6640: 566570, 316714483712: 520359, 4477: 102841, 2904: 102841, 209089239040: 102841, 24948: 178279, 14784: 178279, 7470: 46525, 5840: 46525, 3031: 46525, 1424: 46525, 7429: 626969, 6496: 631862, 2304: 626969, 880440: 337688, 1024144: 203824, 2001736: 471564, 1489664: 786293, 856152: 297074, 35845: 267437, 4000: 267437, 31994: 684966, 25856: 684966, 40146: 274544, 44480: 274544, 1177968: 836858, 1845888: 970242, 210496: 1793882, 355910: 587263, 522880: 587263, 73793016: 343010, 106543360: 343010, 54142000: 851880, 129795072: 851880, 558624: 68490, 1275120: 68490, 937112: 264833, 1819576: 264833, 275264: 970603, 282893: 152971, 152256: 152971, 2543973696: 216591, 53727080: 768562, 164445952: 768562, 3346902592: 658223, 446: 830029, 46928464: 451377, 125520384: 451377, 740: 283191, 3842588288: 234067, 3125687488: 344934, 3387868352: 382643, 60361752: 1566009, 4067899968: 116147, 68983992: 561355, 103693568: 561355, 933: 159308, 386061: 342656, 322240: 342656, 1416800: 457714, 267: 307764, 859: 307764, 34124: 275687, 47808: 275687, 346: 731904, 23834624: 567603, 2503007936: 343724, 952: 1601515, 67822216: 264316, 200716032: 264316, 74373904: 264316, 58032128: 264316, 2400593536: 139801, 3932712960: 139801, 62849248: 107003, 47924272: 151039, 42358272: 151039, 53976032: 255026, 143655424: 255026, 1337864: 282750, 1716352: 1023984, 1896488: 204574, 36828: 192400, 21824: 192400, 70475680: 76731, 181350400: 76731, 520168: 289913, 1841840: 430476, 1056528: 691057, 215643: 250455, 760640: 250455, 1129392: 49605, 25808: 49605, 42880: 49605, 813648: 457824, 878416: 222769, 1186064: 161201, 1943040: 161201, 31052: 124455, 4608: 133477, 23678: 175199, 20928: 175199, 908776: 548860, 23432: 165746, 41472: 165746, 26177: 174530, 12064: 174530, 23924: 292623, 5919: 378210, 9976: 378210, 226393176064: 378210, 40023: 285638, 54752: 285638, 3183039552: 469707, 409526: 62300, 509568: 62300, 423016: 406406, 1771000: 365762, 77359304: 85749, 37524: 1070584, 63616: 1070584, 31174: 1270359, 94336: 1270359, 3523055360: 603290, 5804: 246091, 25193: 544455, 94240: 544455, 435: 397410, 506: 239868, 2384207232: 715629, 3736077312: 831283, 2212151040: 165014, 71222536: 165014, 118978816: 165014, 243: 285742, 697: 273833, 113: 273833, 2867603200: 392870, 821744: 184702, 1554432: 780540, 412896: 701714, 302818897920: 672613, 4850: 46989, 397204008960: 46989, 32567: 126746, 77920: 126746, 1768976: 263309, 1208328: 243609, 29864: 96004, 621368: 345086, 1224520: 421404, 36951: 387143, 11552: 387143, 7246: 142208, 4485: 66693, 5888: 66693, 9637: 66693, 4784: 66693, 5853: 139690, 6104: 139690, 338606585856: 139690, 491832: 244207, 1410728: 234119, 228712: 234119, 28676: 336249, 993: 159158, 3408351232: 768715, 57791272: 148290, 27267328: 148290, 742: 35449, 215: 543793, 262: 743923, 705: 617292, 225: 639362, 67409320: 266197, 32966912: 266197, 308455: 242587, 786496: 242587, 586: 191358, 960: 191358, 3105204608: 146621, 2367820928: 206100, 1829696: 287733, 34: 1972787, 1659680: 405184, 66081576: 544978, 143849728: 544978, 53644096: 260291, 171376128: 260291, 58204168: 158553, 195016448: 158553, 43281216: 434919, 25648128: 434919, 785: 270711, 2552166848: 331578, 42700328: 219824, 74159360: 219824, 2990500480: 335793, 49084024: 702455, 147735808: 702455, 45768712: 296085, 409133: 59664, 238272: 59664, 75118736: 230803, 198060544: 230803, 2875796352: 217418, 45934680: 303291, 3047852544: 709323, 623392: 524340, 920920: 575471, 2642291520: 138095, 49581928: 107153, 106154752: 107153, 3920423232: 126671, 209089: 88582, 239040: 88582, 647: 487254, 57376352: 49021, 61918208: 49021, 850: 143566, 4063803392: 581981, 74622856: 134081, 37241600: 134081, 748: 15183, 8200: 254145, 2360: 254145, 2765: 254145, 5936: 309088, 6102: 421826, 327463899136: 421826, 1625272: 329718, 24456: 177815, 55872: 177815, 1269048: 433479, 38753: 107493, 60896: 107493, 20646: 154469, 74304: 154469, 1530144: 39604, 37606: 352559, 56768: 352559, 7105: 36513, 6568: 36513, 268866476032: 36513, 1805408: 38155, 949256: 156505, 1149632: 260812, 400874: 168841, 541056: 168841, 5571: 186749, 6672: 482617, 405855977472: 186749, 31420: 106153, 73792: 106153, 34247: 106153, 37536: 106153, 58536104: 162045, 167295744: 162045, 611248: 547241, 1655632: 420808, 1815528: 420808, 585: 102436, 5298: 127917, 2248: 127917, 2441: 127917, 7536: 127917, 4842: 214670, 2176: 214670, 8100: 209570, 6552: 209570, 224295729152: 209570, 541: 146242, 257330: 67255, 518016: 67255, 3465703296: 232211, 53312160: 246552, 199096832: 246552, 53065232: 1139180, 50162816: 265728, 57643520: 265728, 46098624: 500520, 194822144: 500520, 65749640: 563807, 171570432: 563807, 51654504: 242512, 135300352: 242512, 3248584768: 772411, 3588600576: 202074, 364169: 199277, 220096: 199277, 3150266944: 62112, 787336: 437772, 1479544: 437772, 1728496: 437772, 1305480: 161339, 24497: 125742, 52448: 125742, 1936968: 148050, 43943064: 311923, 172606720: 311923, 352633: 241084, 262080: 241084, 349: 197050, 51986440: 273301, 107579648: 273301, 3645952640: 469047, 3904036928: 148081, 282106: 239870, 609664: 239870, 75284704: 251764, 184200192: 251764, 637560: 210535, 1876248: 210535, 5115: 84448, 6600: 84448, 358007969792: 84448, 26504: 303778, 84672: 303778, 771: 84448, 3625469760: 84448, 3375578624: 125329, 7445: 249611, 6888: 249611, 5110: 249611, 1952: 249611, 5439: 405115, 220625197056: 405115, 2941341568: 505582, 81255504: 235429, 90027520: 235429, 75450672: 270153, 170339840: 270153, 44772904: 120794, 103304960: 120794, 240813: 120794, 123584: 120794, 66579480: 208136, 102268672: 208136, 228883: 111500, 894272: 111500, 249465: 67600, 92096: 67600, 304391: 97070, 983104: 97070, 366659: 372969, 938304: 372969, 6002: 90022, 9816: 90022, 4255: 90022, 2576: 90022, 7172: 74872, 7739: 74872, 904: 337894, 3404254656: 20920, 81338488: 522393, 83097344: 522393, 49167008: 1197930, 140805632: 1197930, 240026: 670138, 580992: 670138, 375: 104880, 178: 81400, 1730520: 116703, 302294: 65966, 536192: 65966, 59531912: 369992, 84133632: 369992, 1360128: 348164, 344767: 197233, 836160: 197233, 52982248: 149617, 24417536: 149617, 48422176: 251381, 226393: 324387, 176064: 324387, 3506669056: 287590, 361285: 601587, 230592: 601587, 2146605824: 169238, 633512: 29137, 1679920: 27695, 999856: 27695, 420992: 227534, 42617344: 704788, 81089536: 704788, 3621373184: 515609, 987: 1489418, 4014644480: 322944, 318418: 319545, 659328: 319545, 238322: 337729, 405376: 337729, 375311: 27975, 906816: 27975, 271357: 111188, 194240: 111188, 730664: 531472, 1372272: 91989, 795: 203843, 432: 225142, 5016: 227045, 2816: 357019, 5764: 227045, 3520: 227045, 23514: 344218, 34624: 344218, 5344: 344218, 5760: 344218, 34820: 89650, 89600: 89650, 8225: 362581, 1312: 362581, 322: 640172, 4361: 218809, 1128: 218809, 405462706176: 218809, 1985544: 830422, 31133: 1491016, 97760: 1491016, 7611: 260081, 4544: 260081, 232554426368: 260081, 284: 754492, 990: 754492, 2933148416: 88405, 2752899072: 297567, 330: 101383, 824: 169866, 74788824: 331135, 23381248: 331135, 70973584: 209073, 139769344: 209073, 5953: 315863, 1912: 315863, 8413: 315863, 3632: 315863, 69564880: 364455, 55182336: 364455, 66994400: 613645, 67617792: 613645, 6326: 215713, 2144: 215713, 358401241088: 215713, 6856: 238499, 9072: 238499, 280009162752: 238499, 31338: 83043, 80640: 83043, 6798: 218965, 8184: 218965, 378195896320: 218965, 6633: 650138, 249071820800: 650138, 588984: 1529019, 2584939456: 800389, 39695: 260906, 82144: 260906, 8183: 684259, 6392: 722442, 4151: 684259, 6288: 684259, 673: 24599, 467: 24599, 21711: 367096, 85280: 367096, 5845: 283874, 3120: 283874, 352633262080: 283874, 280402: 303269, 434048: 303269, 544456: 717999, 47592336: 295983, 70078976: 295983, 1173920: 492018, 2007808: 677725, 65915608: 110084, 157710080: 110084, 3580407424: 228311, 60444736: 82898, 2478428480: 364377, 1157728: 224471, 37647: 28881, 53344: 28881, 33919: 28881, 64928: 28881, 1965304: 523984, 256937: 16424, 246720: 16424, 65087792: 144252, 24611840: 144252, 2171185280: 426210, 58453120: 330306, 174225920: 330306, 35025: 85881, 72480: 85881, 595056: 48739, 388608: 428003, 1552408: 145031, 1692064: 145031, 319205: 79908, 201920: 79908, 72467296: 166069, 2261309952: 406858, 70226728: 82400, 202140928: 82400, 3711497856: 316971, 645: 189523, 2449752448: 147943, 957: 174335, 352: 415080, 58040224: 288029, 2519394240: 639871, 217741: 200063, 207552: 200063, 79016960: 108203, 74742272: 108203, 308062: 476766, 515200: 476766, 570768: 286381, 214544: 519927, 1232616: 242697, 372821: 184359, 188608: 184359, 1289288: 153783, 37975: 153783, 25952: 153783, 489808: 501659, 395106: 472927, 562048: 472927, 74456888: 292156, 51101952: 292156, 54390952: 474472, 109004544: 474472, 78021152: 301706, 157904384: 301706, 7694: 295868, 4384: 295868, 4559: 295868, 6973: 341982, 4132: 341982, 1984: 341982, 60029816: 105154, 42552576: 105154, 67243352: 93849, 46827264: 93849, 51737488: 260022, 128370176: 305316, 4035127360: 73899, 2707836736: 246724, 969496: 414769, 38057: 6764, 19104: 6764, 657800: 40084, 740784: 330444, 914848: 40084, 1807432: 111389, 367053: 55415, 209600: 55415, 358401: 185142, 241088: 185142, 280009: 204854, 162752: 204854, 447: 277315, 33469: 563927, 2592: 563927, 374918: 73639, 635520: 73639, 220625: 345512, 197056: 345512, 1734568: 68117, 441232: 70248, 33223: 107979, 23136: 107979, 1313576: 145053, 7976: 65924, 3816: 65924, 33550: 269957, 95744: 269957, 7089: 63024, 296919828480: 63024, 226786: 323808, 447360: 323808, 77855184: 8218, 171764736: 8218, 1094984: 123500, 65170776: 259677, 3359192320: 347978, 346865: 189620, 283072: 189620, 225999: 119523, 904768: 119523, 28471: 22434, 20320: 22434, 524216: 265327, 993784: 183029, 28553: 170653, 13472: 170653, 461472: 252544, 1833744: 368341, 1060576: 194322, 33632: 315757, 88896: 315757, 965448: 118232, 876392: 319682, 4659: 196590, 310159962112: 196590, 51488536: 157642, 149160704: 157642, 332838: 560964, 606848: 560964, 61355536: 151979, 134069760: 151979, 361678: 125977, 501888: 125977, 218: 83271, 527: 15496, 750: 15496, 982: 15496, 486: 15496, 4949: 129980, 228883894272: 129980, 327888: 149506, 240419: 39499, 852288: 39499, 48586120: 102625, 189316864: 102625, 79597848: 102625, 26231040: 102625, 617: 184003, 70392696: 184003, 188280576: 184003, 338999: 13535, 857152: 13535, 3174846400: 75736, 724: 196554, 2748802496: 294377, 2285889408: 43696, 52235392: 43696, 86789120: 43696, 3838491712: 178095, 74539872: 167844, 44171776: 167844, 570: 247087, 3658242368: 97329, 5148: 137257, 8536: 166591, 301901264896: 137257, 2253116800: 115455, 2216247616: 106938, 713: 100295, 290: 260363, 250: 327784, 875: 428166, 5165: 207713, 4504: 207713, 273847912448: 207713, 374: 63423, 3510765632: 58713, 441: 60859, 865: 164301, 283: 164301, 965: 103529, 63926016: 45563, 121634304: 45563, 285777: 45563, 141760: 45563, 322089: 67324, 191424: 67324, 80508648: 331146, 152399104: 331146, 47426368: 141693, 83939328: 141693, 3760656768: 411107, 22326: 245988, 33920: 245988, 31461: 571100, 70368: 571100, 1592888: 320440, 29945: 320440, 97056: 320440, 34984: 320440, 75904: 320440, 243303: 13686, 841792: 13686, 1685992: 375848, 3350999168: 360235, 3674628672: 360235, 22654: 235129, 953304: 235129, 23104: 381345, 68864: 381345, 5140: 334625, 5552: 334625, 315927941120: 334625, 336509: 163424, 138944: 163424, 1141536: 521814, 25398: 457986, 77120: 457986, 35312: 491988, 48512: 491988, 38630: 733178, 71168: 733178, 38343: 954945, 95136: 954945, 671968: 465274, 1696112: 410903, 1226544: 497876, 35804: 193556, 7424: 193556, 22162: 90917, 47616: 90917, 1400608: 77597, 1821600: 212706, 1706232: 29190, 305624: 290888, 1718376: 290888, 277518: 866971, 444544: 866971, 791384: 82770, 1989592: 80901, 2021976: 117573, 445280: 398662, 1265000: 253161, 398728: 253161, 5762: 16481, 5304: 16481, 7680: 16481, 586960: 219931, 1534192: 168972, 1169872: 238814, 649704: 199670, 29331: 75370, 48416: 75370, 420: 196738, 61438520: 91697, 127139584: 91697, 2634098368: 335838, 47260400: 132120, 97799680: 132120, 769: 84385, 50411768: 281352, 36852992: 281352, 645656: 219593, 1210352: 171128, 957352: 201880, 4051513664: 405638, 633: 232708, 53810064: 92549, 157515776: 92549, 209875: 410874, 781632: 410874, 6790: 198066, 5200: 198066, 392222572544: 198066, 7752: 53987, 403758530560: 53987, 206: 141752, 991: 130384, 128: 166072, 217: 169719, 741: 169719, 207: 215013, 552: 553961, 7379: 292688, 3016: 292688, 215643760640: 292688, 377278: 41865, 263296: 41865, 736736: 145501, 342056: 145501, 80010744: 54653, 193980160: 54653, 82332272: 84681, 202335232: 84681, 3822105408: 116166, 263098: 383537, 497024: 383537, 69398912: 19731, 69042688: 19731, 2072867456: 175326, 2154798976: 345958, 50328784: 306872, 43783168: 306872, 64506904: 306872, 73123072: 306872, 69481896: 259300, 62112512: 259300, 50245800: 313999, 50713344: 313999, 3031466240: 207951, 54639904: 319308, 88214016: 319308, 77772200: 171994, 178694912: 171994, 949: 134333, 2326855168: 224866, 1661704: 431513, 477664: 161635, 414920: 58166, 406824: 58166, 394713: 115597, 290752: 115597, 2527587392: 134313, 381079: 134313, 885824: 134313, 4220: 87928, 2424: 87928, 234258601984: 87928, 627440: 593966, 1119272: 321876, 471592: 321876, 1076768: 230389, 20359: 223305, 98272: 223305, 355123: 513899, 980288: 513899, 1246784: 41895, 24620: 40453, 42176: 40453, 23350: 153354, 48320: 153354, 5049: 129974, 4752: 129974, 769120: 98120, 5281: 81869, 6280: 81869, 3827: 81869, 7888: 81869, 319: 258241, 598: 201189, 28880: 385790, 86080: 385790, 321302: 106664, 648832: 106664, 1449184: 103324, 1497760: 240852, 38425: 199843, 88288: 199843, 4518: 179953, 7824: 179953, 6865: 201289, 4080: 257144, 989736: 645100, 32240: 234456, 5312: 234456, 6060: 234456, 8680: 234456, 397597280256: 234456, 310946504704: 234456, 358007: 71218, 969792: 71218, 1560504: 71218, 36254: 71218, 69760: 71218, 33755: 105626, 78624: 105626, 4809: 262717, 2849: 262717, 7920: 262717, 29413: 430856, 41568: 430856, 8125: 201161, 5504: 201161, 9002: 201161, 7520: 201161, 7545: 229695, 344767836160: 229695, 228: 295702, 883: 95064, 894: 95064, 186402304: 57212, 391: 95980, 983: 93977, 366: 386164, 659: 594846, 938: 319460, 20851: 120488, 57184: 120488, 617320: 212456, 34779: 212456, 93024: 212456, 6525: 171398, 3760: 171398, 946: 171398, 504: 247420, 79348896: 93103, 47021568: 93103, 906: 432170, 372034: 19614, 646016: 19614, 3215812160: 196967, 540408: 262769, 1738616: 262769, 72633264: 147535, 63760048: 45220, 135494656: 45220, 439: 125375, 208: 267388, 3035562816: 125375, 418: 433691, 2658677824: 126028, 405855: 160128, 977472: 160128, 38302: 73424, 98560: 73424, 1969352: 659511, 1920776: 114886, 23268: 191345, 55168: 191345, 4759: 252499, 7007: 252499, 8976: 252499, 724592: 226497, 811624: 135076, 487784: 159047, 795432: 237403, 888536: 106384, 30355: 106384, 62816: 106384, 1103080: 335854, 1092960: 192041, 35189: 192041, 58784: 192041, 80342680: 223331, 166259456: 223331, 3543538240: 120431, 572: 265302, 43447184: 122871, 3953195840: 75072, 246187: 33171, 831296: 33171, 576840: 497196, 285384: 33171, 386584: 49256, 900: 251758, 51820472: 160436, 121440000: 160436, 805: 160436, 639584: 326049, 1445136: 705031, 977592: 373161, 1042360: 348549, 465520: 439483, 40597: 81258, 1544312: 401528, 1673848: 443724, 1888392: 135044, 7321: 43592, 313830494208: 43592, 7412: 43592, 4952: 43592, 7882: 43592, 2656: 43592, 22531: 98104, 16800: 98104, 32403: 44029, 91616: 44029, 8150: 43010, 4456: 43010, 6923: 43010, 6992: 88511, 30314: 175849, 66240: 175849, 5463: 272173, 9904: 272173, 8821: 272173, 4016: 272173, 7777: 145834, 2200: 145834, 361678501888: 145834, 473616: 55338, 522192: 356324, 1216424: 55338, 1153680: 209798, 380512: 134785, 26095: 112422, 18912: 112422, 7686: 112422, 1400: 112422, 5252: 112422, 6848: 112422, 44109032: 146015, 158746368: 146015, 402578: 141812, 716672: 141812, 1898512: 273569, 51156600: 97993, 176881408: 97993, 259821: 222435, 236224: 222435, 771144: 97993, 1791240: 97993, 1667776: 144940, 22121: 140147, 51040: 140147, 7122: 140147, 2536: 140147, 240813123584: 140147, 32895: 242333, 50528: 242333, 7843: 78456, 249465092096: 78456, 4178: 112948, 304391983104: 112948, 1030216: 164598, 279312: 119301, 3482089600: 105108, 70145768: 169528, 273847: 177425, 912448: 177425, 52484344: 124175, 65998592: 124175, 1882320: 49240, 269192: 43542, 550528: 183135, 59116992: 53825, 118784512: 53825, 3469799872: 111903, 71720440: 88096, 77397760: 88096, 2343241472: 194542, 27324: 58600, 919: 45585, 828: 45585, 24374: 25894, 62720: 25894, 855: 136032, 6359: 77191, 302294536192: 77191, 6931: 77191, 5928: 77191, 7597: 77191, 2864: 77191, 1536216: 65410, 1273096: 15028, 939136: 18298, 20810: 1305, 60608: 1305, 6716: 1305, 5375: 1305, 61521504: 18878, 120209408: 18878, 27078: 207207, 36736: 207207, 205: 68420, 201: 68420, 1648: 14848, 338999857152: 14848, 1568600: 87029, 1113200: 133582, 215250: 379720, 489344: 379720, 1420848: 251072, 26668: 295568, 70976: 295568, 692: 91322, 491: 215528, 2855313472: 200638, 206991: 151752, 792128: 151752, 1787192: 81891, 1809456: 81891, 377278263296: 49623, 72797208: 120074, 189705472: 120074, 383177: 74423, 332736: 74423, 21466: 142439, 5824: 142439, 1953160: 86710, 1329768: 28679, 1849936: 28679, 1600984: 60207, 33960: 5056, 61504: 5056, 67905200: 230045, 193785856: 230045, 276338: 93362, 630656: 93362, 416944: 120307, 2005784: 110606, 259072: 141725, 799480: 344935, 1137488: 367916, 265144: 9701, 483736: 64471, 45436776: 40837, 47863552: 40837, 59863848: 37723, 56412928: 37723, 47094432: 164207, 111660032: 164207, 1406680: 31119, 81670424: 53606, 55376640: 53606, 243697: 320769, 113088: 320769, 2244923648: 55597, 2957727872: 51447, 321695: 42568, 920128: 42568, 439208: 146005, 1499784: 146005, 418968: 184572, 1117248: 470214, 318811: 67430, 930624: 67430, 3437027264: 497844, 3273164224: 717007, 837: 37130, 397204: 40046, 8960: 40046, 8233: 72107, 2272: 164395, 409526509568: 72107, 38221: 99289, 5408: 99289, 506000: 278557, 5066: 215382, 406: 216185, 803528: 176706, 3191232704: 24000, 325366: 54346, 452224: 54346, 6890: 12785, 1008: 12785, 223902457856: 12785, 5397: 218469, 290758578176: 218469, 31584: 51786, 60096: 51786, 7337: 51786, 285777141760: 51786, 6832: 76754, 322089191424: 76754, 325: 46391, 452: 46391, 268: 26747, 866: 26747, 476: 26747, 38384: 149671, 91712: 149671, 7453: 140924, 9872: 140924, 4417: 140924, 1776: 140924, 1088912: 12330, 5182: 135109, 245794560000: 135109, 1629320: 135109, 301901: 115712, 264896: 115712, 848056: 28351, 1724448: 28351, 1350008: 80577, 35435: 101282, 38240: 101282, 7022: 69320, 6728: 69320, 409133238272: 69320, 469568: 212906, 1121296: 479788, 862224: 161141, 495880: 85060, 1607056: 85060, 66745448: 85060, 88408320: 85060, 1097008: 16666, 35476: 16666, 34816: 16666, 1949112: 81266, 78685024: 71384, 102462976: 71384, 44855888: 77988, 96374784: 77988, 29208: 61372, 58688: 61372, 552552: 129060, 1714328: 129060, 318: 332957, 765: 132304, 41042672: 39016, 333231: 39016, 878144: 39016, 3097011456: 34108, 268866: 31580, 476032: 31580, 3654145792: 32494, 4344: 210948, 7184: 104507, 2376014080: 421942, 758: 199663, 311: 23480, 657: 34080, 914: 34080, 495: 73457, 3252681344: 73457, 6674: 73457, 5448: 73457, 8840: 73457, 8320: 73457, 77110352: 30982, 31736320: 30982, 2085157184: 141572, 765072: 153744, 843: 34477, 756: 46706, 364: 169354, 169: 169354, 4195: 110614, 3472: 110614, 276338630656: 110614, 35066: 244464, 69056: 244464, 55635712: 214734, 1860056: 39091, 1675872: 39091, 419: 33487, 852: 33487, 4858: 87088, 6120: 87088, 383177332736: 87088, 7959: 87088, 7848: 87088, 2623: 87088, 1040: 89384, 25275: 114603, 87392: 114603, 5173: 220685, 7488: 220685, 259821236224: 259252, 381: 114603, 885: 114603, 5331: 210676, 402971987968: 210676, 7014: 146409, 5768: 146409, 2179378432: 198969, 41206616: 193262, 198902528: 193262, 21547: 296864, 98976: 296864, 5032: 263776, 8784: 263776, 4378: 263776, 3168: 263776, 6450: 263776, 6904: 280452, 7312: 265549, 3072: 263776, 51073616: 26637, 183811584: 26637, 2494814784: 207540, 2732416192: 69764, 68320120: 91519, 159134976: 91519, 811: 173485, 624: 484113, 487: 136915, 55799656: 13405, 193591552: 13405, 3871264320: 13405, 383963: 88760, 875328: 88760, 3830298560: 85873, 46596528: 233404, 153241088: 233404, 6508: 125564, 2461: 125564, 274: 28462, 183: 28462, 65253760: 201411, 397597: 201411, 280256: 201411, 310946: 201411, 504704: 201411, 779: 32930, 82830176: 73954, 160754176: 73954, 74954792: 180357, 1914704: 147605, 1020096: 211508, 5537: 46211, 5480: 152666, 5872: 152666, 7435: 152666, 3664: 152666, 24005: 118499, 93536: 118499, 39327: 118499, 12960: 118499, 4272: 127941, 4235: 127941, 5530: 43194, 3776: 43194, 1892440: 99571, 4543: 34492, 6776: 34492, 4786: 34492, 3552: 34492, 5986: 31863, 3848: 31863, 5641: 31863, 2847120320: 26420, 59365944: 65063, 97993984: 65063, 3809815680: 42433, 79846800: 51259, 2920858688: 73663, 542432: 23121, 1752784: 23121, 963424: 23121, 73958984: 23674, 92683008: 23674, 3887650624: 97340, 330347: 51881, 888640: 51881, 65583672: 37813, 185430784: 37813, 3686918400: 184457, 245794: 116683, 560000: 116683, 3297743680: 116683, 524: 229980, 477: 140468, 3158460096: 61961, 73378096: 61961, 141194240: 61961, 538: 15044, 759: 77780, 667: 94848, 6268: 21497, 2318: 21497, 6944: 21497, 542: 19996, 3547634816: 19996, 963: 94671, 7395: 20791, 8984: 20791, 9268: 20791, 3008: 20791, 1428944: 258890, 6599: 106441, 8592: 106441, 305: 251306, 3477993024: 251306, 508024: 2429, 1639440: 2429, 64257952: 55352, 93913600: 55352, 38098: 35852, 15680: 35852, 234258: 75717, 601984: 75717, 40678: 98156, 99968: 98156, 2777478528: 78122, 403758: 45637, 530560: 45637, 1184040: 86973, 26340: 286081, 98368: 286081, 34657: 198268, 6342: 60659, 8112: 60659, 330347888640: 60659, 36582: 81791, 42368: 81791, 1803384: 4734, 1941016: 4734, 74705840: 53330, 30311424: 53330, 188: 157666, 62932232: 41135, 403: 39595, 2396496960: 75401, 7868: 62099, 207385063424: 62099, 999: 137962, 77523248: 62258, 199485440: 62258, 338606: 118185, 585856: 118185, 39531: 63366, 95840: 63366, 5347: 86716, 374918635520: 86716, 34288: 22729, 34112: 22729, 775192: 118971, 5911: 45501, 240419852288: 45501, 46264592: 31860, 180961792: 31860, 45602744: 84482, 34003200: 84482, 63428112: 71034, 163215360: 71034, 321816: 124485, 1947088: 124485, 613: 8746, 366266: 23092, 667008: 23092, 375705: 94800, 178112: 94800, 548: 76022, 722: 70121, 56214576: 58022, 158940672: 58022, 360891: 6699, 959296: 6699, 206598: 13507, 520832: 13507, 288661: 13507, 131264: 13507, 3691014976: 73007, 55303776: 51035, 2834830592: 67774, 370: 21001, 756976: 54300, 35107: 49935, 65632: 49935, 892584: 51765, 31912: 21041, 32704: 21041, 64589888: 17642, 66192896: 17642, 1677896: 7211, 609224: 92385, 263491: 7211, 768320: 7211, 39450: 59627, 2688: 76303, 3109301184: 56618, 6152: 16191, 1504: 16191, 243303841792: 16191, 63594080: 90727, 149355008: 90727, 69315928: 90727, 75972864: 90727, 2203957888: 10937, 1204280: 35886, 42202424: 104430, 115740416: 104430, 28348: 56837, 30592: 56837, 850080: 166231, 239: 75314, 296919: 53740, 828480: 53740, 224295: 179621, 729152: 179621, 2437462720: 30363, 287: 3592, 2421076416: 3592, 3502572480: 99717, 2691450432: 25020, 3744270464: 25020, 558: 59322, 2580842880: 59322, 5944: 54943, 9799: 54943, 3984: 54943, 6143: 77802, 8520: 77802, 257330518016: 77802, 3240391616: 51758, 81504456: 50521, 69236992: 50521, 53478128: 100897, 185236480: 100897, 3428834112: 26717, 692208: 106623, 274241: 33143, 183744: 33143, 857: 80197, 170: 1303, 7785: 7217, 5184: 7217, 347651825664: 7217, 929: 10621, 134: 10621, 2220344192: 14491, 71803424: 14491, 70467584: 14491, 2523490816: 36203, 49830880: 34899, 85364224: 34899, 22858: 36925, 89408: 36925, 5223: 36925, 5392: 36925, 8678: 36925, 9120: 36925, 68818024: 17244, 117553920: 17244, 629: 17491, 464: 21358, 68901008: 15241, 110623744: 15241, 1109152: 63903, 1461328: 59010, 321695920128: 48959, 4626: 27051, 4592: 27051, 366266667008: 27051, 7768: 109872, 9216: 109872, 375705178112: 109872, 7404: 60093, 1968: 60093, 8575: 60093, 2832: 60093, 1823624: 85174, 23964: 63543, 96960: 63543, 70641648: 18102, 167490048: 18102, 7934: 79726, 8896: 79726, 4702: 79726, 1568: 79726, 7047: 65635, 5680: 65635, 367053209600: 65635, 2756995648: 17912, 945: 17912, 6376: 38650, 274241183744: 38650, 385: 45294, 6724: 79031, 3352: 79031, 4682: 79031, 7264: 79031, 40351: 62620, 27360: 62620, 6591: 93053, 5608: 93053, 319205201920: 93053, 935088: 135690, 22449: 46976, 23648: 46976, 29577: 43371, 27872: 43371, 695: 35688, 930: 57571, 7619: 21336, 218527750144: 21336, 2056: 21336, 265982486528: 21336, 6044: 70322, 4736: 70322, 497904: 36145, 48503136: 54699, 196247040: 54699, 1443112: 84441, 39409: 90857, 6112: 90857, 378488: 23971, 1681944: 23971, 1362152: 21081, 945208: 21081, 40924: 86008, 79424: 86008, 6458: 15357, 6619: 15357, 2896: 15357, 53561112: 8925, 178306304: 8925, 54473936: 18330, 102074368: 18330, 75782608: 18330, 142619136: 18330, 34001: 20004, 58080: 20004, 759000: 89534, 629464: 20231, 21588: 9671, 95552: 9671, 30724: 9671, 32000: 9671, 40228: 9671, 37632: 9671, 234: 64595, 601: 64595, 2609518912: 131234, 76861400: 131234, 52526848: 131234, 31502: 52632, 66944: 52632, 815672: 33482, 207385: 52524, 20278: 45562, 5120: 45562, 6583: 45562, 2624: 46294, 333231878144: 45562, 7901: 92288, 6960: 92288, 7474: 92288, 36172: 59883, 76608: 59883, 36623: 59883, 38944: 59883, 278: 36742, 40269: 59139, 34208: 59139, 1694088: 31354, 358248: 54371, 69896816: 18533, 27461632: 18533, 451352: 8050, 44606936: 7672, 117165312: 7672, 44938872: 10600, 89444608: 10600, 392615: 40033, 843840: 40033, 837936: 42623, 391829: 9689, 301248: 9689, 78353088: 9689, 130183680: 9689, 313830: 37315, 494208: 37315, 8216: 59609, 8328: 59609, 49332976: 22037, 126945280: 22037, 5381: 77847, 318811930624: 77847, 5447: 15510, 3936: 15510, 206598520832: 15510, 7578: 15510, 288661131264: 15510, 4726: 112793, 9779: 112793, 9680: 112793, 30396: 22025, 59392: 22025, 30970: 29041, 11456: 29041, 36541: 27878, 45792: 27878, 76197528: 24725, 107968256: 24725, 68652056: 24725, 131414272: 24725, 25234: 30379, 90816: 30379, 4983: 29334, 4224: 29334, 767: 168471, 836: 168471, 1307504: 14174, 313: 33784, 830: 32129, 494: 32129, 6558: 32220, 3672: 32220, 375311906816: 32220, 294: 56666, 251: 2702, 810: 2702, 742808: 40773, 34902: 20777, 82752: 20777, 214857: 78780, 218048: 78780, 6989: 15606, 2746: 15606, 1632: 15606, 3613180032: 2800, 939: 15441, 3400158080: 23373, 6293: 35119, 2232: 35119, 246: 42140, 62683280: 24913, 23186944: 24913, 237929: 12529, 134080: 12529, 3805719104: 7855, 57625304: 19363, 41127680: 19363, 414: 50087, 82168328: 70149, 2576746304: 12641, 62019408: 8073, 78628352: 8073, 779240: 38567, 538384: 16791, 360272: 69303, 266: 20313, 36910: 62649, 14976: 62649, 34697: 94550, 99872: 94550, 1501808: 29919, 73129144: 2026, 161984768: 2026, 3846684864: 11380, 2646388096: 12189, 246187831296: 38183, 141: 38183, 191: 56513, 73212128: 51071, 155054592: 51071, 74124952: 51071, 78822656: 51071, 562672: 31495, 829: 8103, 7835: 8103, 3088: 8103, 263491768320: 8103, 748880: 17661, 7711: 25878, 3173: 25878, 6320: 25878, 303: 11909, 27569: 15287, 95648: 15287, 1912680: 15287, 218527: 18062, 750144: 18062, 265982: 18062, 486528: 18062, 3895843776: 1304, 4493: 9022, 8872: 9022, 3396061504: 6144, 4369: 7258, 391436029952: 7258, 6218: 7258, 5376: 7258, 6476: 7258, 8000: 7258, 8142: 7258, 1472: 7258, 7168: 7258, 613272: 10088, 26914: 20927, 50432: 20927, 37442: 20927, 70464: 20927, 38958: 1045, 43776: 1045, 5579: 11153, 9656: 11153, 391829301248: 11153, 38712: 11153, 64320: 11153, 26463: 10198, 88096: 10198, 5107: 22396, 3616: 22396, 372034646016: 22396, 554576: 23971, 370392: 23971, 34042: 17415, 54656: 17415, 347651: 6072, 825664: 6072, 951: 1655, 1112: 7456, 360891959296: 7456, 3039659392: 25960, 3453413568: 25654, 223902: 11293, 457856: 11293, 646: 16304, 9144: 1773, 327857170432: 1773, 38466: 9625, 84864: 9625, 6881: 14725, 8024: 14725, 237929134080: 14725, 436: 5183, 60622848: 5183, 1066648: 13044, 1518000: 13044, 1987568: 13044, 983664: 13044, 52152408: 9354, 93719296: 9354, 673992: 28835, 467544: 28835, 36500: 3480, 49216: 3480, 39286: 3480, 16384: 3480, 68735040: 4452, 124484096: 4452, 77027368: 5901, 38666496: 5901, 391436: 6015, 29952: 6015, 882: 3867, 891: 5421, 959: 5421, 131: 11368, 237142: 5692, 591488: 5692, 31093: 47323, 1184: 47323, 25767: 10664, 46304: 10664, 1900536: 13119, 7702: 4893, 7368: 4893, 3866: 4893, 882464: 4329, 6062: 4329, 2848: 4329, 3764753344: 33381, 3391964928: 33381, 4933: 19055, 2976: 19055, 256937246720: 19055, 3650049216: 4048, 3928616384: 4048, 30642: 9467, 38848: 9467, 187: 27958, 831: 27958, 451: 6836, 1880296: 9231, 271216: 9231, 22203: 12233, 44192: 12233, 7180: 12233, 7046: 12233, 7584: 12233, 2511201088: 6416, 2081060608: 1485, 67160368: 1485, 53757440: 1485, 6939: 16676, 344080: 1097, 22039: 9088, 57888: 9088, 4460: 6872, 6936: 6872, 237142591488: 6872, 50826688: 4731, 251955: 3179, 810304: 3179, 2158895552: 11283, 3072432000: 11283, 4022837632: 11283, 1240712: 7320, 49001040: 2691, 154665984: 2691, 6201: 7014, 9408: 7014, 7862: 7014, 8352: 7014, 36131: 2455, 80032: 2455, 34534: 21110, 13568: 21110, 223: 9326, 5082: 4002, 6688: 4002, 73876000: 2985, 99613184: 2985, 79514864: 2985, 33161216: 2985, 508: 1988, 3318226560: 1988, 4900: 2296, 313043951616: 2296, 7885: 732, 8860: 732, 5215: 7852, 2408: 7852, 9371: 7852, 9296: 7852, 78850992: 931, 88602624: 931, 248285: 866, 278208: 866, 313043: 2004, 951616: 2004, 1028192: 1797, 33182: 1797, 26560: 1797, 287408: 4205, 1196184: 4205, 580888: 3025, 24210: 3025, 76416: 3025, 4211: 923, 248285278208: 923, 1924824: 1442, 1785168: 3270, 25112: 5386, 1088: 5386, 7387: 2544, 6000: 2544, 9961: 2544, 3184: 2544, 7951: 2544, 4864: 2544, 3316: 2544, 6873: 3747, 5040: 3747, 251955810304: 3747, 327857: 1419, 170432: 1419, 3064238848: 11032, 42119440: 1038, 122670592: 1038, 912824: 5916})\n", - "3811\n" - ] - } - ], - "source": [ - "print(stones)\n", - "stones=step(stones)\n", - " \n", - "print(len(stones))" - ] - }, - { - "cell_type": "code", - "execution_count": 271, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "defaultdict(, {2: 1, 0: 1})\n" - ] - } - ], - "source": [ - "from collections import defaultdict\n", - "\n", - "def step(stones):\n", - " output = defaultdict(int) # Use defaultdict with int, which defaults to 0\n", - " for stone, count in stones.items(): # Iterate over the dictionary of stones with their counts\n", - " if stone == 0:\n", - " output[1] += count # Zero turns into 1, add the count to the 1 key\n", - " elif (tx_stone := str(stone)) and len(tx_stone) % 2 == 0:\n", - " half = len(tx_stone) // 2\n", - " left = int(tx_stone[:half])\n", - " right = int(tx_stone[half:])\n", - " output[left] += count # Add the count to the left split part\n", - " output[right] += count # Add the count to the right split part\n", - " else:\n", - " output[stone * 2024] += count # Multiply by 2024 and add to the count for that stone\n", - " return output\n", - "\n", - "# Example usage:\n", - "stones = {20: 1} # Example input: stone values and their counts\n", - "result = step(stones)\n", - "print(result)" - ] } ], "metadata": { "kernelspec": { - "display_name": "pdf", + "display_name": "Python 3", "language": "python", "name": "python3" }, @@ -143,7 +99,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.7" + "version": "3.8.10" } }, "nbformat": 4, diff --git a/4/4.ipynb b/4/4.ipynb index 28110e4..3f745e2 100644 --- a/4/4.ipynb +++ b/4/4.ipynb @@ -2,12 +2,12 @@ "cells": [ { "cell_type": "code", - "execution_count": 87, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "#read lines from input and store each list of space separeted integers into left and right lists respectively.\n", - "with open('4/input', 'r') as f:\n", + "with open('input', 'r') as f:\n", " data=f.readlines()\n", "\n", "data = [line.strip() for line in data]\n" @@ -15,7 +15,7 @@ }, { "cell_type": "code", - "execution_count": 88, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -24,7 +24,7 @@ "421" ] }, - "execution_count": 88, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -36,7 +36,7 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -45,7 +45,7 @@ "463" ] }, - "execution_count": 89, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -57,7 +57,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -66,7 +66,7 @@ "1640" ] }, - "execution_count": 90, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -89,7 +89,7 @@ }, { "cell_type": "code", - "execution_count": 91, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -98,7 +98,7 @@ "2524" ] }, - "execution_count": 91, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -109,7 +109,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -122,29 +122,16 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "array([[ True, False, True],\n", - " [False, True, False],\n", - " [ True, False, True]])" - ] - }, - "execution_count": 106, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "mask = pattern != '.'" ] }, { "cell_type": "code", - "execution_count": 129, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -153,7 +140,7 @@ "1873" ] }, - "execution_count": 129, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -173,9 +160,21 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3", "language": "python", "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.10" } }, "nbformat": 4, diff --git a/5/5.ipynb b/5/5.ipynb index 6d07f10..b30d73f 100644 --- a/5/5.ipynb +++ b/5/5.ipynb @@ -2,13 +2,13 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import networkx as nx\n", "\n", - "with open('5/input', 'r') as f:\n", + "with open('input', 'r') as f:\n", " data=f.readlines()\n", "\n", "read_rules = True\n", @@ -29,7 +29,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -45,7 +45,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -54,7 +54,7 @@ "5087" ] }, - "execution_count": 3, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -63,1120 +63,37 @@ "sum([int(sequence[len(sequence)//2]) for sequence in sequences if test_sequence(sequence)])" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Part 2" + ] + }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[['91', '76', '94', '81', '45', '78', '21'],\n", - " ['34',\n", - " '76',\n", - " '63',\n", - " '42',\n", - " '31',\n", - " '41',\n", - " '83',\n", - " '56',\n", - " '15',\n", - " '53',\n", - " '23',\n", - " '28',\n", - " '79',\n", - " '71',\n", - " '94',\n", - " '77',\n", - " '91',\n", - " '49',\n", - " '74'],\n", - " ['57',\n", - " '25',\n", - " '69',\n", - " '86',\n", - " '61',\n", - " '37',\n", - " '29',\n", - " '74',\n", - " '94',\n", - " '45',\n", - " '53',\n", - " '84',\n", - " '83',\n", - " '21',\n", - " '91',\n", - " '34',\n", - " '76',\n", - " '16',\n", - " '66',\n", - " '85',\n", - " '82'],\n", - " ['91',\n", - " '57',\n", - " '98',\n", - " '86',\n", - " '21',\n", - " '85',\n", - " '78',\n", - " '54',\n", - " '34',\n", - " '82',\n", - " '76',\n", - " '29',\n", - " '45',\n", - " '84',\n", - " '99',\n", - " '46',\n", - " '61',\n", - " '16',\n", - " '66',\n", - " '25',\n", - " '89'],\n", - " ['79',\n", - " '99',\n", - " '58',\n", - " '49',\n", - " '22',\n", - " '78',\n", - " '89',\n", - " '35',\n", - " '63',\n", - " '19',\n", - " '12',\n", - " '28',\n", - " '11',\n", - " '71',\n", - " '65',\n", - " '53',\n", - " '17'],\n", - " ['12', '23', '61', '74', '91', '34', '53'],\n", - " ['76',\n", - " '53',\n", - " '17',\n", - " '49',\n", - " '79',\n", - " '63',\n", - " '56',\n", - " '15',\n", - " '28',\n", - " '91',\n", - " '58',\n", - " '34',\n", - " '22',\n", - " '74',\n", - " '77'],\n", - " ['41',\n", - " '91',\n", - " '15',\n", - " '31',\n", - " '79',\n", - " '29',\n", - " '83',\n", - " '58',\n", - " '94',\n", - " '17',\n", - " '56',\n", - " '76',\n", - " '63'],\n", - " ['41',\n", - " '63',\n", - " '54',\n", - " '65',\n", - " '84',\n", - " '66',\n", - " '99',\n", - " '78',\n", - " '28',\n", - " '85',\n", - " '89',\n", - " '46',\n", - " '35',\n", - " '45',\n", - " '79',\n", - " '82',\n", - " '77'],\n", - " ['23', '35', '58', '98', '49', '12', '11'],\n", - " ['84', '56', '41', '46', '28', '98', '79'],\n", - " ['84', '76', '23', '53', '25'],\n", - " ['16', '77', '75', '41', '12', '11', '42', '58', '89'],\n", - " ['46', '82', '84', '16', '41', '65', '45', '98', '56', '78', '99'],\n", - " ['54',\n", - " '71',\n", - " '77',\n", - " '35',\n", - " '11',\n", - " '41',\n", - " '89',\n", - " '16',\n", - " '65',\n", - " '21',\n", - " '46',\n", - " '85',\n", - " '49',\n", - " '56',\n", - " '79'],\n", - " ['15',\n", - " '35',\n", - " '79',\n", - " '78',\n", - " '41',\n", - " '89',\n", - " '28',\n", - " '49',\n", - " '77',\n", - " '56',\n", - " '71',\n", - " '17',\n", - " '19',\n", - " '75',\n", - " '98'],\n", - " ['57',\n", - " '76',\n", - " '37',\n", - " '17',\n", - " '83',\n", - " '91',\n", - " '81',\n", - " '49',\n", - " '86',\n", - " '58',\n", - " '69',\n", - " '74',\n", - " '11',\n", - " '15',\n", - " '22',\n", - " '31',\n", - " '61',\n", - " '94',\n", - " '25'],\n", - " ['46',\n", - " '65',\n", - " '25',\n", - " '98',\n", - " '99',\n", - " '61',\n", - " '45',\n", - " '82',\n", - " '89',\n", - " '81',\n", - " '85',\n", - " '69',\n", - " '21',\n", - " '37',\n", - " '35',\n", - " '54',\n", - " '78',\n", - " '86',\n", - " '76'],\n", - " ['89',\n", - " '12',\n", - " '83',\n", - " '74',\n", - " '11',\n", - " '77',\n", - " '28',\n", - " '15',\n", - " '71',\n", - " '63',\n", - " '35',\n", - " '19',\n", - " '79'],\n", - " ['12', '19', '28', '23', '74', '89', '77'],\n", - " ['98',\n", - " '85',\n", - " '77',\n", - " '37',\n", - " '99',\n", - " '41',\n", - " '25',\n", - " '35',\n", - " '19',\n", - " '16',\n", - " '65',\n", - " '81',\n", - " '66',\n", - " '89',\n", - " '61',\n", - " '57',\n", - " '75',\n", - " '84',\n", - " '21',\n", - " '46',\n", - " '82'],\n", - " ['11',\n", - " '49',\n", - " '91',\n", - " '94',\n", - " '76',\n", - " '15',\n", - " '23',\n", - " '31',\n", - " '34',\n", - " '71',\n", - " '28',\n", - " '79',\n", - " '42',\n", - " '17',\n", - " '63',\n", - " '69',\n", - " '22'],\n", - " ['23', '94', '74', '91', '31', '69', '25', '53', '15', '81', '22'],\n", - " ['75', '85', '98', '37', '63'],\n", - " ['78',\n", - " '54',\n", - " '37',\n", - " '82',\n", - " '41',\n", - " '16',\n", - " '46',\n", - " '71',\n", - " '99',\n", - " '66',\n", - " '75',\n", - " '56',\n", - " '21',\n", - " '84',\n", - " '65'],\n", - " ['34', '53', '71', '58', '86', '81', '57'],\n", - " ['85',\n", - " '19',\n", - " '77',\n", - " '82',\n", - " '98',\n", - " '56',\n", - " '49',\n", - " '75',\n", - " '41',\n", - " '89',\n", - " '71',\n", - " '17',\n", - " '12',\n", - " '79',\n", - " '35'],\n", - " ['23',\n", - " '22',\n", - " '37',\n", - " '76',\n", - " '15',\n", - " '31',\n", - " '86',\n", - " '94',\n", - " '82',\n", - " '61',\n", - " '74',\n", - " '58',\n", - " '57'],\n", - " ['22', '45', '91', '25', '42', '83', '15', '61', '66'],\n", - " ['35', '25', '45', '57', '75'],\n", - " ['81',\n", - " '75',\n", - " '77',\n", - " '46',\n", - " '25',\n", - " '37',\n", - " '84',\n", - " '85',\n", - " '89',\n", - " '16',\n", - " '78',\n", - " '19',\n", - " '66',\n", - " '69',\n", - " '98',\n", - " '35',\n", - " '21',\n", - " '82',\n", - " '61',\n", - " '57',\n", - " '65'],\n", - " ['58',\n", - " '41',\n", - " '77',\n", - " '15',\n", - " '42',\n", - " '71',\n", - " '12',\n", - " '35',\n", - " '53',\n", - " '83',\n", - " '19',\n", - " '74',\n", - " '63',\n", - " '75',\n", - " '22',\n", - " '89',\n", - " '79'],\n", - " ['11',\n", - " '23',\n", - " '49',\n", - " '19',\n", - " '42',\n", - " '94',\n", - " '34',\n", - " '56',\n", - " '75',\n", - " '53',\n", - " '22',\n", - " '83',\n", - " '28',\n", - " '15',\n", - " '31',\n", - " '71',\n", - " '17'],\n", - " ['35',\n", - " '53',\n", - " '17',\n", - " '22',\n", - " '77',\n", - " '12',\n", - " '75',\n", - " '83',\n", - " '11',\n", - " '41',\n", - " '71',\n", - " '23',\n", - " '56'],\n", - " ['41',\n", - " '85',\n", - " '79',\n", - " '11',\n", - " '65',\n", - " '49',\n", - " '77',\n", - " '75',\n", - " '17',\n", - " '42',\n", - " '99',\n", - " '28',\n", - " '71',\n", - " '35',\n", - " '89',\n", - " '63',\n", - " '78',\n", - " '22',\n", - " '19'],\n", - " ['45',\n", - " '85',\n", - " '35',\n", - " '66',\n", - " '75',\n", - " '63',\n", - " '98',\n", - " '84',\n", - " '89',\n", - " '21',\n", - " '78',\n", - " '54',\n", - " '82',\n", - " '25',\n", - " '77',\n", - " '16',\n", - " '19',\n", - " '41',\n", - " '99'],\n", - " ['53',\n", - " '74',\n", - " '25',\n", - " '83',\n", - " '23',\n", - " '54',\n", - " '29',\n", - " '81',\n", - " '86',\n", - " '82',\n", - " '22',\n", - " '57',\n", - " '61',\n", - " '94',\n", - " '76',\n", - " '91',\n", - " '69',\n", - " '34',\n", - " '31'],\n", - " ['65', '75', '16', '78', '99', '35', '98'],\n", - " ['86',\n", - " '91',\n", - " '11',\n", - " '57',\n", - " '53',\n", - " '29',\n", - " '23',\n", - " '69',\n", - " '83',\n", - " '81',\n", - " '31',\n", - " '17',\n", - " '71'],\n", - " ['71',\n", - " '17',\n", - " '42',\n", - " '63',\n", - " '41',\n", - " '74',\n", - " '58',\n", - " '22',\n", - " '53',\n", - " '56',\n", - " '28',\n", - " '83',\n", - " '79',\n", - " '91',\n", - " '34',\n", - " '15',\n", - " '19',\n", - " '23',\n", - " '94'],\n", - " ['34',\n", - " '37',\n", - " '23',\n", - " '29',\n", - " '54',\n", - " '57',\n", - " '94',\n", - " '61',\n", - " '84',\n", - " '45',\n", - " '22',\n", - " '69',\n", - " '83'],\n", - " ['21', '79', '12', '98', '42', '16', '78', '11', '28'],\n", - " ['28',\n", - " '49',\n", - " '86',\n", - " '58',\n", - " '81',\n", - " '69',\n", - " '53',\n", - " '74',\n", - " '17',\n", - " '57',\n", - " '12',\n", - " '91',\n", - " '11',\n", - " '23',\n", - " '25',\n", - " '22',\n", - " '42',\n", - " '76',\n", - " '83',\n", - " '29',\n", - " '31',\n", - " '94',\n", - " '34'],\n", - " ['84',\n", - " '78',\n", - " '75',\n", - " '35',\n", - " '19',\n", - " '65',\n", - " '69',\n", - " '21',\n", - " '85',\n", - " '81',\n", - " '66',\n", - " '25',\n", - " '99',\n", - " '16',\n", - " '77',\n", - " '98',\n", - " '45'],\n", - " ['77', '94', '28', '49', '31'],\n", - " ['11',\n", - " '58',\n", - " '74',\n", - " '83',\n", - " '41',\n", - " '34',\n", - " '19',\n", - " '75',\n", - " '42',\n", - " '49',\n", - " '12',\n", - " '23',\n", - " '15',\n", - " '71',\n", - " '94',\n", - " '53',\n", - " '22'],\n", - " ['86',\n", - " '74',\n", - " '49',\n", - " '71',\n", - " '28',\n", - " '22',\n", - " '63',\n", - " '83',\n", - " '15',\n", - " '34',\n", - " '17',\n", - " '58',\n", - " '91',\n", - " '23',\n", - " '53',\n", - " '69',\n", - " '12',\n", - " '31',\n", - " '11',\n", - " '76',\n", - " '42'],\n", - " ['98',\n", - " '85',\n", - " '75',\n", - " '99',\n", - " '63',\n", - " '35',\n", - " '16',\n", - " '65',\n", - " '71',\n", - " '37',\n", - " '77',\n", - " '82',\n", - " '79',\n", - " '41',\n", - " '19',\n", - " '54',\n", - " '89',\n", - " '66',\n", - " '21',\n", - " '78',\n", - " '84',\n", - " '45',\n", - " '56'],\n", - " ['29', '45', '85', '91', '94', '78', '81'],\n", - " ['56', '19', '46', '15', '35', '22', '71'],\n", - " ['46',\n", - " '66',\n", - " '29',\n", - " '61',\n", - " '16',\n", - " '65',\n", - " '57',\n", - " '54',\n", - " '76',\n", - " '89',\n", - " '98',\n", - " '21',\n", - " '25',\n", - " '91',\n", - " '45',\n", - " '85',\n", - " '99',\n", - " '78',\n", - " '37'],\n", - " ['76',\n", - " '31',\n", - " '94',\n", - " '84',\n", - " '15',\n", - " '61',\n", - " '83',\n", - " '57',\n", - " '58',\n", - " '91',\n", - " '25',\n", - " '34',\n", - " '37',\n", - " '53',\n", - " '66',\n", - " '81',\n", - " '22'],\n", - " ['94',\n", - " '29',\n", - " '61',\n", - " '74',\n", - " '69',\n", - " '34',\n", - " '31',\n", - " '91',\n", - " '37',\n", - " '84',\n", - " '86',\n", - " '25',\n", - " '15',\n", - " '83',\n", - " '23',\n", - " '81',\n", - " '21'],\n", - " ['74',\n", - " '25',\n", - " '12',\n", - " '58',\n", - " '29',\n", - " '69',\n", - " '61',\n", - " '94',\n", - " '53',\n", - " '42',\n", - " '57',\n", - " '49',\n", - " '11',\n", - " '86',\n", - " '23'],\n", - " ['41',\n", - " '84',\n", - " '85',\n", - " '78',\n", - " '45',\n", - " '21',\n", - " '99',\n", - " '35',\n", - " '75',\n", - " '57',\n", - " '54',\n", - " '77',\n", - " '66'],\n", - " ['79', '56', '89', '77', '78'],\n", - " ['91',\n", - " '31',\n", - " '66',\n", - " '81',\n", - " '69',\n", - " '46',\n", - " '76',\n", - " '16',\n", - " '82',\n", - " '25',\n", - " '29',\n", - " '21',\n", - " '84',\n", - " '98',\n", - " '85',\n", - " '45',\n", - " '61',\n", - " '74',\n", - " '54'],\n", - " ['77',\n", - " '78',\n", - " '17',\n", - " '28',\n", - " '54',\n", - " '35',\n", - " '16',\n", - " '82',\n", - " '99',\n", - " '65',\n", - " '41',\n", - " '89',\n", - " '71',\n", - " '12',\n", - " '63',\n", - " '98',\n", - " '19',\n", - " '46',\n", - " '66',\n", - " '56',\n", - " '79'],\n", - " ['49', '53', '23', '69', '74'],\n", - " ['22', '17', '41', '65', '77', '31', '83', '79', '19', '49', '53'],\n", - " ['77',\n", - " '15',\n", - " '23',\n", - " '17',\n", - " '12',\n", - " '22',\n", - " '42',\n", - " '65',\n", - " '79',\n", - " '71',\n", - " '75',\n", - " '11',\n", - " '89',\n", - " '49',\n", - " '41'],\n", - " ['17', '28', '77', '65', '12', '71', '79', '75', '31'],\n", - " ['99',\n", - " '81',\n", - " '45',\n", - " '21',\n", - " '82',\n", - " '84',\n", - " '57',\n", - " '54',\n", - " '86',\n", - " '78',\n", - " '66',\n", - " '29',\n", - " '25'],\n", - " ['22',\n", - " '69',\n", - " '83',\n", - " '31',\n", - " '71',\n", - " '76',\n", - " '17',\n", - " '79',\n", - " '94',\n", - " '86',\n", - " '34',\n", - " '42',\n", - " '63',\n", - " '53',\n", - " '12'],\n", - " ['75',\n", - " '61',\n", - " '69',\n", - " '84',\n", - " '46',\n", - " '16',\n", - " '19',\n", - " '45',\n", - " '35',\n", - " '86',\n", - " '78',\n", - " '54',\n", - " '25',\n", - " '21',\n", - " '82',\n", - " '85',\n", - " '57'],\n", - " ['57',\n", - " '58',\n", - " '23',\n", - " '53',\n", - " '83',\n", - " '42',\n", - " '94',\n", - " '76',\n", - " '61',\n", - " '15',\n", - " '22',\n", - " '45',\n", - " '34',\n", - " '31',\n", - " '29',\n", - " '81',\n", - " '86',\n", - " '37',\n", - " '25',\n", - " '84',\n", - " '66'],\n", - " ['99',\n", - " '81',\n", - " '57',\n", - " '69',\n", - " '82',\n", - " '45',\n", - " '89',\n", - " '85',\n", - " '46',\n", - " '61',\n", - " '86',\n", - " '21',\n", - " '78',\n", - " '16',\n", - " '37',\n", - " '76',\n", - " '66',\n", - " '34',\n", - " '29'],\n", - " ['83',\n", - " '53',\n", - " '74',\n", - " '41',\n", - " '22',\n", - " '11',\n", - " '58',\n", - " '12',\n", - " '77',\n", - " '79',\n", - " '71',\n", - " '56',\n", - " '65',\n", - " '17',\n", - " '35',\n", - " '49',\n", - " '75',\n", - " '42',\n", - " '19',\n", - " '15',\n", - " '28',\n", - " '89',\n", - " '23'],\n", - " ['56',\n", - " '58',\n", - " '49',\n", - " '83',\n", - " '11',\n", - " '17',\n", - " '71',\n", - " '42',\n", - " '53',\n", - " '76',\n", - " '77',\n", - " '15',\n", - " '63',\n", - " '12',\n", - " '31',\n", - " '79',\n", - " '74',\n", - " '91',\n", - " '41'],\n", - " ['69',\n", - " '23',\n", - " '34',\n", - " '29',\n", - " '66',\n", - " '82',\n", - " '16',\n", - " '25',\n", - " '31',\n", - " '21',\n", - " '57',\n", - " '91',\n", - " '81',\n", - " '54',\n", - " '74',\n", - " '86',\n", - " '94',\n", - " '84',\n", - " '61',\n", - " '45',\n", - " '83',\n", - " '53',\n", - " '37'],\n", - " ['45',\n", - " '85',\n", - " '46',\n", - " '21',\n", - " '75',\n", - " '54',\n", - " '63',\n", - " '77',\n", - " '79',\n", - " '56',\n", - " '82',\n", - " '41',\n", - " '71'],\n", - " ['56',\n", - " '82',\n", - " '46',\n", - " '54',\n", - " '98',\n", - " '99',\n", - " '65',\n", - " '19',\n", - " '35',\n", - " '45',\n", - " '85',\n", - " '41',\n", - " '84',\n", - " '25',\n", - " '16',\n", - " '89',\n", - " '78',\n", - " '37',\n", - " '63'],\n", - " ['19',\n", - " '71',\n", - " '42',\n", - " '46',\n", - " '12',\n", - " '85',\n", - " '63',\n", - " '89',\n", - " '56',\n", - " '49',\n", - " '79',\n", - " '41',\n", - " '99',\n", - " '11',\n", - " '77'],\n", - " ['85',\n", - " '77',\n", - " '78',\n", - " '99',\n", - " '61',\n", - " '41',\n", - " '75',\n", - " '89',\n", - " '57',\n", - " '37',\n", - " '65',\n", - " '25',\n", - " '54'],\n", - " ['54',\n", - " '66',\n", - " '57',\n", - " '69',\n", - " '21',\n", - " '78',\n", - " '25',\n", - " '85',\n", - " '81',\n", - " '29',\n", - " '86',\n", - " '61',\n", - " '65',\n", - " '99',\n", - " '37',\n", - " '98',\n", - " '16',\n", - " '89',\n", - " '46',\n", - " '76',\n", - " '45'],\n", - " ['99', '66', '57', '89', '41', '65', '16'],\n", - " ['42',\n", - " '35',\n", - " '17',\n", - " '19',\n", - " '28',\n", - " '11',\n", - " '15',\n", - " '74',\n", - " '94',\n", - " '77',\n", - " '71',\n", - " '22',\n", - " '75',\n", - " '83',\n", - " '53'],\n", - " ['46',\n", - " '29',\n", - " '57',\n", - " '65',\n", - " '45',\n", - " '86',\n", - " '81',\n", - " '61',\n", - " '84',\n", - " '78',\n", - " '98',\n", - " '66',\n", - " '35',\n", - " '69',\n", - " '25',\n", - " '37',\n", - " '82',\n", - " '21',\n", - " '85',\n", - " '89',\n", - " '76',\n", - " '16',\n", - " '99'],\n", - " ['58',\n", - " '56',\n", - " '31',\n", - " '22',\n", - " '75',\n", - " '15',\n", - " '77',\n", - " '34',\n", - " '11',\n", - " '79',\n", - " '19',\n", - " '17',\n", - " '49',\n", - " '23',\n", - " '71',\n", - " '28',\n", - " '63',\n", - " '12',\n", - " '53',\n", - " '74',\n", - " '83'],\n", - " ['41', '42', '99', '65', '12'],\n", - " ['21',\n", - " '37',\n", - " '16',\n", - " '99',\n", - " '31',\n", - " '82',\n", - " '81',\n", - " '61',\n", - " '85',\n", - " '34',\n", - " '86',\n", - " '29',\n", - " '76',\n", - " '45',\n", - " '57'],\n", - " ['22', '28', '75', '74', '63', '41', '65', '56', '89', '15', '79'],\n", - " ['65',\n", - " '19',\n", - " '63',\n", - " '35',\n", - " '98',\n", - " '12',\n", - " '85',\n", - " '28',\n", - " '21',\n", - " '75',\n", - " '78',\n", - " '17',\n", - " '89',\n", - " '77',\n", - " '46',\n", - " '54',\n", - " '99',\n", - " '16',\n", - " '11'],\n", - " ['42', '49', '71', '23', '76', '94', '53'],\n", - " ['49',\n", - " '63',\n", - " '76',\n", - " '53',\n", - " '15',\n", - " '28',\n", - " '42',\n", - " '83',\n", - " '58',\n", - " '71',\n", - " '29',\n", - " '11',\n", - " '34',\n", - " '22',\n", - " '94',\n", - " '74',\n", - " '69',\n", - " '31',\n", - " '79',\n", - " '23',\n", - " '12',\n", - " '86',\n", - " '17'],\n", - " ['82',\n", - " '56',\n", - " '45',\n", - " '19',\n", - " '21',\n", - " '79',\n", - " '61',\n", - " '99',\n", - " '89',\n", - " '63',\n", - " '77',\n", - " '85',\n", - " '54'],\n", - " ['83',\n", - " '49',\n", - " '74',\n", - " '12',\n", - " '75',\n", - " '77',\n", - " '58',\n", - " '35',\n", - " '53',\n", - " '79',\n", - " '94',\n", - " '17',\n", - " '56']]" + "87" ] }, - "execution_count": 4, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "incorrect_sequences=[sequence for sequence in sequences if not test_sequence(sequence)]\n", - "incorrect_sequences" + "len(incorrect_sequences)" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -1197,7 +114,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -1206,7 +123,7 @@ "4971" ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -1218,9 +135,21 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "Python 3", "language": "python", "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.10" } }, "nbformat": 4, diff --git a/6/6classfull.ipynb b/6/6classfull.ipynb index c7ec3af..c59d635 100644 --- a/6/6classfull.ipynb +++ b/6/6classfull.ipynb @@ -1,12 +1,5 @@ { "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "code", "execution_count": 1, @@ -11050,7 +11043,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.8" + "version": "3.8.10" } }, "nbformat": 4, diff --git a/6/6.ipynb b/6/attempts/6a.ipynb similarity index 100% rename from 6/6.ipynb rename to 6/attempts/6a.ipynb diff --git a/6/6b.ipynb b/6/attempts/6b.ipynb similarity index 100% rename from 6/6b.ipynb rename to 6/attempts/6b.ipynb diff --git a/6/6c.ipynb b/6/attempts/6c.ipynb similarity index 100% rename from 6/6c.ipynb rename to 6/attempts/6c.ipynb diff --git a/7/7.ipynb b/7/7.ipynb index 2d192fd..974ab1f 100644 --- a/7/7.ipynb +++ b/7/7.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 113, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -15,876 +15,7 @@ }, { "cell_type": "code", - "execution_count": 114, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[(487656, [43, 7, 54, 3, 6, 28]),\n", - " (65816524826, [3, 29, 7, 451, 5, 64, 26, 1, 1, 9]),\n", - " (90059295, [900, 1, 592, 92]),\n", - " (2109036, [59, 8, 133, 7, 83, 1, 6]),\n", - " (191815905829, [7, 4, 2, 7, 1, 979, 9, 8, 1, 638, 9]),\n", - " (289979206, [49, 587, 234, 9, 206]),\n", - " (26683869669, [51, 654, 837, 8, 69]),\n", - " (829027, [827, 34, 83, 85, 2, 5]),\n", - " (1182822246, [41, 2, 7, 40, 8, 6, 839, 7, 4, 8]),\n", - " (12212256, [8, 4, 31, 4, 1, 7, 655, 4, 9, 6, 8, 7]),\n", - " (576756972, [599, 5, 8, 6, 7, 5, 43, 4, 9, 11, 4]),\n", - " (3209617432982, [2, 5, 9, 3, 4, 2, 5, 4, 6, 330, 706]),\n", - " (11368725, [13, 94, 9, 520, 2, 13, 87]),\n", - " (3029408, [3, 3, 3, 41, 4, 2, 6, 36, 51, 18, 8]),\n", - " (486, [4, 59, 29]),\n", - " (1593, [8, 2, 4, 868, 606, 98]),\n", - " (1104643681, [742, 52, 44, 50, 8, 5, 714, 1]),\n", - " (8927181334, [941, 8, 7, 94, 1, 319, 16]),\n", - " (3250434202409, [861, 758, 59, 6, 31, 83, 5, 6]),\n", - " (35658010977, [59, 43, 60, 10, 974]),\n", - " (13458, [5, 8, 7, 4, 24, 342, 3, 2, 7, 8, 5, 3]),\n", - " (8144, [7, 68, 861, 91, 984, 4, 97, 3]),\n", - " (475875, [45, 6, 620, 4, 705]),\n", - " (28086984, [5, 4, 41, 79, 9, 7, 3, 6, 8, 3, 6, 4]),\n", - " (97776, [6, 3, 9, 6, 57, 679]),\n", - " (14925208480, [7, 4, 195, 7, 64, 6, 55, 5, 5, 91]),\n", - " (57558888, [2, 416, 7, 209, 9, 3, 8, 7, 1, 9]),\n", - " (1736849, [4, 706, 205, 11, 3, 49, 7]),\n", - " (640579, [59, 7, 227, 420, 160]),\n", - " (60858, [40, 4, 918, 49, 54]),\n", - " (7365, [83, 4, 1, 28, 64, 5]),\n", - " (15397, [4, 5, 69, 387, 623, 5]),\n", - " (127899, [5, 22, 71, 66, 902, 475]),\n", - " (8711335855, [8, 711, 335, 85, 8]),\n", - " (195276861, [5, 70, 2, 84, 9, 1, 5, 6, 1, 519]),\n", - " (35544, [19, 78, 6, 345, 9]),\n", - " (33213952, [81, 1, 9, 5, 3, 4, 5, 62, 93, 38, 8]),\n", - " (579887, [61, 2, 65, 8, 78, 76, 9]),\n", - " (15883, [40, 1, 356, 4, 5]),\n", - " (202227810, [7, 2, 8, 838, 7, 3, 1, 4, 22, 885]),\n", - " (653556, [438, 2, 239, 848, 428]),\n", - " (8948, [3, 9, 6, 95, 320, 2, 7, 847, 23]),\n", - " (6454, [4, 5, 7, 11, 4, 770, 7]),\n", - " (443390739223, [9, 332, 13, 907, 39, 222]),\n", - " (641557432, [63, 634, 521, 7, 430]),\n", - " (782, [2, 68, 43, 595, 74]),\n", - " (1331712, [1, 7, 26, 192, 204]),\n", - " (129463, [4, 4, 5, 97, 9, 6, 4, 975, 2, 24, 1]),\n", - " (221177258, [168, 8, 15, 525, 31, 8]),\n", - " (15537453, [901, 6, 3, 3, 5, 3, 957, 558]),\n", - " (12763566858, [1, 6, 641, 895, 618, 83, 6]),\n", - " (2074806937, [2, 78, 7, 90, 1, 6, 76, 9, 5, 4, 1, 7]),\n", - " (1069, [4, 2, 5, 2, 989]),\n", - " (129802, [3, 61, 7, 5, 619, 41, 611]),\n", - " (201600485201, [3, 800, 84, 485, 1, 202]),\n", - " (259752, [4, 49, 8, 8, 4, 67, 76, 2, 8, 888]),\n", - " (472128, [31, 9, 4, 37, 7]),\n", - " (3195693, [559, 2, 70, 183, 81]),\n", - " (49176380250, [9, 5, 2, 7, 89, 9, 873, 9, 725]),\n", - " (982, [3, 79, 64, 293, 6, 24, 356]),\n", - " (6478268, [64, 734, 2, 46, 6, 9]),\n", - " (253809852, [64, 340, 72, 4, 3, 9, 94, 6]),\n", - " (751, [6, 44, 86, 5, 71]),\n", - " (236658240, [43, 28, 35, 6, 936]),\n", - " (43192, [42, 3, 8, 9, 1]),\n", - " (340408, [2, 32, 10, 4, 10, 1]),\n", - " (7686, [2, 7, 29, 30, 93, 48, 6]),\n", - " (4243124889, [1, 8, 133, 26, 303, 9, 87, 74]),\n", - " (856, [9, 3, 63, 87, 5, 1, 8]),\n", - " (28033586941, [28, 52, 4, 4, 57, 98, 9, 37, 6]),\n", - " (202380939, [2, 559, 3, 4, 6, 9, 6, 5, 39, 8, 2, 1]),\n", - " (10392264, [2, 988, 37, 94]),\n", - " (8032464, [3, 56, 28, 2, 455, 73, 198]),\n", - " (622349387, [3, 823, 6, 2, 2, 4, 3, 21, 9, 1, 9]),\n", - " (1651, [9, 7, 44, 58, 1]),\n", - " (66060, [364, 515, 25, 45, 3]),\n", - " (13444, [7, 7, 9, 651, 4]),\n", - " (15431035, [22, 100, 4, 6, 8, 3, 99, 2, 2, 7]),\n", - " (480690, [7, 82, 51, 5, 763]),\n", - " (29549163, [29, 5, 49, 131, 32]),\n", - " (17720382, [43, 55, 71, 4, 4, 382]),\n", - " (1059, [2, 111, 5, 9]),\n", - " (21045024, [27, 7, 839, 1, 2, 88, 3, 91]),\n", - " (294336, [98, 3, 634, 80, 73, 4]),\n", - " (6896, [6, 3, 10, 246, 6]),\n", - " (18821762, [20, 1, 23, 85, 389]),\n", - " (33401, [93, 50, 108, 7, 79, 16]),\n", - " (4664286286, [9, 64, 3, 2, 48, 57, 6, 93]),\n", - " (2931104, [76, 66, 645, 7, 32]),\n", - " (28566, [8, 2, 9, 9, 5, 3, 4, 5, 708, 8, 4, 9]),\n", - " (3198, [8, 6, 251, 87, 964, 2, 422]),\n", - " (1040, [3, 37, 9, 38, 3]),\n", - " (187968, [444, 3, 808, 881, 88]),\n", - " (362576, [50, 9, 8, 89, 4, 77, 87]),\n", - " (4992215, [126, 2, 5, 6, 75, 7, 58, 53, 39]),\n", - " (2006981, [1, 9, 6, 93, 774]),\n", - " (9793996248, [3, 6, 5, 8, 6, 83, 1, 99, 4, 251]),\n", - " (30613341465, [8, 1, 746, 363, 305, 99, 5, 7]),\n", - " (2137289544, [571, 744, 3, 129, 13]),\n", - " (107872380, [8, 33, 5, 493, 2, 8, 7, 9, 5, 9, 5, 9]),\n", - " (4373193255, [9, 49, 911, 933, 3, 235]),\n", - " (223250, [4, 1, 9, 190, 950]),\n", - " (100379, [9, 985, 1, 93, 435]),\n", - " (53675254, [4, 48, 4, 1, 41, 3, 7, 465, 68]),\n", - " (48870, [664, 8, 6, 2, 2, 3, 2, 3, 3, 440, 1]),\n", - " (32167, [5, 7, 919]),\n", - " (268259340, [1, 50, 892, 2, 9, 1, 1, 527]),\n", - " (44339505, [17, 46, 315, 6, 18]),\n", - " (31750808, [3, 16, 9, 2, 13, 7, 7, 6, 6, 10, 91]),\n", - " (728057579, [93, 12, 41, 817, 3, 3, 69, 77]),\n", - " (392, [5, 3, 1, 7, 7]),\n", - " (638, [7, 56, 2, 4, 2]),\n", - " (108204960, [770, 877, 8, 983, 160]),\n", - " (3444301, [73, 40, 6, 5, 2, 46, 1, 729, 3, 1]),\n", - " (14229, [21, 1, 151, 22, 75, 9, 51]),\n", - " (19262701, [7, 3, 9, 971, 182]),\n", - " (1672476, [200, 3, 4, 39, 71]),\n", - " (1618766643, [4, 7, 3, 77, 1, 87, 589, 5, 7, 39]),\n", - " (1248218882, [683, 97, 4, 547, 4, 82]),\n", - " (389845651483, [62, 3, 1, 5, 4, 5, 6, 8, 2, 5, 1, 782]),\n", - " (324944, [6, 26, 4, 94, 1]),\n", - " (1166018, [96, 97, 118, 8, 75, 6, 51, 4, 1]),\n", - " (525, [75, 1, 7, 1]),\n", - " (52924, [7, 3, 3, 75, 504, 4]),\n", - " (545733410, [1, 3, 6, 99, 9, 5, 33, 337, 4, 62]),\n", - " (8387390987, [7, 202, 984, 59, 677, 75]),\n", - " (2116285, [4, 690, 2, 6, 15, 31, 221, 82]),\n", - " (36525, [90, 69, 7, 22, 5]),\n", - " (24147338178, [67, 6, 45, 563, 63, 6]),\n", - " (13, [1, 4, 6]),\n", - " (16360, [2, 29, 429, 51, 32, 8]),\n", - " (97492862, [406, 22, 24, 1, 64]),\n", - " (146228, [86, 17, 28]),\n", - " (7743, [75, 3, 1, 9, 3, 9, 3]),\n", - " (9883297, [7, 9, 32, 57, 86, 865]),\n", - " (973916, [7, 9, 119, 73, 7, 94, 823, 55]),\n", - " (153506360, [4, 5, 73, 47, 569, 22, 35, 1, 2]),\n", - " (772201, [771, 1, 187, 13]),\n", - " (87872992470, [7, 53, 29, 8, 4, 2, 353, 3, 5, 53]),\n", - " (7819821990, [965, 41, 9, 9, 98, 8]),\n", - " (496991, [6, 20, 7, 8, 43, 2]),\n", - " (21834361, [6, 879, 460, 3, 3]),\n", - " (35172, [793, 736, 23, 4, 1]),\n", - " (875355, [249, 37, 95, 47, 9, 64]),\n", - " (386571, [2, 193, 5, 36, 8, 7, 4, 9, 3, 6, 1]),\n", - " (23822642473, [76, 773, 81, 5, 811, 9, 8]),\n", - " (819963721093, [9, 287, 26, 36, 8, 82, 1, 517]),\n", - " (88156679373, [881, 56, 677, 2, 373]),\n", - " (294634, [44, 6, 124, 9, 7]),\n", - " (412056335, [890, 75, 61, 191, 7]),\n", - " (250582082, [9, 1, 3, 92, 1, 6, 14, 8, 20, 76, 3]),\n", - " (30820812, [4, 136, 1, 2, 56, 8, 6, 9, 7, 3, 2, 3]),\n", - " (1159209247, [57, 81, 840, 92, 44]),\n", - " (93114, [231, 67, 1, 42, 6]),\n", - " (1427, [76, 568, 7, 502, 9, 197, 68]),\n", - " (33487272395, [418, 5, 909, 8, 395]),\n", - " (21155, [53, 906, 6, 3, 1, 942, 13, 11]),\n", - " (798093, [7, 17, 74, 41, 81, 972]),\n", - " (35354, [7, 1, 1, 350, 733, 1, 6, 1, 6, 7, 5]),\n", - " (3290573, [8, 9, 55, 9, 3, 8, 7, 5, 113, 2, 5, 8]),\n", - " (37126311681, [371, 26, 311, 65, 4, 27]),\n", - " (444, [9, 6, 5, 6, 90]),\n", - " (1494832626631, [2, 521, 4, 68, 5, 3, 7, 1, 6, 26, 3]),\n", - " (125403, [17, 90, 1, 5, 7]),\n", - " (7573005, [708, 7, 90, 2, 4, 3, 4, 4, 73, 5]),\n", - " (228697, [7, 9, 67, 537, 59, 45, 7, 7]),\n", - " (26150462601, [20, 754, 3, 354, 126]),\n", - " (8337405, [81, 96, 92, 8, 8, 8]),\n", - " (10828266, [2, 5, 82, 7, 7, 5, 68]),\n", - " (384887472, [3, 1, 54, 3, 102, 8, 6, 6, 4, 823]),\n", - " (733, [2, 3, 82, 1, 51]),\n", - " (218975073, [9, 9, 218, 3, 4, 9, 57, 9, 50, 74]),\n", - " (2168082697, [1, 2, 6, 2, 6, 2, 6, 68, 3, 692, 2, 4]),\n", - " (173421503, [20, 9, 9, 791, 6, 19, 14, 4]),\n", - " (2971254430, [550, 1, 9, 6, 71, 2, 8, 8, 5, 5, 5]),\n", - " (73191888, [3, 161, 46, 63, 154]),\n", - " (613824, [5, 3, 5, 2, 3, 3, 2, 2, 11, 1, 71, 4]),\n", - " (1890989, [1, 6, 83, 2, 824, 3, 5, 346, 99]),\n", - " (7440, [1, 7, 5, 2, 30, 30, 6, 5, 4, 8, 668]),\n", - " (16968, [2, 2, 8, 5, 42, 194, 8, 400, 1, 7]),\n", - " (77440, [7, 4, 38, 14, 968]),\n", - " (3562, [693, 992, 2, 184, 7]),\n", - " (48049, [7, 833, 8, 4, 1, 456, 940]),\n", - " (664, [6, 8, 317, 1, 2]),\n", - " (1031, [8, 8, 87, 304, 55, 521]),\n", - " (1621533120, [368, 412, 69, 31, 5]),\n", - " (391002, [87, 195, 31, 4, 1, 23, 2]),\n", - " (6318279, [6, 6, 629, 837, 2, 517, 4, 80]),\n", - " (471816, [9, 5, 9, 397, 8, 5, 4, 528, 6, 3, 1]),\n", - " (10005410, [8, 186, 9, 2, 336]),\n", - " (19417, [92, 6, 18, 74, 1, 4, 18]),\n", - " (44968, [5, 2, 3, 3, 76, 7, 3, 80, 2, 1, 8, 7]),\n", - " (395093631, [9, 8, 554, 9, 9, 9, 2, 8, 6, 3, 84, 7]),\n", - " (99600, [33, 6, 503, 6]),\n", - " (594646, [660, 4, 1, 6, 5, 1, 5, 3, 8, 6, 3]),\n", - " (133110, [5, 9, 9, 4, 549, 174]),\n", - " (6604888205293, [2, 20, 89, 92, 710, 8, 299]),\n", - " (6696448082514, [3, 608, 29, 8, 80, 825, 14]),\n", - " (177053, [91, 77, 58, 93, 555, 8]),\n", - " (576, [2, 38, 14, 9, 7]),\n", - " (162888, [60, 12, 2, 1, 905, 80, 5]),\n", - " (7605, [626, 122, 773, 5]),\n", - " (11725560820, [72, 37, 90, 44, 823]),\n", - " (8201356028, [593, 461, 5, 46, 5, 37, 60, 6]),\n", - " (24278472, [741, 12, 39, 41, 7, 3, 6, 404]),\n", - " (3208850, [6, 7, 4, 145, 100, 7, 2, 4, 4, 3, 5]),\n", - " (559921158, [7, 2, 3, 12, 11, 8, 6, 56, 64, 4, 1]),\n", - " (32011, [31, 9, 8, 11]),\n", - " (446283, [3, 58, 4, 84, 42, 9, 9, 618, 3]),\n", - " (86535563, [8, 6, 535, 56, 1]),\n", - " (21573728, [7, 49, 8, 8, 8, 2, 7, 4, 272, 734]),\n", - " (26121816, [2, 254, 8, 44, 181, 3, 1]),\n", - " (45950642, [25, 4, 6, 82, 498, 5, 5, 84, 57]),\n", - " (869176, [128, 679, 1, 55]),\n", - " (449486, [848, 529, 64, 2, 828]),\n", - " (1279220996, [9, 4, 173, 133, 708, 47, 65]),\n", - " (287825, [3, 4, 890, 244, 839, 29, 5]),\n", - " (17180433987, [6, 61, 91, 3, 798, 37, 9, 987]),\n", - " (29106000, [306, 5, 64, 6, 3, 8, 7, 1, 77]),\n", - " (68117, [97, 1, 3, 1, 7]),\n", - " (40180569020, [574, 70, 5, 6, 450, 451, 8]),\n", - " (2143936, [357, 3, 6, 92, 43]),\n", - " (4875, [343, 13, 8, 11, 397]),\n", - " (42041436, [564, 4, 12, 7, 37, 19, 2, 2]),\n", - " (556416, [9, 8, 69, 8, 14]),\n", - " (6836490, [98, 581, 4, 64, 88, 2]),\n", - " (84747525, [20, 4, 56, 4, 5, 345]),\n", - " (873095872, [2, 2, 850, 9, 4, 9, 5, 3, 6, 6, 8, 72]),\n", - " (3438425675, [6, 50, 614, 1, 25, 630, 44]),\n", - " (491, [80, 54, 3, 7, 83]),\n", - " (665419100327, [608, 965, 97, 15, 751]),\n", - " (82080, [9, 675, 4, 5, 6]),\n", - " (1026, [8, 5, 67, 89, 338, 5, 444]),\n", - " (178844, [4, 5, 9, 5, 9, 3, 15, 58, 57, 91]),\n", - " (61341, [32, 59, 674, 4]),\n", - " (291966364, [81, 53, 61, 7, 6, 68]),\n", - " (9182225, [5, 8, 2, 5, 85, 6, 2, 4, 56, 4, 6, 17]),\n", - " (1147150, [67, 868, 5, 35, 3, 9, 291, 9, 1]),\n", - " (13716, [17, 2, 25, 4, 4]),\n", - " (11424, [18, 10, 8, 36, 51]),\n", - " (4816, [35, 46, 858, 412]),\n", - " (957272, [3, 3, 29, 2, 72]),\n", - " (41212589, [5, 512, 6, 7, 6, 3, 763, 4, 5, 86]),\n", - " (158464, [76, 417, 5, 4]),\n", - " (1899297, [35, 6, 80, 579, 153, 9, 15]),\n", - " (4542, [9, 36, 41]),\n", - " (49681112, [496, 811, 1, 1]),\n", - " (126875993924, [28, 5, 97, 33, 249, 7, 9, 8, 9]),\n", - " (59432, [82, 618, 589, 3, 46]),\n", - " (1016349250, [8, 741, 22, 269, 635]),\n", - " (30395070, [3, 5, 6, 457, 739]),\n", - " (45556, [361, 649, 45, 9, 97]),\n", - " (92791573, [4, 624, 8, 2, 290, 5, 56, 8, 2, 1]),\n", - " (192370728450, [85, 154, 835, 5, 8, 2, 22, 8]),\n", - " (5798, [8, 8, 288, 11, 12, 34, 4, 5, 4]),\n", - " (9255060, [8, 6, 9, 1, 59, 48, 4, 27, 87]),\n", - " (44320, [74, 617, 1, 64, 95, 1]),\n", - " (1046885, [993, 8, 530, 76, 8]),\n", - " (363673109052, [11, 62, 2, 264, 9, 43, 2, 618]),\n", - " (269281880, [44, 8, 8, 5, 48, 4, 71, 25, 5]),\n", - " (21918616, [2, 1, 6, 7, 297, 82, 258, 4]),\n", - " (215370680, [3, 3, 5, 153, 69, 3, 343, 980]),\n", - " (1318736, [996, 82, 745, 4, 16]),\n", - " (411709059, [71, 2, 7, 6, 4, 8, 6, 5, 721, 5, 30]),\n", - " (210420, [944, 233, 927, 1, 6, 7]),\n", - " (9776548567374, [618, 87, 506, 593, 606, 4]),\n", - " (19045689, [12, 987, 67, 39, 41]),\n", - " (1554578, [2, 536, 69, 3, 81, 7, 3, 677]),\n", - " (1000961176548, [340, 8, 92, 26, 3, 4, 4, 545]),\n", - " (10871, [1, 6, 6, 86, 73]),\n", - " (191102, [72, 966, 79, 9, 5, 19]),\n", - " (6448039, [9, 912, 7, 974, 65]),\n", - " (127875318282, [151, 675, 17, 18, 697]),\n", - " (67622755305, [88, 530, 88, 868, 8, 3, 18, 5]),\n", - " (1068000311359, [6, 3, 4, 2, 5, 60, 8, 3, 1, 1, 353, 5]),\n", - " (466005, [1, 9, 608, 87, 661]),\n", - " (430651, [2, 3, 8, 9, 5, 5, 6, 162, 404, 2, 7]),\n", - " (1773856371877, [126, 7, 5, 20, 7, 929, 68, 4, 7]),\n", - " (528, [6, 1, 63, 82, 5]),\n", - " (140593361, [95, 522, 1, 1, 9, 9, 1, 35, 6]),\n", - " (7544102747, [47, 4, 209, 2, 3, 8, 8, 3, 3, 8, 5, 4]),\n", - " (8634559, [85, 78, 56, 479, 80]),\n", - " (62905, [909, 150, 59, 2, 422]),\n", - " (292589, [1, 2, 7, 9, 386, 8, 3, 3, 4, 710, 7]),\n", - " (446, [430, 14, 2]),\n", - " (170800, [5, 7, 3, 8, 6, 38, 13, 762, 8, 1, 7]),\n", - " (6819, [93, 67, 485, 94, 9]),\n", - " (76499651, [114, 54, 69, 234, 6, 3, 2, 7]),\n", - " (31731255, [7, 9, 524, 6, 7, 751]),\n", - " (7715, [952, 360, 5, 546, 601, 8]),\n", - " (307120629, [4, 515, 7, 7, 6, 973, 2, 2, 628]),\n", - " (267, [7, 46, 80, 55, 79]),\n", - " (2614399, [6, 6, 298, 156, 9, 478, 6, 91]),\n", - " (1116203161, [890, 226, 20, 31, 59]),\n", - " (171867043, [2, 604, 22, 86, 6, 4, 90, 3]),\n", - " (4371039, [125, 5, 233, 4, 57, 5, 6, 459]),\n", - " (845076971948, [332, 3, 6, 986, 418, 86]),\n", - " (70116840, [13, 860, 1, 7, 3, 6, 1, 67, 57]),\n", - " (951088124811, [444, 7, 1, 13, 1, 1, 6, 76, 1, 51]),\n", - " (1373244, [915, 42, 5, 38, 3]),\n", - " (82513, [9, 33, 711, 4, 109]),\n", - " (45144, [22, 7, 170, 86, 9]),\n", - " (61041, [8, 8, 2, 25, 8, 7, 1, 469, 9, 65]),\n", - " (378239, [30, 58, 645, 86, 6, 8]),\n", - " (1984785, [5, 5, 9, 7, 3, 4, 33, 724, 8, 204]),\n", - " (413932290441, [3, 3, 88, 1, 92, 83, 2, 1, 2, 8, 4, 1]),\n", - " (598070, [847, 70, 511, 9, 52]),\n", - " (26558, [4, 152, 6, 70, 3, 1, 72, 7, 1, 7, 1]),\n", - " (24463936, [6, 5, 128, 812]),\n", - " (211343, [78, 33, 1, 8, 14, 445, 2, 38, 5]),\n", - " (60353407, [94, 2, 6, 32, 638, 59, 7, 702]),\n", - " (467747, [4, 22, 37, 8, 747]),\n", - " (115242958, [38, 414, 3, 956]),\n", - " (2230448, [9, 5, 106, 5, 5, 6, 5, 39, 4, 638]),\n", - " (58344, [2, 53, 374, 1, 17, 8]),\n", - " (131586, [3, 599, 5, 8, 22, 1, 768, 7, 33]),\n", - " (11867403510, [51, 88, 520, 46, 565, 9]),\n", - " (79235, [22, 50, 9, 8, 32]),\n", - " (15889035, [45, 57, 1, 98, 7, 74, 849, 1]),\n", - " (18966, [21, 9, 629, 19, 77]),\n", - " (8988082, [898, 807, 8, 4]),\n", - " (54296660630, [31, 5, 58, 26, 8, 660, 627]),\n", - " (6454981800, [7, 838, 9, 872, 6, 7, 9, 49, 2, 9]),\n", - " (403020, [875, 2, 349, 8, 2, 1, 2, 6]),\n", - " (3060222, [30, 587, 10, 523, 989]),\n", - " (5310339307, [65, 6, 14, 26, 831, 895, 9]),\n", - " (17409, [9, 47, 5, 788, 9]),\n", - " (206, [41, 63, 88, 14]),\n", - " (129745960037, [73, 3, 4, 652, 5, 2, 7, 907, 4, 5]),\n", - " (4048704, [30, 5, 746, 81, 64]),\n", - " (30240015, [93, 75, 25, 270, 8, 2, 15]),\n", - " (8036956, [8, 2, 85, 1, 4, 1, 82, 7, 9, 1, 5, 2]),\n", - " (5343, [3, 89, 2, 3]),\n", - " (123430233768, [974, 88, 3, 436, 4, 1, 3, 8, 4, 6]),\n", - " (99212258, [83, 4, 32, 61, 2, 36, 968]),\n", - " (57318, [46, 2, 9, 302, 3, 53, 3, 5, 229]),\n", - " (9114, [329, 3, 309, 6, 7]),\n", - " (1913560, [7, 797, 7, 34, 1, 40]),\n", - " (17631, [12, 837, 871, 43, 1]),\n", - " (4398351732, [10, 93, 146, 618, 69]),\n", - " (231244830, [7, 217, 7, 4, 28, 927, 5, 1, 3, 8]),\n", - " (299377898546, [8, 4, 9, 44, 2, 9, 9, 76, 7, 4, 873]),\n", - " (365237, [64, 70, 891, 68, 8]),\n", - " (21963729363, [3, 9, 3, 8, 8, 2, 52, 5, 7, 293, 63]),\n", - " (577636309, [736, 90, 927, 86, 1, 84, 24]),\n", - " (4701436152, [3, 2, 61, 9, 6, 5, 63, 1, 7, 23, 5, 5]),\n", - " (18319317, [619, 52, 3, 3, 569, 6, 8, 917]),\n", - " (8517034175, [73, 2, 7, 85, 75, 2, 1, 34, 177]),\n", - " (15873587, [29, 42, 36, 1, 2, 181, 249]),\n", - " (3612897, [5, 44, 4, 564, 834, 3, 9]),\n", - " (7525784, [8, 9, 6, 1, 81, 5, 163, 1, 9, 37, 2]),\n", - " (9418627, [269, 1, 7, 5, 5, 7, 5]),\n", - " (600805, [81, 7, 62, 4, 780, 25]),\n", - " (3840018, [5, 400, 6, 55, 621, 41, 84, 3]),\n", - " (14562, [3, 88, 55, 6, 36]),\n", - " (2245654, [655, 3, 43, 5, 82, 34, 56]),\n", - " (211, [4, 33, 1, 79]),\n", - " (1397321, [35, 3, 5, 6, 789]),\n", - " (8765, [6, 1, 863, 7, 5, 1]),\n", - " (147924179, [581, 67, 22, 38, 743]),\n", - " (11728, [871, 301, 8]),\n", - " (3788177177, [2, 5, 12, 874, 3, 74, 717, 7]),\n", - " (61232430241, [8, 60, 89, 4, 8, 2, 1, 8, 550, 8, 1]),\n", - " (1956156160, [244, 51, 952, 8, 10]),\n", - " (2122390874, [14, 7, 22, 390, 874]),\n", - " (17888, [80, 211, 919, 6, 83]),\n", - " (6350878370, [720, 7, 57, 7, 89, 8, 1, 2, 371]),\n", - " (5455889563, [81, 9, 3, 9, 7, 748, 3]),\n", - " (102, [7, 10, 3, 82]),\n", - " (94821797128, [9, 474, 4, 3, 6, 834, 4, 4, 4, 4, 4]),\n", - " (5891846934, [4, 7, 850, 9, 18, 3, 9, 7, 2, 936]),\n", - " (286026, [9, 77, 28, 5, 62, 6, 13]),\n", - " (317614, [6, 68, 74, 92, 821, 22]),\n", - " (468024, [813, 80, 7, 65, 3, 8]),\n", - " (1676819, [159, 13, 8, 97, 40, 6, 256]),\n", - " (2683103744, [9, 1, 78, 6, 9, 8, 453, 1, 2, 80, 7]),\n", - " (3877066, [24, 853, 39, 4]),\n", - " (20088, [33, 97, 3, 425, 36]),\n", - " (216166095, [4, 310, 2, 7, 5, 2, 8, 5, 23, 865]),\n", - " (492008, [8, 93, 76, 6, 11]),\n", - " (19498811, [19, 498, 6, 8, 12, 9]),\n", - " (2029193249, [56, 4, 3, 69, 34, 38, 2, 7]),\n", - " (10937475010, [6, 75, 63, 60, 7, 643, 10]),\n", - " (26303224269, [3, 8, 9, 4, 7, 57, 3, 77, 2, 426, 9]),\n", - " (73291559, [21, 2, 7, 7, 304, 3, 98, 258, 3]),\n", - " (23451137730, [2, 35, 2, 38, 72, 394, 45]),\n", - " (7819504, [99, 631, 51, 94, 35, 1, 69]),\n", - " (71057172, [710, 564, 7, 30, 6, 36]),\n", - " (7171080, [223, 938, 1, 772, 93, 8]),\n", - " (8971, [14, 9, 5, 6, 1]),\n", - " (1447891956, [560, 90, 57, 6, 9, 84]),\n", - " (1419987030, [1, 3, 35, 4, 7, 83, 4, 1, 8, 47, 3]),\n", - " (1212, [2, 7, 7, 1, 240]),\n", - " (107, [7, 2, 35]),\n", - " (207204486, [7, 8, 8, 548, 9, 84, 3, 80, 2, 6]),\n", - " (176080, [97, 7, 84, 68, 20]),\n", - " (6853476, [6, 7, 1, 97, 449, 2, 3]),\n", - " (15084, [55, 600, 4, 849, 7]),\n", - " (559994365, [671, 4, 488, 5, 4, 6, 6, 5, 9, 85]),\n", - " (5694276, [4, 49, 642, 6, 679, 6, 93, 82]),\n", - " (604564037, [7, 85, 14, 81, 77]),\n", - " (485, [12, 35, 48, 1, 7, 3, 6]),\n", - " (32095440083, [90, 780, 381, 12, 8, 3]),\n", - " (4710071, [59, 61, 1, 79, 8, 8]),\n", - " (173751142, [16, 96, 2, 413, 11, 42]),\n", - " (97369, [162, 1, 8, 569, 70]),\n", - " (293653920, [77, 696, 3, 8, 7, 6, 1, 265, 68]),\n", - " (128726254202, [9, 7, 6, 5, 9, 1, 8, 8, 6, 3, 40, 85]),\n", - " (8799, [8, 72, 7, 9]),\n", - " (57550, [781, 6, 3, 59, 2, 21, 511, 9, 2]),\n", - " (131405072, [8, 6, 8, 765, 2, 80, 7, 4, 40, 4]),\n", - " (131174707, [4, 363, 7, 2, 49, 30, 7, 2]),\n", - " (183458, [9, 33, 6, 89, 468]),\n", - " (1406, [1, 9, 4, 21, 2, 9, 6, 7, 799, 84, 5]),\n", - " (5952266, [49, 14, 317, 5, 94]),\n", - " (74400042, [86, 865, 9, 9, 50, 95]),\n", - " (510815048, [7, 1, 3, 706, 1, 436, 89, 77, 8]),\n", - " (2196481428, [2, 9, 3, 4, 1, 5, 6, 4, 75, 3, 3, 428]),\n", - " (727, [16, 39, 4, 97, 2]),\n", - " (46563196, [41, 4, 471, 367, 725, 19, 9]),\n", - " (14983776037, [4, 994, 592, 30, 36]),\n", - " (985376, [6, 4, 63, 37, 6, 1, 4]),\n", - " (4031429, [650, 31, 7, 13, 2, 3]),\n", - " (430736587, [7, 3, 59, 36, 586]),\n", - " (11125343793, [9, 9, 7, 9, 288, 4, 4, 9, 6, 99, 95]),\n", - " (1274327083900, [576, 618, 590, 26, 85]),\n", - " (2497, [1, 88, 80, 81, 7]),\n", - " (280368, [1, 2, 5, 3, 9, 395, 49, 5, 3, 66]),\n", - " (265499063, [4, 1, 5, 702, 1, 6, 9, 7, 7, 5, 8, 68]),\n", - " (126364, [1, 6, 24, 7, 8, 9, 8, 90, 8, 76]),\n", - " (322259269026, [5, 3, 75, 25, 4, 517, 28, 56]),\n", - " (1981800309, [16, 4, 83, 912, 951]),\n", - " (3697416, [260, 7, 949, 5, 3, 267]),\n", - " (5390737515, [9, 5, 8, 28, 656, 5, 16, 547, 6]),\n", - " (7303618, [72, 96, 7, 105, 515]),\n", - " (1421983140, [4, 38, 8, 67, 8, 6, 1, 520, 9, 6, 4]),\n", - " (2492, [26, 45, 2, 5, 60, 81, 2, 3, 1]),\n", - " (11194052, [7, 6, 7, 5, 8, 9, 26, 67, 69, 919]),\n", - " (114971376580, [934, 387, 51, 87, 65, 77]),\n", - " (83308, [257, 40, 97, 8, 292]),\n", - " (11903198209, [72, 4, 2, 5, 6, 33, 7, 6, 9, 8, 7, 71]),\n", - " (14816, [6, 454, 3, 8, 4]),\n", - " (33053, [7, 6, 5, 374, 83, 517]),\n", - " (73001511142704, [338, 8, 1, 7, 665, 9, 96, 36, 9]),\n", - " (180317, [22, 5, 3, 6, 317]),\n", - " (17683526, [6, 4, 3, 1, 6, 2, 9, 4, 7, 5, 9, 227]),\n", - " (14944227, [45, 453, 14, 3, 27]),\n", - " (1956, [491, 518, 4, 2, 464, 476, 1]),\n", - " (5064, [93, 45, 196, 5, 678]),\n", - " (28619025776896, [7, 8, 48, 64, 8, 581, 231, 2, 8]),\n", - " (882450, [84, 18, 814, 9, 1, 954]),\n", - " (718755602387, [987, 98, 75, 7, 20, 851, 97]),\n", - " (607718, [970, 7, 3, 31, 2, 2, 9, 9]),\n", - " (10081961, [292, 792, 93, 74, 689]),\n", - " (72242768, [528, 3, 27, 76, 9, 6]),\n", - " (153305614525, [37, 6, 5, 6, 6, 661, 9, 81, 6, 2, 7]),\n", - " (16300905, [41, 719, 8, 389, 24, 69]),\n", - " (6956, [1, 6, 7, 49, 971, 4, 2, 6, 7, 709]),\n", - " (82397, [7, 1, 22, 93, 6, 990, 5, 2, 7, 7]),\n", - " (207456, [2, 4, 4, 8, 76, 8, 76, 81, 5, 6, 8]),\n", - " (7366, [8, 92, 6]),\n", - " (7382265744, [6, 7, 5, 6, 4, 5, 3, 8, 54, 5, 8, 438]),\n", - " (1867, [3, 949, 2, 877, 36]),\n", - " (262198, [8, 1, 9, 4, 5, 30, 12, 10, 3, 39, 1]),\n", - " (2140, [6, 8, 719, 407, 928, 1, 3, 68]),\n", - " (83351738, [20, 8, 799, 652, 58]),\n", - " (166375650665, [603, 4, 5, 84, 821, 6, 66]),\n", - " (147066357296, [7, 35, 3, 31, 784, 2, 4, 9, 6, 1]),\n", - " (19865687, [9, 2, 1, 2, 91, 8, 124, 7, 499]),\n", - " (693281633, [685, 7, 792, 489, 633]),\n", - " (654, [4, 1, 43, 201, 7]),\n", - " (27648, [1, 6, 8, 2, 108]),\n", - " (1544409, [28, 8, 9, 6, 4, 4, 9, 3, 793, 9, 7, 9]),\n", - " (2146603495, [3, 68, 29, 3, 9, 17, 99, 1, 59, 5]),\n", - " (5292, [69, 4, 11, 7, 9]),\n", - " (3949647, [393, 3, 25, 2, 67]),\n", - " (1300935485058, [71, 5, 6, 62, 9, 94, 800, 6, 43]),\n", - " (605416, [34, 9, 3, 3, 3, 40, 6, 6, 40, 8, 8]),\n", - " (9567810, [433, 969, 36, 3, 454, 63]),\n", - " (6662189364, [322, 19, 803, 365, 226, 6]),\n", - " (803491510, [44, 938, 447, 1, 6, 4, 46]),\n", - " (319315026, [841, 7, 413, 1, 437, 579]),\n", - " (21535377, [655, 8, 87, 286, 323]),\n", - " (18604826, [4, 11, 8, 5, 968, 8, 340, 1, 2, 9]),\n", - " (184274, [5, 233, 774, 32, 24, 6]),\n", - " (91162855, [479, 512, 289, 19, 7, 656]),\n", - " (79, [7, 3, 8]),\n", - " (20469390, [22, 4, 2, 7, 8, 67, 4, 2, 9, 1, 849]),\n", - " (52122, [81, 68, 867, 3, 3, 51]),\n", - " (114848, [188, 63, 45, 4, 97]),\n", - " (15043698, [14, 7, 1, 6, 189, 56, 36, 9, 6, 9]),\n", - " (1669, [216, 491, 4, 960, 1, 1]),\n", - " (57407652, [389, 473, 6, 52, 519, 69]),\n", - " (283080, [1, 599, 5, 6, 7, 50, 6, 5, 84]),\n", - " (54899, [33, 94, 154, 967, 13]),\n", - " (968081957, [27, 56, 386, 91, 939, 9]),\n", - " (1824060251, [84, 84, 25, 86, 48, 200]),\n", - " (343504, [80, 90, 4, 63, 98, 8]),\n", - " (9406899360, [162, 927, 522, 3, 40]),\n", - " (66, [6, 1, 60]),\n", - " (665541148, [64, 478, 9, 91, 239]),\n", - " (15220546, [1, 72, 147, 695, 46]),\n", - " (16593192, [29, 5, 1, 342, 2, 87, 16, 86, 8]),\n", - " (266660, [273, 120, 5, 2, 335]),\n", - " (145411253, [7, 24, 3, 864, 52]),\n", - " (1488898676, [74, 3, 4, 8, 3, 4, 31, 2, 46, 69, 4]),\n", - " (204709132, [6, 78, 81, 2, 2, 3, 2, 3, 616, 7, 6]),\n", - " (13168868667, [155, 944, 7, 63, 90]),\n", - " (5211084, [94, 2, 36, 16, 2, 3, 15, 5, 9]),\n", - " (239035, [7, 6, 196, 338, 697]),\n", - " (79918080, [66, 9, 7, 159, 523, 8, 6, 86, 4]),\n", - " (1824702, [2, 7, 48, 28, 921, 800, 701]),\n", - " (131560, [5, 7, 2, 46, 5]),\n", - " (14597440, [87, 29, 715, 8, 22]),\n", - " (558656, [26, 65, 33, 95, 7]),\n", - " (573, [9, 86, 3, 2, 3]),\n", - " (6387481846, [29, 57, 4, 67, 20, 1, 3, 9, 4, 4, 8]),\n", - " (17042, [5, 46, 55, 462, 3, 4]),\n", - " (44168607, [988, 587, 2, 4, 701]),\n", - " (273815126, [1, 11, 8, 327, 46, 31]),\n", - " (7921498223, [7, 8, 98, 32, 3, 6, 1, 91, 1, 21, 9]),\n", - " (2245608984, [249, 427, 85, 9, 897, 88]),\n", - " (36458428589, [958, 6, 5, 9, 1, 7, 8, 2, 3, 6, 3, 7]),\n", - " (24452, [2, 5, 7, 6, 75]),\n", - " (462268, [17, 87, 548, 709, 1]),\n", - " (1873904281746, [428, 41, 89, 54, 9, 9, 65, 9, 6]),\n", - " (1518959335687, [1, 2, 728, 644, 5, 359, 2, 9, 7]),\n", - " (3519, [4, 7, 5, 3, 5, 6, 4, 901, 16, 42, 6]),\n", - " (329767, [916, 9, 40, 7]),\n", - " (92006, [9, 64, 6, 3, 890, 9, 79, 9, 8]),\n", - " (623659532, [2, 621, 659, 4, 1, 30]),\n", - " (1158, [4, 6, 97, 8, 9]),\n", - " (3111, [15, 1, 2, 83, 70, 17]),\n", - " (19719070, [6, 1, 9, 7, 750, 7, 5, 8, 3, 10, 7, 1]),\n", - " (44340, [9, 76, 512, 1, 91, 727, 3]),\n", - " (82544, [2, 77, 67, 8, 1]),\n", - " (8263903262559, [8, 5, 5, 9, 8, 811, 2, 2, 4, 9, 27, 6]),\n", - " (157262143235, [8, 5, 39, 420, 714, 4, 6, 7, 5]),\n", - " (104541876, [9, 675, 779, 1, 876]),\n", - " (66225758971, [4, 2, 4, 6, 7, 8, 39, 82, 7, 8, 9, 3]),\n", - " (666763201, [5, 11, 5, 54, 9, 600, 2, 6]),\n", - " (1553118, [652, 6, 397, 41, 13]),\n", - " (537907321, [572, 24, 94, 95, 785, 838]),\n", - " (38295402, [851, 90, 79, 5, 7]),\n", - " (1044, [81, 5, 6, 876, 77]),\n", - " (4814391, [67, 24, 1, 716, 9]),\n", - " (43347045, [405, 28, 409, 61, 48]),\n", - " (14000704, [93, 965, 4, 39, 484]),\n", - " (148494, [2, 7, 21, 706, 6, 4, 2, 1, 4, 2, 7]),\n", - " (2087576160, [332, 859, 6, 4, 5, 61]),\n", - " (39096, [52, 3, 9, 64, 74, 1, 58, 6, 18]),\n", - " (93081385, [54, 1, 17, 23, 57, 387]),\n", - " (438497, [650, 33, 5, 8, 90, 7, 8, 9]),\n", - " (1957081, [46, 71, 771, 847, 564, 2]),\n", - " (16973783, [1, 484, 443, 3, 79]),\n", - " (58567835, [60, 7, 2, 1, 96, 6, 4, 5, 677, 9, 8]),\n", - " (741152, [30, 43, 7, 27, 9]),\n", - " (358872444, [6, 7, 6, 59, 7, 63, 6, 5, 37, 1, 1, 9]),\n", - " (1356, [81, 54, 339, 1, 873, 8]),\n", - " (579, [6, 7, 18, 515, 4]),\n", - " (298964, [76, 1, 613, 3, 9, 9, 4, 4, 5, 6, 4, 5]),\n", - " (7844, [1, 93, 5, 7, 74]),\n", - " (35269280, [5, 925, 6, 79, 46, 80]),\n", - " (101029, [117, 46, 422, 360, 65, 29]),\n", - " (40800, [50, 4, 8, 25, 74, 8, 8, 3, 1, 1]),\n", - " (458716, [48, 1, 695, 88, 1, 5, 2, 51, 7, 6]),\n", - " (1706, [82, 9, 394, 563, 11]),\n", - " (5516955400, [9, 7, 8, 2, 643, 30, 5, 7, 5, 55, 8]),\n", - " (10841741, [90, 2, 6, 5, 440, 47, 9, 371, 8]),\n", - " (819495, [1, 9, 6, 37, 805, 6, 2, 4, 9, 6, 7, 4]),\n", - " (22154675400, [6, 70, 839, 55, 664, 663]),\n", - " (972026, [9, 24, 45, 23, 3]),\n", - " (5571, [9, 8, 8, 28, 6, 8, 8, 3, 9, 6, 609]),\n", - " (82367, [2, 91, 2, 5, 44, 79, 709, 399]),\n", - " (10764106835, [85, 421, 5, 76, 43, 586]),\n", - " (690914026, [94, 98, 187, 75, 2]),\n", - " (324456, [3, 1, 926, 42, 517, 980, 8]),\n", - " (9979753, [37, 425, 4, 6, 1, 9, 7, 28, 430]),\n", - " (1214098609828, [246, 768, 984, 9, 964, 5, 5]),\n", - " (5445415212, [789, 29, 85, 93, 665, 864]),\n", - " (232925769, [800, 5, 86, 417, 57]),\n", - " (3562762, [649, 68, 88, 85, 69, 40]),\n", - " (3024072, [25, 79, 4, 6, 6, 87, 6, 6, 7, 8, 9]),\n", - " (171632276, [439, 9, 39, 71, 27, 6]),\n", - " (2878475, [533, 6, 21, 9, 84, 1]),\n", - " (250064836, [6, 8, 884, 745, 32, 388, 49]),\n", - " (71568, [7, 669, 993, 35, 42]),\n", - " (10740, [94, 6, 7, 31, 9]),\n", - " (130429634, [96, 347, 7, 4, 7, 3, 264, 8, 6]),\n", - " (142560, [137, 1, 1, 4, 561]),\n", - " (268464239294, [725, 57, 9, 37, 925, 7, 39]),\n", - " (14844538, [34, 6, 4, 330, 6, 742, 71]),\n", - " (2280, [74, 7, 47, 5, 4]),\n", - " (194958990, [215, 11, 6, 924, 41, 86]),\n", - " (525871833413, [72, 7, 249, 83, 3, 2, 2, 6, 7, 5, 2]),\n", - " (2133354176, [5, 553, 92, 9, 857, 80]),\n", - " (825900, [103, 89, 9, 56, 1, 30, 3]),\n", - " (100662626858, [2, 2, 3, 253, 22, 93, 82, 8, 58]),\n", - " (20442464, [2, 8, 8, 2, 1, 3, 7, 9, 8, 5, 94, 2]),\n", - " (4177, [56, 1, 71, 189, 9]),\n", - " (13529345, [2, 7, 5, 29, 344]),\n", - " (41013168737, [422, 729, 7, 14, 7, 99, 464]),\n", - " (1461696, [2, 2, 13, 2, 28, 98]),\n", - " (6768366264, [450, 99, 82, 67, 6, 374]),\n", - " (3301, [4, 5, 363, 26, 8]),\n", - " (1856, [3, 4, 3, 8, 7, 680]),\n", - " (622356, [4, 9, 8, 6, 5, 2, 470, 5, 48, 963]),\n", - " (901318, [997, 549, 583]),\n", - " (11093355, [6, 64, 3, 39, 735]),\n", - " (3786516180217, [3, 4, 8, 8, 744, 2, 28, 594, 9, 7]),\n", - " (1122417, [2, 58, 4, 69, 93]),\n", - " (12192, [43, 337, 5, 48, 6, 2, 81, 421]),\n", - " (137093, [340, 7, 469, 168, 5]),\n", - " (200046, [7, 21, 15, 7, 91, 66]),\n", - " (974926680, [6, 103, 53, 487, 78, 60]),\n", - " (237, [1, 3, 9, 66, 3]),\n", - " (767748, [2, 1, 1, 22, 734, 934]),\n", - " (1185073, [3, 5, 28, 9, 4, 103, 9, 7, 62, 5]),\n", - " (194340763406, [4, 86, 4, 1, 3, 1, 4, 8, 1, 6, 918, 3]),\n", - " (437870620, [973, 5, 153, 76, 9, 9]),\n", - " (1915429459948, [31, 529, 9, 7, 56, 274, 75, 9]),\n", - " (129448447, [1, 84, 92, 635, 7]),\n", - " (2404856, [20, 481, 8, 6, 53]),\n", - " (100356, [9, 75, 2, 3, 6, 97, 792, 8, 34]),\n", - " (34368, [28, 7, 55, 3, 30, 53, 2, 3, 96]),\n", - " (3053309, [812, 6, 4, 626, 933]),\n", - " (580957, [7, 4, 545, 7, 955]),\n", - " (75514741, [32, 3, 959, 4, 210]),\n", - " (516123688, [5, 84, 28, 844, 52, 808]),\n", - " (6404552, [679, 393, 8, 6, 8, 4]),\n", - " (26248222, [3, 8, 78, 1, 91, 7, 22]),\n", - " (230699, [24, 12, 35, 8, 21]),\n", - " (48214854, [7, 48, 8, 4, 6, 25, 210, 9, 97, 9]),\n", - " (356308408569, [2, 5, 3, 59, 444, 9, 55, 3, 67]),\n", - " (152001, [5, 4, 87, 5, 1, 87, 8, 51, 34, 6, 1]),\n", - " (2375050, [47, 15, 912, 3, 7, 2, 3, 76]),\n", - " (2083231, [7, 24, 4, 9, 205, 76, 3, 4, 6, 9]),\n", - " (70434168, [623, 345, 460, 327, 3]),\n", - " (256778, [48, 419, 5, 544, 10]),\n", - " (17127218, [428, 4, 716, 8, 48]),\n", - " (194256, [4, 9, 1, 32, 186, 93, 4, 3, 1, 9]),\n", - " (9170, [555, 7, 627, 645, 5]),\n", - " (603471374, [7, 862, 710, 3, 75]),\n", - " (5315744, [29, 45, 799, 8, 3, 2, 19, 4, 4, 2]),\n", - " (28950089840, [81, 9, 6, 42, 8, 6, 5, 898, 39]),\n", - " (1899345324, [74, 538, 6, 9, 2, 31, 57, 69]),\n", - " (25580, [1, 1, 4, 1, 8, 3, 2, 4, 915, 1, 657]),\n", - " (517756140, [127, 71, 33, 4, 87, 5]),\n", - " (11559915144139, [231, 5, 4, 5, 915, 144, 139]),\n", - " (458808984, [31, 456, 575, 941, 909]),\n", - " (1156, [9, 16, 35, 106, 3, 867, 1]),\n", - " (158001, [7, 305, 140, 2, 8, 342]),\n", - " (591572808, [4, 6, 42, 9, 7, 8, 19, 4, 8, 4, 27, 6]),\n", - " (142291625, [9, 88, 3, 406, 8, 16, 6, 41]),\n", - " (10118, [20, 42, 38, 64, 54]),\n", - " (272079360, [140, 8, 85, 21, 48, 224]),\n", - " (4729, [44, 2, 48, 5, 38, 6, 944, 9, 8]),\n", - " (620, [5, 187, 5, 3, 29]),\n", - " (45980860320, [770, 51, 89, 90, 76, 92]),\n", - " (18984313, [224, 2, 120, 7, 17, 299]),\n", - " (1621080, [7, 4, 8, 42, 3, 804, 60, 6]),\n", - " (816, [5, 82, 88, 312, 5]),\n", - " (126656112, [4, 4, 4, 2, 6, 17, 31, 4, 2, 66, 4, 1]),\n", - " (4956502311, [71, 24, 7, 658, 695]),\n", - " (600688282, [1, 81, 3, 1, 1, 8, 1, 21, 5, 7, 8, 2]),\n", - " (349496, [54, 20, 65, 967, 316]),\n", - " (18120, [9, 169, 92, 33, 58, 544]),\n", - " (2076065, [5, 1, 91, 94, 8, 3, 3]),\n", - " (387582752, [3, 6, 2, 441, 484, 97, 997, 2]),\n", - " (43236, [9, 4, 31, 4, 7, 7, 3, 72, 5, 31, 1, 5]),\n", - " (5185259, [637, 1, 814, 9, 70]),\n", - " (438, [7, 2, 4, 1, 3]),\n", - " (163296554683, [36, 81, 56, 554, 682]),\n", - " (2638, [86, 8, 629, 2, 4]),\n", - " (370152, [9, 6, 5, 241, 2, 5, 2, 2, 7, 8, 9]),\n", - " (252671, [128, 195, 305, 3, 15]),\n", - " (73033867008, [409, 816, 47, 776, 6]),\n", - " (12385, [4, 277, 2, 576, 82, 4, 1, 888]),\n", - " (683, [87, 3, 3, 8, 582]),\n", - " (412633, [4, 91, 37, 4, 56, 2, 560, 5, 8]),\n", - " (74802, [385, 2, 97, 36, 76]),\n", - " (6077322, [53, 982, 1, 7, 648, 37, 1, 5, 9]),\n", - " (507574876, [13, 5, 372, 574, 876]),\n", - " (14321123, [2, 7, 2, 741, 1, 464, 4, 7, 476]),\n", - " (97916488, [84, 979, 466, 9, 4, 5, 64, 6, 1]),\n", - " (25856656, [6, 570, 67, 335, 7, 2, 2]),\n", - " (353544, [64, 6, 8, 9, 15, 731]),\n", - " (5737365612, [35, 541, 2, 303, 14]),\n", - " (2897665008, [4, 7, 8, 875, 8, 7, 7, 9, 8, 12, 2, 6]),\n", - " (867866972593, [867, 866, 97, 2, 560, 32, 1]),\n", - " (627660, [31, 513, 384, 324, 3]),\n", - " (247956255509, [247, 1, 95, 6, 2, 4, 9, 6, 510]),\n", - " (3593202616, [5, 987, 6, 8, 6, 8, 9, 73, 6, 1, 6]),\n", - " (5690, [8, 9, 63, 71, 9]),\n", - " (1814772, [454, 2, 111, 9, 2, 11, 577]),\n", - " (471955, [79, 339, 4, 5, 221, 24, 5]),\n", - " (14081166, [6, 735, 106, 8, 19]),\n", - " (101338037917, [536, 18, 7, 5, 2, 8, 3, 6, 13, 9, 5]),\n", - " (5873208005, [3, 2, 6, 23, 5, 1, 7, 2, 3, 60, 8, 5]),\n", - " (11415228, [364, 6, 18, 8, 648, 60]),\n", - " (16633, [7, 6, 4, 978, 7]),\n", - " (39318, [433, 6, 6, 260, 50, 1, 52, 2, 4]),\n", - " (441012, [6, 7, 5, 84, 282, 1, 8, 1, 42, 7, 2]),\n", - " (184115700, [5, 661, 75, 97, 38]),\n", - " (105393, [1, 7, 2, 539, 5]),\n", - " (39612, [747, 2, 84, 5, 56, 6, 3, 8, 3, 60]),\n", - " (9082523, [94, 91, 2, 2, 607, 991, 8]),\n", - " (22752200452, [9, 4, 6, 2, 4, 60, 67, 133, 452]),\n", - " (16732245, [4, 8, 43, 641, 9, 21, 36]),\n", - " (6789, [699, 8, 620, 577, 1]),\n", - " (272043, [711, 1, 6, 912, 167]),\n", - " (960249, [583, 549, 7, 7, 3, 6, 1]),\n", - " (9381848, [121, 7, 25, 29, 371]),\n", - " (1476, [48, 147, 85, 5, 76]),\n", - " (326673018, [43, 1, 9, 92, 5, 688, 90, 1, 7, 1]),\n", - " (17526, [84, 851, 4, 813, 6]),\n", - " (77447, [4, 7, 781, 9, 34, 3, 1, 5, 72, 7, 9]),\n", - " (17111462255950, [97, 9, 6, 47, 139, 235, 950]),\n", - " (17181223089, [149, 59, 118, 604, 4, 7, 9, 3]),\n", - " (11586, [6, 52, 4, 6, 7, 241, 1, 7, 99]),\n", - " (2716391, [4, 6, 2, 65, 54, 1, 3, 95, 9, 56]),\n", - " (3432106, [4, 3, 4, 3, 2, 712, 17, 9, 8, 1, 1, 1]),\n", - " (587300, [2, 698, 839]),\n", - " (6752480, [67, 51, 65, 74, 10, 88]),\n", - " (21109821785, [3, 88, 2, 60, 55, 2, 7, 5, 754, 9]),\n", - " (124648991, [398, 647, 869, 6, 52]),\n", - " (1116032879, [5, 5, 37, 4, 2, 603, 1, 3, 79]),\n", - " (195581, [99, 27, 73, 446, 6]),\n", - " (127109, [2, 4, 160, 9, 7, 6, 66, 4, 9, 96, 5]),\n", - " (308350, [42, 1, 5, 17, 82, 350]),\n", - " (361771787, [888, 582, 1, 6, 6, 7, 7, 48]),\n", - " (19878, [6, 420, 683, 110, 6]),\n", - " (304, [2, 4, 28, 1, 80]),\n", - " (147574, [5, 59, 5, 68, 4]),\n", - " (2448810, [409, 53, 4, 21, 5, 53, 4, 7, 9]),\n", - " (719716, [6, 389, 64, 196, 8, 4]),\n", - " (1732728, [8, 2, 4, 3, 5, 940, 8, 39, 9, 43]),\n", - " (24551999152, [2, 90, 783, 428, 1, 46, 554]),\n", - " (57836, [3, 68, 8, 2, 27, 5, 9]),\n", - " (134278200849, [2, 3, 6, 45, 8, 7, 520, 7, 5, 848]),\n", - " (79939703763, [4, 6, 2, 7, 5, 4, 1, 4, 3, 29, 83, 9]),\n", - " (52137948672, [931, 436, 534, 31, 3, 8, 96]),\n", - " (9726654, [77, 6, 98, 747, 6, 654]),\n", - " (122932620, [135, 57, 102, 9, 986, 634]),\n", - " (262217569, [73, 8, 7, 7, 5, 9, 5, 29, 603, 1, 3]),\n", - " (32941, [6, 5, 2, 9, 2, 990, 6, 8, 4, 1, 6, 7]),\n", - " (65761, [8, 4, 8, 685, 1]),\n", - " (71664, [7, 1, 61, 5, 4]),\n", - " (30188691225, [147, 720, 595, 495, 573]),\n", - " (534605, [9, 25, 24, 99, 8]),\n", - " (22307765, [367, 262, 29, 8, 37]),\n", - " (123232, [485, 131, 1, 5, 2]),\n", - " (179429560, [76, 35, 30, 235, 9]),\n", - " (67914, [7, 4, 30, 6, 6, 137, 27, 4, 2, 6]),\n", - " (107951753, [6, 7, 257, 5, 6, 61, 56]),\n", - " (5783045, [691, 62, 8, 96, 6]),\n", - " (730398027, [5, 81, 1, 57, 2, 5, 149, 27]),\n", - " (134916360, [4, 195, 27, 9, 93, 6, 5, 30]),\n", - " (3272988, [239, 88, 110, 188, 6]),\n", - " (5886141, [318, 522, 87, 7, 7]),\n", - " (813650145, [81, 300, 526, 4, 406, 158]),\n", - " (420840, [5, 3, 827, 3, 7, 68, 532]),\n", - " (8512852864405, [5, 5, 224, 5, 6, 1, 4, 3, 8, 76, 1, 5]),\n", - " (38682, [247, 2, 5, 8, 436, 3]),\n", - " (5256, [4, 71, 7, 6]),\n", - " (321720, [30, 7, 702, 2, 5, 26, 2, 7, 5]),\n", - " (70454400, [2, 3, 7, 2, 98, 614, 4, 2, 82, 4, 8]),\n", - " (154909476, [396, 5, 9, 64, 654, 96, 1, 6, 6]),\n", - " (12480617, [2, 5, 52, 24, 617]),\n", - " (132691, [1, 73, 767]),\n", - " (10245752, [13, 69, 62, 7, 124, 7]),\n", - " (36484493, [6, 1, 5, 705, 8, 9, 77, 9, 8, 1, 7, 3]),\n", - " (14420234120, [79, 65, 202, 341, 23]),\n", - " (1440, [9, 1, 6, 128, 1, 8]),\n", - " (907648961, [7, 1, 83, 248, 1, 7, 4, 995, 1, 1]),\n", - " (38653398, [66, 23, 7, 3, 9, 1, 78, 9, 139, 2]),\n", - " (812462401, [434, 26, 188, 6, 72, 12]),\n", - " (3451, [9, 1, 3, 4, 7, 3, 9, 56, 2, 4, 395, 7]),\n", - " (12856859, [29, 4, 1, 56, 435]),\n", - " (18345048481, [925, 491, 187, 51, 4, 6, 9, 4]),\n", - " (14362270, [51, 7, 926, 3, 7]),\n", - " (145899018, [751, 1, 98, 891, 2, 7, 978]),\n", - " (599135437, [22, 19, 9, 3, 5, 436]),\n", - " (36110793601, [398, 30, 6, 8, 56, 9, 600]),\n", - " (2444762940, [710, 427, 384, 3, 21]),\n", - " (141178320, [62, 52, 44, 5, 1, 8, 3, 3, 6, 8, 3, 5]),\n", - " (17031, [5, 34, 28]),\n", - " (469049041, [7, 2, 180, 7, 2, 4, 6, 43, 5, 6, 9, 1]),\n", - " (200611, [2, 31, 67, 8, 90, 901]),\n", - " (59903676, [119, 660, 18, 30, 87, 49]),\n", - " (904348, [3, 7, 9, 1, 3, 993, 352]),\n", - " (32426911445, [58, 243, 154, 83, 5, 36, 5]),\n", - " (8159988, [3, 513, 57, 5, 53]),\n", - " (264192030, [61, 96, 4, 2, 81, 58, 345]),\n", - " (47245, [1, 3, 4, 2, 8, 8, 973, 28, 4, 5, 8, 5]),\n", - " (4019, [6, 8, 5, 66, 29, 75]),\n", - " (1908535419, [20, 1, 2, 5, 4, 13, 8, 1, 2, 491, 9]),\n", - " (63495761472, [7, 8, 8, 5, 522, 1, 53, 1, 2, 724]),\n", - " (974547, [2, 2, 5, 6, 9, 1, 6, 7, 4, 82, 651]),\n", - " (8464945, [8, 1, 33, 4, 1, 5, 8, 697, 71, 8, 9]),\n", - " (35191519, [7, 4, 301, 173, 9, 3, 6, 1, 43]),\n", - " (3809988720, [2, 82, 4, 610, 890, 354, 6, 2]),\n", - " (1974, [930, 24, 9, 25, 2]),\n", - " (19950132400, [68, 50, 319, 34, 541]),\n", - " (116117283, [59, 6, 855, 466, 80, 3]),\n", - " (7105321381, [2, 94, 37, 660, 679, 9, 2, 1, 2]),\n", - " (200055003120, [16, 61, 64, 8, 41, 9, 6, 85]),\n", - " (7052183817, [7, 8, 197, 905, 2, 44, 2, 8, 3, 7]),\n", - " (30619382, [4, 4, 5, 588, 10, 8, 3, 9, 4, 1, 1, 4]),\n", - " (49486383, [8, 3, 737, 3, 40, 61, 745, 1]),\n", - " (3059155939, [6, 978, 548, 92, 8]),\n", - " (17913, [5, 9, 198, 5, 21, 2, 1, 8, 9, 23]),\n", - " (2322270, [6, 6, 7, 30, 9, 915]),\n", - " (864437011221, [78, 42, 3, 6, 16, 190, 6, 9, 3, 7]),\n", - " (9824074336, [982, 399, 8, 433, 5, 1]),\n", - " (172953218, [6, 90, 87, 334, 62]),\n", - " (3416363, [7, 4, 6, 7, 476, 5, 3, 5, 7, 957, 1]),\n", - " (3482929737, [73, 1, 6, 4, 47, 2, 2, 1, 8, 737]),\n", - " (143276320, [43, 7, 595, 4, 80]),\n", - " (6399648, [247, 75, 207, 96, 775, 89]),\n", - " (171394, [63, 32, 85, 6, 28]),\n", - " (6163474, [11, 56, 25, 9, 74, 1]),\n", - " (9740881928, [493, 4, 4, 320, 11, 4, 348, 8]),\n", - " (282630796, [7, 5, 927, 4, 871, 3]),\n", - " (5329, [54, 468, 7, 9, 95]),\n", - " (198832303516, [473, 41, 6, 1, 4, 1, 7, 88, 7]),\n", - " (1592, [44, 34, 9, 80, 5]),\n", - " (78037377, [86, 7, 9, 66, 27, 746, 4]),\n", - " (1435, [8, 6, 63, 94, 7]),\n", - " (330759891, [50, 66, 7, 598, 91]),\n", - " (201052210549, [9, 5, 5, 1, 525, 9, 4, 8, 2, 5, 5, 46]),\n", - " (1625512034997, [61, 50, 20, 835, 17, 1, 931]),\n", - " (531193971, [4, 3, 57, 7, 12, 939, 69]),\n", - " (8729765, [8, 4, 241, 515, 67]),\n", - " (3361296, [6, 78, 500, 2, 3, 8, 239]),\n", - " (2575584850, [398, 2, 66, 813, 7, 6, 4, 1, 1, 2]),\n", - " (77725723, [61, 2, 942, 920, 129, 313]),\n", - " (1303, [9, 57, 119, 7, 8]),\n", - " (12121579, [37, 252, 2, 9, 13]),\n", - " (1332800, [74, 9, 2, 796, 4]),\n", - " (525202, [22, 19, 22, 6, 1, 57, 589, 99]),\n", - " (6420440, [2, 5, 1, 7, 7, 6, 8, 4, 3, 76, 65]),\n", - " (97021540, [87, 3, 97, 2, 153, 7, 1]),\n", - " (4553395, [9, 35, 61, 92, 395]),\n", - " (34433, [819, 1, 6, 5, 7]),\n", - " (350904680, [2, 8, 8, 207, 453, 8, 4, 1, 6]),\n", - " (1767, [2, 76, 10, 95, 58, 94]),\n", - " (841148, [36, 8, 473, 148]),\n", - " (140428093859, [9, 197, 4, 9, 2, 9, 5, 4, 2, 5, 55, 9]),\n", - " (1935426374140, [82, 59, 5, 65, 9, 351, 1, 4, 96])]" - ] - }, - "execution_count": 114, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "lines" - ] - }, - { - "cell_type": "code", - "execution_count": 115, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -893,7 +24,7 @@ "True" ] }, - "execution_count": 115, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -925,7 +56,7 @@ }, { "cell_type": "code", - "execution_count": 116, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -934,7 +65,7 @@ "1260333054159" ] }, - "execution_count": 116, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -957,38 +88,42 @@ }, { "cell_type": "code", - "execution_count": 117, + "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "192" + "True" ] }, - "execution_count": 117, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import re\n", - "import math\n", + "\n", + "splitter = re.compile(r'(\\+|\\*|\\|)')\n", "\n", "\n", "\n", - "def evaluate_expression_no_precedence(expression):\n", + "\n", + "def evaluate_expression_no_precedence(expression,expected):\n", " # Handle the case where the expression contains only a number\n", " if expression.isdigit():\n", - " return int(expression)\n", + " return int(expression) == expected\n", "\n", " # Split the expression into numbers and operators using regex\n", - " parts = re.split(r'(\\+|\\*|\\|)', expression)\n", + " parts = splitter.split(expression)\n", " parts = [int(parts[i]) if i % 2 == 0 else parts[i] for i in range(len(parts))] # Convert numbers to int\n", "\n", " # Evaluate left-to-right\n", " result = parts[0] # Start with the first number\n", " for i in range(1, len(parts), 2): # Step through operators and numbers\n", + " if result > expected:\n", + " return False\n", " operator = parts[i]\n", " number = parts[i + 1]\n", " if operator == '+':\n", @@ -998,38 +133,23 @@ " elif operator == '|':\n", " result = int(f\"{result}{number}\")\n", "\n", + " return result == expected\n", "\n", - "\n", - " return result\n", - "\n", - "evaluate_expression_no_precedence(\"17|8+14\")" + "evaluate_expression_no_precedence(\"17|8+14\",192)" ] }, { "cell_type": "code", - "execution_count": 118, + "execution_count": 32, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "39 17+8+14\n", - "350 17+8*14\n", - "2514 17+8|14\n", - "150 17*8+14\n", - "1904 17*8*14\n", - "13614 17*8|14\n", - "192 17|8+14\n" - ] - }, { "data": { "text/plain": [ "True" ] }, - "execution_count": 118, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -1038,18 +158,14 @@ "# Input lists\n", "def test2(values, expected,debug=False):\n", " operators = ['+', '*', '|']\n", - " combinations = []\n", " for signs in itertools.product(operators, repeat=len(values)-1):\n", " expression = f\"{values[0]}\"\n", " for num, sign in zip(values[1:], signs):\n", " expression += f\"{sign}{num}\"\n", - " combinations.append(expression)\n", - " for combination in combinations:\n", - " result = evaluate_expression_no_precedence(combination)\n", - "\n", - " if debug: print(result,combination)\n", - " if result == expected:\n", + " if evaluate_expression_no_precedence(expression,expected):\n", " return True\n", + " \n", + " \n", " return False\n", "\n", "test2([17, 8, 14],192,True)\n" @@ -1057,105 +173,14 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - " " - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - " 85200257 function calls (85200236 primitive calls) in 67.794 seconds\n", - "\n", - " Ordered by: internal time\n", - "\n", - " ncalls tottime percall cumtime percall filename:lineno(function)\n", - " 8689301 30.915 0.000 45.946 0.000 4081283487.py:6(evaluate_expression_no_precedence)\n", - " 850 19.248 0.023 63.910 0.075 4139769416.py:2(test2)\n", - " 8689301 8.034 0.000 8.034 0.000 {method 'split' of 're.Pattern' objects}\n", - " 8689301 2.212 0.000 13.136 0.000 __init__.py:199(split)\n", - " 8689301 1.964 0.000 2.891 0.000 __init__.py:280(_compile)\n", - " 17379482 1.079 0.000 1.079 0.000 {built-in method builtins.len}\n", - " 15683544 1.063 0.000 1.063 0.000 {method 'append' of 'list' objects}\n", - " 8689308 0.927 0.000 0.927 0.000 {built-in method builtins.isinstance}\n", - " 13 0.860 0.066 2.376 0.183 selectors.py:313(_select)\n", - " 8689301 0.817 0.000 0.817 0.000 {method 'isdigit' of 'str' objects}\n", - " 13 0.335 0.026 51.145 3.934 selectors.py:319(select)\n", - " 13 0.324 0.025 75.742 5.826 base_events.py:1915(_run_once)\n", - " 2 0.013 0.006 0.015 0.008 {method '__exit__' of 'sqlite3.Connection' objects}\n", - " 1 0.004 0.004 2.001 2.001 :1()\n", - " 13 0.001 0.000 0.001 0.000 {built-in method select.select}\n", - " 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}\n", - " 7 0.000 0.000 0.000 0.000 iostream.py:127(_event_pipe_gc)\n", - " 14 0.000 0.000 0.000 0.000 events.py:36(__init__)\n", - " 7 0.000 0.000 0.000 0.000 {method 'set_result' of '_asyncio.Future' objects}\n", - " 14 0.000 0.000 0.000 0.000 tasks.py:653(sleep)\n", - " 14 0.000 0.000 0.001 0.000 {method 'run' of '_contextvars.Context' objects}\n", - " 7 0.000 0.000 0.000 0.000 iostream.py:118(_run_event_pipe_gc)\n", - " 14 0.000 0.000 0.001 0.000 events.py:86(_run)\n", - " 7 0.000 0.000 0.000 0.000 base_events.py:813(_call_soon)\n", - " 21 0.000 0.000 0.000 0.000 threading.py:1222(is_alive)\n", - " 28 0.000 0.000 0.000 0.000 base_events.py:733(time)\n", - " 7 0.000 0.000 0.000 0.000 events.py:155(cancel)\n", - " 7 0.000 0.000 0.000 0.000 base_events.py:742(call_later)\n", - " 7 0.000 0.000 0.000 0.000 base_events.py:766(call_at)\n", - " 7 0.000 0.000 0.000 0.000 base_events.py:446(create_future)\n", - " 1 0.000 0.000 67.708 67.708 threading.py:637(wait)\n", - " 21 0.000 0.000 0.000 0.000 {built-in method builtins.max}\n", - " 23/2 0.000 0.000 0.000 0.000 {method 'acquire' of '_thread.lock' objects}\n", - " 7 0.000 0.000 0.000 0.000 futures.py:313(_set_result_unless_cancelled)\n", - " 21 0.000 0.000 0.000 0.000 threading.py:1155(_wait_for_tstate_lock)\n", - " 7 0.000 0.000 0.000 0.000 base_events.py:784(call_soon)\n", - " 28 0.000 0.000 0.000 0.000 {built-in method time.monotonic}\n", - " 7 0.000 0.000 0.000 0.000 events.py:111(__init__)\n", - " 2 0.000 0.000 0.000 0.000 traitlets.py:718(_validate)\n", - " 1 0.000 0.000 0.000 0.000 traitlets.py:1527(_notify_observers)\n", - " 2 0.000 0.000 0.000 0.000 traitlets.py:3631(set)\n", - " 7 0.000 0.000 0.000 0.000 {built-in method _heapq.heappop}\n", - " 14 0.000 0.000 0.000 0.000 selector_events.py:750(_process_events)\n", - " 7 0.000 0.000 0.000 0.000 events.py:72(cancel)\n", - " 1 0.000 0.000 2.001 2.001 {built-in method builtins.exec}\n", - " 14 0.000 0.000 0.000 0.000 {method 'popleft' of 'collections.deque' objects}\n", - " 7 0.000 0.000 0.000 0.000 {built-in method _contextvars.copy_context}\n", - " 15 0.000 0.000 0.000 0.000 {method 'append' of 'collections.deque' objects}\n", - " 7 0.000 0.000 0.000 0.000 {built-in method builtins.min}\n", - " 21 0.000 0.000 0.000 0.000 threading.py:601(is_set)\n", - " 2 0.000 0.000 0.000 0.000 traitlets.py:689(set)\n", - " 2 0.000 0.000 0.000 0.000 traitlets.py:3474(validate)\n", - " 1 0.000 0.000 0.000 0.000 {built-in method _thread.allocate_lock}\n", - " 7 0.000 0.000 0.000 0.000 {built-in method _asyncio.get_running_loop}\n", - " 7 0.000 0.000 0.000 0.000 {built-in method _heapq.heappush}\n", - " 5 0.000 0.000 0.000 0.000 {built-in method builtins.hasattr}\n", - " 28 0.000 0.000 0.000 0.000 base_events.py:2010(get_debug)\n", - " 2 0.000 0.000 0.000 0.000 traitlets.py:727(_cross_validate)\n", - " 9 0.000 0.000 0.000 0.000 {method '__exit__' of '_thread.lock' objects}\n", - " 2 0.000 0.000 0.000 0.000 traitlets.py:676(__get__)\n", - " 7 0.000 0.000 0.000 0.000 {method 'items' of 'dict' objects}\n", - " 1 0.000 0.000 0.000 0.000 traitlets.py:1512(_notify_trait)\n", - " 2 0.000 0.000 0.000 0.000 traitlets.py:3624(validate_elements)\n", - " 14 0.000 0.000 0.000 0.000 base_events.py:538(_check_closed)\n", - " 7 0.000 0.000 0.000 0.000 {method 'cancelled' of '_asyncio.Future' objects}\n", - " 2 0.000 0.000 0.000 0.000 traitlets.py:2304(validate)\n", - " 1 0.000 0.000 0.000 0.000 traitlets.py:1523(notify_change)\n", - " 2 0.000 0.000 0.000 0.000 traitlets.py:708(__set__)\n", - " 1 0.000 0.000 0.000 0.000 history.py:839(_writeout_output_cache)\n", - " 7 0.000 0.000 0.000 0.000 base_events.py:1910(_timer_handle_cancelled)\n", - " 2 0.000 0.000 0.000 0.000 traitlets.py:629(get)\n", - " 1 0.000 0.000 0.000 0.000 threading.py:314(_is_owned)\n", - " 14 0.000 0.000 0.000 0.000 typing.py:2183(cast)\n", - " 1 0.000 0.000 0.000 0.000 threading.py:299(__enter__)\n", - " 1 0.000 0.000 0.000 0.000 threading.py:308(_release_save)\n", - " 2 0.000 0.000 0.000 0.000 traitlets.py:3486(validate_elements)\n", - " 4 0.000 0.000 0.000 0.000 {method 'get' of 'dict' objects}\n", - " 1 0.000 0.000 0.000 0.000 {method '__enter__' of '_thread.lock' objects}\n", - " 2 0.000 0.000 0.000 0.000 {method 'extend' of 'list' objects}\n", - " 1 0.000 0.000 0.000 0.000 {method 'release' of '_thread.lock' objects}" + "162042343638683\n" ] } ], @@ -1186,7 +211,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.8" + "version": "3.8.10" } }, "nbformat": 4, diff --git a/8/8.ipynb b/8/8.ipynb index ecf9edb..9eff176 100644 --- a/8/8.ipynb +++ b/8/8.ipynb @@ -1,164 +1,295 @@ { - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ + "cells": [ { - "data": { - "text/plain": [ - "344" + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "xgruaa0X9m1U", + "outputId": "374ce0d2-a69a-4e08-d15e-3c85b2710ad9" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "344" + ] + }, + "metadata": {}, + "execution_count": 2 + } + ], + "source": [ + "# Load the larger test file and process it using the solution\n", + "file_path = 'input'\n", + "\n", + "def process_large_file(file_path):\n", + " with open(file_path, 'r') as file:\n", + " lines = [line.rstrip('\\n') for line in file.readlines()]\n", + "\n", + " height = len(lines)\n", + " width = len(lines[0]) if height > 0 else 0\n", + "\n", + " # Identify antennas and their frequencies\n", + " freq_map = {}\n", + " for y in range(height):\n", + " for x in range(width):\n", + " c = lines[y][x]\n", + " if c != '.':\n", + " if c not in freq_map:\n", + " freq_map[c] = []\n", + " freq_map[c].append((x, y))\n", + "\n", + " # A set to hold all unique antinode locations\n", + " antinodes = set()\n", + "\n", + " # Candidate λ values based on derived equations\n", + " lambdas = [2, -1, 1/3, 2/3]\n", + "\n", + " for freq, antennas in freq_map.items():\n", + " n = len(antennas)\n", + " if n < 2:\n", + " continue\n", + "\n", + " for i in range(n):\n", + " for j in range(i+1, n):\n", + " x1, y1 = antennas[i]\n", + " x2, y2 = antennas[j]\n", + " dx = x2 - x1\n", + " dy = y2 - y1\n", + "\n", + " for lam in lambdas:\n", + " px = x1 + lam * dx\n", + " py = y1 + lam * dy\n", + "\n", + " if abs(px - round(px)) < 1e-12 and abs(py - round(py)) < 1e-12:\n", + " rx = round(px)\n", + " ry = round(py)\n", + "\n", + " if 0 <= rx < width and 0 <= ry < height:\n", + " antinodes.add((rx, ry))\n", + "\n", + " # Output the number of unique antinode locations\n", + " return len(antinodes)\n", + "\n", + "process_large_file('input')\n" ] - }, - "execution_count": 1, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Load the larger test file and process it using the solution\n", - "file_path = 'input'\n", - "\n", - "def process_large_file(file_path):\n", - " with open(file_path, 'r') as file:\n", - " lines = [line.rstrip('\\n') for line in file.readlines()]\n", - " \n", - " height = len(lines)\n", - " width = len(lines[0]) if height > 0 else 0\n", - "\n", - " # Identify antennas and their frequencies\n", - " freq_map = {}\n", - " for y in range(height):\n", - " for x in range(width):\n", - " c = lines[y][x]\n", - " if c != '.':\n", - " if c not in freq_map:\n", - " freq_map[c] = []\n", - " freq_map[c].append((x, y))\n", - "\n", - " # A set to hold all unique antinode locations\n", - " antinodes = set()\n", - "\n", - " # Candidate λ values based on derived equations\n", - " lambdas = [2, -1, 1/3, 2/3]\n", - "\n", - " for freq, antennas in freq_map.items():\n", - " n = len(antennas)\n", - " if n < 2:\n", - " continue\n", - "\n", - " for i in range(n):\n", - " for j in range(i+1, n):\n", - " x1, y1 = antennas[i]\n", - " x2, y2 = antennas[j]\n", - " dx = x2 - x1\n", - " dy = y2 - y1\n", - "\n", - " for lam in lambdas:\n", - " px = x1 + lam * dx\n", - " py = y1 + lam * dy\n", - "\n", - " if abs(px - round(px)) < 1e-12 and abs(py - round(py)) < 1e-12:\n", - " rx = round(px)\n", - " ry = round(py)\n", - "\n", - " if 0 <= rx < width and 0 <= ry < height:\n", - " antinodes.add((rx, ry))\n", - "\n", - " # Output the number of unique antinode locations\n", - " return len(antinodes)\n", - "\n", - "process_large_file(file_path)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ + }, { - "data": { - "text/plain": [ - "1182" + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "RvPJM8km9m1W", + "outputId": "77731738-0776-46da-e8e5-4faf9e334515" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "1182" + ] + }, + "metadata": {}, + "execution_count": 3 + } + ], + "source": [ + "def process_part_two(file_path):\n", + " with open(file_path, 'r') as file:\n", + " lines = [line.rstrip('\\n') for line in file.readlines()]\n", + "\n", + " height = len(lines)\n", + " width = len(lines[0]) if height > 0 else 0\n", + "\n", + " # Identify antennas and their frequencies\n", + " freq_map = {}\n", + " for y in range(height):\n", + " for x in range(width):\n", + " c = lines[y][x]\n", + " if c != '.':\n", + " if c not in freq_map:\n", + " freq_map[c] = []\n", + " freq_map[c].append((x, y))\n", + "\n", + " # A set to hold all unique antinode locations\n", + " antinodes = set()\n", + "\n", + " # For each frequency group, consider all pairs of antennas\n", + " for freq, antennas in freq_map.items():\n", + " n = len(antennas)\n", + " if n < 2:\n", + " continue\n", + "\n", + " for i in range(n):\n", + " for j in range(i + 1, n):\n", + " x1, y1 = antennas[i]\n", + " x2, y2 = antennas[j]\n", + "\n", + " # Calculate the collinearity condition\n", + " for x in range(width):\n", + " for y in range(height):\n", + " if (x2 - x1) * (y - y1) == (y2 - y1) * (x - x1):\n", + " antinodes.add((x, y))\n", + "\n", + " # Include the positions of all antennas as antinodes\n", + " for freq, antennas in freq_map.items():\n", + " for x, y in antennas:\n", + " antinodes.add((x, y))\n", + "\n", + " # Return the number of unique antinode locations\n", + " return len(antinodes)\n", + "\n", + "\n", + "# Process the larger test file for part two\n", + "process_part_two('input')\n" ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" + }, + { + "source": [ + "# prompt: visualize the map\n", + "\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Load the larger test file and process it using the solution\n", + "file_path = 'input'\n", + "\n", + "def process_large_file(file_path):\n", + " with open(file_path, 'r') as file:\n", + " lines = [line.rstrip('\\n') for line in file.readlines()]\n", + "\n", + " height = len(lines)\n", + " width = len(lines[0]) if height > 0 else 0\n", + "\n", + " # Identify antennas and their frequencies\n", + " freq_map = {}\n", + " for y in range(height):\n", + " for x in range(width):\n", + " c = lines[y][x]\n", + " if c != '.':\n", + " if c not in freq_map:\n", + " freq_map[c] = []\n", + " freq_map[c].append((x, y))\n", + "\n", + " # A set to hold all unique antinode locations\n", + " antinodes = set()\n", + "\n", + " # Candidate λ values based on derived equations\n", + " lambdas = [2, -1, 1/3, 2/3]\n", + "\n", + " for freq, antennas in freq_map.items():\n", + " n = len(antennas)\n", + " if n < 2:\n", + " continue\n", + "\n", + " for i in range(n):\n", + " for j in range(i+1, n):\n", + " x1, y1 = antennas[i]\n", + " x2, y2 = antennas[j]\n", + " dx = x2 - x1\n", + " dy = y2 - y1\n", + "\n", + " for lam in lambdas:\n", + " px = x1 + lam * dx\n", + " py = y1 + lam * dy\n", + "\n", + " if abs(px - round(px)) < 1e-12 and abs(py - round(py)) < 1e-12:\n", + " rx = round(px)\n", + " ry = round(py)\n", + "\n", + " if 0 <= rx < width and 0 <= ry < height:\n", + " antinodes.add((rx, ry))\n", + " # The line below was previously commented out and caused the error\n", + " # because the variable 'antinodes' was not defined.\n", + " # It has been uncommented and restored to its original functionality.\n", + " return antinodes, width, height, lines # Return antinodes and dimensions\n", + "\n", + "\n", + "def visualize_map(antinodes, width, height, lines):\n", + " # Create a 2D array to represent the map\n", + " map_array = [['.' for _ in range(width)] for _ in range(height)]\n", + "\n", + " # Place antennas on the map\n", + " for y in range(height):\n", + " for x in range(width):\n", + " map_array[y][x] = lines[y][x]\n", + "\n", + " # Mark antinodes on the map\n", + " for x, y in antinodes:\n", + " map_array[y][x] = '#'\n", + "\n", + " # Display the map using matplotlib\n", + " plt.figure(figsize=(10, 10)) # Adjust figure size as needed\n", + " plt.imshow([[ord(c) for c in row] for row in map_array], cmap='viridis')\n", + " plt.colorbar()\n", + " plt.show()\n", + "\n", + "\n", + "# Call the function and get the results\n", + "antinodes, width, height, lines = process_large_file('testinput')\n", + "visualize_map(antinodes, width, height, lines)" + ], + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 821 + }, + "id": "TbsEuRwx-giw", + "outputId": "2b2f61ab-c2b5-40e5-bddc-2c191f6529aa" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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2jEm1B6dAQAAKJQwAAAAhTImBABA7bRajbQqNpZTtXoSnQEAACiWMAAAAIUyJgQAQO0000gz1RrLqVo9ic4AAAAUSxgAAIBCGRMCAKB23HSsPToDAABQKGEAAAAKZUwIAIDacdOx9ugMAABAoYQBAAAolDEhAABqx25C7dEZAACAQgkDAABQKGEAAIDaeWc3oaqtdl1++eVpNBoD1kEHHdT//AknnLDF81/84he3+evkmgEAAKigQw89NA8++GD/4512Gvij+7nnnpsrr7yy//Guu+66zecQBgAAoIJ22mmnjBkz5j2f33XXXX/j8+0wJgQAQO203t5NqErrnTGh3t7eAWvTpk1b/Wd44YUXMm7cuHz0ox/NjBkz8vLLLw94/q677sree++diRMnZu7cuXnjjTe2+eukMwAAADtQT0/PgMfz5s3L5ZdfPuDY5MmTc+edd+bjH/94Xn311VxxxRX53d/93Tz33HMZMWJEPvvZz2b8+PEZN25cnnnmmVx00UVZsWJFfvCDH2xTLcIAAADsQKtWrUp3d3f/466uri1ec9JJJ/X/edKkSZk8eXLGjx+f733ve/nCF76Q8847r//5ww47LGPHjs2JJ56YF198MQcccEDbtQgDAADUTitJq9XpKgZ6p5zu7u4BYaAde+yxRz72sY9l5cqVW31+8uTJSZKVK1duUxhwzQAAAFTc+vXr8+KLL2bs2LFbfX758uVJ8p7PvxedAQAAqJivfvWrOfXUUzN+/Pi88sormTdvXoYOHZrPfOYzefHFF7No0aJ8+tOfzqhRo/LMM89k9uzZOf744zNp0qRtOo8wAABA7TTTSCPt3+RrR2huQz0///nP85nPfCa/+tWvss8+++S4447L0qVLs88++2Tjxo158MEHs2DBgmzYsCE9PT0544wzcskll2xzTcIAAABUzN133/2ez/X09GTJkiWDch7XDAAAQKF0BgAAqJ3Wv7vJV1VUrZ5EZwAAAIolDAAAQKGMCQEAUDvNViONio3lNCtWT6IzAAAAxRIGAACgUMaEAAConVZr86qSqtWT6AwAAECxhAEAACiUMSEAAGrHTcfaozMAAACFEgYAAKBQxoQAAKgdY0Lt0RkAAIBCCQMAAFAoY0IAANROs9VIo2JjOc2K1ZPoDAAAQLF0Btgmay44ttMl8Bts2qPTFQyurtc6XQHvxWdTbaNvfLTTJQwa/92B7UsYAACgdlqtzatKqlZPYkwIAACKJQwAAEChjAkBAFA7m8eEqrV7jzEhAACgMoQBAAAolDEhAABqp9VqVHBMqFr1JDoDAABQLGEAAAAKZUwIAIDaab29qqRq9SQ6AwAAUCxhAAAACmVMCACA2rGbUHt0BgAAoFDCAAAAFMqYEAAA9WM7obboDAAAQKGEAQAAKJQxIQAA6qeCuwmlavVEZwAAAIolDAAAQKG2exi49tpr02g0MmvWrO19KgAASJK0WtVcVbNdw8CyZcty6623ZtKkSdvzNAAAwPuw3cLA+vXrM2PGjNx+++3Zc889t9dpAACA92m7hYGZM2fm5JNPzrRp037j6zZt2pTe3t4BCwAAPojW27sJVW1VzXbZWvTuu+/O008/nWXLlv2Hr50/f36uuOKK7VEGAADwGwx6Z2DVqlW58MILc9ddd2XYsGH/4evnzp2bdevW9a9Vq1YNdkkAAMBWDHpn4KmnnsratWtz5JFH9h/r6+vLww8/nJtuuimbNm3K0KFD+5/r6upKV1fXYJcBAEDJWo3q3eSravVkO4SBE088Mc8+++yAY+ecc04OOuigXHTRRQOCAAAA0DmDHgZGjBiRiRMnDji22267ZdSoUVscBwAAOme7XEAMAACdVMWbfFWtnmQHhYGHHnpoR5wGAADYBtv1DsQAAEB1GRMCAKB+Wm+vKqlaPdEZAACAYgkDAABQKGNCAADUTqvVSKtiN/mqWj2JzgAAABRLGAAAgEIZEwIAoJ4quHtP1egMAABAoYQBAAAolDEhAABqx25C7dEZAACAQgkDAABQKGNCAADUTyvV202oavVEZwAAAIolDAAAQKGMCQEAUEONt1eVVK0enQEAACiWMAAAAIUyJrQDjL7x0U6XMGjWXHBsp0vgN+h6rdMV8F7q9H0g8b2g6nw+ELsJtUlnAAAACiUMAABAoYwJAQBQP8aE2qIzAAAAhRIGAACgUMaEAACon1Zj86qSqtUTnQEAACiWMAAAAIUyJgQAQO20WptXlVStnkRnAAAAiiUMAABAoYwJAQBQP2461hadAQAAKJQwAAAAhTImBABA/bjpWFt0BgAAoFDCAAAAFMqYEAAAtdNobV5VUrV6Ep0BAAAoljAAAACFMiYEAED9uOlYW3QGAACgUMIAAAAUypgQAAD146ZjbdEZAACAQgkDAABQKGNCAADUj92E2qIzAAAAhRIGAACgUMaEAACoH2NCbdEZAACAQgkDAABQKGNCAADUjzGhtugMAABAoYQBAAAolDEhAADqp9XYvKqkavVEZwAAAIolDAAAQKGMCQEAUDuN1uZVJVWrJ9EZAACAYgkDAABQKGNCAADUj5uOtUVnAAAACiUMAABAoYQBAAAolDAAAACFEgYAAKBiLr/88jQajQHroIMO6n9+48aNmTlzZkaNGpXdd989Z5xxRtasWbPN5xEGAAConUb+343HKrO28Z/h0EMPzauvvtq/Hnnkkf7nZs+enb/927/N3/zN32TJkiV55ZVX8od/+Ifb/HWytSgAAFTQTjvtlDFjxmxxfN26dfn2t7+dRYsW5fd+7/eSJHfccUcOPvjgLF26NL/zO7/T9jl0BgAAoIJeeOGFjBs3Lh/96EczY8aMvPzyy0mSp556Km+99VamTZvW/9qDDjoo+++/fx577LFtOofOwA6w5oJjO10C72H0jY92uoRB5d+16vLZAPCO3t7eAY+7urrS1dU14NjkyZNz55135uMf/3heffXVXHHFFfnd3/3dPPfcc1m9enV22WWX7LHHHgP+zujRo7N69eptqkUYAACgflqNzatK3q6np6dnwOF58+bl8ssvH3DspJNO6v/zpEmTMnny5IwfPz7f+973Mnz48EErSRgAAIAdaNWqVenu7u5//O6uwNbsscce+djHPpaVK1fm93//9/Pmm2/mtddeG9AdWLNmzVavMfhNXDMAAAA7UHd394DVThhYv359XnzxxYwdOzZHHXVUdt555yxevLj/+RUrVuTll1/OlClTtqkWnQEAAOqn9faqkm2o56tf/WpOPfXUjB8/Pq+88krmzZuXoUOH5jOf+UxGjhyZL3zhC5kzZ0722muvdHd35ytf+UqmTJmyTTsJJcIAAABUzs9//vN85jOfya9+9avss88+Oe6447J06dLss88+SZK/+Iu/yJAhQ3LGGWdk06ZNmT59er71rW9t83mEAQAAqJi77777Nz4/bNiw3Hzzzbn55ps/0HmEAQAA6udDPia0o7iAGAAACiUMAABAoYwJAQBQO43W5lUlVasn0RkAAIBiCQMAAFAoY0IAANSP3YTaojMAAACFEgYAAKBQxoQAAKgfY0Jt0RkAAIBCCQMAAFAoY0IAANSOm461R2cAAAAKJQwAAEChtksY+MUvfpHPfe5zGTVqVIYPH57DDjssTz755PY4FQAAbKnVqOaqmEG/ZuDXv/51pk6dmk9+8pO59957s88+++SFF17InnvuOdinAgAAPoBBDwPXXXddenp6cscdd/QfmzBhwmCfBgAA+IAGfUzoxz/+cY4++uiceeaZ2XfffXPEEUfk9ttvf8/Xb9q0Kb29vQMWAAB8IK2KrooZ9DDws5/9LLfccksOPPDA3H///fnSl76UCy64IN/5zne2+vr58+dn5MiR/aunp2ewSwIAALZi0MNAs9nMkUcemWuuuSZHHHFEzjvvvJx77rlZuHDhVl8/d+7crFu3rn+tWrVqsEsCAAC2YtCvGRg7dmwOOeSQAccOPvjgfP/739/q67u6utLV1TXYZQAAUDA3HWvPoHcGpk6dmhUrVgw49vzzz2f8+PGDfSoAAOADGPQwMHv27CxdujTXXHNNVq5cmUWLFuW2227LzJkzB/tUAADABzDoYeCYY47JPffck7/+67/OxIkT841vfCMLFizIjBkzBvtUAACwdZ3eNehDspvQoF8zkCSnnHJKTjnllO3x1gAAwCAZ9M4AAADw4bBdOgMAANBRFdxNqIpjQjoDAABQKGEAAAAKZUwIAID6qeLuPVWrJzoDAABQLGEAAAAKZUwIAID6MSbUFp0BAAAolDAAAACFMiYEAEDtNCp407Gq1ZPoDAAAQLGEAQAAKJQwAAAAhRIGAACgUMIAAAAUym5CAADUj5uOtUVnAAAACiUMAABAoSo7JrTvwsezU2PnTpcxKNZccGynS+A9+Gzg/Rl946OdLmFQ+V4A9eOmY+3RGQAAgEIJAwAAUKjKjgkBAMAHUsGxnKrRGQAAgEIJAwAAUChjQgAA1I+bjrVFZwAAAAolDAAAQKGMCQEAUDtuOtYenQEAACiUMAAAAIUyJgQAQP3YTagtOgMAAFAoYQAAAAplTAgAgNqxm1B7dAYAAKBQwgAAABTKmBAAAPVjN6G26AwAAEChhAEAACiUMSEAAOrHmFBbdAYAAKBQwgAAABTKmBAAALXjpmPt0RkAAIBCCQMAAFAoY0IAANSP3YTaojMAAACFEgYAAKBQxoQAAKgfY0Jt0RkAAIBCCQMAAFAoY0IAANSOm461R2cAAAAKJQwAAEChjAkBAFA/dhNqi84AAAAUShgAAIBCGRMCAKB27CbUHp0BAAAolDAAAACFMiYEAED92E2oLToDAABQKGEAAAAKZUwIAID6MSbUFp0BAAAolDAAAACFMiYEAEDtNN5eVVK1ehKdAQAAKJYwAAAAhTImBABA/dhNqC2VDQNrvzg5Q7uGdboMALZizQXHdrqEQbX84m91uoRBdfi1X+50CcCHhDEhAAAoVGU7AwAA8H41WptXlVStnkRnAAAAiiUMAABAoYwJAQBQP3YTaovOAAAAFEoYAACAQhkTAgCgnio4llM1OgMAAFAoYQAAAAplTAgAgNpx07H26AwAAEChhAEAACiUMSEAAOrHTcfaojMAAACFEgYAAKBQxoQAAKgduwm1R2cAAAAKJQwAAEChhAEAAOqnVdH1Pl177bVpNBqZNWtW/7ETTjghjUZjwPriF7+4Te876GGgr68vl156aSZMmJDhw4fngAMOyDe+8Y20WhUckgIAgIpbtmxZbr311kyaNGmL584999y8+uqr/ev666/fpvce9AuIr7vuutxyyy35zne+k0MPPTRPPvlkzjnnnIwcOTIXXHDBYJ8OAABqa/369ZkxY0Zuv/32XHXVVVs8v+uuu2bMmDHv+/0HvTPw6KOP5rTTTsvJJ5+cj3zkI/kv/+W/5FOf+lSeeOKJwT4VAABs1Tu7CVVtbauZM2fm5JNPzrRp07b6/F133ZW99947EydOzNy5c/PGG29s0/sPemfg2GOPzW233Zbnn38+H/vYx/JP//RPeeSRR3LDDTcM9qkAAOBDp7e3d8Djrq6udHV1bfG6u+++O08//XSWLVu21ff57Gc/m/Hjx2fcuHF55plnctFFF2XFihX5wQ9+0HYtgx4GLr744vT29uaggw7K0KFD09fXl6uvvjozZszY6us3bdqUTZs29T9+9xcHAADqpKenZ8DjefPm5fLLLx9wbNWqVbnwwgvzwAMPZNiwYVt9n/POO6//z4cddljGjh2bE088MS+++GIOOOCAtmoZ9DDwve99L3fddVcWLVqUQw89NMuXL8+sWbMybty4nH322Vu8fv78+bniiisGuwwAAEr2AXfv2S7ermfVqlXp7u7uP7y1rsBTTz2VtWvX5sgjj+w/1tfXl4cffjg33XRTNm3alKFDhw74O5MnT06SrFy5snNh4Gtf+1ouvvjinHXWWUk2p5R/+Zd/yfz587caBubOnZs5c+b0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Xn/99STJir+8ssOVAACd9tNOFzDYFv6o0xUMqtdffz0jR47sdBl8AJULA+PGjcuqVasyYsSINBqN7Xae3t7e9PT0ZNWqVenu7t5u5+H98flUl8+munw21ebzqS6fzbZrtVp5/fXXM27cuE6XwgdUuTAwZMiQ7LfffjvsfN3d3f6PX2E+n+ry2VSXz6bafD7V5bPZNpXvCDRbqdzuPc2K1RMXEAMAQLGEAQAAKFTlxoR2lK6ursybNy9dXV2dLoWt8PlUl8+munw21ebzqS6fTU21mptXlVStniSNVqX3hAIAgPb19vZm5MiRmbb/l7PTkGoFvH9rbsqDL38r69atq8z1KcaEAACgUMWOCQEAUGNuOtYWnQEAAChUsWHg5ptvzkc+8pEMGzYskydPzhNPPNHpkoo3f/78HHPMMRkxYkT23XffnH766VmxYkWny2Irrr322jQajcyaNavTpfC2X/ziF/nc5z6XUaNGZfjw4TnssMPy5JNPdrqs4vX19eXSSy/NhAkTMnz48BxwwAH5xje+EZfrdcbDDz+cU089NePGjUuj0cgPf/jDAc+3Wq1cdtllGTt2bIYPH55p06blhRde6EyxsIMUGQa++93vZs6cOZk3b16efvrpfOITn8j06dOzdu3aTpdWtCVLlmTmzJlZunRpHnjggbz11lv51Kc+lQ0bNnS6NP6dZcuW5dZbb82kSZM6XQpv+/Wvf52pU6dm5513zr333puf/vSn+fM///PsueeenS6teNddd11uueWW3HTTTfk//+f/5Lrrrsv111+fb37zm50urUgbNmzIJz7xidx8881bff7666/PjTfemIULF+bxxx/PbrvtlunTp2fjxo07uFIGRbNVzVUxRe4mNHny5BxzzDG56aabkiTNZjM9PT35yle+kosvvrjD1fGOX/7yl9l3332zZMmSHH/88Z0uhyTr16/PkUcemW9961u56qqrcvjhh2fBggWdLqt4F198cf73//7f+cd//MdOl8K7nHLKKRk9enS+/e1v9x8744wzMnz48PzP//k/O1gZjUYj99xzT04//fQkm7sC48aNy3//7/89X/3qV5Mk69aty+jRo3PnnXfmrLPO6mC1bIv+3YR+64vV3E3oFwvtJtRJb775Zp566qlMmzat/9iQIUMybdq0PPbYYx2sjHdbt25dkmSvvfbqcCW8Y+bMmTn55JMH/P+Hzvvxj3+co48+OmeeeWb23XffHHHEEbn99ts7XRZJjj322CxevDjPP/98kuSf/umf8sgjj+Skk07qcGW820svvZTVq1cP+P42cuTITJ482c8H1Fpxuwn967/+a/r6+jJ69OgBx0ePHp3/+3//b4eq4t2azWZmzZqVqVOnZuLEiZ0uhyR33313nn766SxbtqzTpfAuP/vZz3LLLbdkzpw5+bM/+7MsW7YsF1xwQXbZZZecffbZnS6vaBdffHF6e3tz0EEHZejQoenr68vVV1+dGTNmdLo03mX16tVJstWfD955jg8Zuwm1pbgwwIfDzJkz89xzz+WRRx7pdCkkWbVqVS688MI88MADGTZsWKfL4V2azWaOPvroXHPNNUmSI444Is8991wWLlwoDHTY9773vdx1111ZtGhRDj300CxfvjyzZs3KuHHjfDZAJRQ3JrT33ntn6NChWbNmzYDja9asyZgxYzpUFf/e+eefn7/7u7/LP/zDP2S//fbrdDkkeeqpp7J27doceeSR2WmnnbLTTjtlyZIlufHGG7PTTjulr6+v0yUWbezYsTnkkEMGHDv44IPz8ssvd6gi3vG1r30tF198cc4666wcdthh+a//9b9m9uzZmT9/fqdL413e+RnAzweUprgwsMsuu+Soo47K4sWL+481m80sXrw4U6ZM6WBltFqtnH/++bnnnnvy93//95kwYUKnS+JtJ554Yp599tksX768fx199NGZMWNGli9fnqFDh3a6xKJNnTp1i214n3/++YwfP75DFfGON954I0OGDPxP7dChQ9NsNjtUEe9lwoQJGTNmzICfD3p7e/P444/7+eDDqpX/NypUmdXpL8qWihwTmjNnTs4+++wcffTR+e3f/u0sWLAgGzZsyDnnnNPp0oo2c+bMLFq0KD/60Y8yYsSI/hnNkSNHZvjw4R2urmwjRozY4tqN3XbbLaNGjXJNRwXMnj07xx57bK655pr80R/9UZ544oncdtttue222zpdWvFOPfXUXH311dl///1z6KGH5ic/+UluuOGGfP7zn+90aUVav359Vq5c2f/4pZdeyvLly7PXXntl//33z6xZs3LVVVflwAMPzIQJE3LppZdm3Lhx/TsOQR0VGQb++I//OL/85S9z2WWXZfXq1Tn88MNz3333bXHREDvWLbfckiQ54YQTBhy/44478id/8ic7viD4kDjmmGNyzz33ZO7cubnyyiszYcKELFiwwEWqFfDNb34zl156ab785S9n7dq1GTduXP70T/80l112WadLK9KTTz6ZT37yk/2P58yZkyQ5++yzc+edd+brX/96NmzYkPPOOy+vvfZajjvuuNx3332ulaLWirzPAAAA9dR/n4Ex52WnIbt0upwB/q35Zh5cfZv7DAAAAJ0nDAAAQKGKvGYAAICaazaTVGznrgruJKYzAAAAhRIGAACgUMaEAACon3du9FUlVasnOgMAAFAsYQAAAAplTAgAgPoxJtQWnQEAACiUMAAAAIUyJgQAQP00W0kqNpbTrFg90RkAAIBiCQMAAFAoY0IAANROq9VMq9XsdBkDVK2eRGcAAACKJQwAAEChjAkBAFA/rVb1du9x0zEAAKAqhAEAACiUMSEAAOqnVcGbjhkTAgAAqkIYAACAQhkTAgCgfprNpFGxm3y56RgAAFAVwgAAABTKmBAAAPVjN6G26AwAAEChhAEAACiUMSEAAGqn1WymVbHdhFp2EwIAAKpCGAAAgEIZEwIAoH7sJtQWnQEAACiUMAAAAIUyJgQAQP00W0mjYmM5xoQAAICqEAYAAKBQxoQAAKifVitJxW7yZUwIAACoCmEAAAAKZUwIAIDaaTVbaVVsN6GWMSEAAKAqhAEAACiUMSEAAOqn1Uz1dhOqWD3RGQAAgGIJAwAAUChjQgAA1I7dhNqjMwAAAIUSBgAAoGJuueWWTJo0Kd3d3enu7s6UKVNy77339j9/wgknpNFoDFhf/OIXt/k8xoQAAKifD/luQvvtt1+uvfbaHHjggWm1WvnOd76T0047LT/5yU9y6KGHJknOPffcXHnllf1/Z9ddd93mkoQBAAComFNPPXXA46uvvjq33HJLli5d2h8Gdt1114wZM+YDnceYEAAAVFhfX1/uvvvubNiwIVOmTOk/ftddd2XvvffOxIkTM3fu3Lzxxhvb/N46AwAA1M6/5a2kYpv3/FveSpL09vYOON7V1ZWurq4tXv/ss89mypQp2bhxY3bffffcc889OeSQQ5Ikn/3sZzN+/PiMGzcuzzzzTC666KKsWLEiP/jBD7appkarinscAQDA+7Bx48ZMmDAhq1ev7nQpW7X77rtn/fr1A47Nmzcvl19++RavffPNN/Pyyy9n3bp1+V//63/lf/yP/5ElS5b0B4J/7+///u9z4oknZuXKlTnggAParkcYAACgVjZu3Jg333yz02VsVavVSqPRGHDsvToD7zZt2rQccMABufXWW7d4bsOGDdl9991z3333Zfr06W3XY0wIAIBaGTZsWIYNG9bpMgZds9nMpk2btvrc8uXLkyRjx47dpvcUBgAAoGLmzp2bk046Kfvvv39ef/31LFq0KA899FDuv//+vPjii1m0aFE+/elPZ9SoUXnmmWcye/bsHH/88Zk0adI2nUcYAACAilm7dm3+23/7b3n11VczcuTITJo0Kffff39+//d/P6tWrcqDDz6YBQsWZMOGDenp6ckZZ5yRSy65ZJvP45oBAAAolPsMAABAoYQBAAAolDAAAACFEgYAAKBQwgAAABRKGAAAgEIJAwAAUChhAAAACiUMAABAoYQBAAAolDAAAACFEgYAAKBQ/z+V9ERWvibhgQAAAABJRU5ErkJggg==\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "source": [], + "metadata": { + "id": "yqLLsSep_F_j" + }, + "execution_count": null, + "outputs": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.8" + }, + "colab": { + "provenance": [] } - ], - "source": [ - "def process_part_two(file_path):\n", - " with open(file_path, 'r') as file:\n", - " lines = [line.rstrip('\\n') for line in file.readlines()]\n", - "\n", - " height = len(lines)\n", - " width = len(lines[0]) if height > 0 else 0\n", - "\n", - " # Identify antennas and their frequencies\n", - " freq_map = {}\n", - " for y in range(height):\n", - " for x in range(width):\n", - " c = lines[y][x]\n", - " if c != '.':\n", - " if c not in freq_map:\n", - " freq_map[c] = []\n", - " freq_map[c].append((x, y))\n", - "\n", - " # A set to hold all unique antinode locations\n", - " antinodes = set()\n", - "\n", - " # For each frequency group, consider all pairs of antennas\n", - " for freq, antennas in freq_map.items():\n", - " n = len(antennas)\n", - " if n < 2:\n", - " continue\n", - "\n", - " for i in range(n):\n", - " for j in range(i + 1, n):\n", - " x1, y1 = antennas[i]\n", - " x2, y2 = antennas[j]\n", - "\n", - " # Calculate the collinearity condition\n", - " for x in range(width):\n", - " for y in range(height):\n", - " if (x2 - x1) * (y - y1) == (y2 - y1) * (x - x1):\n", - " antinodes.add((x, y))\n", - "\n", - " # Include the positions of all antennas as antinodes\n", - " for freq, antennas in freq_map.items():\n", - " for x, y in antennas:\n", - " antinodes.add((x, y))\n", - "\n", - " # Return the number of unique antinode locations\n", - " return len(antinodes)\n", - "\n", - "\n", - "# Process the larger test file for part two\n", - "process_part_two('input')\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.8" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file