From a264e1e6d356d22f762128bbfaf42d69524bac8f Mon Sep 17 00:00:00 2001 From: Sebastian Knackstedt Date: Tue, 20 Dec 2022 18:07:58 +0100 Subject: [PATCH] Add day 20 --- day20.txt | 5000 +++++++++++++++++++++++++++++++++++++++++++++ day20_test.txt | 7 + src/day20/main.rs | 51 +- 3 files changed, 5057 insertions(+), 1 deletion(-) create mode 100644 day20.txt create mode 100644 day20_test.txt diff --git a/day20.txt b/day20.txt new file mode 100644 index 0000000..a672fa2 --- /dev/null +++ b/day20.txt @@ -0,0 +1,5000 @@ +-4707 +2246 +4162 +3642 +1168 +3101 +-2569 +5481 +332 +7522 +-5703 +9850 +7631 +7522 +74 +1208 +575 +-9725 +4710 +-2705 +1645 +9935 +-149 +5976 +17 +-7714 +-7936 +-6695 +9502 +-8285 +-729 +6503 +-1033 +3508 +-1788 +7101 +-6060 +9022 +5850 +1568 +-264 +-2881 +4766 +7688 +-3958 +4077 +8481 +5746 +-7570 +9132 +-6175 +739 +-8131 +1512 +1232 +-2249 +5822 +-3371 +4426 +-1367 +-5151 +-9045 +-1076 +-6039 +-643 +1146 +4805 +8717 +-6039 +-6416 +3406 +-1033 +4241 +-6736 +-5736 +8115 +-9070 +9926 +-9433 +-9105 +9315 +-23 +9742 +3657 +3938 +-2928 +-2084 +1588 +-8099 +-371 +97 +9485 +-9446 +-7628 +-9360 +1989 +420 +-509 +-7572 +-9342 +-2120 +11 +-3398 +9685 +-7603 +1689 +4306 +-5298 +-9509 +4 +-4852 +8438 +708 +6673 +8865 +-1259 +-8997 +-3439 +-1361 +9323 +6956 +2749 +8050 +-5122 +6486 +-1804 +-8818 +4466 +-9185 +-89 +5922 +4397 +7651 +3289 +-6423 +-316 +-388 +-5207 +-5641 +-5104 +-9539 +2301 +9233 +3092 +7412 +-1327 +-599 +2734 +-520 +-6404 +1674 +-5440 +8661 +7580 +-1396 +8340 +4632 +-9237 +-8373 +-2641 +-4661 +-8483 +3222 +7133 +1789 +-2154 +89 +1802 +2368 +-1327 +9485 +525 +714 +5098 +4982 +224 +7531 +-8756 +-5536 +2788 +-506 +5682 +6890 +-7358 +-4726 +7921 +-2240 +9485 +4350 +-2385 +-2651 +-7092 +9414 +-1123 +-5233 +-3756 +-804 +-1849 +5044 +2418 +9169 +4375 +-4871 +-7509 +-9847 +-3792 +-4363 +-2537 +8442 +3602 +8127 +-4556 +903 +7129 +5554 +4106 +-6263 +-7765 +-6686 +608 +6054 +-3077 +-4041 +-6076 +5116 +5414 +-388 +8709 +-1624 +-7710 +4393 +-8996 +-9733 +358 +6701 +-4305 +-5979 +2311 +7615 +1239 +-4679 +-4175 +6110 +3623 +2719 +-889 +-9342 +-1912 +-3085 +-4077 +1071 +-1938 +6546 +-2727 +-9605 +9137 +3722 +-8913 +4397 +7665 +-4888 +740 +-4419 +-9115 +-1615 +4138 +-5334 +3621 +-8858 +4912 +-802 +-896 +5181 +-334 +-7920 +7240 +2448 +-5518 +-2042 +1422 +3655 +-1069 +1886 +-9610 +-971 +5715 +8150 +-8145 +-4255 +-3740 +4107 +-3718 +139 +-955 +7984 +890 +5978 +5953 +-3051 +9646 +-9232 +-971 +4327 +4887 +-5325 +-6298 +2943 +-2160 +-6619 +-6491 +-9631 +420 +-827 +2431 +-4875 +-5122 +-6711 +6982 +-359 +-8285 +-4700 +7018 +662 +420 +1070 +-7189 +1210 +9187 +2258 +-896 +-6448 +-6079 +4088 +-7410 +-4206 +-6718 +4042 +5781 +1079 +9934 +-9428 +2139 +-7098 +4434 +9233 +-9976 +-9310 +8166 +-517 +8396 +-8562 +-7146 +-4807 +-8162 +6491 +5332 +-7894 +-9733 +-9923 +2982 +-7040 +-7219 +5215 +1215 +3875 +715 +9174 +9467 +9935 +-1984 +-6943 +-4569 +4146 +-1993 +-7274 +6906 +-2438 +-1448 +-7730 +-9696 +1137 +9011 +2636 +2113 +5335 +4025 +6132 +-6048 +6023 +-2385 +6042 +-3159 +-5755 +-1331 +-2059 +-5209 +-7765 +7184 +7296 +-5909 +-7844 +7216 +9816 +-8510 +-1630 +7282 +-9566 +-9196 +8964 +-4384 +-6222 +-7497 +-627 +-5815 +-4761 +7827 +2218 +1092 +8378 +-7112 +6897 +4421 +2042 +-7065 +6626 +-4441 +6331 +-5717 +9959 +-3769 +6736 +-7216 +7235 +435 +-6679 +-3606 +6310 +-4893 +2437 +-4140 +2883 +6388 +8653 +9529 +7437 +881 +7679 +2734 +-1647 +-503 +6292 +-506 +-3751 +481 +2624 +8848 +2128 +6879 +9550 +-9353 +689 +1089 +6744 +-6718 +-7522 +3277 +3320 +-7429 +5818 +6252 +-7835 +8462 +4354 +7561 +8147 +-533 +-3645 +7960 +-4580 +2505 +-302 +-7092 +1613 +-9661 +-8612 +8198 +3660 +7394 +9233 +-9179 +8442 +-3854 +454 +-1580 +-742 +2295 +-3434 +-8418 +7634 +4700 +886 +8351 +-8273 +-3481 +7848 +-2114 +648 +9819 +-1043 +-8229 +-1887 +-2624 +-7728 +1453 +-5996 +-7300 +-1863 +-4314 +-8051 +5574 +7859 +-8520 +3485 +-5245 +-5855 +-7397 +9553 +4621 +-6549 +-6492 +-2120 +3132 +-9657 +4872 +-7758 +-7106 +-9599 +-8476 +-2422 +8863 +-1361 +3663 +-3918 +7300 +8946 +1078 +1001 +-187 +-5977 +-6259 +8550 +-4804 +-4867 +6192 +3783 +-6679 +-3467 +-5290 +7169 +7182 +6673 +-4967 +-8051 +-6719 +9147 +-5824 +2259 +1454 +-8261 +3320 +4700 +6913 +5832 +8744 +-4157 +9108 +-1454 +-3741 +-1223 +3629 +-1835 +8945 +9134 +-8002 +6767 +4350 +-7724 +-9395 +6192 +9108 +-3773 +5779 +1588 +-8862 +-9098 +-8699 +9828 +9539 +-3580 +-8225 +-6749 +-2621 +-5595 +4367 +-2125 +-2862 +-7695 +-1226 +-8910 +6099 +1407 +43 +1093 +1703 +-1825 +-8598 +-5261 +9341 +1250 +-7743 +9230 +9538 +6041 +1456 +-5488 +-2067 +7897 +-9701 +1839 +1645 +-6516 +-9715 +6712 +-9179 +-1825 +-8756 +5447 +6374 +6329 +6856 +6684 +8017 +881 +-8223 +1494 +-6665 +9669 +-8345 +-2766 +6949 +7266 +6744 +-6648 +6153 +3986 +269 +-877 +-6972 +723 +-7706 +8215 +-6634 +7575 +-1040 +1943 +-7495 +-3059 +5974 +4345 +-3481 +3594 +7933 +-5382 +-2770 +-2353 +-5220 +8331 +-2552 +-2506 +-7844 +-9202 +2874 +-6223 +-1479 +-9925 +8687 +-1147 +-2858 +-3683 +1036 +-3440 +-1740 +456 +1262 +5536 +-4061 +-7993 +-2710 +3741 +8500 +5932 +9233 +-5801 +2203 +2029 +-6650 +-6732 +9491 +115 +-263 +-3036 +5394 +-587 +4934 +3540 +-228 +-4735 +32 +6875 +-929 +-8919 +-9792 +-9903 +-285 +-4627 +-97 +-5836 +-8733 +2108 +7836 +5311 +7968 +7133 +1692 +-3713 +-7113 +4003 +-1860 +3767 +7828 +1490 +8454 +2289 +-6248 +4587 +3839 +6057 +-4370 +-603 +-8729 +5431 +-8268 +-8326 +140 +9396 +-5423 +8351 +8108 +5763 +-8102 +-4191 +500 +2882 +-360 +-97 +6874 +3760 +-5527 +7132 +-7723 +-7113 +-5419 +-9987 +7877 +1674 +-5410 +-8096 +8667 +-6696 +-1859 +-5703 +-2698 +9935 +-2529 +9058 +6401 +-5772 +9019 +3528 +501 +-5290 +-3214 +1847 +8610 +7943 +-764 +-3619 +7432 +-2555 +3872 +7776 +8714 +-9089 +-9155 +2610 +7136 +-9446 +-4951 +-6980 +8363 +-8233 +912 +-6569 +-1085 +2375 +-4964 +-8739 +-1405 +8465 +-2116 +8357 +-9013 +7212 +-2526 +9053 +-3606 +-4761 +6811 +36 +5063 +8350 +6310 +-1728 +-1695 +-5397 +3045 +7788 +-4328 +4234 +-89 +-9147 +5926 +-1489 +2233 +2686 +-6509 +5071 +2224 +97 +1196 +-4490 +4426 +-4890 +1599 +4257 +-9597 +1462 +4707 +3617 +-8420 +-9597 +-9184 +9518 +-5703 +-8777 +-3142 +9779 +7611 +2709 +139 +-5218 +-851 +5072 +7375 +3969 +-5819 +-1459 +-5619 +5768 +-540 +-6403 +5732 +-854 +8836 +1405 +2227 +-3467 +8714 +1454 +-2845 +-7624 +8369 +4296 +5530 +-3547 +3105 +-3949 +4823 +4935 +-8719 +-6410 +-2715 +-7256 +-6056 +4707 +7419 +-2046 +3720 +8479 +-2321 +-7971 +-9398 +-3470 +5506 +874 +-6216 +2238 +2900 +1039 +9529 +3074 +-3711 +-3112 +-4323 +5665 +-8409 +-9481 +-8882 +8982 +-7419 +1923 +-2210 +209 +7470 +4722 +-4845 +875 +989 +-7043 +5261 +8121 +-9183 +-8583 +5298 +7300 +-7605 +5617 +5825 +-5867 +-2535 +66 +-1150 +3778 +-4778 +-8385 +2139 +-335 +-9064 +6340 +1156 +8053 +-7300 +-5854 +-8401 +-6824 +6783 +4268 +-2377 +-7523 +2356 +2686 +-1147 +-4922 +-535 +-4388 +-3644 +5832 +9548 +-6223 +2794 +6767 +5036 +-1223 +-5080 +2490 +1125 +1196 +-4079 +448 +8012 +5754 +1138 +9463 +-9960 +-3734 +-3180 +-3127 +794 +-7609 +482 +-7733 +-7602 +9633 +1772 +-2171 +-1818 +1275 +-5143 +8622 +-1611 +3049 +-3234 +-3842 +-6821 +-7442 +1775 +5455 +9026 +8993 +5651 +-1231 +4276 +1775 +-9501 +2382 +-4391 +42 +4752 +5310 +2731 +749 +1678 +9298 +-873 +-3557 +8815 +3320 +1394 +3963 +-9735 +-2046 +9419 +-1254 +-6861 +4960 +-5825 +-8162 +8366 +372 +-1973 +-9833 +-5545 +7884 +6534 +5607 +2888 +-2900 +4470 +3608 +-2881 +2002 +-7690 +-8669 +1273 +2171 +5142 +-4335 +-3629 +849 +-3741 +-1271 +-1572 +-7249 +9926 +-5040 +350 +3056 +1512 +-3837 +8871 +-1083 +1133 +-5480 +-6641 +3049 +5505 +-2451 +-2058 +-1661 +1634 +411 +7966 +-6047 +-9586 +5538 +-5921 +4783 +5877 +-4910 +-7410 +4595 +319 +-6263 +1062 +6369 +7538 +-8131 +-7523 +274 +8622 +-2930 +1005 +-1890 +-4827 +9318 +-4199 +9719 +-7146 +5954 +-7950 +4877 +6468 +-111 +7347 +5547 +-4880 +-170 +4345 +-6588 +-5427 +4825 +9240 +6788 +6981 +-6644 +5256 +-3180 +-4363 +-4349 +-2669 +662 +4042 +-7605 +-66 +8413 +-2336 +5160 +-1870 +-4421 +-2341 +-1068 +7511 +-5636 +-8147 +-8466 +-8209 +361 +4470 +-8065 +-4156 +2436 +3839 +4027 +-8352 +6417 +-26 +5298 +-6363 +5761 +949 +-8549 +-3822 +-312 +6688 +5091 +-4201 +6139 +5157 +-742 +-6465 +-1660 +3649 +2900 +2233 +-8528 +-4642 +-1534 +-2555 +-2328 +8190 +-6002 +-3764 +8551 +-1645 +5788 +4468 +-2829 +6565 +5247 +-5296 +3579 +1961 +3130 +-4340 +-2882 +1149 +-8691 +5835 +-6775 +-5093 +-2240 +4769 +5798 +-9194 +-4853 +-6311 +8552 +6240 +7491 +3472 +8889 +3603 +-1443 +8115 +-1069 +6555 +-1443 +7075 +-6385 +5835 +-7728 +-4066 +-1481 +9723 +-8421 +2562 +-6223 +-8397 +-1474 +3696 +3875 +-704 +-2642 +3874 +-1020 +-2092 +-4662 +-177 +9084 +-1616 +-1510 +-4103 +-1155 +-9951 +5646 +8367 +-8581 +-4060 +-8729 +-9471 +-2752 +-5150 +4821 +-4858 +-2509 +-8427 +-7395 +-628 +-5326 +-13 +-3756 +-4592 +5382 +9789 +-9291 +1423 +-675 +475 +4848 +-6079 +-5955 +-9201 +-6225 +-214 +1077 +-7868 +4918 +-6162 +-2438 +-289 +-2226 +1218 +4393 +-3690 +225 +8422 +9987 +109 +-5805 +-9337 +-179 +-1223 +9276 +-3472 +7113 +-5631 +4274 +9463 +7532 +-919 +2624 +9187 +-7643 +-8728 +6550 +-5207 +4465 +2260 +3822 +3603 +8323 +-3428 +-5678 +-4569 +8815 +-6222 +-3459 +6350 +-5343 +5561 +5845 +533 +-8054 +3742 +3967 +6536 +4074 +191 +-4765 +6310 +4873 +-9965 +955 +-768 +-4740 +8783 +-3507 +-4761 +4003 +1022 +6293 +967 +-1795 +6386 +7331 +-7174 +2415 +-7910 +-4419 +-4244 +9262 +-3845 +-1274 +4337 +-6792 +-8159 +-2007 +7228 +-1157 +-6060 +-8034 +-2091 +4692 +8332 +7673 +-9184 +8585 +-8639 +-5143 +8335 +0 +-2315 +-273 +6302 +-675 +8768 +-9006 +-6991 +-556 +7769 +-4932 +6684 +-4908 +-7387 +-436 +8748 +1168 +-9178 +-1261 +3192 +-3383 +-2076 +5321 +7331 +-5325 +-6577 +7133 +6638 +6200 +-4584 +-3674 +-4206 +4563 +6918 +-89 +-2980 +-7828 +-4700 +-725 +-5527 +-7240 +-5349 +-2555 +-8200 +1190 +-9331 +8721 +-5563 +-2001 +-7642 +1091 +-4442 +-3053 +-6884 +-6441 +-9773 +-1063 +7884 +-3898 +-1580 +840 +1881 +-6448 +420 +-9082 +4533 +890 +5055 +5463 +2020 +-438 +9863 +5951 +4242 +-144 +-4453 +-6361 +-2515 +-5052 +-7014 +9885 +9986 +5566 +5050 +-4256 +3974 +6758 +7433 +-4169 +-6958 +6638 +-9800 +-5160 +-7468 +3649 +8442 +5065 +-778 +1382 +-6645 +-3792 +2261 +8136 +-8137 +1247 +-4985 +-6987 +-3816 +-8783 +-6410 +-6562 +3303 +2436 +1358 +7131 +-9550 +7712 +-622 +-2381 +-1991 +1490 +-9322 +6255 +3969 +5979 +-4325 +-1776 +-1777 +-5753 +7910 +7155 +-8541 +-9113 +4938 +-4997 +-2404 +7685 +-9546 +-5536 +-5659 +6447 +7202 +1752 +-3408 +30 +-2492 +4438 +-7686 +-825 +-1146 +9968 +-7315 +-176 +-2713 +5759 +-2995 +-9031 +4781 +-693 +7698 +3832 +1092 +-949 +3913 +2632 +-4340 +-5109 +306 +4367 +2770 +4002 +2960 +-1083 +-9882 +-9952 +-7733 +-7734 +-9768 +-4109 +2414 +-8026 +-5097 +1074 +-8790 +-7643 +4483 +6689 +4524 +8559 +1724 +5064 +9935 +4349 +-7783 +-8086 +-7719 +-673 +8017 +-7959 +-6079 +6200 +6542 +-5563 +1422 +7960 +1548 +-7003 +9985 +8651 +7801 +9870 +9084 +-6144 +-6516 +7068 +9870 +-5153 +6849 +7686 +-1709 +-921 +-8744 +2235 +9817 +-408 +-6140 +-269 +1467 +-7080 +-2502 +6176 +6430 +-6549 +-6110 +-3322 +144 +9205 +3196 +6276 +-728 +5491 +-3313 +-6540 +421 +-1686 +7844 +-6423 +-7023 +-7967 +8400 +5301 +-7518 +6032 +5629 +9445 +6042 +-3462 +9512 +-8611 +-186 +-4582 +-1563 +-302 +-6038 +1069 +8708 +6682 +6777 +3074 +-7789 +-7 +7762 +-3189 +114 +-1631 +4061 +-7335 +-7939 +9255 +1104 +-8218 +-8466 +3566 +-7256 +571 +4421 +-7970 +8161 +479 +-2506 +5917 +949 +-5569 +7603 +-8804 +-2206 +-5865 +-3503 +-54 +-3479 +8422 +4369 +-7714 +-701 +6987 +1728 +7187 +-5237 +8664 +6693 +-3467 +-2635 +4948 +-9892 +3678 +-7419 +-6831 +-3100 +-8649 +-804 +1584 +8638 +-6981 +1592 +-1094 +-8331 +1564 +9502 +-1854 +-4590 +3090 +8748 +-7129 +6693 +-559 +7927 +4753 +-747 +-2485 +-6811 +1923 +7493 +-5977 +4727 +2335 +-6824 +-6516 +-5317 +-7808 +4760 +-6343 +-8673 +-2160 +-758 +-6407 +-4388 +-1037 +8023 +4402 +6816 +-7069 +-1686 +-3018 +7253 +-8069 +7532 +1885 +-7146 +-4324 +-568 +-4132 +-1141 +2417 +-2898 +3072 +9117 +3634 +330 +-8667 +-9701 +-768 +5549 +5047 +9053 +-6099 +-7417 +-7868 +-4066 +7228 +4345 +-7993 +4984 +-2562 +7430 +-2118 +2346 +9276 +-6118 +-4518 +-747 +1211 +-9471 +-5984 +-1108 +8848 +-3958 +4857 +-8636 +-4589 +-4764 +4551 +-7910 +1412 +-9178 +-8294 +-6200 +9329 +-1531 +7791 +8464 +3697 +5640 +-407 +2368 +4421 +-6918 +5247 +7984 +9048 +2669 +7056 +-3227 +8706 +8422 +3792 +5765 +-3630 +656 +-2790 +-7890 +-851 +7358 +-2859 +-4303 +-2675 +-2211 +9275 +6331 +6143 +-5325 +9302 +1304 +-4822 +-6623 +-8182 +4728 +4869 +-3820 +485 +-2838 +-412 +-7730 +-9472 +-3739 +32 +2615 +-9013 +-825 +-6733 +-7748 +-9469 +775 +-4443 +-3593 +-121 +5909 +8527 +1092 +3399 +-5230 +-8233 +-5911 +-7725 +-5865 +-5438 +-4169 +-6749 +8909 +-1987 +-5778 +7712 +-2469 +9682 +-8444 +224 +-5008 +5807 +-5414 +4877 +1236 +-1746 +-5935 +8778 +-5370 +-4697 +-8659 +-1490 +3231 +-6619 +2018 +187 +1859 +1505 +3416 +-1270 +-747 +-6085 +9203 +-7581 +7083 +739 +9481 +4101 +5337 +4203 +-2298 +-2847 +-9806 +-2207 +-66 +-2592 +837 +-1939 +-5683 +-6060 +3642 +-9228 +8829 +-9818 +-8482 +4770 +-5778 +4810 +-2661 +9404 +-3675 +8990 +-3210 +-6903 +-25 +-5564 +-256 +5574 +-5553 +8708 +1318 +2219 +-6528 +-1531 +-2469 +-750 +2042 +7058 +-4635 +2127 +-3425 +-4979 +-8230 +-1900 +-1429 +-2928 +4113 +-2479 +7258 +-7300 +-7733 +-5755 +-9422 +-9976 +-3381 +4242 +4969 +-2079 +-7016 +-9546 +-3013 +6538 +7018 +211 +-8756 +-9423 +-5245 +3093 +-1178 +3712 +1340 +-5766 +-416 +2144 +8504 +4323 +-4746 +5726 +486 +-9776 +4909 +5947 +7961 +4578 +5 +-371 +1196 +6902 +-6285 +6952 +-5737 +-8487 +7459 +3065 +1638 +-467 +321 +7522 +4880 +-5410 +-7966 +-2869 +8378 +1454 +2179 +1453 +-2540 +-9890 +929 +-1924 +-4550 +-4043 +379 +-7730 +3152 +-1487 +-6465 +1160 +11 +-2485 +-7998 +6704 +3566 +-8367 +4756 +3999 +-7804 +-8695 +-3189 +-9556 +8928 +-6645 +9368 +-2999 +7131 +6877 +-264 +-4340 +-242 +4075 +2 +-6631 +-2258 +-5865 +6846 +662 +6952 +-1582 +-8699 +8042 +-5737 +-1513 +-8669 +-2610 +-8457 +2476 +-1825 +2040 +5247 +-2110 +3999 +66 +-9446 +9640 +-3545 +-3253 +-3715 +-1531 +6481 +-1978 +2794 +-5122 +478 +-2453 +4513 +-8914 +-8601 +-8614 +-1378 +-3947 +-9430 +-4847 +6981 +-699 +-6488 +-4967 +-1199 +-6144 +-5440 +1053 +8605 +-3112 +8920 +-366 +8263 +7601 +-556 +-5449 +9900 +6609 +1678 +2382 +4051 +3280 +8828 +6331 +8513 +8631 +-3734 +3143 +6882 +-289 +-8285 +1130 +8783 +2669 +-2084 +881 +8972 +-7706 +-8328 +5498 +7330 +4649 +3157 +5894 +-2713 +9240 +1383 +8301 +9087 +8277 +5411 +5901 +-5273 +4179 +-9339 +1897 +9046 +-8433 +-2651 +6171 +2308 +6590 +4732 +-2503 +8547 +-9261 +-1377 +5001 +-1582 +6016 +-1532 +-6176 +8296 +6344 +4054 +1343 +-1383 +-8005 +695 +-4056 +3342 +-9903 +-6395 +440 +1583 +-1456 +7133 +-1205 +5283 +-7509 +-8518 +-730 +6684 +2913 +-1125 +7647 +7769 +9874 +361 +739 +4622 +6121 +-9574 +334 +881 +-3839 +5353 +-7723 +-4561 +-9376 +5843 +5171 +-568 +-5351 +8928 +5718 +974 +9882 +9935 +-2752 +-4169 +-6963 +5319 +4919 +-3674 +-2751 +-1915 +7210 +3428 +-7034 +8369 +-2917 +4536 +-3603 +-9606 +1036 +3294 +6163 +-6048 +-9931 +6454 +5172 +-9987 +3364 +1171 +6550 +-8108 +-2179 +9720 +-768 +7086 +-372 +-2495 +-2457 +-9779 +9412 +-8917 +8243 +9087 +3767 +-5228 +-3759 +-8992 +-7494 +-5536 +7734 +3450 +5731 +8398 +97 +-1538 +-4871 +6739 +-7580 +1765 +2462 +9685 +-8723 +5005 +6268 +3685 +-5415 +-8690 +-1430 +-1946 +-7307 +4268 +-3624 +-5407 +2784 +-1543 +7459 +-7296 +3775 +-6079 +1719 +-3034 +-2610 +-4611 +2234 +-7225 +2435 +-1946 +890 +-6749 +6935 +6869 +-9208 +7603 +1490 +2021 +-6484 +-7195 +-2829 +8245 +8191 +-1157 +-7497 +-6505 +-6410 +54 +2480 +-5979 +8978 +5235 +3696 +-5588 +3735 +8954 +-9074 +2454 +-3428 +905 +-5824 +-7910 +-5897 +-312 +-8276 +4368 +9368 +-5641 +-9773 +6546 +-517 +-8190 +9053 +7889 +5974 +1660 +3862 +-884 +8854 +-9255 +-9682 +-1753 +1755 +8385 +-7552 +-1595 +6330 +5976 +-3234 +5118 +-7341 +8184 +-2920 +3217 +6853 +1474 +7769 +-6343 +-6685 +881 +4619 +9610 +-7385 +8295 +-7489 +-8919 +9110 +8277 +1852 +6612 +-9037 +2062 +-5209 +8527 +-4329 +1402 +-4699 +-9271 +-3745 +7113 +-9807 +-8717 +-6753 +-6850 +7200 +2571 +4758 +-555 +5021 +-9201 +-4237 +-788 +-6583 +4195 +-1133 +-4587 +-3820 +8150 +3544 +-8766 +-1665 +-6551 +7737 +5482 +4061 +9372 +3631 +-3249 +-8882 +-9472 +4889 +-3846 +-5081 +6976 +5007 +1073 +8451 +2628 +9048 +3609 +-1843 +6351 +-4890 +7018 +-4798 +2474 +9324 +4088 +-5334 +-9539 +-3235 +7178 +-5631 +-7982 +-3443 +320 +3164 +5877 +-8296 +930 +-9726 +278 +8438 +5536 +-6619 +7031 +-7478 +-9981 +-7194 +2571 +-6792 +-7719 +1692 +-4240 +7258 +8595 +2311 +-8657 +-6688 +8253 +5845 +5651 +6292 +-9468 +-4641 +4769 +-8427 +3839 +3634 +6780 +-5118 +-7966 +-9108 +3863 +-9344 +-7967 +-1676 +9684 +8044 +-7949 +-65 +-1076 +-3550 +5985 +1422 +-2457 +-6144 +-4862 +4203 +-5147 +1553 +8785 +7921 +4398 +6470 +-6466 +-4701 +-8575 +-303 +-1437 +4413 +5270 +-3036 +-8624 +9679 +3334 +-9608 +-5741 +8918 +-1529 +8324 +-3354 +9329 +3146 +-5099 +-1144 +-2909 +-3322 +7847 +-9361 +109 +-7281 +-5867 +-4388 +6952 +-7870 +-2789 +-9507 +-488 +5170 +-8664 +-9539 +-6903 +-8492 +4932 +-5728 +1275 +-217 +-3723 +-3082 +8980 +-3535 +9051 +3911 +9048 +9384 +1569 +4560 +217 +378 +-7390 +1423 +-4634 +-873 +-4781 +-2752 +316 +-9423 +-5352 +-8836 +-4329 +-5273 +-6980 +6331 +-4765 +2380 +8012 +-8997 +-6861 +9375 +1765 +-8934 +-1893 +9275 +-470 +3117 +-4363 +3970 +746 +4136 +3735 +4072 +770 +5322 +-7189 +-9204 +-2735 +895 +3295 +-1209 +-4796 +2295 +6134 +-1150 +-745 +-1801 +-287 +-9597 +-7028 +9942 +4722 +-8328 +-9707 +-6661 +-5771 +-2512 +5443 +8742 +8018 +-2999 +8696 +8691 +8749 +-9906 +-3144 +9900 +8492 +-639 +-4156 +440 +6201 +741 +1467 +3391 +6719 +6139 +5839 +5138 +-6076 +-3044 +-4853 +-9422 +9117 +1137 +-5742 +4229 +6912 +-6387 +-6450 +1777 +-9406 +1349 +-3715 +-988 +365 +2216 +8814 +9705 +6099 +1548 +7927 +1645 +3073 +-9430 +9935 +1665 +7088 +4991 +-4103 +-9271 +5832 +4932 +-569 +-3030 +-9034 +1584 +3858 +7048 +6431 +4445 +8213 +-3340 +-5647 +-1550 +5392 +-4330 +-1791 +1703 +-7565 +4246 +-1226 +1093 +-8186 +4862 +912 +3269 +-8271 +1839 +4026 +8624 +-2558 +-3629 +8749 +-3666 +-1226 +5843 +-8612 +-8665 +-5014 +2943 +5836 +-7281 +4026 +-7967 +2089 +9469 +-7385 +-5965 +2628 +-1487 +-7429 +-3875 +7088 +-698 +-4028 +-7224 +-7358 +2964 +9691 +-5949 +3023 +5816 +7528 +-4237 +-1157 +3685 +-8911 +-4825 +4821 +860 +-889 +-8427 +-1320 +-4349 +3320 +9569 +-2060 +6054 +-9587 +6775 +5350 +-1456 +5363 +4995 +-4418 +-4488 +-9518 +-6815 +-4700 +-2440 +-8891 +-3965 +-6650 +-4858 +4482 +4323 +8177 +-5263 +-335 +-1278 +3986 +6992 +7971 +-6692 +-2680 +-5735 +-7159 +515 +-4761 +3010 +-9702 +4088 +-9747 +2185 +1380 +982 +6137 +-4765 +-4377 +9954 +-2298 +2113 +717 +-411 +-9058 +-5032 +5349 +-5661 +6137 +-917 +-9905 +-6395 +-6679 +7000 +-8295 +8114 +2185 +2260 +9871 +6223 +6976 +-1538 +17 +-6782 +-4965 +1805 +7171 +4701 +-4722 +-8665 +39 +-5555 +-8502 +6025 +8046 +-8777 +5765 +4408 +-5375 +4203 +7101 +-5565 +2218 +6223 +5506 +-3082 +4986 +9463 +6675 +5722 +-1709 +7874 +6237 +1868 +-1170 +6517 +2862 +-1756 +-9446 +113 +8228 +5129 +-825 +7267 +290 +-6469 +5364 +860 +9502 +6789 +-4472 +7475 +-4914 +-7414 +-804 +-654 +-4389 +-1017 +3858 +9301 +-5973 +-8999 +1584 +4546 +-8261 +4877 +-3523 +-7765 +-3353 +-7161 +6540 +4992 +4541 +-1396 +-7544 +2000 +5978 +-7207 +-1718 +-1511 +2559 +-1911 +-5646 +8865 +-6109 +794 +-6370 +7079 +-9037 +6812 +-253 +-7902 +4345 +1468 +1512 +3900 +-3023 +-9373 +5160 +-6165 +7528 +7940 +-8868 +-9433 +7966 +-1278 +-547 +8184 +-6880 +5036 +5850 +2636 +907 +-1878 +-4698 +-8865 +6374 +-7199 +-9178 +-2077 +7539 +-3018 +-5271 +-8421 +-3228 +-4779 +3320 +-4294 +-8190 +6682 +160 +-451 +-4990 +-5326 +-7572 +-4109 +2093 +5932 +-1314 +97 +5797 +3767 +528 +-1492 +4725 +-65 +-8999 +-3979 +-9048 +1613 +-2125 +6201 +-5143 +-971 +-461 +-8806 +-8468 +-4109 +-3879 +8617 +-2992 +1411 +8837 +7652 +-7966 +-7360 +-9119 +-4129 +-5741 +8946 +-2422 +-9616 +-8345 +-7655 +-4936 +4909 +-8439 +-8161 +-6781 +-2840 +5445 +708 +9329 +-9657 +-9800 +2439 +-587 +3389 +225 +8429 +507 +9682 +-5742 +-1643 +9359 +7074 +4806 +9290 +-2608 +-2042 +1442 +-9071 +-5911 +9396 +5832 +9539 +-4330 +-418 +8302 +4820 +-3792 +646 +4126 +-6462 +2781 +6484 +-4168 +2640 +-1630 +-8942 +8114 +-6184 +-4961 +4392 +-7657 +-5587 +6737 +-9006 +8365 +4350 +-8517 +-7642 +-8420 +7784 +-4660 +5194 +5021 +9893 +-7967 +-5835 +-8924 +3986 +2581 +1045 +-4244 +-7802 +-6742 +608 +-8062 +8564 +467 +-1911 +-3541 +-3042 +-3186 +-9847 +7156 +9469 +8427 +3005 +6641 +7169 +1503 +4359 +7759 +-6110 +7647 +1077 +-4657 +-2037 +7730 +-47 +1943 +6730 +-253 +9842 +-2365 +-6009 +-8936 +-2485 +4664 +-2307 +-8505 +-9152 +-3100 +-9134 +-4108 +4837 +-7042 +9491 +-8487 +2745 +-4560 +-4228 +1320 +-7135 +-5999 +3895 +9968 +8662 +-6831 +9333 +6709 +-22 +5089 +1966 +-3618 +-3203 +-3136 +9881 +-8155 +8829 +-3502 +6644 +-1458 +8091 +3840 +2259 +-6722 +3093 +5825 +-411 +-896 +6943 +7603 +9146 +-7034 +7661 +2192 +-2010 +-6696 +7074 +4433 +-4145 +8457 +-3767 +-2305 +2596 +1560 +6770 +4470 +-7971 +7432 +4814 +9149 +8060 +2760 +9084 +-7941 +9748 +9400 +1333 +4442 +-5276 +-2161 +-3059 +-4139 +-3168 +3845 +2525 +-3534 +4248 +-1573 +-7410 +-1788 +-1304 +1454 +1613 +-699 +4771 +-454 +-4784 +2379 +1871 +2786 +-9963 +-597 +-3922 +7491 +-6653 +-5476 +7522 +-3624 +-3210 +-4717 +-3756 +-6686 +1196 +-6750 +8253 +-3114 +-6847 +-7716 +1528 +6827 +6140 +-4850 +-527 +-9269 +-8612 +9301 +9329 +-4878 +379 +4723 +-5833 +3838 +6897 +2227 +-9001 +8221 +-4468 +-8265 +8686 +6553 +-8285 +-4544 +1810 +9414 +-5822 +1575 +4925 +9669 +-388 +-4698 +-6176 +-7868 +-428 +2178 +-6696 +-9823 +-2242 +-4109 +6025 +8557 +-9853 +6647 +-3361 +-3118 +7634 +3804 +-1211 +-6375 +-3524 +2347 +5187 +-9184 +5993 +3186 +-8205 +-9062 +-2656 +1474 +1380 +-4643 +6910 +-2698 +-2146 +-8081 +1196 +8400 +-7195 +-3551 +-8162 +-718 +3951 +-2404 +-4691 +-5602 +9414 +1699 +-2743 +5643 +-5889 +9586 +1196 +-8853 +4369 +6419 +-1407 +-5520 +-889 +-9726 +-2395 +4061 +7337 +9278 +-5582 +4068 +1722 +-704 +-9723 +189 +-7195 +-1233 +5309 +8829 +-3521 +8741 +7238 +-9248 +3195 +-6642 +-8144 +-1673 +9163 +-9326 +2933 +7000 +-2926 +6505 +9831 +5843 +8243 +-5358 +-3400 +2116 +8977 +8018 +7101 +5412 +6200 +4233 +-4739 +-3431 +-9527 +1039 +4752 +-180 +5187 +8497 +-7479 +-9681 +-4954 +6809 +-568 +7898 +2324 +101 +-4190 +-642 +9240 +1674 +9831 +-6367 +1568 +-9800 +7239 +726 +6775 +6919 +-698 +-5139 +-8533 +7688 +7259 +-6378 +-4234 +7148 +60 +8184 +6386 +2452 +-6365 +-8298 +9278 +5723 +7223 +6386 +2916 +1950 +4703 +8517 +-4807 +-1994 +7079 +8503 +-699 +-317 +9807 +8023 +9894 +8378 +1837 +-106 +-8209 +9308 +9748 +-8583 +3762 +4710 +8227 +505 +-5678 +-7241 +-1341 +3151 +-6248 +-273 +-1448 +-2868 +2242 +7768 +4107 +-7638 +3132 +-2303 +-8091 +4839 +-2670 +5135 +-4093 +775 +5986 +7446 +-3376 +5771 +8061 +-1088 +-696 +5825 +-1538 +3945 +-6903 +-1084 +-1994 +5656 +7149 +6436 +-4670 +4815 +1304 +-2301 +9547 +8870 +7921 +-5570 +-4858 +525 +2934 +5910 +4061 +-189 +-6441 +-2468 +-7127 +-27 +-3371 +-710 +2756 +8042 +-3285 +5122 +-7725 +-1456 +9726 +852 +5797 +-6140 +-6869 +-4643 +9571 +9488 +-7800 +-3547 +5574 +1804 +-7846 +1248 +4834 +422 +5595 +66 +-1239 +-2618 +-7479 +5632 +4072 +-3725 +-6223 +7208 +852 +5298 +-1137 +1212 +-613 +6550 +4807 +-2984 +9350 +7772 +-9775 +-1155 +4139 +-9236 +1359 +1186 +9861 +4874 +-9878 +-1580 +2750 +-2284 +2155 +-296 +-5710 +-3595 +-6383 +2701 +-3979 +-4334 +-4900 +-7214 +-1231 +-2067 +6510 +8326 +-3666 +6310 +7897 +-3816 +8479 +-4485 +-7839 +-5741 +2696 +-5407 +-8075 +6340 +-5020 +1850 +-3100 +5619 +8691 +-1320 +2984 +7266 +3102 +9928 +-6970 +6949 +-8748 +202 +217 +2359 +-1608 +-4563 +6955 +109 +-6776 +-7744 +8184 +-1900 +9160 +8551 +-7017 +-7428 +32 +7116 +8331 +-9441 +-8773 +6615 +6909 +9097 +-6520 +6303 +9132 +-6083 +-2498 +-3725 +6981 +-4947 +-8840 +-4357 +-9468 +-2054 +-4638 +-4110 +4829 +9790 +5629 +5633 +-5609 +8706 +4127 +-7256 +4234 +2784 +527 +-9939 +-3738 +1056 +-3120 +-6263 +-1223 +-4095 +1747 +-314 +-274 +-8322 +-8456 +-5778 +-1508 +-793 +-3375 +2942 +5377 +3723 +8451 +8732 +-3265 +3391 +2144 +-5668 +-9835 +897 +-5097 +9305 +420 +3863 +1142 +-1325 +1548 +-4954 +-7249 +-591 +3339 +7182 +-778 +479 +9022 +-75 +-8840 +-2208 +-9201 +-8756 +-8154 +4333 +456 +-6617 +6494 +5376 +5926 +-3751 +6386 +2233 +-2404 +423 +1104 +-7814 +9742 +2332 +2297 +6329 +4624 +2573 +4912 +5619 +-4671 +2756 +9032 +5188 +-2702 +9807 +8367 +-7902 +9053 +-3265 +7210 +-2172 +-5203 +4921 +-3119 +-4635 +-5971 +-126 +-9204 +3926 +-4968 +6247 +-8695 +4753 +-1327 +4203 +-8336 +-7888 +-7146 +-9597 +9149 +8848 +1674 +4513 +2541 +1423 +888 +987 +1341 +-2264 +1592 +1495 +-5402 +6853 +-3751 +-8384 +5247 +5098 +-3471 +2624 +6129 +-6837 +929 +-671 +-6722 +-371 +-58 +-5609 +-7090 +9305 +2943 +9058 +7867 +7769 +-6556 +3523 +6862 +-2955 +5226 +-9740 +-8663 +212 +8294 +7931 +-9313 +5112 +-3754 +6366 +-4858 +-5645 +7609 +5817 +7261 +5277 +-601 +5561 +-1147 +6182 +-5586 +2399 +2295 +-9443 +3986 +7113 +-1286 +1104 +9348 +-454 +4470 +6879 +-7040 +9742 +5304 +5518 +-8554 +1462 +-4021 +-5717 +-3655 +9807 +7879 +7698 +-735 +-5109 +-3055 +-877 +-3955 +-1675 +-2488 +2444 +6744 +-7903 +-7008 +7687 +9702 +-4490 +5549 +1964 +2382 +-4862 +6247 +6551 +9719 +-4234 +-1068 +-8403 +5892 +-4093 +5561 +2253 +-454 +9935 +-616 +-6039 +-7341 +-127 +-1555 +1036 +855 +-5665 +-9449 +-5977 +6134 +-151 +-7364 +-8598 +-1825 +6134 +-7478 +-9672 +-3890 +-5220 +6239 +-254 +-6660 +-3887 +-8567 +4375 +8454 +9375 +-8026 +844 +3011 +-747 +808 +-8936 +4932 +-6417 +-3187 +-1190 +4073 +-6417 +4740 +5848 +9819 +7921 +-898 +-3416 +2788 +-1361 +1513 +8333 +-4077 +4375 +5072 +6782 +1473 +3523 +-8992 +8444 +-5717 +6565 +9646 +-6915 +8829 +-4273 +-2395 +-782 +1394 +-3820 +-2445 +-7839 +9167 +9160 +-1332 +3027 +-2395 +-8142 +-1470 +6990 +4349 +-3370 +3364 +588 +-263 +4198 +1414 +555 +1852 +-4214 +2883 +7133 +-2898 +7183 +5247 +458 +6557 +-6409 +-9723 +-7460 +8489 +-7784 +844 +-9559 +8396 +-1835 +595 +-4968 +-7198 +-1861 +2808 +-7637 +-4004 +-4804 +-1172 +2661 +6134 +8871 +6943 +-6441 +5097 +-2067 +-5526 +-4032 +6767 +6098 +4002 +8366 +-6756 +1652 +-3313 +1476 +5060 +5301 +-1398 +5157 +2325 +4646 +-9478 +-4792 +-627 +-4496 +7686 +4397 +4948 +-698 +-6246 +-7906 +5535 +9424 +-685 +-4021 +-9715 +-7744 +196 +-3159 +4265 +-768 +-1904 +-6225 +-2641 +-1455 +8622 +-9574 +7509 +-6189 +8018 +4797 +9742 +8911 +-2321 +-1083 +-6831 +5972 +-6943 +-1794 +-8992 +3971 +-9543 +-2097 +-4066 +-1718 +-7572 +-4922 +6032 +2361 +-9833 +-2707 +-8062 +-8694 +6528 +6853 +9968 +-547 +7511 +4710 +3495 +-6936 +-3691 +-2512 +4734 +-8487 +-7172 +-5741 +-1377 +-8673 +6401 +9879 +-5465 +1912 +-8669 +-8229 +-2078 +7054 +-6325 +8875 +9469 +1966 +-971 +-3135 +5772 +5012 +-2751 +1418 +8245 +-5143 +6716 +199 +-3100 +-1320 +4275 +4935 +-7399 +-275 +8444 +-9866 +-5259 +-4722 +4402 +2883 +-4029 +9481 +-5265 +-7927 +-8252 +2323 +-2204 +-5949 +-854 +8139 +-6915 +7689 +-918 +9682 +9495 +4576 +-8757 +479 +-5078 +-1595 +-151 +6380 +-4741 +3241 +5259 +8996 +5274 +6848 +-7552 +-4266 +-7292 +513 +1775 +1492 +-1076 +-2679 +-2569 +5530 +-2072 +-4699 +-9348 +-1661 +-2217 +4276 +4806 +607 +-9800 +-7899 +-8905 +9132 +-2893 +-694 +-7911 +8766 +-1775 +-5685 +-7934 +-2648 +919 +-2191 +9274 +-9296 +-5591 +5482 +-7101 +-144 +3364 +9789 +9807 +-2568 +-6434 +4967 +-8744 +256 +-2424 +-1381 +478 +-7272 +-5641 +7028 +2994 +-7522 +-331 +-1099 +238 +1847 +-4975 +-1904 +-8131 +5143 +3646 +8646 +-5788 +5683 +7093 +2415 +3278 +-7539 +-2586 +-8047 +-7138 +2479 +-6606 +4266 +8871 +3803 +1927 +9871 +4837 +4664 +-5451 +-2893 +-8083 +-1778 +6467 +-9461 +8444 +9290 +-3208 +-2040 +6967 +2723 +1402 +5530 +-3751 +-5415 +-228 +-1700 +1160 +8783 +9983 +-7060 +585 +8631 +-4491 +8326 +-7295 +-7994 +-3026 +-7467 +-7007 +-4004 +6673 +-121 +-9069 +-196 +-4228 +708 +5390 +-5010 +8513 +3509 +-314 +-6316 +9329 +7651 +278 +-7243 +-4792 +6433 +-8563 +7699 +-272 +-699 +-4691 +2664 +6452 +-3353 +7093 +4664 +-5747 +690 +-1367 +-2191 +-5407 +3128 +3882 +5311 +-558 +6007 +4075 +4559 +-7810 +-388 +6268 +-802 +-4975 +-4633 +-3610 +4092 +7182 +4043 +2144 +-3768 +9613 +6480 +-2882 +-6936 +4667 +1152 +7850 +-3233 +-4442 +8978 +588 +3974 +3404 +-9249 +7847 +-842 +-273 +-1526 +7235 +9913 +4123 +2171 +7502 +7841 +5307 +-7208 +6096 +-8879 +1410 +7788 +-4231 +9651 +5060 +7623 +115 +-9335 +-2920 +-3848 +-2821 +-7057 +2833 +-8885 +477 +-1144 +7971 +7557 +-8352 +-3630 +1219 +-7888 +7730 +5519 +6039 +-5784 +1335 +2477 +3078 +-3792 +-1946 +-5256 +-6054 +6505 +5148 +-2171 +-8034 +-3125 +6631 +8552 +-4053 +-8566 +7470 +-2909 +4890 +-7091 +-4651 +1765 +8414 +-7723 +2814 +1040 +-2965 +1490 +6207 +2882 +8150 +3840 +-9087 +-191 +2399 +-9642 +4394 +-3127 +3895 +5509 +4431 +4060 +4838 +-8166 +-5476 +-3843 +3010 +-3345 +6016 +-2392 +4231 +-1354 +-2016 +9550 +-9998 +-1777 +-8235 +2864 +-1742 +-7026 +-269 +2346 +-3144 +515 +3661 +-5940 +-7034 +5001 +-3881 +8879 +383 +7570 +-3395 +-1068 +-990 +2367 +-2762 +2991 +949 +-2984 +-6478 +-8359 +-9446 +685 +8310 +4139 +-2160 +-8044 +-1580 +-7094 +6303 +477 +-7491 +6517 +-9773 +5214 +1703 +-8894 +9063 +-3639 +-1311 +-4884 +9517 +-1926 +743 +7174 +9807 +-7570 +4854 +-9446 +-5500 +-7034 +6036 +-5261 +6882 +1239 +-3487 +-5097 +9754 +7542 +-8910 +3390 +-2928 +2819 +4469 +-7190 +3341 +4952 +1856 +3868 +1584 +4866 +-5810 +8597 +7911 +1394 +134 +-4871 +-4351 +8994 +-6984 +-4443 +-6039 +-1746 +883 +2843 +-2017 +-1043 +5384 +-2381 +-9871 +-7744 +-5074 +411 +-8626 +2080 +-2421 +43 +2807 +1284 +2049 +-1712 +-4173 +-1063 +-2459 +4877 +-1543 +8062 +5319 +-7509 +7624 +-7439 +3694 +8062 +5487 +8527 +1748 +2835 +-8190 +1125 +-9361 +-919 +-6080 +2005 +-8702 +8625 +-1705 +6879 +3760 +2417 +-832 +-5357 +293 +-7544 +27 +32 +-842 +-3581 +-5542 +-2223 +-5772 +-4358 +-1121 +-3565 +5514 +7498 +-1067 +7383 +-7733 +5455 +9904 +4003 +8508 +-2570 +6309 +-9228 +7598 +-9413 +7769 +9453 +-8273 +5975 +9899 +-8840 +-1487 +7987 +9623 +-2215 +-4279 +-5081 +3209 +-945 +6875 +-9413 +-271 +-8996 +-4254 +-5129 +-2819 +5043 +8108 +-8593 +4350 +1468 +-1997 +-4489 +2128 +-9681 +-2926 +3231 +2608 +4487 +3298 +-5081 +5926 +4760 +896 +-2118 +2581 +633 +3822 +4161 +2360 +374 +1888 +7323 +527 +-3072 +-4121 +4409 +-5302 +-6448 +-6259 +114 +5236 +-6617 +-5418 +-4470 +-9195 +2672 +2073 +7683 +-2158 +4348 +9051 +9117 +-3239 +7268 +-4068 +1454 +8844 +-6060 +8708 +-1926 +-4456 +-1848 +-5583 +8722 +-4491 +-4489 +-4861 +5786 +728 +-5179 +-4228 +-2469 +1121 +8045 +881 +-2537 +6953 +-4899 +-1854 +3605 +5059 +-7300 +612 +1335 +5517 +5109 +6042 +-1451 +8742 +-6320 +5561 +-1072 +-6487 +-1802 +4986 +3482 +-718 +-4004 +4709 +-409 +-3091 +-8943 +7296 +3822 +-4127 +-4782 +-9162 +-1861 +-778 +-4760 +-3471 +7859 +3472 +6302 +3911 +-8473 +-331 +-5515 +-7243 +-4899 +-2438 +4491 +7048 +-7690 +9794 +-3648 +-9243 +8468 +-888 +5131 +5803 +5181 +-4488 +2838 +6123 +-4127 +5393 +-1058 +-5019 +5482 +-1644 +-1406 +4167 +-6054 +-155 +-3580 +-8227 +-9631 +704 +-3615 +-284 +-4994 +3860 +5142 +-6369 +-4698 +-6445 +-9020 +-3127 +186 +6920 +7068 +3075 +-4853 +7528 +7851 +-5766 +1819 +-9509 +-5896 +-5829 +-5626 +-1716 +-2111 +-1848 +-2519 +-1227 +-5020 +-4341 +434 +6909 +-2404 +5715 +-8285 +2762 +151 +8353 +-7967 +7528 +9757 +-2120 +-8336 +-6618 +3609 +5609 +4739 +5783 +1092 +4139 +-211 +8660 +-8260 +9968 +3074 +-66 +-5855 +-9543 +154 +1369 +-5402 +-1183 +9463 +7459 +-3639 +-4529 +2456 +-8821 +1100 +-6042 +2636 +9985 +-714 +4409 +3062 +-6539 +3322 +5574 +8923 +-7500 +9063 +-971 +7211 +-1552 +-5752 +217 +8422 +-813 +-1619 +-7644 +8035 +3579 +5519 +3438 +-6980 +3697 +2998 +-5264 +1692 +9463 +731 +-1201 +4814 +-9433 +8815 +-2193 +2342 +5361 +8706 +4756 +-4206 +3151 +-2154 +158 +-6297 +5098 +2596 +-5971 +-6022 +-4033 +-6505 +4215 +-2084 +-9244 +3685 +2870 +-8581 +-9705 +630 +-460 +8617 +-8661 +-6012 +-8182 +525 +-7080 +4121 +-929 +3843 +8213 +2782 +-7135 +3608 +-8020 +9669 +525 +-671 +6882 +-2451 +-874 +-2753 +-8927 +-6326 +7627 +874 +7600 +-3201 +6040 +3074 +9887 +-696 +8619 +-7572 +-2672 +9117 +-381 +9021 +-5527 +-4468 +-4852 +5659 +8231 +9406 +7719 +24 +-746 +2762 +5779 +-4182 +3575 +2144 +7075 +-1470 +8810 +-1713 +4941 +2715 +-8849 +-6433 +-1283 +-5234 +-4252 +3903 +395 +6954 +7212 +6303 +-2682 +-6408 +-1487 +5129 +7929 +-912 +-2535 +8617 +-4612 +9569 +5980 +-4882 +-4700 +-2165 +2503 +5926 +8096 +520 +-8631 +5331 +-6720 +-7500 +-5124 +4949 +9871 +5951 +-5865 +3723 +-2469 +-9501 +7242 +7181 +-4498 +-7219 +-2770 +8775 +-4587 +9502 +1799 +-510 +-6633 +4976 +6289 +7927 +-5784 +8553 +-546 +3076 +9512 +3322 +5405 +7238 +-1470 +8686 +-7579 +-6223 +4224 +3192 +-9147 +-3709 +1400 +1040 +-8729 +-1662 +-1341 +-4725 +7535 +9529 +-3059 +-4060 +-4997 +8366 +8419 +-3960 +-9478 +8638 +-912 +4428 +-6708 +145 +2715 +3815 +7850 +7155 +-5700 +-228 +-722 +3009 +-6292 +3302 +7611 +3630 +-4303 +7378 +7955 +7678 +-3374 +-5958 +1383 +-8669 +-191 +-123 +151 +-6779 +-4491 +7796 +6744 +6359 +2324 +-7146 +3822 +-1801 +-2399 +2664 +-7347 +-9203 +-677 +6693 +4070 +8855 +-3492 +3173 +-5022 +-5771 +949 +-8702 +6712 +7831 +3843 +-9105 +-3865 +-7998 +-1987 \ No newline at end of file diff --git a/day20_test.txt b/day20_test.txt new file mode 100644 index 0000000..5cbf3d9 --- /dev/null +++ b/day20_test.txt @@ -0,0 +1,7 @@ +1 +2 +-3 +3 +-2 +0 +4 \ No newline at end of file diff --git a/src/day20/main.rs b/src/day20/main.rs index f740f22..92ee689 100644 --- a/src/day20/main.rs +++ b/src/day20/main.rs @@ -1,3 +1,52 @@ +use base::read_file; + +fn do_encryption(key: &Vec<(usize, i64)>, data: &mut Vec<(usize, i64)>) { + let wrap_size = data.len() - 1; + for (index_to_find, enc_datum) in key { + let index = data.iter().position(|(org_index, _)| org_index == index_to_find).unwrap(); + if *enc_datum == 0 { + continue; + } + + let element = data.remove(index); + + if *enc_datum > 0 { + let enc_datum = *enc_datum as usize; + data.rotate_left((enc_datum % wrap_size) as usize); + } else { + let enc_datum = enc_datum.abs() as usize; + data.rotate_right((enc_datum % wrap_size) as usize); + } + + data.insert(index, element); + } +} + +fn calc_result(data: Vec<(usize, i64)>) -> i64 { + let zero_index = data.iter().position(|(_, value)| *value == 0).unwrap(); + println!("Found zero at {}", zero_index); + let wrap_size = data.len(); + let number_1 = data[(zero_index + 1000) % wrap_size].1; + let number_2 = data[(zero_index + 2000) % wrap_size].1; + let number_3 = data[(zero_index + 3000) % wrap_size].1; + + number_1 + number_2 + number_3 +} + fn main() { - println!("Not ready"); + let enc_data = read_file("day20.txt").iter().filter_map(|line| line.parse().ok()).enumerate().collect::>(); + + let mut result = enc_data.clone(); + do_encryption(&enc_data, &mut result); + + + println!("Task 1: {}", calc_result(result)); + + let enc_data = enc_data.iter().map(|(idx, value)| (*idx, value * 811589153)).collect::>(); + let mut result = enc_data.clone(); + for _ in 0..10 { + do_encryption(&enc_data, &mut result); + } + + println!("Task 2: {}", calc_result(result)); } \ No newline at end of file