adventofcode2022

My solutions for Advent of Code 2022
Log | Files | Refs

commit 48416e313124a05aa5c05addc4e8b5590aa6dbf4
parent 92b7b6e3c5be5f10679c5d519ec864ba80c50e70
Author: Lukas Henkel <lh@entf.net>
Date:   Tue, 20 Dec 2022 07:24:56 +0100

Day 20 task 1

Diffstat:
Madventofcode2022.asd | 6++++--
Ainput/day20.txt | 5000+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/day20.lisp | 40++++++++++++++++++++++++++++++++++++++++
At/day20.lisp | 16++++++++++++++++
4 files changed, 5060 insertions(+), 2 deletions(-)

diff --git a/adventofcode2022.asd b/adventofcode2022.asd @@ -30,7 +30,8 @@ (:file "day16") (:file "day17") (:file "day18") - (:file "day19"))) + (:file "day19") + (:file "day20"))) (defsystem "adventofcode2022/test" :description "My solutions to the advent of code 2022" @@ -59,4 +60,5 @@ (:file "day16") (:file "day17") (:file "day18") - (:file "day19"))) + (:file "day19") + (:file "day20"))) diff --git a/input/day20.txt b/input/day20.txt @@ -0,0 +1,5000 @@ +-2420 +-4714 +4824 +-8212 +3533 +6535 +-4665 +1908 +-4128 +9266 +-6213 +9394 +-7999 +6199 +-6905 +-6728 +1490 +-6630 +-3061 +3216 +1119 +-6439 +-5156 +6868 +-3201 +5921 +-7940 +-8521 +-9130 +-1430 +6557 +-559 +9032 +-7885 +6399 +197 +9833 +-3060 +9843 +-9442 +6451 +8625 +-3283 +1316 +2949 +-8375 +8381 +-1943 +-1723 +353 +6718 +-956 +-4416 +-1784 +-3423 +5647 +-5537 +4166 +-8864 +-4028 +3145 +2907 +-4352 +5353 +-5355 +7866 +1604 +1792 +-8875 +4922 +-5011 +9783 +-2975 +-8105 +8159 +426 +8870 +8197 +-5860 +-7868 +190 +5276 +855 +1355 +-1480 +5724 +6960 +0 +7272 +9108 +9466 +8453 +-7699 +-200 +5333 +-6095 +7949 +-5377 +-9978 +-6701 +3533 +4802 +-6515 +-4171 +-6794 +9980 +3907 +9224 +-2951 +4333 +-2174 +7460 +-9341 +2407 +-343 +-819 +-6043 +-8858 +5637 +9805 +3671 +8410 +7255 +3480 +3247 +5470 +-1766 +-8281 +1359 +950 +7805 +-1214 +-3231 +-1899 +9600 +-8505 +2050 +-5112 +-2172 +-2957 +-5994 +5136 +2363 +9804 +-1348 +-3861 +-1637 +4499 +7475 +5025 +1293 +4537 +6623 +-121 +4020 +4682 +1673 +7907 +-8224 +-2009 +7015 +3681 +1859 +-5342 +-6374 +-5069 +-3804 +-1323 +-716 +-2295 +8974 +-7675 +-5422 +5434 +3309 +-3989 +-6925 +6804 +-6338 +662 +4582 +1161 +-7723 +5690 +3447 +7147 +-3340 +7879 +9372 +-6896 +-5341 +-4214 +-9346 +4840 +-9351 +4665 +8471 +3604 +1859 +-8285 +7619 +1991 +9732 +-2302 +-9360 +2341 +6383 +-7666 +-3835 +2139 +-4541 +9518 +7118 +3583 +6140 +-3162 +-8703 +-6998 +-5443 +-225 +7811 +-6692 +4645 +9196 +-7459 +8692 +-2396 +-3507 +3439 +5316 +3196 +3415 +-94 +-9856 +-8721 +2776 +-5885 +474 +8093 +3513 +1912 +6877 +2836 +6079 +7510 +9743 +7189 +-773 +1831 +-8259 +8596 +-9276 +8176 +-4001 +6999 +9031 +2303 +-8372 +-2157 +707 +-6082 +-9346 +2311 +1998 +-8369 +-7166 +3660 +-7877 +-9967 +-8785 +-7226 +-9100 +9933 +-531 +-2997 +9617 +-9066 +-9998 +2312 +-8492 +1943 +-2021 +9296 +8447 +-6769 +-7116 +-4609 +-761 +-581 +2358 +-7033 +725 +7423 +-5339 +-6790 +4374 +5236 +7807 +-2391 +1336 +-1537 +302 +-5312 +2877 +-4823 +-799 +-5419 +5275 +-6203 +9743 +2433 +-8867 +-7049 +7053 +3848 +-5699 +6381 +-851 +-4872 +-7267 +-456 +-9026 +-8259 +9307 +-4962 +-1660 +5041 +6712 +-5555 +-3289 +6312 +6659 +-5754 +2129 +-7357 +-3431 +8799 +7882 +2139 +8795 +-4416 +-9481 +5455 +5906 +6426 +-9100 +-3118 +-2159 +-1725 +5182 +4592 +-2392 +-6269 +142 +-7049 +8717 +-7049 +4905 +-9221 +1557 +3420 +696 +-3776 +-1460 +-312 +-8827 +-2438 +-6240 +4186 +-3965 +-7807 +-3503 +4534 +-4937 +-3567 +-995 +5041 +9780 +5901 +-6861 +-6330 +-7306 +-819 +-6037 +-5660 +-9561 +-159 +7642 +-8164 +3425 +8543 +-8592 +375 +-3858 +7539 +9794 +-7136 +-2518 +203 +3048 +4551 +-4891 +4711 +8195 +8289 +-3220 +-1876 +3659 +-9516 +-3742 +-7165 +-5321 +-9350 +1490 +-3146 +-788 +-8555 +-266 +3425 +-3118 +-2513 +-8494 +-1042 +-2988 +-3073 +6069 +-4001 +-3603 +-9162 +-533 +-8919 +-3509 +1419 +7177 +8125 +8182 +2838 +-3235 +-8252 +867 +-4892 +-9508 +-6550 +8852 +8911 +-3902 +-4275 +-268 +-7014 +-7507 +-5238 +1727 +7624 +5827 +-2572 +8073 +-7164 +8293 +1986 +9213 +-7614 +4569 +3173 +-4557 +3863 +9332 +-8832 +5689 +9610 +-6250 +126 +-2055 +-5553 +73 +-1694 +-6749 +-5838 +-2656 +-4651 +9466 +-4951 +552 +6744 +6752 +-8265 +-7318 +-6614 +9442 +-3258 +-9580 +-7777 +-6099 +5994 +4905 +-9302 +4806 +-7194 +2004 +6725 +1887 +-1529 +-3870 +-7209 +-4468 +-3070 +9326 +6537 +-9099 +7655 +7419 +4635 +-2058 +-3106 +9476 +8433 +6866 +-9351 +-5147 +-8464 +-517 +-8642 +-9332 +510 +-6584 +6165 +5780 +6269 +-4340 +6333 +8799 +-6088 +3171 +-9231 +6678 +8165 +6170 +-6043 +2196 +-2427 +7023 +7811 +6734 +2286 +5051 +-1835 +3851 +3321 +4374 +-6109 +498 +1621 +5745 +8955 +-1531 +-4488 +3117 +-6657 +7024 +1097 +-3437 +-7645 +7295 +-4275 +5578 +-8134 +-450 +9299 +3397 +-3603 +2292 +5938 +-489 +-2775 +-4804 +5737 +6130 +-4228 +7552 +-5312 +-1924 +9191 +1340 +7766 +6427 +7506 +5487 +4211 +-6470 +-5650 +-7819 +-8854 +259 +-1353 +-868 +-6042 +701 +-3848 +4289 +5135 +9275 +6904 +259 +-1334 +-4938 +-4171 +7760 +-3374 +9215 +-3564 +5395 +-2040 +6867 +-9997 +5468 +-3255 +7693 +8917 +-9592 +4151 +6228 +-6569 +674 +-8912 +-7027 +-302 +713 +-8126 +6781 +-1207 +275 +-3060 +-559 +2945 +-4925 +-7666 +1123 +-2096 +3301 +-4882 +4151 +-2495 +6752 +-6998 +-3854 +-2368 +-5319 +-2058 +-6439 +-5345 +-4105 +2488 +7897 +840 +9228 +-7479 +-2651 +-9062 +-6751 +3983 +-5720 +-2592 +7314 +-5313 +2837 +466 +3571 +-9459 +8585 +-7582 +5584 +7195 +9469 +-8463 +260 +-3669 +3370 +-1792 +5404 +-6948 +3544 +1017 +5461 +9562 +2120 +3495 +417 +4502 +-5785 +4211 +188 +-7167 +-1960 +4804 +9987 +4939 +-6813 +7295 +-2333 +4435 +-3773 +-5613 +5917 +-3075 +99 +5142 +-7204 +-5185 +7314 +7214 +7154 +-4337 +-2005 +-7498 +-6109 +2031 +-1463 +-9900 +-5345 +-2667 +-8974 +-7589 +373 +2493 +3212 +7667 +3216 +-8473 +9214 +469 +2630 +-5387 +-9604 +-9998 +-2157 +-1861 +5546 +4684 +-3784 +7803 +-7058 +-8176 +8148 +-6824 +-7075 +-7463 +-7651 +3049 +8727 +6771 +2094 +6867 +-2612 +-9957 +-5231 +9301 +3011 +-4769 +1628 +-205 +3404 +6584 +7613 +9272 +6729 +4797 +-2747 +8151 +7350 +-6303 +4650 +5101 +-4841 +-9085 +535 +4606 +-6721 +-9350 +257 +-2153 +-7439 +892 +-2833 +5755 +-6113 +4840 +-2827 +5287 +-8806 +5212 +-3852 +9146 +-6955 +6125 +-5216 +-1156 +8084 +-8449 +-2446 +6170 +7465 +4410 +2442 +4686 +-2871 +-2232 +186 +7259 +-3608 +-1378 +358 +7195 +-718 +9382 +5190 +-1214 +5782 +-9359 +-5011 +2425 +-4924 +-5614 +-3265 +5 +6795 +9685 +7512 +6078 +1551 +3473 +-3682 +3210 +-6004 +-3598 +4003 +6313 +4147 +-8653 +-5052 +-4644 +-8552 +1557 +566 +-5783 +9288 +5223 +3463 +4544 +7900 +8146 +6696 +4567 +-3178 +-7918 +1525 +966 +-6148 +7072 +3671 +-526 +9961 +-5165 +-8054 +8810 +8349 +3137 +-1875 +-7258 +5856 +7747 +-5851 +-3804 +4743 +-9283 +-2354 +-7086 +-5732 +9010 +-5866 +-6105 +-4888 +-1430 +1777 +-7719 +3835 +-44 +7649 +8699 +-8859 +5761 +8912 +9435 +-6241 +-6737 +-1529 +752 +1825 +-9876 +6257 +1543 +8098 +-1723 +5280 +1409 +-4174 +-5573 +4534 +-1695 +2848 +6357 +9367 +4100 +-3247 +1401 +-4275 +1554 +-9451 +5856 +3469 +-8739 +1720 +4668 +-3793 +2341 +1914 +3106 +-4166 +-9046 +-7438 +-7942 +-7944 +1238 +-377 +-1116 +-5634 +-8699 +-2654 +3149 +-8212 +-8161 +-5694 +1378 +-9162 +-7441 +1877 +2619 +-8289 +5287 +-6739 +4431 +424 +6041 +-9557 +5259 +-6466 +-4651 +-5120 +-2293 +3643 +-3529 +-117 +-4891 +5640 +4768 +-8316 +1896 +-755 +989 +2407 +-410 +-2801 +-2756 +4967 +1409 +-1017 +-140 +643 +-9100 +-7055 +5929 +-6162 +1037 +-1664 +692 +5994 +-8816 +1604 +3227 +-9557 +566 +-8323 +4821 +-7722 +-6646 +8721 +-273 +-6563 +-7815 +-1825 +8457 +-2923 +3381 +58 +4721 +-1142 +-8783 +3430 +8250 +7166 +-4940 +6330 +2082 +9786 +-6756 +-6335 +-2943 +-1035 +4988 +3496 +-7027 +-3248 +-2009 +9315 +3753 +3335 +-7692 +-201 +213 +-5526 +7640 +-1950 +-8038 +3768 +-729 +1081 +-5787 +4343 +-8397 +7306 +-2363 +2744 +4816 +-5646 +-1348 +5421 +-4996 +-873 +2449 +-1426 +-5305 +7487 +-4790 +6059 +8304 +-4028 +-4598 +8295 +-9099 +5325 +1690 +8417 +-9827 +-5931 +-1773 +1175 +-4391 +-6948 +-8676 +5650 +-8681 +9045 +-7817 +-9869 +6395 +1032 +-2586 +-6297 +5661 +-2161 +6774 +-1940 +-7600 +924 +-3116 +4487 +4645 +1632 +9619 +6661 +706 +8437 +-7703 +6581 +-408 +2152 +-2487 +-1495 +7948 +1963 +1662 +-6360 +-1352 +-7139 +9215 +-2329 +-8079 +-1017 +-5526 +7450 +4459 +-2838 +1258 +9837 +-3608 +1207 +-7510 +4355 +9942 +9130 +-25 +2913 +-4275 +1989 +-6863 +-2385 +-2143 +7506 +2619 +-9969 +7662 +-8481 +7662 +142 +827 +9072 +302 +2528 +7339 +-355 +1106 +-7007 +2064 +-4762 +-3823 +9464 +-2635 +-6697 +-6940 +3120 +2517 +3907 +5054 +5560 +989 +-11 +6655 +-5546 +-5717 +-4137 +3569 +-63 +5706 +481 +-2266 +-7286 +-3698 +1238 +1254 +3712 +7613 +1175 +-6321 +-2107 +-9450 +9147 +6078 +2712 +9248 +-8748 +899 +-1516 +8974 +-6560 +-1762 +-7747 +-7907 +-2536 +6665 +2427 +2029 +-2965 +7822 +741 +-5925 +4095 +725 +-5448 +4427 +-5456 +4434 +-8865 +-7703 +8917 +-1377 +-3171 +375 +-4985 +6074 +-2061 +-7439 +5372 +-6443 +298 +7347 +2877 +940 +8172 +6071 +4986 +-6361 +-9118 +1654 +9501 +-1792 +-2521 +-8962 +-1808 +8213 +-2679 +1329 +6768 +-4582 +-2285 +5690 +-1982 +9202 +6365 +4873 +5441 +-7905 +4372 +-8468 +-6166 +-613 +2619 +7216 +-912 +-8729 +-526 +-39 +5637 +6012 +-9538 +1025 +-9589 +8033 +1173 +5659 +4940 +-5521 +-3541 +7608 +5025 +-884 +-3166 +-5867 +-2708 +-4801 +-3120 +-7052 +-3568 +2432 +1179 +-2915 +-883 +-8084 +-607 +-2325 +-2345 +6016 +-5066 +-2804 +9959 +-7440 +-3307 +3467 +-6347 +-7957 +8588 +-4654 +2670 +3498 +7739 +4838 +-4306 +7647 +-6023 +-6338 +703 +-3477 +-6947 +9151 +7358 +-7075 +5902 +8447 +4551 +367 +-687 +6764 +5491 +9568 +-2635 +-520 +-6250 +1438 +-5608 +654 +-1302 +1173 +5548 +5506 +8535 +4618 +2562 +-1466 +-4202 +5917 +7844 +-9473 +-7030 +-1092 +-8035 +6426 +-5890 +601 +547 +1490 +5737 +1123 +-1669 +-3748 +-2203 +-7152 +-2951 +-803 +1128 +8480 +-7669 +6675 +7432 +-9423 +-3169 +-2438 +9603 +-7040 +8159 +3216 +3964 +-2009 +6074 +6492 +-1954 +3193 +2399 +-9921 +7845 +9130 +-8997 +6960 +6890 +3495 +-1514 +5637 +9641 +-6367 +3098 +-7793 +8710 +3987 +-9055 +9599 +1106 +-8017 +9397 +2799 +-9198 +3213 +1207 +-5069 +2126 +-3641 +-687 +7709 +-6678 +-4395 +-6166 +-2751 +-7752 +-2951 +-8193 +-2121 +4224 +-5198 +7714 +2562 +-9972 +6165 +1377 +9610 +-2376 +1209 +5421 +4966 +5691 +-451 +6436 +9481 +3134 +599 +5137 +-4989 +-6525 +2209 +526 +-2158 +3430 +-8577 +7529 +-8945 +2190 +8593 +-1571 +6877 +-9011 +-1895 +875 +-6330 +-8361 +3632 +7650 +7814 +469 +-8425 +2772 +1525 +-8017 +-1010 +-5997 +4679 +-3730 +-3522 +989 +288 +-8393 +469 +7151 +-8854 +-9580 +9675 +-5138 +-431 +-4297 +5659 +-4128 +454 +1278 +8570 +6600 +3891 +7845 +-7664 +7436 +6771 +4254 +5589 +3502 +2473 +-8832 +8479 +5054 +4559 +9015 +-7295 +-8029 +-4901 +9325 +-7377 +7610 +4855 +-1801 +8692 +2762 +-2241 +-9321 +-3631 +-5477 +388 +-8042 +2241 +-8481 +9164 +-7058 +-9781 +1557 +274 +4114 +-464 +253 +413 +-8502 +-6361 +9877 +-520 +6579 +8450 +-1010 +8746 +7359 +3117 +-2252 +-6367 +-6793 +5819 +8783 +1378 +-4980 +5711 +1766 +-8496 +-9592 +9529 +811 +-4417 +575 +-5706 +1219 +-3252 +3540 +7779 +-9950 +5730 +-5081 +-827 +-3131 +5143 +-3511 +-3148 +7809 +-6635 +-7519 +-443 +-6879 +5456 +-4762 +8969 +-8022 +-1579 +1332 +-6238 +5343 +9267 +884 +-5413 +-1405 +-9824 +-9469 +4669 +4641 +-1835 +8176 +-3219 +-444 +764 +4020 +-9176 +652 +-7680 +5135 +-6162 +238 +-1687 +8868 +3356 +5041 +-4370 +-4888 +-7530 +-2979 +5854 +2303 +740 +2598 +5440 +-7972 +-9407 +-481 +-859 +-9802 +-6618 +1782 +9951 +741 +5936 +5935 +-5729 +6918 +6426 +-2434 +-8261 +1632 +-2738 +-895 +4665 +-3398 +2064 +-8468 +-4340 +-7408 +-6695 +-7905 +-3237 +-2711 +5953 +-1622 +-7743 +6305 +5903 +9131 +7063 +-7779 +-5994 +-2412 +-4645 +-1142 +3971 +-3698 +-4662 +-8876 +-9911 +-5774 +-6824 +-2838 +-1828 +-5180 +8262 +8992 +5771 +844 +6300 +5806 +2319 +8699 +-607 +-4202 +-8297 +3709 +-4807 +-1259 +3381 +-7750 +-7337 +1238 +5445 +-8143 +-7654 +8721 +7461 +-8802 +-6736 +-542 +-8469 +3916 +9300 +8546 +-845 +-140 +-1247 +2093 +-4898 +7185 +4028 +-8017 +172 +-4417 +9599 +-6672 +-8531 +9216 +6383 +-242 +4401 +-2534 +-9474 +7412 +-9286 +9906 +-3577 +-2161 +-3412 +-3959 +-4924 +-9406 +-4403 +8675 +3473 +7168 +-2838 +-6711 +3090 +1888 +4840 +9978 +3324 +5462 +8413 +-2392 +4431 +-4673 +6583 +-1139 +2298 +-5656 +1409 +-7509 +5182 +-8645 +997 +-2897 +2231 +8446 +6399 +5956 +-3964 +457 +823 +1637 +5051 +6121 +-7944 +-1774 +-8179 +6676 +-9145 +2167 +-5360 +7906 +2155 +-2756 +6110 +-3209 +-5415 +6110 +5427 +-7409 +1998 +9459 +3736 +-9386 +-7560 +-3507 +6383 +7675 +-1493 +2433 +-1996 +-4304 +4068 +-5417 +2315 +-1800 +9062 +9658 +-2624 +2351 +-865 +-6486 +-3252 +-5861 +-5657 +6600 +2990 +-8208 +-6113 +6690 +-7284 +5956 +438 +5050 +-5104 +8873 +1413 +-9351 +-2157 +1017 +-694 +6681 +-2679 +-5838 +8289 +-6247 +6142 +8 +-2871 +-2857 +-6320 +253 +5698 +9146 +-3266 +-607 +7113 +9173 +-5835 +4964 +8192 +-331 +-7167 +-6913 +-7553 +-9664 +-3173 +4685 +811 +1636 +4695 +6141 +-8144 +405 +3419 +-6464 +-1283 +-5925 +2629 +3396 +6584 +7077 +-289 +-8444 +5136 +6219 +-2153 +-3457 +1305 +7309 +-4985 +-4391 +5028 +3090 +-4350 +8955 +391 +9566 +-8505 +577 +2399 +-4030 +6678 +-5985 +2191 +5775 +4 +-4285 +-5171 +6296 +7226 +-5433 +-7959 +-1657 +5812 +-1525 +7127 +-9601 +-544 +-8921 +-5809 +891 +3115 +1943 +-1955 +5025 +8516 +-1322 +-7026 +-3622 +-783 +-3989 +-6485 +-6503 +-6669 +9268 +5642 +-6704 +9279 +1770 +8950 +4807 +-6530 +-9627 +-3803 +5009 +-3463 +-6004 +9490 +6175 +6829 +-6109 +4598 +-2083 +7251 +-2642 +2433 +9594 +1869 +-8684 +7850 +5287 +-3995 +2907 +-8858 +5107 +2339 +3129 +3956 +-6215 +6774 +-2271 +4487 +6014 +-1958 +-8844 +-3300 +5907 +1525 +7675 +1350 +-1080 +87 +4744 +1123 +6604 +-8642 +1929 +4499 +-1575 +-4352 +9268 +-2089 +454 +1121 +7683 +7877 +-2477 +-2416 +2906 +7739 +-5794 +-2159 +-4444 +-7226 +-2025 +-3868 +6492 +-8340 +1731 +211 +4134 +-5011 +-4602 +-755 +9702 +-4891 +5830 +3467 +4934 +-5016 +-6877 +9288 +1490 +1097 +-4427 +2913 +1885 +-8085 +6383 +-5157 +8397 +9603 +7801 +-2385 +-6387 +-5210 +-3537 +-312 +-7777 +1988 +1766 +-7771 +-2203 +-2401 +3053 +-3507 +5901 +-7204 +-844 +2019 +-1394 +6363 +4319 +-1448 +4042 +-6376 +2520 +637 +-1125 +5108 +-8398 +2767 +882 +-527 +-4770 +5613 +-2965 +-1456 +6632 +-868 +-2534 +3467 +3536 +-599 +-4758 +8681 +-3388 +4540 +5689 +-882 +-7344 +8911 +-7180 +-6162 +-9856 +-7586 +-3279 +9202 +5249 +-4548 +3485 +4534 +-4740 +-4714 +774 +-8141 +9603 +-6394 +-1689 +4204 +7145 +7949 +4002 +-355 +-4166 +-4174 +-5337 +-5853 +-4232 +-8156 +-6027 +-6657 +-2850 +4256 +-4250 +-1099 +1267 +2004 +5025 +-1963 +-4248 +8870 +-1301 +6363 +9783 +-4952 +5259 +7098 +-1257 +688 +8644 +-7521 +577 +1222 +1017 +-277 +7385 +-1723 +-5647 +7465 +-993 +-3025 +-4378 +9113 +-8536 +1854 +8710 +-8778 +-200 +9438 +6342 +-2080 +8900 +8817 +-8773 +-9528 +-9933 +7016 +-142 +2229 +-3138 +-3358 +-9622 +-6967 +2879 +4599 +-5809 +8868 +-1342 +-5521 +-7403 +-2532 +1912 +-6922 +8532 +4852 +6751 +-1571 +3652 +-531 +1067 +-9949 +9754 +-2671 +3377 +7560 +-5157 +-600 +-9899 +-8252 +-8164 +-6020 +-9095 +7349 +-1442 +4838 +1890 +5535 +-1383 +3153 +3693 +-9592 +-6848 +6958 +-7149 +1230 +-9329 +6175 +7580 +4729 +-2497 +499 +-6258 +5183 +1267 +-5745 +8601 +-9811 +2877 +-3289 +-3204 +6040 +2037 +3499 +-6439 +4550 +-5907 +6523 +-9421 +7897 +7078 +4561 +-1232 +4315 +-677 +-8808 +5505 +8006 +-3292 +-2573 +89 +-5129 +-6873 +3485 +4001 +9194 +-3520 +3615 +2301 +6492 +7572 +6742 +2404 +3328 +333 +-3457 +4042 +1491 +-6178 +-8164 +-2923 +-581 +6524 +4994 +-4083 +-522 +8241 +9844 +811 +8900 +-2271 +1435 +855 +6572 +-1363 +6748 +-9368 +-7052 +-459 +1350 +-2850 +-845 +-9067 +3750 +-1260 +-5845 +3733 +3151 +-7985 +4390 +4337 +-7371 +335 +4373 +9006 +3645 +483 +-7384 +5459 +-3201 +-3848 +-9278 +-9780 +9933 +-8289 +-2576 +4655 +466 +3962 +6748 +-1835 +-5447 +-9526 +2337 +-4008 +-1726 +1693 +538 +-8281 +5051 +-3186 +4840 +9397 +-6667 +2703 +-2828 +8578 +-2392 +1220 +-3846 +3874 +3398 +-6192 +5638 +8801 +-1296 +5494 +3579 +7358 +-4263 +-2392 +2877 +7148 +8084 +-9256 +-5012 +1821 +-5926 +98 +-2026 +2718 +977 +-1437 +2505 +3291 +-4093 +469 +-4708 +-2691 +-4165 +3310 +4343 +4964 +1705 +687 +-1647 +5698 +3268 +-4008 +91 +7741 +3420 +757 +9451 +4982 +7178 +9640 +-6854 +-3482 +-3598 +9273 +2037 +-8067 +9447 +-2434 +-7557 +-4951 +-8728 +-9827 +-2241 +4172 +1267 +-6668 +-8525 +-7061 +-2389 +1986 +-811 +-925 +8800 +-892 +-5178 +6078 +-865 +9989 +-1825 +-906 +-2686 +7259 +2675 +-7437 +9312 +8870 +2978 +1238 +2307 +-2670 +5494 +2046 +-289 +-7464 +-6568 +-9466 +4409 +-1508 +713 +2089 +-5054 +6092 +757 +1091 +-526 +-2881 +2492 +4035 +961 +-2266 +-8126 +-140 +4189 +-6837 +-5360 +4382 +-8903 +-2841 +-7853 +-5890 +2853 +-4762 +-9983 +-9856 +9610 +2139 +3754 +5325 +6846 +-1304 +3762 +1753 +8437 +-785 +-6645 +-5435 +-9443 +9421 +2548 +-4912 +-6439 +857 +-3676 +-8393 +7117 +6718 +9510 +-7338 +-8630 +-7696 +-1268 +-2801 +404 +5805 +-2996 +7383 +-1820 +9186 +-3003 +-2718 +3282 +-3061 +-3756 +7262 +7230 +-9142 +7407 +-4836 +2972 +459 +8070 +8879 +-6255 +7066 +-2070 +-3423 +-1984 +-4483 +2590 +-2396 +3447 +3764 +7683 +-8616 +6209 +2006 +-7838 +6365 +-1921 +-873 +4153 +3287 +-2293 +7399 +-5107 +-7240 +9236 +-9677 +2591 +3606 +-7375 +8216 +1265 +2488 +-6148 +2448 +-7055 +8434 +-4896 +-5145 +6960 +1554 +-9853 +1821 +6363 +9125 +-6727 +5250 +2160 +-8151 +-8269 +1635 +-3169 +-5963 +6813 +4635 +-6728 +3496 +3173 +6897 +5374 +7610 +-4285 +1574 +2457 +-2910 +4157 +-6863 +5969 +-3424 +1281 +-568 +9554 +-5165 +-7755 +9634 +3137 +-9256 +-3286 +1433 +3962 +3228 +8063 +477 +701 +-8369 +3360 +9816 +4410 +-5555 +393 +-4865 +-886 +5487 +706 +-7408 +-7877 +9156 +-5802 +6078 +-1765 +713 +9103 +479 +-6645 +5969 +1557 +-6446 +-9100 +9638 +-7907 +-7843 +7882 +1720 +-9539 +6904 +2756 +4 +170 +6600 +-5614 +-901 +-7614 +-9095 +-8135 +-8281 +-2217 +-8724 +1930 +508 +-3164 +894 +-1204 +9125 +-6825 +4744 +-7585 +3721 +-8398 +5959 +7839 +4100 +6978 +-412 +4097 +8433 +1103 +3129 +-3966 +8064 +-5557 +3577 +1247 +-2817 +-5607 +8944 +6060 +458 +-1045 +-8544 +-8928 +4983 +-2401 +9653 +-6914 +-8078 +-8549 +9236 +4166 +5421 +637 +-6985 +-9423 +-2276 +-1381 +-1314 +-6842 +2061 +3696 +-489 +-1551 +2298 +5575 +3863 +-4734 +-995 +-9112 +-2585 +4928 +2702 +-4158 +-9487 +8427 +-7530 +8261 +5173 +-6445 +-2571 +-5294 +-2242 +-475 +3247 +-3608 +5506 +-1296 +7254 +7423 +2004 +1482 +-4679 +9049 +2038 +-8758 +-3733 +3 +2940 +-4834 +7297 +-3760 +4526 +4607 +7997 +-406 +666 +-7054 +3088 +1308 +-8554 +211 +8825 +1683 +3171 +-1508 +-1092 +-266 +-2651 +6783 +-9951 +4582 +5610 +-4673 +7882 +7969 +-1214 +-5865 +-284 +-1360 +-6126 +1393 +7261 +-650 +776 +7178 +-3574 +-2782 +4089 +5983 +5959 +-4913 +-1955 +7259 +-5414 +-7415 +1606 +-8067 +-3210 +4831 +-7225 +-5060 +4861 +-5527 +-3306 +9933 +7473 +-829 +6331 +8219 +-2747 +-6022 +-7983 +4607 +-3315 +-885 +4315 +6704 +4953 +1488 +-3614 +-9128 +288 +3381 +-7960 +5439 +8911 +4460 +2410 +-5165 +-996 +3533 +-760 +3011 +482 +-4280 +7845 +-8858 +-4141 +-9080 +2388 +-1367 +3206 +9365 +7346 +-8150 +-2330 +1214 +9556 +-4465 +-6913 +3723 +5041 +-4618 +-3564 +9211 +-4749 +-4557 +-7118 +3236 +4998 +7667 +5051 +-3698 +9579 +-6488 +5515 +6677 +3227 +1335 +-817 +-8837 +-5189 +4279 +-552 +-4774 +1853 +-4042 +-7312 +-6530 +4287 +-2586 +6623 +-2037 +1731 +-5237 +-3958 +4147 +-4618 +-6192 +8469 +-6776 +6389 +-2686 +-5330 +-2667 +-5031 +-5336 +5513 +704 +4041 +-6646 +6158 +1989 +-3437 +5179 +-9651 +-2060 +-186 +-1539 +173 +318 +2449 +5002 +459 +1454 +292 +-7501 +7076 +1435 +4709 +-160 +-2154 +-3734 +2042 +1753 +-8285 +-7328 +-6735 +-1011 +2033 +8546 +2493 +612 +-8572 +4042 +7866 +-7397 +-8865 +1112 +-9729 +1428 +3037 +1028 +9479 +-3176 +4581 +8469 +-5952 +8642 +-8592 +-3089 +-9146 +755 +6289 +-9192 +-6529 +9466 +-6948 +-7654 +86 +-1410 +-9615 +-8042 +4021 +8642 +-9951 +6323 +2952 +-1290 +-6515 +-2421 +-8987 +-5273 +3583 +2321 +4624 +6427 +-8366 +-716 +8157 +-8446 +-4155 +-8544 +662 +9024 +3972 +6945 +7644 +-6824 +-8699 +7642 +8176 +1879 +1988 +8558 +-9538 +6331 +-9601 +-9856 +-8473 +4483 +-8535 +-8854 +7461 +-3109 +-7902 +2716 +4821 +3117 +7319 +-8872 +7967 +1043 +-1664 +6604 +-7026 +-7373 +-6548 +5812 +-3457 +5659 +-6056 +5081 +1929 +-2923 +-5184 +-7086 +4089 +-636 +9088 +-7269 +-5355 +-6299 +-5157 +5405 +9930 +7262 +-4654 +-5595 +-9438 +-1187 +3671 +-7660 +1230 +-5185 +-5165 +-3088 +5175 +5554 +7212 +4958 +-6867 +-8621 +-9099 +-1683 +-4770 +-5795 +-5379 +-6998 +-3425 +-1586 +-9100 +2404 +-8227 +-2039 +-229 +-4417 +-4516 +-531 +-9877 +8414 +-7609 +6896 +2703 +-4831 +-6006 +-9026 +-2291 +9599 +-7047 +6256 +5519 +6352 +-2039 +5041 +-5783 +3150 +1356 +-7021 +-3850 +-9541 +-6782 +-4272 +9504 +-3123 +-3947 +-520 +-1368 +-5540 +3205 +7629 +-6918 +2376 +9414 +-6346 +6016 +150 +-2137 +-2445 +4390 +-2028 +9125 +6249 +539 +-2184 +-6430 +-785 +4187 +-9561 +9071 +3038 +-2061 +-1907 +8173 +571 +5984 +-844 +7264 +-6047 +-1455 +6639 +-6584 +-755 +7011 +7216 +-1279 +-7044 +7063 +-2706 +-2883 +-9421 +-7521 +4099 +1673 +-4525 +7188 +-2028 +-6356 +-7666 +2936 +4821 +-6027 +6142 +7892 +1554 +-305 +7803 +5837 +2006 +8547 +4909 +7028 +-8957 +-9272 +-4113 +5391 +-8350 +4647 +3445 +7270 +1221 +-4082 +5575 +9497 +1340 +2024 +-4815 +7429 +-8793 +-1916 +-2009 +3671 +-3383 +-4996 +1632 +-1131 +1704 +1793 +-8816 +4166 +-7067 +4840 +7148 +-9288 +7650 +-1916 +-5415 +7840 +-3428 +-7010 +-4567 +-3458 +2411 +9965 +7510 +3381 +-8897 +9447 +6012 +8707 +1005 +-5176 +4679 +-4517 +-5147 +9218 +-2477 +-5253 +2048 +6927 +-9803 +-9256 +-1348 +2307 +-5120 +-7955 +9574 +6677 +-7014 +-2305 +3677 +5747 +-8874 +5425 +5495 +4293 +-6852 +-6648 +-9276 +-3726 +779 +2210 +4459 +3467 +5456 +5630 +6853 +7465 +3374 +-9967 +-8350 +-5872 +-1994 +-6172 +4255 +5885 +8163 +-7419 +5706 +8532 +1234 +6652 +-5183 +-6042 +-92 +634 +-6 +4812 +7791 +-1269 +7845 +6068 +6259 +-3118 +5554 +-6776 +-8120 +6620 +-4602 +3670 +747 +1804 +-3238 +5338 +7785 +-225 +-4306 +8854 +940 +8424 +-7305 +-4852 +-1133 +-6879 +-6082 +-4351 +-5787 +5489 +7682 +-1363 +5627 +-8304 +-8837 +-4824 +155 +-5707 +9236 +7436 +8006 +1945 +-2642 +8985 +9926 +9705 +1664 +9332 +-5928 +7866 +3096 +5506 +-3931 +8452 +-9596 +-4143 +-9176 +-5606 +8248 +-9731 +2047 +-5846 +7436 +-9313 +3773 +664 +3115 +662 +-1110 +8173 +-5737 +-7301 +-2645 +3026 +-5178 +9803 +-552 +-85 +4669 +7089 +-3990 +9883 +7704 +9007 +-6921 +-8547 +2907 +576 +924 +-3463 +-6606 +6514 +4056 +9023 +-7339 +-5168 +-6175 +-5896 +6185 +483 +-9580 +6276 +2655 +-5355 +1275 +-1502 +-3819 +1027 +-2329 +-9194 +-7240 +9609 +7060 +-5662 +4357 +-6852 +6299 +-3003 +2613 +-5143 +-1421 +9863 +-9342 +-7511 +-9422 +-4469 +-2741 +-1080 +7092 +1011 +-3740 +-3011 +7629 +-4176 +6918 +-2346 +7886 +-5780 +2341 +-8162 +6267 +-2477 +-8676 +6199 +9989 +-8755 +-1114 +-8719 +6557 +2695 +-3166 +9856 +1601 +7255 +4292 +7846 +994 +7222 +76 +8872 +-2023 +6206 +-7187 +-5302 +-787 +-9711 +-4159 +-6985 +-9367 +6994 +5106 +9402 +1548 +7324 +7115 +-8812 +-7962 +-3238 +-2915 +-8225 +-1939 +-5183 +7258 +-1916 +228 +-5069 +2442 +-6088 +-925 +4913 +-451 +7462 +-5319 +2032 +8032 +-391 +9384 +-2067 +8532 +9841 +-3710 +-6220 +-3594 +-5161 +-8286 +7847 +-5802 +-1721 +-7463 +-8257 +-8385 +4502 +5198 +-2330 +5566 +-9729 +-3909 +-5498 +-3550 +-3028 +-7041 +-4702 +-9023 +7945 +3110 +5571 +7948 +-2384 +6514 +5828 +2702 +9186 +5316 +9615 +4920 +7589 +4187 +8907 +-2337 +4868 +-7469 +-5888 +-9837 +1249 +-2242 +2186 +-4762 +3200 +-9066 +3228 +6155 +-1707 +1362 +-6817 +5173 +-6173 +576 +3245 +3241 +4648 +1941 +4583 +-3227 +-4083 +-3852 +7182 +8083 +8165 +-9528 +5750 +357 +-1138 +2492 +-6894 +98 +9961 +-5958 +-2346 +-4951 +-310 +3434 +2728 +5101 +-1078 +4708 +8398 +6515 +-8398 +9390 +-7599 +-3462 +9688 +-1069 +111 +-1314 +-1984 +-2736 +9466 +-4643 +5483 +-8084 +-3868 +-9855 +7628 +-6343 +-5555 +2731 +7692 +4256 +2315 +-603 +-6727 +-8260 +5944 +-4888 +-6987 +5287 +5325 +-9623 +-7000 +4099 +1598 +-2358 +-583 +-2355 +-8886 +8697 +-5072 +-3965 +9371 +1887 +2850 +109 +-2650 +7414 +9685 +9234 +6736 +-4861 +9062 +8561 +891 +678 +-1258 +-6606 +-8620 +4374 +577 +1438 +2698 +7053 +-5896 +8953 +-8122 +-3603 +8950 +-5961 +9367 +3703 +1683 +8073 +2905 +5403 +-7370 +9247 +3140 +-5661 +1693 +6036 +9887 +4844 +3390 +7035 +-4449 +-1182 +4326 +9166 +-2923 +-8366 +8554 +7616 +-7510 +1080 +6353 +7308 +-7453 +6888 +78 +-7573 +6850 +4828 +4046 +-7406 +9172 +-2555 +-7955 +2471 +566 +7925 +-3324 +-1416 +-1099 +-6330 +-3258 +827 +-1621 +9824 +-4605 +-9848 +4006 +6623 +8170 +7706 +-2957 +7629 +666 +8016 +-6798 +-1338 +-6749 +6962 +1761 +-7703 +-496 +-6686 +-7387 +-6737 +-225 +-1509 +7251 +763 +961 +-5228 +-6721 +-884 +9877 +-9638 +-8830 +-8817 +-822 +7554 +3659 +-6816 +5103 +-6148 +2697 +-8676 +4569 +1831 +-9381 +1473 +5247 +5613 +-7632 +-6464 +1548 +2795 +6276 +-3586 +8897 +4070 +3274 +-5091 +-3759 +9510 +4829 +9658 +9965 +-1508 +3577 +-7070 +6569 +-1669 +8723 +8056 +6379 +6665 +-3762 +6350 +-8425 +3233 +5212 +-5016 +-5780 +-3842 +-5312 +9438 +8766 +-1647 +5403 +1556 +-568 +-4126 +-2975 +-6825 +4448 +4723 +2842 +-4702 +-2137 +-6703 +1606 +8090 +3328 +2367 +3816 +-4149 +4228 +-8024 +-8739 +7387 +-7675 +-8406 +-8531 +-8108 +9194 +2582 +-7582 +1498 +4340 +-8108 +9980 +840 +4315 +5461 +9421 +-9046 +1322 +1632 +-7139 +-3462 +-2271 +-8252 +7282 +3641 +-4988 +9920 +-7960 +-3762 +6742 +-791 +-6922 +9411 +-1391 +-9768 +-4574 +4515 +2021 +5041 +9374 +-2362 +4199 +8986 +5036 +3801 +-7987 +-6106 +1546 +-6313 +546 +-2460 +9824 +-7750 +-7539 +-4370 +-9010 +-9194 +5246 +-1113 +-9274 +-2392 +-379 +6133 +-8425 +5343 +9979 +9275 +333 +6465 +-6004 +-6122 +5627 +-6525 +8490 +-9795 +1051 +-5177 +5513 +7665 +2008 +5135 +8117 +9421 +-1542 +-8611 +3473 +-3107 +5421 +-9856 +1778 +-4513 +9805 +8469 +5658 +-4257 +8165 +6383 +3388 +-3374 +-3979 +7822 +-6721 +-8868 +-9009 +1764 +1704 +1693 +-1875 +-8079 +-239 +-1025 +7945 +5182 +-5101 +2006 +-264 +-5706 +5732 +7026 +4668 +2738 +7346 +-9450 +6423 +-865 +5820 +8907 +643 +8408 +4302 +-9477 +-1373 +2720 +6234 +-7354 +-2677 +7061 +8692 +-15 +-7075 +6877 +3537 +-8068 +-8449 +-1142 +-7983 +7210 +-7931 +6751 +5101 +-3467 +5233 +-844 +-5610 +-9910 +-9796 +3595 +-4354 +725 +2745 +8546 +-9859 +6147 +9023 +7512 +8481 +6228 +7350 +-352 +-289 +2008 +6533 +-2123 +6566 +-9110 +8710 +8810 +7195 +6994 +9576 +1061 +-889 +6568 +-81 +1623 +6452 +-33 +1673 +5117 +-5942 +7098 +-2801 +-1214 +-5869 +6206 +-9456 +4038 +6142 +5410 +-4924 +877 +-9663 +-8069 +6813 +-9278 +-6519 +7112 +2241 +3375 +-2094 +8615 +8086 +9408 +9826 +-134 +-6704 +8746 +1664 +-7160 +-4352 +2836 +3994 +5225 +-5103 +4269 +1760 +878 +-6067 +4744 +-4051 +9797 +-5634 +3389 +-1958 +-7717 +6168 +5177 +8482 +228 +9943 +945 +2050 +1622 +7916 +2936 +6071 +3340 +-1542 +-6267 +-3317 +-7955 +1491 +-7595 +-1996 +867 +20 +5065 +8366 +-8165 +-4435 +-725 +9864 +-760 +8263 +-4514 +-8771 +2222 +-8398 +9196 +-6175 +3335 +-1197 +-4630 +-9317 +-7166 +6003 +-1953 +-5757 +-8594 +-3612 +6742 +2845 +-7238 +-2573 +3686 +3771 +-8380 +-9 +6668 +-7170 +4598 +-6488 +-8388 +5737 +-8185 +8427 +-4548 +5851 +1438 +-516 +3746 +7080 +-3842 +-4529 +669 +6198 +-4818 +-160 +9031 +-6639 +-7301 +-3562 +3158 +-9967 +3908 +-2556 +-7066 +4534 +-7401 +5837 +1490 +-925 +1547 +9795 +6602 +4782 +2687 +3641 +-7624 +-8544 +3629 +1027 +1462 +4798 +-1599 +5231 +86 +-6589 +-802 +5257 +-7394 +6423 +-6563 +9397 +-9050 +-3475 +-7507 +-4951 +882 +-7650 +2230 +-3703 +1990 +2129 +3155 +-1702 +8084 +-4940 +-5022 +1716 +-4875 +-4938 +-6697 +7231 +5094 +2151 +767 +-490 +-4285 +9240 +-7997 +-3465 +9475 +-704 +-8385 +4024 +-5060 +3767 +9691 +3445 +5025 +8304 +-8612 +-1878 +4020 +-3759 +8737 +-5377 +1097 +-3855 +-1020 +1632 +-4033 +-5351 +860 +6078 +-2124 +2877 +-4993 +-8464 +8995 +6333 +-9710 +-4573 +-7992 +6075 +2132 +7292 +7028 +-2371 +6677 +4269 +8097 +3787 +-9289 +-7021 +6579 +8456 +2810 +5743 +3397 +842 +-8505 +4587 +-4709 +8872 +1395 +-4980 +2311 +8532 +9087 +-7534 +-3815 +-9732 +3590 +-8212 +-9878 +-309 +-440 +855 +6427 +-6385 +-5272 +1662 +7501 +-3601 +4583 +1021 +-7486 +7516 +-1092 +8912 +-3863 +-8806 +-970 +-6004 +5741 +741 +8419 +-4935 +4424 +1058 +-6413 +-7439 +-6252 +9475 +-269 +-1292 +-3210 +-9175 +9928 +-4130 +5405 +-7376 +-5223 +1986 +-9368 +-7680 +898 +4413 +127 +717 +-3453 +2493 +9198 +-5238 +-9555 +-1352 +-5822 +-3204 +6014 +6798 +-3541 +8522 +-3516 +5378 +474 +1409 +7850 +6808 +7811 +-4345 +-6957 +7396 +-3457 +9023 +7819 +4260 +-4162 +-4655 +-7518 +2877 +-3116 +1281 +-3300 +8916 +-2820 +-5127 +6524 +5269 +8165 +-1798 +30 +-9159 +8834 +8089 +-1967 +-1669 +-373 +576 +1579 +8574 +5956 +-3608 +-6193 +-6385 +-3632 +-8874 +9113 +-5050 +217 +4323 +-2726 +-8108 +-7507 +8491 +266 +7754 +-8457 +4035 +5854 +5569 +1359 +-2732 +-5473 +-1719 +-5422 +-3804 +-513 +-2741 +7206 +-2881 +393 +3839 +7570 +2521 +-3640 +503 +2093 +-4480 +7027 +-4913 +-6958 +-6201 +5287 +4534 +7259 +9524 +-5591 +5854 +109 +-7164 +1234 +1165 +7779 +9921 +-4051 +867 +8309 +-2784 +8801 +-8289 +1150 +-2975 +1147 +-6459 +-7515 +-1450 +-9014 +-7749 +768 +-2433 +9603 +-8391 +8817 +-7509 +8232 +8986 +91 +-4 +-5012 +-3139 +7839 +-1320 +1602 +3460 +-3779 +2492 +30 +-9145 +-4185 +6792 +8629 +-1741 +-8281 +-225 +-5699 +-9727 +5690 +-1202 +4140 +5041 +-2860 +-8236 +-3803 +-6678 +-993 +5522 +-6686 +3723 +1760 +7739 +-7112 +-6813 +4410 +-6926 +9165 +-7420 +7675 +-8867 +-588 +2805 +-3106 +7165 +-5489 +-1604 +7133 +6889 +-2654 +6115 +-7366 +7233 +-987 +2299 +7839 +-380 +8222 +-7131 +-8764 +6275 +9906 +-6716 +9753 +7214 +4172 +3950 +-6974 +4776 +-3861 +8589 +9944 +3546 +4147 +6877 +3247 +3768 +5474 +-8560 +-8541 +-6237 +-2555 +-7619 +-9140 +4363 +-1708 +-430 +8868 +9522 +1103 +6579 +3916 +-6704 +3390 +-6126 +-5360 +3546 +2896 +-2137 +7532 +-8038 +-3317 +7687 +-4363 +-505 +-1962 +-4872 +-9630 +8469 +-9533 +8138 +-5060 +6024 +-839 +7261 +3659 +-4508 +-6184 +9726 +2088 +1247 +4567 +-5103 +-8469 +9939 +5108 +-3824 +3867 +-1398 +7423 +-9014 +-3457 +9173 +-9365 +-2972 +578 +4686 +-6055 +1164 +1150 +-7486 +2299 +6853 +8818 +7631 +4038 +-3717 +5642 +991 +-6143 +-8398 +-1336 +5138 +591 +-6650 +6579 +-9970 +-3676 +8165 +9799 +7948 +-1631 +473 +-6450 +7306 +6514 +1568 +50 +-8471 +-5595 +-3081 +1179 +8142 +-6404 +-7047 +-3527 +4785 +7779 +302 +1482 +-9970 +-4951 +8919 +-1752 +-5783 +-9472 +4721 +-7785 +1632 +1268 +5692 +1317 +-4031 +4782 +-1550 +5191 +795 +-2649 +-8208 +-3031 +-7507 +7341 +3994 +8020 +1361 +-5846 +-9490 +4038 +-4665 +-2060 +-1408 +7353 +9856 +-4778 +-6606 +9727 +2631 +2598 +5961 +1350 +1063 +2903 +-6441 +-8185 +-445 +-7333 +8305 +-3603 +4038 +1818 +-4403 +4598 +3141 +2721 +-912 +7949 +7811 +-1214 +-9487 +1794 +-5318 +-1042 +-7377 +114 +4918 +-6424 +2111 +8538 +-5557 +-1959 +-5112 +6162 +5141 +5198 +-7384 +-8179 +-9738 +-5946 +-2055 +-1206 +-8668 +-6269 +-4888 +4645 +3769 +8734 +855 +4308 +977 +1557 +4969 +5572 +7121 +859 +-5993 +6240 +-5333 +-7409 +-3091 +9854 +8040 +-3220 +-7522 +-9439 +110 +-2741 +-8289 +2853 +6696 +-6676 +8089 +-3908 +5161 +6224 +-1483 +-3054 +6535 +-4244 +-2207 +-5138 +5025 +-1788 +-2307 +-1865 +5143 +-1328 +3659 +5869 +2258 +-2509 +-7108 +-7194 +6677 +-1632 +-6027 +-8870 +-6367 +-1160 +7150 +8561 +8063 +-4708 +-8903 +2453 +-2637 +-6060 +-1238 +2686 +8349 +-7052 +4333 +-1982 +-446 +-4755 +-390 +7853 +9023 +-7468 +-3577 +8293 +4089 +-1994 +1378 +8503 +4003 +5066 +-8052 +8032 +7385 +5123 +5316 +9288 +-2536 +-6916 +-5223 +-4734 +-6838 +9933 +-6360 +5480 +4549 +-7366 +3645 +1716 +-9243 +-8496 +-1202 +-443 +-8078 +-2477 +1340 +7432 +-7003 +2718 +-6384 +5055 +-8950 +9049 +-4749 +-45 +-7248 +-2996 +7017 +-7987 +3309 +-130 +8396 +-6824 +-2242 +-5984 +-1206 +4821 +30 +3085 +-2640 +-9827 +5542 +2361 +3389 +4042 +6890 +9696 +-7292 +4694 +1585 +-1733 +-3803 +4180 +-5301 +-8670 +7121 +-8298 +-6698 +-7937 +2449 +-1011 +-9243 +-4189 +-2708 +-716 +-4340 +-4580 +8868 +-6126 +6623 +-9002 +7945 +-3317 +1885 +2186 +8725 +160 +-6958 +-2337 +1361 +-617 +-2385 +-6777 +7801 +-9412 +-4892 +3786 +-2261 +5506 +2102 +-4269 +-530 +4703 +4499 +5495 +5903 +-8295 +-1766 +-310 +-7007 +5782 +-8560 +9665 +-2944 +6399 +2029 +6121 +5744 +8553 +-5774 +-4861 +-7033 +2299 +-6526 +-6298 +372 +7847 +-7658 +-3497 +7288 +5149 +-3577 +6576 +2632 +-6610 +9602 +-8751 +-516 +6868 +-5757 +-9630 +9703 +-1632 +3268 +5020 +1998 +7073 +-7723 +-7550 +-8686 +-7470 +-3369 +-3659 +-5319 +1410 +464 +-1615 +5947 +5780 +-9250 +-8570 +-6704 +3359 +2388 +-9100 +-4595 +-8628 +-5607 +-2705 +-291 +-4392 +-3758 +-3190 +678 +-6237 +-2939 +-1982 +1717 +-5360 +5830 +-4872 +2179 +-5381 +-1160 +-552 +-9700 +-5304 +4821 +2151 +-9296 +86 +-3709 +6175 +-3505 +4967 +-7478 +-6972 +3425 +-6672 +4913 +6768 +-1269 +-2203 +-6103 +5548 +-9972 +3615 +7292 +2398 +7664 +8408 +4524 +-9439 +9617 +-6962 +3385 +6130 +-1365 +1156 +5865 +78 +-1199 +4250 +-3265 +1870 +-4403 +-2078 +-8473 +-3418 +-5144 +-3152 +-1091 +7501 +-3033 +8611 +-4202 +5634 +-6162 +9989 +-8067 +-7514 +1808 +-3833 +6576 +-4599 +9524 +-5799 +696 +6432 +-3925 +5024 +99 +-2273 +-3603 +-6599 +3129 +-6882 +4006 +-5923 +4322 +-7030 +-5942 +6296 +-3088 +7926 +5989 +1766 +-2658 +8170 +-6883 +9100 +-7925 +8302 +7035 +5585 +-7267 +3374 +5713 +1588 +39 +-4051 +-4025 +-2728 +-6122 +3247 +-4861 +3792 +2808 +-251 +4957 +-4815 +6707 +-9557 +9161 +2312 +-7102 +13 +-9288 +7916 +-5312 +-1304 +-8026 +563 +6347 +-8897 +-5243 +6803 +-1940 +-6987 +-4029 +280 +7015 +-3979 +5659 +2291 +-9166 +9620 +2720 +483 +-2653 +5921 +878 +8556 +-9281 +4013 +-1671 +3301 +1058 +-6985 +-3418 +892 +-7959 +-4673 +1807 +-9638 +-7234 +4097 +-7667 +-2636 +7840 +-1097 +7279 +-354 +6533 +-8816 +-5630 +-276 +7840 diff --git a/src/day20.lisp b/src/day20.lisp @@ -0,0 +1,40 @@ +(defpackage #:adventofcode2022/day20 + (:use #:cl #:adventofcode2022)) +(in-package #:adventofcode2022/day20) + +(defun mix (sequence) + (loop with length = (1- (length sequence)) + for i from 0 to length + for index = (position-if (lambda (item) + (= (cadr item) i)) + sequence) + for item-to-mix = (aref sequence index) + for number-to-mix = (car item-to-mix) + for new-index = (mod (+ index number-to-mix) length) + do (cond + ((> new-index index) + (let ((after (subseq sequence (1+ index) (1+ new-index)))) + (replace sequence after :start1 index))) + ((< new-index index) + (let ((before (subseq sequence new-index index))) + (replace sequence before :start1 (1+ new-index))))) + do (setf (aref sequence new-index) item-to-mix))) + +(defun task1 (inputs) + (let ((sequence (coerce (loop for number in inputs + for i from 0 + collect (list number i)) + 'vector)) + (length (length inputs))) + (mix sequence) + (let ((zero (position-if (lambda (item) + (zerop (car item))) + sequence))) + (+ (car (aref sequence (mod (+ zero 1000) length))) + (car (aref sequence (mod (+ zero 2000) length))) + (car (aref sequence (mod (+ zero 3000) length))))))) + +(define-day 20 + (:translate-input #'parse-integer) + #'task1 + nil) diff --git a/t/day20.lisp b/t/day20.lisp @@ -0,0 +1,16 @@ +(in-package #:adventofcode2022/test) + +(define-constant +testdata-day20+ "1 +2 +-3 +3 +-2 +0 +4" + :test 'equal) + +(def-test day20-task1 () + (is-true + (= 3 + (run-task 20 1 + (make-string-input-stream +testdata-day20+)))))