diff --git a/day20.py b/day20.py new file mode 100644 index 0000000..c6e7378 --- /dev/null +++ b/day20.py @@ -0,0 +1,141 @@ +from tools.aoc import AOCDay +from typing import Any + + +class Node: + def __init__(self, node_id: int, value: int): + self.node_id = node_id + self.value = value + self.left = None + self.right = None + self.was_moved = False + + def __str__(self): + return f"Node(id={self.node_id}; value={self.value}; moved={self.was_moved}; left={self.left.node_id}; right={self.right.node_id})" + + def __len__(self): + ptr = self + length = 0 + while ptr.right != self: + length += 1 + ptr = ptr.right + + return length + 1 + + +def llistprint(llist: Node) -> None: + ptr = llist + print("[", end="") + while ptr.right != llist: + print(f"{ptr.value}, ", end="") + ptr = ptr.right + print(f"{ptr.value}]") + + +def mix(head: Node) -> Node: + ptr = head + list_len = len(head) + for i in range(list_len): + cur_val = ptr.value + cur_ptr = ptr + cur_ptr.was_moved = True + + ptr = ptr.right + while ptr.was_moved and i < list_len - 1: + ptr = ptr.right + + if cur_val == 0: + continue + + if cur_ptr == head: + head = cur_ptr.right + + cur_ptr.left.right = cur_ptr.right + cur_ptr.right.left = cur_ptr.left + + target_ptr = cur_ptr + if cur_val > 0: + cur_val = cur_val % list_len + cur_val // list_len + else: + cur_val = -(abs(cur_val) % list_len + abs(cur_val) // list_len) + + for _ in range(abs(cur_val)): + if cur_val < 0: + target_ptr = target_ptr.left + else: + target_ptr = target_ptr.right + + if cur_val < 0: + cur_ptr.left = target_ptr.left + cur_ptr.right = target_ptr + target_ptr.left.right = cur_ptr + target_ptr.left = cur_ptr + else: + cur_ptr.left = target_ptr + cur_ptr.right = target_ptr.right + target_ptr.right.left = cur_ptr + target_ptr.right = cur_ptr + + return head + +class Day(AOCDay): + inputs = [ + [ + (3, "input20_test"), + (4, "input20_test2"), + (10763, "input20"), + ], + [ + (1623178306, "input20_test"), + (None, "input20"), + ] + ] + + def get_inp_llist(self, mul: int = 1) -> Node: + head = None + tail = None + for i, x in enumerate(self.getInput(int)): + n = Node(i, x * mul) + if head is None: + head = n + tail = n + else: + tail.right = n + n.left = tail + tail = n + + tail.right = head + head.left = tail + + return head + + def part1(self) -> Any: + ptr = self.get_inp_llist() + ptr = mix(ptr) + + while ptr.value != 0: + ptr = ptr.right + + val_sum = 0 + for _ in range(3): + for _ in range(1000): + ptr = ptr.right + val_sum += ptr.value + + return val_sum + + def part2(self) -> Any: + key = 811589153 + ptr = self.get_inp_llist(key) + for _ in range(10): + llistprint(ptr) + ptr = mix(ptr) + + llistprint(ptr) + + return "" + + +if __name__ == '__main__': + day = Day(2022, 20) + day.run(verbose=True) \ No newline at end of file diff --git a/inputs/input20 b/inputs/input20 new file mode 100644 index 0000000..31e7e82 --- /dev/null +++ b/inputs/input20 @@ -0,0 +1,5000 @@ +-5623 +-6348 +-3664 +5754 +-1410 +-7634 +-4708 +7273 +-5741 +1906 +256 +-4554 +5995 +-6030 +-1872 +-1031 +2193 +2912 +1425 +7830 +5063 +-6478 +-4156 +1993 +-3710 +-6446 +4349 +-5072 +-8699 +2795 +7437 +2333 +-2894 +1076 +-6406 +-5057 +1198 +1557 +-7008 +-8555 +2233 +6866 +-9102 +-192 +8494 +2722 +9758 +-3196 +5709 +7542 +7454 +8132 +-9434 +6819 +1718 +-1189 +-351 +-4536 +9278 +8761 +3282 +3856 +9665 +1344 +-9551 +4601 +-4773 +1747 +1802 +3357 +5830 +5036 +8807 +-2459 +-6451 +-5832 +-2591 +2018 +-312 +6482 +9416 +8505 +2891 +-189 +-5154 +-371 +5220 +-7880 +-275 +-6494 +8192 +-4602 +-8688 +-7218 +-7273 +1735 +5587 +-766 +-9525 +-3179 +-1404 +1227 +-76 +-2153 +9692 +-4016 +-8329 +-9620 +3408 +-3959 +-4400 +8600 +-6255 +395 +1809 +8682 +-4561 +-7952 +9727 +6382 +2798 +-2775 +-9130 +-4465 +-7119 +-6133 +-2512 +-5466 +-8446 +-4389 +6386 +-5630 +-3559 +-1516 +-3485 +-8969 +4953 +-9981 +-1505 +5965 +-8754 +-8226 +8687 +6485 +2897 +4215 +-1200 +2226 +9620 +-8899 +-8283 +3379 +9642 +-2584 +-6776 +9558 +-7277 +6925 +4107 +-1758 +6980 +6596 +-6315 +7218 +-7040 +7980 +-686 +-9156 +-3559 +-6773 +-5243 +173 +5074 +7044 +3588 +9306 +-7907 +-5135 +220 +5864 +-7036 +-9708 +5323 +-7974 +6476 +7849 +-6721 +-1810 +-8018 +-2852 +-3072 +6813 +-4570 +7607 +4776 +9958 +947 +-9634 +6364 +-5502 +-3870 +-852 +-7923 +-3637 +2676 +-8468 +-1403 +2999 +-7092 +-7881 +254 +-9092 +-2747 +9140 +1700 +-5120 +4586 +9374 +92 +-4435 +9064 +-7824 +-6239 +4580 +-9947 +945 +1682 +-4930 +5470 +-7970 +-917 +3677 +1385 +-891 +6969 +-3765 +-7650 +-8545 +-369 +7454 +879 +8130 +8150 +5662 +1319 +4735 +7250 +-8803 +362 +8024 +2132 +362 +-4108 +7044 +-4212 +1086 +-7192 +-2624 +-140 +-8555 +-4208 +7625 +9416 +-437 +8406 +-5023 +-3057 +9827 +7626 +1266 +6997 +-4053 +27 +563 +-6188 +4598 +-7016 +1948 +-941 +-9010 +4701 +-4121 +205 +-7932 +7689 +1802 +-6443 +-2116 +4549 +-3177 +-9664 +4674 +-1952 +4025 +9851 +-5139 +6170 +5357 +3274 +-7032 +-917 +-2627 +-2716 +4276 +2574 +-2683 +-647 +7241 +-7843 +9934 +-1414 +-3263 +2125 +8132 +8475 +-3693 +-2674 +-9784 +-957 +-7928 +-5452 +-8147 +6602 +-7707 +-8715 +-6131 +-3802 +-4389 +7627 +1522 +187 +-8539 +-5298 +-7876 +7673 +6244 +8941 +-5780 +9473 +3631 +8780 +5018 +9612 +-2352 +2898 +1812 +7863 +9229 +-6020 +-4658 +8166 +-3314 +311 +-4409 +1003 +-662 +-7271 +-5426 +5009 +-5892 +900 +8455 +-5646 +-8876 +-3783 +-4997 +-5953 +-3061 +-2747 +-6617 +-3685 +-6794 +9188 +-502 +6939 +-9382 +3167 +-2980 +-9433 +-5862 +-800 +5829 +7664 +-5607 +2212 +-9224 +5296 +-653 +-7679 +9760 +5271 +9171 +1952 +-1771 +4674 +-9037 +1774 +-800 +-4461 +7817 +2571 +1706 +-9784 +704 +969 +-1441 +-3543 +-1999 +2281 +3112 +-6816 +5436 +-3136 +-3294 +-3401 +7867 +1158 +7454 +192 +2193 +-7448 +-7203 +1246 +4504 +4308 +3746 +9618 +-7175 +8599 +-2352 +6235 +4968 +-1985 +2656 +7431 +2848 +4788 +7187 +-5463 +1739 +7581 +2526 +3408 +-4838 +-1201 +-3146 +-8866 +4122 +3776 +-9223 +5775 +6648 +810 +-1114 +-1362 +7283 +-8010 +-46 +5887 +-6625 +-3655 +-9577 +5809 +284 +1533 +6267 +7475 +-2568 +-5880 +-5603 +-6325 +-6601 +-3354 +4628 +6220 +-4741 +-7498 +-7894 +5407 +6511 +-2399 +9806 +1258 +6671 +3844 +-7209 +7492 +-3273 +-5714 +2388 +-6425 +1557 +4558 +-6325 +5864 +-5953 +-7787 +-5214 +147 +2725 +1304 +2401 +-4689 +6570 +-7442 +-4829 +-7796 +-4908 +-131 +-4605 +3033 +-9667 +5019 +-1878 +-4697 +7844 +-437 +3807 +-1239 +7878 +6969 +5296 +5544 +7536 +8153 +-8396 +-8044 +-1267 +-5281 +-3771 +-4465 +8074 +-3967 +-8913 +-3424 +-7207 +-5527 +4909 +1101 +1395 +2946 +-7533 +-7845 +5598 +-4560 +6426 +-9303 +9149 +8560 +9253 +7721 +-5106 +8965 +7454 +2981 +7581 +2898 +-6757 +-882 +-3085 +9880 +4925 +3572 +8325 +1931 +301 +-723 +-6583 +5501 +-3783 +-5484 +5754 +5164 +1220 +-9797 +-2037 +-9743 +2513 +-5367 +-9929 +-5663 +-955 +6014 +4228 +-6187 +-7896 +5477 +2847 +6260 +-1503 +-4500 +7688 +7025 +9371 +-9327 +9488 +-8022 +-4538 +-8230 +-6059 +-3108 +-7600 +5436 +2276 +417 +974 +1282 +6437 +-5666 +-9697 +-8399 +8114 +-1477 +-4803 +-559 +4605 +3316 +-7757 +1723 +5097 +6242 +-9963 +2307 +810 +4284 +-3412 +-3663 +2859 +5929 +5678 +-5161 +754 +-6865 +-2549 +-5641 +4312 +4737 +-8295 +-7324 +-7806 +-5580 +468 +5704 +5522 +-7202 +6724 +1244 +-102 +-7021 +-3629 +-1119 +3208 +-1033 +1749 +-376 +-889 +-5184 +-2958 +4163 +-1396 +-3194 +5705 +-5954 +9931 +-7916 +-6080 +-3039 +6617 +5323 +-57 +8818 +-8850 +7211 +-2691 +-225 +2885 +-9976 +855 +1970 +-491 +-8585 +1692 +-3379 +3308 +5908 +3929 +-9201 +6310 +-81 +-5002 +-1334 +1721 +-8165 +-6523 +-749 +-8044 +5743 +8156 +1047 +-8398 +7562 +927 +6119 +-4743 +-7189 +8720 +-3910 +3963 +-814 +4329 +-4638 +-8969 +683 +-4128 +5635 +2851 +-7256 +7327 +9065 +-7661 +-230 +1476 +1746 +6040 +6890 +7356 +1881 +-8460 +8873 +2313 +9719 +2134 +-7101 +4321 +7406 +629 +-9784 +8864 +500 +-4283 +-85 +3054 +-9346 +-3961 +9612 +-2916 +5130 +650 +-8116 +-746 +-4128 +-1702 +6538 +-2496 +918 +6528 +-2135 +419 +2292 +-8850 +9764 +1471 +3429 +3530 +-8317 +1696 +-4283 +-9967 +7100 +7565 +6009 +-4496 +3757 +-8647 +-1170 +-4650 +-3367 +4165 +1920 +143 +3563 +-1098 +-5743 +-6439 +5929 +6048 +-3476 +6621 +8276 +1654 +-9927 +-4542 +-8591 +2018 +-9413 +-2571 +-8257 +9212 +-5953 +-2079 +3999 +-8323 +-7414 +-5202 +3898 +6852 +5749 +-2427 +-3061 +-1232 +-344 +-5110 +-7579 +-7609 +-7856 +2050 +2237 +-1232 +-1870 +4191 +1243 +-9804 +5495 +-1764 +-5580 +9793 +-4912 +-3686 +-9001 +521 +2230 +49 +7171 +-8586 +7970 +-3586 +4673 +-6776 +8772 +4279 +-1091 +1369 +4471 +7945 +7820 +5106 +554 +7761 +4346 +-9392 +-9050 +-4809 +-5837 +-2927 +-2425 +9374 +2333 +-3414 +1335 +-9240 +6462 +-6880 +3924 +110 +-4777 +-9356 +9167 +-9577 +-9104 +-9913 +1423 +3082 +-3313 +-8437 +-3152 +3050 +9840 +-2085 +-4249 +2337 +-9269 +493 +-455 +8858 +-7090 +-3552 +-5430 +-28 +-796 +3602 +-7101 +8212 +9827 +3804 +-2001 +563 +-5219 +-4299 +-8972 +-8227 +-665 +41 +-7252 +-7419 +2828 +-3667 +-2212 +-4212 +-1800 +7622 +7029 +-6907 +8022 +-1694 +6511 +-8525 +-1582 +8353 +958 +-7363 +-9248 +-5473 +8269 +3055 +7468 +-3257 +6056 +3316 +8468 +4195 +-1113 +3779 +-2201 +-5095 +3856 +3194 +-2819 +6802 +7171 +-5817 +4978 +4200 +3103 +2116 +-4777 +6426 +1344 +-3045 +6067 +6647 +7758 +1359 +-598 +4717 +8344 +4365 +6613 +1349 +596 +5704 +5276 +-4858 +-5765 +-5580 +6550 +-505 +-9276 +5754 +-1414 +3406 +7589 +7946 +2063 +9196 +1774 +-6315 +8983 +8479 +3677 +7760 +5948 +7101 +8407 +7890 +-4449 +-8700 +-1538 +-1904 +-2159 +2091 +-6813 +9936 +2290 +-5331 +3263 +2605 +-2591 +-9560 +9730 +4673 +-5877 +3255 +4586 +-1998 +4099 +9385 +-8252 +-5953 +-3159 +2795 +8494 +-8010 +-6850 +-9127 +-1516 +-1475 +-3337 +489 +3208 +5667 +-2129 +8037 +-1523 +-5972 +-5429 +9420 +5835 +8389 +-6495 +-9668 +-4029 +-7189 +4487 +-6101 +6066 +769 +1679 +-6646 +5450 +8155 +3579 +-3177 +-909 +5829 +-1083 +4964 +-1601 +5611 +-8204 +-8012 +-4025 +1959 +9932 +-3686 +4741 +-7371 +-7004 +-5077 +883 +-4377 +-2383 +-8981 +-476 +700 +1158 +-7309 +7557 +4273 +-131 +3807 +662 +-2404 +-2199 +2176 +4918 +662 +8225 +9974 +-3817 +3808 +1614 +6691 +7485 +9967 +-6245 +9598 +-426 +-1136 +-1200 +4798 +-9309 +-5140 +7844 +300 +-9058 +-439 +6174 +-3316 +5990 +-8654 +5064 +-455 +9414 +5746 +254 +3529 +-9562 +-4821 +9149 +1206 +6917 +4347 +-3788 +-635 +-6721 +8344 +4085 +2675 +9883 +8632 +2247 +1932 +9904 +-1136 +-5064 +-8591 +-2682 +-6865 +-2713 +-4711 +-8506 +-7648 +-442 +2581 +-5844 +6331 +-446 +5164 +-5844 +3456 +2782 +-3248 +5450 +7485 +-7951 +4851 +8489 +5052 +6866 +-6385 +627 +1436 +7029 +5836 +4492 +3433 +-1098 +5924 +4466 +3563 +-8390 +2134 +-3278 +2656 +6020 +5018 +-6185 +-2127 +9012 +8573 +-9538 +372 +-689 +6526 +1589 +-8146 +8604 +-6274 +-2498 +-4116 +7020 +5984 +8441 +-9569 +3798 +3249 +9810 +7400 +-320 +-1225 +7250 +-1282 +-6162 +6221 +-6010 +6094 +-3538 +-7737 +-5067 +1361 +2462 +-6581 +6310 +4477 +4143 +-4559 +2611 +-3219 +9935 +9776 +-6928 +-559 +302 +8157 +5032 +-1232 +4632 +740 +-3683 +6200 +8061 +4674 +342 +-2648 +2676 +5027 +-880 +86 +2977 +-9668 +-1414 +2762 +7074 +-8516 +6760 +9324 +4053 +-7277 +-4108 +9522 +-3862 +5586 +-4240 +-4975 +-2846 +2102 +5718 +-9420 +5268 +9070 +5829 +-6235 +774 +6111 +-8111 +6332 +3101 +-1242 +-6027 +341 +-6581 +8382 +-2349 +-1644 +4229 +2470 +2233 +-7202 +5703 +8553 +860 +3431 +-2446 +6039 +-6312 +5470 +1615 +-1315 +-3532 +-9065 +9285 +2242 +3958 +-291 +1086 +3000 +8413 +-3456 +7120 +-9574 +-8884 +8185 +1791 +1965 +-9927 +-829 +7920 +-2329 +8858 +-9154 +9097 +9313 +3892 +3488 +-9467 +5514 +4909 +7907 +-1082 +-1527 +8762 +2656 +-1728 +-8346 +-8353 +-4857 +-9956 +-6324 +-2534 +-307 +-7386 +-9251 +3661 +-474 +4059 +5741 +-5781 +7863 +3895 +6038 +2099 +-9408 +-1514 +6577 +6539 +-241 +-2473 +3813 +4492 +-9653 +-6541 +9139 +-4271 +-729 +7520 +9705 +4224 +-2675 +4152 +7110 +9673 +5341 +8628 +9093 +3656 +-6625 +1578 +696 +-3888 +431 +2274 +-7624 +7430 +-8772 +5420 +-7475 +493 +-756 +-8375 +-5077 +-7930 +-3906 +5185 +5917 +-9963 +9236 +1023 +-76 +8986 +4172 +-2110 +6056 +4275 +-7971 +-5096 +1572 +-7832 +7076 +7871 +6026 +-1032 +5113 +-4416 +9834 +-1747 +-5394 +-8044 +111 +-8925 +4698 +-5404 +-1970 +-6255 +-4777 +20 +999 +300 +7844 +5017 +-2434 +-5836 +4859 +-3200 +9214 +5264 +-1869 +-7653 +4371 +-3199 +-9471 +-1998 +-8647 +7457 +2226 +5629 +8318 +-2365 +7201 +3000 +131 +2143 +426 +5602 +679 +1393 +-6185 +5251 +8204 +5533 +-747 +147 +-1032 +3215 +5763 +-151 +6602 +2667 +2402 +9236 +9598 +8964 +-287 +8088 +-4093 +9983 +707 +-2718 +7110 +1906 +1797 +-2000 +2788 +3992 +-2366 +6578 +-150 +5537 +4321 +5864 +666 +-9482 +5864 +-8699 +-8686 +2280 +3776 +-5096 +7143 +-2756 +-8367 +8331 +-2551 +9655 +-4311 +-6581 +-1934 +2051 +3406 +-8704 +8540 +-3138 +-8166 +3126 +-231 +-882 +-838 +7010 +4432 +-9845 +6056 +-2724 +-7169 +-3380 +740 +-5566 +-1003 +7862 +-1330 +9721 +9125 +-4117 +5010 +-3586 +-7191 +-781 +1236 +-7028 +-8479 +-4963 +2125 +-9565 +-4786 +-7455 +-3735 +-455 +-4658 +1791 +-6439 +7509 +1640 +-7973 +-3989 +5149 +-6802 +2946 +6678 +-8328 +-9240 +-3835 +-9471 +-5817 +8407 +50 +-8686 +6515 +5817 +4837 +-6274 +9826 +604 +1335 +-8744 +5704 +9808 +2176 +-1705 +8385 +-7624 +-1449 +-609 +-3817 +1994 +-5189 +-174 +9538 +376 +61 +7968 +8011 +-3108 +8155 +6784 +5221 +-4400 +-382 +-7770 +5690 +761 +9644 +7656 +4161 +4989 +-9110 +9349 +-8394 +-3050 +-4152 +-1063 +3363 +1083 +2094 +-3796 +-3552 +-4349 +-4047 +-8617 +5414 +-556 +-3396 +-9233 +3295 +8612 +-9981 +-1565 +2815 +6284 +-85 +32 +-6130 +5032 +7685 +6100 +4451 +-1593 +6971 +6757 +-9040 +6174 +1168 +4305 +-2371 +-1553 +-598 +302 +5791 +2339 +-2450 +-7819 +9192 +-2682 +-112 +-7110 +6206 +3431 +-9524 +9064 +-5244 +4062 +1533 +-6031 +381 +1143 +-5176 +-4752 +-4400 +8020 +-2986 +6421 +-4038 +3486 +-6402 +6678 +-3749 +7485 +9635 +706 +-36 +6066 +761 +-5002 +3909 +8413 +1536 +4073 +6749 +-5243 +1682 +3631 +3269 +-7524 +3798 +-9057 +7850 +5929 +-6921 +9568 +9522 +4259 +8228 +-5135 +7791 +-4752 +-3713 +-9189 +5521 +-6773 +2900 +5477 +4183 +3958 +4106 +7106 +8140 +-3519 +8185 +-1904 +-1838 +1278 +7368 +197 +3672 +5538 +2804 +5711 +6969 +-2606 +-9850 +-8151 +9482 +-2525 +-355 +-3258 +-6631 +-2799 +-8938 +663 +-9538 +-268 +-5227 +-7955 +9229 +2600 +-2307 +9723 +-3766 +8396 +3503 +2322 +9070 +5845 +9907 +9934 +-4174 +6387 +-9258 +-7899 +9651 +3530 +9173 +-7857 +-2441 +5824 +-9765 +9639 +-4580 +7631 +-7054 +-280 +-7462 +-4121 +-7355 +-3040 +7871 +1302 +-4385 +2595 +-6967 +9994 +1072 +-4958 +-9488 +-4633 +5718 +-1603 +-5329 +-4237 +2056 +8781 +7024 +8344 +1365 +4092 +-2211 +-3713 +-262 +-2549 +6948 +-3454 +-8315 +-7208 +8103 +9901 +-7396 +6804 +9320 +7189 +5903 +-4264 +3145 +6494 +-8292 +-4858 +5447 +7830 +-7005 +3395 +9980 +9974 +6784 +-2231 +1246 +-6798 +-4131 +-676 +4674 +-4312 +4276 +-3385 +-8542 +-954 +650 +1931 +-826 +-3651 +8722 +-2242 +4160 +-8664 +8500 +8344 +-7695 +6100 +-731 +5831 +3031 +-2421 +-9522 +-5327 +3120 +-9206 +855 +6008 +6989 +-6189 +3646 +-2921 +9717 +7322 +4437 +-1312 +-1117 +-1472 +-4818 +5965 +-7583 +41 +-113 +6034 +8080 +-5611 +-2436 +-9214 +-6110 +-5379 +-1614 +-2662 +-7313 +-4456 +-2512 +-1091 +-3371 +-7556 +2119 +5582 +5361 +-8816 +402 +-6641 +1505 +2199 +-9542 +3679 +-9416 +-181 +6795 +9277 +2420 +6015 +-7865 +-1172 +913 +7434 +-3805 +-308 +-2869 +5380 +-395 +6136 +-9845 +7875 +-1978 +2735 +6949 +-3337 +-8714 +5444 +-5737 +-9154 +-907 +-6379 +-3292 +6069 +5120 +7095 +-7172 +-1938 +8339 +9470 +-6716 +8130 +9287 +-2150 +-8147 +2103 +-231 +7242 +-1113 +-9471 +1948 +2365 +-7193 +8981 +-1829 +7867 +5221 +398 +-3017 +-4792 +-1039 +1351 +1168 +5391 +-5940 +4882 +150 +-4523 +6111 +2860 +1536 +-559 +-337 +-9827 +493 +6437 +9930 +5464 +-2724 +-9698 +-8715 +4165 +-8416 +2951 +-5838 +-9701 +-7509 +163 +8403 +-8504 +-7162 +-8569 +7058 +-3729 +8469 +126 +6528 +4432 +-734 +-1501 +-3983 +6147 +-5741 +5082 +2564 +3241 +4798 +-78 +-2980 +-6836 +-1934 +7030 +-5675 +-5735 +-8203 +-1441 +-7443 +2918 +-6089 +154 +-157 +-3071 +3441 +9980 +-1551 +-8945 +-4786 +-3817 +-1283 +-5622 +9004 +314 +9012 +-6068 +-9213 +-1909 +-7739 +5864 +668 +7618 +-4818 +-3746 +8855 +-4323 +9665 +-4784 +3858 +7689 +-8633 +4693 +2828 +-2854 +-6996 +8030 +-7825 +4714 +7656 +-6541 +2912 +-9032 +-1312 +8291 +5357 +-3835 +7618 +6050 +6561 +2784 +-5696 +747 +-8204 +1640 +-2310 +2667 +1695 +-1263 +-6442 +-2022 +3762 +8753 +9212 +-979 +-7351 +9830 +-7945 +6244 +-632 +-3120 +-3895 +1682 +-3278 +-9032 +-1873 +-3949 +6170 +3098 +4509 +-9307 +-4515 +4678 +4753 +-7625 +-4422 +6090 +-9409 +-9804 +-2644 +-7828 +-7705 +5880 +-7435 +2125 +-131 +2656 +-3789 +-5784 +9080 +1124 +-8869 +-7234 +-14 +-7556 +-4950 +4532 +179 +5465 +1107 +5447 +1850 +7991 +1901 +-9893 +3813 +-5261 +7817 +-4825 +7030 +2842 +1244 +5910 +777 +-3510 +9147 +1273 +8548 +6602 +6377 +6103 +6751 +-4676 +-7752 +-3325 +-78 +996 +-6728 +-4109 +-337 +-4739 +3672 +-8315 +-557 +1736 +2888 +-3498 +-8239 +7110 +3035 +-3382 +8386 +8789 +-9471 +1557 +7176 +7311 +2052 +8406 +-1437 +1628 +-7961 +9487 +-5948 +7557 +-5282 +-7213 +5587 +1944 +-9633 +9966 +4059 +3866 +8721 +941 +4015 +4891 +-6422 +6043 +-4551 +-6484 +-8217 +-3385 +4491 +-4113 +971 +-3219 +6469 +6252 +-3162 +-5713 +-8379 +-6672 +8414 +-7654 +2125 +155 +-1905 +-6011 +-8147 +-6924 +7587 +-3337 +-1516 +8688 +-9614 +6260 +5446 +8688 +2987 +-5646 +-5713 +1263 +-3375 +4836 +-2877 +-9149 +-7093 +-5240 +5578 +6855 +3760 +9640 +391 +3178 +1994 +1495 +-460 +5829 +4119 +-6862 +879 +-2646 +576 +-7044 +1596 +-9500 +3865 +9378 +2053 +-3250 +4684 +1840 +-8729 +2160 +-2655 +-4858 +-2866 +-8192 +719 +1036 +2746 +-4542 +-5713 +3125 +163 +6267 +6792 +5393 +-2153 +1533 +8006 +-495 +-8407 +-8866 +4511 +2620 +-991 +-2759 +2573 +-3940 +-6121 +6802 +-9999 +3277 +1005 +-8889 +-3610 +1548 +-7653 +-854 +-3043 +-5288 +5464 +-9358 +6457 +-3895 +2397 +-1601 +-1098 +4421 +335 +4438 +1113 +2788 +9298 +3676 +6180 +-7880 +3070 +-6786 +-6044 +-4673 +-4429 +-1308 +9293 +4471 +-9733 +5072 +7761 +-3164 +322 +-5249 +-1913 +-8883 +-3045 +-2624 +-841 +-4930 +-4611 +2511 +-4750 +5397 +6947 +-2326 +-1931 +2249 +-2099 +2214 +-4859 +8716 +9125 +-3272 +8869 +-9737 +-2314 +-4463 +-7805 +-6924 +-9574 +-5822 +6948 +-8628 +-6199 +-3667 +2627 +47 +-6274 +-8074 +-8867 +7504 +1149 +7704 +-3567 +-29 +-1856 +-453 +-5051 +-1596 +1970 +5678 +-8377 +5235 +4491 +7656 +2197 +-6011 +-6544 +-9905 +-7868 +9491 +-6004 +1255 +8469 +-2531 +2493 +3973 +-3959 +-112 +521 +-6011 +9470 +8947 +-6004 +1672 +-2319 +-8809 +-1904 +-9838 +-68 +402 +2229 +-9517 +-6794 +4383 +4876 +-6284 +7863 +-7907 +1685 +-8585 +5806 +7826 +-3819 +-2698 +-4106 +-1765 +666 +7512 +5586 +-8301 +4228 +9372 +-8132 +-9499 +368 +-3177 +-8898 +4622 +4294 +-8213 +-3450 +5990 +-8443 +-1553 +-1196 +2216 +1679 +6840 +1524 +-5245 +8702 +-6443 +8155 +-5475 +8376 +-723 +-2513 +-4023 +1533 +5997 +-179 +7030 +-4356 +5752 +-4999 +5191 +2672 +4641 +-8997 +591 +3343 +1636 +6569 +-3144 +5546 +-3267 +2033 +-1442 +2290 +-9987 +9073 +9374 +3290 +1751 +-6721 +-4962 +1467 +-9392 +5959 +4165 +-1370 +-6484 +-4418 +-5937 +-5096 +7457 +8195 +-8824 +-9636 +8312 +7189 +-7448 +3776 +5138 +3779 +-5614 +8702 +-7075 +9275 +1370 +2069 +-7513 +5285 +-3162 +1300 +9363 +-3794 +-6722 +737 +2744 +-2127 +3809 +-3303 +-9143 +-2664 +-9668 +7673 +-8533 +9039 +-925 +-5026 +-2878 +-9488 +-8555 +7235 +5903 +3148 +-6777 +6220 +-7975 +1698 +281 +-7311 +9701 +9205 +4975 +-4551 +-8406 +-2927 +4557 +-1352 +-5623 +1948 +-5324 +1723 +-264 +-1889 +5817 +-2553 +6568 +117 +178 +8843 +-2225 +-9189 +9409 +3708 +1423 +935 +-2434 +8835 +-9836 +2470 +-6924 +-280 +6599 +702 +-7190 +6442 +-9776 +-4860 +-7358 +2053 +-4028 +-1158 +-8196 +-527 +3158 +1571 +7844 +2741 +-2297 +-1898 +-5844 +-8924 +5940 +-4984 +-5506 +-362 +3643 +-9130 +-6583 +1540 +-3388 +8403 +-5941 +-9574 +-705 +-9386 +-6293 +9268 +-9213 +8631 +109 +6682 +3208 +-3347 +-6310 +-7649 +5092 +1284 +2828 +5945 +6100 +-1215 +7482 +3727 +-5154 +-2838 +3602 +-1334 +-7781 +1596 +-6425 +5785 +1258 +3563 +-4676 +9495 +6505 +-3200 +-7701 +-5286 +9142 +7601 +3254 +-6973 +5235 +9323 +7638 +3828 +-1911 +-7306 +7878 +7158 +-5066 +-6284 +3477 +-5124 +879 +-7007 +6822 +-7681 +6355 +-5696 +509 +4868 +5316 +4134 +-2363 +5623 +-7906 +-3452 +3321 +-2415 +-3910 +-3574 +-5192 +6901 +-7208 +-2978 +-3133 +9795 +500 +-6439 +4222 +-1529 +5285 +7110 +-1100 +8868 +-3823 +-8257 +-4827 +4674 +9885 +-3488 +-2637 +7821 +9983 +4216 +7433 +-5950 +4068 +1926 +2563 +-481 +-2048 +4709 +1040 +-7485 +5737 +-8660 +2083 +3890 +-4885 +6099 +2999 +2779 +-6195 +2013 +-3571 +7468 +-8060 +3779 +-2615 +8222 +1096 +4509 +-7037 +-7019 +-6078 +6053 +-3532 +5789 +7014 +1823 +-4565 +-8783 +-6496 +6368 +2064 +863 +-2355 +-7662 +7821 +-6924 +-6740 +-8149 +1423 +-8151 +-8038 +-7040 +-8921 +501 +8314 +-8091 +-7877 +8220 +-6757 +4542 +3073 +-9106 +-4108 +6464 +1452 +8829 +1258 +-8686 +-5416 +2340 +2133 +-1173 +238 +4507 +1426 +-3128 +-4405 +9993 +335 +-8310 +-9853 +-6990 +6851 +1195 +1176 +-5213 +-4893 +2841 +8290 +3237 +9656 +-8773 +2598 +5690 +-7221 +9776 +-6397 +-2170 +-372 +-686 +-525 +-5823 +-6763 +-5829 +-5781 +3033 +8380 +5326 +-7851 +9236 +485 +8459 +-6442 +9636 +-1804 +-8969 +4496 +9235 +1642 +6807 +-3472 +-810 +-8770 +-917 +8852 +-6251 +3909 +-9811 +1024 +-5600 +4696 +-9276 +9461 +-6230 +-8876 +740 +-3910 +7076 +-2460 +7167 +-515 +2527 +-8005 +5682 +-7263 +2491 +-6484 +-362 +7204 +-20 +7540 +4245 +-4702 +-9912 +-6580 +7287 +7574 +-3786 +6881 +879 +4649 +-6253 +8224 +9971 +-5631 +-1172 +3590 +2881 +-2000 +3591 +-5361 +9470 +7987 +3389 +4870 +1854 +7816 +3169 +147 +-1676 +-8571 +4601 +5888 +-4419 +1423 +9365 +9929 +-7475 +3572 +-827 +-9909 +-734 +-4718 +2145 +-584 +7808 +6233 +3156 +3026 +8179 +7419 +-6049 +9989 +-3565 +-9638 +6392 +4060 +5185 +765 +9842 +8269 +-4062 +9291 +-7312 +6458 +4376 +928 +4630 +8407 +-4208 +8632 +8306 +774 +-480 +731 +-4986 +-4121 +3020 +-6131 +2189 +-9030 +-6692 +2475 +1642 +6440 +-8858 +2869 +-846 +460 +7273 +2126 +6607 +3156 +153 +-6188 +1770 +1039 +-6498 +7189 +918 +-9907 +-3485 +-4689 +4480 +-7856 +8854 +4505 +8660 +8017 +-3704 +-2242 +1340 +143 +-4440 +9369 +-5915 +5952 +1940 +134 +-5503 +9174 +-7376 +8981 +499 +9109 +8037 +6697 +-34 +4308 +-7701 +-3159 +-437 +9913 +-2057 +-4815 +-7340 +5634 +3865 +-9890 +-5735 +2055 +-6912 +6494 +7075 +-6865 +-7550 +-5497 +5018 +-2869 +-3858 +9471 +3342 +-8398 +-2691 +-4803 +7867 +-6234 +-1367 +-5326 +6119 +-3252 +-4106 +9406 +5406 +-5379 +-2450 +-8296 +-5303 +3390 +5033 +4466 +-182 +5520 +-7008 +-8142 +-2405 +8660 +-4082 +4573 +3486 +680 +-925 +-2948 +4583 +-8832 +-8139 +-2236 +6306 +8284 +-1325 +-1752 +-3187 +-248 +4483 +-7079 +-7092 +-6646 +-8736 +376 +-5588 +4331 +7685 +-7306 +2870 +-7340 +-1193 +-4869 +-5047 +-726 +-9614 +-1756 +1124 +9071 +-8971 +1791 +-7930 +1017 +2520 +-1410 +-6794 +-1441 +7195 +4559 +8 +-5502 +-3816 +7167 +-7190 +8969 +-1196 +-4581 +377 +9108 +-135 +1506 +5682 +8784 +-7463 +-3053 +-4194 +-5057 +623 +-2038 +-8249 +-1362 +870 +-7665 +8017 +8415 +-9622 +7675 +1513 +1346 +7480 +1803 +8838 +-5068 +9750 +-3116 +9335 +832 +-6008 +-2950 +-5829 +4475 +-7845 +7724 +-6874 +4015 +5450 +1590 +-3264 +3892 +9109 +-2597 +8413 +4240 +-5043 +-2753 +-1466 +3935 +-5362 +5323 +3136 +3422 +762 +908 +-7463 +-4294 +-5971 +-8454 +8061 +-2650 +8842 +-3922 +-8587 +2212 +-4547 +5036 +290 +173 +-4858 +-8567 +7495 +8459 +-7012 +-6221 +-5633 +-6145 +6050 +-8236 +-4156 +1622 +-3992 +-4128 +-3713 +-3636 +1208 +7434 +-1890 +2937 +3682 +5929 +-862 +-2989 +9447 +4189 +-7307 +1152 +-7485 +-4612 +8409 +8823 +-1928 +5259 +-1061 +-3908 +-3200 +-7382 +5204 +-3131 +-6953 +-3543 +6969 +-3978 +5831 +-614 +-8141 +-1154 +-3888 +7485 +4714 +-9368 +5682 +-2130 +-2140 +6505 +-8771 +5470 +-5177 +8090 +-4695 +-8454 +4335 +9374 +-4491 +-4492 +6421 +5529 +5590 +-4682 +4851 +9447 +-1515 +1986 +6252 +-1437 +-9162 +-156 +8941 +-8942 +-1998 +8787 +-5920 +-4371 +6053 +3629 +-7105 +-4460 +-7556 +3716 +-524 +5323 +-9117 +3208 +5703 +675 +2744 +-2839 +9007 +-8601 +-6518 +4852 +1057 +-3902 +-5115 +-4792 +-6821 +2137 +1965 +8451 +4487 +-616 +-3655 +-3169 +3942 +-7354 +377 +-5736 +-4768 +4600 +6726 +4654 +2137 +8220 +-2963 +1415 +3420 +8173 +-717 +-3585 +-723 +-5241 +8786 +3327 +6658 +9473 +7867 +7298 +-8947 +-1263 +1372 +9518 +5492 +9346 +2894 +4043 +-1751 +3570 +-9692 +5711 +2722 +2382 +-5126 +5436 +-7271 +-5426 +-8585 +-1523 +895 +1143 +4953 +-4211 +-6406 +7254 +9349 +8643 +8947 +1412 +-9783 +7190 +7638 +-2577 +3098 +-6512 +-3202 +5191 +-3678 +-2914 +9463 +-4886 +-5829 +-9343 +5466 +-7465 +-2897 +-4312 +3611 +-4064 +1240 +105 +1217 +4674 +4103 +1436 +7021 +-5506 +3304 +2912 +6101 +5288 +-7589 +-5383 +8006 +-6274 +-9269 +-9827 +4403 +-6098 +-9797 +-5978 +-7453 +4857 +5032 +5584 +6128 +-8764 +7152 +-8111 +1736 +2990 +-2231 +-1241 +-819 +1471 +-6824 +-4370 +7540 +-4318 +4305 +-3498 +-6672 +4099 +5168 +-1074 +-2949 +6575 +-9394 +7830 +-6619 +1231 +4876 +-5319 +-5229 +6257 +-2187 +2627 +1260 +7920 +7336 +3784 +-1267 +-9817 +-481 +8185 +4796 +8814 +9410 +315 +5586 +-6453 +-9217 +9003 +-723 +-9358 +6829 +-8503 +4776 +-7020 +-1508 +3429 +2448 +-7051 +4171 +-991 +-4422 +1787 +7255 +8228 +-852 +-7309 +6000 +-2405 +-1914 +-4930 +4119 +5289 +-4141 +-2276 +-4689 +5594 +-6100 +6662 +-6717 +-991 +-6239 +1423 +-480 +7617 +-4409 +-8189 +-4362 +-4633 +-8694 +3262 +7259 +-9259 +3819 +-3236 +311 +8461 +2125 +-6856 +5097 +51 +-7707 +1931 +-1952 +8632 +1544 +3361 +8154 +8367 +9334 +4158 +-3354 +3327 +4716 +-5920 +9277 +-7519 +4119 +3702 +5006 +-6191 +-8353 +-899 +8525 +5032 +2038 +6917 +-207 +-7102 +335 +-734 +9518 +-3272 +-9182 +8775 +1464 +4491 +-5948 +5862 +2028 +-2157 +-78 +-5241 +-8786 +-7980 +4819 +-4551 +5684 +8343 +7448 +2581 +9086 +-7973 +-8547 +7572 +8308 +458 +3503 +-363 +8469 +-6786 +-9839 +3194 +-9052 +6691 +9513 +-300 +61 +-1928 +86 +-3665 +6843 +-4896 +-9901 +-9473 +9853 +6173 +3124 +6682 +-3532 +-8899 +6398 +-4215 +9076 +-6014 +-4307 +-1276 +5464 +7633 +2596 +9890 +-2540 +9118 +-1232 +9349 +-4869 +1046 +3805 +-6956 +-7215 +-4131 +-1255 +-5781 +4989 +7312 +5829 +7715 +-9623 +-5345 +8406 +-4362 +3111 +-352 +8454 +-2138 +2754 +8479 +-6451 +-4043 +-4691 +9098 +-6078 +-931 +3430 +6001 +-4897 +-1838 +-1989 +-893 +9054 +-4031 +5194 +-2441 +-6473 +6146 +1859 +-157 +3984 +1821 +-8741 +6221 +-1404 +3167 +8562 +-1161 +8682 +-4515 +-1876 +-2404 +-3452 +9368 +-8261 +-3619 +9362 +-8175 +7979 +402 +6166 +8924 +9474 +6555 +7981 +-4692 +-2039 +-9804 +-2577 +-5235 +-451 +8565 +-3249 +-7686 +5648 +-7342 +-7714 +-781 +2595 +-3493 +7808 +3794 +-6496 +-2411 +-8716 +6159 +841 +-1232 +9953 +-9797 +-5430 +3659 +-6754 +-4440 +4725 +3679 +-7312 +6723 +2368 +1882 +636 +8519 +-9432 +7093 +-2131 +-9524 +7242 +-1854 +-2280 +-54 +8972 +-4480 +1920 +-8142 +1318 +8049 +3351 +982 +-6562 +-3294 +-5120 +-8116 +5682 +8030 +-2927 +-2838 +5014 +1174 +832 +4542 +6963 +-6924 +5833 +1366 +2951 +-1082 +-3842 +9967 +4299 +8858 +-6105 +-809 +-14 +6319 +-7518 +3092 +5789 +3124 +-3235 +9323 +9137 +-2691 +2083 +-8596 +5387 +4388 +-5107 +-7213 +-1758 +-7396 +9841 +-5012 +-3619 +2454 +-7019 +-653 +-4298 +-9517 +-9428 +-3042 +3180 +-4745 +4015 +-1362 +-6325 +-2333 +-8284 +9966 +3896 +-2041 +-6618 +5323 +-8685 +-2920 +6354 +977 +-109 +-220 +8882 +604 +-6582 +-4180 +-9808 +1688 +-8699 +-6462 +3363 +-5314 +-593 +-2159 +-7357 +-8802 +-9086 +6100 +-4759 +6848 +29 +-4703 +-4009 +8224 +8747 +6170 +5071 +9626 +4637 +783 +6144 +6187 +6329 +-6084 +1255 +5129 +-2577 +6615 +-8204 +7631 +8334 +7179 +-5756 +9912 +315 +-8601 +6125 +6526 +5996 +-9240 +958 +-7090 +4920 +-690 +-7323 +6964 +250 +-1251 +6751 +-3379 +519 +-4025 +8416 +5246 +-6936 +-4880 +-6443 +3550 +-5810 +-3167 +-3432 +-6576 +-3403 +5332 +2371 +4586 +-5484 +809 +-5243 +2414 +-7198 +6096 +-9811 +-8786 +-1873 +-4091 +9642 +-4739 +1677 +-488 +6791 +-9623 +7485 +-9672 +1574 +-1056 +3618 +-9973 +-3835 +6647 +-1448 +53 +-7341 +1667 +5834 +-9947 +-372 +6687 +9173 +8569 +6607 +-2743 +-2673 +4682 +-4502 +8822 +5684 +-5118 +761 +-1186 +-7625 +-6967 +7780 +-1893 +-2388 +-1274 +8416 +-4656 +-4958 +8622 +-7643 +1346 +-5182 +178 +6373 +-2202 +-1309 +-7797 +-9893 +1545 +6235 +-4414 +-7323 +-8778 +-1638 +4598 +7724 +1615 +353 +9113 +-657 +-3513 +-4869 +1744 +-5364 +-4456 +-1690 +-1133 +859 +-1688 +-9542 +-7721 +3675 +-5112 +-6335 +8228 +7101 +5533 +148 +-2533 +-9553 +5904 +-3104 +4861 +9235 +-712 +9214 +-2683 +-2477 +9948 +-6791 +3834 +5568 +-2659 +6833 +508 +-9773 +-6111 +4978 +5095 +-9343 +4659 +-6906 +-6577 +2121 +-3424 +-3651 +-78 +-9764 +-9214 +-7240 +9994 +6324 +-8488 +7075 +-1319 +6129 +9493 +-1671 +-7752 +4477 +-6738 +-8240 +8011 +-4893 +870 +3031 +1273 +4022 +-8371 +-7677 +-9768 +-3606 +711 +-4821 +-8786 +5396 +-7811 +-2555 +8359 +-7805 +2000 +-3248 +-4443 +2160 +5189 +-9441 +4002 +4108 +9545 +-6199 +3304 +1062 +-4620 +7729 +-1572 +-8609 +9607 +-1018 +2018 +-5570 +-7569 +-6414 +-9692 +-4223 +1710 +-9385 +8548 +-3674 +-7672 +8818 +-1032 +7605 +6365 +-9542 +8291 +1169 +1029 +-4580 +-4963 +-6776 +-7213 +9283 +4167 +-3281 +2793 +-4288 +5880 +-4773 +3590 +6841 +5996 +-2210 +-1354 +-2713 +-8629 +9672 +7791 +2264 +4249 +-5742 +-4561 +6342 +-1831 +2503 +900 +6555 +-5761 +-2531 +-4529 +1791 +-1601 +1524 +-1002 +-8276 +4152 +7461 +9618 +8227 +-5527 +2635 +-540 +7167 +3031 +-8480 +3789 +-5182 +6244 +1880 +-1760 +-6821 +5996 +9983 +7106 +-1938 +-1915 +4407 +-2392 +1228 +606 +4545 +-6777 +8012 +6802 +-8233 +5467 +5782 +5991 +9994 +3067 +-5544 +8538 +-2946 +1245 +3208 +3441 +4482 +-8279 +-5067 +-6093 +-8876 +3262 +1773 +-3978 +3136 +458 +-3711 +6801 +-8111 +2115 +3713 +4975 +-7020 +-3949 +-603 +-5596 +9212 +1244 +-559 +-2799 +3431 +-7196 +2212 +9647 +5824 +-4361 +-6505 +2520 +1284 +-8866 +4617 +5151 +9890 +-1548 +9647 +-9517 +-320 +6206 +3308 +9030 +2596 +35 +5982 +-4307 +0 +5929 +1204 +9841 +-1016 +-6536 +8781 +7373 +3618 +-6499 +-3178 +7965 +9617 +-4163 +-2260 +2597 +4354 +-2131 +-4007 +9363 +-3817 +-6011 +1326 +4788 +-625 +5549 +-5789 +-5038 +1832 +-4460 +8472 +4266 +6778 +-505 +6570 +8332 +2616 +23 +4608 +-7648 +7633 +-7019 +61 +-5887 +8911 +-9506 +9933 +7707 +-8011 +-3699 +9694 +1205 +7295 +-5892 +-831 +-27 +-8297 +-9614 +8945 +-9001 +7415 +9870 +6377 +-8816 +-3771 +1533 +-8899 +2237 +77 +1843 +-369 +5092 +-7672 +-6274 +209 +7872 +-589 +3296 +-8483 +282 +-183 +-5935 +660 +8080 +8224 +1412 +8818 +2635 +-408 +2448 +7157 +-9344 +-6676 +-2286 +898 +-5022 +6014 +8113 +-4633 +-9623 +4479 +6749 +3978 +-2591 +2933 +-7952 +6377 +-8979 +-1942 +-7711 +-8203 +-6589 +196 +7699 +9890 +43 +-1888 +-4502 +8602 +8693 +8494 +2511 +-9256 +-6012 +8434 +7142 +1615 +3281 +-1030 +1677 +5829 +8117 +56 +-3769 +4699 +6869 +4966 +3656 +6283 +9953 +195 +-5528 +-4743 +721 +4312 +-3907 +-345 +-7952 +4947 +-9817 +6792 +-8872 +6663 +6284 +9012 +3472 +9116 +1948 +952 +493 +-3844 +4161 +4975 +-9788 +-8628 +9298 +42 +-8565 +7874 +3548 +9694 +6377 +-6617 +-9123 +394 +-2806 +-278 +870 +-6104 +3058 +-6347 +-9744 +-6803 +6916 +6901 +5374 +6666 +4305 +197 +3561 +-6603 +4388 +-5849 +9962 +3856 +-710 +6101 +-4461 +1266 +-1308 +3624 +8038 +-1354 +4920 +188 +-8876 +-3296 +9831 +-9183 +-5781 +-1410 +2697 +-4972 +3021 +-4224 +8331 +-267 +7567 +-1297 +-6794 +6901 +2258 +7867 +-2038 +898 +-7124 +-6909 +-2030 +3374 +-1200 +-4523 +-7086 +-1695 +8838 +1961 +-4926 +6876 +-7362 +-732 +-1985 +9893 +3667 +-6274 +-8111 +8419 +9398 +-6008 +9788 +-3519 +-7173 +-552 +4558 +-9258 +1245 +-7956 +1735 +-1477 +-6069 +-2164 +-5622 +9640 +-3855 +4712 +-6928 +-3815 +-7175 +-3674 +8283 +5579 +-4021 +-5429 +8367 +-4875 +5993 +9306 +-5297 +8780 +-4863 +4760 +5056 +3335 +-7188 +-3687 +6381 +4383 +4893 +2659 +-4103 +8764 +-3528 +7661 +-248 +-7566 +5010 +-2357 +7322 +2744 +6173 +1167 +-6835 +-8244 +-939 +1696 +-1167 +-5249 +-8485 +-5837 +1727 +4557 +-1752 +7189 +-8455 +3683 +8817 +3587 +376 +-7442 +-2314 +7871 +8116 +1615 +6829 +-140 +6373 +2973 +7460 +-3639 +3548 +1076 +9808 +-7173 +7075 +-1888 +679 +6687 +1440 +-3268 +-856 +3287 +-678 +4002 +5683 +-5364 +-8297 +1880 +-2368 +8211 +-1865 +5910 +-2179 +-7906 +2368 +-4275 +-3688 +-4708 +3255 +-9545 +6805 +4987 +6237 +-2170 +231 +4742 +-9905 +8505 +9851 +-2365 +9934 +4682 +-7760 +-6355 +7189 +6039 +3866 +-5154 +-7752 +-3249 +-3292 +6306 +-5743 +-5702 +5138 +1980 +5495 +4099 +6368 +-6723 +9593 +-8172 +6630 +-3303 +2064 +-7124 +-17 +-1501 +8598 +-9929 +5549 +2337 +148 +-8773 +-1666 +5134 +4548 +-3182 +8818 +-480 +-4280 +-593 +-1363 +-5073 +9964 +7520 +-7635 +550 +-2935 +-5426 +4937 +604 +-2469 +4893 +3007 +9424 +-6146 +-451 +-5593 +-5034 +-4247 +6851 +-8816 +-6794 +9771 +1113 +9253 +5590 +2368 +6128 +-6014 +-957 +2012 +-4805 +9322 +-5142 +-763 +-1830 +-8245 +9554 +-1354 +-3375 +-8325 +-7920 +-4033 +9776 +-8641 +-2749 +-1194 +9479 +9096 +810 +-5941 +-2920 +-2048 +311 +-3667 +4432 +6691 +-3440 +395 +-7079 +-7004 +9651 +6615 +2479 +-1136 +6208 +-7365 +6687 +6842 +7066 +4956 +6130 +3720 +-2759 +7023 +-3667 +-9668 +7113 +-4163 +-9471 +-7896 +-4695 +-7824 +-7810 +-761 +3825 +7063 +2274 +1072 +6195 +-4612 +-1728 +4280 +-7157 +4415 +8359 +3233 +-1448 +-4051 +7132 +-4816 +-5226 +-1532 +1719 +-7043 +-1930 +7132 +6580 +8865 +-2342 +-7227 +9980 +418 +4876 +2600 +-72 +-630 +-7362 +-176 +-4215 +-5588 +7186 +-7745 +6569 +-3394 +1880 +-711 +9471 +6056 +-7761 +7244 +5586 +5704 +-6059 +7232 +9788 +1333 +7689 +-6924 +2848 +-2106 +4712 +-7672 +-5450 +-4138 +1464 +2600 +1419 +-4615 +1195 +-1985 +6782 +7361 +-9405 +-6911 +-1396 +5170 +-9142 +-6011 +-3963 +-1873 +3672 +-525 +6655 +7047 +-7679 +6562 +-2686 +-7811 +2115 +-687 +-84 +-151 +4542 +6462 +6866 +2491 +2435 +2160 +7851 +5995 +4826 +1088 +-8390 +943 +-5953 +3322 +9961 +6915 +1129 +-2645 +-3209 +-3994 +8943 +4507 +8226 +8344 +6969 +150 +5576 +-1540 +-7543 +-5592 +2581 +-5834 +1057 +-4127 +-1553 +3688 +6657 +5097 +8994 +2187 +5465 +-9001 +3731 +-2377 +-9142 +-3272 +-1014 +-5497 +-5804 +-2153 +4745 +1337 +-657 +-665 +4649 +2616 +-5052 +1056 +3860 +-7271 +-8857 +-5140 +-6649 +5370 +4004 +-9907 +2598 +-2216 +-1461 +-3817 +-5426 +-1577 +6577 +-4267 +-5100 +3262 +-7045 +-7114 +3945 +-3778 +1498 +1183 +-8375 +9801 +-2805 +7928 +6309 +-5937 +5677 +3231 +4096 +8153 +6826 +-2333 +-1063 +9935 +-5201 +-5733 +-9850 +2501 +2795 +-1989 +-3763 +660 +-1725 +-8660 +7068 +2851 +-8398 +-4783 +9812 +6047 +6981 +-9000 +7712 +-2743 +2988 +131 +9865 +7214 +-2720 +5603 +1723 +-225 +-1152 +-6372 +717 +-8074 +-8477 +-4562 +6100 +-2799 +1557 +-394 +740 +9842 +-6686 +4534 +880 +-7264 +-2577 +-5878 +4861 +209 +-1352 +2476 +7989 +-9915 +2063 +-4158 +-584 +-2726 +-1759 +5576 +9190 +-1300 +8687 +6014 +-9208 +6943 +2614 +355 +-1695 +-1193 +4834 +3200 +-9715 +4222 +-7420 +1617 +4701 +7080 +721 +-1751 +7974 +-7656 +5018 +7799 +1530 +5259 +1423 +-7259 +927 +-275 +-1529 +-2110 +3890 +1412 +-5288 +3511 +5785 +-2324 +450 +2682 +-8926 +7791 +5643 +-1758 +-5815 +-6179 +-8249 +2286 +-2512 +740 +-7968 +-2797 +8488 +-1760 +7095 +196 +-1332 +-8323 +-2508 +-337 +-9524 +-4670 +4788 +-5562 +6219 +2672 +2751 +-6662 +-129 +367 +-8728 +-1698 +-1440 +971 +4406 +3798 +2228 +7507 +-2511 +6413 +-6156 +-2371 +6101 +-6168 +7761 +4650 +9846 +-3513 +-5258 +-4827 +4491 +-5068 +-5473 +-4885 +-4184 +-556 +1881 +3430 +-7191 +1684 +1039 +-9821 +-8034 +-8526 +1376 +468 +-349 +-8159 +4425 +8154 +5440 +3555 +535 +4700 +-7173 +7074 +7460 +2590 +-9614 +-5892 +1965 +-8501 +-822 +3082 +-6931 +-5450 +2253 +-1251 +-854 +-5502 +8560 +-605 +-9476 +9931 +-3976 +2083 +-8569 +-5811 +5241 +8873 +-1621 +4860 +7031 +-7311 +-6077 +9617 +1480 +-6188 +-9382 +-3208 +-5230 +5590 +1040 +1533 +-8264 +7622 diff --git a/inputs/input20_test b/inputs/input20_test new file mode 100644 index 0000000..5cbf3d9 --- /dev/null +++ b/inputs/input20_test @@ -0,0 +1,7 @@ +1 +2 +-3 +3 +-2 +0 +4 \ No newline at end of file diff --git a/inputs/input20_test2 b/inputs/input20_test2 new file mode 100644 index 0000000..a8520b0 --- /dev/null +++ b/inputs/input20_test2 @@ -0,0 +1,3 @@ +3 +1 +0 \ No newline at end of file