diff --git a/input/20.txt b/input/20.txt new file mode 100644 index 0000000..946d25f --- /dev/null +++ b/input/20.txt @@ -0,0 +1,5000 @@ +-4241 +-7731 +-8337 +8675 +-6125 +-4896 +8663 +-6713 +4485 +-7782 +3171 +7811 +-842 +-1381 +-6307 +6473 +-1008 +-2903 +3062 +-5488 +6752 +6161 +-284 +5771 +7178 +-6954 +-2525 +3283 +-4159 +2105 +2653 +-5623 +-194 +1274 +-4842 +7196 +3526 +-1381 +-8798 +-5149 +85 +-2415 +-8549 +-9824 +-8051 +-3307 +9298 +-1824 +-3431 +2801 +7040 +-4772 +5820 +2295 +-8149 +-5487 +-5601 +-3292 +-2813 +-5400 +7211 +9044 +7529 +-2345 +2804 +-5348 +231 +-7755 +9299 +-3154 +-4021 +9573 +4039 +1112 +568 +-5201 +616 +-7134 +7876 +7664 +-4112 +7185 +-8093 +-5555 +-9381 +8057 +-5786 +-4166 +6446 +3620 +2001 +-7725 +-9189 +8293 +5047 +1546 +-3289 +-6790 +6121 +9755 +7578 +-4081 +-1045 +4285 +-3442 +-758 +-4215 +766 +2444 +-7317 +-7681 +1657 +2014 +-1865 +7034 +6431 +-8566 +-8554 +-3357 +5644 +5051 +-8109 +-7093 +-5555 +-4918 +7623 +-5660 +8860 +1251 +6012 +3078 +-6343 +7526 +-4113 +-3431 +9299 +143 +-9107 +7605 +1649 +2522 +4638 +3245 +-1144 +6669 +6656 +-3547 +-6618 +3671 +2219 +8663 +4852 +1815 +-2727 +5565 +8524 +-3040 +-4286 +-8333 +35 +-3976 +-1159 +-3 +-7912 +-5610 +-8695 +2300 +-3302 +-8678 +94 +-7101 +-9863 +2635 +-127 +4658 +698 +-3696 +5075 +4493 +4687 +6925 +-545 +-9241 +419 +644 +-7628 +-6218 +-4233 +-4788 +-5070 +2437 +290 +-9316 +-4109 +-9662 +181 +3606 +-51 +5153 +2455 +3637 +-8731 +-2238 +6084 +-3196 +3406 +-6406 +2625 +-4433 +6446 +-9584 +-2256 +-9976 +4220 +5910 +7001 +4330 +2275 +-1027 +-4412 +-7967 +8057 +6026 +3135 +7726 +-7018 +5791 +5953 +8252 +-1448 +6176 +305 +7532 +7300 +5224 +827 +8383 +6444 +-786 +2708 +6766 +2631 +-2856 +-6046 +3092 +9267 +6675 +-9468 +-1559 +3098 +-4390 +8463 +4369 +2518 +7924 +-4665 +3330 +-286 +9433 +-2713 +-1000 +-376 +5484 +8831 +9312 +5984 +-3407 +4932 +-5846 +3111 +-758 +-5379 +-6790 +9373 +-7371 +-7032 +-6700 +1294 +1581 +181 +4138 +-2932 +-3821 +-5916 +-2416 +-82 +7383 +9401 +5498 +-1530 +3521 +-568 +-5303 +5429 +-1824 +7127 +-9445 +551 +9706 +-5229 +-3485 +-925 +1590 +8939 +5958 +-3542 +9545 +6438 +-2612 +-5074 +-1711 +-8221 +-8162 +-3807 +4272 +-6273 +558 +-8462 +5470 +-545 +352 +370 +4509 +9191 +2614 +-3297 +-1771 +-8161 +-5484 +-8162 +2159 +-4397 +2917 +-9780 +7676 +-9150 +-1831 +-8462 +-6744 +-2741 +1523 +-1339 +4685 +5374 +-3981 +1027 +-1531 +658 +-4494 +9650 +-8994 +8693 +-7252 +-3110 +-799 +8631 +-976 +-153 +6956 +-542 +-9611 +6332 +1725 +-7934 +4580 +4272 +-985 +975 +-8208 +1995 +4622 +8600 +1050 +-8818 +-8150 +-5510 +-3588 +4221 +-9051 +-5691 +9548 +-9524 +-5733 +8757 +8077 +6474 +-2012 +-3547 +-7909 +8309 +4938 +-4878 +-4568 +-9497 +8643 +6404 +7094 +6433 +-3651 +-5287 +5083 +-7344 +-5488 +6203 +1560 +-5948 +3031 +-5558 +112 +-8829 +6942 +-1742 +8766 +-189 +-3168 +-3475 +7297 +-3538 +-843 +-9509 +-1782 +-6184 +9058 +8581 +-9435 +-5645 +466 +8620 +-8964 +6778 +-7247 +-8667 +2614 +-654 +-8235 +8122 +8402 +-4744 +-2821 +-8855 +-2470 +-363 +-226 +-8684 +-1052 +2823 +-908 +-7385 +-7722 +-7213 +-7031 +6315 +-2607 +4792 +2653 +9206 +-9448 +9301 +2669 +-3373 +2800 +9755 +3156 +-6245 +3455 +514 +954 +-6730 +802 +-8095 +368 +-6313 +9945 +3508 +8457 +-1610 +5573 +-6229 +-4730 +-6401 +-5352 +3879 +-7239 +1036 +4935 +737 +-4594 +-8148 +6564 +5054 +8828 +-8572 +-1939 +4112 +4263 +6180 +5369 +3245 +-8077 +3779 +-9605 +-7831 +-3588 +-51 +3262 +-2540 +4622 +7504 +5424 +-3583 +-2115 +8298 +7451 +3665 +4965 +3415 +-1133 +-5849 +5497 +-23 +2439 +1277 +1195 +-8877 +3364 +6610 +-1472 +-7436 +1016 +-7408 +-4779 +-9186 +7167 +9735 +-6455 +-2744 +5079 +3242 +-4675 +-8900 +6067 +-570 +1251 +-3187 +174 +8869 +-9047 +-9498 +-833 +1021 +-7101 +4116 +-4879 +473 +-1797 +-4469 +-1351 +-572 +-3798 +-3829 +1291 +-6250 +2644 +-1443 +6333 +-6821 +-5235 +-4612 +970 +5266 +4330 +-295 +-1733 +-9826 +57 +-2322 +-8640 +-8713 +-7562 +-8994 +1318 +5629 +4100 +-7126 +3001 +9701 +1797 +6495 +-1339 +-1215 +4068 +-5430 +4625 +-6284 +8863 +-2256 +5545 +-786 +2911 +-5901 +-7646 +-8390 +2631 +-8430 +7907 +-9182 +4428 +4355 +6752 +-6476 +-4235 +-9877 +2150 +-2184 +-2226 +-374 +190 +-5879 +9522 +-1823 +616 +6944 +-4154 +309 +5816 +-7315 +2349 +4973 +-5187 +28 +-7841 +-3882 +2223 +4921 +-542 +1627 +3495 +-7633 +9466 +-2341 +5640 +-3880 +-2029 +-9413 +3646 +-3998 +-3035 +1399 +1261 +7668 +2107 +-2825 +-8132 +-9899 +2228 +1154 +406 +1427 +2526 +-5324 +-6582 +8606 +2592 +-9276 +658 +-4199 +-8065 +7873 +5184 +2505 +-2738 +-4725 +7993 +6716 +-6963 +9058 +-7657 +-9007 +-4433 +3674 +-2470 +-6926 +-5589 +5209 +-2213 +-5420 +2999 +-5924 +-607 +-9630 +6560 +-7814 +-4256 +6666 +-1404 +9573 +1503 +-7736 +3417 +7915 +4743 +4668 +-9637 +-8960 +9745 +-5617 +5393 +2988 +9740 +-500 +4043 +-1731 +6869 +7570 +-5036 +-238 +8568 +8057 +5993 +4907 +2489 +6533 +5682 +2901 +-64 +3262 +-3658 +6253 +-9087 +5409 +1623 +6433 +-1734 +-9417 +-9630 +9132 +-4026 +-5034 +-6734 +-9255 +3509 +-4193 +-3347 +2546 +1085 +-6135 +8600 +-4796 +642 +-9784 +-5895 +-2401 +-3696 +-5132 +510 +1911 +-6490 +-4534 +-4235 +-76 +8984 +-331 +5764 +-9621 +5321 +-4215 +6436 +1796 +-3373 +-1617 +-9391 +8538 +-8345 +-6373 +-6770 +4923 +3320 +9298 +-5978 +9124 +-6626 +8075 +7095 +1871 +470 +-6708 +-2478 +9178 +7963 +3910 +-2058 +-6387 +1677 +-3655 +8402 +-1300 +-3652 +6387 +9312 +6772 +-1468 +4631 +-4370 +7087 +-6582 +1578 +8233 +-3663 +1394 +-500 +-3316 +-6538 +-8996 +-3865 +8036 +2827 +-8064 +5940 +-3850 +-9673 +8329 +6099 +-8328 +2082 +7226 +9322 +-7334 +9791 +6110 +749 +2019 +-8150 +-778 +-4518 +-5475 +6881 +-8407 +-7633 +2376 +-5974 +-9838 +3624 +4593 +-4473 +8818 +-7690 +1768 +3389 +-1711 +2584 +1125 +-9362 +585 +-9165 +-3925 +25 +-6592 +-6770 +3994 +-8456 +-1353 +-4038 +8717 +-6914 +-4020 +-9093 +322 +-3737 +5131 +435 +-1802 +2914 +-6949 +2693 +-9156 +-8458 +6290 +7975 +5622 +-5036 +-362 +9606 +-7617 +8329 +-8058 +7314 +-5879 +-7972 +3455 +-7660 +776 +3147 +285 +-4942 +403 +-2792 +7317 +-3963 +7004 +-9497 +2024 +1837 +6802 +-1153 +4417 +-6029 +852 +-9445 +-3431 +-8904 +3956 +3363 +-6204 +2554 +-271 +-7814 +1365 +8960 +3937 +-2808 +-2905 +-3880 +4480 +4291 +3697 +7876 +-3095 +8113 +8955 +-222 +5159 +7882 +-8657 +5545 +3342 +1677 +-8112 +2115 +5745 +3671 +-5754 +-7786 +-9691 +-3644 +-3126 +8457 +1668 +-8486 +-2160 +-6268 +-3696 +7153 +3019 +-9817 +-2713 +3821 +5011 +-1508 +3721 +-7288 +6124 +5152 +2321 +-211 +7101 +4812 +1633 +-1504 +2710 +28 +7328 +82 +2763 +-506 +-6666 +5224 +8588 +-7435 +-6328 +-1942 +8480 +5739 +243 +-8719 +-6047 +390 +-2672 +-3886 +8721 +9762 +-8260 +4561 +-3748 +-4139 +2620 +1062 +-6610 +-6027 +-5171 +-1913 +2261 +-9706 +-8761 +-4065 +8329 +3264 +8025 +9287 +-3872 +-649 +-8712 +973 +-5974 +9583 +3829 +-8289 +-2184 +-9782 +-47 +352 +3509 +-7924 +-700 +-8461 +-6325 +-6061 +-377 +-4286 +-1858 +3556 +-9655 +-9724 +7490 +9977 +-5525 +8897 +-2751 +7445 +-3363 +8498 +1074 +-7767 +7415 +4786 +7469 +-6451 +1719 +4267 +-8165 +-2382 +-6555 +7525 +7357 +7195 +7540 +305 +1992 +8089 +-270 +3177 +-6623 +-1291 +6720 +-7738 +-7453 +-7303 +-5046 +-9463 +704 +-1787 +-613 +-5584 +539 +3843 +-3024 +-1345 +143 +-5558 +-9275 +3347 +620 +-51 +6067 +4355 +619 +133 +509 +-2814 +1038 +1533 +5920 +-2831 +-4450 +-7402 +7238 +6157 +-6047 +-7001 +5003 +4317 +2319 +111 +-1642 +-6807 +-7174 +1152 +-4499 +1220 +6944 +-3765 +-6259 +-5425 +-7558 +3358 +-7247 +7454 +9857 +-1184 +3440 +527 +-5221 +4830 +1309 +501 +4157 +4296 +4095 +3083 +4075 +5081 +-9213 +1851 +-1821 +7529 +-1560 +-9970 +-365 +-8970 +-5402 +-5093 +-2047 +-4533 +-9531 +2158 +-6450 +-7157 +7322 +1634 +-9826 +-9503 +5041 +-1366 +-8834 +-7891 +5493 +8505 +-1771 +602 +-557 +1734 +-5520 +-7176 +-8727 +9848 +1125 +-4813 +126 +-5134 +-8051 +-6049 +7147 +4261 +-6759 +-5939 +-6588 +-4842 +-7398 +-686 +3181 +-5415 +8738 +-6071 +545 +8675 +5752 +-8439 +7299 +1140 +6660 +-288 +783 +2825 +-4454 +7836 +4861 +9566 +-3147 +4474 +-2844 +2871 +6906 +-3547 +3056 +-5185 +-3764 +4914 +-1913 +2977 +4734 +-5617 +745 +-3621 +2802 +-9843 +5001 +-1415 +2542 +-3510 +-9812 +-4492 +5741 +5772 +-6112 +4967 +-811 +6433 +601 +-9196 +1953 +-1741 +-2092 +4890 +-7545 +-3904 +-3056 +-3850 +-7575 +-74 +5151 +7559 +8033 +-594 +7746 +404 +-1022 +4151 +8230 +-3500 +-9713 +-9924 +-5840 +-5120 +-3957 +2305 +-7280 +-2134 +-2214 +-7718 +7770 +-7259 +4823 +-8662 +192 +4326 +7937 +3234 +-9935 +3480 +-7264 +-2318 +9220 +6939 +-8876 +-6898 +-3789 +-9110 +-5806 +6159 +-5436 +6565 +-42 +-9781 +-3762 +-132 +-1419 +-3761 +-1567 +1925 +-1361 +9451 +-6450 +2450 +6482 +830 +7426 +-6187 +7302 +85 +2518 +-5992 +-3147 +-9586 +-2139 +7728 +-311 +5153 +-4716 +6982 +-9729 +6217 +-3942 +3234 +7878 +4326 +-976 +8369 +8529 +-8147 +-9261 +-6767 +-594 +-5132 +-3547 +-1274 +4563 +6774 +5384 +7917 +-770 +3521 +9398 +3697 +8212 +5352 +-5693 +6529 +-9781 +4703 +5759 +-7938 +3516 +4561 +8049 +-6333 +2832 +5545 +9233 +-1362 +1080 +2598 +261 +-8062 +-2620 +-4655 +8048 +2353 +-4788 +5083 +9809 +-140 +3147 +6122 +9527 +-9538 +-8812 +-2338 +-6451 +-5788 +2434 +-2984 +-5204 +8025 +4825 +1220 +-4034 +3507 +3736 +4680 +-8070 +5400 +6618 +2772 +8289 +5728 +-6298 +-7759 +6724 +-4598 +-8896 +-1428 +-222 +-8555 +-7738 +-8456 +-7130 +-2158 +-955 +182 +2048 +-4436 +-6511 +262 +-2174 +5174 +-5400 +3606 +6166 +2082 +4666 +-457 +6939 +-5612 +2192 +1800 +-4153 +-9151 +-5926 +6317 +6626 +-3801 +-362 +-3807 +6922 +-426 +-211 +-9868 +1279 +5137 +-6491 +-9772 +-5794 +5652 +1071 +-6623 +-8994 +2131 +1626 +7635 +-5531 +-8677 +1073 +-7809 +4209 +5410 +-5224 +6286 +-4188 +-2673 +6551 +7993 +-3461 +4130 +-2673 +-5722 +-925 +3132 +8403 +3039 +-7653 +-3317 +-4880 +-6097 +3654 +-1577 +-4826 +6121 +2801 +-8516 +-7924 +4112 +-4776 +3165 +8023 +2708 +-6373 +-5061 +7877 +4114 +412 +5188 +-6904 +1794 +-818 +390 +8457 +-5170 +2182 +-8933 +-2821 +-9906 +7605 +5439 +-1614 +-7809 +713 +-9531 +-5342 +-5216 +-6825 +3206 +-4154 +3440 +-6713 +7559 +-4594 +-8207 +7359 +-5186 +9956 +9890 +-4188 +-9312 +-1724 +-6221 +-4374 +-4428 +8883 +9748 +5210 +-6284 +530 +-6284 +4645 +4694 +3961 +-2283 +-3960 +-9448 +9980 +4325 +-1323 +7789 +9433 +9713 +-7374 +2417 +-7936 +-3809 +-4148 +7851 +-6777 +1942 +6374 +-557 +6856 +6938 +-3083 +6167 +-2607 +-3981 +-5693 +9440 +-4494 +-5810 +-4003 +6517 +-90 +6850 +-8912 +6630 +4932 +-7467 +-3949 +-7100 +-8623 +-7947 +-5335 +5447 +-7247 +-8063 +-2612 +-2103 +-5882 +6994 +6134 +-6328 +8482 +5844 +-4183 +3671 +-6854 +-9582 +4911 +-7706 +165 +-1427 +8019 +9648 +-8758 +8338 +-270 +-7831 +-3482 +2804 +-9522 +7769 +8940 +2659 +8863 +2802 +-6579 +1697 +-1545 +-2219 +-7725 +-8704 +-8713 +2059 +-2938 +-5415 +-6420 +-5902 +7999 +-9611 +7168 +3189 +-8334 +-9416 +4015 +-36 +6509 +-6053 +-4917 +-7399 +1957 +-177 +8897 +8774 +-857 +-3156 +2649 +619 +9625 +9391 +-4714 +8721 +5990 +-2607 +6533 +-4886 +-6889 +7438 +5498 +4481 +-6029 +6068 +61 +9802 +-2215 +4081 +6136 +-5846 +-1559 +-5221 +1034 +9312 +737 +5192 +-8997 +2891 +-837 +2273 +392 +5620 +6007 +-8544 +-1241 +9642 +-9189 +1676 +491 +2827 +772 +-5021 +-6071 +-5425 +-7213 +-5529 +9408 +9565 +4151 +-818 +-6846 +-7383 +-9190 +-7135 +-8018 +3736 +3147 +-3218 +8336 +4034 +2542 +8747 +8891 +-2274 +9874 +7545 +-5696 +-5882 +-447 +-2225 +-1839 +9000 +-2532 +-3869 +-101 +-8611 +896 +-2244 +4548 +-423 +9629 +-1404 +6850 +5771 +8003 +-2061 +593 +7309 +-2087 +1062 +-745 +-9162 +2051 +-1996 +-8921 +-3223 +-570 +-2384 +4228 +6918 +-7373 +-1427 +-8626 +-2226 +6122 +-1059 +-3438 +2843 +-6127 +-2653 +-7114 +6996 +-457 +6691 +-8800 +-270 +1016 +8189 +-7686 +-3798 +9650 +-9377 +-8758 +1896 +-47 +2349 +-5152 +6690 +8239 +9285 +9317 +7339 +5107 +-1915 +3163 +4939 +237 +-6472 +8071 +-7981 +7749 +-8299 +-547 +947 +-5781 +4285 +9401 +-9168 +-6031 +7415 +-3451 +-8848 +1462 +-4132 +6701 +6231 +5307 +-2800 +-7409 +-2284 +-7617 +3464 +3389 +4318 +1549 +-7763 +-1215 +3657 +2640 +-6760 +3470 +5142 +-5372 +-8868 +-8895 +-2405 +-7785 +4696 +6489 +3330 +-1448 +585 +-1325 +-5007 +8165 +-5415 +-2705 +-5764 +3398 +-9817 +-2697 +9051 +-1086 +-2149 +9573 +109 +-2462 +-5473 +-197 +8279 +4386 +6554 +-714 +-3594 +9048 +1251 +-4976 +6442 +-5700 +6019 +1633 +3943 +3484 +2843 +-4863 +3914 +4664 +-1883 +9301 +2321 +-6715 +-4904 +-362 +-622 +-1634 +8066 +-2676 +-4238 +-6752 +-4566 +-8898 +-9668 +-928 +-1379 +-4876 +7751 +-8096 +-9788 +9917 +9399 +-1883 +3630 +8904 +-457 +1191 +767 +7070 +8941 +9025 +-7575 +1566 +5280 +6200 +2653 +-6373 +7072 +-8572 +-7920 +5147 +6940 +-381 +-2445 +-7246 +-6925 +2376 +-5271 +-5733 +8816 +9555 +-8680 +-1346 +-8623 +-7302 +-7084 +-6426 +-439 +-4714 +8617 +-2244 +-867 +758 +4638 +9114 +4669 +-8900 +-1408 +5054 +-7264 +-7983 +598 +-2178 +4351 +5270 +-8120 +6442 +4550 +4178 +-9097 +-1508 +-2483 +-5682 +-1360 +-6999 +-5625 +-3132 +6857 +3358 +-7276 +3703 +4536 +-1423 +-8571 +8175 +-2131 +5624 +-1028 +6313 +4397 +-3998 +9877 +-4687 +-5964 +-2857 +4547 +-5668 +-6205 +-3056 +4363 +7796 +-442 +-5466 +-9763 +484 +-3613 +-19 +-3317 +5059 +-3963 +-7440 +9383 +-3161 +8029 +1928 +-7153 +5582 +2899 +2172 +8992 +-8028 +8651 +-6205 +-3018 +-5146 +-7379 +-9346 +-4594 +-6982 +2642 +1294 +-3090 +7635 +-7868 +-4065 +7852 +-3103 +2305 +-5193 +1744 +103 +-2341 +-8245 +-8138 +1324 +6911 +-7858 +-6522 +-985 +1969 +170 +-8379 +9037 +-1097 +4561 +1193 +-1052 +6813 +-1600 +6956 +-6854 +9450 +-9360 +-8273 +2489 +5913 +-4566 +-5337 +-6492 +2069 +-3691 +9867 +5326 +5404 +-8633 +-1391 +6479 +-5708 +-7869 +-5246 +9868 +9005 +-9062 +3779 +2627 +-1401 +-4579 +2209 +2760 +-6972 +-5563 +9799 +5545 +695 +1885 +-718 +6161 +1274 +3272 +1571 +-5963 +-536 +8030 +2198 +9572 +5082 +-2139 +3661 +-1510 +-3829 +-855 +-3642 +4313 +-7418 +-649 +-8893 +-3065 +-153 +521 +8594 +-8327 +-3405 +473 +-8808 +4483 +-9032 +1118 +-3943 +-3332 +1928 +-3618 +5017 +8975 +-9953 +-9493 +-2184 +970 +7780 +8358 +-1642 +-2301 +-9780 +6326 +9391 +-8860 +4428 +-4448 +-4419 +-1408 +-7018 +-4313 +-8280 +-710 +7263 +-1099 +5436 +-593 +6696 +-9518 +-8686 +6564 +-1163 +3685 +8047 +-929 +119 +-2265 +-5036 +-3347 +-7605 +-2038 +-5000 +7794 +6005 +-6445 +-2856 +4876 +-153 +3133 +-2846 +-5660 +-8860 +5611 +5118 +1232 +-4241 +1410 +2917 +-1948 +7008 +-7660 +-7852 +1993 +-964 +3019 +1292 +3171 +-7924 +6334 +-1234 +5276 +-6968 +1117 +1536 +-24 +-620 +-9218 +5011 +7680 +-4188 +4369 +7851 +6753 +1591 +-8059 +-1362 +-9593 +-8261 +-9118 +-9623 +-7708 +7353 +-6911 +-2169 +-7089 +2058 +5850 +8762 +-7081 +-1810 +-9019 +908 +-1362 +-4137 +-5998 +-6873 +-3714 +9127 +-4869 +-6555 +5120 +7292 +-2504 +-3102 +-656 +466 +-4614 +-5046 +9183 +9129 +-3825 +9178 +2022 +6473 +8423 +-2813 +-138 +-4109 +3820 +1825 +7682 +-9251 +7816 +-6968 +2580 +-8077 +7559 +3390 +-9222 +2892 +9149 +2691 +8922 +5104 +-9714 +5120 +-5614 +9698 +2697 +8827 +-7515 +8538 +-3542 +-7947 +6449 +8734 +-737 +2987 +3661 +1151 +-1654 +3865 +4436 +-3344 +-6366 +1549 +-4177 +-9436 +-2808 +3661 +3018 +-3696 +9141 +3366 +1113 +-51 +3829 +-9092 +-4906 +7554 +-1052 +7950 +-6231 +4352 +1290 +-6125 +-5306 +47 +-1224 +8900 +-9543 +-8641 +9328 +4365 +-2290 +-4540 +-1353 +1862 +2051 +4246 +4493 +4921 +7178 +8483 +4188 +-3899 +3661 +-9584 +-8508 +-4680 +-5719 +-3354 +-9467 +-2607 +3993 +-1114 +7889 +6031 +-6076 +-7884 +-6410 +-7041 +-992 +-6566 +6260 +-4159 +-301 +-1471 +1684 +3307 +5374 +-6230 +1979 +7511 +-593 +2808 +-7855 +-8911 +-7151 +7153 +-6200 +-5983 +-6925 +272 +-8096 +-7114 +9968 +9968 +-5686 +-5366 +2143 +-3373 +3901 +4373 +-1310 +-985 +-5473 +-7417 +484 +2254 +-5139 +-9400 +-913 +-2387 +8924 +-2849 +-8175 +-4871 +-8572 +9017 +-9382 +7490 +2592 +5561 +2012 +-1394 +-2301 +-5872 +-8341 +-5680 +-7698 +1831 +-3463 +483 +8293 +2082 +-6468 +-227 +5771 +8282 +-6295 +9566 +3471 +-2529 +3092 +-3108 +1832 +-5743 +-9427 +-317 +-3825 +-5056 +98 +-1580 +1149 +-981 +1015 +-7636 +-6296 +1523 +-4253 +-8069 +5099 +7014 +1912 +2257 +-2300 +9457 +8657 +-6231 +1803 +8900 +1482 +-6271 +-7448 +-1996 +-6935 +-6267 +9673 +-8930 +-7229 +738 +7600 +-8049 +9223 +8205 +9642 +9525 +1893 +1382 +5372 +-9667 +-447 +-7766 +-8114 +8939 +-1692 +-4270 +-9077 +-845 +9210 +7108 +9023 +-6610 +9609 +1757 +-8241 +9597 +-198 +-7106 +-3224 +2639 +7238 +7722 +5462 +85 +-2684 +-2442 +-7534 +-8711 +-2301 +-8257 +-1881 +9012 +-6433 +-3659 +8890 +7917 +7997 +5752 +-1053 +3283 +-3227 +-7438 +7812 +6599 +-4494 +-3292 +-6433 +-4122 +-2766 +1089 +6058 +-8505 +-7340 +8212 +8828 +575 +1394 +-9177 +8220 +4373 +-8001 +-5772 +4151 +-7311 +2758 +8805 +7178 +-4634 +-8094 +-195 +-320 +-3613 +3667 +5587 +6965 +-6582 +3914 +-2404 +-11 +-6618 +2439 +-6200 +7133 +-9125 +-3039 +9044 +3561 +6180 +4548 +1341 +-5882 +2048 +2660 +6989 +5465 +-4058 +-9605 +-2426 +-8534 +-7837 +-3100 +-1331 +-3391 +-9812 +-8333 +-2585 +2256 +-6873 +-4113 +3562 +-1404 +-1935 +3493 +5030 +-853 +-7657 +4604 +7754 +-53 +9157 +9089 +1000 +-8911 +-6135 +-1505 +6038 +9349 +-9917 +2262 +441 +3173 +-3798 +-9051 +6063 +6040 +-9376 +4611 +5992 +-3347 +-7031 +-9007 +-5149 +-4073 +-8862 +-439 +1084 +-1366 +-7246 +2416 +3948 +6291 +-7191 +-5649 +-7858 +6476 +6060 +7396 +-9222 +-5693 +-1327 +2794 +-6205 +8831 +-5691 +9171 +-771 +-872 +3764 +2127 +-5436 +1037 +-1440 +-2895 +-8149 +-71 +8107 +7851 +1147 +8374 +514 +-9744 +7600 +9488 +-2153 +3415 +3464 +9233 +2653 +7481 +9757 +5584 +2598 +2159 +5519 +9293 +-5005 +8998 +646 +2130 +-906 +922 +5506 +-1308 +-1921 +6401 +3559 +3491 +-9485 +-5658 +-2836 +-700 +-1214 +4427 +-5670 +5573 +6879 +-9375 +7577 +568 +9608 +-5214 +-9630 +2150 +9862 +-7625 +-5517 +-8382 +-8626 +4489 +-7230 +1668 +5655 +-3423 +4739 +7898 +8946 +-6806 +-186 +-226 +7944 +644 +-4188 +5932 +-7729 +-5461 +-3432 +5921 +-8246 +-3582 +-8024 +2003 +6477 +-7193 +-6740 +6943 +-227 +2338 +-5983 +-6790 +797 +-7299 +-7538 +-9944 +-7875 +-6502 +-6136 +-8727 +-9503 +-6790 +-951 +4895 +6924 +7354 +-6616 +5030 +8400 +6548 +-1277 +2635 +9923 +-1921 +8785 +-7738 +2917 +-9582 +-1614 +-3088 +-9577 +-1273 +-8637 +4317 +-7295 +6200 +-4327 +-2139 +662 +5543 +-8727 +8025 +7419 +-4356 +-4203 +-476 +2218 +9974 +-8266 +-4144 +7252 +675 +-5802 +-4802 +8586 +457 +7470 +8365 +-2312 +-1587 +499 +9157 +-4136 +5680 +5396 +-9456 +8767 +-3537 +654 +9565 +4852 +-5533 +2491 +-447 +-4426 +957 +-669 +8336 +-5462 +-9630 +-7046 +3933 +-7925 +-5185 +8631 +-6333 +-3048 +9013 +4631 +-2497 +-1787 +3018 +5784 +-1593 +-2948 +-8861 +5436 +-6563 +-9286 +-8959 +-9165 +2804 +3092 +8839 +-4540 +-134 +8127 +3709 +7635 +7082 +2255 +-2895 +-7459 +-3761 +-371 +-3779 +-52 +8327 +2723 +2014 +-1831 +-8854 +7362 +-9165 +-6618 +8586 +-8829 +1635 +-2219 +5425 +-7247 +-8566 +-3224 +927 +4056 +-7647 +-202 +8337 +-5366 +5264 +4134 +4162 +-9166 +-8458 +9134 +-626 +3990 +-9639 +-7464 +5990 +-3745 +6136 +-232 +2806 +1590 +8502 +-4105 +575 +-6455 +5280 +7545 +-1816 +1623 +7999 +9415 +4039 +-9945 +7937 +-270 +-4307 +4386 +-8997 +-2400 +4291 +5224 +9597 +5556 +-4989 +3637 +3942 +268 +1825 +-2981 +-4172 +8313 +-3211 +3858 +-4512 +-5937 +8536 +-3609 +-847 +-4950 +-4210 +6354 +6806 +3708 +-9497 +7937 +-2727 +-6037 +5990 +-7623 +-4178 +-4486 +-9017 +5565 +-721 +-7371 +3948 +-7007 +4631 +-4730 +-2369 +-1052 +-6817 +7424 +2651 +2216 +6991 +-3630 +2579 +5120 +-502 +6768 +-2840 +-6683 +9069 +7612 +3782 +3421 +4938 +-4404 +-7374 +8572 +-3463 +-9554 +7599 +7133 +-8283 +510 +1592 +8873 +-8056 +6696 +-5029 +-8828 +-8673 +-9812 +-8329 +7952 +-1573 +8915 +-1634 +-5254 +5902 +2643 +-5882 +-2244 +9835 +3019 +3930 +-1010 +-975 +2609 +-3243 +463 +9793 +1523 +-2284 +5986 +-7820 +2935 +4252 +7917 +3559 +-439 +-7096 +-3764 +-2416 +6431 +5593 +-5880 +-9311 +-6029 +3768 +-8470 +1149 +4680 +9642 +-8620 +-2615 +6088 +6812 +-4238 +8442 +6557 +5419 +384 +3518 +-7081 +-919 +9608 +9549 +-1408 +-1391 +8765 +6174 +-9626 +-519 +-2442 +-1643 +7680 +-9104 +9198 +-8482 +-2255 +9946 +5026 +2198 +-8798 +-3835 +3184 +-6700 +7529 +498 +2599 +-5022 +4942 +-7357 +-1698 +-4730 +-4920 +-2029 +2879 +3015 +-4705 +6158 +3709 +-6957 +7994 +-5161 +-1582 +1536 +7993 +-2107 +-6967 +-2442 +487 +8322 +1358 +6197 +-3039 +-42 +3585 +7324 +-7982 +-7894 +-9593 +1149 +4645 +7785 +-5038 +-316 +-9426 +578 +9791 +-5156 +-115 +-2284 +-1264 +-8147 +-7895 +4000 +-4499 +-4945 +9876 +1070 +-3909 +6409 +-3994 +9198 +5700 +-7981 +812 +4269 +-8096 +1577 +9924 +-6169 +-5604 +8617 +-1082 +-9362 +740 +8160 +5702 +-8996 +4319 +-2464 +-9812 +2065 +9163 +-8261 +-5693 +-6029 +-9376 +5782 +9976 +5122 +6392 +-4049 +5037 +5188 +-4684 +7353 +-8430 +6494 +-6317 +-3967 +8538 +-6616 +-700 +5061 +6278 +-3149 +-2193 +918 +5361 +-7807 +9520 +4914 +-1303 +5755 +-8490 +-8030 +3415 +-7633 +-4926 +285 +-6230 +-3882 +-4593 +5887 +3588 +-8458 +-5143 +539 +473 +1154 +-868 +-8329 +1462 +-4776 +8336 +-7417 +-6502 +-42 +-8183 +-629 +-480 +-3756 +6404 +9182 +8107 +6599 +-4100 +3902 +-989 +-9157 +5424 +9043 +-8325 +-536 +3762 +-4328 +2198 +-4622 +-985 +-5241 +-7063 +-9956 +-6901 +5820 +-4156 +2051 +6845 +6893 +8401 +-1837 +7218 +-3748 +7077 +1806 +-8394 +4002 +-6527 +7252 +-6623 +-2369 +2506 +-5879 +-1542 +-1953 +1993 +2891 +-233 +-1207 +-3654 +-963 +-7081 +1960 +5874 +-6362 +-8829 +1457 +3481 +-8091 +-3368 +4386 +9801 +2541 +-6902 +-9621 +3876 +6096 +292 +2468 +491 +6801 +3275 +7966 +-7122 +-4726 +4474 +-7709 +6299 +-1110 +8071 +255 +8200 +2413 +-315 +5953 +3709 +-6917 +-4073 +4140 +-2601 +-369 +-5218 +6939 +3402 +8365 +-3745 +4863 +-4500 +-6 +8230 +-6170 +2868 +3620 +5548 +-7219 +-9738 +1380 +-9779 +2690 +-7371 +-9800 +-9007 +-7216 +-284 +-2005 +-4185 +1942 +3736 +9240 +7297 +4652 +6665 +-8725 +3779 +-5211 +2260 +-2405 +-6490 +-9974 +-6683 +-2506 +4210 +7858 +-2259 +4674 +-5593 +3513 +-1207 +6845 +-241 +-9082 +-9713 +2660 +4496 +-2040 +2765 +7872 +2353 +9205 +2376 +811 +6634 +7873 +3156 +1633 +4965 +-4099 +-1041 +4805 +-2741 +-4153 +6219 +5777 +-5691 +-9308 +2659 +4967 +-795 +4853 +-1891 +2004 +6273 +1776 +1486 +-1801 +4165 +-5758 +6019 +7354 +3427 +6134 +1069 +-3831 +5120 +-2941 +622 +-635 +-4520 +-7990 +4128 +5921 +8424 +826 +1342 +-1232 +-9029 +-573 +-8930 +-4433 +-8657 +-5224 +-3967 +9134 +-4907 +6262 +-8261 +8212 +8205 +-5382 +912 +-9780 +-2237 +-7176 +643 +-8062 +774 +52 +8233 +3569 +6768 +-913 +1938 +1716 +-1172 +9634 +-6964 +3827 +5242 +6128 +-3544 +311 +4922 +6973 +-5004 +8555 +-2534 +9145 +6038 +862 +-8959 +5248 +-1946 +6917 +-2301 +-2324 +-5369 +-6343 +-2660 +-2760 +5955 +-8861 +-7772 +-4594 +-3465 +-2202 +5472 +-226 +3768 +-6350 +2640 +3171 +-9554 +7923 +-4886 +-2284 +359 +8792 +5061 +3661 +1840 +-1940 +-6547 +-7151 +9426 +-8653 +7077 +-5710 +-2256 +6005 +-1383 +-6076 +1488 +-1966 +-1601 +-9458 +8816 +-6902 +6036 +9283 +-8046 +-7686 +5940 +-3292 +3366 +-8666 +8663 +6038 +1462 +-2878 +4800 +-3102 +6517 +2150 +-7009 +8277 +5190 +5928 +-9894 +7317 +-6930 +-5849 +2689 +4128 +3620 +-7373 +1862 +-7657 +-2597 +5024 +-8964 +-4599 +-9935 +-7772 +8572 +5777 +8832 +1880 +765 +-1008 +-896 +-2165 +8907 +6649 +4914 +-9924 +5062 +9191 +-5028 +3588 +-3347 +5988 +-4213 +3027 +414 +-6169 +-3458 +211 +-2574 +-3513 +-9203 +-786 +6667 +7428 +-3634 +8071 +-4797 +372 +-1565 +6382 +-4337 +-1176 +-7523 +4285 +8694 +8288 +-1312 +8984 +-6523 +8639 +6491 +7235 +4820 +1338 +2892 +1036 +-9251 +-6136 +3834 +-1787 +-6579 +-6511 +2353 +-3807 +-7770 +-1020 +6547 +7990 +-7523 +-7516 +-1353 +4552 +-1985 +-5983 +1969 +-4475 +-9695 +4373 +1605 +-7473 +4078 +8893 +3156 +7200 +-7357 +8013 +-8272 +-3586 +-7075 +-5800 +-5220 +-2640 +-5347 +1889 +5011 +-5016 +-2984 +-4475 +6601 +7001 +-9411 +8568 +9938 +9450 +7563 +-2997 +-6795 +750 +2694 +6873 +7502 +6217 +3583 +4151 +-7186 +8384 +-6790 +-5406 +5992 +-2676 +-7459 +-440 +3407 +6433 +1399 +-3103 +1993 +9573 +-2152 +-7101 +6068 +-5846 +-1126 +-798 +-3438 +-7180 +8863 +4112 +-89 +6279 +-1617 +2673 +-2255 +4276 +7997 +-9087 +-2684 +8358 +8992 +-882 +-1771 +7311 +6387 +-950 +8233 +-6617 +-3542 +-197 +2712 +4561 +-6405 +8207 +3683 +-7166 +-7800 +-2297 +-4618 +6650 +-7184 +1520 +-6543 +4349 +6681 +3669 +810 +5504 +-3048 +2524 +-9790 +4337 +5239 +9706 +-2611 +5675 +-2426 +4841 +7133 +9976 +2464 +1288 +-2618 +-319 +6680 +-5201 +1851 +6425 +9213 +9788 +7341 +-140 +5585 +8336 +-8727 +-1245 +-6790 +-2908 +-6093 +9459 +5280 +-3706 +-1443 +1573 +94 +-8244 +-7455 +7486 +9245 +3865 +5011 +-6057 +-8862 +5264 +7157 +2326 +7650 +-7399 +-3512 +6610 +-3637 +4067 +6157 +-2889 +35 +9532 +-6819 +9209 +6629 +3363 +3154 +-4326 +4845 +7080 +-421 +-1448 +-926 +-7168 +-6790 +3914 +-81 +3580 +-9605 +-3861 +5577 +4836 +1825 +7335 +4886 +4936 +-5302 +-649 +-1460 +919 +-8453 +1258 +3484 +5727 +-5196 +-6683 +-7814 +-1277 +-5517 +1829 +8451 +-2841 +2642 +-8146 +-4277 +-3347 +3954 +-6433 +9669 +-3868 +6219 +-3706 +9998 +-6373 +5374 +4065 +4608 +7008 +-4797 +9624 +-945 +-9601 +-3762 +-4510 +1893 +-1891 +-2808 +5858 +-6511 +314 +-1275 +-7347 +7415 +9141 +-544 +-3123 +-9008 +-8939 +-1401 +-3570 +-9088 +3440 +-8893 +6313 +-699 +-7303 +2454 +2393 +1316 +7944 +-2920 +-5201 +-8075 +7993 +-4203 +6422 +8939 +-8344 +7093 +-90 +747 +7248 +-3347 +1740 +-700 +-8021 +831 +-6344 +3771 +4711 +-8419 +827 +-3577 +1019 +-3667 +-3093 +901 +-3538 +-8955 +1893 +2193 +-2876 +3697 +7902 +-985 +6684 +392 +-4390 +2930 +3006 +9696 +3041 +-4307 +-64 +5280 +6089 +-1510 +-7613 +-3396 +-88 +6917 +-3510 +9791 +7545 +9983 +-9613 +-9699 +8759 +8631 +-539 +9378 +-3334 +-4073 +-3975 +5148 +9267 +-3206 +-8328 +-6902 +2416 +-5377 +-8329 +3337 +-5224 +-6925 +5986 +-8984 +7761 +-810 +4608 +-8661 +6832 +3588 +-2369 +85 +-1345 +766 +-2663 +-2961 +2963 +5474 +9245 +-6303 +-7800 +-2790 +3824 +-7908 +-595 +-3807 +-9165 +-4098 +-6935 +362 +3826 +-7738 +-5791 +-1870 +-8333 +4935 +4749 +-4450 +1852 +9403 +6551 +3744 +85 +3721 +-3526 +-3003 +213 +1917 +-9617 +-233 +8572 +5024 +1441 +4311 +5209 +-7534 +5702 +-9195 +-5523 +-9888 +5469 +-5473 +-8460 +3829 +-3866 +-1541 +-7100 +2455 +-1248 +-7432 +4355 +-3110 +-3879 +-3413 +4496 +235 +7615 +7875 +7077 +-8487 +330 +8632 +4000 +9336 +-5185 +-5201 +4696 +2954 +6812 +-6210 +8992 +-7690 +-8089 +9198 +-5916 +-7590 +6517 +-154 +-9512 +-5120 +3361 +-2312 +7794 +5372 +-7628 +-5333 +4509 +1948 +-1935 +-2640 +-5864 +9285 +-3085 +9298 +-1061 +-227 +495 +-7829 +2499 +5266 +7239 +-7100 +-8573 +-3900 +1475 +-1747 +-2718 +4652 +-8964 +-7850 +4548 +-3237 +-4835 +-7394 +-9162 +3465 +-8333 +3131 +8799 +6630 +2148 +-3821 +5747 +2715 +392 +8140 +3515 +2791 +-7360 +5953 +4795 +9969 +-517 +7034 +-4186 +5321 +8887 +-4275 +-6105 +-1614 +-1408 +5986 +-5505 +-82 +7426 +-9114 +9900 +6122 +-3004 +-8329 +7427 +-6271 +-4889 +-4202 +-8342 +-9077 +-8960 +-2641 +-9863 +8196 +-4850 +-8260 +9938 +7470 +-1428 +-4813 +-9286 +5307 +-8394 +5839 +4474 +6944 +9177 +921 +-8296 +6965 +9494 +7346 +-2388 +9159 +-9458 +-8893 +2743 +2264 +1296 +3984 +-6084 +601 +-4539 +6278 +8965 +1793 +-7834 +-9106 +-1837 +-9792 +4509 +-4853 +1969 +-4879 +-8261 +-1711 +-5120 +9963 +-1546 +8176 +-548 +-1292 +-3985 +-6202 +8028 +2018 +3260 +5080 +-9426 +-1453 +2120 +-9934 +-2160 +8827 +7864 +8430 +3464 +6387 +6032 +-1399 +-8807 +-6120 +-3442 +4037 +5964 +6777 +1744 +-428 +-2047 +-7534 +-7701 +1290 +-8758 +-5110 +-8980 +-3655 +-4658 +-2196 +-3619 +5624 +-5382 +3471 +-3097 +5565 +9613 +1794 +-1834 +-7448 +-6136 +9547 +-9851 +-286 +-9316 +-6209 +1119 +1955 +-9316 +7279 +-5093 +2066 +-7972 +-439 +5372 +8165 +9168 +-2123 +6953 +-3820 +-8362 +3954 +-4612 +6315 +1749 +-7737 +2019 +3509 +1626 +6509 +6724 +6473 +-7797 +-8704 +5148 +-2244 +6583 +-9810 +-3692 +-4326 +-5649 +-8597 +-5503 +8961 +-4773 +1549 +7313 +2120 +1112 +2000 +-2981 +-6580 +9248 +-4862 +1139 +-4859 +5083 +5233 +6565 +-5946 +8529 +6565 +-2916 +-7176 +1724 +-365 +7522 +8882 +-4448 +2892 +-4222 +-9979 +-3646 +958 +-6933 +9765 +-7344 +6961 +2386 +-2564 +-8611 +-8123 +2039 +2686 +-3543 +-5487 +-7264 +-4051 +4023 +-6704 +-8647 +2855 +1891 +2967 +-9976 +2791 +7134 +9968 +5664 +465 +5031 +5410 +4209 +-8830 +0 +-5783 +-8056 +-989 +-4684 +9378 +-5623 +-1524 +4385 +4572 +6021 +3178 +-547 +1024 +5949 +499 +6509 +4641 +-7430 +1634 +-5382 +1036 +-1591 +3165 +9015 +-6250 +8745 +-8934 +8783 +-7849 +-7725 +-4971 +-5204 +-5259 +-2793 +-1293 +-3454 +-8064 +8008 +852 +-7657 +5240 +6308 +6548 +-2470 +2802 +4435 +-8256 +9233 +-1747 +73 +-2339 +-5140 +-9784 +6200 +8610 +-868 +7299 +8220 +5828 +1341 +7789 +9171 +7600 +-447 +9001 +2275 +9317 +-7060 +7339 +9802 +-8124 +-4584 +3205 +-6942 +7958 +-1512 +9670 +-284 +-960 +4000 +9248 +40 +-7081 +5827 +-4564 +-5902 +4015 +7374 +-8120 +7212 +4928 +-6112 +3253 +9411 +-8133 +-2261 +2804 +8033 +4666 +-5107 +7985 +-7408 +8737 +6599 +3835 +1054 +-1802 +-5029 +2232 +2150 +8151 +-4729 +5920 +-9188 +-7146 +3850 +-6225 +9631 +5620 +2828 +-3909 +1645 +-4655 +-3111 +1089 +9629 +9634 +-2006 +-7473 +-8858 +-1339 +-9125 +-8472 +-5686 +-6622 +-3325 +-7408 +-3825 +5611 +-4299 +-184 +5836 +2208 +-1266 +5424 +-7014 +-8365 +-9516 +6925 +4130 +-2061 +8974 +6009 +5549 +7010 +1653 +7863 +2489 +-9107 +5951 +7230 +-2713 +-4579 +-9780 +7896 +8927 +6009 +1147 +5881 +7559 +9223 +-9156 +-2474 +-3123 +-3703 +-4571 +9708 +-3548 +-8453 +-1559 +6088 +6125 +-5206 +1602 +6401 +-9120 +-906 +-6978 +-9848 +3456 +9914 +384 +3816 +-9447 +7133 +3217 +1097 +7931 +9548 +8189 +-2814 +2609 +-8586 +-9037 +8617 +3124 +-9092 +336 +6813 +1924 +-2316 +-6127 +-380 +1205 +8578 +-7483 +9713 +-9220 +4509 +7397 +-6637 +-3881 +-9646 +2981 +-1824 +639 +2723 +3821 +-8439 +1613 +-6128 +4938 +-5242 +-2123 +996 +8863 +-1616 +4367 +2691 +-295 +-6968 +330 +9206 +-1832 +6516 +-7126 +9918 +4258 +1825 +6170 +-4263 +-1288 +3762 +-3587 +-9769 +6764 +3777 +-8816 +3320 +7396 +6922 +7785 +-3693 +8900 +-7982 +-4756 +3587 +5087 +-1468 +6278 +-80 +-6096 +-1242 +-6095 +-3213 +-8711 +-2903 +3275 +3140 +4696 +6283 +6157 +-4932 +-9229 +-1787 +487 +-1482 +-7115 +-6106 +5638 +6280 +-1234 +-7138 +9555 +-137 +-1634 +-4880 +5745 +-3128 +-5254 +-6954 +7400 +5183 +-2209 +6757 +-1391 +-6353 +3921 +-9538 +9599 +-5589 +5147 +-1498 +1533 +6648 +1652 +7563 +4608 +-4369 +-9671 +8194 +7066 +-9007 +-8855 +-1331 +-8366 +-5992 +-6623 +-6891 +7318 +4834 +-3679 +-544 +-3383 +-259 +1890 +-2101 +-5810 +-5473 +-2607 +4552 +-8697 +-8755 +-7725 +5140 +7362 +-7981 +6455 +3358 +2210 +3320 +9352 +-8665 +2743 +2932 +5424 +6633 +-3570 +-7681 +-5992 +5036 +9750 +6008 +-7981 +-8261 +841 +-8853 +9287 +-473 +6690 +-1913 +-5662 +6231 +4137 +7138 +-3265 +9898 +-3218 +7761 +7503 +-558 +-5922 +7474 +9127 +-9163 +-3943 +-4687 +1988 +-6170 +-6873 +4765 +-7100 +-1699 +-626 +4881 +-9087 +-1345 +-3897 +-8706 +-7994 +-204 +-7814 +5601 +669 +3661 +-782 +3402 +3721 +6945 +4481 +-1588 +5082 +-6220 +-4540 +6881 +-4338 +-8860 +-4975 +-8913 +9488 +-3882 +-2487 +7921 +-2856 +4668 +3620 +-2170 +-9843 +-3102 +2347 +-1394 +3769 +-1895 +3040 +7223 +-4494 +3311 +-4077 +4317 +5446 +3331 +-2168 +2204 +-2281 +-2898 +5030 +-7111 +8812 +-6623 +-3040 +3948 +9114 +560 +1940 +8792 +-9673 +-1312 +5608 +325 +338 +7915 +478 +1852 +1895 +7522 +-3040 +522 +1578 +4904 +-2628 +7336 +7359 +230 +1080 +-5019 +554 +-5136 +174 +-6586 +-4115 +-6939 +-1345 +6629 +784 +5590 +-3641 +-1499 +-3488 +-5948 +2952 +-7468 +8252 +-9098 +933 +-9475 +2180 +337 +662 +-9104 +9127 +-5998 +9317 +7316 +314 +-8453 +-1178 +9301 +-7371 +-6176 +3620 +-4485 +8774 +-2530 +3152 +876 +-6404 +-1521 +-4428 +-6972 +-8365 +-5919 +-1614 +28 +4993 +-9670 +4039 +-9397 +474 +-7891 +-7472 +-5115 +4571 +6007 +4800 +2535 +3616 +-9621 +-9229 +2302 +-4049 +-4848 +-1883 +5503 +9283 +-7441 +3263 +8617 +-4942 +-3443 +2858 +951 +5242 +-2162 +5061 +6219 +7285 +5576 +1652 +4739 +4633 +9595 +6753 +-2381 +1871 +-8013 +-8074 +-2178 +9298 +3131 +5994 +4276 +5465 +3590 +1893 +8767 +-3957 +-5525 +1740 +-8698 +1143 +-5136 +5519 +225 +4049 +-266 +1251 +-7309 +1013 +-1937 +6406 +-9569 +5603 +-5589 +2150 +-6514 +5782 +-902 +-342 +713 +2384 +-7976 +7999 +-1499 +-1610 +-7326 +2218 +-9993 +-4003 +2118 +3428 +-5882 +-5473 +5276 +-8573 +6037 +1034 +573 +8707 +-9389 +-617 +6940 +8329 +9514 +-3874 +1801 +-7820 +-5436 +-1082 +9998 +-5632 +3120 +-8186 +-770 +-7555 +4684 +3039 +7540 +-2687 +8694 +2790 +-6476 +9048 +8195 +-7396 +985 +3953 +-8996 +-656 +-1872 +5151 +-458 +-2583 +-9065 +9548 +-3960 +7776 +-1074 +-2508 +1573 +-3482 +9565 +-7289 +6421 +-698 +-9490 +-6031 +9165 +-8972 +8657 +-5430 +-7374 +-6141 +1627 +-3046 +9220 +-117 +7503 +1486 +9248 +-9843 +2920 +1080 +2204 +-505 +-6902 +7211 +7918 +-9792 +-426 +5424 +7668 +352 +2934 +6007 +-2470 +-7721 +-9062 +2198 +-4210 +9916 +4743 +-7024 +-9571 +-7820 +-5996 +-7408 +-3576 +2686 +-6740 +-6988 +-330 +8400 +6703 +-9468 +8538 +-8227 +9163 +7178 +-2301 +-5415 +-9411 +-6543 +-9584 +-657 +-549 +575 +-4494 +3645 +-1061 +9515 +8653 +2642 +1928 +-9168 +-2425 +-9613 +8831 +-1327 +7758 +4536 +-1954 +4209 +-2948 +4249 +7563 +2262 +1614 +-2233 +8663 +-6461 +7427 +-4210 +2262 +-2470 +-3814 +7541 +9048 +-7337 +-1306 diff --git a/src/20.rkt b/src/20.rkt new file mode 100644 index 0000000..15195c9 --- /dev/null +++ b/src/20.rkt @@ -0,0 +1,63 @@ +#lang curly-fn racket + +(require "../lib.rkt") + +(define input + (map string->number (problem-input 20))) + +(struct element (value [prev #:mutable] [next #:mutable])) + +(define (parse) + (let ([hd (element (first input) #f #f)]) + (for/fold ([curr hd] + [elements `(,hd)] + #:result (values (begin (set-element-next! curr hd) + (set-element-prev! hd curr) + (reverse elements)))) + ([i (rest input)]) + (define next (element i curr #f)) + (set-element-next! curr next) + (values next (cons next elements))))) + +(define (mix! elements key) + (for ([e elements]) + (set-element-next! (element-prev e) (element-next e)) + (set-element-prev! (element-next e) (element-prev e)) + (let loop ([i (% (* (element-value e) key) (sub1 (length elements)))] + [next (element-next e)]) + (cond + [(zero? i) + (set-element-next! (element-prev next) e) + (set-element-prev! e (element-prev next)) + (set-element-next! e next) + (set-element-prev! next e)] + [(positive? i) (loop (sub1 i) (element-next next))] + [(negative? i) (loop (add1 i) (element-prev next))])))) + +(define (grove elements key) + (define 0th + (let loop ([curr (first elements)]) + (if (= (element-value curr) 0) + curr + (loop (element-next curr))))) + (define (get e i) + (for/fold ([curr e]) + ([_ (in-range i)]) + (element-next curr))) + (* (+ (element-value (get 0th (% 1000 (sub1 (length elements))))) + (element-value (get 0th (% 2000 (sub1 (length elements))))) + (element-value (get 0th (% 3000 (sub1 (length elements)))))) + key)) + +(define part1 + (let ([elements (parse)]) + (mix! elements 1) + (grove elements 1))) + +(define part2 + (let ([elements (parse)]) + (for ([_ (in-range 10)]) + (mix! elements 811589153)) + (grove elements 811589153))) + +(show-solution part1 part2) \ No newline at end of file