From 6a3d307033992789a8cc09bd7e5f453168ee0edf Mon Sep 17 00:00:00 2001 From: Quantum Date: Fri, 2 Dec 2022 18:41:28 -0500 Subject: [PATCH] Fuck you Logan --- day_1/input | 2255 ++++++++++++++++++++++++++++++++++++++++++ day_1/main | Bin 0 -> 37168 bytes day_1/main.cpp | 41 + day_1/main2.cpp | 52 + day_2/input | 2501 +++++++++++++++++++++++++++++++++++++++++++++++ day_2/main | Bin 0 -> 45104 bytes day_2/main.cpp | 107 ++ day_2/main2 | Bin 0 -> 45544 bytes day_2/main2.cpp | 116 +++ 9 files changed, 5072 insertions(+) create mode 100644 day_1/input create mode 100755 day_1/main create mode 100644 day_1/main.cpp create mode 100644 day_1/main2.cpp create mode 100644 day_2/input create mode 100755 day_2/main create mode 100644 day_2/main.cpp create mode 100755 day_2/main2 create mode 100644 day_2/main2.cpp diff --git a/day_1/input b/day_1/input new file mode 100644 index 0000000..55c4ec3 --- /dev/null +++ b/day_1/input @@ -0,0 +1,2255 @@ +10130 +9819 +4257 +8400 +10994 +3758 +8326 + +9002 +15602 +1193 +6805 +10797 + +9435 +6559 +11512 +12051 +2687 +2850 +3752 + +6656 +5869 +5033 +7164 +1708 +3689 +2218 +6642 +1913 +1494 +1403 +4269 + +6089 +3985 +4673 +4814 +6628 +6076 +3594 +3143 +5412 +7647 + +22393 +2865 + +2241 +1877 +2289 +1928 +1519 +4750 +5669 +3725 +3706 +4640 +4078 + +11277 +6678 +15419 +18306 + +8709 +6839 +1177 +1731 +12550 +6153 + +7843 +5702 +8917 +3883 +9193 +9098 +8928 +6742 +9387 + +26854 +9607 + +5043 +2064 +7565 +2747 +5389 +10597 +2921 +9208 + +11529 +11452 +3741 +5553 + +13959 +7068 +6045 +3757 +8997 + +12474 +7761 +4219 +6674 +6064 +1518 + +4312 +2690 +5772 +4771 +1013 +5905 +4929 +1428 +3755 +4513 +4394 +4521 +1284 +3384 +4493 + +1051 +3887 +6109 +6877 +7908 +9046 +2055 +10550 + +4710 +16311 +19468 + +3334 +6297 +8004 +8891 +7498 +8396 +9118 +2651 + +9178 +8754 +3183 +4795 +1172 +2775 +3152 +9623 + +8741 +3118 +3487 +6103 +1709 +7780 +9419 + +4211 +3174 +3635 +2500 +5348 +4796 +5804 +2000 +5886 +6508 +1643 +1749 +6334 +5729 + +15750 +11572 +5018 +5569 +6147 + +10944 +11253 +9945 +7722 +4790 +6543 +10256 + +4766 +8150 +15489 +8177 +5162 + +15715 +4110 +2329 +4366 +14885 + +4263 +1071 +6295 +2964 +4861 +1084 +6244 +6243 +3177 +5040 +3934 + +7299 +8607 +9981 +9451 +3932 + +4093 +2953 +5017 +2593 +7345 +7549 +5403 +1717 +2011 +1717 +5148 + +7689 +1804 +3955 +2130 +4847 +6311 +1709 +3207 +4728 +2441 + +16221 +16405 +16736 +3431 + +6886 +1191 +1283 +6308 +1100 +5473 +2290 +1438 +1685 +1832 +6629 +6061 +5556 + +7262 +7934 +5864 +1050 +3072 +5860 +4263 +2940 + +11268 +6888 +12460 +3346 +9438 +13728 + +2427 +5611 +7314 +4481 +6000 +7649 +7036 +1996 +5476 + +4144 +2951 +3075 +1146 +4956 +4090 +4416 +4605 +1684 +3396 +3863 +5911 +5910 +5884 +2391 + +3833 +4216 +2824 +5672 +7345 +6991 +1698 +2745 +5932 +3433 +3415 +1626 + +6343 +1723 +8634 +6735 +3185 +3580 +3976 +5503 + +5902 +6282 +4830 +6680 +1549 +5325 +6533 +3525 +4696 +5120 +6612 + +3263 +6467 +6495 +1157 +2270 +5533 +2986 +6412 +5730 +6308 +3471 +3544 +3844 +4913 + +2731 +2447 +1071 +7298 +3316 +5807 +5240 +1532 +3431 +7179 +1147 +5954 + +5747 +1098 +4844 +2140 +4052 +3516 +3315 +4475 +4508 +4806 +5695 +2780 +5886 +2339 +4953 + +5465 +3399 +2661 +5743 +2124 +1344 +3878 +6085 +3637 +4797 +5691 +4026 +3356 +1596 + +6713 +4867 +5837 +3837 +5532 +8929 +6160 +9598 +3756 + +8256 +1917 +23093 + +1162 +24338 + +8029 +7864 +3231 +4214 +1430 +8589 +9062 +2655 + +7612 +3854 +2976 +8494 +9635 +6821 +2780 +6393 +3586 + +9813 +8505 +7281 +13293 +13132 +10159 + +15355 +13250 + +5976 +1131 +1502 +5742 +4965 +5047 +2123 +4449 +1584 +2250 +4775 +2335 +4475 +1341 + +8554 +4775 +4662 +4601 +8799 +9561 +3080 +9389 +7430 + +13227 +5422 +10123 +14929 +14241 + +9827 +15055 +3548 +2653 + +6014 +1104 +6289 +6112 +5308 +1267 +6196 +5057 +4167 +5778 +1994 +6404 +2447 +3656 + +3016 +5357 +6050 +2230 +3928 +3447 +7969 +7363 +6338 +3996 +3781 + +2292 +1041 +18572 +13149 + +10761 +13752 +15373 +10572 + +4768 +3504 +5616 +1147 +1267 +5779 +3238 +3213 +2017 +6083 +6289 +1858 +3424 + +9295 + +21805 +11516 +8352 + +2212 +4582 +3385 +2985 +1957 +2228 +1750 +3868 +5963 +4646 +5820 +2169 +4298 +2557 + +4471 +1614 +1698 +1789 +4748 +5182 +4807 +5122 +5105 +3295 +3665 +4533 +3809 +4998 +4982 + +26098 +28596 + +10111 +5551 +10077 +4066 +13547 +7371 + +18933 +8329 +7577 +16408 + +6523 +15633 +15999 + +17658 +24788 +11403 + +5890 +3722 +5091 +1161 +5073 +2660 +4707 +4544 +1564 +1885 +5488 +3152 +5054 +6000 + +36680 +1628 + +7616 +6364 +7551 +2658 +4726 +3448 +3183 +5964 +2747 +7994 +3711 + +1667 +6128 +6100 +5799 +3361 +5928 +2935 +2284 +3665 +5305 +1584 +1114 +4480 + +14019 + +13533 +16036 +17506 + +8819 + +1689 +3541 +2586 +3124 +1670 +3158 +2961 +4631 +5262 +4097 +1120 +1252 +2487 +1524 +5029 + +4609 +9146 +11572 +5695 +9042 +2025 + +5442 +6032 +6242 +2064 +3783 +4998 +3501 +3193 +2923 +3768 +3724 +1454 +6198 +1709 + +7098 +1914 +1649 +8743 +8717 +7814 +9496 +3013 +7721 + +7963 +2700 +4762 +10490 +4733 +7668 +2070 +9014 + +21869 +24146 +17568 + +2791 +3206 +9706 +9752 +9313 +10047 +7229 +8457 + +2139 +4268 +3545 +7513 +1530 +11105 +2343 + +9514 +16132 +4113 +3896 +12368 + +3376 +3232 +5230 +1084 +7424 +4773 +1568 +3469 +5223 +1717 +7149 +4479 + +61245 + +33738 +29007 + +2744 +4342 + +5250 +3285 +9082 +8951 +2287 +6693 +5952 +2241 +3382 + +2403 +5553 +1652 +5189 +4120 +4771 +2030 +5463 +1141 +2147 +2400 +2764 +5958 +2595 +2984 + +4615 +5948 +8609 +8342 +4845 +5590 +5717 +7729 +4214 +8715 + +5280 +5238 +6594 +4787 +2268 +3201 +1982 +2653 +2507 +6843 +3996 + +1079 +2327 +2146 +5369 +1149 +7836 +6695 +4774 +4834 +5966 + +4743 +1071 +5553 +5856 +3501 +5256 +1059 +2172 +1766 +5111 +1734 +3741 +6666 + +7208 +8917 +4574 +10178 +6217 +3799 +9124 + +6278 +7284 +3207 +2626 +2815 +1047 +6197 +7928 +5342 +3487 + +2733 +5855 +3916 +6364 +4889 +6248 +3109 +1912 +3936 +3934 +4021 + +8862 +7897 +8001 +1505 +5231 +11377 +4084 + +22344 +10024 + +1935 +5094 +1740 +7991 +9007 +3718 +1466 +6634 +2244 + +3611 +4382 +5099 +1587 +6938 +7285 +4578 +1424 +2085 +7306 +1244 +1891 + +3108 +2917 +3884 +1274 +6387 +2055 +1684 +6353 +5801 +5886 +5649 +2985 +2806 + +26039 +15129 +13699 + +4284 +4026 +5226 +5746 +4828 +3027 +6034 +3648 +7685 +7998 +1975 + +3884 +3450 +2695 +5818 +1069 +2977 +5076 +6920 +5542 +6195 +3476 +3648 +3993 + +49995 + +5330 +4948 +6472 +4324 +5154 +2581 +2762 +4454 +6681 +6553 +1544 +1984 + +5328 +5393 +6886 +6874 +3673 +2691 +1814 +2990 +1793 +7468 +4091 + +4908 +4335 +2656 +7085 +5897 +2578 +1530 +8614 +3702 +3362 + +2673 +1354 +2602 +5656 +3565 +5690 +5332 +4125 +3471 +3011 +2915 +5633 +2723 +5355 +3201 + +10397 +1302 +11090 +3309 + +35932 + +32894 +30094 + +5343 +2920 +1905 +4745 +3031 +6507 +4449 +2217 +1518 +3839 +4880 +5063 +3321 +5467 + +4243 +3226 +3383 +3673 +1749 +3569 +5089 +6581 +3127 +5840 +4686 +3617 +2460 + +7731 +4562 +4990 +5693 +7485 +4390 +4491 +7039 +1440 +3217 + +2082 +6021 +4675 +4771 +2925 +4324 +6847 +5846 +1384 +6905 + +5996 + +8125 +4714 +7960 +4031 +4566 +7388 +4036 +5376 +7248 +8266 + +1863 +6558 +4889 +2261 +5836 +1210 +6762 +8490 +2614 +6802 + +30026 +18586 + +4845 +6999 +8095 +2220 +8731 +3782 +5964 +3762 +7152 +4524 + +28917 + +21103 +18240 + +4716 +1062 +5583 +4631 +6145 +5939 +5499 +5517 +2103 +6339 +3586 +4216 +2466 + +6027 +9439 +2900 +2939 +8164 +8423 +8189 +9443 +3371 + +6741 +7254 +5730 +4541 +2840 +3289 +2176 +4008 +1137 +6422 +4732 +6850 + +6024 +14627 +4098 +3714 +1268 + +13617 + +5203 +2873 +2129 +7116 +5904 +5410 +6750 +6863 +6162 + +4859 +5535 +4891 +8456 +8099 +7583 +5857 + +5647 +6145 +4400 +1401 +3704 +1503 +5662 +5980 +3769 +2206 +5537 +6375 +6146 +1136 + +1832 +4382 +7311 +2901 +6613 +1845 +3313 +3137 +5376 + +1976 +5643 +3090 +2437 +2082 +6379 +2655 +6541 +4795 +3697 +2555 +3717 +2819 + +1046 +4154 +6033 +3120 +3198 +5890 +5008 +4346 +1588 +6469 +4257 +4984 +2249 +4830 + +11119 +10936 +9196 +7164 +11955 +9319 + +25710 +18940 +11190 + +15820 +14632 + +1730 +1113 +3427 +6097 +4165 +1487 +1632 +5267 +2170 +2476 +4911 +2767 +3476 +2532 +2216 + +10511 +3144 +7687 +3624 +1162 +8444 +1812 +1675 + +1772 +5126 +4840 +3465 +8376 +2305 +1122 +2119 +5551 +4986 + +3038 +7556 +3843 +2976 +7807 +13037 + +4578 +5703 +7102 +6776 +3151 +4995 +3053 +5881 +5906 +1003 +7423 + +12965 +13177 +4312 +6862 +7032 +13595 + +5043 +3315 +14242 +12771 + +4113 +7471 +4110 +1956 +4263 +4592 +7107 +1535 +1812 +5169 +2633 +6973 + +1000 +2407 +6526 +6585 +5191 +7978 +7027 +6226 +4347 +8052 + +10115 +5381 +2764 +13539 +5858 + +2365 +1563 +5503 +4584 +1776 +5321 +5116 +1845 +6048 +4447 +2068 +3552 +3658 +4667 +5191 + +6968 +5138 +3505 +3735 +2502 +1692 +2051 +3551 +3393 +5560 +5870 + +9726 +7999 +2153 +12078 +2579 +9831 + +16362 +11512 +1014 +5409 +11437 + +5713 +5921 +1110 +4722 +5086 +3674 +3938 +6726 +2114 +6651 +2570 + +1593 +1892 +2130 +5280 +6833 +5735 +8558 +10535 + +13937 +18143 + +1054 +10528 +9972 +13953 +13815 +8632 + +3812 +11438 +5636 +1639 +13967 + +8887 +5092 +12287 +2867 +3987 +6854 + +6285 +16477 + +3800 +2039 +4443 +5461 +4586 +1477 +5984 +2803 +4321 +6139 +6058 +4305 +4451 + +6031 +1819 +5064 +6241 +2251 +6110 +2526 +1368 +2660 +1604 +4978 +2861 +1786 +2480 + +8200 +7851 +8701 +4740 +3816 +4913 +8713 +8170 +4864 +4144 + +30728 +32625 + +5138 +5610 +2844 +5599 +2064 +4472 +2620 +2461 +4702 +4730 +6714 +3755 + +1259 +5032 +5056 +3705 +4254 +2516 +3573 +6040 +5939 +1091 +3679 +1815 + +7169 +6264 +2928 +3857 +1399 +3983 +5004 +6298 +6495 +3815 +5715 +4531 + +3894 +4083 +4992 +6342 +3949 +5542 +4008 +2679 +1904 +2045 +4936 +5181 +5730 +6243 + +2284 +5962 +4449 +1238 +4355 +3182 +1850 +6293 +1594 +4194 +4158 +2485 +1027 +5645 + +8924 +18654 +4250 + +3370 +4573 +2912 +4475 +3791 +2443 +3230 +1759 +3073 +3459 +4153 +3241 +1123 +4630 + +7451 +10002 +1187 +3001 +8317 +11031 + +8570 +8386 +3284 +4799 +4346 +1232 +2001 +7199 + +5453 +2196 +5968 +6073 +3973 +2030 +3075 +3177 +1074 +3381 +2751 +1524 +5084 +2349 +2134 + +3920 +5475 +4746 +7174 +5530 +1331 +4767 +5566 +7454 +1281 + +62528 + +5428 +5144 +3420 +3359 +5232 +1156 +3431 +2458 +5639 +6299 +6416 +3381 +3199 +2574 + +3103 +5574 +5574 +6452 +3346 +4931 +3470 +1884 +3304 +2498 +4951 +4475 +1342 +3991 + +6678 +3447 +2475 +6514 +5450 +5561 +4939 +4075 +4688 +3228 +3691 +1410 +2518 + +6617 +7399 +1668 +5218 +2615 +4233 +3883 +5109 +4221 +3417 +5259 +3424 + +35141 +20700 + +5415 + +19959 +16356 +6769 +8431 + +4004 +5139 +1314 +5778 +6335 +2418 +2353 +5020 +5701 +4038 +7997 + +3484 +9434 +5114 +7686 +9811 +3027 +6818 +1134 + +22133 +9535 +3540 + +5241 +10210 +1552 +3819 +5903 + +3657 +6124 +10218 +7944 +10202 +2064 +7803 +9270 + +1513 +3991 +8713 +2745 +6459 +7823 +4728 +8610 +5026 +4761 + +1246 +1128 +1814 +6022 +2200 +4128 +5651 +6086 +6452 +6795 +3860 + +44675 + +7236 +4656 +1629 +8693 +7402 +2344 +6600 +5925 +4540 + +32583 +13437 + +7763 +8572 +5475 +2542 +1445 +8385 +6780 +4197 + +8767 +3676 +10354 +8594 +7795 +10394 +1358 +1402 + +3593 +6176 +3574 +5641 +5357 +1077 +4858 +2060 +2559 +3566 +2598 +3133 +1877 +4056 + +17274 +3353 + +26548 + +3352 +3677 +7771 +2007 +4376 +2703 +8446 +9191 + +4542 +7433 +4709 +7063 +3267 +7088 +1952 +4479 +2972 +2480 +6111 + +8493 +3255 +3042 +13612 +8847 + +4995 +4745 +7511 +7895 +4616 +1845 +4306 +3240 +3874 +4607 +4907 + +19216 +13903 + +8563 +1199 +7999 +5067 +8083 +5684 +8510 +4581 +5261 +7329 + +3648 +4762 +1200 +5362 +6143 +5781 +4091 +7554 +8193 + +1715 +1099 +4426 +1151 +1263 +5788 +1507 +4926 +3881 +5506 +3788 +4429 +4823 +3138 +3905 + +5265 +9671 +3085 +5558 +3704 +9011 +4395 +9449 +6064 + +28075 + +28195 +3135 + +14792 +19272 +13436 +3789 + +6763 +2173 +2503 +10888 +10558 +10563 +4711 + +5992 +2189 +5666 +1034 +1893 +2992 +4069 +1199 +6085 +2461 +5216 +4690 +2307 +5691 +5419 + +4029 +2298 +4093 +5486 +3426 +5957 +1640 +6743 +2390 +2621 +3025 +3830 +1353 + +1754 +4361 +8039 +1535 +8034 +1065 +10104 + +16212 +1075 +4391 +13803 + +53395 + +3508 +5369 +9075 +1489 +4569 +6561 +7322 +1526 + +32816 +5936 + +8014 +7548 +6265 +6118 +1175 +7127 +1291 +7133 +4717 +3197 + +8290 +1078 +4130 +7049 +9394 +10135 +10056 +7434 + +1423 +11077 +13375 +4711 +4031 +7284 + +7959 +2528 +3203 +10246 +1515 +6495 +8756 +5632 + +7067 +5860 +3654 +6956 +8085 +10898 +11823 + +3894 +2528 +3276 +5192 +1474 +3444 +4714 +2812 +2141 +3393 +4296 +1737 +2270 +3736 +2003 + +64495 + +7374 +6655 +9252 +1270 +6722 +2267 +9324 +2552 + +5125 +5729 +4215 +1176 +3739 +1570 +5729 +5390 +2232 +5785 +6490 +4467 +3170 +5906 + +5257 +2688 +10408 +1584 +6951 +9783 +3181 +9280 + +1129 +4459 +1794 +5817 +2895 +4598 +2880 +4862 +1895 +6047 +2999 +5138 +3616 +1299 +5836 + +2081 +5990 +5404 +5622 +5346 +3674 +3807 +2676 +4941 +2787 +4933 +2281 +3692 +1605 +2149 + +10528 +8445 +9263 +4626 +1021 +6175 +3036 + +7285 +12907 +11004 +9393 +11066 + +1653 +5500 +7276 +4978 +5143 +6363 +2696 +2026 +2753 +4755 +4366 +3789 + +5625 +1653 +1084 +4251 +2406 +6263 +6020 +6380 +4500 +4975 +5502 +4818 +4297 +2202 + +4203 +6347 +1818 +2069 +4846 +4423 +5383 +4857 +6333 +2066 +5189 +5407 +1875 +3563 + +20111 +23850 +18762 + +5647 +16300 +3389 +13144 + +3410 +2740 +6542 +7471 +4532 +7375 +5905 +7073 +4372 +7066 +5923 +4348 + +31582 +24911 + +11599 +7786 +13121 +10360 +6683 + +7353 +3964 +9305 +9313 +11354 +6791 +9037 + +2850 +1062 +5993 +1721 +4463 +1407 +2893 +5473 +1549 +2631 +2321 +4995 +5428 +4106 +3332 + +8992 +10224 +9418 +8509 +7874 +5208 +6202 + +8824 +12637 +12672 +5257 +6621 +11770 + +16537 + +2825 +5281 +6898 +6437 +6481 +4806 +4208 +6030 +6926 +1392 +7842 + +8051 +1225 +4681 +8361 + +6636 +1919 +3652 +11633 +11321 +13513 + +5849 +1752 +6518 +5546 +2608 +2866 +3356 +2107 +4090 +5238 +3559 + +2455 +4808 +1899 +1753 +1899 +5047 +3362 +5973 +1832 +3395 +2908 +2616 +5720 +2221 +1771 + +1654 +6928 +3317 +4238 +4796 +4168 +6225 +1669 +1109 +4265 +4980 +6660 + diff --git a/day_1/main b/day_1/main new file mode 100755 index 0000000000000000000000000000000000000000..0a72a99e78f9bbfa85bf30936b21f1e6caf0be22 GIT binary patch literal 37168 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 +#include +#include +#include +#include + + +int main(int argc, char *argv[]) { + if(argc != 2) { + std::cerr << "Usage " << argv[0] << " " << std::endl; + return -1; + } + + std::ifstream file; + file.open(argv[1]); + + std::string line; + std::vector groups; + int sum = 0; + while(file) { + std::getline(file, line); + std::cout << "got " << line << std::endl; + + if(line == "") { + if(sum > 0) + groups.push_back(sum); + sum = 0; + } else { + sum += std::stoi(line); + } + } + + for(int sum : groups) { + std::cout << "sum " << sum << std::endl; + } + std::cout << "Parsed " << groups.size() << " groups" << std::endl; + + std::cout << "Max is " << *std::max_element(groups.begin(), groups.end()) << std::endl; + + return 0; +} diff --git a/day_1/main2.cpp b/day_1/main2.cpp new file mode 100644 index 0000000..50a9dce --- /dev/null +++ b/day_1/main2.cpp @@ -0,0 +1,52 @@ +#include +#include +#include +#include +#include + + +int main(int argc, char *argv[]) { + if(argc != 2) { + std::cerr << "Usage " << argv[0] << " " << std::endl; + return -1; + } + + std::ifstream file; + file.open(argv[1]); + + std::string line; + std::vector groups; + int sum = 0; + while(file) { + std::getline(file, line); + std::cout << "got " << line << std::endl; + + if(line == "") { + if(sum > 0) + groups.push_back(sum); + sum = 0; + } else { + sum += std::stoi(line); + } + } + + for(int sum : groups) { + std::cout << "sum " << sum << std::endl; + } + std::cout << "Parsed " << groups.size() << " groups" << std::endl; + + int maxs[3]; + auto max = std::max_element(groups.begin(), groups.end()); + maxs[0] = *max; + groups.erase(max); + max = std::max_element(groups.begin(), groups.end()); + maxs[1] = *max; + groups.erase(max); + max = std::max_element(groups.begin(), groups.end()); + maxs[2] = *max; + groups.erase(max); + + std::cout << "Max is " << maxs[0] + maxs[1] + maxs[2] << std::endl; + + return 0; +} diff --git a/day_2/input b/day_2/input new file mode 100644 index 0000000..2bce47d --- /dev/null +++ b/day_2/input @@ -0,0 +1,2501 @@ +C Z +A Y +C Z +A Y +C Y +A Z +B Y +C X +A Y +B X +B X +A Y +C Z +C Y +C Y +A Y +C Y +B X +B X +A Z +C Y +B Z +C Z +A Z +B Y +A Y +C Z +A Z +A Y +C Z +C Z +A X +A Y +B Y +C X +B Y +C Z +A Z +A X +A Z +A Y +C Y +C X +C Y +A Z +C Z +C Z +A Y +A Z +C Z +A Y +C Z +C Y +C Z +A Z +A Y +C Z +C Y +C Y +C X +B Y +B Y +C Y +A Z +A Z +B X +B Z +B X +A Y +A Z +A Y +C Y +B X +B Y +A Z +C Y +C Z +A Y +B X +C Z +A Y +C Z +C Z +A Y +B Z +C Z +A Y +B X +A Y +C Z +C Z +B Y +B Z +B Z +A Y +A Z +B Y +C Z +C Y +C Z +A Y +C Z +C Z +C Z +C Y +A Z +A Z +C Z +C Z +A Z +C Z +C Y +C X +A Z +A Z +B Z +A Y +A Y +C X +B Y +C Y +A Y +B X +B Y +B Y +B Y +C Y +A Z +C Y +A Y +C Z +B Y +B X +A Z +C Y +B Y +A Y +C Z +B Z +B Z +A X +B Y +C Z +B Z +B Y +C Z +B X +B Y +A Y +A Y +A Y +B Y +B Y +A Z +C Z +A Y +A Z +A Y +A X +C Y +A Y +C Z +A Z +C Z +C Y +C X +B Z +A Z +C Y +C Z +A Z +C Z +C Z +C Y +C Z +C Y +C Z +C Y +C Z +C Z +C Y +B X +A Y +C Y +C Z +B Y +B Y +C X +C Z +A Z +B X +C Z +A Y +B Y +C Z +C Z +C Z +B X +A Y +C Z +B Z +B X +C Z +C Z +C X +A Y +A Y +C Z +A Y +A Y +A Y +B X +C Z +B X +C Z +A Y +A Z +B X +B Z +C Z +A Y +C Y +C Z +C Y +B X +B Y +C X +C Z +A Y +A Y +B Z +A Y +C Z +C Z +B Y +B X +C Z +C Y +C Y +B Y +C Y +A Y +C X +C Z +A Y +A Y +C Y +A Y +C X +C Z +A Y +B Z +A Y +A Y +A Y +C Z +B X +B Y +C Y +A Z +C Y +C X +B Z +A Y +C Z +A Y +B Y +B X +A Y +C X +C X +B Y +C Z +B X +C X +C Z +A Y +C Z +C X +C Z +B Y +C Z +C Z +A Y +C Z +B Y +A Y +A Y +C Y +C Z +B X +C Z +C X +C Y +B Z +A Y +B X +C Y +B Y +C Y +B Y +A Y +A Y +B X +B Z +B X +B Y +C X +C Z +A Y +C Z +C Z +C Z +C Z +B Z +C Z +B Y +A Y +C Y +C X +C Z +B X +C Z +B Y +C X +C Z +A Y +A Z +B Z +A Y +B Y +B Z +C Y +B X +A X +C Y +C X +B Y +C X +C Z +C Z +C Z +B X +C X +A X +B Y +B Z +C Z +C Z +C Y +C Z +B Y +C Y +C Y +C Z +B X +B Z +B Y +B Y +C Z +B Y +A X +B X +A Z +C Z +C Z +A Y +C Z +A Y +C Y +B Z +B Z +C Z +C X +A Y +C X +B Z +A Y +B X +A Z +A Z +B X +C X +C Y +B Y +A Y +B Y +C Z +C Z +C Y +A Y +C Y +C Z +C Y +C Z +C Z +C Z +A Y +A Z +A Y +C Z +B X +A Y +C Z +C Y +C X +C Y +C Z +C Y +A Y +A Z +C Y +A Z +C Y +A Y +A Y +C Z +C Y +A Y +A Y +B Y +B Z +A Z +C Z +C Z +C Z +C X +B X +C Z +C Y +A Z +B Y +C Z +C Z +B Y +A Z +C Z +B Z +B Y +C Y +C Y +A Z +C Z +A Z +B Y +C Y +B X +C X +B Y +A Z +C Z +C Y +C Z +B X +C Z +C Y +C X +C Z +A Y +A Z +C Y +B Y +A Z +B X +C Z +C Y +C Y +C Z +A Z +A Z +B Y +B X +B X +A Y +B X +C Y +A Y +A Y +B X +C Y +B Z +A Z +B X +C Y +C X +A Y +A Z +A Y +C Z +B Z +C Z +A Y +C Z +C X +A Z +B Y +A Y +B Y +C Z +C X +A Z +C Y +B X +A Y +C X +C Y +A Z +B Z +A Y +C Z +B Y +A Y +C Y +C X +B X +C Z +B X +C Y +C X +C Y +C Y +B X +A Y +B X +C Y +C Z +B X +C Z +B Y +A Y +C Z +A Z +A X +B Y +A Z +A Y +C Z +C X +B Y +C Y +A Y +C Y +A Z +A Z +A Z +C Y +A Y +B Y +C X +C X +C Z +A Z +C Y +C Z +C Y +C Y +A X +B Z +B Y +A Y +A X +A Z +C Z +A X +A Y +C Z +C Z +C Y +C Z +C Z +C X +B Y +B Z +B Y +A Y +B Y +B X +A Z +B Y +C Y +A Z +B Y +B Y +C X +C Z +B X +A Y +C Z +C X +A Z +A Y +A Z +C Z +B Y +B Y +C Z +A Y +A Y +C Y +B Y +C Y +C Y +C Y +A Y +C Z +B X +A Y +B Z +A Y +B X +C Z +C Y +C Y +A Y +A X +C Z +B X +B X +B X +C Y +C Y +A Z +A Y +C Z +B Z +C Z +C Z +C Y +A Y +C Y +A Z +A Y +B Y +C Z +C Y +B Y +A X +B Y +A Z +B Y +A X +A Y +B X +A Y +B Y +B X +A X +A Z +C Z +A Z +A Z +C Y +A X +A Y +C Z +C Y +A Y +B Y +A Z +A Y +B Y +C Z +C Z +B X +B Y +C Y +A Y +B Y +A Y +B Y +B Y +B Y +C Y +C Z +C Z +B X +A Y +A Y +A Y +C Y +C Y +A Y +A Y +C Z +C Z +B Y +B X +A Y +C Z +A Y +B Z +B Y +C Y +C Y +C Y +B X +A Y +C Z +A Z +B X +C Z +B Y +A Z +C Y +C Y +A Y +B X +A Y +A Y +B X +C Y +C Y +A Z +C Z +C X +C Y +B Y +B Y +C Y +C X +A Y +B Z +A Y +B Z +A Z +A Y +C Z +C Z +C Z +C Z +C Z +C Z +C Y +A Y +C Z +A Z +B Z +C Z +A Z +A Y +C X +A Z +A Y +C Z +B Z +A Y +C Y +B X +C Z +C Z +A Y +C Y +B Y +C Z +C Y +C X +A Z +B Z +A Z +A Y +B Z +C Z +C Z +A Y +A Y +C Z +A Y +A X +C Y +B Y +B X +B Y +B X +C X +C X +A X +A Y +C Y +A X +B X +C Y +A Z +B X +C Z +C Z +B Y +A Y +C Z +C Z +C Y +A Z +B X +C Y +A Y +C Z +C Z +A Z +B Z +B Z +C Z +C Y +C Z +A Y +C Z +C Z +B X +C Z +C Z +B Z +C Z +B Y +C X +C Y +C Z +B Y +A Z +C Z +A Y +B Y +C Z +C Z +C Z +A Y +A Y +A X +C Z +B X +C Z +C Y +C Y +A Z +B X +C Z +C Z +B X +C Y +A Z +C X +C Y +B Y +C Y +C X +A Z +B Z +A Z +B X +C Y +B X +C Z +C Z +B X +B Y +C Z +B Y +A Z +A Y +B Z +C X +C Z +C Y +C Z +B Y +A Z +C Z +B Y +B Y +C X +C Y +A X +B Z +C X +A Z +B Z +A Y +A Y +B X +C Z +C Z +A Y +C Z +A Z +C Y +C Z +C Z +A Z +C Z +C X +A Y +C Y +C X +C X +B X +C X +A Y +B Y +C Y +C Z +C X +C Z +A Z +C Z +A Y +A Y +B Z +B X +C X +A Y +C Z +A Y +C Y +C X +B Y +C Z +B X +A Z +A Z +C X +B X +C Z +C Z +B X +A Y +A Z +C Z +C Z +C Z +A Y +C Z +B Z +A Y +B Z +A Y +B Y +C Y +A Y +B Y +A Z +A Z +C Y +A Z +C Z +B X +C Y +B X +B X +B Y +B Z +A Y +C Y +C Z +C Y +B Z +C Y +C Y +C Z +A Y +B Z +C Y +C Z +C Z +B Z +A X +C Z +B Y +C Y +A Z +C Z +A X +C X +B Y +A Z +A Z +B X +C Z +B X +C Y +C X +C Z +C X +C Z +C Z +B X +B Y +A Y +B X +C X +B Y +A Z +A Z +C Y +C Y +B X +C Z +B Y +B X +A Y +A X +C Y +A X +C Y +C Z +C Y +C X +C Z +B X +B Z +B Z +C Z +B Y +C Z +C Y +A Y +C Y +A Y +C Z +A Y +A Y +A Z +C X +C Z +C Z +C Z +B Y +C Z +B X +A Y +A Z +C Z +B X +A Z +C Z +A Z +A Y +B Y +A Z +C Z +B Y +C Y +C Z +A X +C Z +C Z +C X +C Z +C Z +C Z +B Y +C Y +B Y +B Y +C Z +B X +A Z +A Y +C Z +C Y +B X +C X +A Y +C Z +A Y +B Y +C Z +C Y +B Y +C X +B X +B X +B X +C Y +C Y +C Y +C X +C X +A Y +B X +C Z +A Z +A X +B Y +C Z +C Y +A Y +C Y +C Y +C Y +C Y +B Y +B Y +C Y +B X +A Y +A Z +A Y +B Y +A Y +C Z +C Y +A Y +B Y +B Y +B Y +C Y +C Z +B X +B Y +C Z +C Y +C Z +C Z +C Z +B Y +C X +C Y +C Z +C Z +B Y +A Y +B Y +C Z +A Y +A Z +B X +B X +C Z +B X +A Y +C Z +B Y +B Y +C Z +B X +A Y +A Y +B X +C Z +A Z +C Z +C Y +B X +B Y +A Y +C Z +C Y +C Z +C Z +B X +B Z +C Z +C X +A Y +C X +B Z +C Z +C Z +A X +C Z +A Y +C Y +A Y +A Z +C Y +B Z +A Z +C Z +C Z +C Z +A Y +C X +C X +B Y +C Y +A Z +A Z +B X +B Z +C X +C X +C Y +C Y +C Z +A Y +C Y +B Z +B X +C Y +C Z +B Z +A Y +A Y +C Z +B Y +C Y +B Y +C X +C X +C Z +B Y +A Y +C Z +B Z +A Y +A Y +A Y +A Z +B X +C Z +A Z +C Y +C Z +B Z +B Z +B Y +C Y +C Z +C X +B Y +B X +A Y +C Y +A Z +C Z +C Z +A Y +A Z +C X +C Z +A Z +C Z +B X +C Y +A Y +B Z +B Z +B Y +C Z +C Z +B X +A Z +C Z +C Y +B Y +C Y +C Z +C Y +B X +B X +C Z +C Y +B Y +B X +C Z +B X +C Y +C Z +C Y +B Z +C Z +A Y +A Y +B X +C Z +B X +B X +A Y +B X +B X +C Y +C X +B X +C Z +C Z +C Z +C Z +C Y +B Y +C Z +C Z +A Y +A Z +C X +C Y +A Z +C Z +B X +B Y +C Z +A Z +C X +A Y +B Y +C Z +A Y +C X +A Y +C Z +C X +A Z +C Y +A X +C Y +C X +B Y +A Y +C X +C X +A Y +B X +C Z +C X +A Z +A Y +C X +C Z +C Z +C Z +C Z +C Y +A Z +C X +C Z +C Z +A Y +B X +B X +A Z +C Z +B Y +C Z +B Y +C Z +C Z +B X +C Z +C Z +B Z +C Y +A Y +C Y +B Z +C Y +C X +C Z +B X +C Z +A Y +A Y +C Y +B Y +A Z +A Y +A Z +C Y +B Y +A Z +C Z +C Y +C Y +B Z +B Z +C X +A Y +B X +B Y +B Y +C Z +A Z +C Z +B X +C Z +C Y +C Y +C Y +C X +B X +C Y +A X +B Y +A Z +C Z +C Z +C X +A Z +B X +C Y +C Z +B Y +A X +B Y +C Z +A X +C Z +B Y +C Y +A Y +C Y +B Z +C Z +A Y +A Y +A Y +A Y +A Z +C Z +B Y +C Z +C Y +B X +A Y +C Z +C Z +C X +B Z +C X +A X +B Z +C Z +A Y +A Z +A Y +A Z +C Y +B Y +A Z +C Z +B Y +B Y +C X +A Z +C X +A Z +C Y +C X +C Z +A Y +B Y +B Z +C Z +B X +B X +C Z +C Z +B Z +C X +A Y +B X +B Y +C Z +C X +B Z +B X +B X +A Z +C Z +A Z +C Z +C Z +A Y +C Z +A Y +C Y +A Y +C Z +C Z +C Z +A Y +C Z +A X +B X +B Y +C X +C Z +A Y +C Z +C Y +C Z +C Y +C X +A Y +C Z +C Y +C Y +C Z +A Y +C Z +C X +C X +B X +B X +C Z +C Y +A Z +C Z +C X +C Z +C Y +B Y +C Z +C X +B X +C X +A Y +C Z +A Z +A Y +C Z +C Z +B X +B Y +C Z +C Z +C Y +C Y +C Y +C Z +A Z +B Y +B X +B Y +A Y +C Y +A Y +B Y +B X +B X +C X +C Z +C Z +C Z +A X +B Z +A Z +C Z +C Z +B X +B X +B Y +C Z +C X +A Y +C Z +B X +C Z +B Y +C X +B Z +C X +A Y +B X +C X +C Y +A Y +C Z +A Y +B X +B Z +A Y +C Z +C Y +C Y +C Y +C Y +C X +C Z +B Y +B Y +A Y +B Z +A Y +C Y +C Y +B Z +B Y +C Z +B Z +C Z +B X +B Y +A X +B X +A Y +A Z +C X +C X +C Z +B Z +B Y +A Z +A Y +A Y +C Z +C Z +C X +B X +C Z +C Y +C Y +C Y +C Y +B Y +A Y +B Y +A Z +B X +C Z +C Y +C Z +B Y +C X +B X +A X +C Z +C Z +B Y +A Y +B Y +B Y +C Y +A Z +B Z +C X +A Y +A Y +C Y +A Z +C Z +C X +C X +B Z +C Y +B X +B Y +C Z +C Z +C Y +A Y +A Y +C X +A Y +C X +B Y +C X +C Z +A Z +C X +C Z +C Z +A Y +C Z +C Y +B X +A Y +B Y +C X +A Y +A Y +C Z +C Z +B X +C Y +A Z +A Y +C Z +C X +C Z +C Z +A Y +A Y +C Z +A Y +C Z +B Y +C Y +C Z +C Z +B Z +C Y +B Z +A Z +B Y +B X +B X +C X +C X +A Z +C Z +B X +A Z +C X +B Y +B Y +C Z +A X +C X +C X +B X +A Y +A Z +C Z +C Y +C Z +A Y +B X +C Z +B Y +C Y +A Z +B Y +C Z +B X +B Z +C Z +A Y +A Z +C Z +C Y +A Z +A Z +C Z +B X +A Y +A Y +A Y +A Y +C Z +A X +B Z +A Y +B X +C Z +B X +C Y +B Y +C Z +B X +B Z +A Y +C Z +B Y +C Z +A Y +A Z +C Z +B Y +A Y +C Y +C X +B Y +B X +B Y +C Z +C Z +C Y +A Y +A Z +C Y +C Z +C Z +B Y +B X +C Z +B X +A Y +C Y +A Z +A Y +C Z +B Y +C Y +A Y +B X +B Z +C Y +C Y +A X +C X +C Y +C Y +C Z +B Z +C Z +A Z +A Y +C Y +C Y +B Y +C Y +C Y +C Y +C Z +B Z +C Y +C Y +B X +B Z +B Z +C Z +B Z +C X +A X +C Z +B X +C Z +A Y +A Z +C Z +C Z +B X +B X +A Y +A Z +B X +B Z +C X +A Y +A Y +C Z +A Y +B Y +B Z +A Z +B X +C Z +C Z +B Z +B Y +C Z +C Y +A Y +C Z +C Z +A Y +A Y +B X +B Y +A Y +C Y +B Y +C Z +A Y +C Z +B Y +B X +C X +A Y +A Y +B X +C Y +A Y +A Y +B Y +C Z +A Z +C Y +C Z +C Z +C Z +A Z +A Z +A Y +A Z +C X +B Z +A Y +A Y +C Y +C X +B X +C Y +C Y +C Z +C Z +A Z +A Y +C Y +B Y +C Y +C Z +C Z +B Y +B Y +A Y +B Y +C Z +A X +B X +C X +C Z +B Y +A Z +A Y +B Z +C Z +B Y +C Z +C Y +C Z +A Y +A Y +A Z +C X +C Z +A Y +B Z +B X +C X +C Z +C Z +C Z +C Y +C Z +B X +C Z +C Z +C Y +C X +B Z +B X +C Y +C Z +B Y +A Y +C Y +A Z +C Z +B Z +A Y +A Z +A Z +A Y +C Z +C Y +A Y +B X +B Y +C Y +C Z +B Y +B X +B Y +B Y +C Y +B Y +C Z +A Z +C Y +A Y +B X +B Z +B Y +A Y +B X +B Z +A Y +C Y +B Y +C Y +C Y +B Y +C Z +B Z +A Z +C Y +C Z +A X +C Z +C Z +A Y +C Z +A Z +A Y +A X +C Y +B Y +C Y +C X +B X +A Y +A Y +A Y +A Z +A Y +C X +C Y +C X +A Y +B X +C Z +A Z +C Y +B Z +C Z +B Y +C X +C Z +C Z +C Z +C Z +B X +C Y +B X +A Y +A Y +C Z +C X +C Z +C X +C Y +C Y +B X +C Z +B X +C Z +C Z +A Y +C Z +C Z +C Z +B Z +C Z +A X +C Z +C X +C X +C Y +A Z +B X +A Y +A Y +A Y +C Z +C Y +B X +A Z +C Z +C Z +C Z +C Z +B X +C Z +C Z +C Y +B Y +A Z +A Y +A Z +B X +C Z +C Y +B Y +A Y +C Z +B X +A Y +A Y +C Z +B Y +C Y +C Z +C Y +A Y +B X +C Z +A X +C Y +C Z +B Y +A Y +B X +B Y +C Y +B Y +C Z +C Z +A Z +B X +B Y +B Y +A Y +B X +C Y +A Y +B Y +A Y +C Y +C Y +B Y +C Z +C X +B Z +A Z +A Y +B X +B Y +C Y +C Z +A Z +B Z +B X +C X +C Y +C X +A Y +A Y +C Z +C Y +C X +B X +B Z +C Z +C Z +B X +C Y +C Z +C X +C Y +C X +A Z +C Y +B Y +B Y +C Y +A Z +B Y +C Z +C Y +A Z +A Y +C Z +C X +B Z +C Z +C Z +A Y +C Y +C Z +C Y +B Z +B Y +B Y +A Z +C X +A Y +C Z +C Y +A Y +C X +C Z +C Z +B Z +C X +C Z +A Y +A Y +B Y +C X +A Y +C Z +A Z +C Y +B Y +A Y +A Z +C Z +B X +A Y +C Z +A Z +C Z +C Y +C Z +C Z +C Y +A Y +C Z +A Y +B X +B Z +C Z +C Z +C Y +C Z +C Y +C Y +B X +C X +B Y +C Y +C Z +B Y +B Y +A Z +A Y +B Y +B X +C Z +C X +A Y +C Z +C Y +A Y +C Z +A X +A Z +A X +C Z +A X +B Y +C X +C Y +C Z +B Z +C Y +B Y +C Z +B Y +C Y +C Z +A Y +B Y +A Z +B Z +C Z +A Y +C Y +B X +C Y +A X +A Y +C Z +C X +C X +B Y +B Z +B Z +C Y +C Z +B Y +C Z +C Y +A Y +B Y +C Y +C Z +B Z +C Z +C Z +A Y +B Y +A Y +C Z +A Y +A Y +C Y +A Z +C X +A Y +A Z +B Y +A Y +B Y +C Z +B X +C Y +A Y +C Y +C Z +A Y +C Y +C Y +A Y +C Y +C Y +B X +A Y +C Z +A Y +A Y +A Y +B Y +C Y +A Y +C Z +B X +C Z +A Y +B Y +C Y +A Y +C Y +C Y +C Y +C Y +C X +C X +A Y +C X +C Z +B Z +A Y +B Y +C Z +B X +C X +A Y +B X +C Y +B Z +B Y +C Y +C Z +C Z +C X +A Z +C Y +A Z +C Z +B Z +A Y +C Y +B Y +A Y +B X +C Z +C Y +A Y +A Y +A Z +C Z +C Z +C Y +C Z +B X +C Y +C Z +A Y +B Y +B X +A Z +C Z +C Y +C Z +B Y +C X +C Y +C Z +B Y +A Y +A Z +B X +C Z +C X +A Y +B X +C Z +C Y +B Z +C Z +C Z +C Z +A Y +A Y +A X +B Z +A Y +C Z +C Z +C Z +B X +B Y +C Y +B Y +A Y +A Z +A Y +A Y +B Z +A Y +C X +C Y +A Z +C Z +C Y +C Z +B Y +C Z +B X +B X +A Y +B Z +B X +B Y +B Y +B X +B Y +A Z +C Z +C Y +C Y +A Z +B Y +C Z +A Y +C Y +A Y +A Y +B X +C Y +A Z +B X +B X +A Y +C Y +A Y +C Z +B Y +C Z +C Y +A X +C Z +C Z +C Z +A Y +C Z +C X +C Z +C X +C Z +B Y +A Y +A Y +A Y +B X +B Y +B Z +B X +C Z +C Y +B Z +A Z +A Z +C X +C Z +B X +A Z +C X +A X +B Y +B X +B X +C Z +C Y +A X +C Y +C Y +C Y +B X +A Z +B Y +B X +A Z +C Z +B X +A Z +A Y +B Z +B Y +C X +C Z +B X +C Y +C Y +C Y +A Y +C Z +A Z +A Z +C Y +C Y +A Y +C Z +C Z +B X +C Z +C Z +B Y +A Y +C Z +B X +C Y +C Y +C Z +C Z +A Y +C Z +C Y +B X +C X +A X +A Z + diff --git a/day_2/main b/day_2/main new file mode 100755 index 0000000000000000000000000000000000000000..d999c92503073215cc8744edeb8cb88467ce9891 GIT binary patch literal 45104 zcmeHw3w)H-weL5R$pZo;$U{Vw0Toe9$cvDOXm|`vlt-Ebr5@~;$z+mDO=jZEBnDe8 zHeg93x0L#7wf)iivpu%8E%kLdYCRFH(H?saK2GJ>T2pJ=Nuiat)>2EG`~UC9H{T31 z81Vjj?!CW!kXd`Lwf5R;uf6v3d+bkn)~#_m9EQHKjLQwiy5>tvjUw#(x(Wc)7*)n( z{4OvqFme!g37n+YNC2w54mp!yp2BAVGTkf&(!e{4BQ;&GN|y>(D}D``2d{=-##&A%zdDs}ON|g?q{0_f z`83q|eFW)fm$6>ToJPIMFV+4!-mCJ{kbc5zaYwMZvSM*ZOHoHK)ZJUuTUA+9Sy3Df z7ncb-^(w(1eQNE7O@?!uF-V+F?=T!mai@xdMO@^ajz5~6={NlTwTHSsJMWz*{_VNJ z-P^;xKe=|-AIZaVP$qeJ5ywA$QT-zPkw@6aQHZcx;EI8panGbxOZF_^j$qpBbqG5n z4dpjbEFHcMnWV$7fsAzcmomud$u*4mY4WWDKAoJ`P|$Sv$tZX_{H>^%boeJS;D3;z zTrC;&>CRxcTQbP`LIypr$sqsN8RXB+p#Loy>@%3b{%>W_b9V+gU(BFSe};O$B15@e z%fP=UgPzU|dY+X*&qW#R{N)V%7i6$!Lx%F+mO&2NsT+T(S4jptv}cgNJcB+cR$BR& zWWc|g!49i4=zmiN`>%ohry8@38lNm#Ar--O2KeV2Q;f}vWqhK-8>ZRT84j7zm@g7D zO~b5hTyM4nB7wGGG!}?7u3yy=4h0&0%^d+rOHa9W!&MEjrKaic?JX@WEo=5ggMP@2 z1Ve4L{)Sj-slVM9F=G*5Fcz)#dm4QB@htU+JG*?5fT!*%zhPdx;nXFRmYWTxKisv| zr2MF-&JR%yOHqt#8)6;N+7om3)B{&8^$SD6fUmRG-)MRomYCF`Ay!smnz8ms_(roM z5NeCHn}J9q9I-UiXF}1CH40-dwNbUzhJM(q@|;-M`YFz z?udGVLKdB4b?NB}UL{jD#3}-zmX5S)r}2SCv#|tTP)XN0S-oX&<xmMHXC+)Nd8gRorP zn)-%tgXw`-)Dv2w^xV$}XkTrC80JTTbXJl6Xfq8u0MR^@X_lJxnGMrW zVWI^!mYN=DV7B%4nq7fNG#v7Ez?;mT5>Z;#t5rK?RY^KVBEGF=D4<)NaH`YkQgkzr zUMW1OOnB0%_Xo1ghi;Va8B4Az%lN0<>s8ZJVAxo|Q{Sm%pK8yUaFkO`iOy!d84bi# z?`0LG;}c96^;g!c`N+k?wIuIv3T!?ECO8G*CBg6>Dr~$+MhbYZ5Vu#yX{jp zQ<=Gf&BkmGVlYHy*ZJ$OYA8qVuqkw7Fw|n!2cq4b=&Lz!`me|EbG_N>3w9W2GZ;63 z_xJit)NyYRHZid{;c&XZ{7?c6~$#K(Na5= zvjrzsJ@U_mwTx4QiOI$aCJX;0E?4molV@=;<}@bY&tXgy99U_IRFuQ8!}tp3TzWoM zw_t0&0nW#O<3-*F6}<-W>A~P+u7;mdxJN#J7iK)!#`7xPJv%soE3Q|p^x4J^MWeh| zzI#1pY!i$(6>jTG-$j18#&2}|*xi_M0DNIa&p)-|h128qWM-MZXOGDtl0*4M%&86uv4`YLIXA>!ab)>YLcgTzm? zuqc-e4+pX?uMI!R!Wu@M4X?JK1a-3wUtr^Jvf=4>`f6{IA?h<#BLTabWQ2J8I=a_} zpC(zv?=~Br`x^S%*(5`hGeaW*cQ?rh@oLLXAnvi@&y+0UcdrdU%Z7izhCj=O-)F(Nj9Xyb0^=6=|HA@*EI9XlZ{LwT??Cp`R~UwO$6(AkdeGbVY~C}XfTK%( z2=wR$FXFdgZVf_=x05z9Jc{dr1B^QuKPcjlGtQ;f$e@Tn#CR6t`$YVkjB{xBu$_-@`bkyCYp9{#nMkL>*}o@lP|(CDurth~LCGmsTS+A|7Ep zpYakA|2X4ZN{zThyqR$>ZAS`4{94Ajq#7|qyq<9`rACha9f%9AWSmQ=kzo;E$vBrz zBL_wNQpUMt8W|MvGRCJdzE8w2W}Hi;k-Z{5pK&gYMs|z%Y{t1H8rde|XE4sC&`6hv zPh^}+pphmKcQVeU&q$q!zkfO6T=I<6i1;5E=Tc{+M8to?IF~phZV`WraV~8}3Pt>N z#?NKk5b>88pUe2szp?y3WZcd8u!tXEd>-QmMf`Ebxnv(16!C``=MrXQAL8`4(%;th zzw|M0|6AU^w~y8}dP)aNU-0f)z6?$=I%Cmt!+5u~xM1#fB!NTjTK;(m@b1d~EJ5|L z*bKPp6fn_MCyWjk%-u%5XA}g#Pw+3fmf)hld;5=ipZ?ty-lvacc^%JrU;2A&It09N znG}#WI^0??cXc8?_1m_532bU~mv8d+E&nVy4R8N1W0SoD%ilx3qceJeiu+-U=dve( z(Q(}~34NbwO@!HAC~u?nhvIhw zK1CP*SGKcw4q9XX0q?*rrn1=not$5m7}hMKUm+aWAu}0@pNWJc>_@!2?i4IKiyxEu z>AwnTk}%^Fa8Yl+ARI+&N3n8tkK8ZP?jXxk2!dfK{!K&*9y1D_8bsvlaMAu9dztMn z$wnKHtK?3!n=j6yoNcE_ZewjLi)893LIsK3K4W zy~u8rJMmY_VjZL~L=V4D@_;Aa;$0-o9b0?2#@qjl%}!6iPBsa7kZ?GQEZSZ}@%tgh z+kc1>gUC4kDsxdv4qSKa1yRrF$l)zFAF|i%G1TmU2MIk#y}R%S0r$ec5Fgg@U&weI ze8U5U_>B)3)d#wB_cy|php!fBqwkob`wU6zJC+6FIuffjF)KlIfOrjwa|F>6c#BGt zEvVjsO~+u8>B0kJ+3_qCNR^`h=6L_nou0RcJjWr%*mm>V*K|)ngoDE2$%r;~=ORis zAMhM;c#aQvjwc+Qe&7H7b*L5iIfnqdHH4pg?x7XRqy@?0?Hj}ZnCIQK=^of*(AzJ3 zyIj~{%VIgZKYG-Ii6GS0%R3#Gi@93rE0SS=bc8crY(VmQb zOkz2-ja*F6+9f%VU=_V?0BJn*pWT4ePUQDrqA`26>G(X@0`#5W+cseIKZowpUrp3d ze35XR1HjD2py36r|F!r`>fVng?b#{VfyyG^z>NEsl1UVH9+^bOvSIJsVM5D-rvwmr zj8@4!t`VFw+7oGid5n$pP9~rTDR8c6g)P7h?BK7E@r07mCuN+UknvT>kclYgzW3V9hac_LA1L-EBhCED4*CN@~* zo$C&JL~EpLp#A;XYM!z-W(p%j6&0^z)@fp-=6-cc>@Q*f`o zqmJ!^-9Hw@lwR;}f3oM4WVuhjE3A{&s`s!5S5@@@!kMi9cqZCF9lL256jP=HoQ80^ z)XxqAIP{J50?{dMx8=n7VWyn+kWUNnN(t=CgpfX)kQ>rey716V^ipIi+V!J<9391U z=Z-;HsSWUtg{%fR^TE{qeZX^&mF5*1V3_6LhgKq@PopY^z5TB%MarZi!^zD(JKh6Z zC%033%b~cfVtAJZk}58MENu(?EjQs`Y4EgNq41Mm@527{GW&&^2CJ>1DovGbU~n$g^><@0a9^Fr)Ig? z@e(Ap{G-ODz z)QFuaB*@l*a*LL6cbfdH+Dw+gx)$yu>~p(JC`K}+XQp)0$S=d7Vh(+*pI#-L7^AYr z)w$FFccQls2){*}t||0ZABbIs)WfW{#ZW=kIB23Lg-}td^GIPH12t%BDtUih-r*9R z_K!3oml{%$T6Q6#=Ya^_2hP+|kk=r6Ffl*TwiSHqi%O0|Z*{F7raVY+( zkcO~mKf<1TtY43$vL@9eA+-`vsP(EML|MOygvxZ*+#t;`VdMIs>JnAM>Jr9H%IxNZ z7}ireoa_NO*FK8U}FmEIqtEnHI zKEq&(ikZ1*AJ!N6^FX>VQ4#yNezZT4WYd0y{-{JB0{Rfh!+`ftN}(!qz$D8CF!0{ZZiz)>QQ((SYGOV%9R~?f)-IpDA-ihvXT~lLCk0k0qyk zhocONDLRMl=T*v|N+VEDlzbEZ>I=P#u#$TE{VdciG7y?oh*3?jpjh-Vau0jq#t85C z?wW2Z5{FypURSsq0o#H)JN|hsOVwX zONeL|4RO&k>>&o=xzz^>_HdVJ5@P$w{?Xsi){^(N)ea=3R7DQAR$DP7iSa zAv{;)b1$*gp5X|$6$GY@m}Q>fC|4l@vk92PF2vwR_7z!n{1u^vy{NM+W2x@$YO%tf zB~nB0wIXV;To+k$+$5h#^k8Bn;RtH)ysD^-+*h-PHFr`K_jADJALnN12t|)M6u$@w ztrUq&l7|}Zq3ii0Dy{^AVXoxqt@dHj+Av9fE6e-m*Y$*OSJLEdnOM)mBU2`C_m0rt zw1-M%l$zH<16J^F(M=@0TpB?%M;ODlK1dA6^jgVQ2!J5!^*}U-VNrRhi!{M5dtCe6 zhI0&=?}|qHE^QmPyuV-1b%)|^C|cY9EaVSU->E`xYm{@!Vt{%OgWWo8Gxz^2{#VGx zT@Cj?t=OX5ryAXKE6%WYwjcc~uL99wsHxJqA`6ss*CzHCP*V8$JfcP2a2{lBZ7qx^ zHE~$m8Z(pKN7X|P#Vo^&bkAVHV}sT0PLr5t=#m%MobF_HJj#;% z=R52pF=(uZbXJlWaej;K5<~^ZK2)rpTgfWC2IG;f6(;E)0{08g7-CN!WkcchT{0AG z{2I5wxCO>7@c)kXt}IOJ}Pggf1#?v4(3FzOD4W9}ZjZO~%$ z1pIgf>C#K_0teng5idCeL(xDaW;o8yTJ}69lba#>**8Z=k0U(&timtKm*gmw*lt>x*&fkUhZk?*l#pxCk5CuL52Q_%7fl0jJ|>j5gd*r~>>Z z;AX%#0DA!oFgo7@SP8fv@IJspfKLG)1N=GQEG)Js;l4-}U?t#Yz%K!Q67U;<_W@49 z>g`FuIeU;z%@HhBV*cbk8OetJ5W!9Ai`8VcmGp?Au z?BeqC=L0L!ZUMXo{*K}q#)>J0w>ei$&RK&D6#bKcD?t~};cNQ(1f4Us3ed{{t@ND< z`jbGfIZ67Tg6@OXpOAlbLjD}u;Ux6SKrcKAonjp~)vXhj z&As=_$n$J%U)qs>)zB{vIj(o$gxUt)zO1aDI4nKy2mKlJBf_wn=emTR&w~B~(8c=_ znqHfrzYY4spo{kfG<{Qo?m|6&`y}bl2mRiY|c00r0FQPnnJ9 zQ;B@;Kt9id=VI_!WerHW8>mM>e;M?Uo$l$&QbiSQ?+|$Az&A_nJRMR7ZMqkF6obAO zVb^!i0c)F5&Rq#z+%CiTI{3VHInGsrfi|fD{og@fmqcG{(VIYjAM~WUMIJYRgXy<{ zJ`*cDw>|woCGy{^=;9q7t>d}`eGv3qq@QO`za>E*20ah-biU6#AAp^lpwrf_M=+4- zJe0kuZn4*GG>Gxd}AgB}Nc zi9LN+BK@hD6a-#bbA^Fexfm;o_3wr_g+v)V9 zFC}#3laJfMbB>*7bArAT^iPAHsSFQ*-UWI(e`Xn;SLrj^Fb;Yr(r2oJJT!q%fWE-4 zpD&@`LeOtLiGE(t!=U5oltdlJ5;kfFeJALTqK~kA05;0{R-&K39Xzu!KWnzjaLSIJ zW#s#vTR_iL#uq_f3%YpkO#A6a5@p~#>vGUD*>DoNqm7{Rp-@Z5D--E20iEer+UY1m zFIe2btpmLY^usB1=g$)|y1;WG=9cMXu#CGwzY_FvyNpmG{XWpI13lB6;2`K>&@7277w;2W<&E^n&LR@TBXPna4e#e+TqTcH9s8Jc3HgUq`b=d!2Ks$Se~n#7XT1=>{AZz&y?PS;sz9IqlhM)or1Wy~%JiE-Ujw>$ zH&p9aC-q~J(NV{Ya`emBW&cZ-@kPh8j=Qpqm$HBWVP;+SJ1)bY{WF(wm-BvSf3~qb zd#<36%D;(Mm2YzxcRD0L<&9tC78tj{xCO>7Fm8cy3yfP}+ydhk7`MQ<1;#BfZh`+! z3+V5B>F;{!?|5+=j2FK-#!JWVNQv{CXLdUGzFiugfgkWm%adf~RJphpxPw-rSk+v)#TUHUunsY+G4C1#C+S1Z`6V2^^g zDR`HHUsv!k1)o#!#|r*R!S@u*nP-S=rh*F;tW$fps$h?Tw<&m+f?rqgF$JGf z@W%@NO2PLO%n=)v*bh{2fr6C^u2Jx61zQ!ATI2q%PlqJL7ZWdaFT_{bFLIZb6_?@L ziSoJxz$t>#!Sy)`VxLv<*a6#<(^!gM)gbIdge844npJxGWg`8C1l=tKh`ntDbvsX= z+Aw7L8?5v*ReIfyFH`-5j!Wr@U+zC=8xA4fL3C1q*?aJAjANT~RTAxGv=1g@?M%5H z20Mpr8}WA?{<0i---EC$XYM4BvRt{x=o_#0@Tj*F&uAY94q>TUXW#;6%CjipPZ85T1{~M4A+zxy;Mve?%soEsGNjBiT)#%l!5?Q4 zQk?M;LUVFmjy(EI-tWko54DDm+LWcP8g0qyNLkulrh-P(q z7@|3x8yVWm5MLH?Ji?HlAwGoV>|}^U zQv`%Bi3KSO&z$NwqabU_*;6iZFhg56PI2iod*0;gCOgCBR~K0 z{4CrBaxD;;?3qY#Y5ubO>U=WfOtwXNPbYU85SL;0n5QV&WF%#R!%;iUfix56LDFJi z@~1hnrsU@fY4h?(nj{j<%hlp1FNCx?V4X760fqCk=AJ#b@Jw{wN-qpAh0`2D1oEMT zsY*YQEgZ?pLeZz4DcPYv*{8dp!sYq-&`}nO$Qeqc;+a`tE8|W_zLRr8*wU_$)6R3n zS!B_+gO18}NMsbAx#`S=`O{!ND(W%MC}t)O$6u$QAI8O)K(L3!b5QtmI_5eHoUCSt z_%S9p^&p#7<=B{2SiJJQ%h#WO-ty9{NwIdk{orui1mJtOhATN{9G?K@2xiLP(>bfzvajtVIe}T)a5CHQEyBiY~^fK_*TS5?|^r zZZH-%cLzIK7Ps-k+l!+SzY6)I-8|pNy`sTgR$N|R|^ zkuH1$yc@Hc@-j1KM1!G9v$Z3P4~e(h_`3OBa59xvlBqo$iMcruN=WVMm1(0m@*-g3 zSzbuOXU98(9a{}gM{8w;c}+OdVuadTB9gHSG9Z-sbsNah7c=S`JRdPvHJEGGtypVr z*l5;!8X8yBH<}wan056Y&-%JXb7gH~BGXXRzzHC2Zt+8P60z=3G}smjvWWWM(J^lNuqP_@+8-P*x>#Y6*Aq?2)KX6%<0Pe0k`Hu)$4% zNZ1IOOdh={p*zYAY)c^OCst-5jW2B`!Xjgc=jj>B>Q)9x=5OgR%$4DAhoQ7(CFu$e zghR+FwzVs8vLdgqU0c7R(UWZ8-m)d445F^+R;x-&)f&ZJ)ai@(+n3A3tPqQJhXTvn z0--=8=yw;jxr;WIxr^}W_~mV(Zlo$|1+1zr3Wj*d1EQgDQCCL{fk3Z6&=tc|;Za1y zC+my+9lmILQCB1!!vo=bUc9K)-)f65Z{?%oMXjBINL!!?4~iFwr^|hz7-dAl-Juqo z?g9;C?Uqa>EgXST5qgbK!5{9#5i=A8-XeUMKNLo!D@YB~W{IO)ig*-C$MPUf#R&R3 ziUPd>oNEF{mMsW1Ky$GMv|l9Z0#0r@V|keoi3V;k{ZTYHUmMQa5Z~ihu37~~Uvp3# z$6-|^KF=@P(gx9tR1Mq2v%=_8I1gtd8a}LGc1Hs(#){Js56*1}_AZ7oqKs)6=xDVo+Z_TA zy2c(Hu7)$!EH?O7Y%%@_$8MGTkm z`_WVmPVgL{=sBcYF>w8!j-N`V!!HEhi5DgI&Q}5y;22E&!4y2Fs>JJkMxCkw0SBg= zbwQ3h#1B`kl%w}AHGU5Q4m=&N_Z2l>EXUH=;c>w~+xSRIzFZ+w ze(yz6LcJ377lqgRrF!2mlYM4$7{{0F@7tgR*g#r)ih@tI&L`CD%Y>Yn*7=MYzgpmD zS^Jb4&v$C)L;wA1gNWN4yuPgPuP>5uPV{(jKZ5+f;3NuHwFCw?Le5ZOJGcON@?W6@ z>wTa84EzqPRmfkxR7z3V7^@ZjJ*Cfjl}Qiq>GI|Im6VgJ|BtksDk*@=4PFzlLMg;< zbCplV^=~2Yl+#N`#ii}Qk3pu(cbDR?N#XyI!v9X$d5RQg?83^)jeOlH`JRE+idnj0 z)JR4o7uP)Csn2JWJ+=N#z^Bt^hvHw&y!R{o#pqAd>C*^2GXL+@qbt8qpHow#(1{D4^;M0}&sN$cc>X+jdua)SMnC~sh4#g5}d`98#QWc`@ z{2vP6toSwlh{7LM^`hJF5*U#3Q~M>K!hc+qOWWXX|4-;jYn&mrXpRffGP-@Xj|_bBP`qlaV z3ixz-@&Rz_ncCl8F(W!Y@!6YW!G5DA5!)_tmOYt;p z0C>&=Q|Dv%0H4kd1?bQUF&o;f9Y^Ui9r$$o*8xvGD^$7i75}#te(+L>xJKcR3OQ4Z z7cP*9=M=sWH(r@CYMjz}RRFKUN`wH7ivNw2d~a9y>y>}%{`n<^Ppx;}U}e6k>w;R~)8%Ud z@3t$V!k@^%zb6C!Tfj5l)ba6e8TjjPUxfUVm1BZUTzeG0SlL1A{Gh@gSN1GZ{6A9o z>}rY7<9Mz+eYs`=&wL-cMDm9uFus_9|6#>nsWR05kUdYzajSNx>wTHRr_N))2fQwe z%2I%A3^eKR8-S;ty{cS3mFPBw->LN1?e~=oatz!4P-3%-+iG$@B^v9-7x4Yq(9#Dx zo3T#Q&qJT1*d1#Ln{6H8W*)VPk49h%wY%5Ac3xLUAQouh#&Mw?97@i-JP9Vk;E3mj$Sa9#LDwAi~U{LFvoed>u^YHFiajqD@w&_n=u^jNes3H zgE#rOb7}f;ASZU@#M!%ymjrQ;@Y;17S7LwJjCMDhwWfJ(X_-8OI&5}z__lI4aZUY- z^&Zo+VKvXaHnH_;db|qhU0rXOt3SG7#roP+mZ*(u)--r<8t#gf>pbe5V4VAVwfLTf zIK&s{O;>dJf|1&aI%Ls+({OR9ZbKOk#TCb{w#d(I@Z{GzVCC7bU`R@YQ;2PcAD32& zFLcO5gXQVj6q%HQhwgf+txtb2!z)Fmo}PLfS&9w))m9PII&n}j+3%Wm$U?1Tj4HX6g%D?WWxWkvdRc*BHU^E z{Qf{RntI&vKj!#hd%=p!N=2b#mGYw}CmPPGADqXH&!O;CSyekY&KUn`Kq+FZHBIBH z6zZ7qlN}Y#Q*iAXidiq;U`DxI$fE?}4eaf3sgZvBDg z(5D-p&I!!y9@L@k_L5n3F;+t+_=4zfY-Sy6ljA|lIPcnQ?2<=dvk|dwl6UQeL6FyK z_8;M`?BQzHHJ74Ap*=`kZC!GMD`$h_>E7bB@bt%R+lxL%A55HxZ0|%+`KwB6>l;eg z#)M*?jksH<+w&-^IE_5TzUVL;5=|C83mSy5xu?1QstpY$k2ep6Bb^wPbpKQ<4=MLFtTxpV%t;x_ zLzgk2oZgx6DV5m}D~DgzuInuE$c`R$w2|Fqd8`{FqZ#N3bYk4A-HhH+dk*SLoQ__> zyCR;A=vq`KF$Sxq@7t66^@P1r#|Ep5D+{0<`Os-M3KF(nrpj#k(NaFcdD7DjxdRScnqGW z#({ruVR_s-s?S(`O>rd9T8y5ex7X|nM51Aymmb?{_F&>^??O6*WA8#v+JBrlx526J zE6oOLx;Iw8sZyhJz(c2zGrd#ymvXd#C`K@xD38YI>9n^(S&t2|Dm`+gnt;8PR8E`a{Lk+x3*6wTzsfJ>MXBf7 zOIhgTaSA>2Ebk14YCFLWHP9l0y3Mvvt)=iB8U%6`H;@7KRyg|H>Yo zQv%K!(bWqBlwtiMjo$2QQOlfA097C=G->8nTvkoPBhN9kOFdP%Dlv?v?+23xgN);9 zix{s@t7hn;oHb*Ci05aLC$ri`OR;d{Q#M!=gj>_hRxy$#=Gmv(zj2fhS=S}Gvd+7# z94pAEsUKZ21NaDHH|F>)YLfne!;tEEQ7;vy%@@qlQ}u=o|A#88Gw8vCNMdq@a`Xmc zR;xQ~p@W_u9Z6WZt5-jdv!%Ok7B zs+n2oho70HPQuGFPQp1kwq`l_AZH*&LHj;HrbP*R=rT-eIiZz%2`Q6ecIUb`-+&xH z&~YpDJRG7sqEIQdC&$o)DXaW|Xc&v1fUmRG&nfE?^MrAMeZvRls45|JW70r{Uah60 zuBWqR)#lABR@R!O#pT7is~fA;(s-4gNQOJ2p1L*l4dDjUlRTE$X9yprC3JP^75%C9 zO{h_u19MvAN1G})?RqBWV`H9MSc@znjHAX_{2^&=c3ORXQfaIiY1-z9Z4K&W8=g|8 z5tV9A15Z=K9+n>5JL8gFEUi4;k?IWh1O!Gdw78YV)vxXVU`q_U9wEV3>lYhmcH=71 zV|6o&Pb^hb8DQH}t#@loN*UqRZq%uY!{%WFMzF4}CZ}R>cR#Gwu=GSX;$z7E>%nzB z9+nMuSOWuQV`>j|EX}xr>qG7GAK2*21EChN+HYLHO7EqPbsCejy3$*sr`}s74g9Lg z$1;i1U5M2So@}R%!&r)I!7*CHksGl*JF&y3o7QvStc(PN6JsSK_e^Wyv>v$)09|b| z>V=P=EFs+AN?48lx&`y~jsS8wRgaP_X6&O@DJEIgibkwvIOdJP#+dr8H?96k&ACoh zTXY1N;{~I5XcZGxdnH(%=Lfp!lIB2LFeJSix>w6#FBp#2`qPYz{+{M^8KK+phr88; z%i23yYl|fdD;Na9QT-OI)pG4J(-td^PauG2fJf69sozHeKU*lrU*GTM_~x}Iu7=L*e_!4>xb z>pPQHGS+CrnW=5Aikn3l=c*-%$tqTF=!%8+gd->PR1MrQVx@f0MEL`UI*hpui7{98 zEM^;C!IABrce~M8syltx2ShPy<;+9euU2goij-kY!>TaYh3-h-?!7VM>%vBCEyzn+ z0)F3C+;>sl?Wx387w>IsKqBVFGjiaQ@08&*ICdX9ePAlYxQp0O<)K7=D+ zCd(OvH0%f3t-7l_+AeO6K+FG*y-KT{o$`E6OtbvHE}tLUbSMrQvu^=nP1|GtEUIw(VxIY;_r$9XR{AQHUc(wYGs6140FAChz@ENWrPuI$&8VP$FGZtkQ_}1A#x!(mMg>#T z^SMVHwG!6lA5{5kxKO3bQ7~11J~zf^Ds_7OT_+9ORfa4hZKu=YaaM8h`DJFQ)9dd< zX{f&oCAp;x9VWa1fBXiMPOrbaq~XUDv({hpX?P3h{HBwR>+d>gIH=N7f9k3AS7`B` zJd3E)>+ecwSfw0B=daW2^52cLOuteI)ZeMnuu0Vi(=$zK`mX}VEVO*XjR-Hd__f}j zk};W=4inyoKYMz&n^+`w3t)(|YGhFS;x&RK_|J&h)9dH_H9VjTnvzaMjc=!<*Kb#9 zI9W3)nCia|tMuCbMvY=raEpp+pzWvQPar`3b^0welA_^@njq1lu2fKf7w~IOzi^eL zYS^nEI97>L^M55J{oW0dQN#5rod(Rye*F>=J~OJ^#CpF{zh|lIOQ+HKYxsK*@al<` zUcb+&q2|k!{%;`A_jLaHyJ8v^D*Lhh@Y3?MUOd~9Wzy;QnS#yGuu4X)U!7jV{FL1FoSbJCyRPq z-lFRCsn70eaT+dE>8*q+Q0J3@qbUS!ca4@`ve2;vtZ9~Eo_S`!biNw5DntISwn+|t zlFELiL=ApwDiufmtsEF|y`Dl$i5l0b^r`l1xL&5eDW${E={0Q6kp4$unf`LkD5I9H z8qF{6=&)iDAfE#hu9Xs4zp1>8r*tubw@#%WRuy(Wuy}>V@;~jD6M)mcClackl26OP bpXb}LC+a#C +#include +#include +#include + + +enum class Play : int { + FUCKYOU = 0, + ROCK = 1, + PAPER = 2, + SCISSORS = 3, +}; + +enum class Result : char { + WIN = 'W', + LOSS = 'L', + TIE = 'T', +}; + + +typedef std::pair game_t; + + +Play char_to_play(char c) { + switch(c) { + case 'A': + case 'X': + return Play::ROCK; + case 'B': + case 'Y': + return Play::PAPER; + case 'C': + case 'Z': + return Play::SCISSORS; + } + + return Play::FUCKYOU; +} + + +std::vector read_file(std::string path) { + std::fstream file; + file.open(path); + + std::string line; + std::vector games; + while(file) { + std::getline(file, line); + if(line == "") + break; + + auto opponent = char_to_play(line[0]); + auto mine = char_to_play(line[2]); + + games.push_back(std::make_pair(opponent, mine)); + } + + return games; +} + + +Result judge_game(game_t game) { + auto [opponent, me] = game; + if(opponent == me) + return Result::TIE; + if(opponent == Play::ROCK && me == Play::SCISSORS) + return Result::LOSS; + if(opponent == Play::SCISSORS && me == Play::ROCK) + return Result::WIN; + if((int)opponent > (int)me) + return Result::LOSS; + else + return Result::WIN; +} + +int score_game(game_t game, Result result) { + int score = 0; + if(result == Result::WIN) + score = 6; + else if(result == Result::TIE) + score = 3; + + score += (int)game.second; + + return score; +} + + +int main(int argc, char *argv[]) { + auto games = read_file(argv[1]); + + int total = 0; + + for(auto game : games) { + auto [opponent, me] = game; + std::cout << (int)opponent << " " << (int)me << std::endl; + auto result = judge_game(game); + std::cout << (char)result << std::endl; + int score = score_game(game, result); + std::cout << score << std::endl; + total += score; + } + + std::cout << total << std::endl; + + return 0; +} diff --git a/day_2/main2 b/day_2/main2 new file mode 100755 index 0000000000000000000000000000000000000000..853f0d0974bf95b19825f635d1a18f9e3fda904f GIT binary patch literal 45544 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 literal 0 HcmV?d00001 diff --git a/day_2/main2.cpp b/day_2/main2.cpp new file mode 100644 index 0000000..c4f39ea --- /dev/null +++ b/day_2/main2.cpp @@ -0,0 +1,116 @@ +#include +#include +#include +#include + + +enum class Play : int { + ROCK = 1, + PAPER = 2, + SCISSORS = 3, +}; + +enum class Result : char { + WIN = 'W', + LOSS = 'L', + TIE = 'T', +}; + + +typedef std::pair game_t; + + +Play char_to_play(char c) { + switch(c) { + case 'A': + return Play::ROCK; + case 'B': + return Play::PAPER; + case 'C': + return Play::SCISSORS; + } + throw; +} + +Result char_to_result(char c) { + switch(c) { + case 'X': + return Result::LOSS; + case 'Y': + return Result::TIE; + case 'Z': + return Result::WIN; + } + throw; +} + +Play cheat(Play opponent, Result result) { + if(result == Result::WIN) { + if(opponent == Play::ROCK) return Play::PAPER; + if(opponent == Play::PAPER) return Play::SCISSORS; + if(opponent == Play::SCISSORS) return Play::ROCK; + } else if(result == Result::LOSS) { + if(opponent == Play::ROCK) return Play::SCISSORS; + if(opponent == Play::PAPER) return Play::ROCK; + if(opponent == Play::SCISSORS) return Play::PAPER; + } else { + return opponent; + } + throw; +} + + +std::vector read_file(std::string path) { + std::fstream file; + file.open(path); + + std::string line; + std::vector games; + while(file) { + std::getline(file, line); + if(line == "") + break; + + auto opponent = char_to_play(line[0]); + auto mine = char_to_result(line[2]); + + games.push_back(std::make_pair(opponent, mine)); + } + + return games; +} + + +int score_game(Play play, Result result) { + int score = 0; + if(result == Result::WIN) + score = 6; + else if(result == Result::TIE) + score = 3; + + score += (int)play; + + return score; +} + + +int main(int argc, char *argv[]) { + auto games = read_file(argv[1]); + + int total = 0; + + for(auto game : games) { + auto [opponent, result] = game; + + auto me = cheat(opponent, result); + + std::cout << (int)opponent << " " << (int)me << std::endl; + int score = score_game(me, result); + std::cout << score << std::endl; + total += score; + } + + std::cout << total << std::endl; + + return 0; +}