From 6a0dde01df3ef6ee20403e7af05402894573a8fe Mon Sep 17 00:00:00 2001 From: Ishan Jain Date: Tue, 20 Dec 2022 20:10:04 +0530 Subject: [PATCH] Added day 20 --- src/day20/1.rs | 63 + src/day20/2.rs | 65 + src/day20/input.txt | 5000 ++++++++++++++++++++++++++++++++++++++++++ src/day20/sample.txt | 7 + 4 files changed, 5135 insertions(+) create mode 100644 src/day20/input.txt create mode 100644 src/day20/sample.txt diff --git a/src/day20/1.rs b/src/day20/1.rs index e69de29..fc7f140 100644 --- a/src/day20/1.rs +++ b/src/day20/1.rs @@ -0,0 +1,63 @@ +#![feature(test)] +extern crate test; + +const INPUTS: [&[u8]; 2] = [ + include_bytes!("./sample.txt"), + include_bytes!("./input.txt"), +]; + +fn parse(input: &[u8]) -> Vec { + input + .split(|&b| b == b'\n') + .filter(|c| !c.is_empty()) + .map(|line| { + let isneg = line.starts_with(&[b'-']); + + let num = line + .iter() + .filter(|c| (b'0'..=b'9').contains(c)) + .fold(0, |a, x| (a * 10) + (x - b'0') as i32); + if isneg { + -num + } else { + num + } + }) + .collect() +} + +fn solution(input: Vec) -> i32 { + let l = input.len() as i32; + + let mut idxes = (0..l as usize).collect::>(); + + for (i, num) in input.iter().enumerate() { + let pos = idxes.iter().position(|&c| c == i).unwrap(); + idxes.remove(pos); + let new_idx = (pos as i32 + num).rem_euclid(idxes.len() as i32) as usize; + idxes.insert(new_idx, i); + } + + let orig_zero_i = input.iter().position(|&i| i == 0).unwrap(); + let zero_i = idxes.iter().position(|&i| i == orig_zero_i).unwrap(); + [1000, 2000, 3000] + .iter() + .map(|i| input[idxes[(zero_i + i) % idxes.len()]]) + .sum() +} + +fn main() { + for input in INPUTS.iter() { + let output = parse(input); + let score = solution(output); + println!("{}", score); + } +} +#[bench] +fn solution_bench(b: &mut test::Bencher) { + b.iter(|| { + let input = parse(INPUTS[1]); + let result = solution(input); + test::black_box(result); + }) +} diff --git a/src/day20/2.rs b/src/day20/2.rs index e69de29..5c9912d 100644 --- a/src/day20/2.rs +++ b/src/day20/2.rs @@ -0,0 +1,65 @@ +#![feature(test)] +extern crate test; + +const INPUTS: [&[u8]; 2] = [ + include_bytes!("./sample.txt"), + include_bytes!("./input.txt"), +]; + +fn parse(input: &[u8]) -> Vec { + input + .split(|&b| b == b'\n') + .filter(|c| !c.is_empty()) + .map(|line| { + let isneg = line.starts_with(&[b'-']); + + let num = line + .iter() + .filter(|c| (b'0'..=b'9').contains(c)) + .fold(0, |a, x| (a * 10) + (x - b'0') as i64); + if isneg { + -num * 811589153 + } else { + num * 811589153 + } + }) + .collect() +} + +fn solution(input: Vec) -> i64 { + let l = input.len() as i64; + + let mut idxes = (0..l as usize).collect::>(); + + for _ in 0..10 { + for (i, num) in input.iter().enumerate() { + let pos = idxes.iter().position(|&c| c == i).unwrap(); + idxes.remove(pos); + let new_idx = (pos as i64 + num).rem_euclid(idxes.len() as i64) as usize; + idxes.insert(new_idx, i); + } + } + + let orig_zero_i = input.iter().position(|&i| i == 0).unwrap(); + let zero_i = idxes.iter().position(|&i| i == orig_zero_i).unwrap(); + [1000, 2000, 3000] + .iter() + .map(|i| input[idxes[(zero_i + i) % idxes.len()]]) + .sum() +} + +fn main() { + for input in INPUTS.iter() { + let output = parse(input); + let score = solution(output); + println!("{}", score); + } +} +#[bench] +fn solution_bench(b: &mut test::Bencher) { + b.iter(|| { + let input = parse(INPUTS[1]); + let result = solution(input); + test::black_box(result); + }) +} diff --git a/src/day20/input.txt b/src/day20/input.txt new file mode 100644 index 0000000..c0db3b1 --- /dev/null +++ b/src/day20/input.txt @@ -0,0 +1,5000 @@ +5959 +6188 +-6761 +6176 +-4213 +-4540 +4171 +-8291 +4934 +-7811 +9126 +76 +4795 +5839 +9440 +8425 +-1225 +-1346 +-8157 +7352 +-4725 +9995 +-4636 +-9063 +6827 +-6839 +-1318 +4070 +4425 +-1377 +7207 +8258 +6324 +5405 +9486 +3703 +8525 +4728 +-9316 +5679 +1883 +-109 +-8843 +490 +7566 +-7162 +8222 +-5603 +1172 +-3574 +3131 +2295 +-755 +-7100 +3551 +9544 +510 +-6224 +-6057 +-4074 +216 +9264 +-3835 +348 +-8535 +5871 +9511 +-559 +40 +-8405 +-7800 +-2399 +6503 +5606 +-9487 +-8835 +-2011 +-6435 +-5822 +8311 +2843 +8524 +6768 +-352 +-6230 +6850 +8965 +-8697 +-4452 +2911 +8633 +268 +-2734 +5506 +-6022 +-3425 +-9425 +-6829 +-1302 +8779 +3339 +-1390 +8184 +-5691 +4090 +9161 +9776 +-2135 +-7767 +-1088 +6036 +8680 +7685 +3825 +-9470 +953 +1401 +-6076 +-9089 +2128 +-9523 +-6687 +-3185 +9685 +7559 +3537 +-1616 +-6371 +1213 +6589 +-6676 +-2309 +5244 +-3627 +9565 +-3800 +626 +5227 +-8878 +4352 +2888 +-8811 +2342 +-4652 +30 +-7279 +-3977 +-2406 +-4619 +2512 +6103 +-3987 +5953 +-4748 +5975 +-8083 +-7435 +8443 +303 +-6449 +2550 +-7824 +-1323 +3483 +7198 +2189 +9690 +9480 +-2991 +5085 +-8985 +-5736 +-8864 +-1652 +-2551 +3284 +-7442 +3037 +1958 +-9906 +-8087 +-9136 +-687 +-2611 +-2363 +-6560 +-4610 +-9667 +-4855 +4784 +2243 +1194 +2507 +2711 +7006 +8745 +2830 +6966 +6670 +6964 +9020 +1928 +-9849 +4352 +7368 +824 +-8889 +-636 +2841 +-9866 +-6702 +-9293 +-2219 +2506 +3594 +4614 +-6702 +2140 +5950 +9354 +-6444 +-3805 +-9172 +5287 +-1671 +-7164 +-9486 +-6934 +4401 +-3948 +-531 +-396 +-8076 +8069 +-1712 +-1982 +-8239 +5021 +-5112 +-5093 +-7395 +-5198 +-6649 +3256 +383 +-1814 +-6488 +-213 +-1365 +-5092 +-6761 +5878 +8509 +-8415 +6190 +-9899 +9061 +2226 +5058 +2227 +-379 +6716 +-6955 +3916 +8341 +8588 +-6224 +1846 +3727 +-230 +-8771 +-105 +4513 +-7070 +-9300 +1825 +8641 +-8336 +-2213 +6301 +-1401 +-7069 +-7672 +3466 +5034 +3461 +4493 +2196 +-1808 +4546 +4728 +4363 +-4556 +5864 +2591 +-6829 +8020 +-5445 +-6365 +-3710 +6897 +-6008 +-9838 +-160 +-7768 +1725 +9019 +-5382 +-6073 +2778 +978 +6520 +5089 +-2563 +-6929 +583 +2533 +-2688 +6406 +-9172 +6516 +-6192 +5413 +418 +-88 +-7616 +-1986 +2807 +6128 +4065 +-9405 +2218 +-5042 +-5305 +-2993 +-1577 +8864 +2537 +-2868 +9956 +-5467 +6063 +-752 +-3130 +3596 +5155 +4536 +8809 +786 +-3518 +7608 +-8768 +8500 +-928 +-5736 +-6961 +-8076 +-9607 +-1335 +-7785 +-167 +-3719 +5339 +-5844 +6514 +-1691 +8035 +-7104 +-1999 +-3651 +6521 +-855 +7201 +-7803 +6039 +-8287 +-7924 +3809 +-4039 +3350 +-5797 +3764 +-4726 +6282 +3883 +2472 +5700 +-9759 +1473 +-9050 +-8544 +-7075 +-915 +-9877 +-2187 +206 +-7772 +7768 +6564 +8557 +3955 +-9878 +-8353 +8672 +5024 +461 +-9313 +4653 +7794 +4700 +7859 +9676 +-8211 +491 +3452 +-6918 +-954 +6241 +5222 +-2478 +4432 +5226 +-8329 +-567 +5384 +-9009 +2506 +-2166 +-8911 +226 +5886 +4539 +-9053 +-9301 +4620 +-3104 +1298 +-8913 +-3528 +-3858 +-2694 +7027 +-6076 +8113 +-3282 +8189 +-1882 +-4220 +-8211 +-8799 +-6452 +-3028 +-9570 +-9882 +9845 +8973 +-2182 +6897 +-4807 +-1031 +9150 +832 +-8261 +-293 +2482 +3225 +1633 +-5805 +-4381 +-7267 +1929 +77 +-4558 +1089 +3746 +-4040 +2342 +-4288 +-8683 +5254 +9565 +76 +-6429 +6882 +6786 +-4233 +2031 +-7338 +-6924 +7306 +-2006 +-3173 +-7537 +7620 +-1919 +1439 +-6414 +-1804 +1300 +2140 +-7094 +301 +-2941 +-2264 +3706 +-152 +5091 +-1353 +3134 +-422 +-9066 +-4469 +-5889 +4661 +181 +9297 +6303 +1770 +-9854 +-567 +831 +-2927 +630 +-2123 +-4319 +-9360 +-612 +-5889 +-6975 +2222 +997 +9893 +-3879 +-6207 +-6320 +-4339 +8974 +3615 +-4319 +8157 +8395 +-1289 +-2315 +-4996 +-4918 +-892 +7957 +-3377 +-6701 +-4968 +-1652 +9858 +5741 +-9297 +320 +7138 +-5056 +7312 +7333 +2218 +4293 +5785 +3852 +-7282 +-8925 +-9532 +5508 +-2288 +2831 +-7739 +8670 +8624 +7194 +243 +7899 +3698 +9275 +-5854 +-8721 +706 +-8106 +6039 +8769 +-7106 +1115 +8202 +1502 +9205 +-353 +2783 +2482 +3496 +650 +-1436 +-5112 +-559 +1124 +3603 +-6254 +-1039 +6800 +7617 +891 +5403 +3327 +9513 +-4595 +-6011 +9316 +-5011 +-7463 +3160 +-3804 +-5621 +1872 +-5079 +2245 +4372 +2413 +-8697 +-6586 +5908 +6184 +9688 +9358 +-4795 +-3806 +1018 +7944 +5894 +-1645 +9593 +4241 +3131 +2095 +1940 +-9100 +-2958 +-730 +-3937 +8106 +3395 +161 +-3348 +-64 +5038 +5100 +8341 +5400 +6739 +-5683 +9087 +7519 +3400 +2291 +-5490 +7148 +-9613 +2177 +1633 +5152 +-1988 +8549 +-4414 +-3859 +3969 +-4074 +-4984 +488 +6732 +-997 +-4125 +-9649 +-3242 +-7762 +-8553 +-4636 +7501 +-6368 +6879 +2214 +5290 +4018 +3869 +-9286 +-3297 +-1183 +4240 +-724 +4248 +-2685 +-2309 +2662 +398 +6389 +-8447 +3485 +3994 +-509 +5711 +-7768 +-5744 +8382 +3101 +3902 +-5969 +-915 +245 +9814 +-3877 +631 +9151 +-1954 +355 +-6446 +-9507 +9474 +2344 +-2856 +-5481 +7686 +-3937 +183 +3831 +-3669 +-5078 +-4002 +3555 +7448 +8097 +-9331 +-8252 +-8270 +4595 +9260 +-537 +-475 +-7457 +-2986 +-1747 +-8909 +9550 +8474 +58 +9874 +251 +8465 +-4674 +8812 +-7075 +3347 +9172 +196 +8688 +4650 +-583 +4567 +-2804 +-1114 +3 +4513 +1025 +9791 +2628 +-3289 +6427 +-2748 +-1727 +3557 +3066 +-8656 +-1807 +3193 +5760 +5248 +9078 +1550 +7285 +9840 +6959 +-5693 +87 +-7476 +7340 +5878 +-2292 +4792 +-1608 +-4353 +2131 +-9984 +9868 +5607 +-1309 +-7418 +328 +9898 +9427 +-9143 +-2382 +5154 +-9610 +9399 +4673 +-8554 +-3879 +2290 +-8707 +9984 +-2946 +-5213 +6326 +-9494 +4792 +-6700 +9080 +-8535 +-8387 +7946 +-8296 +-2371 +2432 +-5453 +2891 +-4250 +-1135 +-8774 +-9238 +-6094 +-9763 +-2220 +3701 +4994 +4394 +7508 +7293 +-9877 +6787 +-9853 +-5670 +31 +5499 +-9605 +-1631 +-8413 +-261 +6846 +4340 +4695 +-8044 +-46 +9674 +-1071 +2620 +1765 +-1067 +5273 +-2716 +3695 +-4763 +-2846 +5596 +9244 +-6004 +2710 +3653 +7140 +1929 +5698 +1278 +-341 +-2743 +626 +-5691 +-4326 +4377 +-571 +6746 +5608 +3685 +-4430 +3705 +-8510 +662 +-5178 +-7371 +5907 +-4396 +-7380 +7068 +-2031 +3653 +-8217 +3339 +-7162 +5588 +3413 +953 +9532 +-8785 +-8157 +914 +-7408 +2681 +-8950 +-5359 +-537 +-6474 +3867 +8267 +9599 +5797 +6430 +-3980 +-5800 +-486 +3185 +-3669 +-3534 +-1382 +6274 +1929 +5105 +491 +3489 +-5436 +-3630 +5640 +2094 +-9067 +-8506 +5701 +-7180 +-4378 +-8243 +-8946 +-8605 +-6482 +6157 +3430 +5036 +-2941 +-520 +-5121 +-4555 +6629 +3746 +6726 +-9836 +-6977 +5717 +2039 +7295 +5975 +767 +7751 +-655 +-1329 +3469 +-7062 +3262 +6944 +2529 +40 +2755 +1881 +5368 +-8421 +8840 +-2668 +-9070 +-2653 +-854 +9533 +-298 +-3437 +-6057 +-8506 +4613 +-8014 +4326 +7879 +8443 +-6214 +-5070 +9000 +2651 +-6765 +3703 +8150 +-31 +-6823 +-8030 +6100 +6369 +-5863 +-3959 +3335 +7858 +6551 +5038 +-7598 +-3632 +-4922 +-8470 +5340 +-3706 +-6425 +2009 +978 +-3390 +6054 +484 +-6320 +-1558 +3624 +-1570 +-8837 +303 +-2873 +-339 +-8918 +7817 +-5145 +-1982 +-9162 +3150 +-6148 +-7963 +4026 +-4465 +2270 +-3788 +-2039 +3360 +4095 +5525 +-6076 +3206 +-2992 +-2268 +5464 +-2005 +5778 +-5018 +-2714 +-1814 +4524 +874 +-3194 +-1180 +-4374 +-475 +-7638 +-8816 +7352 +-6830 +-8993 +-7808 +-825 +9550 +-4157 +-5294 +9405 +1263 +5698 +-1140 +-2107 +-9791 +-9458 +8328 +355 +-4251 +-7223 +4653 +6735 +-6043 +-5333 +7082 +-4714 +-1260 +-8763 +-9997 +-4286 +8329 +4240 +-7772 +-4396 +4356 +9329 +-7094 +-1880 +-64 +5313 +2433 +-6588 +-6631 +5922 +4622 +8106 +-9304 +5941 +-422 +413 +-5736 +-1736 +-6483 +-9223 +-5711 +-2783 +421 +5537 +-2876 +-2231 +-7465 +-2553 +5598 +6872 +6677 +586 +6386 +3744 +-5092 +7633 +-6089 +8956 +566 +-2915 +-4011 +-7612 +7201 +-3898 +6008 +3427 +-4828 +6643 +-8571 +4751 +5990 +8111 +-8300 +-4447 +-321 +8120 +-4267 +-3605 +6867 +-3618 +-4291 +7813 +-8597 +-49 +266 +-5932 +9414 +5123 +1152 +-6150 +-4329 +-1620 +-7053 +-2027 +-3172 +8365 +3522 +8015 +7071 +2187 +8785 +-6211 +-481 +-4968 +771 +7578 +1685 +-5544 +-8506 +5785 +2296 +1756 +9977 +-8571 +-790 +-6787 +-1903 +-8157 +-2738 +-7778 +-1850 +7253 +1545 +-7844 +7205 +2261 +-8378 +-2734 +-4920 +443 +-6792 +-9388 +-59 +3131 +832 +-4512 +846 +-6071 +4621 +-1617 +8507 +-5547 +8751 +448 +-3736 +105 +-9590 +-1978 +641 +-2359 +-8242 +-4504 +-7555 +16 +-9876 +9786 +-2882 +-6408 +-2565 +2976 +7706 +-656 +-8704 +2326 +7364 +-5963 +4628 +-603 +9611 +-4346 +4401 +-985 +-1730 +-5710 +-7357 +4855 +4568 +-2557 +8395 +-9372 +4012 +-8873 +-5669 +703 +266 +-2684 +-5951 +-499 +460 +-8775 +-8800 +5120 +-6273 +3311 +7460 +4554 +2870 +7689 +7454 +-9014 +-8868 +240 +3471 +-2348 +3141 +6187 +5341 +1981 +-1860 +-4003 +-4295 +5129 +6915 +-9170 +1639 +-6042 +-3111 +-816 +741 +1789 +-8269 +-1341 +9052 +-9031 +3185 +-6085 +-6441 +-2443 +-9465 +1668 +2108 +2744 +6728 +6990 +3996 +-7170 +9328 +8191 +8097 +8904 +5557 +3206 +-1498 +-5422 +-152 +5605 +3425 +-6989 +3197 +2892 +7841 +-1135 +-5080 +-4443 +-2869 +8053 +-9801 +-571 +-2578 +-1552 +325 +-6831 +-9571 +-509 +3473 +5855 +1272 +9752 +740 +431 +-8709 +-4495 +-9626 +9433 +-6918 +-5849 +-1081 +3598 +5 +-4079 +7323 +-7924 +3452 +-3620 +4089 +813 +9021 +6283 +7345 +-3228 +-7654 +2783 +-9482 +6778 +-6765 +-3382 +-6380 +-2926 +8191 +-7086 +4374 +1958 +-1367 +-311 +-7097 +-7767 +3197 +1805 +211 +798 +-7297 +-9814 +7167 +-520 +-6642 +5712 +8280 +-950 +-5003 +4270 +-8740 +9776 +6371 +-608 +-3854 +-389 +8557 +-5018 +-5995 +-6001 +-8525 +107 +-2517 +3343 +3413 +9284 +-8964 +1966 +-5023 +-3318 +-7094 +-2837 +-3854 +8887 +7241 +-5357 +7992 +-2240 +-1353 +6673 +671 +-5665 +-8709 +6828 +6214 +-6326 +467 +287 +-994 +-6642 +6341 +-3183 +5021 +7281 +-6597 +-8207 +-8700 +5462 +-8320 +-6396 +6371 +3788 +6125 +1364 +415 +913 +-47 +-4002 +-8236 +-2233 +-3337 +-5255 +1972 +2392 +5129 +3882 +4728 +5574 +8610 +6484 +7071 +3602 +6079 +-5646 +7142 +-9208 +-3894 +1923 +-7224 +-9763 +3140 +-7738 +-2990 +9421 +5429 +6098 +5192 +-8038 +1385 +6219 +6964 +6804 +-2404 +7915 +-2023 +-7173 +3325 +-5474 +7137 +8350 +-2129 +1171 +3429 +8236 +-3868 +-6224 +-5112 +-3279 +2455 +3413 +-8675 +7973 +-6274 +426 +6976 +1613 +-8014 +3601 +-1314 +1334 +-2238 +4267 +8135 +8137 +6928 +4562 +2980 +8253 +4267 +-4986 +-8239 +-4672 +846 +6969 +5556 +-7338 +-5437 +4888 +2294 +6651 +-7425 +757 +7138 +-8415 +7597 +-638 +3433 +-6934 +7055 +2126 +4560 +151 +-7230 +9317 +7374 +9027 +1015 +2603 +-2897 +-7174 +3113 +-3184 +-3093 +-6104 +9211 +-3172 +4574 +3360 +2418 +8480 +418 +-9570 +5133 +7881 +9955 +-6240 +-3550 +-8018 +8769 +4198 +-2074 +3489 +-2200 +-3948 +5506 +4184 +-6429 +6484 +-9854 +2849 +7981 +-8305 +2458 +3864 +-7123 +-5018 +-1603 +3413 +-2378 +-3417 +30 +-3811 +-6387 +-7346 +4184 +7148 +646 +862 +6857 +3056 +5146 +7693 +-1261 +2308 +-5660 +-1410 +1556 +1051 +-6573 +9129 +-2783 +885 +2845 +-2935 +9923 +5393 +-7773 +6184 +-1069 +-9031 +-5003 +6454 +-4005 +-6104 +5504 +7480 +9372 +6503 +5324 +-3752 +-7435 +2638 +3581 +-97 +3727 +8015 +3314 +-3822 +-152 +7834 +4622 +484 +-7545 +7561 +6813 +8195 +-184 +-2417 +6313 +2094 +4671 +5324 +-3876 +358 +1810 +-1726 +-4500 +-9045 +7450 +3835 +-6438 +-685 +-6124 +5855 +-6961 +7084 +-3621 +1664 +1382 +9061 +-1792 +-8844 +1441 +6391 +7763 +-2635 +-6004 +4597 +6635 +221 +5455 +-316 +-3570 +6846 +-4026 +-1807 +-2969 +-2735 +-1232 +-7319 +9483 +-239 +4838 +-8760 +4588 +6249 +7550 +302 +-7663 +-9425 +-6333 +-3603 +-9370 +936 +-707 +3303 +5786 +461 +-6852 +1720 +3126 +9570 +-2735 +2494 +-8926 +-1277 +-6817 +-8038 +6076 +8504 +1390 +5865 +-6727 +3902 +1416 +7767 +-1353 +-7395 +-2683 +-5713 +-2817 +2138 +-7338 +1276 +-1069 +2341 +2877 +785 +-9127 +7938 +-1348 +-6677 +2520 +979 +1242 +2830 +4892 +-9811 +-8097 +-8714 +-8101 +7434 +3583 +-655 +2532 +8997 +-3087 +-773 +-2881 +6282 +-6522 +9923 +-1607 +1609 +-4186 +3153 +5547 +-4852 +-4540 +-6003 +7079 +-5491 +4247 +2413 +6753 +8261 +957 +6097 +-4347 +-1960 +4502 +-201 +-8285 +-6829 +-8054 +-7213 +4401 +-2150 +2467 +-6752 +4129 +9358 +-3886 +3851 +2133 +-1323 +-6160 +9721 +3831 +-7871 +3542 +-9466 +5676 +5660 +-4209 +-4683 +4553 +-7694 +7221 +-5059 +-9034 +419 +-9214 +-3417 +8549 +-5276 +-817 +2375 +-3505 +-3117 +-6787 +-9294 +8693 +1531 +-1572 +9800 +-7371 +8943 +-6396 +825 +-9501 +-1192 +4129 +6656 +-5036 +-8101 +9372 +-4672 +-9062 +-1047 +4476 +2221 +-1671 +-8461 +2977 +-1791 +-3627 +-5504 +5829 +-1767 +-2867 +-8864 +-7367 +-8052 +-5914 +-8806 +7347 +-7074 +6137 +5441 +5044 +-5752 +-9272 +-4293 +454 +-7069 +7755 +7171 +-6944 +7993 +-2999 +5328 +7198 +-1044 +-6896 +-5758 +-9469 +9267 +8851 +404 +1272 +-4733 +6331 +1378 +-1939 +-6664 +-2743 +7050 +8198 +-4852 +6599 +-8027 +-3141 +-8729 +1320 +-5053 +-6123 +-8840 +-908 +2413 +2599 +-4319 +-8231 +-7062 +-2786 +6255 +-8163 +8579 +-3655 +-835 +420 +4180 +136 +-6689 +3519 +4711 +-1050 +5400 +-908 +5180 +-8585 +-9914 +-6425 +1330 +-752 +-7983 +1067 +1690 +-3337 +-9372 +2247 +1846 +1930 +1956 +-5361 +-7882 +-3102 +7421 +-544 +3360 +-8902 +-2240 +5014 +2529 +2841 +-8830 +7800 +2354 +-8393 +-3880 +5788 +2569 +631 +-4267 +5594 +4918 +-6666 +115 +5244 +-2288 +-3956 +-6029 +-5786 +5166 +3178 +-3943 +5034 +7641 +-2593 +-8377 +-3298 +6136 +269 +-994 +-697 +2651 +-2667 +2177 +2433 +3680 +831 +-2069 +-4795 +4070 +5218 +-6240 +-26 +-8086 +-4807 +-8334 +-2466 +1930 +-8151 +9166 +-2533 +-1311 +2122 +3160 +9130 +-5561 +-2625 +-2308 +-1385 +-9989 +-5872 +-808 +150 +-8870 +-283 +9989 +813 +8997 +757 +938 +-3665 +-8011 +8229 +7501 +2990 +5098 +-3600 +913 +-5505 +8279 +6582 +-571 +-2734 +7359 +4260 +8229 +-7824 +5340 +-2683 +6546 +8652 +1686 +-5266 +1155 +-2323 +6017 +3343 +-5534 +4674 +6695 +-1639 +8557 +5445 +490 +5162 +4524 +5117 +-7186 +6193 +6717 +-3232 +-7844 +-4719 +2878 +-7338 +4504 +-9940 +5447 +-4900 +5273 +4448 +7128 +8509 +3264 +2782 +-7130 +7881 +-4443 +-4157 +-690 +8993 +-9016 +6512 +4700 +8226 +2140 +-7497 +7137 +6996 +-5405 +7109 +6646 +-1631 +-552 +5696 +3501 +-3344 +3265 +-7663 +-3543 +-820 +8999 +-3575 +-4683 +7409 +-9136 +5828 +-9203 +-9622 +-9633 +-2653 +9434 +9961 +-9895 +-422 +1768 +-396 +-2251 +1909 +-1163 +-724 +-6007 +1956 +3469 +989 +1765 +-6944 +6522 +-1159 +-1957 +-7848 +-3561 +-5006 +-3056 +8137 +-4862 +-6761 +-3534 +-2294 +-8086 +3141 +-6029 +8193 +-543 +-6542 +9918 +-2371 +-9490 +-5847 +-1217 +3193 +-863 +6560 +-9425 +2043 +8774 +-4855 +-8925 +7907 +8051 +9411 +7388 +302 +2148 +-9470 +-3440 +-9763 +-4183 +2472 +6235 +3047 +8097 +-4743 +1977 +691 +7923 +1274 +-744 +5660 +8162 +-7672 +8678 +6063 +6490 +8088 +3413 +2529 +6456 +7812 +8780 +-8139 +-8394 +-2335 +7493 +1813 +-544 +2525 +-9408 +-2132 +-2563 +-5758 +-596 +1121 +-7442 +-3130 +1252 +6408 +9657 +3303 +-647 +-7809 +-4211 +-5333 +7494 +-5159 +-6005 +-7938 +-7802 +-7155 +-8274 +4771 +3679 +5804 +-6934 +-4852 +6341 +6170 +-9066 +3199 +-855 +-3023 +2458 +5480 +-6929 +-6073 +-4672 +7173 +-2558 +-5567 +-4822 +136 +1726 +858 +5619 +-1436 +-6861 +373 +-1146 +-6993 +3603 +2782 +8460 +1449 +-6813 +-8594 +1646 +-4118 +-6276 +1582 +-6491 +3280 +9147 +-7963 +9249 +4539 +5273 +-5437 +741 +-1754 +3121 +6703 +-3503 +3795 +-8933 +-3698 +3551 +9570 +-5008 +6135 +-1748 +3745 +6155 +3581 +-2659 +530 +4401 +8902 +2062 +8331 +1805 +6100 +-3066 +8669 +-8461 +3230 +-4103 +-2808 +-8649 +-5113 +5619 +-1277 +9963 +9707 +5008 +8706 +6314 +7555 +-8999 +-3377 +489 +4022 +3853 +3013 +-6216 +-4258 +8127 +8241 +-1924 +-6857 +-1447 +7782 +-5810 +5097 +-2927 +-4619 +9982 +3096 +897 +-1750 +-5088 +-9911 +4019 +-9553 +4574 +-2992 +2342 +-76 +-7663 +-1501 +7089 +1405 +8206 +1276 +2008 +-5967 +8117 +-8078 +-6823 +-9613 +-8120 +8902 +3230 +8459 +7794 +-2242 +3150 +-4938 +858 +-9649 +8429 +9831 +3499 +-6240 +-664 +-8966 +-8445 +-5308 +596 +6440 +3087 +-2158 +8555 +9329 +9877 +2354 +9405 +695 +-8400 +-6408 +-1151 +625 +-3465 +-2268 +-9296 +-1645 +-2722 +2259 +530 +-2263 +-223 +-8115 +4728 +-890 +8118 +-7449 +-1288 +6582 +3544 +-1159 +-4555 +1330 +6512 +5338 +5444 +-4013 +1713 +2226 +-6529 +112 +7445 +-4246 +-7442 +4445 +-7463 +421 +10 +2901 +8997 +-3497 +-2146 +-4870 +6446 +5354 +-8580 +-6542 +-6776 +-2685 +4743 +-2946 +-6761 +6638 +6996 +4391 +6882 +-1081 +-113 +-3620 +6621 +7915 +-4632 +-7973 +-8231 +-9210 +2535 +-6537 +-7302 +2341 +-8532 +9495 +2048 +-8027 +-1709 +3151 +2643 +-1080 +7519 +9590 +5685 +3160 +4036 +9230 +5058 +9541 +3347 +-8208 +-3280 +1089 +-7355 +-4954 +962 +3746 +8094 +-8214 +-5383 +5192 +4584 +7137 +1520 +1608 +8976 +596 +-5246 +-6589 +8276 +-3311 +2137 +1363 +7603 +-4311 +9919 +-9984 +6103 +-8597 +5 +6341 +-1949 +-2808 +-825 +2458 +-4378 +-3254 +-6315 +5588 +5272 +8834 +-8709 +-2364 +6688 +7124 +7946 +2603 +-5891 +-8680 +-501 +6753 +-7616 +-7062 +3109 +1536 +1756 +-7978 +5021 +-6182 +-7195 +-2187 +2780 +-4745 +2779 +1720 +-4738 +-5884 +2007 +786 +-7602 +-5092 +5898 +1921 +-7537 +-7089 +2342 +5326 +8033 +3996 +3439 +7140 +7315 +-5598 +8470 +-9499 +939 +2807 +-3188 +-1523 +-8312 +3719 +-5279 +1881 +-1348 +-9861 +-4696 +6135 +-9050 +-5112 +-1833 +626 +-4900 +-2135 +-5030 +-5782 +4391 +9144 +-5235 +-9470 +-9492 +9077 +1669 +-5313 +-7973 +2640 +-9050 +-5313 +596 +-8402 +8017 +-9076 +-9646 +3404 +8633 +3275 +-5669 +9776 +3542 +-4988 +-6643 +-1797 +2707 +8871 +-5365 +5640 +-802 +1692 +8513 +6219 +-8946 +-7304 +4340 +9579 +3775 +-5740 +1197 +7219 +5999 +-7255 +-5632 +6487 +-3655 +3109 +4432 +7528 +7919 +-7992 +-9062 +4407 +7948 +2023 +-5709 +-6230 +8098 +9570 +-1047 +-5205 +7801 +4450 +1976 +668 +-7463 +8592 +-1469 +8500 +8670 +9731 +-7855 +6236 +-1034 +8207 +-2560 +2495 +-2031 +5339 +2673 +-6249 +7752 +-4121 +-4233 +-6786 +-6693 +-4551 +-4738 +-2660 +688 +9295 +9240 +-6597 +6915 +7340 +-2771 +695 +-7891 +7 +-7783 +9977 +8087 +-3271 +-9506 +-9458 +-3280 +915 +7448 +8670 +-4048 +5244 +9414 +3003 +6514 +-9381 +-7241 +714 +-8101 +-618 +6768 +-7487 +1113 +7146 +-7449 +-2932 +431 +3545 +-9649 +-1541 +2781 +-2625 +-1986 +1444 +-5797 +4493 +3285 +-8220 +234 +9017 +-2610 +131 +1613 +3168 +-625 +588 +-9067 +9603 +7143 +-4890 +-8016 +-1427 +7687 +532 +7852 +2876 +-1533 +1544 +9430 +2692 +4597 +9375 +-3247 +-9850 +2592 +-7594 +2494 +-581 +-6396 +-7678 +5871 +7777 +3446 +9657 +-9361 +4254 +606 +2910 +8798 +-9853 +-1976 +8706 +5473 +-1729 +-9142 +-861 +-4785 +-1131 +-9878 +-9878 +4869 +-3168 +-3651 +236 +-3280 +-8740 +-788 +-8878 +9640 +5980 +5660 +8331 +-9769 +366 +-4003 +8423 +78 +9503 +-4449 +8469 +-5669 +789 +-9878 +-5682 +-9823 +283 +4876 +1633 +9570 +-4551 +4374 +2171 +-3088 +-4488 +-3676 +-7124 +-6618 +-7963 +1617 +-4394 +6653 +-1639 +-7130 +7673 +-4020 +-3800 +-9420 +-1680 +7585 +2708 +-9276 +-1523 +-4002 +-6831 +-2296 +6622 +9690 +8486 +5477 +765 +-3004 +-4890 +2286 +3353 +80 +9357 +2069 +-5995 +4927 +9607 +4959 +-8926 +-3706 +-7435 +7221 +2725 +9284 +6597 +-7465 +-5380 +-2995 +9635 +-4410 +3724 +-471 +633 +-5810 +6368 +1909 +-3858 +-5124 +8887 +7906 +6578 +2342 +8291 +-4020 +1546 +5118 +-5986 +-9211 +7560 +-499 +-7959 +-4198 +8425 +-5388 +-3491 +-6032 +278 +1724 +9541 +-4130 +-6668 +1015 +-184 +5974 +-671 +-8745 +3207 +862 +2258 +4126 +1231 +7905 +5712 +6249 +2138 +-1353 +6039 +-3661 +-800 +4064 +-4900 +-598 +8025 +6525 +4454 +2169 +6920 +-4964 +-7007 +-4993 +8870 +-9890 +-8474 +6928 +-6057 +3564 +7695 +-6898 +7911 +6891 +-6934 +2031 +5999 +3973 +-5323 +9965 +991 +-1204 +-5179 +1757 +-8169 +5554 +-3628 +3315 +8419 +422 +-8143 +7071 +2617 +-6839 +-5559 +-9737 +-9972 +-4657 +-5505 +2343 +7315 +-4757 +-516 +8583 +2197 +5709 +3168 +7220 +8742 +-8393 +9682 +-7102 +-1135 +3366 +-1238 +-7662 +-4039 +-4409 +-3500 +-3299 +-2402 +-539 +8567 +-1736 +8915 +-4381 +-7151 +6990 +7627 +2876 +-3088 +-7876 +-339 +-4794 +5504 +-9825 +8822 +9281 +8469 +7907 +301 +4667 +9885 +-4991 +-3371 +6566 +4962 +-2384 +-5333 +-5615 +6418 +-97 +-3928 +-2492 +-8236 +-3518 +-5097 +2977 +5166 +-687 +-8395 +-9854 +3610 +9958 +3731 +2744 +-270 +6902 +-8319 +9248 +-5647 +-7404 +303 +-2345 +8825 +-787 +6303 +-9007 +-687 +-9056 +7093 +-1114 +3973 +115 +2161 +7464 +-2408 +-8059 +3260 +8256 +659 +-6305 +6039 +4372 +-505 +-9692 +-4296 +-6761 +-3561 +7992 +-3807 +1066 +-9293 +-4396 +-8139 +-6234 +-3561 +9529 +-1304 +-6430 +-3669 +4009 +-1541 +2045 +-505 +-7722 +6303 +-5158 +6606 +-282 +8053 +-9420 +-7563 +-8196 +9059 +-2795 +-7367 +-6031 +4927 +-9045 +-932 +9795 +4801 +1602 +-7261 +840 +-5289 +-7620 +-2565 +6405 +3407 +2873 +7057 +6799 +-5909 +-2688 +1475 +4454 +-1685 +-950 +9169 +8965 +-4787 +-4163 +3102 +4885 +6392 +4263 +-19 +-4984 +-101 +8641 +2181 +-4990 +1363 +-2839 +6646 +-8262 +2789 +-9896 +-2499 +-877 +-6571 +2936 +-1238 +757 +8424 +6388 +1317 +-1054 +9832 +-2444 +3624 +9741 +-3084 +-2716 +2065 +-5867 +-4643 +8680 +4402 +4493 +5789 +-9663 +8128 +7368 +-9999 +-5483 +8577 +-2099 +6988 +4515 +-6700 +-9759 +7805 +-3020 +-6589 +4090 +3808 +2831 +-5088 +-9458 +4409 +-7993 +6522 +-9223 +5021 +9281 +2662 +5823 +-6490 +-724 +4502 +7056 +-5703 +-4735 +4875 +989 +-3811 +-7913 +-9430 +-8733 +1177 +5166 +-8936 +5479 +-483 +-4766 +-7052 +-6237 +-1545 +-6708 +-9905 +-9699 +1050 +-2384 +-2238 +2222 +5763 +6224 +-671 +-9420 +2015 +-817 +5654 +695 +-3140 +2117 +9369 +-240 +-8385 +8841 +8789 +-4885 +4151 +-2992 +4978 +306 +3335 +303 +-5982 +-8351 +5001 +2375 +4120 +-2817 +6516 +119 +-9042 +-4932 +5976 +-7484 +-3031 +7809 +-6491 +2911 +4560 +-4406 +9696 +4022 +-1538 +-3573 +6621 +-9696 +483 +-2371 +2475 +8222 +9147 +8780 +4315 +-8394 +5008 +8509 +3429 +-3621 +-5303 +4753 +-9992 +7296 +8634 +4549 +3951 +-8163 +-4250 +-1722 +9207 +768 +-8519 +-1572 +-8966 +-9667 +3902 +755 +2744 +8922 +5421 +-6032 +9457 +2442 +5679 +9375 +-9994 +-8011 +-1016 +-3063 +-3661 +3413 +1652 +-2635 +-2691 +-9649 +6301 +-9027 +-4373 +4506 +-8320 +2591 +8474 +-4317 +1849 +3542 +9845 +5667 +-3227 +-9254 +6656 +9676 +-4186 +-8207 +-3757 +-8213 +8486 +1814 +2023 +6572 +9107 +3426 +-9908 +1155 +9206 +-9425 +-4807 +-6839 +6418 +-2309 +-7418 +-2132 +8735 +7977 +5078 +1276 +5987 +1400 +115 +-9905 +2475 +-4729 +-7219 +-6024 +-4319 +-7438 +6838 +6196 +4194 +-5961 +4321 +-5008 +3260 +200 +5793 +8398 +4429 +-131 +9664 +-3360 +-2901 +-2513 +-6057 +-1390 +7019 +7624 +4033 +8763 +6863 +-2498 +6538 +-1480 +-2464 +-4326 +913 +35 +5455 +2475 +-4634 +7261 +4234 +340 +8942 +-4502 +-9033 +1385 +-7360 +1589 +5043 +7810 +3727 +7652 +5399 +-2164 +-7597 +-6653 +1841 +-6526 +6261 +-7616 +-7368 +7173 +5790 +632 +8180 +8127 +3808 +7658 +-817 +885 +340 +-735 +-3893 +6124 +-9353 +4991 +-3980 +-7213 +-5830 +-7704 +1805 +92 +5289 +-1831 +-2743 +6684 +-6092 +4989 +-1696 +8963 +-9901 +3883 +-2868 +1304 +-2954 +-1033 +-2012 +51 +2783 +1927 +-8697 +7818 +6885 +6261 +2662 +5236 +-8771 +4510 +4647 +6229 +5855 +5259 +4855 +4519 +6902 +421 +2569 +325 +-8964 +-4870 +-9029 +217 +8461 +600 +-1981 +8626 +7632 +-519 +1363 +9391 +-703 +-3898 +-6710 +8465 +-1199 +-2846 +4648 +-3794 +2214 +5448 +-7931 +-7412 +-9435 +8206 +-5452 +3325 +4934 +4267 +3076 +-9599 +-5709 +750 +-2798 +8626 +-1092 +3059 +1760 +7391 +-6001 +767 +-8711 +-7693 +-4748 +-6343 +6271 +-807 +-8441 +8353 +4953 +-8733 +-1823 +1617 +7985 +8997 +3610 +4382 +6097 +-7062 +189 +2012 +-9316 +4771 +-8142 +522 +-5047 +9324 +-2417 +-2337 +-1204 +-1065 +3439 +532 +4670 +4070 +1525 +37 +6523 +-5048 +3916 +112 +9963 +-2156 +-6038 +6220 +4033 +1394 +-3561 +-5891 +6207 +-3577 +-3980 +9674 +-3868 +-3952 +-4672 +7068 +-2421 +-7762 +-1736 +-994 +-1375 +-7462 +-1353 +2711 +496 +-3068 +-2371 +5581 +8121 +-7959 +9366 +-2445 +-9842 +-8059 +-1816 +8428 +7121 +9579 +-5531 +9831 +4501 +9156 +6367 +-7371 +9831 +-817 +-6331 +-5536 +8072 +-7314 +9433 +-8451 +8974 +-4680 +5027 +6614 +3413 +-4523 +6788 +163 +-1238 +4733 +5610 +1915 +2609 +-1469 +-5071 +8113 +3287 +-6039 +-1564 +1066 +5075 +-2643 +6908 +-2577 +8097 +-7361 +3868 +-6449 +5979 +-2309 +6392 +-1226 +-622 +5336 +5473 +4928 +-63 +-8778 +-6909 +-1695 +1774 +-5561 +-1687 +-8145 +6326 +8762 +3445 +1972 +419 +-5423 +773 +-9775 +-7635 +-6225 +2039 +-9150 +-1314 +-5118 +5640 +9377 +-7693 +4822 +-1807 +-4262 +5576 +-9165 +-3485 +7624 +-1986 +9083 +-2712 +-4686 +4004 +-2897 +-1547 +9083 +-9437 +-8050 +6891 +-928 +5987 +7019 +-6333 +9955 +9170 +-6479 +2512 +4078 +-6061 +-8804 +-7354 +3295 +-2150 +-4933 +3883 +6188 +4460 +5368 +8469 +-6216 +-4291 +-2783 +9915 +3624 +-7301 +9903 +-5950 +1787 +-6238 +-7537 +3193 +652 +4134 +2443 +-7215 +6333 +2451 +-6643 +-2349 +3859 +6266 +6837 +-4463 +-9402 +-4028 +-8477 +-7551 +-2097 +-1538 +9685 +-6821 +-7444 +2552 +964 +-6300 +-4039 +-1309 +-3967 +-389 +7823 +6130 +-3669 +-8902 +-8239 +-6409 +5700 +5118 +-7809 +-7590 +3409 +-2806 +-4424 +-9523 +8881 +9877 +-8143 +-2771 +-4319 +9682 +-4903 +9758 +-1339 +5678 +5598 +-789 +-7405 +-4689 +-4748 +-3028 +640 +-2336 +3869 +5226 +-7255 +-4795 +7052 +-5267 +7207 +1298 +-6485 +-3499 +-4311 +-4452 +2083 +-4677 +1841 +5889 +6250 +7271 +8035 +3260 +-356 +8150 +-443 +-7066 +7207 +-7867 +8283 +-4954 +8507 +2124 +-6693 +5786 +-9294 +-8113 +-6756 +-8802 +7878 +-8164 +-9811 +-1025 +-9951 +2709 +-4785 +1981 +5435 +-3402 +150 +-1204 +5169 +-4731 +6849 +-1625 +-3289 +-6713 +6897 +-8500 +5573 +9734 +-9033 +-8625 +6177 +4833 +-2152 +-2146 +6869 +3314 +3613 +-1469 +8281 +2106 +8248 +-4924 +-8704 +561 +2396 +8840 +5039 +9820 +9974 +2800 +-1439 +2455 +2538 +2469 +-17 +-8393 +-2865 +3268 +5338 +2458 +7285 +-7800 +9525 +-8290 +1401 +3030 +2685 +402 +-1521 +-5020 +-4463 +8280 +-3620 +625 +7311 +6323 +-1034 +9814 +-1639 +5079 +-8312 +-7219 +-1357 +-878 +2872 +-5308 +8664 +-6934 +-4594 +6725 +9457 +9977 +5462 +-5239 +5670 +-1343 +4171 +-7548 +3601 +-3121 +2103 +-3292 +-7643 +3248 +-5782 +145 +-8836 +4539 +-4211 +-1846 +5395 +9481 +1177 +-4412 +6080 +7365 +-8835 +1244 +-7213 +-5883 +5449 +4613 +8965 +-9823 +5322 +-5986 +-7555 +-4897 +3026 +-9316 +4435 +-9086 +-6550 +-8018 +9821 +2822 +4513 +9483 +-4640 +9391 +-2796 +2001 +1677 +2407 +1154 +524 +9665 +-4890 +7367 +-6273 +1307 +-8506 +-4329 +-8791 +2440 +-5810 +-2513 +-2848 +8296 +8267 +-7195 +-4652 +9865 +-2214 +-5402 +706 +-6898 +-1233 +404 +-4578 +-7006 +-6917 +-4121 +641 +3045 +-6290 +1929 +9731 +6566 +4204 +9663 +-6583 +-3811 +7050 +5311 +4771 +-8666 +1639 +-9570 +-1357 +-5333 +6249 +200 +4927 +-2254 +-1142 +2080 +-1101 +-5180 +-7187 +885 +-1563 +3013 +4758 +9560 +6125 +-9884 +2706 +-9823 +-9089 +8870 +4753 +-1969 +-5504 +8448 +7157 +1653 +-2929 +-3385 +7253 +-4743 +4727 +-1260 +9254 +-2445 +-3843 +6787 +8471 +3746 +5105 +1129 +-5282 +-8858 +1261 +-5333 +7079 +-4233 +5085 +40 +-9798 +-7772 +630 +4986 +-8580 +-7449 +3808 +1837 +3311 +-380 +2094 +-7379 +-4240 +9166 +5003 +-769 +-8016 +-6181 +-8884 +-5907 +-1843 +9359 +-5744 +828 +2069 +8180 +-2583 +-5521 +-4822 +-1061 +-3620 +-5655 +-915 +-5308 +2295 +-3525 +4595 +8940 +1713 +-8345 +2342 +-2351 +-1142 +3808 +-9151 +8636 +-7207 +-8690 +-7639 +5871 +-3574 +2823 +5945 +-7438 +-1238 +3199 +-9734 +-5841 +1263 +-4002 +5324 +6270 +7645 +-2949 +6827 +-9733 +-6645 +8285 +3335 +-1976 +3314 +-5359 +-5323 +4953 +6678 +-5487 +8638 +4241 +-4672 +5973 +5929 +5306 +6255 +-608 +-6705 +-3661 +3341 +-6396 +9697 +-9347 +-2184 +-9582 +-1129 +2825 +7140 +5619 +-4211 +794 +8517 +-6022 +6067 +-7904 +2467 +5200 +4732 +468 +767 +-3819 +-8856 +-150 +-7314 +-6949 +9083 +3010 +-1539 +-4409 +-1062 +5687 +-9169 +7116 +-460 +-7164 +-9435 +-9900 +3438 +2585 +-394 +-9664 +6369 +667 +4663 +5233 +7977 +-1577 +7855 +718 +-5741 +-2225 +-422 +1261 +-9030 +5942 +-8345 +4867 +-8840 +119 +9467 +-6760 +3797 +5444 +-8241 +6000 +-5794 +650 +1266 +-2514 +9522 +7409 +1234 +-8424 +-9200 +9590 +-1076 +-7368 +1923 +-5240 +-339 +3067 +5862 +-2166 +4936 +-4003 +-8721 +-1447 +3704 +3528 +7121 +4352 +-7066 +-3941 +4248 +3529 +6897 +-2946 +8993 +5368 +-2464 +2872 +9567 +9359 +4240 +-2356 +6643 +6625 +1780 +-1836 +-3152 +-6778 +7883 +9907 +6080 +3390 +610 +1859 +5405 +6287 +5712 +378 +9483 +-4575 +961 +4661 +-2531 +3788 +243 +-4491 +-7199 +-7733 +-980 +-358 +9817 +-5974 +-6072 +-2746 +3339 +4831 +-9290 +5 +-136 +6671 +2491 +-7246 +7633 +-5308 +-2817 +7237 +6487 +4029 +3706 +-4909 +-8415 +-6061 +2533 +5075 +-8451 +-8204 +-2031 +3470 +3068 +-3987 +-5053 +5341 +-5362 +3464 +4138 +-725 +-3254 +-6875 +9479 +-1366 +2785 +2074 +-9882 +5254 +-7638 +0 +2169 +6902 +964 +-9901 +-8092 +-6794 +-6861 +-8225 +-8196 +-7267 +7737 +-7396 +-6934 +-3873 +2916 +5338 +6651 +-4706 +3489 +558 +7559 +3746 +4986 +-915 +-1831 +7069 +3198 +-5289 +-7924 +-8480 +6079 +-1367 +2173 +1053 +-6842 +-3964 +7285 +-6873 +-9225 +-5580 +-1641 +3156 +5592 +-6612 +-8690 +3623 +-5918 +2407 +-1308 +-9815 +-9687 +9919 +8570 +1977 +-7282 +-8964 +-8329 +-9070 +7852 +9776 +4051 +7016 +8822 +-4890 +-6138 +-4411 +-6077 +5640 +-8936 +-7883 +1653 +-8976 +-2584 +-3006 +1748 +2779 +6025 +7717 +2017 +-4382 +-5540 +3878 +992 +-6829 +5421 +-7091 +8034 +-9482 +-132 +3383 +6036 +-5491 +-2979 +8981 +-5611 +-9051 +-7122 +8023 +8626 +9080 +-7561 +-9033 +-2492 +-529 +642 +-7701 +-2813 +-1229 +6959 +1661 +3745 +7555 +9731 +3549 +7109 +1756 +7345 +3315 +3288 +-454 +-9023 +-726 +-3616 +-5804 +-6032 +3059 +-9102 +-7404 +-8966 +9684 +1933 +866 +7752 +-6687 +376 +-5277 +2413 +-3203 +-3718 +7253 +-6823 +3608 +2133 +-2793 +508 +7060 +3892 +-8331 +640 +-4551 +921 +-8831 +-4700 +-7478 +1113 +2122 +-4735 +8164 +-6761 +8776 +-2591 +424 +5272 +4067 +6708 +-5637 +6097 +-6815 +-6882 +5393 +8135 +-2420 +-2982 +370 +7220 +73 +-5473 +-782 +-9927 +-6160 +-9323 +-4209 +-3245 +1109 +-3966 +-1114 +5841 +915 +2310 +-9195 +5847 +71 +4094 +-6868 +-5018 +-4757 +1334 +-8169 +2253 +4082 +6837 +-4610 +2458 +3377 +4114 +4409 +-8385 +1066 +-2581 +-2028 +6620 +3111 +-4368 +7220 +-3412 +3274 +7296 +3068 +-8910 +9838 +-4202 +1649 +7586 +6098 +2409 +4155 +2343 +-958 +5445 +-5133 +-4094 +7893 +6802 +695 +6292 +2103 +9378 +2122 +2511 +1726 +-9321 +-4592 +2111 +-608 +-6702 +-4714 +-2404 +-5489 +5081 +-703 +73 +-3980 +7964 +-4726 +-3757 +7693 +266 +-7469 +9480 +-9507 +-2826 +-4168 +-5359 +2552 +4695 +-6744 +3072 +-5109 +-1653 +773 +266 +-7933 +9283 +2237 +-1221 +-7214 +8965 +9503 +7757 +-2023 +-2912 +-5179 +5447 +-4257 +-8799 +9513 +-9989 +12 +8341 +667 +9958 +-2361 +3413 +670 +-4726 +-6766 +-4411 +-6549 +-321 +-9759 +8370 +-8401 +8993 +-2182 +-1954 +2862 +8976 +3693 +3360 +-7266 +-988 +-8899 +7197 +-4163 +-9571 +9264 +-355 +-8220 +-3440 +-6470 +5034 +5846 +-8702 +9792 +5192 +1289 +-4257 +4559 +3679 +5188 +-928 +7131 +6017 +2057 +4476 +254 +-115 +4624 +6371 +-7034 +5311 +-9066 +6263 +-980 +3353 +1972 +-6826 +3160 +-890 +7966 +-2929 +-5061 +-4795 +-4671 +-9448 +-8553 +8920 +-9564 +-841 +-5203 +-7377 +-79 +8393 +-1080 +-1637 +-7478 +-9989 +-7787 +3552 +6460 +-2810 +1752 +8986 +3084 +-8906 +-4686 +-5482 +6125 +-835 +2554 +9455 +4863 +-6333 +9983 +3561 +9206 +4064 +-3573 +-8447 +-5647 +9846 +6367 +-2150 +-3651 +6593 +-6810 +1034 +7579 +-9917 +-1014 +-47 +7823 +3881 +7251 +-3852 +5444 +-8524 +245 +-6859 +8474 +-6588 +-3754 +8118 +-3410 +9632 +914 +-1594 +2106 +-1722 +2143 +-8143 +3386 +-2697 +4671 +3764 +-8986 +9138 +1739 +1827 +-7849 +6184 +2811 +10 +6746 +8549 +3764 +2703 +13 +51 +-6596 +5501 +4240 +-7871 +-8866 +7464 +913 +-3230 +-907 +-1430 +-1823 +-658 +-4748 +-4936 +4732 +-7901 +4071 +9608 +-9616 +5960 +1690 +-4265 +1976 +-4634 +6751 +-4250 +-8375 +5756 +-9076 +8779 +-863 +1849 +-1042 +741 +-185 +3430 +3594 +-4523 +-4291 +700 +3225 +-4874 +8995 +2472 +-2633 +3126 +7075 +5724 +7432 +-8177 +-3140 +4403 +5435 +6487 +8065 +-7310 +9023 +1633 +5616 +7752 +4504 +-3105 +-6331 +7138 +-2559 +-7462 +4835 +7262 +5019 +-8862 +5546 +-1572 +8598 +3973 +4924 +4681 +2537 +-4361 +7973 +2841 +-7927 +-4028 +3426 +6280 +-2738 +2068 +-4182 +2209 +-394 +6303 +-6761 +9622 +-2498 +1711 +7189 +-8580 +-2733 +8714 +-9458 +6154 +-9822 +7520 +1929 +5105 +-2228 +-6077 +-6842 +-7956 +-3855 +2192 +969 +-4373 +-2583 +-2322 +5198 +-4237 +5218 +-5520 +-8972 +2535 +-8680 +-6323 +-8644 +5922 +3754 +7194 +-5908 +6007 +3650 +-1967 +-4409 +-2268 +341 +-441 +-7163 +8652 +-4043 +150 +-8145 +2595 +-1205 +-7945 +-5044 +101 +8203 +-845 +2652 +-623 +-7695 +-4406 +-8519 +1767 +-2952 +3346 +-1433 +9222 +8405 +-7923 +-3463 +-5036 +3326 +-5359 +-6918 +-8413 +-6205 +4888 +6241 +-877 +2043 +1986 +2908 +-3279 +6646 +1474 +5760 +-7262 +7791 +5884 +7379 +-7432 +-3306 +5095 +9625 +-530 +-8428 +-2432 +8586 +705 +235 +-8052 +1965 +-8922 +-5795 +-4409 +3064 +-4512 +2656 +8570 +-3068 +5621 +77 +700 +-483 +9372 +-3561 +-7866 +4328 +-400 +-9254 +-6114 +-4504 +-2797 +-5568 +-1443 +6872 +7013 +1304 +-8946 +-5255 +-5907 +1444 +-4876 +2574 +-8065 +-4988 +-8647 +-5081 +-1963 +-8561 +-9818 +-7435 +-4988 +-8706 +-4968 +6713 +-6815 +41 +3745 +1352 +2161 +1298 +-2846 +4181 +-4492 +5837 +7101 +-4652 +-8325 +9956 +2494 +7436 +8094 +2619 +3698 +7438 +1420 +-9994 +1684 +-5444 +-7404 +6586 +-7180 +-2377 +2137 +7881 +-817 +1746 +-9718 +8398 +150 +2114 +2696 +3409 +-9748 +4682 +713 +3390 +2308 +8687 +-7414 +-7722 +-6720 +6157 +-1153 +-937 +-8802 +-1039 diff --git a/src/day20/sample.txt b/src/day20/sample.txt new file mode 100644 index 0000000..52c68ff --- /dev/null +++ b/src/day20/sample.txt @@ -0,0 +1,7 @@ +1 +2 +-3 +3 +-2 +0 +4