commit 8792e5275ad01e3e0001012b061570c677f62e3a Author: Adam Wick Date: Fri Dec 23 19:45:56 2022 -0800 🌅 diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..f1ce8e9 --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module github.com/acw/advent2022 + +go 1.19 + +require golang.org/x/exp v0.0.0-20221126150942-6ab00d035af9 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..560d2c7 --- /dev/null +++ b/go.sum @@ -0,0 +1,2 @@ +golang.org/x/exp v0.0.0-20221126150942-6ab00d035af9 h1:yZNXmy+j/JpX19vZkVktWqAo7Gny4PBWYYK3zskGpx4= +golang.org/x/exp v0.0.0-20221126150942-6ab00d035af9/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= diff --git a/inputs/example.1 b/inputs/example.1 new file mode 100644 index 0000000..444e241 --- /dev/null +++ b/inputs/example.1 @@ -0,0 +1,14 @@ +1000 +2000 +3000 + +4000 + +5000 +6000 + +7000 +8000 +9000 + +10000 \ No newline at end of file diff --git a/inputs/example.10a b/inputs/example.10a new file mode 100644 index 0000000..fd7eba8 --- /dev/null +++ b/inputs/example.10a @@ -0,0 +1,3 @@ +noop +addx 3 +addx -5 \ No newline at end of file diff --git a/inputs/example.10b b/inputs/example.10b new file mode 100644 index 0000000..94cd0a8 --- /dev/null +++ b/inputs/example.10b @@ -0,0 +1,146 @@ +addx 15 +addx -11 +addx 6 +addx -3 +addx 5 +addx -1 +addx -8 +addx 13 +addx 4 +noop +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx -35 +addx 1 +addx 24 +addx -19 +addx 1 +addx 16 +addx -11 +noop +noop +addx 21 +addx -15 +noop +noop +addx -3 +addx 9 +addx 1 +addx -3 +addx 8 +addx 1 +addx 5 +noop +noop +noop +noop +noop +addx -36 +noop +addx 1 +addx 7 +noop +noop +noop +addx 2 +addx 6 +noop +noop +noop +noop +noop +addx 1 +noop +noop +addx 7 +addx 1 +noop +addx -13 +addx 13 +addx 7 +noop +addx 1 +addx -33 +noop +noop +noop +addx 2 +noop +noop +noop +addx 8 +noop +addx -1 +addx 2 +addx 1 +noop +addx 17 +addx -9 +addx 1 +addx 1 +addx -3 +addx 11 +noop +noop +addx 1 +noop +addx 1 +noop +noop +addx -13 +addx -19 +addx 1 +addx 3 +addx 26 +addx -30 +addx 12 +addx -1 +addx 3 +addx 1 +noop +noop +noop +addx -9 +addx 18 +addx 1 +addx 2 +noop +noop +addx 9 +noop +noop +noop +addx -1 +addx 2 +addx -37 +addx 1 +addx 3 +noop +addx 15 +addx -21 +addx 22 +addx -6 +addx 1 +noop +addx 2 +addx 1 +noop +addx -10 +noop +noop +addx 20 +addx 1 +addx 2 +addx 2 +addx -6 +addx -11 +noop +noop +noop \ No newline at end of file diff --git a/inputs/example.11 b/inputs/example.11 new file mode 100644 index 0000000..c04eddb --- /dev/null +++ b/inputs/example.11 @@ -0,0 +1,27 @@ +Monkey 0: + Starting items: 79, 98 + Operation: new = old * 19 + Test: divisible by 23 + If true: throw to monkey 2 + If false: throw to monkey 3 + +Monkey 1: + Starting items: 54, 65, 75, 74 + Operation: new = old + 6 + Test: divisible by 19 + If true: throw to monkey 2 + If false: throw to monkey 0 + +Monkey 2: + Starting items: 79, 60, 97 + Operation: new = old * old + Test: divisible by 13 + If true: throw to monkey 1 + If false: throw to monkey 3 + +Monkey 3: + Starting items: 74 + Operation: new = old + 3 + Test: divisible by 17 + If true: throw to monkey 0 + If false: throw to monkey 1 \ No newline at end of file diff --git a/inputs/example.12 b/inputs/example.12 new file mode 100644 index 0000000..433e0d2 --- /dev/null +++ b/inputs/example.12 @@ -0,0 +1,5 @@ +Sabqponm +abcryxxl +accszExk +acctuvwj +abdefghi \ No newline at end of file diff --git a/inputs/example.13 b/inputs/example.13 new file mode 100644 index 0000000..af73fbb --- /dev/null +++ b/inputs/example.13 @@ -0,0 +1,23 @@ +[1,1,3,1,1] +[1,1,5,1,1] + +[[1],[2,3,4]] +[[1],4] + +[9] +[[8,7,6]] + +[[4,4],4,4] +[[4,4],4,4,4] + +[7,7,7,7] +[7,7,7] + +[] +[3] + +[[[]]] +[[]] + +[1,[2,[3,[4,[5,6,7]]]],8,9] +[1,[2,[3,[4,[5,6,0]]]],8,9] diff --git a/inputs/example.14 b/inputs/example.14 new file mode 100644 index 0000000..1926028 --- /dev/null +++ b/inputs/example.14 @@ -0,0 +1,2 @@ +498,4 -> 498,6 -> 496,6 +503,4 -> 502,4 -> 502,9 -> 494,9 \ No newline at end of file diff --git a/inputs/example.15 b/inputs/example.15 new file mode 100644 index 0000000..652e631 --- /dev/null +++ b/inputs/example.15 @@ -0,0 +1,14 @@ +Sensor at x=2, y=18: closest beacon is at x=-2, y=15 +Sensor at x=9, y=16: closest beacon is at x=10, y=16 +Sensor at x=13, y=2: closest beacon is at x=15, y=3 +Sensor at x=12, y=14: closest beacon is at x=10, y=16 +Sensor at x=10, y=20: closest beacon is at x=10, y=16 +Sensor at x=14, y=17: closest beacon is at x=10, y=16 +Sensor at x=8, y=7: closest beacon is at x=2, y=10 +Sensor at x=2, y=0: closest beacon is at x=2, y=10 +Sensor at x=0, y=11: closest beacon is at x=2, y=10 +Sensor at x=20, y=14: closest beacon is at x=25, y=17 +Sensor at x=17, y=20: closest beacon is at x=21, y=22 +Sensor at x=16, y=7: closest beacon is at x=15, y=3 +Sensor at x=14, y=3: closest beacon is at x=15, y=3 +Sensor at x=20, y=1: closest beacon is at x=15, y=3 \ No newline at end of file diff --git a/inputs/example.16 b/inputs/example.16 new file mode 100644 index 0000000..85fa5b0 --- /dev/null +++ b/inputs/example.16 @@ -0,0 +1,10 @@ +Valve AA has flow rate=0; tunnels lead to valves DD, II, BB +Valve BB has flow rate=13; tunnels lead to valves CC, AA +Valve CC has flow rate=2; tunnels lead to valves DD, BB +Valve DD has flow rate=20; tunnels lead to valves CC, AA, EE +Valve EE has flow rate=3; tunnels lead to valves FF, DD +Valve FF has flow rate=0; tunnels lead to valves EE, GG +Valve GG has flow rate=0; tunnels lead to valves FF, HH +Valve HH has flow rate=22; tunnel leads to valve GG +Valve II has flow rate=0; tunnels lead to valves AA, JJ +Valve JJ has flow rate=21; tunnel leads to valve II \ No newline at end of file diff --git a/inputs/example.17 b/inputs/example.17 new file mode 100644 index 0000000..fb5d89e --- /dev/null +++ b/inputs/example.17 @@ -0,0 +1 @@ +>>><<><>><<<>><>>><<<>>><<<><<<>><>><<>> \ No newline at end of file diff --git a/inputs/example.18a b/inputs/example.18a new file mode 100644 index 0000000..5d3cb99 --- /dev/null +++ b/inputs/example.18a @@ -0,0 +1,2 @@ +1,1,1 +2,1,1 \ No newline at end of file diff --git a/inputs/example.18b b/inputs/example.18b new file mode 100644 index 0000000..d18bf98 --- /dev/null +++ b/inputs/example.18b @@ -0,0 +1,13 @@ +2,2,2 +1,2,2 +3,2,2 +2,1,2 +2,3,2 +2,2,1 +2,2,3 +2,2,4 +2,2,6 +1,2,5 +3,2,5 +2,1,5 +2,3,5 \ No newline at end of file diff --git a/inputs/example.19 b/inputs/example.19 new file mode 100644 index 0000000..5212cde --- /dev/null +++ b/inputs/example.19 @@ -0,0 +1,2 @@ +Blueprint 1: Each ore robot costs 4 ore. Each clay robot costs 2 ore. Each obsidian robot costs 3 ore and 14 clay. Each geode robot costs 2 ore and 7 obsidian. +Blueprint 2: Each ore robot costs 2 ore. Each clay robot costs 3 ore. Each obsidian robot costs 3 ore and 8 clay. Each geode robot costs 3 ore and 12 obsidian. \ No newline at end of file diff --git a/inputs/example.2 b/inputs/example.2 new file mode 100644 index 0000000..db60e36 --- /dev/null +++ b/inputs/example.2 @@ -0,0 +1,3 @@ +A Y +B X +C Z diff --git a/inputs/example.20 b/inputs/example.20 new file mode 100644 index 0000000..5cbf3d9 --- /dev/null +++ b/inputs/example.20 @@ -0,0 +1,7 @@ +1 +2 +-3 +3 +-2 +0 +4 \ No newline at end of file diff --git a/inputs/example.21 b/inputs/example.21 new file mode 100644 index 0000000..7993b87 --- /dev/null +++ b/inputs/example.21 @@ -0,0 +1,15 @@ +root: pppw + sjmn +dbpl: 5 +cczh: sllz + lgvd +zczc: 2 +ptdq: humn - dvpt +dvpt: 3 +lfqf: 4 +humn: 5 +ljgn: 2 +sjmn: drzm * dbpl +sllz: 4 +pppw: cczh / lfqf +lgvd: ljgn * ptdq +drzm: hmdt - zczc +hmdt: 32 \ No newline at end of file diff --git a/inputs/example.22 b/inputs/example.22 new file mode 100644 index 0000000..8bc2e1e --- /dev/null +++ b/inputs/example.22 @@ -0,0 +1,14 @@ + ...# + .#.. + #... + .... +...#.......# +........#... +..#....#.... +..........#. + ...#.... + .....#.. + .#...... + ......#. + +10R5L5R10L4R5L5 diff --git a/inputs/example.23a b/inputs/example.23a new file mode 100644 index 0000000..57a5784 --- /dev/null +++ b/inputs/example.23a @@ -0,0 +1,6 @@ +..... +..##. +..#.. +..... +..##. +..... diff --git a/inputs/example.23b b/inputs/example.23b new file mode 100644 index 0000000..c84aa7c --- /dev/null +++ b/inputs/example.23b @@ -0,0 +1,12 @@ +.............. +.............. +.......#...... +.....###.#.... +...#...#.#.... +....#...##.... +...#.###...... +...##.#.##.... +....#..#...... +.............. +.............. +.............. diff --git a/inputs/example.3 b/inputs/example.3 new file mode 100644 index 0000000..9919ffa --- /dev/null +++ b/inputs/example.3 @@ -0,0 +1,6 @@ +vJrwpWtwJgWrhcsFMMfFFhFp +jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL +PmmdzqPrVvPwwTWBwg +wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn +ttgJtRGJQctTZtZT +CrZsJsPPZsGzwwsLwLmpwMDw \ No newline at end of file diff --git a/inputs/example.4 b/inputs/example.4 new file mode 100644 index 0000000..99a66c5 --- /dev/null +++ b/inputs/example.4 @@ -0,0 +1,6 @@ +2-4,6-8 +2-3,4-5 +5-7,7-9 +2-8,3-7 +6-6,4-6 +2-6,4-8 \ No newline at end of file diff --git a/inputs/example.5 b/inputs/example.5 new file mode 100644 index 0000000..edacdb9 --- /dev/null +++ b/inputs/example.5 @@ -0,0 +1,10 @@ + [D] +[N] [C] +[Z] [M] [P] + 1 2 3 + +move 1 from 2 to 1 +move 3 from 1 to 3 +move 2 from 2 to 1 +move 1 from 1 to 2 + diff --git a/inputs/example.6 b/inputs/example.6 new file mode 100644 index 0000000..3ef83c6 --- /dev/null +++ b/inputs/example.6 @@ -0,0 +1,5 @@ +mjqjpqmgbljsphdztnvjfqwrcgsmlb +bvwbjplbgvbhsrlpgdmjqwftvncz +nppdvjthqldpwncqszvftbrmjlhg +nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg +zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw diff --git a/inputs/example.7 b/inputs/example.7 new file mode 100644 index 0000000..09a921e --- /dev/null +++ b/inputs/example.7 @@ -0,0 +1,23 @@ +$ cd / +$ ls +dir a +14848514 b.txt +8504156 c.dat +dir d +$ cd a +$ ls +dir e +29116 f +2557 g +62596 h.lst +$ cd e +$ ls +584 i +$ cd .. +$ cd .. +$ cd d +$ ls +4060174 j +8033020 d.log +5626152 d.ext +7214296 k diff --git a/inputs/example.8 b/inputs/example.8 new file mode 100644 index 0000000..16d6fbd --- /dev/null +++ b/inputs/example.8 @@ -0,0 +1,5 @@ +30373 +25512 +65332 +33549 +35390 diff --git a/inputs/example.9 b/inputs/example.9 new file mode 100644 index 0000000..cbea2b3 --- /dev/null +++ b/inputs/example.9 @@ -0,0 +1,8 @@ +R 4 +U 4 +L 3 +D 1 +R 4 +D 1 +L 5 +R 2 \ No newline at end of file diff --git a/inputs/example.9b b/inputs/example.9b new file mode 100644 index 0000000..60bd43b --- /dev/null +++ b/inputs/example.9b @@ -0,0 +1,8 @@ +R 5 +U 8 +L 8 +D 3 +R 17 +D 10 +L 25 +U 20 diff --git a/inputs/input.1 b/inputs/input.1 new file mode 100644 index 0000000..af23468 --- /dev/null +++ b/inputs/input.1 @@ -0,0 +1,2249 @@ +9548 +3738 + +18492 +17104 +1738 + +1769 +4544 +1153 +3057 +5759 +3419 +1802 +3228 +2445 +1042 +1319 +3910 +6249 +6158 + +3804 +3948 +8020 +7157 +4629 +5140 +7788 +6865 +1065 +1488 +1707 + +11449 +1385 +22004 + +6963 + +7754 +2975 +9559 +2225 +7337 +4902 +5532 +2507 + +4561 +21661 + +2736 +2289 +9681 +3361 +6971 +5861 +8203 +3265 +6096 + +3426 +5520 +1415 +4840 +1362 +5812 +2503 +1363 +4749 +4925 +2760 +6491 + +3595 +4060 +1981 +6485 +3466 +6666 +3232 +6653 +1952 +4268 +5260 +5927 + +16416 +14922 +11105 +7405 +3006 + +11344 + +15749 +14494 +6426 +5978 +2472 + +3140 +1006 +1151 +4827 +3392 +3147 +6087 +3134 +5714 +6073 +3261 +4703 +2659 +5951 +4200 + +1686 +7947 +3105 +7512 +6483 +2455 +5239 +2346 + +1282 +4623 +4933 +1182 +6286 +1807 +1926 +6336 +1717 +3368 +3084 +1412 +5239 +1067 + +10252 +18865 +14991 +4999 + +27706 +4956 + +13320 +13575 +13384 +13229 +4438 +4259 + +13655 + +10289 +3563 +6923 +3917 +8151 +9532 +4094 +7714 + +6258 +2114 +4528 +4667 +6121 +1709 +2124 +4129 +1863 +3724 +3251 +6261 +3776 +1135 + +19821 +8417 +21933 + +1048 +3846 +4112 +1219 +3937 +1553 +2230 +1677 +5664 +5758 +2610 +5462 +3866 + +7013 +4869 +7638 +11900 +13449 + +12833 + +14448 +7928 +12938 +16087 + +6771 +5407 +2589 +9084 +5007 +10490 +1713 +1355 + +5241 +1723 +1086 +2946 +1607 +2222 +4007 +1101 +3058 +1591 +3990 +6603 + +10523 +15901 +2978 + +5439 +4407 +3061 +4608 +3496 +1294 +4942 +5526 +3426 +2695 +3319 +1945 +2566 +2944 +1615 + +2598 +7627 +8103 +3665 +6486 +7023 +7677 +1932 +5458 +3852 + +2702 +6714 +2044 +5300 +3940 +7702 +2965 +8566 +9404 + +4320 +1627 +4162 +3761 +5667 +1856 +2888 +4511 +4644 +3782 +5312 +5326 +4262 +2922 +2707 + +5830 +3968 +1554 +9087 +5563 +9184 +6580 +1607 + +6506 +1637 +4523 +1868 +6484 +5676 +4230 +1151 +3327 +4165 +2480 + +4143 +4964 +3565 +3950 +3724 +6109 +5519 +8043 +7826 +4770 +2219 + +1431 +2166 +1027 +6008 +5942 +3385 +1805 +1403 +1426 +2906 +4121 +5607 +1284 +3587 +2051 + +10601 +6041 +3720 +4639 +4120 +7877 +1617 +4034 + +5475 +2413 +1591 +6899 +1901 +3510 +2959 +6737 +1243 +1134 +2810 +5354 +4862 + +11156 +1137 +10915 +8504 +6952 + +3929 +3189 +2661 +5501 +4243 +4579 +4253 +4446 +4950 +5725 +5643 +3872 +2612 +1842 + +5445 +5478 +4459 +10672 +13422 +13812 + +13583 +4477 +11892 +11151 +5350 + +13859 +4712 +4183 +10241 +4598 + +9296 +1386 +19239 +15174 + +2871 +4182 +2445 +6031 +5347 +5326 +6993 +4505 +6024 +7302 +1038 +7328 + +2774 +6345 +4034 +4825 +3616 +2632 +3912 +2292 +1091 +2562 +5764 +3082 +4120 +4008 + +3400 +8554 +11192 +2586 +13327 + +13181 +12210 +7649 +1231 +3390 +4218 + +5327 +10659 +4609 +9145 +2094 +2405 +4370 +8510 + +26033 +9217 +13524 + +1218 +32417 + +2646 +1403 +1060 +2039 +3081 +4654 +4949 +2959 +4265 +2761 +1075 +2596 +3562 + +12652 +19310 + +22455 +2352 +20078 + +12661 +17750 +12586 +15380 + +8689 +5419 +24613 + +14325 +19413 + +53677 + +1174 +5528 +1505 +1053 +1153 +1015 +1590 +3336 +4927 +5597 +4547 +4064 +2671 +6390 + +6156 +2827 +5351 +5210 +2059 +4173 +7524 +7341 +3619 +2533 +6210 + +5840 +3851 +1166 +5226 +1582 +3017 +5148 +2504 +6075 +5913 +2460 +1315 +2248 +6097 +1865 + +13258 +4793 +6270 +11395 +8185 +6224 + +8035 +7326 +1532 +3991 +6694 +1127 +5174 +5090 +7117 +6963 +1772 + +7323 +26450 + +3406 +2584 +3628 +2084 +5299 +5456 +1934 +1874 +2622 +5994 +4317 +3564 +4459 +5870 +4496 + +8343 +6438 +4406 +6983 +9607 +6624 +8913 +4168 +3757 + +20975 + +5359 +2337 +1600 +7343 +4795 +5338 +1134 +6154 +2982 +6805 + +8474 +3416 +2004 +3210 +1784 +5291 +6449 +7800 +5990 +1378 + +2257 +4521 +3650 +4594 +1813 +2395 +5159 +3723 +3061 +3873 +4162 +1227 +2703 +3692 +3529 + +1701 +5569 +5944 +4442 +4925 +2109 +2541 +3377 +1115 +2020 +1792 +1874 +4713 +5273 +4938 + +3779 +5435 +5766 +1694 +5409 +2174 +2152 +2403 +1492 +3252 +2050 +3459 +1779 +1855 +1774 + +1340 +9930 +11435 +1481 +2550 +8404 +10081 + +7959 +3983 +3874 +4509 +1441 +2560 +6692 +2697 +7892 +4646 +2962 + +2932 +2753 +5296 +3665 +3905 +1296 +4167 +5738 +1913 +1207 +2766 +1121 +5534 +2640 +4932 + +18577 + +12634 +13185 +7311 +12836 +8788 + +32667 +30219 + +3818 +4451 +10111 +5986 +1375 +9196 +9652 +9767 + +7448 +2220 +4991 +1550 +2738 +4735 +1398 +4081 +1813 +7562 + +3828 +5170 +7459 +5438 +2901 +2153 +2724 +1198 +4667 +3464 +1475 +6459 + +2049 +10540 +6504 +8673 +5435 +9298 +11630 + +8517 +2511 +7873 +1279 +9184 +3265 +4253 +1327 + +6992 +5703 +1388 +8150 +1024 +7987 +7474 +1654 +8133 +1846 + +20754 +11285 +1917 + +2193 +5453 +11825 +5810 +12088 + +2499 +5504 +2917 +3484 +2986 +5209 +5514 +6755 +6892 +5189 +1765 +5498 +4290 + +3147 +3861 +5997 +6247 +4070 +3716 +2110 +2929 +1244 +6557 +6915 + +5061 +3144 +2111 +6386 +2715 +1177 +6361 +3274 +1950 + +8240 +8492 +7068 +4003 +3957 +6697 +8899 +1774 +7161 + +2088 +3776 +4146 +4965 +3430 +1218 +4977 +1896 +2291 +2882 +3072 +4742 +6223 +6040 + +6049 +3399 +6099 +3047 +1150 +2078 +2305 +2326 +2989 +1125 +2243 +4682 +1565 +1538 + +5932 +5843 +2087 +3305 +3842 +6102 +7001 +5689 +6780 +6092 +2390 +3150 + +1089 +5858 +4894 +1877 +6197 +3390 +2801 +5227 +2138 +3007 +1622 +2885 +1639 +5231 + +9805 +5853 +7196 +7046 +5304 +10979 +11821 + +61545 + +21206 +21774 +20899 + +25008 +32919 + +4889 +7369 +6276 +4349 +6653 +1277 +4108 +4106 +1451 +4211 +2166 + +6619 +14444 +17317 + +11809 +10977 +2806 +9848 +9969 + +4670 + +5708 +9772 +2606 +7574 +2595 +4536 +1757 +4883 + +11219 +6998 +18415 + +2353 +8806 +5186 +7602 +3664 +2929 +3214 + +5883 +6825 +6565 +6360 +1940 +6468 +3618 +5016 +1079 +5596 +1185 +7228 + +1922 +1467 +7762 +2139 +1065 +10647 +9175 +6257 + +6520 +2696 +16317 +9248 +15159 + +8150 +14169 +4916 +19358 + +1698 +3356 +1753 +6401 +4741 +6138 +5329 +5039 +3444 +7112 +6558 +3202 + +5505 +7483 +7725 +10740 +4117 +7626 +10759 +6723 + +11883 +9624 +9861 +5001 +7170 + +1249 +3857 +4300 +3195 +2643 +6215 +3591 +2436 +3685 +4735 +2688 +5124 +5014 +3653 + +2124 +6177 +2778 +3430 +3504 +5851 +5155 +3900 +3225 +4103 +2041 +5149 +5297 + +6900 +5090 +4846 +6356 +6570 +2308 +1911 +6079 +6101 +6295 +2093 +4381 +2038 + +10065 +2061 +3461 +10711 +11496 +7040 +3196 + +15635 +3567 +7947 +3756 +6162 + +15074 +1204 +10611 +11400 + +8527 +15827 +21423 + +9730 +1944 +6937 +6988 +11978 + +8607 +5594 +14191 + +11840 +6859 +12244 +8243 + +4461 +4190 +4387 +1379 +6737 +1464 +2840 +7383 +3552 +6282 +3738 +4097 + +4392 +15075 +8360 +12836 + +3358 +10192 +7144 +2513 +13522 +1032 + +1478 +2971 +2609 +5963 +3951 +2422 +5256 +3549 +4932 +3336 +3554 +1734 +4582 +5727 +4153 + +8810 +6224 +4381 +9226 +8839 +8987 +4239 +6005 +9201 + +4549 +4658 +4286 +8060 +3415 +2117 +1904 +4765 +6451 + +1784 +2857 +4079 +2430 +5541 +2014 +1299 +3613 +4750 +2461 +2137 +5937 +1704 + +35572 +22885 + +4786 +3868 +7668 +5399 +7949 +4494 +3024 +3591 +6231 +2428 +5783 + +7430 +2454 +3847 +5383 +2995 +1909 +5762 +3370 +3842 +6699 + +15895 +9629 +14767 +9654 + +1693 +4695 +5370 +3662 +10181 +8701 +5428 + +3759 +9620 +6218 +11479 +11448 +8904 + +4584 +9137 +1628 +6346 +5356 +13812 + +6354 +5569 +5380 +5170 +4361 +5130 +2661 +2255 +3019 +5835 +6086 +5256 +3769 +1581 + +6381 +17515 +2141 +19225 + +4916 +6755 +1882 +1529 +2252 +1720 +4118 +7098 +5200 +5413 +6686 + +7740 +3399 +2919 +8237 +1262 +8188 +5222 + +4771 +3977 +5154 +4958 +6416 +4658 +2615 +3554 +5426 +1510 +2802 + +5233 +2860 +1217 +1458 +2346 + +9656 +29869 + +5470 +4242 +6548 +2177 +4567 +5287 +2066 +6183 +6905 +6121 +5182 +7173 + +8427 +1224 +4935 +8820 +5364 +1767 +9705 + +10862 +5240 +11669 +9359 +12127 +8279 + +2336 +4797 +4524 +4079 +4592 +5153 +2763 +5269 +2804 +3598 +4028 +1087 +4444 +5035 +1431 + +2243 +3977 +6437 +6484 +1571 +5209 +3048 +4038 +5722 +2839 +2746 +2521 +5060 +1695 + +9962 +3290 +10922 +13459 +2136 +5948 + +6450 +3564 +7279 +3290 +8721 +6068 +1609 +8098 +6034 + +1420 +4719 +2266 +2147 +4994 +3772 +3696 +6307 +4202 +4093 +2535 +2630 +5272 + +12735 +23482 + +1825 +13973 +2849 +2189 + +5221 +9134 +13251 +2824 +3181 +4169 + +18770 +26818 + +5037 +4780 +3731 +10472 +8607 +8579 +2435 +10240 + +4066 +8459 +8153 +2263 +5595 +3561 +1046 +4457 +1415 +4095 + +4350 +3632 +4304 +1185 +1152 +6325 +1180 +6436 +3719 +6373 +1690 +6355 +4856 +4339 + +7230 +3803 +3755 +9897 +9241 +8464 +3563 +5582 + +7790 +13418 +11327 +13363 +10678 + +4106 +13162 +12143 +1285 +9777 + +13953 +5912 +5842 +7290 + +25186 + +4623 +10312 +4499 +2107 +1801 +3128 +6624 +9029 + +12788 +12371 +3428 +3806 +1057 + +5107 +5388 +3979 +5932 +4147 +5620 +1822 +6937 +1132 +7422 +2494 +6864 + +1281 +14119 +6005 +15932 +15051 + +4232 +12714 +1840 +8345 +13951 +2547 + +7595 +6091 +7361 +3664 +8317 +7564 +6969 +1817 +7139 +3929 + +5526 +1671 +5138 +5641 +1348 +1039 +6003 +2124 +4116 +3497 +5741 +1974 +4760 +3835 +2968 + +1353 +6266 +7727 +6512 +3832 +3324 +3618 +3902 +1074 +2775 +3362 + +17195 +15689 +3181 +5906 + +1857 +7745 +2523 +6957 +9099 +2671 + +6776 +8031 +8905 +4246 +9032 +9431 + +3237 +1398 +2174 +2908 +6318 +7053 +6350 +9088 +9019 + +31418 + +1367 +4076 +3535 +1715 +1648 +7001 +1767 +7236 +1338 +1472 +6231 + +16451 +20633 + +7982 +4151 +22262 + +6170 +11027 +19529 +6948 + +3342 +6383 +5650 +4182 +5288 +1011 +5371 +6406 +1184 +1402 +4117 +5890 +4861 +2192 + +2677 +3272 +3578 +4734 +6104 +3200 +5221 +2542 +4792 +4647 +5103 +2457 +4952 +5075 +1157 + +5763 +9859 +5914 +10442 +2754 +5836 + +13247 +13095 +13292 +7949 +1885 +3540 + +3260 +1090 +5979 +1235 +3885 +6000 +2566 +6598 +3035 +5700 +1532 +5368 +5455 + +2893 +7490 +10723 +12756 +11830 + +16887 +3015 +15530 +4999 + +3606 +4631 +6761 +7369 +8985 +9388 + +12164 +2835 +8997 +7125 +4694 +4027 + +2121 +5623 +1086 +4031 +1320 +3080 +2608 +2682 +3689 +2689 +4804 +2926 +4283 + +7406 +6379 +2136 +7475 +1990 +7667 +8641 +8774 + +7330 +1168 +5403 +2236 +1956 +7424 +6146 +4365 +7030 +4549 +6956 +3660 + +64103 + +4739 +1313 +11043 +1850 +4926 +1765 + +3751 + +8967 +2183 +4613 +12514 +14387 + +2724 +3996 +2702 +1839 +7927 +1891 +7928 +4134 +5534 +2382 +6496 + +4068 +5877 +4364 +4376 +1497 +1206 +1415 +2254 +1396 +2077 +2786 +5512 +2506 + +3142 +1754 +5661 +2889 +3229 +6005 +2407 +4628 +3582 +1725 +5785 +4232 +5352 +1226 +5609 + +2732 +9414 +9668 +4301 +3055 +8137 +8914 +3834 +9377 + +14671 +10645 + +4316 +4385 +4748 +7881 +7936 +7617 +5781 +7013 +1473 +1984 +5518 + +4509 +5369 +6743 +7085 +5395 +9806 +5737 +1121 + +7157 +5239 +7271 +1099 +8175 +10048 +2841 +8423 + +27025 +36559 + +3301 +5481 +6352 +3563 +2449 +3479 +1487 +3984 +1071 +1656 +6638 +3993 +1412 + +3650 +4243 +4227 +5519 +3336 +2900 +3938 +6037 +3246 +5699 +3435 +5860 +1066 +4802 + +1525 +1785 +6997 +4778 +2069 +3372 +6096 +6800 +5779 +4014 +3451 +4746 + +3798 +2519 +6205 +3353 +7820 +6653 +7922 +4432 +1631 +6154 +1783 + +1187 +5776 +2100 +7066 +4766 +3423 +1785 +5380 +6610 +2248 +4508 +4592 + +2059 +2845 +12841 +3950 +9358 + +9019 +2663 +7208 +7431 +4563 +3377 +7396 +2848 +2647 + +16178 +6674 +13183 +11092 +15031 + +4224 +5839 +6419 +6824 +4518 +4393 +3771 +3399 +1090 +6763 +7110 +4392 + +1008 +5634 +4685 +5583 +5873 +1943 +3576 +4153 +3125 +4002 +4439 +1158 +4053 +3963 +4198 + +3088 +1490 +7239 +5837 +1930 +1432 +1495 +5116 +7873 +3216 +7489 + +8637 +14951 +19005 +14421 + +4945 +7873 +8669 +7228 +4293 +6095 +6660 +6220 +1335 + +4752 +7902 +3357 +1906 +3132 +7868 +7299 +4289 +7528 +7604 +7371 + +4693 +2914 +13707 +9950 +4991 +10810 + +30732 + +8395 +4046 +8031 +2813 +1483 +8489 +4838 +6505 +4754 +5386 + +10511 +1906 +8756 +1751 +4072 + +18628 +14513 +13063 +19406 + +1111 +4186 +4235 +1599 +1731 +1852 +3244 +2635 +5610 +3102 +5894 +5849 +5718 +5079 +4573 + +51008 + +25315 +17714 + +1505 +8676 +2966 +4331 +5162 +8018 +4868 +4344 +4985 + +11237 +8498 +6919 +9222 +2059 +9324 +2329 + +5018 +8853 +7558 +4520 +4177 +3610 +2257 +1513 +5298 + +6291 +1410 +2607 +3667 +7469 +1608 +7333 +2908 +6850 +2743 + +6866 +5110 +8069 +7634 +6310 +4908 +5842 +5581 +4076 +1196 +6579 + +1319 +3115 +2309 +3872 +5552 +1470 +3074 +3253 +3738 +6084 +3459 +4221 +5268 +6016 + +7919 +1882 +11433 +18773 + +1596 +3958 +3249 +2869 +1171 +1443 +2556 +3904 +5368 +6078 +5025 +4812 +4167 +2152 +4889 + +7159 +1099 +6275 +3461 +3997 +4417 +8011 +1608 +7009 +1372 +6178 + +2353 +12931 +7678 +6294 +16167 + +10678 +8372 +5916 +11238 +11574 +13452 + +2331 +2546 +5424 +4557 +1353 +3844 +1793 +3914 +3917 +4436 +4985 +3390 +3180 +5529 +1561 + +6276 +1284 +1223 +1143 +4482 +3777 +6018 +6018 +5190 +5435 +1859 +6101 +4215 +1716 + +5422 +9086 +8574 +6479 +6945 +10267 +6679 +5997 + +2101 +7080 +3423 +6433 +3374 +10072 +5362 +5286 + +3365 +11743 +9335 +7382 +10030 +10493 +11691 + +3066 +2089 +2824 +5420 +2195 +2658 +3775 +2255 +5151 +3013 +5958 +5233 +6137 +2363 + +10826 +1871 +15674 +13753 + +7349 +11368 +10322 +17805 + +2054 +1940 +6198 +4186 +2003 +6492 +5277 +6729 +7513 +4743 +7883 + +45579 + +1218 +9783 +6495 +7176 +9980 +11228 + +27882 + +3541 +7048 +6061 +6275 +3314 +1351 +1270 +7357 +5754 +3537 +2385 +3552 diff --git a/inputs/input.10 b/inputs/input.10 new file mode 100644 index 0000000..e34c882 --- /dev/null +++ b/inputs/input.10 @@ -0,0 +1,139 @@ +addx 1 +noop +noop +noop +addx 5 +addx 5 +noop +noop +addx 9 +addx -5 +addx 1 +addx 4 +noop +noop +noop +addx 6 +addx -1 +noop +addx 5 +addx -2 +addx 7 +noop +addx 3 +addx -2 +addx -38 +noop +noop +addx 32 +addx -22 +noop +addx 2 +addx 3 +noop +addx 2 +addx -2 +addx 7 +addx -2 +noop +addx 3 +addx 2 +addx 5 +addx 2 +addx -5 +addx 10 +noop +addx 3 +noop +addx -38 +addx 1 +addx 27 +noop +addx -20 +noop +addx 2 +addx 27 +noop +addx -22 +noop +noop +noop +noop +addx 3 +addx 5 +addx 2 +addx -11 +addx 16 +addx -2 +addx -17 +addx 24 +noop +noop +addx 1 +addx -38 +addx 15 +addx 10 +addx -15 +noop +addx 2 +addx 26 +noop +addx -21 +addx 19 +addx -33 +addx 19 +noop +addx -6 +addx 9 +addx 3 +addx 4 +addx -21 +addx 4 +addx 20 +noop +addx 3 +addx -38 +addx 28 +addx -21 +addx 9 +addx -8 +addx 2 +addx 5 +addx 2 +addx -9 +addx 14 +addx -2 +addx -5 +addx 12 +addx 3 +addx -2 +addx 2 +addx 7 +noop +noop +addx -27 +addx 28 +addx -36 +noop +addx 1 +addx 5 +addx -1 +noop +addx 6 +addx -1 +addx 5 +addx 5 +noop +noop +addx -2 +addx 20 +addx -10 +addx -3 +addx 1 +addx 3 +addx 2 +addx 4 +addx 3 +noop +addx -30 +noop diff --git a/inputs/input.11 b/inputs/input.11 new file mode 100644 index 0000000..5c9dd85 --- /dev/null +++ b/inputs/input.11 @@ -0,0 +1,55 @@ +Monkey 0: + Starting items: 66, 59, 64, 51 + Operation: new = old * 3 + Test: divisible by 2 + If true: throw to monkey 1 + If false: throw to monkey 4 + +Monkey 1: + Starting items: 67, 61 + Operation: new = old * 19 + Test: divisible by 7 + If true: throw to monkey 3 + If false: throw to monkey 5 + +Monkey 2: + Starting items: 86, 93, 80, 70, 71, 81, 56 + Operation: new = old + 2 + Test: divisible by 11 + If true: throw to monkey 4 + If false: throw to monkey 0 + +Monkey 3: + Starting items: 94 + Operation: new = old * old + Test: divisible by 19 + If true: throw to monkey 7 + If false: throw to monkey 6 + +Monkey 4: + Starting items: 71, 92, 64 + Operation: new = old + 8 + Test: divisible by 3 + If true: throw to monkey 5 + If false: throw to monkey 1 + +Monkey 5: + Starting items: 58, 81, 92, 75, 56 + Operation: new = old + 6 + Test: divisible by 5 + If true: throw to monkey 3 + If false: throw to monkey 6 + +Monkey 6: + Starting items: 82, 98, 77, 94, 86, 81 + Operation: new = old + 7 + Test: divisible by 17 + If true: throw to monkey 7 + If false: throw to monkey 2 + +Monkey 7: + Starting items: 54, 95, 70, 93, 88, 93, 63, 50 + Operation: new = old + 4 + Test: divisible by 13 + If true: throw to monkey 2 + If false: throw to monkey 0 diff --git a/inputs/input.12 b/inputs/input.12 new file mode 100644 index 0000000..615b920 --- /dev/null +++ b/inputs/input.12 @@ -0,0 +1,41 @@ +abccccccccaaaaaaaccaaaaaaaaaaaaaaaaccccccccccccccccccccccccccccccccccccaaaaaa +abccccccccaaaaaaaccaaaaaaaaaaaaaaaaccccccccccccccccccccccccccccccccccccaaaaaa +abccccccccccaaaaaaccaaaaaaaaaaaaaaaaccccccccccccccccacccccccccccccccccccaaaaa +abcccccaaaacaaaaaaccaaaaaaaaaaaaaaaaacccccccccccccccaaaccccaccccccccccccccaaa +abccccaaaaacaaccccccaaaaaacaaacaacaaaaaaacccccccccccaaaacccaacccccccccccccaaa +abaaccaaaaaaccccaaacaaaacacaaacaaccaaaaaacccccccccccaklaccccccccccccccccccaac +abaaccaaaaaaccaaaaaacccccccaaacccaaaaaaaccccccccccckkkllllccccccccccccccccccc +abaaccaaaaaaccaaaaaacccccccaaaaacaaaaaaacccccccccckkkklllllcccccccaaaccaccccc +abacccccaacccccaaaaacccccccaaaaaccaaaaaaacccccccckkkkpppllllccccccaaaaaaccccc +abacccccccccccaaaaacccccccccaaaacccaaaaaaccccccckkkkpppppplllccccddddaaaccccc +abccccccccccccaaaaaccccccccccaaaccaaaccccccccccckkkppppppppllllldddddddaccccc +abccacccccccccccccccccccccccccccccaaccccccccccckkkopppupppplllmmmmdddddaacccc +abccaaacaaaccccccccccccccccccccaaaaaaaaccccccckkkkopuuuuupppllmmmmmmddddacccc +abccaaaaaaaccccccccccccccccccccaaaaaaaacccccjjkkkooouuuuuuppqqqqqmmmmddddcccc +abccaaaaaacccccccccccccccaaccccccaaaacccccjjjjjjoooouuxuuuppqqqqqqmmmmdddcccc +abcaaaaaaaacccccccccccccaaacccccaaaaaccccjjjjoooooouuuxxuuvvvvvqqqqmmmdddcccc +abaaaaaaaaaacccccccaaaaaaacaacccaacaaacccjjjooooouuuuxxxxvvvvvvvqqqmmmdddcccc +abaaaaaaaaaacccaaacaaaaaaaaaacccacccaaccjjjooootttuuuxxxyyvyyvvvqqqmmmeeecccc +abcccaaacaaacccaaaaaaacaaaaaccccccccccccjjjooottttxxxxxxyyyyyyvvqqqmmmeeccccc +abcccaaacccccccaaaaaacaaaaaccccaaccaacccjjjnnntttxxxxxxxyyyyyvvvqqqnneeeccccc +SbccccaacccccccaaaaaaaaacaaacccaaaaaacccjjjnnntttxxxEzzzzyyyyvvqqqnnneeeccccc +abcccccccccccccaaaaaaaaacaaccccaaaaaccccjjjnnnttttxxxxyyyyyvvvrrrnnneeecccccc +abcccaacccccccaaaaaaaaaccccccccaaaaaacccciiinnnttttxxxyyyyywvvrrrnnneeecccccc +abcccaaaaaaccaaaaaaaacccccccccaaaaaaaaccciiiinnnttttxyyywyyywvrrrnnneeecccccc +abcccaaaaaaccaaaaaaaacccccccccaaaaaaaacccciiinnnntttxwywwyyywwwrrnnneeecccccc +abcaaaaaaaccaaaaaaaaaccccccccccccaacccccccciiinnnttwwwwwwwwwwwwrrnnneeecccccc +abcaaaaaaaccaaaaaacccccccccccccccaaccccccaaiiiinnttwwwwwwwwwwwrrrnnnffecccccc +abcccaaaaaaccaaaaaccccccccccccccccccccaaaaaciiinnssswwwssssrwwrrrnnnfffcccccc +abaacaaccaaccaaaccccccccaacccccccccccccaaaaaiiinnssssssssssrrrrrronnfffcccccc +abaccaaccaacccccccccaaacaacccccccccccccaaaaaiiimmmssssssmoosrrrrooonffaaacccc +abaaaccccaaaaaaccccccaaaaaccccccccccccaaaaaccihmmmmsssmmmoooooooooofffaaacccc +abaaaccccaaaaaacccccccaaaaaacccccccccccccaacchhhmmmmmmmmmoooooooooffffaaccccc +abaacccaaaaaaaccccccaaaaaaaaccccaaccccccccccchhhhmmmmmmmgggggooofffffaaaccccc +abaacccaaaaaaaccccccaaaaaaaccccaaaaccccccccccchhhhmmmmhggggggggfffffaaaaccccc +abccccccaaaaaaacccccaacaaaaacccaaaaccccccccccchhhhhhhhggggggggggfffaacaaccccc +abccaacccaaaaaaccccccccaaaaaccaaaaacccccccccccchhhhhhhggaaaaaaccccccccccccccc +abccaaaccaaccccccccccccccaaaaaaaaaccccccccccccccchhhhaaaccaaaacccccccccccccaa +abaaaaaaaccccccccccccccccaaaaaaaaccccccccccccccccccccaaaccccaaccccccccccccaaa +abaaaaaaaccccccccaaaccccacaaaaaacccccccccccccccccccccaaaccccccccccccccccccaaa +abaaaaaacccccccaaaaacaaaaaaaaaaacccccccccccccccccccccaaccccccccccccccccaaaaaa +abaaaaaacccccccaaaaaaaaaaaaaaaaaaacccccccccccccccccccccccccccccccccccccaaaaaa diff --git a/inputs/input.13 b/inputs/input.13 new file mode 100644 index 0000000..e37467b --- /dev/null +++ b/inputs/input.13 @@ -0,0 +1,449 @@ +[[9,[8,[7]],4,7,[[4,9,3,2],6,5,[1,10,2,4,5],[1,3,2,6,1]]],[4,[6],3],[4,[7,0,3,8,8],[7,[10],[10,10,10,7]]]] +[[],[[6,4,[5],4,[0,5,5]],3,[5,[],9]],[[[5,1,6,2],[6,4,7],[4,7,4,2]],[10,[],[6,9,4],[6,2],9]],[[[10,5,9],10,0,[4,1,4,10,1],1],[7,7,[10,8],6],2]] + +[[[8,2],2,[[10],[],6,10,[10,10,3,10,3]]],[],[]] +[[[[7,3,5],10,[4,1,0,8,7],9],10,[]]] + +[[6,2,[2,[10,10,0],[2]],7]] +[[7,9],[5,[8,[0,5,5,10,4],6,8,6],3,[4],2],[4]] + +[[[5],[6,[5,3,0],[6,2,5,2,6],1,6],[[]],[3,[1,1,0],[],1,[9,4,3,5,7]]],[[1,9,[2,2,6],[8,9],2],1,[[],0,8],[[],9],3]] +[[],[[10,9],[],[[6],9,8,[3]],[0,5,[5],6],2],[[[5,2,5,3,5],4],9,6],[8]] + +[[[[9,10,8,4],2],[[10]]],[1,[[],9,[7,2,2,1,0],5]],[[[10],[],[5]],10,[],9],[[],[2,[1],[4],7,[6,1,5,0,1]]]] +[[[[6,9],[8,2,2],[5,1,6],[0,1]],[[2,5,1,3],9,[]],[[10,3,9],10,4]],[[[5,2,0],[7,3],9],[[5,3,2,6]],4]] + +[[[1,0,9,[10]],[],[8,2,[0,2],6,[]]]] +[[4,3],[2]] + +[[7]] +[[7,[[4,0,9,9]],3,[10,0,6,[5,2,0,1,7]],7],[5,[3,[2,8,7],[9],[2,3,5,0,10]],10,[[3,0,8],6,[5,5,7],[2,10]]],[3,4]] + +[[[[0,9,5,2],[6,0,4,10]],[10,7]],[[6]],[7],[[[1,10,8,0,6],7,[3],0],3],[[[1,5,5],[6,6,9],[],[4]],1,9]] +[[[[2,3],[7],10,[2,1,3]],10,[6,9,[0,8]],[[6,6,5],[10,6]],[[],[],7]]] + +[[[6],7,[10,[2],3],[[2,3]],[[1,1,7],[0,6,6,2],[7],[]]],[4],[2],[[6,2,10,3,6],[[5,7,10,3,6],8,[1],[]],7,5,[]],[[]]] +[[[],[7,5,8],0,3,[]],[2,8],[7],[8,0,[[0],3,[2]]],[1]] + +[[[],5,[0]],[7],[[2,7,[7]],[[8,3],[8,9,8],6,[]],[1,3,[0,4,10],[6,1,9]],8],[[3,0]]] +[[5,[],10]] + +[[8,[[0],5,[],3],[0,8]]] +[[],[3,5],[[[8,9,5],1,[3,9]],[[0,0],9,2],[0,1,8]],[0,3,[[3]],[7,[3,5,10],[1,9,10],[9,5],[2,4,3,9,7]]],[[8,3,6],6,[7,5,8],[[],4,1]]] + +[[6],[]] +[[],[[[3,5,9],[0,7,5],[3,8,1,9,6]],[1,[3,3,10],0],[5,8,3,0,3],3,8],[[[1],[9,9,3,3],[7],[7,10,1,6]],4,10,[[7,7,2,0,3]],[10,9]],[9]] + +[[3,2,4]] +[[[[2],4,[9,4,6,0]],[7,[]],[[0,5,9],[7],7,3],[[8,0,0,4,5]],[9,[3,5,4,10],[7,7,4]]],[[9,[],[8,5,6,4,9]],1,10,4,7]] + +[[],[[],[8]],[1,[[8,10,0,2],1,4,[1,10,9]],3],[[[0,4,5,6,6]],5,[[9,0,5],[3,10],8],3],[[9],4,[[3,6],6],[8,[5],10,[7,0]],7]] +[[1]] + +[[[[5,3,8,2],1,[10]],9],[[[9,3,0,7],8,[10,1,6,9],[7,6,3],[6,7,5]],[6,1,[1,6,10,8],7,[]]]] +[[8],[[7,[5,6],0],[4,[],[5,2,10,8]],[10]],[[],6,[],[10,5,3],[3,4]],[[[7,4,7,8,0]],9]] + +[[7,[7,7],4,1,4],[10,[10,[2,4,9],0,[5,10,7],1],10,[9,2,[0,6,3,9,10],8,[7,9,7,10,3]],[3,[0,2]]],[9,3]] +[[3,[0,[5,0,8,1]],[]],[],[[3,[2,4,4,0,0],2],[4,[9,1,0]],1],[],[]] + +[[[[5,10,10,8]],[[5,7,10,10],[],[2,4,10,9],1,[]],9,8,[10,[5],[7,6,8,2],10,[2,9]]],[8,3,[[],3,[4,3,0],1,2],[6,[2,8],[2],0,0],5],[2,[[6,0,0,4,9],[7,10],1,[]],[[8],10],[[1,10]]],[6,10,[[3,6,7,9],5],4]] +[[[]],[[[10,5,9],2],4,[0,[8],[0,8,9,2,6]],[8,0,[4,4,10],7]],[[6,[]],10,[[],[5,10]],[6,9],[3,10,[2,5,1,7,7],[2,6,10]]],[[],[[],5],[[5],[7],[8,2,2,8]],[2,[4,0],8]],[[[10],8,[10]],[],[]]] + +[[[[6,6,1],[3,10,5]],[[3,9,6,0],2,[10,1,8,8]],[],[[6,9],5,5,[],4]],[[7],3],[[[],[8,4,2,0,8]],10,2,7],[8],[10,7,[[2,6,0,0,8],[3,10,10],[],9,[7,9,3]],6]] +[[6,8,[[9,0,8,7,5],0,3],[],0],[8,[6,9],8,[[0],7,[10,6],6,[7]],8]] + +[[[[9],[6,6],0,8,[7,2]],[7,[],[9,6,2],9,[]],[[],7,7,[6,6]]],[1,3,1],[1,[[8,0,10,1,9]],9],[10,5]] +[[[[4,6,8,9],8,[3,3,6],[10]],[[3,6,7,5],[],[4,9]],[6,0,8],[],[5,[2]]],[[[5,1,6,2,8],2],3,[9,9,[],0,1],5,[10,[9,5,2],5]],[]] + +[[[]],[]] +[[8,[5,[6,3,2],[10,5,4],[5,1],[5,10,5,9,7]],4,[8,2,0,6],4],[[[0,9,5,7],9],6,[[0,8,10,8],9,[9,0,3,7,1],[6,8,2,5,10],[]],7,[1,[],4,[0],[2]]],[1],[[7,[],6,2,1]],[2,3]] + +[[5],[3,[1],[[6]],[[2],[],3,[6,1,8,6,1],[4,6,4,7]],[3]]] +[[[[6,5,1],9],[],7,7],[0,4]] + +[[[],5,4,7,[[9,5,9],[]]]] +[[10,[1,[2,3],9,[3]]],[[[5,7,9,10,8],[]],0]] + +[[6,8,[0,1,10]],[[4,7],[[7,0,0,3],6,2]],[[[10],[6,5,3,10,0],[0,2,4],[8,10],[7]],1],[2,[2]]] +[[],[5,8,[[],[6,3,2,3],9,3,[]],[0,[4,1,5],4],[[0,6,4],[],[3,6,10,9],3,[0,0]]],[[6,3],6,2,10,8],[5,[[0,9,4,6,1],[6,9,4]],3,[],0]] + +[[4,8],[],[],[7,6,4]] +[[],[[5],[[8],[10],7,[9,10]],9],[3],[[9],[[3,0,5]]],[10,[[6,0,3],[2,4,3,0],4,10,10]]] + +[[4,10,[[8],[6,4,8,8,10],1,[10,2],[7,8,9,0]],1],[6,4,3],[7,8,4],[[9,[10,4,8,7,2]]],[3,5]] +[[],[[[0,0,5,10],9,10],[[6,7,5]],[[3,6,7,2,2],[9],[7,5],9],[[0,0,10,9,8],5,[3,2]],[]]] + +[[[],[[],8,0]],[[[],[],[]],9],[[7],3,10,4,[3,[4,7,0,2]]],[[[0,9,2,1],[2]]],[[[1,7],6,8,[2,5]],8,7]] +[[],[1],[6,[],1,[4,[],[10]],[[10,9,1],[]]],[[[2,1,5,10],[9,9,5,7,9],[9,1]],[[2],[5,9]],[[8],[2,8,2,4,5],4,[3,9,3],9],9]] + +[[7,[4,9,[],[7,6,8,7],3],6,7],[7,9,[[2,3],7,5,[7]],[[6],4,[2,8,5,10],[4,9,10,6]]],[[],10],[5,[5],8,[],[3,[6,1,7,10,1],7,5,[10,8]]],[[[7,7,8],8,8]]] +[[7,[10,1,[5,3,9],1,[]]]] + +[[[[8,2,10,7,3],8,[0,7,0]]]] +[[4,7],[[2,[],7],4,[10,[4],[5,6],1,1]],[5,[[9,1]]],[[6,2],[2,3,[1,4,1]]],[]] + +[[6,[[],10],[5,3]],[],[6,4,9],[7,[6]],[0,[],[[8,7,8,10,7],[],[10,6,4],[4],0],8,[8,7,1,[10,6,5],[10,1,5]]]] +[[3,8],[[3,[1],10]],[[6,2,[],[9,6],5],[[1,8,9,2,9]],[3,[],[7,6,4,7,6]]],[[[3,9,5,0,2]]],[[],7,7]] + +[[10,7],[9,7,2,5,1]] +[[],[],[[]],[[7,2,[],[2,10,7],8],4,0,[2,[],[8,8,9],5,[6,1]],[1,4,[6,5,4,1,4],[7,7,9],2]],[[],5]] + +[[[[6,7,10,0,4],[5,3,2,8,4]],[[1],[],[5,4],8,2],0],[1,5,10],[[2]]] +[[],[10,1,[[1,3,0],[0,1,7,7],[1,5,10,7,3],[4,6]],4,[]],[9,9,[8,[4,1,7],[4,1,8,9],[7,6,5,10,5]],[0,6,[6]],6]] + +[[[[2,3,3],2,[]]],[[[4,6,7,5],[7,3,3,10],[4,6,10,2,3],[4],7]],[[[1,3,4,0,4],10],[10,[],4,3]],[],[3,[],9,2,8]] +[[],[[[9,1,8,4],7]]] + +[[],[3,10,[[1,6,1],[1,2,1],[9],[3,7,9,10]],[[]]],[[[9,3,7,6],[6,8,2,3],10],[8,8,1,5],[6,2,4,[2,8],1]],[[[6,8,9,8],5,5],[[],[0,4,5],[4,5,8,7]]],[]] +[[[]],[[1,[2,4,0,4,4]],[2,[],4],[7,[9,5,5],[0,2,0,5]],10,8]] + +[[],[],[],[3,[8,5,[7,2,9,9]],[[2],[4,10]]],[]] +[[9,[9,10,8,[4,6,3,0]],7],[[4,[8,4,2,8],5,[0,10,9,4,9],2],[2,10],[4,[10,1]]],[10]] + +[[4,[[10,5],8]],[4,8,7],[[[7],[],5],10],[[],5]] +[[[[0,7],[9,8],[]],9,[[6,2],4],1,[]],[1],[[7,4,2,[8,2,3]],8,3,[[1,9,10,7],[2,2,3,2]]],[[[3,1,8],8,[6,1,1,6,5],[1],6],[6,[],10],[[],3],7,10]] + +[[[7,[5,6,3,2,5],[0,6,0,3],[0,4,10,6,8]],4],[],[[],[[10,9],[10,4,9]],[[1,8,6],6,[]]],[5,9],[[],[[],[3,3]]]] +[[],[6],[[3,[1],4,[10,0,1,6,3],7],[],9],[0,[[],6,4,2]],[]] + +[[7,[]]] +[[5,3,[6],[],[10,[0,7,3,9]]],[[[9,1,5],5,0,1,8]],[[[2,3,10,1],10],10],[[[],5,4,1,8],[0,[5,1,4,9,3],2,10],[],[9]],[2,10,8,6,4]] + +[[[],1,8,[4]]] +[[[5,5,[]],[[],[3,2,5,10],[4],[5,5,8,2,6]],6],[[10],[[5,0],[2]],9],[[4],[]]] + +[[[2,6,[9,10]],9,7],[8],[7,6],[8],[8,0,3,0]] +[[[],[[],4,[1],6,[5,9,0,0]],9,9,4]] + +[[[],9],[[10,8],6,[[8,0,0,7],[6],3,[5,5,1],10],[[9,3,6],[8,3,0]],[]],[[0,7,1],3,3],[5],[4]] +[[[8,[4,6,0,4],2,[8]],[[6,10,6],[2],4],5,9,[3,[3],[10],7]],[6]] + +[[[6,6,[0,5,3,10],10],[3,0,7,[8],[3,9,10,1,7]],8,[6,9,[]],[1]],[],[5],[5,[4,[6,9],2,[8],[]],0]] +[[],[],[[6,[],6],[9,8],7,[],[3,[5,9],4]],[[7,[3,7],[4,8,10,9],10],[[],9],8,[5],5]] + +[[[[],6,0,[2,6,7,7]],9],[[7,1,[5,4,5,2,10],[]],7,[4,2,1,0],10],[6,7,[]]] +[[1,[[],5,10,[8]],[8,1,[],[1]],[[2,0,1,10,6],[10,7,3,5]]],[[[10,5,5,10],[]]],[0,[[5,7],[],9,6],[5,0,3],[]],[[6,5,0,[0,1,9,3],[9]]],[0,[4,1,3],7]] + +[[[],[1],[],10],[6,9],[10,10],[]] +[[9,7,[[0,2],5,[8,1,5]]]] + +[[],[0,[[7,8,4,1],9,0,2]],[[2,7,[],[1,6],[4,6]],[7,[]],0,[[1,0,5]],1],[5,[6,[9,4,2,6,4],10,[7,7,8,8,1]],[7,9,[7]]],[]] +[[],[9,3,[[2,8,6,3,9],1,6,[6,8]]]] + +[[[6,6,[7,7,3]],[]],[3,2,0,[3,[8,4]],5],[9,10,7,10],[[9,[0],10,10,[1,9,0]],[[],1,3]]] +[[2,4,5],[],[0,[],[[0,2,8,0,7]],[[],[7],[0,2,9]]],[]] + +[[[[]]]] +[[[[],[10],[0,9,7,9],5,[]]],[]] + +[[[],[[],10,1,[7,3,0],[4,10]],[]],[[],[10,[7,4,7],[],9,[0,4,3,8]]]] +[[],[[[],10,1,2,0],10,[[]]],[[4],[[8,7,10],8,7],0],[[0,[4],[],[0,1,10,3],9]]] + +[[[7,[],[1],[6,4,0]]],[[[7,1,10]],[[1],[1,9,4,6]]],[9]] +[[1],[4,5,3,8,[9,4,[0],[4,7,0]]],[9,[4]]] + +[[],[[[10],6],[],[[2,1,9,10]],4,[4,1,10,3,0]],[[],[],0,[[]],[5,[10,5,9,1,1],[9,4,8]]],[],[3]] +[[9,[[6]],[],[[],5]],[[[3],10,9],1,[5,[10,1,10,1],[8,2,2,10,7],9,10],0],[8,3,[[0,10,3],6,[8,10,7,0,6]]],[[],2,7]] + +[[7],[9]] +[[[[6,2,0,5],9],[[2,4,5],5,[0,6,8],[9],3],[[5,5,8],10,[0,5,2,3],7,[3,0,9,3,7]],7],[8,[[2,1,2,6],2,4],6,[],[2,[7,2,6,9],1]],[8,5,[10,[1,3,4,9],1,3],8],[[3,7,[9,5],[10,5,1],10],[[5,7,5,2,8]],[2,7,[],3,2],[[0,2,0,6],[5,7,9],7,[7,8]],[7]],[0,[[],[],4,10],5,[[9,10,5],3]]] + +[[4,8,[9,[],[0,6,9,0,7]],[[2]],[1,4,8,10]],[[]],[[6,[1,3,2,7],[7,10,4,9,0]],5,3],[[[],[8],[2,7,1,3,4]],[]]] +[[],[],[4,9,7,6],[3,10,0,[]],[10]] + +[[],[[],[],8,10]] +[[[[0,10,2,6],[3,8,9],6,[3,9,8]]],[[5,0,[2,3,9],[0,5],[4,4,1]],[[],7,[6,3,2,10,2]],5,9,[3]],[[]],[3,[[],7]],[[2,6,7,1],[1],3,[9,9]]] + +[[[],7,[],[6,3,3,[4,5,6,10,8],[6,3,1,2,10]]],[[[],1,[8],[5,0,0],9],[],[[1,2,8,6]],[[4,3,7,1],2,[1,7,3,0]],[6,[7,5,3,6],5,5,3]],[[[],[6,1,7],[3,0,1,0,5]],0,[[0,10],4,[3,7,5,8,1]]],[4]] +[[5],[6],[],[5]] + +[[[8,[7],[9,7,5],[4,4,4,0,9],[0,8]]]] +[[[[3,2,6,6],[1,4,1,7,0],[],10,[8,6]],[[5,4,2],[],6,[10,6,2,2,7]],7,[[6,4],[],8,[2,7]],8],[],[],[[[],7,6],1]] + +[[6,[1,6,[9,3,7,5],8,[8,2]]]] +[[[9,3,[6,10],[],[9,5,1,2]],[[9,8],[6,4,8,9],[6,8,3],[9,7,9,10]],0,[[3,5,6,10],[7,0,7]],0],[6,[[8],[0,7,1],7,[8,1]],[4,4,3],[5,[],6,9],10],[7],[]] + +[[9,[3,3],[10,[8,10,9,9]],6,3],[[[6,2],6,5],[[6]],[1,[3,2,6]]],[9,7,1,5]] +[[3],[9,[7],[3],[7,5,7],7],[],[[[],[3,3,0,9],[8]],2,8]] + +[[[[7,1,1],0,4,7,2],[[3,4,9,2],[8,7,5,0,9],5],[9]],[[[3,8,4,2,8]]],[]] +[[0,3,[[8,10,9,0,4],5],[]]] + +[[[]],[[]]] +[[[[2,6,8,2],2,6,0,8],[10,5,[0,2,1,0],0]],[4,3,[0,4,[3,7,0,0,5]],[[1,3,9],4],0]] + +[[[10],[[9],0,[6],2,0]],[[1,3,[7,3,1]],[8,[6,3,0,1,1]],5],[[7,[1,0],2,[]],5,4,3,4],[9,7,9,7,5]] +[[9,0,[9,4]],[[[3]],5,5]] + +[[5,[10,0,[3,1],[0,8]]],[7,[[8,6,8,4,7],[],5,[7,10,8,3,9]],4,6]] +[[[[7,6,6],8],[[9,7,10,6,3],8],0],[2,9,7],[[[3,9,8,7],[8,0],5],[[0,8,2],[]],[3,3,[3,4],0,6],[6,[8,5,4,6,2]]],[]] + +[1,0,10,1] +[1,0,10,1,0] + +[[9],[2,6],[]] +[[4,1,[[9],[8,6,10,5,2],3,[6,5,9,5],[8,0,2]],7,2],[1,[[1],6,[0,7],9],[10,5,4]],[6,9],[[[6],[1,5,5,10],5,[],[10,4,6,6,4]]]] + +[[[6,7,[],[8,3,9,3,7]],0,5,5,2],[4,[],8,[[10,10,3,0],5],[[4],3,10]],[],[7,10]] +[[[7,[6]],[2,8,[8,1,4]],[[3,1,7,10],10,2],2,[4]],[8],[[]],[[1,[6,0,3,1,1]],[[5,2,7,3,10],8,[0,1,1,2]],[9,4],0],[[[7,9]]]] + +[[2,[],[],9,3]] +[[0,9,4,2],[8,6],[[[8,7,3,1],[],[8],3,[4,2]],4,1,0,[]],[[],[]]] + +[[[2],[]],[[[3,5,2,3],10],[],[9,2,5,2,3],6],[],[[0,4,0,9],[[],[]],3,[8,5,[],[6]],[[],[],6,[7]]],[[],[9,3,1,[],[8,0,7]]]] +[[6],[6,[[7,3,5,1]],7,3]] + +[[5,[[10],[0],[3],[2,4,5]]],[[8,[8,10,5,0],0,[1,7,8,1]],[10,[5,6,4,5],3],[0,3,[5,4,5,8],7],[4,[5,6],0,[0,10,7]]],[8,9],[[5,[10,3],3,[]],[7,1,8,[9],8],[],[9,[2,5],[3,5,2,4],[4]]]] +[[8,10,4,[[],1,2,8,8],8]] + +[[[2,9],6,[],[5,0,10]]] +[[[2],[[8,10,7,0],[7],[10,9,7,6]],8,[[8,10],8],[[2,8,9,3],[3]]],[7,2,8]] + +[[],[],[2,[6]],[[]],[1,3]] +[[],[4,4,4,[[],3,[],7,[]]],[6,[]],[[9]],[[]]] + +[[[[4,5,9,3]],1,[],4,[[],[],[],7]],[[[0,6,9,8,7],[],3,[4,8,1],5]],[6,[9,10,6,9],[[9,10,2,1],[8,7,1],[10,10,3]],[[0,4,3]]],[]] +[[5,[]]] + +[[4,8]] +[[],[],[0,6,[10,[5,10],2,1,[3,3,1]],8]] + +[[7,10,[[2],10,7,[5,0,5],9],10],[4,[[5],[1,5,8,10,5]]],[0,1,[[2,6],[1,8],8,0],[10,[7,1,10,3,1],[],[0,0,6,10]]],[],[7]] +[[],[3],[[3,1,1,3],1],[10,9,[],2],[[[9,3],6],[[2,10],7,9,[7,8,7,10,6]],10]] + +[[[0,5]],[[8,9,10,8]],[[[2,9,6],7,0,3],0,[[7,4],[5,7,0,10],[]]],[[3,9,[7,1,2,6],9,7],[[],10]]] +[[6,[9,[6,1],[6,3,8]]],[9,[]],[[[3,3,7,4,7]],[]],[[[]],[[],7,[10,3]],10,7],[[],7]] + +[[[[1,3,7],[],1],5,2,[1,[10,3,7]]],[[8,7],9],[[[3,9,0,8,2],[6],0,[7,4,10]],[6,0,3,1,[6,9]]],[10,7,1,10],[0,[[1],9,7,[7,7,5,4],2],[],[[5,1,9],7,7,9]]] +[[5],[9,3,[1,10],7],[[6,6,[3],3,[0,2,2,8,7]]],[7]] + +[[[4,[7,6],9,7],1,[],7,6]] +[[8,[[5,6],[6,4,3,9]],7,10,[3,[],9,[6,5,4]]]] + +[[4,2,1,[[4],8,[7,4,0,8]],10],[],[[[7,3,5]],[7,5,1,[7,2,4],[6]],[4,[1],1],[7,[10,10,10,6],[9,2,0]],[[5,1,9,3,5],[3,10,4,9,8]]],[[],6,3],[6]] +[[],[[],[0]],[[2,5,[1,4],6],1,4,[3,[],[10],[2,7,8,4,2]]],[[10],7],[[[4,10,6,3],7,[],1],2,3,3]] + +[[6,0,7]] +[[5,2,[4],[[3,0,8,10],0,[4,8,9]]],[[],[[8,9,7,5,3],4,6],7,10,[[5,6],[2,10,5],[9,5,6,0],1,1]],[2,3,[7,10],9,1],[]] + +[[4,[2,[],7]]] +[[[6,9,6,[3,6,7,2,3]],4,[1,2,5],6,4],[9,[1],[8,[7]],2],[[[1,3,6,3,6]],0,[],[]],[0,[[9,10]],5,[2],9],[[[3,1],[10,1],[5,0,9]]]] + +[[5],[2,[[]],9,[[]]],[1,5,[]]] +[[[0]],[3,1],[10,6],[]] + +[] +[[[7]],[[1,[4,10,9,2]],8,[10,[7],[2,1,1,4],2,10]],[],[[[10,6,4,7],7],[],4,8,9]] + +[[6,[[6,0,10,7,9],0,[5,1,2]],2],[[[3,1,6,1],7,[],5,4],[[10,10,3],0],8],[],[[[6,7,0,1,5],5,5,[3,7,2]],[6],7,3,1],[10]] +[[],[[[],[1,2,10,9,5]],[[5,7],[7,4,9,9,0]],10]] + +[[9,4,8,[],8],[[3,[6],0,[3,1,10,9,2]]],[],[8,0,3,4]] +[[1,1,0],[3],[[[9,1],5,[7]],7,10,[5,[2,4,2,6],6],[[2,2],[6,0,2,0],[3,4,1,3,0]]],[8,[]]] + +[[9,5],[[[],8,[0,9],[],0]],[[],7],[3],[10,9,6]] +[[8,[0,[9,5,0]],[],4,1],[]] + +[9,10,2,8,0] +[9,10,2,8] + +[[6,4,[9,5]],[[[10]],[[4,2,2,5],0,[3,2,1,10],5,[10,1]],0,9]] +[[7,[8,[0,1],4,0],[7,[5,1,9,4],10]],[[10,[0,7,8,5,9]],[10,6,[3,9]]]] + +[[3,0,1,2]] +[[[[5,2]],5,9],[],[[[9,6,5,8],[1],[],[],1]],[[[],[3,5],9,[],8],4,[[9,6,8,9,3],9,10,[0,8,1],[]],8,[[],7,[7,5],8,2]]] + +[[[[4,4]]],[8],[6,2,[8,9],2]] +[[],[9,[[],2,3],[6]],[[[10,2,9,0]],8,10,0,10]] + +[[7],[[4,4,5,8,5],[9,[9,9]]],[[[4,4,1,5,6]],10],[[],[[0,0,2,10]],[[6,9,8,5,6]]],[[[],0,[3,7,1,6,6],[0,7,8,6],[9,7]],7,[2,[9,2]]]] +[[8,7,[7,[],4]],[1,[[4,0,8,7],3],[7,[7,8,1,2],10,6],8,[[3,7,10,7]]],[2,0]] + +[[[[3,9,2],[7,2,9,10],4,[6],9],9,[[6,0,9,10,5]],[9,[10,5,7],5,6]],[],[9,4]] +[[[[8,9,9,5]]],[[[4,8],2]]] + +[[[6,10,4],[],[7,[5],[0,9,1,4,3],8,8],[4,4,7],9],[[[3,7],3,[5,4,7,0],6],2],[[[7,1,6,0,4],[],[4],[9,0],1],[[8,3,9,6],9,[2,7,8]]],[]] +[[]] + +[[],[7,6,[],[3,6,10,[9,7],4],[]],[4,9,8,[],2],[]] +[[],[4,[9,1,10,9,6],4,0],[[],[[],[10,7]],[[6,5],5,[3,2,6,3]],[2,3,10,10],[]],[9,[2,9]],[[5],10]] + +[[[[2,2,9,8],[5,2,8,5,5],[5,9,5,9],4,2],7,[],[9,[2,7,9,7]],2],[],[0,9,5],[[6],[3,[],[],0,2],5],[]] +[[[1,[9,8,8,1],3,10,[7,10,2,7]]],[[],[],[[],[10,10,4],10],10],[8,9,0,4],[],[1]] + +[[[7,[0,6,8],6],[[10,4,5,1,10]],[],4,7],[[[5,9],[4,4],5,2],2,2,[[7,10,3,7,9],10,6],2]] +[[],[]] + +[[[5,[6],[7,9,4,0]],[[4,4],[],5,[6]],[7,[5,6,9,9],6],[]]] +[[],[],[2,10,[],[[]]],[[8,7,[8],1,1]]] + +[[],[[7,0,[1,10,5,2,1],[2],[]],[[2,9,3,3],[10,9,3]],[[2],8,1]]] +[[[[5,8,6,5]],2,[3,8,10,9,0],[[5,9,1,4],[7,7],9],7]] + +[[5,3],[10,5],[]] +[[6,10,[],[[8]],[[],0,[]]],[],[],[],[]] + +[[5,[7,[5],[6,3,10],9,3],3],[[[7,0,0,1],9,[1,4],3,[0,5,8,7,7]],1,[2,[1],[3]],4,7],[[1,10,4,1,[10,3,3,8]],3,[[6,5],[1,4]]],[3,[[7],[2,3,3,5,3],[4,2],[8,7,9,1,10]],[[9,10,7]],10],[[[2]],7,5]] +[[4,7],[[10,[2,4]],[8,1,9],9],[[4],8,[],9,5],[[5,[1,0,1,1,8]],[[5,2,4],[],[],8],8,[[4,4,6,10,4]]]] + +[[8,1],[[[5],9],9,[]]] +[[9,[],3,3],[[[10,3,4,1],6,7,[9]],10,5,2],[[0,3,8],9,4,[8,7],[]],[4,4]] + +[[3],[7]] +[[1],[4,3],[6,[1],[[5],3,[]]],[0],[2]] + +[[[9,4,8],[[8,8,10],[4,6],10,10],3,6],[[[1,4],4,[],[8,3],[0,0,5]],[0,[0],4,[1,9,2,6,0],5],[4]],[[2],[0],7,6,[]]] +[[[[],[9,4,7],[9,1],5,[3,4,9]],[8]],[1,[],[[0,4]],[6,1,9],2],[],[[6]]] + +[[[[],10,8],[6,[],7,[7,6],[10,8]],[[],8,9]],[]] +[[6],[[]]] + +[[],[7,[[0,4],[],5,1],[[8,1,7,0],0,[4,3],5],[3,[],[3,9,3],[0,4,5,2],6]],[[[5,2,0],[8],[3,10,9,3,5],[],[0,5]],5,0,[],4]] +[[[[],5],[9,[5,7,8],5,[],[5,2,2,10]]],[[9],[1,5,0]]] + +[[[],[4,0,[1,7],3,7],8],[5,[],3,7,[[8,9]]],[[],[7],[[3],0]]] +[[3,8,5,[[9,10,5,5],[0,1],[2]],7],[1,1,9,4],[[[4,8,9,0],[],[],[5]]],[[],[],1,8,5],[]] + +[[5,[1,0,[9]],[[1,8,10,10,1],[],[0],[4,10,9,8,5],7]],[[6,3,2,0],[6],9,[9,7,[1,0,0],5]]] +[[10,5,1,4],[6,0,[]]] + +[[[3,9],5,[[0],[6]],[[9,9,3],[],8],5],[],[]] +[[8,8,4,[],[[9,9,7,3,8],[4,6,8,7,8],[10],2,7]],[10,0,1,[[3,10],[6,2,10,3]]],[3,6],[],[[],4]] + +[[],[9],[2,9,[[],[5,1,0,2,1],[9,10],0],[[7,3],5,10],2],[[9,[9],3],[4,[10,2,10],[0,2]],1,[2,4,[4,1,7,1,0],[],[1,0,1]],[10,[1,4,5],9]]] +[[[[],[9,1,3],[5,0,1,7],7]]] + +[[[[0,5,10],[7,8],[0,5],[7,10,1]]],[[2,10,[3],[5,4],[8,9,0,1,6]],0],[]] +[[6,[8,4,4,[10,9,4,2,9]],4,[5,1]],[1,6,5,[],[10,[7,3,10,6],[0,2]]],[4,[2,5],[3,[7,7,2,10,5],3,[0,4]],[2,9,2,[]],[2,[1],1,[6,6,5,5]]],[4,[],10,[[2,7,0,4,8]],[0,2]],[[[8,10],[7,9]],[10,5,[6,5,8,2],0,[10,8,2,9]],8]] + +[[[3,9,[],[4,1,6],6],8,[[3,8,1,3,10]],[]],[5],[],[]] +[[3,10,[]],[[9,[1,8],2,[4,3,6],7],3],[0,[[9,0,7],3,9,8,[]],5,[[],[10,5,7]],[[4,3,3,6],10,[3,9,0,6]]],[[2,[4],[5]],10,[6],6,2]] + +[[[[4,0,8],[4,3,8,10]],8,10,[10,0,3]],[[],0,7,5],[2,[[],[1,6,9,2],4,[8,2,6]],6,[6,[10,0]],[[],[4],[5,6]]],[]] +[[5,[[]],2,2],[[[10,4,7,9],10,8,[]],9,5],[[[10,10,8],2,[8,7,1,2],8],1]] + +[[5,4,3],[4,[8],1,[[]],[]],[[]],[4,[],[[1,5,5],[]]],[6,6,8,9]] +[[[5,[10,7,7,6],5,7],6,6,4,10]] + +[[2,[[]],[6,[0]],[[3,7,5,2,1],0,[9,6]],[]],[[[4,9,6]],3,8]] +[[[]],[2],[[[4,6],[6,4,10,7],10,[4,5,10]],7,[4,7,[9,1,3],8]],[[9,5,7,[],9],[8],[],7,[[1,1,7,2]]]] + +[[],[[[7,6,1,0],6,7,7]],[6],[[],6]] +[[],[],[[],[[]],[[8,5],9,[2],8,5],4]] + +[[1,2,[9,[7,5,1,0,9],[8,7,2],0,[4,10,10,7]],9],[9,[],[[0,8,10]],10]] +[[5,[[10,7,3,0,9],[0,6,4],[9,10,0]]],[1]] + +[[[],3],[[0,[6,10,6,3,10],[3,7,6,0,5],10,1]],[5],[[]],[10,0,[],8]] +[[[9,[5,10,6],7,0],8,[6,6,[2,0,9,5,1]],[[],3,[10],7],7],[[[2,3,9],[2,6,9],[10,2],[]],[2,[0,6,9],[8,5,4]],[4,[4,8,6,4],[1,1,1,4,8],10,1],4,[5,1,[]]]] + +[[[],[]],[[[10,4,6]],[[2],4,[1,1,3]],[7,9,[3,3,10,5]]]] +[[0,6,0,[10,6],10],[7,10]] + +[[[],[2,[8,3],[3,5,9,9]],[8,[8,9,2],2,[4]]]] +[[7,6,[[5,2,8,5,0],[5,2,5,5,7]],4,6],[[9,2,5],[],7],[6]] + +[[5,0]] +[[[2,[3,5,6,6],9,[6,8,8,7,2],0],1,2,7,[0,2]],[4],[9,0,4]] + +[[[[4],0,[4,6],5],[],[3,4]],[1,7,[8],6],[[1,0,[],[2,1,7,5,7],7],[6,10],[],6,[8,[9,9,9,5],2,1]],[7,[],5,[]],[7,[]]] +[[[4,1,[10,0]]]] + +[[1,[],2,6,[[6,10,2,4]]],[],[4,5,0]] +[[[],8,10],[[5,[10,9],0],10,8,3],[[[5],8],0],[]] + +[[0,10],[[[4,6]],[]],[10,0],[],[6]] +[[6,0],[[],8],[3,[8,[3,4,10],9,[6,5,10,5,9]],4,[2,[6,3],8],[10,[2,6,2],[0,4],[4],6]],[[[],[8,1]],8,5,8,3],[3,2]] + +[[[],6,[[9,3,0],[2,2,10],9,8,[]]]] +[[[5,0],[0,4,8,[7]]],[[[4],2,4,[1],[3,7,0,6,7]]]] + +[[[[7],2],[[8,9]],[],4,10],[[0,[9,0,7]],[[2,9],10]],[]] +[[[],4,[0,3,0],5],[7,0],[2,8,[6,[3,8,10,3]],5],[],[[3,[10,9],[1,6]],4,8,[[],7,[2,6,10,9],9,[8,6,3]],1]] + +[[[[0,8,6,9]],0,4],[[8,6,5,4],8],[7,[[],[10,0,9,5,9],0,6]],[10,1,3,[[8,9,9,8],[0,10,7],[2,10,9,2,10],4,2]]] +[[3,[]],[1,0,10,4,[[2,1,9,1],[]]],[0,[[],[9,1,1],1,[10,7,7,2,1]],5],[[[8,3,4,8],7,4,8,[7,4,9,1]],[5,[0,6,10],[]],[],8],[[9,0,[10,5],1],6,[5,[1,4,1,0,8],[5,10]],7]] + +[[1],[3,[[],[6],[1,6,2,9,8],[10,3,3,5]]]] +[[[3,[4,9,8,5,0]],[[3,2],[],[9,1,3,7,7]],[7,[],[7],4],[]],[2],[6,5,6,[]],[[2,[6],[6,7]],7,8],[5,[[7,6,8,6,9],[]]]] + +[[[10,[],2,3,[]],[[]],[7,[],[5,10,7,1],2],[4,[3,7,2,1,2],[7,8,4,0]],[7]],[[],[[6,3],6,[5,7,7,4],[1,7,3,4,0],6],5,1,9],[[6,[7,0,4,10,8],6,[7,7,10],[1,7]],6,3,10]] +[[],[2],[[0,4,[6,6,10,8,4],[7,8,10,1],0],[[9,6,8,0,10],1,[2,5,2,10,1],10,8],3,10]] + +[[],[],[],[[[4,0,10,8,2]]],[[],10,3,2,[[],7]]] +[[[[6,6,4,4,4],[1,4],9],[9],[[3,7,0],[10,8,10],6,[6]],7,[]],[]] + +[[[[5,0,4],[9,2,7,0],[4,4],2,6],4,7],[[[0,4,9],[5,9,1,1,5],[]]],[7]] +[[[[8,5,9,4,8],4]],[],[[[9,1,4,9],0,2],10],[2,[6,2,9,[3,4,10,2],[5,8]],[[6,5,6,6,9],[3,2,6,3,5]],[[],7,[8,3,8,7,4]]]] + +[[5,[],5],[[5],9,[8,[3,6],[10,5,7],10,2],[],[]]] +[[0,[[7,10],[7,2,6,5,2]]],[],[[[7,6],[],0],2,[[2,5,3]],0,[5,[8,7,1,3,1],5]]] + +[[[10,9,[],6]],[5,3],[3,5,10,[[1],[7,5,8,7,4],[4,4,2]]],[[4,[7],1,[10],[3,8,1]],[[],[10,0,10],[7,4,2],[5,6,1,4]],[[10,4,5],[2]],[4,[5,2,5,8],2]]] +[[[],[[6,1,9],5,[8,2,8],[5,5]],5],[10,[[10,5,8,10],10],[[3,8,1,6,0],3,8],7],[6,[5,[3,7,3,0],6,0,[0,6]],10,6]] + +[[],[[[7]],7,5],[[[8,3,0],[9,8]],3,3,[[3,1,8,1,9],10]],[[[9,4,4,7],[3,0,7,1],[6,2,9,4],[0,2,3,8],[]],[8,1,[8,6]],0,[],[[10]]],[2]] +[[2,[[2,6,10],[],7]],[[9,8,2,[10,10]],3,0,[6,0,1,3],[]],[[],9,10],[[6,10,[0,1,6,8],6,[7,5,10,10]],[[10,4,2,5],9,[4],0,0],[[9,3,5],[],[7],6,[10,0,4,7,6]],[[8,6],10,6],[]]] + +[[[3],[5,9,1,10,[8]],6,4],[[[],8,4,2],1,[10,[1,10,10],10],8],[0,[],[[6,2,1,10],4],7],[0,3,[10,[9,4,4],0,4,[1]]]] +[[],[[9,[1],[],[]]],[6],[6,[5,[8,5,5]],[9,9,[6],[8,3,7,5]],[9,[5],4,9,[10,7,8,9,4]],4],[[[4],[9,1,8],7,8,[4,2,10,10,1]],[8,7,[],10]]] + +[[],[8,9,3,5]] +[[10,[[5,5,1,6],[],5],8,[6],6],[]] + +[[10,2,[],[[]]],[2,[6,8,[10,4,1,7],3],[4,2,[9,1,3,6]]],[[]],[[2,9,[4,2,10,7],8],[10,[7,1]]]] +[[[6,7,[4,0]]],[[[5,7,5,10]]],[10,5,[[5,4,3,5,6]],10,[]]] + +[[10],[],[[[6]]],[],[[6,[7,4,5,4,8],[],[2,0,9,5,3],2],[[8]],[0,10,2,[1,0]]]] +[[[1,10,[5,6]],[[10,3,3,1,10],3,2],[[7,4],6],[],[]],[10,[[2,9,2,5],2,[6,6,10,8],2,8]]] + +[[[],[3],[[8,6,5,2,2],8,[9,3,1,1],[0,4,9,10]],4]] +[[],[[9],7,10]] + +[[[[7,6,10],6,6],[9],[1],7],[3,9],[7,[4,4]],[1,[4,3],[[5,7,9,4],8,[0,10,5],[4,1,10,6,3],[7]],[[]],[7,10,[4,4,6,5,10],9,[7,0,10,7]]],[[]]] +[[],[[[6],3,[]],[[3,6],10],9],[[[3,4,0,3],5,3,9]],[0,10,9],[3]] + +[[5,0,[6]],[[[],2],[[5],2,[5,8,2],[2,8,3,9,1],[7]]],[10,[4,[4,7,3,9,2],7,[6,0,0,7,2],0],[10,[10,4,3,7],1,10]],[3,[[9,10,9],[8,1,4],6,[],5],[8,[6,1],[6,2]],[[5,9],8,5],[[8],[6,9,6],7]]] +[[7,8],[[[6,5,8,0,7],[1,2],[4,6,4]],[],[[],8,10]]] + +[[[[10,5],3,[5,2,2,6,3]]]] +[[10,[[5,0],4,1,[0],[5,8,0]]],[8,0,10,4],[1,8,[9,[7,8,8],4,[5,0,6,0],0]],[[],6],[6]] + +[[[0,0,5,10,[9,10,0,5,8]]],[0,9,[[],[2,9,5,2],[7,7]]]] +[[[10,0,5,4,[]],8,5,8],[[10,4,[7,5,3]],9,4]] + +[[4,5,10],[7,9],[2,[2,[3],[5,5,2]],5,2]] +[[10,1,[[5,3,6],1,7,[1],[7,9,8,5]],6,10],[6,5,[5,9]],[],[[6,1],8,3]] + +[[6,[3,4,4],[],[8,[7,6,1,10],7,[4,6,1,4],3]],[10],[[0]],[[8,3,[8,4,4,8],8]]] +[[[10],[[5],3],1,4,0],[[1],2]] + +[[5,2],[3,8,[]],[[[5,8]],5,2,9],[[5,1,6,[0,6,10,4,10]]]] +[[[[5,2,10,8],3],[[1]]],[0,[0],[3,[10,2,0,2],[]],[10,[8,2,7]],0],[[7,[5,2,0,7,8],[9,6,5,0],10],[[10,5],[4,4,9,6],[],4,6],0,[],9],[0,[[],[10,10],3],5],[[[10,10,3],[],[8,2,3],5,[2,1,9]]]] + +[[4,2],[],[8,9,[],1],[],[]] +[[0,[10,[1,10,5],[3,2,6,7],5],[[7,3,10],6,8,[6,8,8,4,2],7],9],[0,2]] + +[[[0,[],8],[[8,7,4],10,8,9],0,[2,6,[3,2,9,7],6]],[0,[0,5,6]],[2],[[[0,4,1,2,9],5,[3]],[[6,10,7,8,9],0,[1,4,6],[9,4,10,9]],[[],1]]] +[[3,[]],[[0,3],[8,[4,5,7,10,5]],10,[],[4]]] + +[[[]],[],[[],[]],[],[]] +[[[8],[9,[10,4,0,9],2,6]],[0,[6,5,[4,5,10,8,2]],6],[8],[7],[10,[8]]] + +[[],[4,[[4,7,0,5,3],2,[7,6,5,1]],8],[]] +[[[[2,2,3,7],0,[6,3],[5]],[8]],[[[10,5,5,10,2],0,8,[5]],[],[[8,10,1,10],1,[4],[1,8,1,8],1],10,[[10]]],[2,6,[[]],3,[8,[0],[0,0,0,9]]]] + +[[5],[[[5,1,1],[1,2,10],5,10],2,[[3],[],3],10,[1]],[]] +[[7,5,7],[],[9,[6,4,8,[5,2,10,2],5],4],[],[3]] + +[[8,5,6,10,[8,[10],0,3]],[6],[[[]],[6,5,[0,4,9,1,9],[1,6,2]],[[4,7,2,7],1]]] +[[8,[0,8,[8,4,4],[10,5],[10,10,1,2]],10],[1,10,[9,9,[10,1],7,6]]] + +[[[5,7],[4,[0,1,1,2,6]],[5],3],[]] +[[4,[4,[6,6]]],[[[],[9,4,4,2,8]]],[[[7]],[3],[],[3]]] + +[[[4,4,[0,3],5],3,6],[[4,[2,9],1,[]],2,0,[]],[6],[8,[[]]]] +[[10],[1,[8,[],10],3,9],[],[[5,7],7,8]] + +[[[],3,5,[[3,4,8,2]]],[3],[10,[[2,3],1,9,[],[7,9]],[[5,6],10,3,0,1]]] +[[1],[5]] diff --git a/inputs/input.14 b/inputs/input.14 new file mode 100644 index 0000000..7bef215 --- /dev/null +++ b/inputs/input.14 @@ -0,0 +1,144 @@ +513,151 -> 513,155 -> 510,155 -> 510,161 -> 519,161 -> 519,155 -> 515,155 -> 515,151 +463,98 -> 463,97 -> 463,98 -> 465,98 -> 465,94 -> 465,98 -> 467,98 -> 467,94 -> 467,98 -> 469,98 -> 469,88 -> 469,98 -> 471,98 -> 471,90 -> 471,98 -> 473,98 -> 473,97 -> 473,98 -> 475,98 -> 475,95 -> 475,98 +463,98 -> 463,97 -> 463,98 -> 465,98 -> 465,94 -> 465,98 -> 467,98 -> 467,94 -> 467,98 -> 469,98 -> 469,88 -> 469,98 -> 471,98 -> 471,90 -> 471,98 -> 473,98 -> 473,97 -> 473,98 -> 475,98 -> 475,95 -> 475,98 +488,36 -> 488,32 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,32 -> 494,36 +493,23 -> 493,21 -> 493,23 -> 495,23 -> 495,18 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,18 -> 501,23 -> 503,23 -> 503,15 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +510,167 -> 514,167 +476,117 -> 476,114 -> 476,117 -> 478,117 -> 478,110 -> 478,117 -> 480,117 -> 480,110 -> 480,117 -> 482,117 -> 482,114 -> 482,117 -> 484,117 -> 484,113 -> 484,117 -> 486,117 -> 486,113 -> 486,117 +476,117 -> 476,114 -> 476,117 -> 478,117 -> 478,110 -> 478,117 -> 480,117 -> 480,110 -> 480,117 -> 482,117 -> 482,114 -> 482,117 -> 484,117 -> 484,113 -> 484,117 -> 486,117 -> 486,113 -> 486,117 +486,120 -> 486,122 -> 482,122 -> 482,128 -> 491,128 -> 491,122 -> 490,122 -> 490,120 +493,23 -> 493,21 -> 493,23 -> 495,23 -> 495,18 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,18 -> 501,23 -> 503,23 -> 503,15 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +476,117 -> 476,114 -> 476,117 -> 478,117 -> 478,110 -> 478,117 -> 480,117 -> 480,110 -> 480,117 -> 482,117 -> 482,114 -> 482,117 -> 484,117 -> 484,113 -> 484,117 -> 486,117 -> 486,113 -> 486,117 +488,36 -> 488,32 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,32 -> 494,36 +498,175 -> 498,176 -> 505,176 +493,39 -> 493,43 -> 489,43 -> 489,51 -> 501,51 -> 501,43 -> 496,43 -> 496,39 +489,79 -> 493,79 +493,23 -> 493,21 -> 493,23 -> 495,23 -> 495,18 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,18 -> 501,23 -> 503,23 -> 503,15 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +483,85 -> 487,85 +486,120 -> 486,122 -> 482,122 -> 482,128 -> 491,128 -> 491,122 -> 490,122 -> 490,120 +480,82 -> 484,82 +463,98 -> 463,97 -> 463,98 -> 465,98 -> 465,94 -> 465,98 -> 467,98 -> 467,94 -> 467,98 -> 469,98 -> 469,88 -> 469,98 -> 471,98 -> 471,90 -> 471,98 -> 473,98 -> 473,97 -> 473,98 -> 475,98 -> 475,95 -> 475,98 +493,23 -> 493,21 -> 493,23 -> 495,23 -> 495,18 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,18 -> 501,23 -> 503,23 -> 503,15 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +494,144 -> 494,145 -> 504,145 -> 504,144 +486,54 -> 490,54 +488,36 -> 488,32 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,32 -> 494,36 +492,60 -> 496,60 +493,39 -> 493,43 -> 489,43 -> 489,51 -> 501,51 -> 501,43 -> 496,43 -> 496,39 +493,23 -> 493,21 -> 493,23 -> 495,23 -> 495,18 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,18 -> 501,23 -> 503,23 -> 503,15 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +513,151 -> 513,155 -> 510,155 -> 510,161 -> 519,161 -> 519,155 -> 515,155 -> 515,151 +493,39 -> 493,43 -> 489,43 -> 489,51 -> 501,51 -> 501,43 -> 496,43 -> 496,39 +497,147 -> 497,148 -> 513,148 -> 513,147 +493,39 -> 493,43 -> 489,43 -> 489,51 -> 501,51 -> 501,43 -> 496,43 -> 496,39 +476,117 -> 476,114 -> 476,117 -> 478,117 -> 478,110 -> 478,117 -> 480,117 -> 480,110 -> 480,117 -> 482,117 -> 482,114 -> 482,117 -> 484,117 -> 484,113 -> 484,117 -> 486,117 -> 486,113 -> 486,117 +463,98 -> 463,97 -> 463,98 -> 465,98 -> 465,94 -> 465,98 -> 467,98 -> 467,94 -> 467,98 -> 469,98 -> 469,88 -> 469,98 -> 471,98 -> 471,90 -> 471,98 -> 473,98 -> 473,97 -> 473,98 -> 475,98 -> 475,95 -> 475,98 +488,36 -> 488,32 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,32 -> 494,36 +493,23 -> 493,21 -> 493,23 -> 495,23 -> 495,18 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,18 -> 501,23 -> 503,23 -> 503,15 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +476,117 -> 476,114 -> 476,117 -> 478,117 -> 478,110 -> 478,117 -> 480,117 -> 480,110 -> 480,117 -> 482,117 -> 482,114 -> 482,117 -> 484,117 -> 484,113 -> 484,117 -> 486,117 -> 486,113 -> 486,117 +476,117 -> 476,114 -> 476,117 -> 478,117 -> 478,110 -> 478,117 -> 480,117 -> 480,110 -> 480,117 -> 482,117 -> 482,114 -> 482,117 -> 484,117 -> 484,113 -> 484,117 -> 486,117 -> 486,113 -> 486,117 +513,151 -> 513,155 -> 510,155 -> 510,161 -> 519,161 -> 519,155 -> 515,155 -> 515,151 +474,70 -> 478,70 +466,103 -> 466,104 -> 481,104 -> 481,103 +463,98 -> 463,97 -> 463,98 -> 465,98 -> 465,94 -> 465,98 -> 467,98 -> 467,94 -> 467,98 -> 469,98 -> 469,88 -> 469,98 -> 471,98 -> 471,90 -> 471,98 -> 473,98 -> 473,97 -> 473,98 -> 475,98 -> 475,95 -> 475,98 +463,98 -> 463,97 -> 463,98 -> 465,98 -> 465,94 -> 465,98 -> 467,98 -> 467,94 -> 467,98 -> 469,98 -> 469,88 -> 469,98 -> 471,98 -> 471,90 -> 471,98 -> 473,98 -> 473,97 -> 473,98 -> 475,98 -> 475,95 -> 475,98 +471,85 -> 475,85 +490,131 -> 490,134 -> 482,134 -> 482,139 -> 501,139 -> 501,134 -> 495,134 -> 495,131 +463,98 -> 463,97 -> 463,98 -> 465,98 -> 465,94 -> 465,98 -> 467,98 -> 467,94 -> 467,98 -> 469,98 -> 469,88 -> 469,98 -> 471,98 -> 471,90 -> 471,98 -> 473,98 -> 473,97 -> 473,98 -> 475,98 -> 475,95 -> 475,98 +488,36 -> 488,32 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,32 -> 494,36 +493,39 -> 493,43 -> 489,43 -> 489,51 -> 501,51 -> 501,43 -> 496,43 -> 496,39 +480,70 -> 484,70 +476,117 -> 476,114 -> 476,117 -> 478,117 -> 478,110 -> 478,117 -> 480,117 -> 480,110 -> 480,117 -> 482,117 -> 482,114 -> 482,117 -> 484,117 -> 484,113 -> 484,117 -> 486,117 -> 486,113 -> 486,117 +468,70 -> 472,70 +480,60 -> 484,60 +493,23 -> 493,21 -> 493,23 -> 495,23 -> 495,18 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,18 -> 501,23 -> 503,23 -> 503,15 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +477,68 -> 481,68 +483,79 -> 487,79 +495,85 -> 499,85 +463,98 -> 463,97 -> 463,98 -> 465,98 -> 465,94 -> 465,98 -> 467,98 -> 467,94 -> 467,98 -> 469,98 -> 469,88 -> 469,98 -> 471,98 -> 471,90 -> 471,98 -> 473,98 -> 473,97 -> 473,98 -> 475,98 -> 475,95 -> 475,98 +493,39 -> 493,43 -> 489,43 -> 489,51 -> 501,51 -> 501,43 -> 496,43 -> 496,39 +486,120 -> 486,122 -> 482,122 -> 482,128 -> 491,128 -> 491,122 -> 490,122 -> 490,120 +463,98 -> 463,97 -> 463,98 -> 465,98 -> 465,94 -> 465,98 -> 467,98 -> 467,94 -> 467,98 -> 469,98 -> 469,88 -> 469,98 -> 471,98 -> 471,90 -> 471,98 -> 473,98 -> 473,97 -> 473,98 -> 475,98 -> 475,95 -> 475,98 +474,82 -> 478,82 +463,98 -> 463,97 -> 463,98 -> 465,98 -> 465,94 -> 465,98 -> 467,98 -> 467,94 -> 467,98 -> 469,98 -> 469,88 -> 469,98 -> 471,98 -> 471,90 -> 471,98 -> 473,98 -> 473,97 -> 473,98 -> 475,98 -> 475,95 -> 475,98 +463,98 -> 463,97 -> 463,98 -> 465,98 -> 465,94 -> 465,98 -> 467,98 -> 467,94 -> 467,98 -> 469,98 -> 469,88 -> 469,98 -> 471,98 -> 471,90 -> 471,98 -> 473,98 -> 473,97 -> 473,98 -> 475,98 -> 475,95 -> 475,98 +476,117 -> 476,114 -> 476,117 -> 478,117 -> 478,110 -> 478,117 -> 480,117 -> 480,110 -> 480,117 -> 482,117 -> 482,114 -> 482,117 -> 484,117 -> 484,113 -> 484,117 -> 486,117 -> 486,113 -> 486,117 +490,131 -> 490,134 -> 482,134 -> 482,139 -> 501,139 -> 501,134 -> 495,134 -> 495,131 +495,63 -> 499,63 +489,63 -> 493,63 +477,79 -> 481,79 +493,23 -> 493,21 -> 493,23 -> 495,23 -> 495,18 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,18 -> 501,23 -> 503,23 -> 503,15 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +463,98 -> 463,97 -> 463,98 -> 465,98 -> 465,94 -> 465,98 -> 467,98 -> 467,94 -> 467,98 -> 469,98 -> 469,88 -> 469,98 -> 471,98 -> 471,90 -> 471,98 -> 473,98 -> 473,97 -> 473,98 -> 475,98 -> 475,95 -> 475,98 +463,98 -> 463,97 -> 463,98 -> 465,98 -> 465,94 -> 465,98 -> 467,98 -> 467,94 -> 467,98 -> 469,98 -> 469,88 -> 469,98 -> 471,98 -> 471,90 -> 471,98 -> 473,98 -> 473,97 -> 473,98 -> 475,98 -> 475,95 -> 475,98 +501,170 -> 505,170 +497,147 -> 497,148 -> 513,148 -> 513,147 +463,98 -> 463,97 -> 463,98 -> 465,98 -> 465,94 -> 465,98 -> 467,98 -> 467,94 -> 467,98 -> 469,98 -> 469,88 -> 469,98 -> 471,98 -> 471,90 -> 471,98 -> 473,98 -> 473,97 -> 473,98 -> 475,98 -> 475,95 -> 475,98 +463,98 -> 463,97 -> 463,98 -> 465,98 -> 465,94 -> 465,98 -> 467,98 -> 467,94 -> 467,98 -> 469,98 -> 469,88 -> 469,98 -> 471,98 -> 471,90 -> 471,98 -> 473,98 -> 473,97 -> 473,98 -> 475,98 -> 475,95 -> 475,98 +476,117 -> 476,114 -> 476,117 -> 478,117 -> 478,110 -> 478,117 -> 480,117 -> 480,110 -> 480,117 -> 482,117 -> 482,114 -> 482,117 -> 484,117 -> 484,113 -> 484,117 -> 486,117 -> 486,113 -> 486,117 +489,85 -> 493,85 +488,36 -> 488,32 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,32 -> 494,36 +490,131 -> 490,134 -> 482,134 -> 482,139 -> 501,139 -> 501,134 -> 495,134 -> 495,131 +490,131 -> 490,134 -> 482,134 -> 482,139 -> 501,139 -> 501,134 -> 495,134 -> 495,131 +493,23 -> 493,21 -> 493,23 -> 495,23 -> 495,18 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,18 -> 501,23 -> 503,23 -> 503,15 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +471,68 -> 475,68 +488,36 -> 488,32 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,32 -> 494,36 +486,76 -> 490,76 +483,73 -> 487,73 +493,23 -> 493,21 -> 493,23 -> 495,23 -> 495,18 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,18 -> 501,23 -> 503,23 -> 503,15 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +513,151 -> 513,155 -> 510,155 -> 510,161 -> 519,161 -> 519,155 -> 515,155 -> 515,151 +466,103 -> 466,104 -> 481,104 -> 481,103 +504,167 -> 508,167 +507,170 -> 511,170 +488,36 -> 488,32 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,32 -> 494,36 +486,120 -> 486,122 -> 482,122 -> 482,128 -> 491,128 -> 491,122 -> 490,122 -> 490,120 +463,98 -> 463,97 -> 463,98 -> 465,98 -> 465,94 -> 465,98 -> 467,98 -> 467,94 -> 467,98 -> 469,98 -> 469,88 -> 469,98 -> 471,98 -> 471,90 -> 471,98 -> 473,98 -> 473,97 -> 473,98 -> 475,98 -> 475,95 -> 475,98 +513,151 -> 513,155 -> 510,155 -> 510,161 -> 519,161 -> 519,155 -> 515,155 -> 515,151 +493,23 -> 493,21 -> 493,23 -> 495,23 -> 495,18 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,18 -> 501,23 -> 503,23 -> 503,15 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +493,23 -> 493,21 -> 493,23 -> 495,23 -> 495,18 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,18 -> 501,23 -> 503,23 -> 503,15 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +507,164 -> 511,164 +493,23 -> 493,21 -> 493,23 -> 495,23 -> 495,18 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,18 -> 501,23 -> 503,23 -> 503,15 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +486,120 -> 486,122 -> 482,122 -> 482,128 -> 491,128 -> 491,122 -> 490,122 -> 490,120 +474,66 -> 478,66 +493,23 -> 493,21 -> 493,23 -> 495,23 -> 495,18 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,18 -> 501,23 -> 503,23 -> 503,15 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +463,98 -> 463,97 -> 463,98 -> 465,98 -> 465,94 -> 465,98 -> 467,98 -> 467,94 -> 467,98 -> 469,98 -> 469,88 -> 469,98 -> 471,98 -> 471,90 -> 471,98 -> 473,98 -> 473,97 -> 473,98 -> 475,98 -> 475,95 -> 475,98 +476,117 -> 476,114 -> 476,117 -> 478,117 -> 478,110 -> 478,117 -> 480,117 -> 480,110 -> 480,117 -> 482,117 -> 482,114 -> 482,117 -> 484,117 -> 484,113 -> 484,117 -> 486,117 -> 486,113 -> 486,117 +486,120 -> 486,122 -> 482,122 -> 482,128 -> 491,128 -> 491,122 -> 490,122 -> 490,120 +488,36 -> 488,32 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,32 -> 494,36 +476,117 -> 476,114 -> 476,117 -> 478,117 -> 478,110 -> 478,117 -> 480,117 -> 480,110 -> 480,117 -> 482,117 -> 482,114 -> 482,117 -> 484,117 -> 484,113 -> 484,117 -> 486,117 -> 486,113 -> 486,117 +486,120 -> 486,122 -> 482,122 -> 482,128 -> 491,128 -> 491,122 -> 490,122 -> 490,120 +489,57 -> 493,57 +476,117 -> 476,114 -> 476,117 -> 478,117 -> 478,110 -> 478,117 -> 480,117 -> 480,110 -> 480,117 -> 482,117 -> 482,114 -> 482,117 -> 484,117 -> 484,113 -> 484,117 -> 486,117 -> 486,113 -> 486,117 +488,36 -> 488,32 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,32 -> 494,36 +480,76 -> 484,76 +488,36 -> 488,32 -> 488,36 -> 490,36 -> 490,26 -> 490,36 -> 492,36 -> 492,26 -> 492,36 -> 494,36 -> 494,32 -> 494,36 +477,63 -> 481,63 +492,82 -> 496,82 +476,117 -> 476,114 -> 476,117 -> 478,117 -> 478,110 -> 478,117 -> 480,117 -> 480,110 -> 480,117 -> 482,117 -> 482,114 -> 482,117 -> 484,117 -> 484,113 -> 484,117 -> 486,117 -> 486,113 -> 486,117 +476,117 -> 476,114 -> 476,117 -> 478,117 -> 478,110 -> 478,117 -> 480,117 -> 480,110 -> 480,117 -> 482,117 -> 482,114 -> 482,117 -> 484,117 -> 484,113 -> 484,117 -> 486,117 -> 486,113 -> 486,117 +513,170 -> 517,170 +476,117 -> 476,114 -> 476,117 -> 478,117 -> 478,110 -> 478,117 -> 480,117 -> 480,110 -> 480,117 -> 482,117 -> 482,114 -> 482,117 -> 484,117 -> 484,113 -> 484,117 -> 486,117 -> 486,113 -> 486,117 +490,131 -> 490,134 -> 482,134 -> 482,139 -> 501,139 -> 501,134 -> 495,134 -> 495,131 +493,23 -> 493,21 -> 493,23 -> 495,23 -> 495,18 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,18 -> 501,23 -> 503,23 -> 503,15 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +483,57 -> 487,57 +493,23 -> 493,21 -> 493,23 -> 495,23 -> 495,18 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,18 -> 501,23 -> 503,23 -> 503,15 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +498,175 -> 498,176 -> 505,176 +486,60 -> 490,60 +497,147 -> 497,148 -> 513,148 -> 513,147 +493,23 -> 493,21 -> 493,23 -> 495,23 -> 495,18 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,18 -> 501,23 -> 503,23 -> 503,15 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +513,151 -> 513,155 -> 510,155 -> 510,161 -> 519,161 -> 519,155 -> 515,155 -> 515,151 +486,82 -> 490,82 +493,23 -> 493,21 -> 493,23 -> 495,23 -> 495,18 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,18 -> 501,23 -> 503,23 -> 503,15 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +493,23 -> 493,21 -> 493,23 -> 495,23 -> 495,18 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,18 -> 501,23 -> 503,23 -> 503,15 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +490,131 -> 490,134 -> 482,134 -> 482,139 -> 501,139 -> 501,134 -> 495,134 -> 495,131 +477,85 -> 481,85 +493,23 -> 493,21 -> 493,23 -> 495,23 -> 495,18 -> 495,23 -> 497,23 -> 497,19 -> 497,23 -> 499,23 -> 499,18 -> 499,23 -> 501,23 -> 501,18 -> 501,23 -> 503,23 -> 503,15 -> 503,23 -> 505,23 -> 505,16 -> 505,23 +463,98 -> 463,97 -> 463,98 -> 465,98 -> 465,94 -> 465,98 -> 467,98 -> 467,94 -> 467,98 -> 469,98 -> 469,88 -> 469,98 -> 471,98 -> 471,90 -> 471,98 -> 473,98 -> 473,97 -> 473,98 -> 475,98 -> 475,95 -> 475,98 +483,63 -> 487,63 +513,151 -> 513,155 -> 510,155 -> 510,161 -> 519,161 -> 519,155 -> 515,155 -> 515,151 +466,103 -> 466,104 -> 481,104 -> 481,103 +463,98 -> 463,97 -> 463,98 -> 465,98 -> 465,94 -> 465,98 -> 467,98 -> 467,94 -> 467,98 -> 469,98 -> 469,88 -> 469,98 -> 471,98 -> 471,90 -> 471,98 -> 473,98 -> 473,97 -> 473,98 -> 475,98 -> 475,95 -> 475,98 +463,98 -> 463,97 -> 463,98 -> 465,98 -> 465,94 -> 465,98 -> 467,98 -> 467,94 -> 467,98 -> 469,98 -> 469,88 -> 469,98 -> 471,98 -> 471,90 -> 471,98 -> 473,98 -> 473,97 -> 473,98 -> 475,98 -> 475,95 -> 475,98 +494,144 -> 494,145 -> 504,145 -> 504,144 +493,39 -> 493,43 -> 489,43 -> 489,51 -> 501,51 -> 501,43 -> 496,43 -> 496,39 +490,131 -> 490,134 -> 482,134 -> 482,139 -> 501,139 -> 501,134 -> 495,134 -> 495,131 +476,117 -> 476,114 -> 476,117 -> 478,117 -> 478,110 -> 478,117 -> 480,117 -> 480,110 -> 480,117 -> 482,117 -> 482,114 -> 482,117 -> 484,117 -> 484,113 -> 484,117 -> 486,117 -> 486,113 -> 486,117 +494,144 -> 494,145 -> 504,145 -> 504,144 +476,117 -> 476,114 -> 476,117 -> 478,117 -> 478,110 -> 478,117 -> 480,117 -> 480,110 -> 480,117 -> 482,117 -> 482,114 -> 482,117 -> 484,117 -> 484,113 -> 484,117 -> 486,117 -> 486,113 -> 486,117 diff --git a/inputs/input.15 b/inputs/input.15 new file mode 100644 index 0000000..7121b8c --- /dev/null +++ b/inputs/input.15 @@ -0,0 +1,19 @@ +Sensor at x=3482210, y=422224: closest beacon is at x=2273934, y=-202439 +Sensor at x=3679395, y=2737332: closest beacon is at x=4104213, y=2980736 +Sensor at x=3173475, y=3948494: closest beacon is at x=3494250, y=3554521 +Sensor at x=27235, y=3642190: closest beacon is at x=-190885, y=3635525 +Sensor at x=3851721, y=1754784: closest beacon is at x=3145586, y=2167751 +Sensor at x=327074, y=3250656: closest beacon is at x=-190885, y=3635525 +Sensor at x=3499970, y=3186179: closest beacon is at x=3494250, y=3554521 +Sensor at x=150736, y=2522778: closest beacon is at x=-85806, y=2000000 +Sensor at x=3000768, y=3333983: closest beacon is at x=2564067, y=3163630 +Sensor at x=1751302, y=1660540: closest beacon is at x=3145586, y=2167751 +Sensor at x=2591068, y=2923079: closest beacon is at x=2564067, y=3163630 +Sensor at x=48946, y=3999178: closest beacon is at x=-190885, y=3635525 +Sensor at x=3695475, y=3863101: closest beacon is at x=3494250, y=3554521 +Sensor at x=1504031, y=2760: closest beacon is at x=2273934, y=-202439 +Sensor at x=3021186, y=2667125: closest beacon is at x=3145586, y=2167751 +Sensor at x=1514629, y=3771171: closest beacon is at x=2564067, y=3163630 +Sensor at x=234064, y=616106: closest beacon is at x=-85806, y=2000000 +Sensor at x=3990843, y=3393575: closest beacon is at x=4104213, y=2980736 +Sensor at x=768875, y=2665271: closest beacon is at x=-85806, y=2000000 diff --git a/inputs/input.16 b/inputs/input.16 new file mode 100644 index 0000000..1792b0b --- /dev/null +++ b/inputs/input.16 @@ -0,0 +1,62 @@ +Valve AV has flow rate=0; tunnels lead to valves AX, PI +Valve JI has flow rate=0; tunnels lead to valves VD, HF +Valve FF has flow rate=0; tunnels lead to valves ZL, CG +Valve CG has flow rate=10; tunnels lead to valves TI, SU, RV, FF, QX +Valve RC has flow rate=18; tunnels lead to valves EQ, WR, AD +Valve ZJ has flow rate=0; tunnels lead to valves GJ, WI +Valve GJ has flow rate=21; tunnels lead to valves TG, YJ, EU, AZ, ZJ +Valve VJ has flow rate=0; tunnels lead to valves UJ, AA +Valve ER has flow rate=0; tunnels lead to valves QO, ZK +Valve QO has flow rate=24; tunnels lead to valves MF, ER +Valve LN has flow rate=0; tunnels lead to valves ZR, TI +Valve SU has flow rate=0; tunnels lead to valves CG, LM +Valve AJ has flow rate=12; tunnels lead to valves QX, JW, TR, MK +Valve YJ has flow rate=0; tunnels lead to valves GJ, EQ +Valve JW has flow rate=0; tunnels lead to valves YI, AJ +Valve WI has flow rate=13; tunnels lead to valves XO, ZJ, ZL +Valve VS has flow rate=0; tunnels lead to valves XL, VD +Valve TI has flow rate=0; tunnels lead to valves LN, CG +Valve VD has flow rate=17; tunnels lead to valves TR, VS, JI, GQ, VO +Valve TX has flow rate=0; tunnels lead to valves FV, WR +Valve HP has flow rate=0; tunnels lead to valves AX, ET +Valve BK has flow rate=0; tunnels lead to valves PI, AD +Valve ET has flow rate=0; tunnels lead to valves ZR, HP +Valve VY has flow rate=0; tunnels lead to valves KU, LM +Valve DZ has flow rate=0; tunnels lead to valves VO, AA +Valve ZK has flow rate=0; tunnels lead to valves FR, ER +Valve TG has flow rate=0; tunnels lead to valves GJ, AX +Valve YI has flow rate=0; tunnels lead to valves JW, LM +Valve XO has flow rate=0; tunnels lead to valves ZR, WI +Valve ZR has flow rate=11; tunnels lead to valves KX, AZ, ET, LN, XO +Valve EQ has flow rate=0; tunnels lead to valves RC, YJ +Valve PI has flow rate=4; tunnels lead to valves BK, KX, VQ, EU, AV +Valve VO has flow rate=0; tunnels lead to valves VD, DZ +Valve WR has flow rate=0; tunnels lead to valves TX, RC +Valve TF has flow rate=0; tunnels lead to valves FR, KU +Valve FR has flow rate=22; tunnels lead to valves ZK, TF +Valve MK has flow rate=0; tunnels lead to valves AJ, YW +Valve AZ has flow rate=0; tunnels lead to valves GJ, ZR +Valve TC has flow rate=0; tunnels lead to valves KU, RO +Valve GQ has flow rate=0; tunnels lead to valves MF, VD +Valve YW has flow rate=0; tunnels lead to valves MK, KU +Valve AA has flow rate=0; tunnels lead to valves RO, EI, VJ, VQ, DZ +Valve MF has flow rate=0; tunnels lead to valves QO, GQ +Valve ZL has flow rate=0; tunnels lead to valves WI, FF +Valve LM has flow rate=3; tunnels lead to valves YI, SU, UJ, VY, HF +Valve KU has flow rate=9; tunnels lead to valves XL, TC, TF, VY, YW +Valve FV has flow rate=23; tunnels lead to valves KV, TX +Valve EU has flow rate=0; tunnels lead to valves PI, GJ +Valve KV has flow rate=0; tunnels lead to valves FV, OF +Valve QX has flow rate=0; tunnels lead to valves AJ, CG +Valve RO has flow rate=0; tunnels lead to valves AA, TC +Valve TR has flow rate=0; tunnels lead to valves VD, AJ +Valve VQ has flow rate=0; tunnels lead to valves AA, PI +Valve HF has flow rate=0; tunnels lead to valves JI, LM +Valve RV has flow rate=0; tunnels lead to valves EI, CG +Valve KX has flow rate=0; tunnels lead to valves PI, ZR +Valve UJ has flow rate=0; tunnels lead to valves LM, VJ +Valve AX has flow rate=5; tunnels lead to valves TG, AV, HP +Valve XL has flow rate=0; tunnels lead to valves KU, VS +Valve AD has flow rate=0; tunnels lead to valves BK, RC +Valve EI has flow rate=0; tunnels lead to valves RV, AA +Valve OF has flow rate=19; tunnel leads to valve KV diff --git a/inputs/input.17 b/inputs/input.17 new file mode 100644 index 0000000..0369d6d --- /dev/null +++ b/inputs/input.17 @@ -0,0 +1 @@ +>><<<>>>><<<>><>>>><<>>><<<<>><<<<><<<><<<>><<>>><<<<><>>>><<<>>><<>>>><<>>>><>>>><<><<<>><>><<<<>><<<<>>><<>><<>>>><<<<>>>><<>><<<>>><<<<>><><>>><<<<><<>>>><<>>><><<>><<<<>>><<<<>>><<<<><>>><<<>>>><<>>>><<>><<<>><<<><<<>><<>><<><<<><<>>>><<<<><<<<>>>><>><<<><>><<>>><<<<>><><<>><<<>>><<>>>><>>>><<>><><<<>><<<<><<<>><<<><<<<>><<>>>><<><<<>>>><<<<>>>><<><<<<>><>>>><>><<<>>>><<<>><>>><>>><<>>>><<<<>>>><<<<>>><<>>>><<<<>>><<>>>><<<>>>><<><<><>><>><<<<><<<<>><><>><<<<><>><<<>><<<>>><>>>><<<<>>><<>>><<<>><<<><>>>><<>>><<<<>>>><><<<>><>><<><<<<><><<<><<<<>>>><>>>><><<>>>><>>>><<<<>>><<<>><<<>>><<<<>>>><<<<>>><<<>>>><<<<><<>>>><<><<<<>><<<><<>>><<<>>><<>>>><>>>><>>><><>>><>>>><>>>><><>>>><>><>>>><<<>><<<<><<><<<<><<>><<>><<>>><<>><>>><>><<<>>><<<>>>><>>><>><<<<><<<>>><>>><><<>><>><<<<>>>><><<<>><<<<>><<>>><<>>><>>>><<<<>><<><><<>>>><<<>>>><<>>><<><<><<>>><<><<<><<>><<>><<><<<<>>><<>>>><<>>><<<>><<<<>><<<>><<>><<>><<<><>><<><<<>>>><<<<>>><>><>>>><<<<><<>>>><><<<><<>><<>>>><>><<<>>><<><<>>><>>>><<>>><>>><<<<>>><<<>><<<<><<<><<<<><<<<>><<<<>>><<<<>>><<<<><>>>><<<>>><<><<>>>><<>>><>><<>><><<<>>>><<>><>>>><<<><>>><<<<>><<<<>>>><<<<>><<<<>><>><<<<>>><<<>>><<<>>>><<>><<<<>><<<<>>><<><<<><<<<>>><<<<>>><><<><<>>><<<<>><>>><>>><<<><<<>>><<<>>>><<>>><><<>>><<<>><<>><<<<><<><<<<>><<<<>><><<<>>><<>><<<<><<<>>><>>>><<>>>><>>>><<<<>><>>><>><<>><<<><<>><<><<<<>><<<<>>><<<><<<<>>><<<<>>><<<>><<>>><<<>><<<<><<<>>><<>>><<><>>>><<<><<<>>><<<<>>><<<<>><<><<<<><<<>>><<>>>><<<>>><<>>>><>>>><<><<><>>><<<>>><<<<>>><<>>><<<<><>>>><<<<><<<>><<<<>>><>>><<<>>>><<<<><>><>>><<<<>>><<<><<<>>><>><<><<<<><<>>>><<<<>>><>>>><<<>>>><<<>>>><>>><>>><<<>>>><<<>>>><<<>><<>><<>>>><<<>><<>><><>><>>>><<<><<<<>>><<<<>><<>><<>>><<<>><<<<>>>><<<<>>>><>>>><<>>>><<<<><<<>><<><>>>><>><<<>>><<<>>>><<<<>>>><<>><<<<>>>><<>>>><<<<>><<<>>>><<<><<<><<<<>>>><>><<<><<<<><<<<>>>><<>><<<<>>>><<<>>>><<<><>>>><<<>><<<><<>>>><<<<>><<>><<<>><<<>>>><<<>>><>>><<>>>><<<><>>><<<<>><<<><<<><<<<><<>>>><>>><>>>><>><<<><<<><<<>>>><><<><>>>><<<><<>>>><<<>><<<<>>>><<<>>>><>>><>><<<<>>><>><<><<<<>>>><<><><<<><>><<>>>><>>>><<<>>>><<>><<<<><<<><<><<<<>><><<<<><<<>><>><<<<><<<<>><<<>>><<>>>><<>><<<>>>><<>>><<><>>>><<<<><<><<>>>><<<>>>><<><<<>>><>><<<<><>><>><>>><<<<>><<<><<<>>>><<>>>><<>>><<<<>>>><<><<<<>>><<<><><>>><<<<>>><<<<>>>><<<<>>><><<<<><<<><<<<>>>><>>>><>>>><<<<>>><>>>><<<><<<>>><<><<<<><<<>>><<><<<>>>><<>><<><<<>>>><<<>>><<<<><<<>><<<<>>>><>>><<<<><>>><<<<>><<<<>>>><>><<<>>><>><<<<><<<><<<>>>><<<>>>><<<>>>><<<<><>><<<<><<<<><<>>><<<<>>><<<>>>><<<>>>><<>>><<<<><<<<>>>><<<>>>><<<>>>><>>><<<><<<<><>><<>>><<<>>>><<><>>><<<<><<><<>>><<>>>><>>><>>>><<>>>><<>>>><<<<>><<>>><<>>><<<><<>>>><<>>>><<<>>>><>>>><<>>><><<>>><<<>><<<>><<<><<<<>><<<><<<<><>><>>>><<>><<<>><>>><<>>>><<>>><><<<>>>><<<><>>>><<<<>><<<>>>><<<<>>><<<>>>><<>><<>><<>>>><<>>>><><<<><<<<>><<>>>><<<<>><>>>><<>>><<<>>><<>><>>>><<<>>><<<><<><<<<><><<><<<<>><<>><<>>>><><>>>><>>>><<<<>><<<>>><<<<>>>><<>><<<<>>>><<<<><<<><<<<>><>><><<<<><<<>>><<><>>><><<<<>>><<>><><<<<>>><<<<><><<<<><<<>>><><>>>><<<>><<<<>>>><<<>>>><<>>><>>>><>><>><><<<>>>><<><><>><<>><<<<>>><<<<>>><<<>>>><<<<>><<>><<<<><>>><>>><>><<>>>><>>>><<<<>><<>>><<<<><<<>>><<<<>><>>><<>>>><<<>>><>>><<>><<<>>>><<<>>><<><><<<>>>><<<>>>><<<<>>>><<<>>><<<>>>><<>>>><<>><<<>>><<<<>><<<>>>><<>><<<>>>><<<>><><<<>><<><>>>><<<<>><>>>><>><>><<>>><><<><>><<<<>><<<>><<>>>><<<<>><><<>>><<<<><<<><>>><<<>>>><<><<>><>>><<<<>>>><<><<<>><<<><<>>><<<<><<<<>><<<<>>>><><<>>>><<<>>><<<>>><>><>>><<<>>><>>><><<<<>>><<<<>>>><<><>><><<><<<<>>><<<<>>>><<<<>>>><<<<>><<<><>>><<<>><<<<>>>><>>><<<>><>>>><<<><<>>><<<<><<<>>><<>>>><<><<<>>>><<<>><>>>><<>>>><>>><<<<>><<><<<>><<<>>>><<><>><<>>>><<<<>>><<<<>>><<<<>><>>>><<<<>>><<>><<<<>>><<<>>>><>>><<>>><<<<>><<<><<<<>>>><<<><<><>>>><>>>><<<<>><<<>>><>><<<<>>><><<>>>><<>>><><<>>><><<>><<><<>><<<<><<<<>>><<>><<>>><>><>><<>>><<><<>><<>><<<>>><<>>><<>><<>>>><><<<<>><<<<>>>><<<>><>><<<><<><>>>><<<<>>>><>><<<<>><><>>><<><<<<><<<>>><<<>><<>>><>>><<>>>><<<>><<<><<>>>><<<>>><<<<>>>><<<<>>>><<<>><<<<><>>><<<<>>><>>>><<<<>>><<<>>><<<>><<>>>><<>><<<<>>><<>><<<>>><<<<>><<<><<>>>><<<>><<<<><>>><<<>>>><<>>><<>><<><<<>>>><<<>>><<>><<<>>><<<<>>><<<>><><<<<>><><<<>>>><><<<>>><<>>><<>><<>><<<<><<<<>>>><<><<<>>>><<<>><<>>><<<>>>><><<<>><<>>>><<<<><<<>><<>><<<<>><<><<>>><>>><<<><<<<>>><<<>><<<<>><>><<<>>><<<<><<<<><<<>>><<<<>>><<>>>><<>><<<<><<>><>>><<>>>><>>>><<><<<>>>><<<>>><><<>>>><<<<>><<<>>><><<>>>><<><<<>>>><<<>><<<>>>><><<<><<>>>><<<>><>>><><><<<<>><<>><>>><<<<>>><<><<><<<><<<>>><<<>><<<>><<<>><<>>><>>><<<<><<<<>>>><<><<<><<<<><<<<><<<>><>>><<<>>><<<><<<>>><>>>><<>>>><>>><<<<><<<<>>><<<>><<<>><>>>><<<>><<<<>>>><<<<><>>><>>>><<<<>>>><<<<>><<<>>>><<<>>><<<<>><<<><<<>>>><<>>><<>>><>>>><><>>><<<<>>><<<>>>><>>><<<<>><>>>><<<<>><>>>><>>><><>><<>>>><<><><<><<<>>>><<<<>>><<>>><<<<>><><<<>><>><<<><<>>><<<>>>><<>><<<>>>><<<<>><<>><<<>><<<>>>><<<<>><>><<<><<<<>>>><<>>>><<><<<<><<<><<<<><<<<>><><>>>><<<<><>>>><<<><<<><>>>><<<<>>>><>>>><<<<>>>><<<>><>>>><<>>>><<<>>><>><<>>>><<<<>><<<><<<>><<>>>><<>>><<<<>>><<><<<>>><<<>><<<<>>>><<<<>><<>><>>>><><><>>>><<>>><>>>><<>>>><<<>>>><><<>>><<><><<<><<<><<<>><><<>>><<>>><<<<>>>><>>>><<>><<<<>><<<>>>><<<<>>><<>>><<>><>>><<<<><>>>><<<>>>><<<>>><>>><<><<<>>><>>><<><<<<>><<<>>>><<<>>>><<<<>>><<<<><<<>>>><><><<<<>>>><<<>>>><<<<>>><<<>><<<<><<>><<>><>><>><>><<>><<<><<<<>>><<>>><<>>>><>>>><>>>><<<<>><<<>>>><<<>>><<<<>>><>>>><<<>>><><<><<<<>><<<>>><<>><>><<><<<>><<<<>>>><<<>>><<<<>>><>>>><<<>>><<>><<>><<<<>><<<><<<>>>><<<<>><<<><>>>><<<<>>>><>><>><<>><<<<>>><>>><<>>><<<>>>><<<<>><<<>>>><>>><<<<>>>><>>><<<><<<><<<>>>><>>>><>><<<<><<<>><<<<>><<>><<<>>><<<>>>><<<<><<<>><<>><>><<<>>>><<>>><<><<<<><<<>>>><<<<>>>><<>>>><<<<>>><<<<>><<>><<<<>>>><><<<><<><>>><<<><<<<>>>><><<><>>>><<>><>>><><<<>>><<><<>>><<<<>>><><><<<>>><>><<<><<<<><<<>>>><>>>><>>>><<<>>>><<><<<>>><><><<<<>><<<>>>><<<<>>>><<<<><<>><<<><><>>><>>>><<<>>><<<>><<>><<<>><>><<><>>>><>><<<<><<<<>>>><<<<><<<><<>><>>>><><<<><<<>><<><<>>><<<<>>>><<<>>>><>><>><<>>><<<>><<>>>><>>><<>><<>>>><<>>>><<>>><<<><<<<>>>><>><>>>><<>>><><<<>><>><>>>><<<<>>><<><<<><>><><>>>><<>>><<>>>><<>>><<>>><<<><<<>><<<>><<<><<<>>><><<<>>>><<>><<<><<<<>><<<><>>>><>>><<<><<<<><>>>><<<>>><>>>><<<>>>><<<<>>><>>><<<>>>><<>><><<><<<<>>>><<>><<<<>>>><><>>>><>>><><<<<>>><<><<<<>>><<<<>>>><<<<>><<<<>>>><>><<<<><>>><><<<<>>><<>><>>><<<>><<<<>>><<<<><<>><<>><>>>><<<<>><<<<><<>><>>>><<<>><<<<>>><<>>><<<<>>><<<<><<<<><>>>><<<<>>><<>><<<<>>>><<<<>>>><<<<>>>><<<>>>><<<>>><<<>>>><<<><>><><<<<><<<>>>><>>><<<<><<<<>>><<<<>>>><<<<>><>><<>>><>>>><<>>>><<<><<<>>>><<<>>>><<><>>>><<>><>>>><<>>><<<>>>><<<>><<><>>>><<<<>>>><><<>><<><<<<>>><<<<>>><<<<>>><>>>><<<>><<><<>><<><<<>>><<<<><<<<><<<<><>><<<<>>>><<>>>><<<<><<<>><<>>><><<>><<<>>>><<<<>>><<>>>><>>><<<<><<<<>>>><<>>>><>><><<<<>>><>><<<<>><<<<>><<<>><<>>>><<<>><<<>><<<><<>><<<<>>>><<<<>><<<<><<<<><<>>><<>>><<<<>>>><><>>>><<<><<<>>><>><<<<>>>><<>>>><<>>>><<>><<<><>><<<><<>>>><>><<<<>><>>>><<>><<>>>><>><>>>><><<<<>>><<>>>><<<<>>><>><<>>>><>>><<<><>>><<<><>>>><>>>><<<>><<>>><>><<<<><<<<>><<<>>><<<<>>><<<>><<<>><>><<<<>><<>>>><<>>><<<>>><<<><>>>><<>><>>><<<>>>><<<<>><<<>>>><<<>>>><><<><<<>>><<<<><<>><>>><<>>><<<>>><<>><<<><<<<>><<<<><<>>>><<<<>>>><<<<>>><<<><>>><<>><>><<<><<<>>>><<<>>><<>><<>><<<>>><>>><<<>>>><<<>>><<<>><<<>><>>><<>>><<>>>><<<><<<>>>><<>>><<<<>>>><<<>><>><<<<>>>><<<<>>><<<>><<<><<<>>>><>>><<<>><><<>><<<<>>>><<<><<<><<<>>>><><>>>><<<>><<<>>><<>>>><<><<<>>>><<<<><<>>><<<<>>>><<><>>><<<>>><<<>>>><<<<><<>>><<<<>>>><>>>><<<>><<<<><>>>><<>><<>><<<<><>>><<<><<<<><<<>>>><<<<>>><<>>><>><><>>><<<<><<><<<<>>>><<<<>>><<<><<<><<<><><<>><<<>><<>><>>><<>>><<>><<<>><<<<>>>><<<<>><>>>><<<<><<>>>><>><<<>>><<<>>>><>>><<<><<<<><<<>><<<>><<<<>>>><<>>><<<>>>><<>>>><<<<>>>><<>>>><<>><<<>>>><<<<>>><<<<><<<<>>><<>>>><<<>>>><<>>>><>>><<>>><<<<>><<<<>>><>>><<<<>>><><<<<>>><<<<>>><><><<>>>><<<<>>><<<<>>><>><<<<>><<>>><<<<>><>><<>><<<>>>><<<<>>>><><<>>>><<<<>>><<<>>><>>>><<<<>>><<<>>><<>><<<<>>>><>><>><<<>>><<<>>>><<><<>><<<<><>>><><<<><>>>><>>>><<<>>><<<>>>><<>>>><<<>>><<<>><<><>>>><<<>>>><<><<><>>><<<<><>><<>><><<>>>><<<<>>><>>><>>><<>>><<<<><>>><>>><>><<<<>><><<<<>>>><<<>>><<>>>><<>>><<<<><<><<<><<<>>>><<<>>>><<<<>>><<<>>><<<<>><>>><<>><>>>><<<<><>><<>>>><<>>>><<<>>><<<<>>>><<>>>><<><<<><<<<>>>><<>>>><<<><<<>>>><<<>>><<<<>><<<>>><<<>><<>><<<<>><<<>>>><<>>>><<<<>>>><<><>>><<>><<<>>><<<>>>><<<<>><<><<<<>><>>>><<>>>><>><<><<>>><><<>><<<<>>><<>>>><<<>>><<>><<>><>><><<><<<><<<<>>><<>>><<><<>>>><<<>><<>><<<>><<>><<<<>><<>>><<>><>>><<>><<>>>><<<<>>>><>><><>>>><>><<>>>><>>><>>>><<<><<<<>><>><>>>><<>>><<<<>>>><<<<>>><<<<>><<>>>><<<<>>><<<>><<<>>>><>>>><<>>><<>>>><>><<<<>>><><<<>>>><<<>><>>><<<<><><<>><<>>>><>>>><<>><><<<>>><>>><<<<>><<>><<<<>><>>><<>>>><<<<>>>><<<<><<<<>>><><<<>>><>><<<>><<<<>><<>>><<<<><<<>>>><<>>><<<<>><>>>><<>>>><<<<>><<<<>><<<>><<<<>>><>>>><<>><<><>><>>><<>>>><<<>>><<<>>><>>><>>><<<>><<<><<><<<<>><<><>>><>>><<<>>><<<>>><>>><<<<>>><<>><<<>>>><<<>>><<<<>>>><<<<>>><><<<>><>>><<<>>>><<>>>><<><>><<>><<<>>><><<<>><<>>><<<<>>><>><<<<><><>>><>><>>><>>><<>>>><<<><<<<>>><>>>><<>><>><<<<>><<<>>><<>>>><<>>>><><<>>><<<><<<<>><<>>>><>>>><<<>>><<>>><<>><<>>>><<<>>>><<<<>><<<><<<>>>><<<<>>>><<<<>>><><<>>><>><><<<<>>>><<<<><<>>>><>>>><<<<>><<<>><<<>>><><<<<><<<<><<<<><<<>>><<<<><<<<>>>><<><<><<<>>>><>>>><>><<<<>>><>>><<<<>>>><>>><<<<>><<><<<<>>>><<<<><<<<>>>><<<>>><><<<<>>>><<<<><<><<<<>><><<><>>><>><<<<>>><<<<>>><<<<><>>>><<>>>><<<<>>>><<<>><<><<>><<>>><<>>>><<<>><>>><<><<<<><<<><<<>><<><>>><>>><<<>>>><<<<>>><>>><<>>><>><<<<><<<>>><<>>>><<<>><<<>>>><<<<>>>><<<<>>>><<<>><>>><<<>><<><<<<>><<>><<>><<>>><><<<>><<<<>>>><<>>><<>>>><<><<>>>><>>><<<><><<>>>><>>><>>><><<><<><<<>><<<>><<<<>><><<<<>>>><<>><<>>><<>>><>>><>><<<<>>><>><>><<<><<<>>>><<<<>><<<>>><<<><<<><<<<>>><>>><>>>><<><<<<>><<><<>><>>><<<>><<>>>><<<<>>><<>>>><<><<<<>><>>>><<<<>><>>>><<<<><<>>><<<>>>><<<><<<>>>><<><<<>><<>><<>><<<>><<<>><>>>><<<>>>><>>><<<<>>>><<><><<>><<<<><>>><<<<>><<<><>>>><><<<<>>><<<><<<>>>><<<<>>><<<<>>><<<>>><<<<>><><<<>>><<>>><><<<<>>><<>>><<<<><<<<>><<>>><>>>><<<><<>><<<<>>>><<<<>>><<<<>><><<>>><<<<>>>><<>>><<<<><<><>>>><<<<>>>> diff --git a/inputs/input.18 b/inputs/input.18 new file mode 100644 index 0000000..b28f2a4 --- /dev/null +++ b/inputs/input.18 @@ -0,0 +1,2192 @@ +5,5,8 +11,3,7 +16,12,9 +10,5,17 +7,4,14 +13,4,4 +16,10,11 +2,8,10 +4,12,8 +17,7,7 +3,13,4 +7,14,4 +7,8,2 +8,5,4 +12,17,6 +12,10,18 +7,4,15 +15,13,6 +16,8,6 +10,16,6 +12,7,4 +9,15,16 +9,9,2 +3,8,8 +16,11,14 +18,9,13 +3,7,10 +4,16,11 +5,16,9 +12,15,13 +13,2,7 +17,11,12 +5,11,15 +5,13,3 +8,2,11 +2,7,11 +12,15,5 +6,14,16 +4,10,6 +4,8,15 +12,2,14 +16,12,7 +6,17,9 +8,5,14 +10,16,7 +14,4,5 +10,12,18 +16,12,13 +9,2,14 +12,9,3 +7,13,15 +16,14,11 +6,5,4 +5,17,11 +17,12,7 +11,14,3 +14,5,12 +5,9,7 +15,4,8 +7,3,9 +11,2,13 +12,9,2 +10,17,7 +6,2,9 +12,16,7 +11,18,9 +16,6,14 +5,13,13 +12,14,4 +6,15,15 +8,4,15 +8,10,17 +16,9,14 +8,15,4 +16,11,15 +12,2,7 +10,2,6 +13,15,5 +9,9,18 +16,7,11 +12,16,5 +8,10,18 +4,15,11 +10,5,2 +9,17,4 +10,6,2 +12,10,16 +17,10,8 +9,6,15 +14,11,3 +8,6,15 +3,6,10 +18,12,12 +6,10,2 +11,5,4 +10,12,3 +18,7,8 +5,13,14 +11,11,3 +14,17,11 +9,5,3 +7,5,12 +2,10,9 +7,9,1 +8,7,2 +12,17,11 +3,12,13 +15,14,8 +12,2,15 +8,5,3 +8,5,15 +14,13,12 +6,17,8 +12,16,9 +15,13,8 +9,1,10 +17,6,6 +10,5,13 +2,8,13 +14,3,7 +9,17,6 +3,7,5 +2,14,11 +13,15,14 +15,4,15 +7,11,18 +2,9,9 +10,3,8 +16,12,10 +4,4,7 +8,11,2 +16,6,7 +2,7,6 +11,6,3 +17,14,10 +11,9,18 +6,13,14 +13,13,3 +17,6,8 +3,6,12 +5,15,7 +9,18,11 +4,8,5 +8,2,8 +7,15,14 +12,6,17 +14,10,5 +2,11,11 +7,3,13 +2,8,9 +14,11,13 +10,16,13 +10,1,11 +2,13,8 +9,3,4 +15,7,5 +13,8,3 +5,4,14 +17,8,6 +17,5,11 +15,8,3 +4,13,3 +15,10,15 +9,6,17 +17,8,9 +15,13,12 +13,17,9 +13,17,8 +9,9,17 +14,9,3 +3,6,9 +17,6,9 +8,2,7 +12,5,4 +7,18,7 +4,15,6 +10,6,3 +11,12,1 +12,4,4 +8,6,2 +13,15,9 +12,11,1 +3,11,13 +11,2,12 +4,9,3 +4,11,3 +18,10,12 +4,7,11 +14,10,16 +11,3,14 +14,8,4 +10,1,8 +14,7,4 +11,17,12 +4,4,6 +7,14,16 +15,11,4 +17,7,13 +14,12,3 +15,16,11 +16,6,9 +6,16,12 +9,1,9 +10,17,11 +16,14,6 +13,13,15 +13,16,9 +15,5,5 +8,3,8 +1,10,8 +3,8,5 +3,6,15 +13,9,17 +6,16,13 +13,14,14 +7,3,4 +8,8,1 +11,3,11 +15,9,5 +5,3,11 +3,9,13 +5,2,6 +17,12,11 +5,2,11 +13,6,4 +7,10,17 +10,8,17 +3,10,14 +10,2,15 +14,4,13 +8,3,11 +3,15,9 +7,3,8 +10,2,8 +7,15,15 +16,14,8 +13,15,4 +4,10,14 +8,17,7 +10,12,17 +15,8,8 +9,4,3 +14,6,5 +4,15,12 +15,6,4 +16,8,13 +5,4,11 +9,7,17 +18,13,12 +5,16,11 +15,12,16 +11,4,14 +6,16,8 +3,5,11 +13,9,3 +9,15,4 +3,7,7 +12,6,3 +11,12,17 +5,11,16 +8,2,10 +7,6,17 +4,6,6 +17,5,8 +13,3,13 +7,16,14 +18,9,11 +11,5,3 +13,17,12 +4,4,9 +2,5,11 +11,13,15 +7,17,5 +4,14,11 +12,2,10 +13,12,16 +16,9,4 +10,9,18 +9,4,13 +15,15,7 +15,16,9 +14,14,6 +3,14,11 +16,7,7 +3,12,14 +4,13,7 +10,15,16 +11,16,14 +2,6,9 +13,9,1 +17,7,12 +18,8,9 +4,2,9 +14,14,13 +4,13,13 +11,4,7 +13,7,4 +6,9,2 +16,7,9 +4,4,15 +8,15,6 +16,8,8 +14,11,14 +7,2,8 +15,7,12 +3,9,3 +13,16,7 +8,16,15 +3,7,9 +3,4,9 +16,6,6 +12,3,4 +7,5,3 +4,8,4 +3,4,7 +5,12,4 +16,4,11 +4,14,10 +16,4,9 +15,12,6 +3,14,7 +15,5,13 +5,16,6 +13,4,10 +4,15,5 +7,17,10 +14,10,4 +16,8,4 +11,16,13 +8,17,11 +6,5,15 +17,13,8 +7,13,16 +8,16,14 +3,13,8 +18,11,10 +6,12,16 +12,5,3 +4,12,6 +4,11,13 +9,3,6 +7,18,12 +6,2,13 +2,9,10 +3,11,11 +13,4,7 +9,12,17 +12,9,1 +10,6,16 +7,3,10 +14,6,4 +15,14,6 +2,8,7 +13,10,3 +2,12,14 +3,13,12 +12,16,13 +17,8,10 +4,8,16 +3,13,13 +4,6,9 +6,3,7 +5,9,4 +3,15,11 +8,2,9 +8,15,14 +15,9,13 +3,8,11 +14,7,12 +12,3,9 +10,9,1 +14,5,15 +3,7,13 +11,10,2 +11,7,2 +14,5,14 +8,4,3 +11,1,14 +14,11,5 +2,9,15 +14,12,6 +6,6,2 +4,5,12 +8,5,2 +14,14,10 +6,12,15 +11,14,16 +10,11,17 +10,18,9 +8,15,5 +15,11,14 +10,8,2 +9,18,10 +5,12,3 +7,16,8 +4,7,15 +11,8,18 +7,6,4 +14,14,8 +12,4,14 +7,3,11 +4,16,8 +6,4,8 +11,5,15 +10,4,6 +16,14,10 +7,8,17 +15,5,4 +5,14,4 +10,14,14 +8,9,17 +11,5,5 +11,17,10 +4,9,15 +14,14,9 +13,3,15 +6,6,5 +7,16,10 +5,10,16 +3,4,10 +16,13,7 +11,15,2 +6,13,15 +6,15,12 +7,4,12 +10,3,3 +11,5,17 +9,13,4 +7,16,11 +12,16,10 +11,16,12 +13,7,3 +15,10,3 +1,8,8 +8,7,14 +5,16,12 +4,8,14 +15,8,16 +6,16,5 +17,6,10 +9,2,8 +2,10,6 +11,16,7 +16,8,5 +8,3,13 +3,13,6 +11,9,2 +5,7,3 +13,13,16 +12,3,8 +2,6,12 +16,5,7 +5,15,9 +7,18,11 +18,11,7 +9,6,14 +17,12,9 +16,5,8 +9,1,8 +4,5,7 +4,3,8 +15,15,11 +7,7,17 +1,9,8 +2,12,11 +5,11,13 +17,11,10 +14,6,2 +18,12,10 +15,11,11 +14,16,6 +12,14,15 +6,15,4 +3,9,16 +16,10,5 +5,16,13 +8,11,16 +15,10,7 +13,2,8 +14,13,16 +5,15,12 +15,5,11 +13,10,2 +10,3,4 +5,5,7 +8,15,9 +10,3,5 +10,8,16 +9,6,16 +14,5,11 +3,10,6 +16,11,8 +6,3,10 +3,11,5 +7,1,10 +12,15,8 +14,11,7 +11,18,10 +2,10,12 +7,14,15 +8,9,18 +9,8,17 +16,6,8 +13,11,17 +8,1,8 +9,12,5 +15,5,3 +16,8,14 +13,2,10 +6,16,9 +10,2,7 +14,13,5 +8,13,16 +7,10,2 +17,9,13 +7,5,4 +14,15,5 +16,13,9 +10,14,3 +11,11,17 +2,9,14 +16,5,10 +9,12,2 +6,3,11 +12,14,2 +11,3,6 +6,12,17 +13,5,15 +12,6,2 +4,2,8 +10,15,6 +5,6,13 +4,14,14 +15,7,4 +9,2,13 +6,17,10 +4,6,4 +3,11,4 +14,13,3 +9,16,14 +12,8,16 +12,2,13 +4,11,14 +5,7,5 +6,10,17 +18,8,11 +17,6,7 +3,11,7 +14,16,9 +13,6,3 +13,3,11 +11,12,2 +12,13,4 +12,5,14 +13,9,15 +8,12,17 +11,17,11 +6,6,17 +11,9,17 +10,18,7 +13,7,2 +7,6,16 +6,2,11 +10,4,10 +11,8,2 +4,7,7 +9,4,4 +5,13,15 +4,8,7 +17,14,9 +14,8,3 +7,12,3 +3,4,11 +13,15,8 +13,3,6 +12,17,13 +13,6,14 +4,11,16 +4,10,16 +13,13,12 +9,5,16 +15,6,5 +2,9,4 +6,4,14 +7,11,2 +3,12,5 +9,13,15 +13,2,11 +7,2,13 +9,15,15 +15,8,6 +14,10,15 +7,17,13 +14,16,10 +2,6,10 +5,4,8 +15,7,9 +1,11,9 +17,10,12 +15,3,10 +4,14,7 +10,9,16 +1,11,10 +8,1,9 +17,10,9 +7,17,6 +3,8,4 +14,14,12 +8,3,6 +8,7,17 +3,4,13 +14,12,15 +14,9,15 +16,13,8 +13,14,11 +10,4,14 +2,9,13 +7,15,4 +5,8,5 +9,11,16 +7,8,16 +6,14,3 +7,7,3 +10,15,5 +3,5,9 +7,4,10 +16,15,7 +3,6,7 +6,3,3 +17,10,5 +15,7,6 +8,14,4 +5,9,5 +15,5,7 +5,15,11 +14,14,14 +8,18,10 +10,15,13 +14,6,16 +16,12,5 +3,11,14 +7,17,12 +10,1,12 +1,7,11 +12,17,12 +6,7,3 +16,9,5 +15,9,16 +15,9,12 +2,13,7 +7,3,6 +6,1,9 +16,14,7 +6,5,17 +3,6,11 +12,17,10 +4,4,14 +6,18,9 +6,15,8 +12,1,6 +5,6,14 +6,13,3 +15,6,15 +12,2,11 +6,5,13 +7,2,12 +12,10,2 +16,15,6 +15,6,14 +9,11,2 +14,16,12 +6,17,6 +10,17,12 +5,14,5 +8,17,12 +8,3,5 +14,12,2 +11,12,3 +8,11,3 +1,13,11 +5,13,7 +4,14,4 +14,8,2 +18,10,9 +9,17,14 +12,16,12 +14,9,2 +13,4,5 +11,14,4 +6,9,17 +15,15,9 +5,4,13 +16,7,6 +10,13,17 +6,4,4 +8,12,18 +13,12,15 +15,11,6 +15,5,14 +17,9,10 +5,8,4 +13,11,3 +8,12,3 +14,15,6 +4,14,15 +9,2,10 +14,16,13 +13,12,4 +3,5,6 +11,8,17 +10,16,11 +6,11,3 +4,5,6 +13,3,10 +8,15,11 +14,16,11 +9,18,7 +4,6,16 +12,7,6 +6,8,17 +9,13,2 +15,12,7 +4,7,13 +14,3,9 +3,10,12 +14,3,10 +13,15,15 +7,9,16 +8,18,9 +15,13,14 +5,3,7 +4,14,12 +14,10,3 +6,2,8 +5,10,3 +1,10,11 +15,6,13 +6,9,4 +16,10,8 +9,15,14 +11,15,14 +17,8,8 +13,16,10 +5,10,4 +4,13,4 +15,3,8 +3,13,11 +10,4,15 +1,8,10 +10,5,3 +12,3,15 +6,2,5 +13,10,15 +10,8,15 +6,5,12 +1,8,13 +2,11,7 +17,13,6 +10,17,9 +3,9,15 +12,13,3 +10,17,4 +8,10,16 +4,10,11 +5,7,15 +8,14,15 +13,15,6 +1,9,6 +9,16,13 +11,15,8 +5,5,5 +15,4,10 +11,13,2 +9,5,5 +6,6,15 +3,7,6 +1,6,8 +4,11,4 +6,10,3 +10,11,15 +15,14,9 +6,17,7 +12,8,2 +3,11,16 +16,3,11 +4,14,13 +3,10,8 +9,16,9 +9,15,3 +15,10,5 +8,4,17 +7,5,15 +14,13,4 +5,6,3 +11,15,16 +11,16,5 +16,6,11 +5,14,6 +9,17,10 +12,2,12 +17,11,11 +12,5,13 +2,12,8 +15,12,4 +7,14,14 +15,4,9 +18,10,13 +10,16,4 +6,12,12 +6,7,15 +14,16,8 +8,15,7 +8,16,9 +10,8,1 +7,14,5 +4,6,7 +4,7,4 +16,13,6 +8,9,1 +13,7,15 +10,14,16 +15,5,9 +11,14,5 +14,4,15 +7,16,5 +8,9,2 +4,15,13 +13,3,9 +4,4,13 +11,1,8 +16,13,11 +4,6,14 +16,4,10 +9,4,16 +2,12,9 +14,5,3 +15,8,13 +12,14,16 +11,17,8 +14,15,14 +15,12,15 +6,11,18 +8,3,12 +6,5,6 +8,13,2 +9,16,4 +11,15,15 +14,5,4 +8,4,13 +3,16,10 +1,9,10 +17,15,11 +14,15,4 +9,17,7 +5,9,17 +6,8,14 +12,4,13 +15,5,10 +16,7,14 +8,16,6 +7,16,12 +4,4,11 +11,1,6 +16,14,9 +18,7,7 +12,18,6 +17,12,8 +14,4,8 +6,12,4 +14,15,12 +4,6,10 +15,4,12 +7,10,3 +13,3,7 +8,7,1 +16,12,4 +5,12,14 +9,10,2 +15,13,5 +9,16,8 +11,6,1 +11,17,6 +7,15,9 +9,7,18 +13,3,12 +8,16,12 +10,11,2 +14,11,4 +4,8,3 +6,13,17 +12,14,14 +8,3,14 +4,6,3 +11,12,15 +3,4,6 +3,8,12 +8,6,3 +17,9,7 +5,4,9 +4,4,12 +16,4,6 +12,11,17 +13,11,16 +12,18,9 +6,4,13 +9,7,4 +2,7,12 +4,10,7 +11,14,14 +14,4,9 +12,12,15 +11,11,15 +13,6,17 +6,11,2 +17,8,14 +14,15,7 +13,9,16 +16,10,10 +15,14,7 +4,5,14 +6,16,6 +7,5,14 +7,9,2 +3,12,8 +10,10,2 +4,7,6 +11,2,6 +5,6,15 +14,12,16 +15,3,12 +13,5,16 +10,3,7 +11,1,9 +13,4,11 +7,4,16 +10,2,5 +5,8,15 +8,6,6 +14,3,11 +14,7,14 +9,3,11 +2,7,10 +5,15,13 +13,15,7 +5,11,3 +4,17,10 +9,17,9 +4,13,12 +8,10,1 +11,6,16 +4,12,13 +2,11,10 +5,5,14 +16,13,5 +7,17,7 +9,12,16 +11,8,3 +5,15,10 +4,10,13 +9,16,6 +8,1,10 +3,6,8 +5,13,9 +9,3,14 +14,8,15 +12,8,17 +8,13,4 +4,6,5 +17,7,8 +16,11,5 +12,3,5 +1,9,9 +10,6,1 +2,10,13 +11,16,15 +8,6,16 +16,12,6 +13,4,16 +15,6,6 +11,11,2 +7,12,17 +10,16,15 +10,3,14 +3,13,7 +12,13,16 +3,6,6 +3,16,7 +5,10,15 +6,11,15 +16,10,13 +16,7,16 +6,11,16 +3,14,10 +7,16,9 +12,12,3 +10,4,3 +6,8,2 +15,11,15 +4,5,10 +14,5,13 +4,3,10 +11,15,13 +8,5,16 +16,13,14 +3,5,12 +2,11,9 +4,6,13 +7,17,9 +14,4,10 +3,5,15 +10,2,10 +16,7,13 +16,8,11 +15,14,4 +17,8,11 +9,13,3 +9,8,2 +11,6,15 +9,19,10 +4,10,3 +14,14,11 +9,4,5 +5,3,8 +8,3,4 +11,17,5 +11,18,11 +8,12,1 +14,11,17 +17,13,10 +8,4,5 +8,2,6 +6,6,3 +2,5,10 +13,5,4 +4,13,5 +3,8,15 +3,7,8 +15,6,7 +2,8,6 +12,15,14 +17,8,12 +12,18,11 +11,15,3 +9,3,7 +6,3,13 +13,14,7 +15,6,3 +6,10,18 +15,7,8 +16,10,6 +10,18,11 +10,12,16 +1,10,6 +4,5,9 +11,4,5 +5,14,16 +14,13,6 +14,3,5 +16,13,12 +13,18,8 +12,14,3 +5,3,13 +11,7,17 +16,9,7 +6,7,16 +12,3,11 +16,6,10 +9,9,3 +15,13,7 +6,16,15 +9,13,16 +9,11,17 +11,6,17 +9,1,7 +17,11,9 +7,12,14 +13,16,6 +13,6,16 +11,4,4 +2,4,10 +10,3,15 +8,12,2 +10,3,12 +10,9,17 +3,12,11 +3,7,14 +8,17,8 +10,17,8 +11,7,18 +2,12,12 +6,16,7 +3,9,12 +13,8,7 +11,10,16 +7,11,1 +13,4,6 +16,7,4 +5,5,11 +11,13,3 +8,17,14 +7,17,8 +17,10,6 +8,10,3 +9,14,3 +15,15,12 +2,8,11 +2,14,10 +1,12,6 +15,14,5 +6,2,10 +6,16,10 +11,2,8 +8,17,6 +5,10,7 +12,1,12 +10,2,9 +14,5,6 +10,14,15 +3,12,7 +8,4,16 +13,6,2 +4,12,2 +15,15,10 +9,8,1 +12,11,15 +2,10,11 +3,11,8 +15,14,13 +3,9,10 +16,4,8 +15,14,12 +4,14,5 +13,16,13 +7,17,11 +5,9,14 +2,13,11 +10,15,4 +4,5,11 +12,14,5 +12,7,2 +11,4,15 +5,16,10 +2,14,13 +5,15,6 +15,10,14 +2,11,13 +13,6,15 +5,14,14 +10,13,2 +6,3,8 +12,7,16 +16,7,15 +10,3,6 +14,17,7 +17,12,10 +18,9,10 +8,18,11 +10,2,13 +14,4,14 +2,10,8 +16,10,9 +5,16,5 +17,11,13 +4,15,8 +6,9,3 +4,11,6 +15,10,16 +11,3,5 +9,14,16 +7,2,7 +14,7,15 +4,3,9 +11,17,9 +11,3,13 +3,10,7 +8,16,5 +10,4,4 +14,8,16 +2,13,10 +5,9,15 +12,10,3 +3,14,9 +16,9,15 +1,8,9 +17,9,11 +6,2,7 +13,14,10 +16,12,14 +14,6,14 +15,16,12 +14,14,7 +9,10,1 +15,9,4 +5,5,12 +2,6,11 +3,5,8 +8,11,1 +16,6,13 +4,16,10 +9,5,17 +17,8,7 +14,7,16 +7,3,12 +13,10,17 +3,9,6 +9,3,15 +9,15,5 +17,10,7 +16,6,12 +14,4,7 +10,12,4 +15,15,5 +11,4,2 +16,14,12 +9,4,15 +14,17,10 +9,6,1 +6,15,6 +6,3,14 +3,9,7 +15,17,11 +8,8,16 +19,7,10 +1,8,11 +17,7,10 +14,13,15 +7,9,3 +8,2,12 +12,2,8 +7,6,13 +11,16,6 +12,11,2 +12,15,4 +11,14,15 +5,5,4 +12,17,8 +15,11,5 +13,3,5 +3,5,13 +11,3,16 +17,10,11 +10,14,4 +9,10,17 +6,3,6 +13,4,15 +3,7,11 +8,16,11 +11,18,8 +16,5,12 +16,7,8 +10,5,5 +14,11,15 +14,17,8 +13,17,7 +12,7,3 +9,12,18 +12,16,8 +3,11,3 +8,10,15 +13,12,2 +10,5,15 +5,3,9 +8,14,5 +17,11,7 +14,11,16 +8,18,8 +6,16,11 +8,8,17 +9,11,18 +3,6,13 +12,3,6 +11,3,15 +13,17,13 +7,1,11 +15,13,13 +2,9,11 +7,3,5 +6,17,11 +6,12,5 +11,3,4 +8,17,13 +17,9,6 +18,11,9 +17,13,7 +7,1,12 +11,11,16 +13,5,6 +4,9,12 +3,13,9 +9,11,3 +17,13,9 +10,7,18 +11,1,12 +18,12,11 +5,3,10 +7,1,8 +13,9,5 +8,11,18 +11,12,18 +5,7,14 +17,10,13 +17,11,14 +3,16,13 +2,8,12 +2,10,7 +5,4,10 +9,2,9 +12,3,13 +4,12,7 +12,5,17 +17,7,9 +9,17,12 +6,9,16 +15,10,6 +6,4,6 +10,16,14 +7,11,17 +11,9,1 +3,9,4 +4,15,7 +7,12,16 +4,15,9 +4,13,8 +6,5,5 +10,7,2 +4,9,16 +16,15,9 +2,9,8 +11,15,4 +14,6,6 +12,6,5 +7,4,3 +16,4,12 +9,14,17 +5,5,16 +3,10,4 +6,15,16 +14,14,5 +15,13,4 +7,13,3 +9,2,11 +8,3,9 +13,14,15 +4,9,13 +7,4,13 +10,10,18 +14,13,14 +10,13,16 +9,17,8 +7,11,15 +4,8,13 +11,17,7 +17,13,11 +15,9,3 +12,12,16 +15,16,10 +11,4,16 +3,12,6 +10,14,17 +6,14,4 +2,5,12 +12,13,17 +15,13,11 +15,6,9 +16,9,6 +6,7,17 +17,9,8 +16,7,5 +8,4,14 +9,4,14 +8,6,17 +5,2,8 +3,4,8 +13,4,8 +9,17,13 +6,15,5 +13,5,14 +9,9,1 +14,16,5 +3,11,12 +7,5,16 +12,7,17 +6,6,16 +4,10,17 +12,6,4 +14,4,6 +13,14,8 +8,16,7 +12,4,3 +6,2,12 +3,14,8 +4,7,16 +12,5,16 +10,15,8 +9,3,16 +12,2,6 +10,11,18 +16,10,15 +5,13,6 +5,11,2 +14,12,14 +14,2,11 +11,8,16 +8,8,3 +17,10,10 +4,14,8 +14,12,12 +9,19,7 +8,16,4 +10,15,14 +5,13,4 +13,11,15 +3,8,6 +9,14,6 +10,4,5 +7,9,17 +14,8,13 +13,6,5 +15,11,3 +12,6,16 +14,9,4 +4,7,3 +15,7,3 +5,14,13 +6,3,5 +4,15,10 +13,14,16 +13,17,6 +7,7,15 +15,16,5 +7,10,16 +9,11,1 +14,14,15 +15,16,7 +11,2,7 +12,8,3 +9,16,16 +6,6,13 +17,6,11 +15,6,10 +9,3,12 +7,2,5 +13,16,8 +10,17,5 +16,15,8 +8,5,12 +15,15,8 +14,10,17 +9,16,10 +13,3,8 +7,4,4 +17,9,12 +10,13,1 +4,13,9 +4,13,6 +5,11,5 +15,14,11 +4,12,4 +7,18,10 +15,14,10 +17,14,7 +13,4,14 +5,15,8 +16,12,12 +18,11,8 +14,10,2 +8,7,16 +16,13,10 +10,8,3 +1,11,11 +6,13,16 +17,7,5 +11,18,13 +13,2,12 +2,14,7 +10,14,5 +9,9,16 +13,5,13 +10,5,4 +6,13,2 +13,17,5 +9,17,5 +16,8,15 +7,14,3 +8,6,18 +4,8,6 +15,5,6 +11,3,10 +16,8,7 +11,15,5 +3,8,16 +12,15,15 +8,13,17 +13,7,16 +11,4,13 +6,5,3 +17,11,4 +6,14,15 +8,14,3 +6,15,13 +2,12,10 +9,18,12 +16,5,11 +3,9,14 +15,5,12 +7,12,4 +12,13,2 +10,17,10 +17,14,8 +4,9,5 +10,10,16 +10,3,10 +5,15,5 +9,3,5 +2,10,10 +4,14,9 +5,11,6 +11,1,7 +5,4,6 +5,6,4 +12,4,5 +12,17,7 +15,10,11 +4,10,4 +8,7,3 +15,3,9 +5,18,9 +5,14,8 +17,7,6 +7,6,2 +7,4,5 +5,6,5 +5,8,3 +15,7,15 +12,16,14 +7,8,3 +9,18,8 +2,6,13 +6,10,1 +7,7,2 +13,15,13 +7,15,13 +13,14,3 +9,18,5 +7,10,15 +3,9,8 +14,12,4 +10,1,6 +5,17,6 +7,4,7 +11,1,10 +14,5,8 +7,7,16 +5,17,12 +9,10,18 +8,11,17 +7,18,9 +3,6,5 +12,8,15 +14,3,12 +18,8,10 +7,15,2 +8,14,16 +9,8,3 +3,9,9 +8,16,16 +9,0,10 +15,8,12 +7,2,14 +6,16,14 +9,5,15 +3,12,4 +6,6,12 +5,13,12 +7,2,10 +3,10,16 +5,8,16 +4,10,15 +15,12,13 +11,17,13 +4,9,4 +12,6,12 +18,8,12 +11,9,3 +15,8,4 +6,8,3 +12,17,14 +15,3,11 +3,16,11 +5,17,9 +13,15,10 +5,11,4 +4,16,12 +10,9,4 +9,7,16 +12,15,10 +16,10,4 +15,12,12 +0,7,9 +8,3,10 +9,15,13 +13,2,6 +12,3,10 +3,11,6 +7,2,9 +11,16,3 +4,14,6 +10,17,6 +15,9,6 +7,15,11 +1,11,7 +16,5,9 +5,7,17 +4,17,11 +8,8,2 +8,3,7 +11,11,18 +5,3,12 +5,16,8 +8,10,2 +6,10,16 +12,12,2 +11,0,11 +13,13,5 +9,13,17 +4,11,5 +3,13,10 +7,8,18 +9,16,11 +5,2,7 +12,8,5 +7,13,2 +8,16,8 +12,12,1 +8,18,12 +14,9,6 +1,10,7 +18,7,10 +7,11,3 +3,14,14 +11,10,18 +5,14,12 +15,7,14 +6,3,9 +13,14,2 +13,7,17 +14,14,3 +15,6,16 +6,10,14 +14,1,10 +15,12,14 +9,15,6 +6,12,2 +5,7,4 +2,11,12 +8,7,6 +10,7,17 +12,11,18 +1,12,12 +14,6,13 +9,7,3 +16,5,6 +10,7,3 +14,14,4 +10,19,11 +2,13,14 +3,5,7 +9,2,5 +10,6,17 +4,12,12 +15,11,12 +8,15,16 +8,4,6 +10,7,16 +12,16,15 +6,8,4 +9,4,9 +13,2,13 +7,16,6 +15,5,15 +6,15,14 +16,16,11 +2,13,9 +16,11,4 +6,14,5 +18,5,10 +10,8,18 +11,10,17 +11,16,4 +9,3,13 +4,11,11 +14,14,16 +9,6,2 +12,12,17 +1,7,10 +13,4,13 +14,4,12 +2,15,12 +12,17,9 +5,6,7 +11,5,14 +6,5,16 +8,5,5 +18,11,6 +7,3,15 +4,12,5 +3,10,15 +8,15,13 +9,3,10 +18,7,12 +3,7,12 +3,9,5 +5,3,5 +9,7,2 +15,10,13 +10,12,2 +15,5,8 +13,16,11 +15,12,5 +10,2,12 +3,8,3 +2,7,9 +5,6,17 +4,12,15 +3,8,13 +13,4,12 +9,17,11 +10,15,9 +11,16,9 +5,5,15 +17,4,9 +1,9,7 +11,9,4 +11,13,16 +12,3,7 +1,10,10 +4,11,15 +11,5,13 +8,9,3 +11,16,10 +8,12,4 +13,11,4 +4,3,12 +10,10,3 +19,8,10 +4,9,8 +5,13,5 +17,10,15 +18,10,10 +16,9,8 +6,10,15 +10,17,13 +14,16,7 +16,10,12 +16,15,12 +7,13,14 +14,2,9 +9,2,6 +4,4,10 +16,9,11 +9,16,5 +1,10,9 +2,11,8 +13,9,4 +6,1,11 +7,17,14 +16,12,11 +12,11,16 +12,4,7 +13,18,9 +9,15,12 +4,5,8 +11,13,17 +5,12,15 +13,16,15 +9,14,5 +11,1,11 +8,16,10 +13,8,17 +9,18,9 +10,10,17 +12,5,15 +13,12,17 +12,15,6 +7,10,1 +7,7,1 +4,6,12 +3,14,12 +11,17,4 +12,12,4 +6,12,14 +9,13,12 +6,4,5 +9,1,12 +14,17,12 +15,9,15 +18,7,9 +3,10,5 +10,15,3 +5,2,10 +17,10,14 +9,5,13 +17,9,9 +14,9,16 +10,10,4 +5,2,13 +3,15,10 +12,16,4 +14,13,2 +9,1,6 +5,7,16 +7,16,15 +15,8,14 +3,12,9 +3,11,9 +9,10,3 +10,5,16 +11,14,13 +2,13,12 +8,13,3 +13,9,13 +4,6,15 +12,16,11 +10,3,13 +12,9,17 +12,4,16 +6,4,15 +3,16,6 +13,12,3 +8,14,2 +4,13,14 +7,14,13 +17,5,12 +7,15,7 +13,16,5 +17,12,5 +4,10,5 +9,2,7 +2,9,6 +6,14,17 +11,11,1 +9,6,18 +14,5,5 +13,10,16 +8,13,15 +5,5,6 +5,9,16 +2,6,8 +17,8,13 +8,7,18 +16,11,13 +16,15,10 +2,11,6 +17,10,4 +8,3,16 +13,13,4 +11,6,5 +6,4,9 +14,17,9 +12,1,10 +15,6,12 +3,8,7 +18,13,7 +16,15,14 +16,7,10 +8,4,4 +8,13,1 +12,8,18 +17,12,13 +11,7,4 +10,13,6 +1,13,9 +7,2,6 +17,5,6 +2,5,9 +12,4,6 +5,7,6 +17,6,13 +16,7,3 +7,6,15 +6,8,18 +9,14,2 +14,12,5 +8,4,12 +5,5,10 +5,8,14 +16,14,14 +2,6,7 +18,10,11 +14,2,10 +12,5,6 +5,8,17 +4,3,7 +8,15,2 +16,11,6 +12,16,6 +3,10,11 +7,6,3 +7,16,3 +14,3,8 +4,6,8 +12,1,9 +14,12,7 +14,13,7 +10,12,14 +9,12,1 +6,17,12 +14,5,16 +7,8,1 +18,8,13 +9,12,15 +6,12,7 +4,9,6 +6,7,4 +15,15,6 +3,7,4 +5,6,16 +12,6,6 +11,13,5 +18,8,8 +3,8,14 +13,11,2 +6,5,14 +8,16,13 +15,16,8 +5,3,14 +1,12,9 +7,13,5 +1,5,10 +15,13,9 +11,14,2 +13,5,12 +10,12,1 +15,14,15 +12,3,14 +6,12,3 +16,11,7 +5,10,2 +16,5,14 +3,12,10 +17,5,10 +16,16,7 +16,12,3 +2,7,7 +13,8,16 +5,6,6 +13,11,1 +13,1,10 +7,2,11 +9,3,9 +14,4,11 +12,10,4 +10,16,10 +5,16,7 +16,12,8 +17,11,6 +10,9,3 +9,14,15 +9,1,11 +2,7,5 +11,2,15 +13,7,5 +15,11,8 +4,9,14 +1,12,10 +10,1,10 +3,5,10 +8,12,16 +7,16,13 +15,11,17 +7,15,3 +2,15,11 +6,4,11 +15,4,7 +1,9,11 +10,15,15 +14,15,9 +14,10,14 +16,11,12 +6,3,12 +17,7,11 +16,8,9 +2,14,8 +3,5,5 +2,9,12 +5,4,15 +5,4,7 +13,14,5 +14,5,10 +15,8,5 +14,15,8 +16,6,3 +15,9,14 +16,9,16 +12,13,14 +15,15,13 +11,2,9 +13,13,13 +5,14,7 +8,9,16 +11,7,3 +14,16,14 +6,14,10 +15,4,11 +2,8,15 +1,12,11 +10,18,6 +9,2,15 +4,13,15 +11,4,3 +11,5,2 +7,17,4 +5,12,17 +9,16,3 +5,11,14 +13,9,18 +13,2,9 +11,3,12 +7,13,18 +12,9,18 +14,6,7 +16,9,10 +12,15,9 +3,3,10 +14,8,5 +13,5,2 +3,10,13 +16,11,11 +3,7,15 +6,4,12 +10,1,7 +7,16,7 +15,4,6 +7,3,7 +13,8,4 +11,8,1 +7,15,6 +8,17,4 +11,15,12 +9,15,8 +16,8,10 +6,10,4 +8,18,7 +13,13,2 +6,14,14 +10,6,4 +7,16,4 +2,9,7 +6,7,5 +12,7,15 +7,12,2 +8,8,18 +16,13,13 +4,12,14 +17,9,4 +7,12,15 +5,5,9 +1,12,13 +5,14,15 +12,9,16 +18,11,12 +18,10,8 +17,11,8 +4,7,12 +12,10,1 +12,15,2 +15,4,13 +11,4,6 +4,4,8 +10,2,11 +8,3,15 +7,6,1 +10,15,7 +15,12,3 +10,4,16 +9,2,4 +1,8,7 +6,13,4 +10,6,18 +11,17,14 +7,8,5 +16,5,5 +11,5,16 +5,5,13 +6,6,14 +14,9,17 +2,5,6 +17,9,16 +17,12,6 +6,15,3 +14,15,11 +1,10,12 +13,14,13 +4,2,11 +7,4,6 +9,2,12 +4,7,5 +2,8,4 +13,8,2 +15,12,10 +5,10,17 +2,5,8 +15,10,4 +11,16,8 +13,5,5 +14,15,10 +12,3,16 +18,14,8 +11,18,7 +11,5,6 +13,17,11 +3,7,16 +10,13,3 +16,4,7 +5,13,17 +3,15,7 +4,15,14 +13,10,18 +6,15,7 +5,4,12 +15,7,7 +14,5,7 +11,18,12 +14,13,13 +6,9,18 +4,5,15 +16,9,13 +6,8,16 +3,15,8 +6,14,6 +8,5,13 +8,17,5 +13,14,6 +5,12,16 +13,18,6 +4,5,13 +10,9,2 +9,8,16 +11,18,6 +8,7,15 +14,8,6 +4,7,14 +14,8,14 +4,12,9 +5,12,8 +13,14,9 +12,3,12 +14,6,15 +12,4,15 +5,12,5 +8,17,9 +11,16,16 +9,1,5 +12,1,11 +17,9,14 +5,17,10 +17,6,12 +10,4,17 +4,8,12 +16,10,14 +2,14,12 +2,7,8 +3,14,13 +5,14,10 +13,16,14 +5,9,3 +7,3,14 +7,15,5 +11,12,16 +6,2,6 +13,17,10 +3,4,12 +11,9,16 +15,3,4 +8,2,14 +5,4,5 +13,7,18 +7,13,4 +4,8,8 +5,3,6 +13,14,17 +8,2,5 +7,9,15 +8,2,4 +9,6,4 +12,11,3 +10,18,8 +4,12,16 +5,17,7 +10,13,4 +5,10,14 +10,13,5 diff --git a/inputs/input.19 b/inputs/input.19 new file mode 100644 index 0000000..b68cf1b --- /dev/null +++ b/inputs/input.19 @@ -0,0 +1,30 @@ +Blueprint 1: Each ore robot costs 3 ore. Each clay robot costs 4 ore. Each obsidian robot costs 3 ore and 18 clay. Each geode robot costs 4 ore and 19 obsidian. +Blueprint 2: Each ore robot costs 2 ore. Each clay robot costs 4 ore. Each obsidian robot costs 3 ore and 19 clay. Each geode robot costs 4 ore and 12 obsidian. +Blueprint 3: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 12 clay. Each geode robot costs 3 ore and 8 obsidian. +Blueprint 4: Each ore robot costs 2 ore. Each clay robot costs 4 ore. Each obsidian robot costs 3 ore and 19 clay. Each geode robot costs 4 ore and 13 obsidian. +Blueprint 5: Each ore robot costs 2 ore. Each clay robot costs 3 ore. Each obsidian robot costs 3 ore and 17 clay. Each geode robot costs 3 ore and 10 obsidian. +Blueprint 6: Each ore robot costs 3 ore. Each clay robot costs 3 ore. Each obsidian robot costs 3 ore and 17 clay. Each geode robot costs 4 ore and 8 obsidian. +Blueprint 7: Each ore robot costs 4 ore. Each clay robot costs 3 ore. Each obsidian robot costs 3 ore and 7 clay. Each geode robot costs 2 ore and 7 obsidian. +Blueprint 8: Each ore robot costs 3 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 6 clay. Each geode robot costs 3 ore and 16 obsidian. +Blueprint 9: Each ore robot costs 3 ore. Each clay robot costs 3 ore. Each obsidian robot costs 3 ore and 19 clay. Each geode robot costs 3 ore and 17 obsidian. +Blueprint 10: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 9 clay. Each geode robot costs 4 ore and 16 obsidian. +Blueprint 11: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 2 ore and 7 clay. Each geode robot costs 4 ore and 18 obsidian. +Blueprint 12: Each ore robot costs 3 ore. Each clay robot costs 3 ore. Each obsidian robot costs 3 ore and 20 clay. Each geode robot costs 2 ore and 12 obsidian. +Blueprint 13: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 3 ore and 5 clay. Each geode robot costs 3 ore and 18 obsidian. +Blueprint 14: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 3 ore and 7 clay. Each geode robot costs 4 ore and 11 obsidian. +Blueprint 15: Each ore robot costs 4 ore. Each clay robot costs 3 ore. Each obsidian robot costs 2 ore and 14 clay. Each geode robot costs 2 ore and 7 obsidian. +Blueprint 16: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 3 ore and 7 clay. Each geode robot costs 3 ore and 20 obsidian. +Blueprint 17: Each ore robot costs 2 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 18 clay. Each geode robot costs 2 ore and 11 obsidian. +Blueprint 18: Each ore robot costs 2 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 17 clay. Each geode robot costs 3 ore and 11 obsidian. +Blueprint 19: Each ore robot costs 2 ore. Each clay robot costs 4 ore. Each obsidian robot costs 2 ore and 20 clay. Each geode robot costs 2 ore and 17 obsidian. +Blueprint 20: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 5 clay. Each geode robot costs 3 ore and 7 obsidian. +Blueprint 21: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 15 clay. Each geode robot costs 4 ore and 17 obsidian. +Blueprint 22: Each ore robot costs 4 ore. Each clay robot costs 3 ore. Each obsidian robot costs 3 ore and 15 clay. Each geode robot costs 2 ore and 13 obsidian. +Blueprint 23: Each ore robot costs 3 ore. Each clay robot costs 3 ore. Each obsidian robot costs 2 ore and 16 clay. Each geode robot costs 3 ore and 14 obsidian. +Blueprint 24: Each ore robot costs 4 ore. Each clay robot costs 3 ore. Each obsidian robot costs 4 ore and 5 clay. Each geode robot costs 3 ore and 10 obsidian. +Blueprint 25: Each ore robot costs 3 ore. Each clay robot costs 3 ore. Each obsidian robot costs 2 ore and 20 clay. Each geode robot costs 2 ore and 20 obsidian. +Blueprint 26: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 14 clay. Each geode robot costs 2 ore and 16 obsidian. +Blueprint 27: Each ore robot costs 3 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 8 clay. Each geode robot costs 2 ore and 10 obsidian. +Blueprint 28: Each ore robot costs 3 ore. Each clay robot costs 3 ore. Each obsidian robot costs 3 ore and 8 clay. Each geode robot costs 2 ore and 12 obsidian. +Blueprint 29: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 8 clay. Each geode robot costs 2 ore and 15 obsidian. +Blueprint 30: Each ore robot costs 3 ore. Each clay robot costs 3 ore. Each obsidian robot costs 2 ore and 7 clay. Each geode robot costs 2 ore and 9 obsidian. diff --git a/inputs/input.2 b/inputs/input.2 new file mode 100644 index 0000000..1485a1d --- /dev/null +++ b/inputs/input.2 @@ -0,0 +1,2500 @@ +A X +C X +C X +C X +B Y +C X +C X +A Z +C X +A Z +A Z +C X +C X +C X +B X +C Y +C X +C Y +C X +A Z +C X +C X +C X +C Y +C Y +C Y +A Z +C X +A Y +B Z +B Y +C X +C X +A X +C X +C Z +C Y +C Y +C Y +C Y +B X +C Y +A Z +C Y +B X +A X +A X +C X +C Y +B X +C Y +C X +C X +C Y +A X +C Y +A Z +A Z +C Y +C X +A Y +C Y +A X +C X +C Z +A X +A X +C Y +C Y +C X +C Y +B X +C X +C Y +C Z +A X +C X +C Y +C X +C X +C X +C X +C Y +B Z +C X +A Y +B X +C X +C Y +C Y +C X +C Y +C X +C Y +B X +A X +B X +C Y +A X +C X +A X +C X +C X +C Y +C X +C X +C X +C Y +C X +C X +C X +C Y +A X +C X +A Z +B X +A Z +C X +C X +A Z +C X +A Z +A X +C Y +B X +C Y +B Y +A Z +C Y +A X +C X +A X +C Z +C Y +C X +A X +C Y +C Y +A Y +A X +C Z +C X +B Z +A X +C X +C X +A Y +A Y +A X +C Y +B X +C Y +C Y +C X +C Y +C Y +C X +C X +C X +C Y +C Y +C Y +C Z +A X +C X +C X +C X +C Z +C X +B X +C X +C X +C X +B Y +B X +C X +C Y +C Y +C Z +C Y +C X +C Y +C Y +C X +C X +A X +C Y +C X +C Y +C Y +B Y +C Y +C Y +B X +B X +B X +C Z +C X +A X +C X +A X +C Y +C Z +B X +B X +C X +B X +C Y +C X +A Z +C Y +A X +B Y +C X +C Y +A X +C X +C Y +C Y +C Y +C Y +C Y +A Z +A Z +C X +C X +C Y +C X +C Z +A X +C Y +C Y +B X +C Y +C X +C X +C X +B X +B X +C X +C Y +A Y +C Y +C Y +C Y +B X +B X +C X +C X +A Y +C X +C X +C Y +B X +C X +C X +C X +A X +B Y +C Z +C Z +B X +C X +C X +C X +C Y +C Y +C Y +C Y +A Y +B X +C X +C Z +C X +C Y +C X +C Y +C Y +C Y +C X +C X +A X +A X +C Y +A X +A X +C X +C Y +B Z +C Z +C X +C X +C X +C Y +B X +C Y +C Y +C Y +C X +C Y +C Y +C X +C X +C X +C Z +C X +C Y +C Y +C Z +A X +C X +B X +C Z +C Y +B X +C Y +C Z +B Z +A X +C X +B X +A Y +C Y +C X +C Y +C Y +C Y +C Y +C X +C Y +A Y +C Y +C Y +C Y +C Z +C X +C Y +B Z +C Y +C X +C X +A X +C X +C Y +C X +B Y +C Y +C Z +C Z +A X +C X +A X +C Y +B X +C Y +C Y +C X +C Y +C X +A Y +C Y +C Y +B X +C X +C Y +C X +C Z +C Y +C Y +C Y +B Y +A X +C Y +C Z +C X +C Z +A Z +C X +C Y +C X +A X +C X +A Y +B Y +A X +A X +A X +C Z +C Z +C X +C Y +B X +A X +A X +C Y +C X +C Z +A Z +B Y +B Z +B Y +A X +B Y +C X +C X +C Z +C X +C X +C Y +B X +C X +C Z +B X +C Y +C X +C X +A X +C X +B Y +C Y +B Z +C Y +B Y +C Y +B Y +C Y +B X +C X +C Z +C X +C Y +C Y +C X +A X +C Y +C X +C X +C Z +C X +C Y +C X +C Y +B Y +C Y +C X +C Y +C X +C X +C X +C X +B X +C Z +C X +C X +B X +B X +A X +A Z +C X +C Y +C X +C X +C X +C Y +C Y +C X +C X +C X +A X +C X +C X +C X +C X +A Y +C Y +C X +A Z +C X +C Y +C Y +C X +A X +C X +C X +C Y +C X +C X +C Y +C Y +B Y +C Y +C X +A Y +C X +C X +C Y +B Y +C X +C Y +A X +B X +C X +B Y +C Y +C Z +C Z +A X +C X +C X +C Y +B X +C Y +C Y +C Y +A Z +C X +C Y +C X +A Z +C Y +B Y +A X +C Y +B X +C Y +B Y +C X +C X +C X +C Y +C X +B X +C X +C X +A X +C Y +A X +C X +A Z +C Y +C X +C Y +C X +C Y +B Y +C Z +C Y +C Z +A X +C X +C X +C Z +C Y +C X +B Y +A X +C Y +A X +B Y +A X +A X +B Y +C X +C X +C X +C Y +C X +B X +C Y +C Y +C X +B X +B Y +B Y +C Y +B Y +A Z +B Z +A Y +C X +C X +C X +B X +C X +C X +C X +C Y +A X +C Y +C Y +C Z +B X +B Y +C X +C Y +A X +C Z +C Y +C Z +C Y +A Z +C Z +C Y +B Y +C Y +B X +C X +C Y +C Y +A Z +A Y +C Y +C Y +A Y +C Y +C X +C Y +C X +C Y +C Y +B Y +C X +B X +C Y +A Y +C Y +A X +C X +C Y +C Y +B X +A X +B Y +C Y +B Z +A X +C X +B Y +C Y +C X +C Y +C X +C Y +C Y +C Y +B X +C Y +C X +C Z +C Z +C Y +C Y +A Y +A Y +C Y +C X +C Z +B Y +C Y +C X +A X +B X +C X +C X +A Y +C Y +C Y +B Y +C X +B Y +C X +B X +C Y +C Z +B X +A X +A Y +A Z +C Z +A X +A X +C Y +C Y +C Y +A Z +C Y +A X +C X +A Y +C Y +A X +C X +C X +C Y +A X +C Y +C Y +A Z +C X +C Y +C X +B Y +C Z +B X +C Y +A X +C Y +A X +B X +A X +C X +C X +C X +A Y +A X +A Z +A Z +A Z +C X +C X +C X +C X +C Y +A X +C Y +C X +B Y +A Z +B Y +C Y +C Y +C Z +C X +A X +C Y +B Y +C X +C X +A X +A X +C Y +C X +C Z +C X +A X +C X +C X +B X +C Y +B X +C Z +C X +A X +A X +A Z +A X +A Z +C Y +B Y +B Z +A X +A X +C Y +C Z +C Y +C X +B Y +A X +A X +C X +B Y +B Y +C Y +C Y +B X +C X +C Y +C Z +A X +C Y +C Y +C X +C X +C Y +A Z +C X +C X +C Y +A Y +C Y +C Z +A Y +C X +C Y +B X +B X +C Y +C X +C Y +B Y +B Y +C Y +C Y +A Z +A X +C X +C X +C Z +C Z +C X +C Z +C Y +A Y +A X +C X +A X +C Y +B Y +A X +C Z +A Y +C Y +C Y +C Y +C X +C X +C X +C X +C Y +C X +C X +C Y +C Y +C X +B X +B X +C Y +C Y +C X +B X +A X +C X +C Z +A X +C X +C X +C Y +A Z +B Y +C X +C X +B X +C X +A X +C Z +C Y +A X +C Z +C Y +A X +C X +C Y +B X +C X +B X +C X +C X +C Y +B Z +A X +C X +A X +C Y +C Y +A X +A X +A Z +C X +C X +C Y +C X +B Y +C Y +C Y +A X +C X +C X +C X +C Y +A Y +C Y +C X +A Z +B Z +C X +C X +C Y +C X +B Y +C X +A X +C Y +C Y +A Z +C Y +B Z +C X +A X +C X +C Z +C X +C X +C Y +C Y +A X +C X +C Z +C Y +C X +C Y +C X +C Z +C X +C Y +C X +C X +C X +A Z +C Y +C X +C Y +B Z +B X +C X +A X +C Y +C Y +C X +C Y +C Z +A Y +C Y +B X +A X +A X +B X +A Y +C Y +B X +C Y +C Y +C X +C Y +B X +C Y +C X +C X +C X +C X +C Y +C Z +C X +C Y +C Z +B X +C Y +C Y +C X +C X +A X +C Y +C Y +B Y +B Y +B X +A X +C X +C Y +A X +C Y +C Y +C Y +A X +B X +C Z +A Z +C Y +C Y +C Z +C Y +C X +C Z +C X +A X +C X +B Y +A Y +C X +C Z +A X +A X +C Y +C X +C X +C Y +A Y +C Y +C X +A X +C X +C Y +C Z +C Z +C X +B Z +A X +C Y +C Z +C X +C Y +C Y +C X +C Y +C X +A Y +B X +A X +A X +C X +C X +C Y +C Y +C Y +B X +C Y +C Y +C Y +C Z +A Z +B Y +C X +C X +B X +B Y +C X +C Y +A Z +C Y +C X +C Y +C Y +A X +C X +C Y +A Y +C Y +C X +C X +A Z +C Y +C X +B X +A Y +C Y +C X +C X +C X +B X +A X +C X +C X +C X +C X +B Y +A X +C Y +C Z +C X +C X +C X +C Y +C X +C Y +B X +C X +C X +C X +C X +C Y +C Y +C X +A X +C X +A Z +C X +B Y +A Z +C Y +C Y +C Z +C Y +B Z +A Z +A X +A Z +C X +A X +C Z +C Z +C Y +C X +C Y +C Y +C Y +C X +C X +C X +C X +A Y +C Y +C X +C X +C Z +C Y +C Y +B Y +A X +C X +C Y +C X +C Y +B Y +C X +C X +B Y +A X +B X +C Y +C X +C X +C X +C X +C Y +C X +C Y +C Y +A Z +B X +C X +C X +C X +B X +C Y +C X +C Z +B X +C Y +C Y +C Y +C X +B X +C X +C Y +B Y +C X +C X +B Y +A X +C X +C X +A Z +C Z +A X +A Z +C Y +C Y +A Y +A X +C X +C X +C Z +C X +C Y +C Y +C Z +C X +C X +A Y +C Y +A Y +B X +C Y +C Y +C X +C X +C Y +A Y +C X +B Y +C X +C Y +C X +C X +A Z +C Y +B Z +C Y +B X +C Y +C Y +A X +C Y +C X +C X +C Y +C X +C Y +C X +C Z +C X +B X +C Y +A X +B X +C Y +B X +C Y +A Z +C Y +C Y +C Y +C Y +B X +C X +C X +C X +C Y +C Y +C Y +C Y +C X +B Y +C Y +C X +B Y +B X +C X +B X +C Z +C Z +C X +C Y +B X +A X +C Y +A X +C X +C X +C X +C X +C X +A Z +C Y +A Z +B X +C Y +C Z +B X +A Y +C X +C X +A Y +C Y +C Y +A Z +A Z +C Y +A X +C Z +C X +A Z +C X +C Z +A Z +C X +C X +C X +C Y +C Y +C Y +C Z +C Y +C Y +C Z +C X +C X +A Y +B Y +B X +C X +B X +C Z +B X +C Y +C Y +C Y +C X +B X +A Y +B Y +B Y +C X +C X +C Y +C Y +C Y +C Z +C X +C X +A X +B Y +C Y +C Y +C X +C X +C Y +C Z +C Z +C Y +C X +B X +A X +C X +C Z +C X +B X +A X +C X +C Y +A Z +C X +C Y +C Y +A X +C Z +C X +A X +C X +B X +C Y +C Y +C Y +C Y +A X +C Y +C Z +B X +C Z +C Y +B Y +B Y +A X +C Y +C X +C Z +C Y +C X +C X +C Y +C Y +A Y +C X +C Y +C X +C X +C Y +C Y +C X +B X +A Y +C Y +C X +C Y +C Z +C Y +C X +C X +C X +A X +C Y +A X +A X +C X +B Y +B X +B Z +C Y +C Y +C Z +B X +C Y +C Y +C X +C X +A X +C X +B X +C X +A X +B X +A X +C X +A X +C Y +A X +C Y +C Y +C Y +B X +B Y +C X +B X +C Y +C X +C Y +C Z +C X +B X +C X +C Y +C X +C Y +C X +A Y +C Y +A Z +A X +C Y +C Y +C Y +C Y +B Y +C X +C Y +C Y +C Y +C X +B X +C Y +A Z +A Y +B Y +C X +B Y +C X +B X +C X +C X +B Z +B Y +A X +A X +C Y +C X +C Y +A X +A X +C X +C Y +C X +C X +C Z +C X +C X +B X +A Y +C Y +A X +A X +B Z +C Y +B Y +A X +C X +C X +C X +A Z +C Y +B X +C X +C Y +C X +C Y +C X +B X +A Y +A X +C X +C Y +B X +C Z +C X +C X +C Y +C X +C Y +A Y +C Y +C Y +A X +C X +C Y +C Y +C Y +C Y +A Z +C Y +A X +C Y +C Y +B X +A Y +C Y +C Y +C Y +C X +C X +A X +A X +C X +A Y +B X +C X +C Y +C Y +C Y +C X +C Y +B X +A Z +C Y +C Z +A X +C X +C Y +C X +C Y +C Y +C Y +B X +C Y +C Y +C X +C Y +C Y +C Y +A Y +A Z +A Z +C Z +C Y +C X +B X +C X +A X +B X +A X +A X +A X +B X +B Y +B X +C Z +B Y +C Y +B Y +C X +C Z +B X +A X +C X +B X +B X +C X +A X +C Y +C X +C Y +C X +A X +C X +C X +B X +C Y +B X +A X +A X +A Z +B Y +A X +C Y +C Z +C X +C Y +B Y +A X +B X +A X +C Y +C X +B X +C Y +A Z +C Y +C Y +C X +A Z +A Y +C Y +C X +A X +C X +A X +C X +C Y +C X +C X +C X +C Y +C X +B X +C X +C X +C X +C Y +A Z +C Y +C X +C X +C Y +B X +C X +C X +C Y +C X +C X +C X +A X +B X +C X +C Z +C Y +C Z +C Y +C Y +C X +C X +A Z +A X +C X +A X +C Y +C Y +B X +C Y +C X +C X +A X +C Z +A Y +A Y +C Y +C X +C X +C X +C Y +B Y +C Y +C Y +C X +C X +A Y +B X +C Y +A Y +A X +B X +C Y +A X +C X +A X +C X +C X +C X +C X +A Y +C Y +C Y +A Z +C X +C X +A X +C Y +C Y +C Y +B X +C Z +C Z +A X +A X +A X +C X +C Y +C Y +C X +C X +C Z +A X +A Z +C Z +B X +C X +C Y +C Y +C Y +C Y +C X +B Y +C Y +C X +C Y +C Y +A X +C Y +C X +A X +C X +C X +C X +C Y +C Y +C Y +A X +C X +A X +A Z +B Y +A X +C Z +C X +B X +C X +A Y +A Z +B Y +A X +C X +B Y +B X +C X +B X +A X +B Y +A X +C Y +C X +C X +C Z +A X +C Y +A Z +C Y +A Y +C Y +C Y +C Y +C Z +C Y +C X +C X +C X +C X +A Y +C Y +C Y +C X +A Z +C X +B X +C Y +C X +C Y +A Z +C Y +C Z +C Z +A Z +C Y +A X +A X +C X +C X +C Y +A Z +C Y +B X +C Z +C Y +A Z +C X +B Z +B X +C Z +A X +B Y +C Y +C Y +C Y +B X +C Y +B Y +A X +A Z +B Y +B Z +A Y +C X +C Y +C Y +A Y +B X +C Z +C X +C X +A Z +C X +C Y +C Y +C Y +B X +C X +B Z +A X +C Y +C X +C Z +B X +B Z +C Y +C Z +C Y +A X +C X +C X +A X +B X +C Y +C Y +C Y +C X +C Z +A Y +C X +C Y +C X +B Y +C Y +A Y +C X +A Z +C X +C X +C X +C X +A X +A X +A Y +C Y +C Y +C X +C X +C X +C X +C Y +B X +B X +B X +A X +C X +C Y +C X +B X +A X +C Y +B Y +C X +C X +C X +C X +C X +C X +C X +C X +C X +C Y +C Y +C X +C X +C Y +C Y +B Y +C Z +C Y +A X +B X +A X +C Z +C Y +C X +B X +A Y +C Y +C X +A X +B X +C X +C Y +C Y +C Y +A Z +A Z +C X +C X +B Z +C Y +C Y +C Y +C Y +C X +C X +B Z +C X +C X +A Y +A X +B Y +C Y +C Y +A X +A X +A Z +A Z +C X +B X +C Z +B Y +C Y +C Y +C Y +C Y +C Y +A X +B X +C Y +B X +C Y +C Z +C Z +B X +C X +B X +C Y +C X +A Z +B X +C Z +C X +C Y +C X +C X +C Y +C Y +A Y +A Z +A X +B Y +C Z +B X +B Y +C X +A Y +C X +C Y +C X +C X +C Y +C Y +C Y +A X +C Y +B X +C Y +C Y +C Z +B X +C X +C Y +C Z +A X +C Y +C Z +C Y +C X +C Z +C X +C X +C X +C Y +C Y +C X +C X +A X +A Z +C Y +C Y +A Y +C X +A X +C Y +A Z +B Z +C Y +A X +C Y +C X +B Y +B Y +A Z +A X +C X +C Y +C Z +C X +A Z +C Y +C Y +B Y +B X +C Y +C Z +C Y +A Z +C Y +C Y +A X +C Y +C Y +C X +C X +B X +C Y +C Y +B Y +C X +C X +C Y +C X +C X +C Y +B X +C Y +C Z +C X +A X +C X +C X +C Z +B Z +C Y +A Y +C Y +C Y +C X +A X +C X +B X +C X +C X +C Y +C X +B Y +B X +C X +C Y +C Y +C X +C Y +C X +C Y +C X +C Y +C X +C Z +A X +A X +C Y +C X +C X +A Y +C Y +C X +B X +C X +C X +C X +C Y +A Y +B Z +C Y +C Z +C X +A X +C X +C Z +C Y +C Y +C Y +C X +C X +C Z +C Y +B Z +C X +C Y +C X +C X +C Y +C Y +C Z +C X +C Z +C Z +C Y +A X +C Y +A Y +B X +C Z +C Y +C Y +C Z +C Y +C Y +C X +C Y +B X +C Y +C X +C X +B Y +A X +C Y +C X +C Z +C X +C Y +C Z +A X +C X +A Y +B X +C X +C X +A Z +C X +C Y +B Y +C X +C Y +C Y +C X +B X +A Y +C Y +C Z +C Y +C X +C X +C X +B X +B Y +C X +A X +C X +A X +C X +B Y +B X +C X +C Z +C Y +C X +B X +C Y +C Y +C X +A Z +C Y +C X +C Y +C Y +C Y +C Y +B Y +C Y +C X +A X +C Y +C Y +C X +B Y +B Z +C Y +C Z +B X +C X +A X +B Y +C X +C Y +C Y +C Y +A X +C Z +A X +C Y +C Y +C Y +C X +C X +C Y +A Z +C Y +C Z +C Y +C Y +C Y +C Y +C X +C Y +B Y +C Y +C Y +B X +B X +C Y +C Y +B Z +C X +B Y +C X +A X +A X +C X +C X +B X +C X +B Z +C Y +C Y +B Y +C Y +C X +C X +A Z +C X +A X +C Y +C X +C X +B X +C Y +A Z +C Y +C Y +B X +A Y +A X +A X +C Y +C Y +A Z +C X +B X +C X +B X +A Z +C X +C X +B Z +C X +C X +C X +C Y +A Z +C Y +C Z +C Y +B Y +A X +C X +C Y +A X +A Y +C X +C Y +C Y +C X +A Y +C Y +C X +C X +C X +C Y +C X +A Y +C X +B Y +B X +C X +C Y +B X +C X +C X +C X +C X +C Y +B Z +C Y +C Z +C X +A X +C Y +B Y +C Y +C X +C Y +C Z +B X +C X +C Y +C X +C X +C X +C X +A Z +C Y +B X +C X +C Y +C Y +C Y +C Y +C X +A X +C X +B X +C Y +A X +B Y +A X +C Z +A X +C Y +C X +C Y +C X +A X +C Y +C X +C Y +C Y +B X +C Z +A Y +C X +C X +C Y +C X +C Y +C Z +C Y +C X +C Y +A X +B X +B Y +C Y +C X +C Y +C X +B Y +B X +C X +C Z +B X +C Y +C X +C Y +A X +C Y +C Y +C X +C Y +C Y +C Y +A Y +C Z +C Y +B Y +C Y +C Z +C Z +C X +C Y +A X +C Y +C X +B Y +C X +C Z +C Z +C Y +C X +C X +C X +A X +C Y +C Y +C X +A X +A X +A X +B X +A Y +A X +C X +C X +A X +B Y +C Y +C X +A Z +A X +C Y +B Y +C X +C X +A Y +C X +C X +C Z +C Y +C Z +C Y +C X +B X +B X +B Y +C X +C Y +A X +A Y +A X +C X +B Y +A X +A X +B Y +C X +C X +B X +C X +A Z +C X +B X +A X +C Y +C X +B X +A Y +A X +C Y +C X +C X +B X +C Z +A X +B X +C X diff --git a/inputs/input.20 b/inputs/input.20 new file mode 100644 index 0000000..c0db3b1 --- /dev/null +++ b/inputs/input.20 @@ -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/inputs/input.21 b/inputs/input.21 new file mode 100644 index 0000000..09a294a --- /dev/null +++ b/inputs/input.21 @@ -0,0 +1,1677 @@ +rmmz: 2 +vdjz: 4 +rqbd: 3 +zvqw: 4 +sshm: qhnd * lrcj +dtzl: rnbs + gppj +gnzq: 5 +zlpv: pmng * wgvj +nqgr: 4 +tftg: 1 +fhjc: sbpb / nhcr +fwbm: jcch * qhlj +wtlq: 3 +nzhf: fjzn * bnws +nqpq: 2 +jqzv: 2 +crrj: vnbv / grww +glpw: 8 +cnbg: jmbp * jnqv +bdcm: 2 +bcww: 11 +wrbf: 2 +hpvb: zswl * qpbz +qffb: jvqz + qgtf +mfmc: hnbn * twwv +cnzj: qqdn * pvtb +wbnh: cshj * snvw +swds: bmlj + scdn +twtb: 3 +dlgc: gfbw + djgh +bvzn: 2 +gwpm: rrll + zshp +rtnf: qbwf + bqnn +sdmb: 15 +mtjq: 2 +dpmg: 3 +drct: bvfr + rtmh +zrpj: gfml * tsms +gwlm: 2 +msdr: 3 +fqbl: wbbf + pbgr +zwqw: lnqm - nzdj +lbvn: zwbh + btbn +dggg: bnmf / trpv +bjwg: trdj + lpqs +bnzl: vfhg * pjds +qtmp: 2 +llpf: 2 +zwqn: lfhb + spcf +trpt: mdrm * qdrc +lzgm: jzvg + qlzg +swhh: 2 +tpnf: 15 +rgrp: 7 +zswl: 3 +gzbv: djgb + dvwj +ppfs: 5 +nfhf: 5 +pgrc: pdmb * qgwg +jjwr: 6 +fvsf: 2 +qmvq: hlzp * zvvd +twjq: 2 +twsj: 5 +mwrc: 2 +sbpb: djpm * pfpt +cbjq: ztqg - tzls +mgsl: 2 +vzgd: qmcb + wfbz +qrll: 2 +slpm: fbpz * jjwr +rffd: mfmc / csdf +jjbm: slpc * bncr +pjds: cpqv + ldtj +btfl: qvfg + lqdf +sfcv: 7 +vtnq: 5 +fzdp: fzrd * slww +cwjp: 9 +mpnj: 2 +wnbb: zssf + qnld +nfgv: lzhf + mqzw +pszs: 4 +chpt: 2 +bhpw: cnbg + zrnz +dfps: 5 +pzqv: 3 +fjzz: 8 +ffqr: 16 +bqvg: lrqh + wpdn +qlmg: mpvz + wpvg +lfhb: jscq + bpnt +pqqj: 2 +qhtv: 5 +wchl: ffqr + mdnp +vcwt: llfg + wjtc +nfbp: 2 +bbcn: 8 +smld: 2 +mvmj: lqdc * bhmz +mqph: jjgt + vtjg +brmz: mpfm + zcgs +ttdb: zncl + nqpv +bcsc: 6 +frjj: 9 +jcjf: lgpg + qmvq +pmfh: 3 +drrf: 9 +lmht: 7 +sstg: vrct + wfjn +swhz: zvvp * dbvt +rtpz: nnsc + zmlh +qrzq: 2 +rtmt: 12 +pmds: 3 +vfzw: jhlw * vmzc +smhv: ffnt * gtwp +vdzv: 5 +btqb: 3 +wclq: rwth + drln +vzrz: bsvc + vmjn +ztct: zscd / lhml +zvvd: tcqz - cmnv +mfrc: jmcp + lpvs +sdrn: 9 +jfvq: pgdw + vbvt +qjrs: qvpw + cpdf +tnnt: psfr + hjlz +fqlp: bblh + dbfm +nwhm: 3 +rlcw: 2 +rwjc: ljzj + zdrh +tfqh: 5 +crqg: 3 +nrps: lrdn + hmfb +pmng: gzrs + vtns +gmzt: tlmq * bfzd +fhdz: 6 +fwzf: 4 +tzls: fnqf + fpcs +pvtb: 2 +gpdf: zslv * qwqc +zcgs: jlmb * crnb +clbn: 2 +wghf: fwbm - jcjf +vffj: frjp + mrtq +gfbw: csfh + rlvd +tzth: tvtj * bnvg +vwhb: 2 +scwp: 3 +rpbm: 3 +zdhf: 2 +fdmf: 3 +lqdf: 2 +rndt: wtbs + lrsc +jnzr: 5 +qpqs: bcng / nwdv +tmhg: vtvn - nzbp +dtfz: bdgd * dfdl +pnvc: brqb * drrq +mfnh: rdhg * rmvq +vjgb: 3 +czvm: 18 +qhnd: 3 +dhfw: jmcf + vjjw +nqpv: bhvg + zmvz +rhcv: ddtd / jqzv +lqqh: 5 +mspl: 5 +ngps: 11 +bcmp: 2 +nlsw: gnjq * vzrz +mhlj: 4 +bqnn: pgrc - bwff +fbqs: 11 +cnln: sqml * wlqd +vjbz: 5 +vhhz: pwpn * dsng +crmb: 5 +wbgs: 3 +qhvn: 3 +lsnd: 1 +hhcv: 2 +vmjn: 12 +fbtc: 2 +jgnj: 4 +jmcp: 2 +mfhg: 2 +ztdn: 2 +zttf: 3 +tjwt: 16 +lzzh: 11 +rnns: frrn * pnmc +ffnn: 3 +wpvg: qvpv * frqq +wjds: 3 +nnmh: 5 +jswz: vthd - jjrh +qjqw: 2 +bndd: 7 +mdpg: 2 +wtwb: 2 +nbfg: vwvc * rbtb +nmts: pfml * jqqs +nvjf: mddc * lrbp +gqgh: wzsh * tqzv +btqt: qbzv + wtrh +cblz: 5 +nvpd: 3 +vldc: 2 +drhw: dngq * nmlt +bpjf: ndlf + tjwt +dpgl: 2 +ggnd: 3 +qzpn: 2 +ttvz: 2 +qwqc: 3 +zhmb: 15 +nzdj: svvh + qplw +rrnp: qrnj + hmvq +mbvg: sgzh / mdpg +mlbw: jwwv * jhzw +wvfb: mvmj + phjj +tzhp: 15 +zjcn: pgfr * dgvh +wbbf: ghvn * dfrb +mfsz: fpvs * lzgm +bfpq: tmhg * nvlv +vpvl: blnq * jfsr +pnrv: lfrb - qwnt +lbgc: bzdh * wszm +pbdd: dcpm * nrsd +jsrb: 13 +bbzt: 8 +mhdn: bsmm * rzzg +jpcd: 2 +ldzb: nqpr * qnds +nmlg: 2 +pnpc: 5 +rbqt: 5 +dsqb: mrjc / ftqd +zhqg: lpjr * zttf +dphz: 3 +gbzd: ttvz * tsjq +cldm: 4 +ftbq: 5 +rzff: gdpg + cgvs +tzcd: 1 +gzwh: bjfh * qtfp +qgnb: vdgt + zwwb +jzvg: 5 +qqwz: pnwh * wlmv +jbtg: 9 +rrgh: 2 +bvfr: jzcd + gjbv +mwdl: rlcw * jffq +chfs: mrlq - cgvv +gwmr: hbwh * wzdj +qcml: 3 +zbhj: ctqb * hfbg +zshp: wphq * hzpr +pvcs: 4 +sszh: 2 +jdsc: 15 +ndnm: 8 +lrlz: 1 +wpbs: 2 +bcpn: 7 +glts: gpdf - vznc +qnld: jrvp * smnv +hrtv: bdcm * cgnr +zbbf: shtz + fvsb +vvbz: bqht * zwqn +vvjg: zgzs * sbpp +lrlg: 10 +zpht: 10 +ndtz: cnzj + qsml +stcv: 3 +jjrh: mlwr * dqjz +hsbr: dbcs / zngg +wtrh: sclr + chsm +jfqs: 15 +hjgd: 12 +hgnr: 9 +brqb: 4 +ndsm: tmhl + ddln +fjgh: cbjl + pchr +tptf: 3 +njcj: ppll * psfp +jjvz: vhqz + fmvw +grww: 2 +jvqf: 2 +sgvm: vhwz * gzgm +zscd: dshq * tbwl +mgjl: 3 +bfgp: jbvq * ppcl +mpst: zzpd * qcnn +wjzd: vwht * pzcc +wqdj: zvmv + sntb +csdf: 2 +cgwj: 3 +rccr: 2 +vsgw: 3 +pvwn: fpwz * wnjc +mfql: 3 +dspn: qlvz + bcsc +llcn: 4 +dcph: 4 +npcs: lrvc + mcfr +wgvj: 4 +bblh: 1 +dmrn: 9 +qbzv: 1 +lrdn: 3 +wzfr: nltq + lrlz +bwnc: 2 +dswn: 11 +bnws: 2 +cdnp: zvst * cwjp +fddw: zhgt * mfst +nbbd: flvw * thlz +lbzc: jfrn * gdgd +sntb: bhrb * lhgv +vzts: 6 +jvfw: hlms + lwlc +mqcv: 2 +jhzw: 5 +lhpf: dqzt * fjld +znjr: 2 +wrvl: pdbt * qlvg +cdwt: 6 +vtjg: stcr * bvzn +dvnh: brqv * jdmt +pcgq: jtcf * qssh +nhjt: 2 +pmqh: dflc * rzsn +zrwb: gtqh * fwjg +zphs: bcww + sbtd +nmvn: vrpp * mdht +sbvl: 3 +bcdf: rhwm * zbhj +jhwn: mgjl * tprm +ftjv: 3 +ncnm: vzcr * wqfg +bgwj: qlqt / dnwd +hrbr: gvmj + vspf +qljb: 3 +vdsz: 3 +nhpf: rdpg + qrll +gvfn: drnb / fhmz +ppts: zhrs * lccp +fvhm: 7 +rrqr: 2 +lnqm: rwjc + vnvr +qwnz: hfbh + vdbp +cgvr: 3 +lvrc: 4 +vcfm: 5 +zhgt: 3 +nvdh: 3 +llfg: cgcc * nqhg +wjgf: 2 +nztj: wqfz + tdlw +shpt: 2 +gzmv: 3 +tqzv: rtpz + glqr +pdmb: 2 +fpcs: 5 +mwmp: 6 +hcfs: 2 +bshp: chvq + pdbc +gppj: 1 +pzpp: 5 +ltnz: dswn * tsqc +wzdj: 3 +frst: 5 +scdn: 6 +fpsh: 2 +gzwm: 2 +jmbs: lwlb * sqcb +rqsw: 5 +bnvg: 3 +tfwb: 2 +snwm: 6 +zvrq: 5 +vnpq: djjs + rmrj +cfbh: 4 +ntnh: jvfw * jzdn +jnwv: tlnz * zqpw +npvl: sbqm * zmmd +tpwq: jnll / flhf +flhs: qcml + zmdq +pnvd: cwvl + dgpr +zvvp: 3 +fcql: 20 +jrvp: 17 +wbvt: bftg + tlzh +vwht: 3 +pzvr: 3 +qncp: 3 +bcgz: tpjp / bngr +dcbt: rctr + wltv +csgr: wrvl / znjr +rsdv: vcwt * mqcv +fnqf: 2 +hzrc: jdbp + jnwv +cdvw: sjfs + fzvh +bsvc: pwln / nrjc +tlwr: 3 +hjmr: 3 +spjg: 5 +mqgl: mqlt * jlnf +mzzd: 3 +dqnv: mhnm * zhqg +lqcm: ffqs / zvrq +sqzp: 5 +drvt: hhws * llpf +ghvn: vrjj + vfrh +hfbh: 16 +wtlg: 19 +dsgt: hhcv * npcs +vvzh: 6 +sclr: dddm * nttr +jqqs: znlh + ffnn +zprq: jmnj * mwqc +dczh: vvvb * wcpr +lpzb: bqvg + mlgj +dqsv: pmfh * zrbc +hgzs: 3 +vrpp: 10 +snbm: 4 +tdrq: hqdv * csln +tbwl: sdmb * zrfw +jdmt: btwt - gwpm +fzgj: 4 +vnvr: pmqh * pwlt +mcht: 2 +ztrt: vlhc * swds +bncr: wpcs - pcgq +nqsl: qcfn + fsgb +cclc: hjfj + cfdl +ztpd: dzlc + zcgn +lfrb: rbsf * hzjj +pvfv: 2 +swpl: 2 +csnf: 1 +ptdz: 2 +nvhn: 2 +rdhg: nnhm * wpbs +jclb: 2 +cscm: lclg * mrwz +fcgj: hmrz * nwbt +hgwm: mspl * rmfv +rqbq: 2 +wjtc: fszd + tpmp +dpvl: 8 +nwdv: 3 +zcgn: lzzh * brfc +jvrt: bhzq / rqsw +zmdq: sdwj + mwdl +rtsd: rcmc + jtjd +nqzz: 11 +dshq: rtnf * chvn +mddc: 2 +rpwz: 3 +pmlg: 8 +blmp: vwmr * ndpf +hqbb: 2 +chtt: 2 +cchg: 2 +bntz: tvrd * ncsp +gvgp: 3 +vvhm: mspb * dpgl +nlcv: 5 +rwcd: qffb + nzcv +rfcq: 6 +zgdb: 2 +mggl: cchg * crcm +mwjg: vjwz * vsmt +rbbh: 13 +mqlt: gwlm * mqvg +ddtd: qcnv + wjzv +hpmm: 3 +cjlm: 6 +cpdf: jjbm * mtnb +gqrp: tdrq + djrh +zmtg: 8 +vwdl: hzmn * nqms +ggpn: 11 +mtfr: jlqg * dlgc +nsfm: 4 +cftm: 18 +wcdm: tsbf * wgvv +jcch: 2 +zqjp: tzhp - nldv +wjmq: 6 +cbgj: mdjm * tqfr +jmnj: ppts + fqbl +tlnz: vfgt * vdjz +fqjd: 2 +ngzp: 11 +trdj: 10 +qrch: nfhf + vhtl +hmrz: qjrs * rtsd +rvnh: 3 +humn: 4481 +jstb: 5 +vqlt: 2 +vlqd: ndgh * zptr +vjjw: mrlc / pvfv +mnlp: svdw + mtjq +jtcf: 4 +lwlc: qqtm * cnvb +jdgq: 2 +vznc: 2 +dcfw: qvvc * wqdj +fqwz: twtb + vtnq +hhbn: 4 +wrpp: 14 +mmnw: 3 +rdpb: 10 +hcsc: 5 +nfvj: 4 +qznt: zfjw * wfld +flvw: 5 +wphq: 5 +bpwd: 2 +cbfh: 2 +bcbw: jtvm * cdnm +dvwj: zwgg * dspn +tnbt: qdfp * bpwd +qlzt: 12 +rjfh: 5 +cprt: 3 +qgwg: jrgs + sphc +zpbt: swfp / mldc +drln: 6 +jdcd: 3 +jzcd: nvjl - swpl +sbpp: 17 +ttwm: 5 +rdbs: wsml * drrf +pfpt: pmrt * fvsf +rfbw: ntpj + vwpq +bqld: zqjp + rbzl +rrmg: 19 +rbsf: 3 +mlgj: vvgt + dmsz +jfcd: bsqn / blgf +sjrh: 7 +djjd: fddw + svvq +jhgd: fjnh * bbzt +nlts: fjgh - cnln +ppwc: lhpf - zprq +gptt: 2 +bvvl: 20 +ssnq: cfmw + wfnm +gmhz: 4 +nnsc: cvqf + vpvl +zbzf: nlth * dhfw +jhvm: 16 +mrrt: 7 +pmrt: mwrc * mnhc +rddj: fbcd / tfwb +wszm: hsbr + rscq +pbgr: glqw * qqnm +hzlh: 2 +qnbn: jpvr - bgzz +hrcp: fjvg * vjbz +dnwd: lqrf * flhd +rvlz: 3 +stcr: cblz + nfnw +ptvh: 3 +vmnc: 5 +bmwf: rpbm * cvgt +jzdn: 2 +djrh: ccjf * fqgl +lwlb: 5 +bqht: cldm * btqb +brfj: prbr + qqwz +rlqm: 2 +mdht: jflm - trpt +lbbj: 2 +blnq: 6 +chfz: 3 +sqsc: 5 +mwrt: slnh + thcc +nvrb: 3 +lgrj: qnvn * tnbt +pvcn: qhwm * smld +fbgc: 2 +mqnl: drlt * bbhp +bdtp: gzpf * qdnl +wdwf: fhjc - zpbt +hhjc: qbvr + fmwn +jzlv: cftm * rhtv +smwb: dgbr + rbbh +bhvg: lpfz + bjnj +zmmd: smsm + jfcd +mdld: zzqd + bdmw +qlqt: zfbq + ntqb +dgbr: sbwd * cgvr +rwsm: 10 +jnll: nztj * vzgb +dbht: jdcd * rccr +bhmz: 3 +mrlq: bbjs + drdl +fzdg: 2 +jbsh: 2 +svzv: 2 +zjmw: 3 +tcgm: 2 +nzcv: 6 +rmrj: mtsv + snlb +bjnj: 2 +qsml: 18 +mfts: mwjg * pjsp +ffqs: rhcv - rrnt +dbcw: gtbs * mbvg +wpcs: phbh * mnhf +rvhs: 2 +qmcb: 17 +hlms: 11 +vwpq: 2 +wslz: szhq / hstj +jpvr: sflt + drvt +hcdz: nfhw * qgjf +svvq: twdf * rhqj +lgpg: wglc + gwmr +mlwr: zfmv + hbqm +hbqm: 1 +fgbm: lltp + fwmw +cjlh: btfl * mpnj +tlmq: fqwz * lwhp +zzqd: vnpq / rlqm +drdl: hzlh * btqt +sdjb: ssnq * gzwm +ntmt: 3 +rwth: tdjh + cstb +jjgt: crqg * dmrn +mpvz: ppwc * chpt +qbmm: rqpj + rfcm +zdrh: csml + cvvv +trft: lbbv * nlgg +dqjz: 7 +gfrq: 4 +vvgt: zrwb / rfcq +tsft: sstg + ngfs +gzpf: 2 +tfpw: gmln * hqbd +cddt: 6 +rlbp: 1 +ndph: ztzq * jgzl +blbc: jfvq * cprt +cvhn: jdgq * llcn +zncl: mwrt + dbgp +rthb: 2 +jfld: 4 +gdgd: 7 +lrsc: vdzv * czst +gzgm: 4 +bhrb: pnvc / smdh +bsmm: 2 +qnds: sbvl * szmm +bhzq: zhmb * qfss +vwvc: 17 +qmgt: 3 +gfml: 4 +tjqj: glpw * zsns +vlmc: 4 +qlnr: ndph + twtq +fvph: 3 +jgzl: drct + vwdt +wnjc: 2 +ffbb: 2 +hzmn: pgbv + rwbg +rpbj: shrh * jvqf +sqmd: 2 +ndcd: sdgs * spjg +mmbs: 3 +mhbr: wggq + grcv +nsqq: cvfw * ffmp +wgvv: 2 +rvmp: nnzp * dbcw +dwnz: 2 +jvtz: fctt + bfpq +nzzv: jbcl * llnl +cqcg: 3 +nrvw: 2 +qqtm: 3 +fvng: 19 +phrv: 3 +tlzh: 11 +twjs: ltnz - ltsv +lhgv: nwqz + qflq +rctr: mhdn * mvnc +snlb: 4 +dfgh: 7 +tvtj: 13 +flcb: 2 +nqpr: 3 +jmbp: 4 +rcmc: bpjf / qrzq +mnpl: pbdd - qpct +twcj: 3 +nlth: 2 +drrq: 13 +fszd: bmwf + qspw +mlrz: 2 +jvgd: dvnh - mpjj +jtvw: nzhf - wfnl +ftvm: 3 +cgcz: njcj - bjbr +dfzw: 2 +tdhw: rzjm * qrgn +qwnt: 2 +mspb: dggg + ghtd +fhmz: 2 +dqzt: 5 +brfc: dczh - tfpw +hstj: 2 +rzjm: 5 +jbcl: 3 +zhpq: gpzn * cnmq +hmrs: ltqr * hslj +mtdh: 8 +lwhp: 5 +wnvf: 8 +qqdn: 3 +wrmw: fwrh * rbmm +gzrs: jclb * zjpc +nzwc: 3 +wflc: cbgj / qllm +gtwp: 3 +trbs: 2 +zsns: 2 +vvvb: wrpp - qrsg +cstb: dfps * svwg +gcmv: whbb * mfnh +vrjj: lbbj * jgnj +rrll: scdt * zjmw +wgsb: jqrl * jlwb +scdt: vlmc * qfln +wqqv: nrps * pnwz +szhq: nchp * ndtz +tqzf: 3 +wpqd: jqsn * przh +vmzc: nhpf * gcqh +pjlz: 2 +mdjm: 3 +qgjf: pgvq + spgw +qnhq: rncj * rllb +hfbg: 2 +jfsr: 8 +nfhw: 2 +cstm: rgzs * nbcb +ghvl: dbfd + qbmm +tzcl: 2 +pzzg: ltmj - mfts +cdqv: dfgh + mnlp +wcpr: 5 +jdrg: qmpm + hlmn +gtqh: 8 +hlmn: rdnj + sjcd +hnqc: mfsz / hbzt +sphc: vrcl * nhfw +bnlr: qhvn * vvzh +dbfd: bcnp / ffvs +hpzh: snwm + rrnp +ghqp: 5 +dfql: dzwg * snbl +hbzt: shwr + rthb +chsm: crmb * scwp +lpjq: wlpd * fcgs +plfd: sqsc * hvsd +vbvt: ghqp * qmjq +rdpg: 7 +vhds: 12 +rmfv: 5 +smft: crmw * msdr +wlpd: 2 +cvvw: 2 +bsqn: wlfp + sdjb +svcp: jfmb + rwsm +qflq: scrz * dtfz +bwwc: 3 +wqfg: qmzt * chfz +lbqn: 5 +zbhw: wcdm + hhjc +jlnf: 3 +nlst: wmzt + twjs +zfjw: tbdh + rmmz +wfms: 2 +fjps: 5 +djpm: pznf * qlnr +snsc: 2 +hnlj: 5 +pvfm: 2 +cwhc: 3 +blgg: 15 +jmwl: rdpb * zpht +wbsb: jcdb * ngbz +jwwv: 2 +jdsd: 5 +rsnp: 3 +rrnt: jnnp * dmtd +nfnw: 2 +mpfm: mfrc * qrch +mnzz: lwld + jbwd +lfjp: 3 +qvfg: fdmf * svst +mjmv: cdwt + pzvr +lclg: 8 +pcvv: rvmp + hmrs +wsml: 3 +gvbp: 3 +mpjj: 10 +vcqw: jjjj * brmz +lhvt: pmds * tqzf +qpdv: 15 +mrlc: zbhw * svzv +bdmw: fpsh * hwvf +vntv: npvl * mbqs +cfdl: mfhg * gzbv +gvww: 2 +dqhh: gzwh * thpg +mtnb: mqph * bnfp +wlfp: ntsl + lfhp +zslv: 3 +lqrr: hhbn * gmzh +qfzb: nhjt + mjmt +ltzm: 12 +qcnn: mnpl - wsnf +bhvr: lflj + rfjw +wnzr: jbrp * nnmh +zglw: flcb * cqmq +svdw: 4 +pfml: bnlr + ndcd +zpqd: 2 +fjnh: 5 +rhqj: qrpv + ngzp +szmm: 3 +ztwb: 9 +npnf: 1 +wltv: rqfq - hncq +bwff: dwdd + qhzd +slnh: ljnf * tnfz +ppwz: hqbb * nlts +hgls: wnzr / wwtj +dbvt: 3 +wrst: qdrg + bnfz +rzzg: rpbj + fsrm +prbr: hpzh - zmtg +bvdb: 2 +jlmb: cmtm - qbjm +rbpq: wnbb * glts +jwjj: 15 +dhts: 8 +dcpm: 3 +qvpv: grcn * cgwj +bbhp: 2 +sjfs: ztpd - bnzl +wqpv: fzgj * rvvn +sdhj: 2 +wfbz: 2 +mdnp: gvfn * tfqh +ctjq: tgvp * wjzd +mbqs: rrmg * rnnq +wcfp: 3 +ftzm: 3 +nwbt: bhpw * bhgh +bmsf: fnws / bcmp +cmnt: bvjd + lccn +wqfz: 4 +jrgs: hjgd + mpst +gmzh: drhw / sdsl +pnvs: bmsf * qljb +gcvn: wqqv + dqnv +qbvr: ltds - vsgw +phbh: snsc * flhs +shtz: pnrv + pvcs +smsm: 4 +gznh: 7 +tjch: ncrt * rrgh +bpnt: ccfw + dfql +lljf: 3 +qfsz: 2 +dgvh: 3 +lvbp: hdrj + trbs +cdvv: 4 +qlzg: 2 +rwbg: 2 +snff: 4 +flrw: 3 +tdnf: 4 +nzlr: 2 +ftzc: 2 +pznf: cllb * zzcv +zjvz: znfq * chlt +nvjl: ngzt * wbgs +qtvv: 2 +hdff: 4 +swmh: vrbh + jdjq +ghfr: 2 +ghtd: cfzf * gnsc +mfmt: cdqv * chfs +pgtq: phwc * gbgs +frjp: 17 +bnfz: 2 +qfqz: mswh * slds +djmr: 2 +crcm: lsnd + zbqq +ngbg: jgld * lhfr +sbqm: 3 +wlqd: 2 +jfrn: 3 +jbqf: cdvw * dnvm +zhrs: pjjj + fngd +lvtv: nvjf / nmlg +vclb: bbcn + jqhr +qtgd: 2 +hqbd: 4 +qqnm: nsqq - rfbw +nvjh: 6 +jcgh: pmwl * hcqw +bgzz: swsv * qldj +slds: 2 +lwsn: hcfs + rswn +bhgh: hcsc * mzzd +bjbr: 3 +tgvp: smft / cnhr +dbfm: 9 +msmm: djmr * bshp +llqs: mmps + pwqg +qqpl: 5 +pfdc: mwmp + zvqs +qlvg: 2 +wzdv: 3 +glqr: qqpl * blgg +vdgt: 5 +qrnj: fjrq * nwhm +fbrf: 3 +gvmj: ngbg / vsqt +nrjc: 2 +sdsl: 2 +mqvg: tbqq - bzqw +chvq: jdsd + cgcz +lrzn: gfrq + drgv +crrm: 2 +pgbv: swhz + dqld +brqv: 2 +gmln: 2 +wcmz: 3 +hbhz: 18 +vrcl: 5 +hqdv: 5 +nchp: dtzl + qpdv +bfvd: 7 +nnhm: pzpp * dwnz +thpg: 4 +jpzw: 3 +vrmt: lqrr - smrq +hnbn: 2 +tsbf: lljf + mqnl +nbpq: 2 +csml: lbtn * zspm +cnmq: 8 +qbwf: vvhm - dsqb +jbrp: 11 +bbzc: ffbb * lqft +pgfr: 3 +fmwn: 2 +lrvc: 10 +stqc: 5 +ngzt: rlbp + fbjn +mdrm: jhwn + lmht +mrtq: rzcm * nqgr +lpvs: 9 +lqfq: 3 +rnnq: 3 +jdfj: 15 +tqst: cjbz + rvhn +dnzc: mmbs * qlmw +lwld: 1 +sgjm: 8 +bfzd: 17 +dchw: 4 +rlrb: tftg + qbqm +pchr: trft + bcbw +lvhm: dhqh * dchw +mswh: 5 +sdgs: 5 +snfj: 1 +sdwj: 2 +qmqt: wttp / cgnv +przh: wqlh + nqzz +qrpv: sqmd * tpdj +pjsp: 5 +hpmw: zdsr * rlrb +jhlw: 9 +ntqb: gzmv * pzzg +qpct: 3 +rvvn: rrqr * wflc +lmcj: szcv + lqcm +bvjd: 2 +fngd: wjds * nrvw +fnws: jmwl + rtgr +frqq: 4 +ltsv: 3 +cmnv: 7 +wdqj: vhrn * hpmw +cjbz: qlzt * fqjd +rqpj: tqst * ptdz +lbtn: 8 +dbgp: lbzn * jqtj +qbjm: 12 +ljzj: 15 +mrvr: 3 +nght: 2 +djff: 12 +jmqh: 14 +vcpt: ppwz * zvqw +vsqt: 5 +tfjw: bhvr * vjgb +hwvf: vszg + lvrc +qgtf: 6 +mmtj: 6 +blgf: 3 +mvmz: qpqb * cvhn +svhz: jqcf * nzzv +wfds: 3 +pnmc: 13 +szvb: mdld + bfgp +bnwj: 2 +dnvm: msmm - tqfz +fwrh: wdqj - dqnp +cspp: mggl + rndt +lltp: rwcd * wfds +smrq: lrlg + bwqm +rgzs: 3 +crmw: ntmt + cjlh +dncw: 5 +rvjf: mttr * frlv +wlmv: 4 +fqbj: pfdc * rqbd +fwjg: vdsz * brfj +gnsc: 2 +gtwd: 2 +qdnl: nmvn - wpqd +pjjj: bnjt + fhdz +ntsl: 1 +glqw: 3 +wmzt: 3 +vjzr: swmh + svhz +ncgd: 3 +bngr: 5 +qtfp: 2 +bdqg: 2 +hzpr: 5 +tctd: 13 +jlqg: 4 +qhlj: gcvn + bntz +jtvm: 9 +szcv: jswz + lbvn +sfmn: wchl + cscm +lfhp: nght * wcfp +root: bsbd + fcgj +jbwd: 6 +zrnr: 2 +hrmz: mthn * dncw +rfjw: 13 +hpdh: 2 +jqrl: pvwn + hjmr +vgsm: 5 +mvgg: nbfg + mtfr +hcqw: 14 +cdtq: rjrt / mffc +spgw: wbvt * clbn +wfjn: 5 +hrtz: llqs * rvlz +rzsn: 5 +fbcd: mfmt + humn +vhwz: mtwg + fbgc +lvcn: 4 +grdf: dbht + sgvm +pdbc: rsnp * djqq +qssh: 5 +wnjl: 9 +btwt: tzth * hrtv +hplt: 11 +mwwr: bsnq * crrm +smqg: 14 +dqcj: blbc + bghp +ptwr: 7 +mttr: hnqc * wfms +pzcc: 5 +jscq: 1 +hzcm: 4 +tsjq: nsfm * hpdh +fsgb: vhhz + jhgd +plvw: zpqd * rffd +tcqz: dqhh + mlrz +mqzp: 2 +tldn: rjfh * zwqw +rwmq: tdnf * jdrg +vnft: mqrm + tjch +ztqg: wtwb * bqld +fjvg: snfj + gbzd +nzdz: sfcv + qtgd +qrgn: 5 +tbqq: jplv * rmzw +tdjh: wrst * wnjl +qwqw: 5 +pdbt: 11 +bnmb: cvnr * nvrb +lslq: 1 +twwv: 19 +rzcm: 6 +jtjd: 6 +htgm: 3 +pjss: 2 +mrwz: 12 +djqq: 4 +jmcf: 12 +hmqr: zrpj - nttd +lqdc: 5 +gpzn: hpvb + tpwq +pgdw: 4 +mwgb: nvdh * mrrt +wggq: bgwj + tldn +mwqc: 2 +bnfp: 13 +pwlt: 5 +hlzp: phrv + hrmz +qplw: ncgd * cmnt +vhqz: pgtq - ncnm +zptr: 3 +gtbs: 13 +zwwb: pqqj * dpqz +hmfb: 4 +mffc: 3 +lqgr: 9 +bcqm: vjzr + jzlv +cbdr: wbsb + cspp +bssd: 2 +dmsz: vwdl + rmqt +fpwz: ltsl * fbqs +rbmm: 2 +rvhn: ttwm * tctd +hqjt: 7 +bftg: ftjv * lghm +ppjl: lfpz / nlcv +nzbp: chtt * hnst +rwzt: ltgf * qwqq +zwgg: 5 +frlv: 3 +vmgn: 1 +tvrd: qnhq + ldzb +wfld: 8 +pnwz: stlr / fbrf +ndmd: 2 +fmbj: slmm * twsj +jqcf: 3 +jqsn: 15 +wzsh: 3 +hjqq: 11 +cvqf: mpws * sdrn +wrll: 2 +vtns: jvrt / cjvp +wsnf: 4 +qfjg: 1 +rsqz: bbzc - vfwd +dddm: 2 +ftmn: wcmz * hrtz +bcnd: 13 +qgtc: 3 +vthd: zbzf * mmnw +mvnc: 2 +ndpf: 10 +pwlh: hbhz + rtmt +cfzf: rlqh + qfrg +qldj: 2 +ftqd: nssr * mqzp +lhml: 7 +mrmm: pszs * cjlm +crnb: ndnm + lslq +qpbz: 3 +qspw: 4 +jtrg: 7 +nwwb: hfvj * snmq +rgpt: 4 +spcf: cdvv * wpgm +brqh: bndd + nbbd +qfrg: hdff * qmgt +ddmr: fhzm + qvbn +lpqs: 1 +zvqs: 11 +dfdl: 3 +vnbv: ldbp * frjl +bwqm: 19 +zjpc: 4 +btbn: cvvw * hnlf +bpgp: nqlh - gqgh +jbsn: 3 +tdlw: 3 +fsrm: pzqv * zjcn +rjrt: nzwc * gcmz +wpdn: rsdv * wcfj +dzvg: 2 +rdfn: rbqt * btzg +zrnz: cbjq * jmbs +djgb: mrnr + ttdb +pwln: vqlt * mnrr +vfgt: 7 +tbdh: dzvg * stcv +jlwb: 3 +cshj: pwgj + rpbg +lzhf: 5 +hncq: 11 +nqms: 5 +lhfr: fgbm / mstm +ltdq: 4 +zssf: 5 +dqld: sjrh * zdhf +grcv: pnvs * gvgp +zfbq: ggbp * plfd +lmjg: 4 +lncn: 1 +qmjq: 5 +rnbs: vtgj + dpmg +mstm: 2 +pnwh: 2 +ccfw: 8 +tsqc: 2 +gqpj: hqjt + fwzf +tnfz: qrln * nvpd +rhwm: 4 +bcnp: dcfw / nzlr +fvrg: 3 +vtgj: 5 +wwtj: 5 +slmm: crrj + bcgz +mjmt: 4 +zzpd: 2 +wttp: lbgc - gnrj +qdfp: qlvw * hmfd +psfr: wfbp * wzdv +rlqh: ptwr * lvbp +mgsz: qqpt * hgls +cjvp: 2 +hrjj: 2 +fjrq: 6 +qmpm: bwwc * hcdz +lddq: rjbz + ppsl +snbl: vwhb * szwj +bghp: wgcm * tfdv +zdnh: 11 +cbqn: ppfs * fjps +pbzb: 2 +rmzw: ftvm + mhlj +qpqb: ptnv + vhds +jffq: 3 +rscq: bcdf + tfjw +wjzv: vcqw / nqpq +ngbz: 2 +hdrj: 5 +slpc: jstb + lncn +bmzw: 5 +cmtm: twcj * tjqj +pwqg: 17 +dgpr: bpgp / lmjg +trpv: 7 +qnvn: 2 +gcqh: 3 +bdgd: 2 +dbcs: nrqv - zlpv +nrqv: fvph * hzrc +cnvb: hrjj * lbqn +cvgt: qhtv * vgsm +tqlp: 2 +sgpj: 11 +swsv: 7 +hndh: 2 +smwv: gssz + rgrp +dwdd: fzdp / gtwd +jszj: gqrp + tpnf +ncrt: ntnh + mwgb +rpbg: 1 +jvsz: ndmd * hrbr +ffvs: 2 +mnhf: 3 +hbwh: ggpn + pbzb +tpmp: qjqw * hzvm +nttr: 3 +ldbg: cprm * wrbf +ntpj: 4 +lbbv: 3 +vrct: 2 +lccn: 5 +nrsd: 10 +fvzw: mwwr + vmgn +vgjq: 2 +dptm: 6 +ggbp: wbnh + jhvm +qdrg: 5 +hcpf: 4 +zrbc: 3 +tpjw: shcg / hjmp +jnqv: wwqp + jcgh +fzrd: 2 +cbjl: jdfj * bnwj +bnjt: 1 +czpd: 4 +fjld: tpjw + ghvl +sbwd: 4 +rqfq: lhmd * nfvj +pwpn: 3 +ztzq: nqsl - vzts +ltqr: dqcj + qbgj +nlgg: rvhs * rqss +ltsl: 2 +zgzs: 3 +mqrm: cqcg * cbdr +fhtw: fcql + brqh +zdfg: blmp + qwcl +dzwg: 4 +czst: smwb - pvcn +ncsp: rddj - zhpq +bsnq: 3 +sflt: qtvv + ftmn +vsmt: pwlh + gztl +vszg: smqg / dfzw +tqfz: wmdp / mwms +fhzm: lfjp + rjtc +wgcm: dsgt / tqlp +zsvh: grdf + svcp +hjfj: lmcj * hndh +pqsr: 2 +lrbp: wgsb / htgm +twdf: 2 +jdbp: pnvd * ghfr +smdh: 4 +cjhz: pvfm * gbtc +psfp: 3 +cqmq: 13 +nvlv: 17 +lrqh: gmzt + gmpl +wqlh: 16 +qrsg: 3 +zzcv: 14 +sgzh: mvgg * zgdb +vrbh: wqpv / gwhs +drlt: 5 +shrh: 13 +qrln: 2 +hslj: mgsz * jddd +mtsv: 3 +hmfd: 2 +grcn: 13 +fctt: smhv * qzpn +lhmd: vszd + nfgv +rtgr: nvhn * szvb +zmvz: fqbj * swhh +jdjq: 4 +vhzf: 2 +fmvc: fjcg * dhts +dzlc: rbpq + vntv +fbjn: tvrz / nvjh +ppcl: 3 +jjjj: 2 +wfnm: fvrg * tzcl +dflc: 2 +ffnt: mzfn + vcpt +zbnt: 3 +dqnh: 2 +slww: stzl + pcwz +djjs: ltzm + qfjg +sqml: 7 +lghm: 2 +bsbd: rzff * wdwf +gwhs: czpd * jbsh +zqpw: jsrb + jwjj +drgv: 3 +rswn: 5 +gnjq: 2 +sjcd: bcpn * fvzw +fzml: 11 +mthn: 2 +cgnr: 4 +ldbp: vrmt + gptt +lqrf: 2 +gjbv: djff * stqc +ljnf: rtjb * wtnp +hjmp: 6 +mrnr: 2 +zspm: 5 +qlvz: gjzv + hpmm +tfdv: 2 +vtvn: hrcp * wtlq +qlmw: vcfm + pqsr +hsmp: rpwz * wclq +wcfj: 2 +brst: 5 +fnrh: 2 +qhzd: fqlp + jpzw +mmps: jfld * lqgr +lpfz: lqfq * wgbc +bjcs: mhbr / vgjq +tbqc: 2 +qhwm: 3 +hzvm: npnf + nhnp +nqhg: tcjb + hgzs +bzdh: 2 +gbtc: 3 +wfnl: 5 +ndlf: cdnp + ddmr +nmlt: pnpc * hnlj +nhfw: tbqc + dnzc +rtbm: 3 +fbpz: sqzp + pjrt +rjtc: tjtl + wtlg +vspf: bnmb + ndsm +dhqh: dhpp * zsvh +ddln: 1 +lbzn: 2 +vhrn: bjcs - vnft +cgcc: 6 +cgvs: 7 +jqtj: 5 +wqnp: 12 +dmtd: fjzz + sgpj +rlvd: vlqd / mgsl +cvvv: bqtp * pnwv +rjdp: qfzb + csnf +hmvq: 17 +vjtf: lbzc * djjd +gbgs: mqfd - fmbj +wgbc: 3 +vdbp: 1 +vtdp: 10 +cgvv: bfvd * pbhg +vfhg: nlsw - qgnb +pcwz: dptm * frjj +zngg: 4 +scrz: 2 +tvrz: wslz / dpvl +mqzw: 2 +zfmv: 10 +gdmv: 5 +cgnv: 2 +qlvw: rfcv + nlst +fjzn: hgnr + lqml +vzgb: 12 +dsng: 5 +pbvh: 3 +qbqm: 10 +vwdt: lgrj / pmlg +lhsw: lpjq + rdbs +hzjj: 3 +jplv: 3 +zmlh: nfbp * fhtw +zwbh: sshm * rjdp +mhnm: bwnc + fzwr +wmdp: tdhw - gjmt +pbhg: 2 +qmzt: 9 +dlws: bssd * rtbm +rbzl: pjlz * qfqz +tpjp: jdsc * wqnp +vlgn: 2 +phwc: 10 +bcng: ctjq + bdtp +cvnr: qtmp + bmzw +bmlj: fvng + czvm +llhb: 3 +nbcb: rnns + ldbg +ffmp: plzd + tzcd +nnzp: lhsw * tlwr +szlh: 2 +gztl: 11 +mtwg: hcpf * pjss +mpws: pnfb * pbvh +fqgl: 3 +qqpt: 5 +bqtp: 2 +nttd: 9 +svvh: shpt * fmvc +drnb: lqqh * mlbw +ptnv: csgr + plvw +wtnp: 3 +ndgh: 4 +lrgv: 2 +nrqr: vvbz + vfzw +hfvj: 2 +ctqb: tsft * lrgv +nqlh: zdfg * sdhj +nhnp: 13 +tcjb: 12 +mnhc: szlh * pcvv +jnnp: 3 +zbqq: mtdh * frst +gjzv: brst * twjq +shwr: 5 +gmpl: qlmg / cddt +lfpz: mvmz + hsmp +tmhl: jbsn * fhjz +wglc: 14 +ppll: 5 +ccbp: 4 +jflm: cclc / rgpt +mwms: 2 +svwg: 4 +qfss: 10 +tjtl: 7 +vwmr: lvtv + tvgm +cllb: 3 +nssr: 3 +qcfn: lvcn * wjmq +rmvq: 2 +rbtb: mgmw / gvww +jcdb: mjmv * zbnt +cdpw: ngps * hmqr +zdsr: 2 +plzd: rvnh * sszh +phjj: hzcm * bvdb +bnmf: jtvw * rdfn +twtq: jbqf - ztct +qwcl: jjvz / tptf +ccjf: 13 +mrjc: fnrh * cstm +thlz: 2 +thcc: ljtp + ztwb +fjcg: 2 +flhd: 3 +gnrj: ppjl * mmtj +hnlf: 5 +tprm: 2 +vlhc: 13 +tvgm: gdmv * dqsv +qvpw: gqpj * jvtz +vfwd: 5 +pmwl: lwsn * lddq +rzbj: 17 +rncj: 5 +znfq: 2 +rjbz: gznh * mcht +hhws: vclb + ftbq +qfln: 3 +ltmj: wghf / zjvz +csln: 17 +snvw: 3 +ltgf: 3 +wfbp: 2 +hjlz: qmqt + jvgd +zvst: 3 +qvvc: 8 +bjfh: 3 +mzfn: cdpw * ftzm +dqnp: bcqm / wjgf +stlr: vzgd * gvbp +cvfw: 3 +rtmh: 15 +rqss: 3 +jddd: dcph + mrvr +gggh: 3 +gssz: nwwb * vmnc +tsms: gnzq * rqbq +lrcj: 19 +pnfb: 3 +rtjb: 2 +zvmv: fvhm * gmhz +dfrb: fbtc + bppp +mcfr: 1 +pjrt: 1 +ltds: wrll * wnvf +fvsb: qncp * cfbh +nldv: 4 +cdnm: 3 +jwqg: 2 +jvqz: 1 +sqdd: rzbj + mqgl +cwvl: jszj + rvjf +qcnv: nrqr + wrmw +fhjz: 2 +svst: qgtc + snbm +qdrc: 17 +cfmw: 1 +jgld: 5 +bppp: llhb * qwqw +wwqp: vjtf + rwmq +cprm: 4 +fcgs: 7 +swfp: tnnt + lvhm +frjl: 2 +nwqz: 1 +mldc: 3 +mgmw: pfvz * hjqq +mnrr: vvjg / gggh +hvtv: qznt * wzfr +tpdj: 9 +znlh: 4 +qbgj: mhzn + nmts +cnhr: 3 +djgh: bdqg + nzdz +lccp: 3 +frrn: 3 +bbjs: 7 +gdpg: 8 +pnwv: lhvt * ggnd +vhtl: snff * vldc +vjwz: 2 +qwqq: 2 +rdnj: smwv + dcbt +nltq: cbqn - lrzn +fpvs: jvsz / fzdg +shcg: qpqs - snhd +stzl: rwzt + mnzz +rfcv: qwnz * mfql +snhd: jtrg * sqdd +gjmt: 3 +btzg: 5 +vfrh: 9 +lpjr: bvvl + rmvt +nzbz: dqnh * hplt +dhpp: 2 +hvsd: 3 +ldtj: 2 +chlt: 4 +rhtv: fzml * jnzr +wpgm: 5 +csfh: 2 +mhzn: zglw * slpm +wtbs: ltdq * vhzf +cpqv: 15 +dngq: 2 +vszd: 12 +pgvq: ptvh * hgwm +smnv: 3 +zrfw: 7 +jbvq: 7 +rmqt: gcmv / vlgn +pfvz: 2 +fmvw: qnbn * jpcd +jqhr: 4 +szwj: 3 +tqfr: mrmm + bcnd +rmvt: 3 +qllm: 3 +gcmz: zrnr * vffj +sqcb: sfmn + hvtv +chvn: 3 +fzvh: ztrt * nbpq +sbtd: 3 +hnst: wvfb + zphs +ljtp: 16 +lqml: 4 +dpqz: 3 +pwgj: flrw * cbfh +qvbn: 2 +ppsl: dlws + bjwg +jfmb: jbtg * cwhc +bzqw: 2 +nhcr: 3 +llnl: 3 +fzwr: 5 +mfst: cdtq / qfsz +flhf: 3 +whbb: 8 +rllb: 3 +rfcm: rsqz * ztdn +lqft: tcgm * nzbz +snmq: jwqg + zdnh +fwmw: jfqs + sgjm +ngfs: ccbp * dphz +mqfd: lpzb / ftzc +lflj: vtdp * cjhz +vzcr: jmqh + zbbf diff --git a/inputs/input.22 b/inputs/input.22 new file mode 100644 index 0000000..c2ac1ec --- /dev/null +++ b/inputs/input.22 @@ -0,0 +1,202 @@ + ........#........#...............................#.#.......#.....#...............................#.. + .#...........................#....##...........................#...#....#.#......#.#................ + ....#.#....................#.#....###...#..##.....#...............#................#..#............. + ............#...............................#.#..#.............##...#..................##.#......... + .....#.#..#........#...........#..#....#....#................................#..#..............#.... + .................##.#.....#.....#.......................#...............#.###......#...........#.... + ..............#.#..#....#............##.......#....#........#..#......#.................##........#. + ........#.#.....................#....#.....................#...........#.......#..........#......... + .....#..#.......#...........#.......#.#....#...........#.#......#........#................#......... + ..#......................................#........#..#.......................#..##.............##... + ....##....................#....#.................#...#.........#..#.....#.........#...#........#...# + .........#........#................#...#..............................#....###...#.#..........#..... + ............................##.............#....#......................#.#.......................#.. + ............#..#.....#................##.........#..............#..#....#..##....................... + ............#..#...#..#...........#.......#.........................#.........#............#.#...... + .......#.....#.....#........#...#...............................................#......#...#..#..... + .#...#....#.....#.#.#...#................................#...#...................................... + #.........#.........#..........................###............#.#.#.................#.....#......... + ...........#......#..........#........#..........................#......#...........#.#.....#....... + ....#...#..........#...#.....................##.........#.##..#............................##....... + ............................#.......##...........#......#.........................#...........#.#... + ..#..................#..#.........#........................#.......................#.........#.#...# + .....#..................##........................#................##..........#........#........... + ...............#.............#..#..##....#.........#..#.......................#..#...#........#..... + .....#..........#...#.....#...........................#...............#....#.......#...##..#.....#.. + .............##......#.......##...#..........#..................##..............#...............#... + .....................##.#..##..........#............................#..#......##.....#.#....#.....#. + .#........##.........#......#..............#.....#.......#...#.........##.....#.#........#....#..... + .............#......#...........#.....#.#...................................#...#................... + .#.......#.................#.........#...........#..#........#....#...........#..................... + ...........#................#.....#.................##......................#.......#..#.....#...... + ..............#............#.....#.....................#............................#..........#.... + ......#....#..........................#..#....................#............#.........##..#..#...#... + ........#.................................#...#............................#...................#.... + ..........................#...#....#............#.......................#........#........###...#.#. + ........#......#.#.....................#.......................#...#........#.........#.....#....... + .........#...............#....#.........................#............#......#........#........#.#... + .......#..................#....................#.....#..#................................#.......... + ......................#........................#....#..##..#.......#.....#.......................... + ...#......#......#................#..................#............#..........#.#................#... + ....#.#.#..#.....................................#.................................#..........#..... + ...................#...#....#.....#.........................#.....#..................#.#...........# + .........#......#......#......#...........#......#...........#........#.#..#..##..#.....##...#....#. + ....................#.............#...#.#.....#..................#....#.......#...........#....#.... + .................#...............................##...............#........#.#...#..#.#.........#... + ..............#.............#....#......#....................................#..#................... + .......#...#....................#......#..#.......##........#..........#............#...#........... + #..#..........##.........##...#.............................#.......#..#...........................# + ..........#...........#......#..#...........#.....#...#.##.....#.....#...........#........#......#.. + #........#........................................#.#...........#..........#.#....#................. + ...............#.....#....#...........#..#........ + ....#.............#.......#....................... + .#.......................#.................#...... + ..#....#.....#..........#..#........#............. + .......#...#.........#.....#....#..........#...... + #.........#....#......................#........... + ..#......................#...........#............ + ......#..........................##.....#.....#... + ........#............#.....................#...... + .......#............#...........................#. + .#..........#..................................... + ..#....#.....#...................................# + #......###..........#............................. + ........................##...#.........##......... + .......#..........#.......##...................... + ..................#....#.....................#.... + ............#..................................... + ............#..........#.......................... + ...#....................................#......... + ....#.................................#........... + .#.#............#..............#........#......#.. + .....#......#............#.....................#.. + ...#......#..#..#....#............#..........#.... + .....................#.#.....#..#..#....#....#..#. + .....##..................#.........#.............. + ...............#............................#.#... + ..........#............#.#.#........#............. + ..........#..##....##..........#.#.......#.#.#.... + .........#..#........#......#..................... + ....#...#..........................#...#......#... + .....#.......#..........#......#.......#.......... + ......#.....#.#............#.........#.........##. + .....#..#........#.........#........#...........#. + ...........#.............#...................#.... + ...........#.....#.#.................#.#.........# + .##.......#.#................#.#..#..............# + ....#.....#.......................##............#. + ......#...#........#.........#...#..........#..... + ..#................#....#..#..........#...##...... + .#..#...............#...........#................. + ........#....#...#...##..........#................ + ..#.........#.#.............................#..... + ......#............#............#................. + ..###......#......##.....................#..#..... + .............##...........................#..#.... + .........#....#.##........................#....... + .....................#........#............#...... + .....#...............#.............#...##.#.#..... + ......#....#.#......#.............#...##....#..#.. + ..................##..##.#........................ +................##........#.........#........#..........................#..................#........ +...........#............#.............#........#...#....#...#.................#..............#...... +....#.......#.#............#.#....#.......#..............#......................#...#.#............. +....#....#........#..#.....#..#..#.....#.....#.........#............#...#..............#...........# +..............#....#.....#.#.#....#..........#......#............#......#...........#...#..#....###. +...........#.....#..........#...#..##........#....#...................................#..#.......... +............#..............#....#...#..#.............#.#......#..........#........#.........#....... +.....##..............................###..........#................#.#........#..................... +.......................#..........##..........#..........................#..#......#.........#....#. +..............#..............#.#....#.......#................#.....#....#...#..#...#............#... +......................................#.#.............#..........................#..........##...... +........#.....#..#........#..........#....#...........................#...........#................. +.....................#...............................#...##.#.....................#................. +.........#...#..#.....................#................................#.....#................#..... +........##......................##...#............................................#..........#..#... +.....................#.......#........#....#..........#.##........#........................#........ +...................#.................#...#.###..........................#.............#............. +............#...#.....#........#................#........#............#...#...............#...#.#..# +#.....................#.....#..#.#......#.....#.............#.#...........#.#......#.#..........#..# +.................#......................##.........#..........###......###.........#................ +.#..............##..#............#..........#..#............................##..##.................. +.........#......#........#....#.##...........#...#...................#.#..........#...........#....# +........................#....#....................#...#..............#.............##.#.......#.#... +..............#.......#............##.................#.....#.....#.#................#.......#..#... +.................#.#.....#..........#..........................#...............#..........#......... +..##...........#..#......#..................#.......#....##.#................#.#...#................ +#................#.......................#.......#....#....##........#.......#...........#.#........ +..............................................................#..............#.....##............... +......#......###..............................#...#....#..........#..#.#............................ +............#.........#..............#...#......#..........................#........#..............# +.......#.#.............#.....#......................#.............#..........#............#...#.#... +...........#...........##..##.....#...............#....#...#....#............................#.#..#. +.......#..#..#.#..#....#.#.......##...........#.#.#..#.............................................. +............#.............#.##..........#.#......................#...#.##...........#.......#.#...#. +....#...............##....#.........#...........#.#......#....#....#..#......#..#.###.#.#.....#..... +....#.#.......#.#...........#............................#..........#...#.#.#.......#............... +...........................#.#.#..#..................#..................#..#...#..#...#..#....#..... +..##...................................#..........#.......#.....#...#..#............................ +.......#..##........#.#.#........................................#...........#..................#... +#.#..#.......#..........#....#.............#..........#.......#.#.#....#........#..................# +..#......................#....#..#..#....#...............#.....................#............##...... +..#......#.#..#........................................#....................#............#.#.....#.. +...#.#.............................................#...............#................................ +...#..#..#............##........................#...#.#.........##...................#.............. +............................#...............#..................#.......#.........#..............#... +...............#...#....................#......#............#....#...........#...................... +....#..................#......#..............................#..#....##...#..........#.............. +..........................#..#....................#..............##.#......##..............#........ +........................................................#.....................................#..... +......##..........#..#...............#.......#....#.....#..#.........................#...#.......... +.....#......##.............#..#...............#... +.....#..................#.#....#.............#.... +..........#.......#.#.......#..................... +...#............#.........#...#.................## +.............##....................#.............. +.............#.....................#.......#..#... +......#..##....##.........#..............#......#. +.#.##..............#........#......#.#..#........# +...#.................#.....#..#.................#. +..............#.#.........#........#.............. +.....#...#...............#....#........#..#...#... +...#.................#..#......#......##.#......#. +..##..#...........#............................... +...#...#........#.........#....#....#.#........#.. +.#.........#.........................#...#........ +..........#....#..#.................#..#.......... +#...#......................................#...... +..........#........##....#........#....#.......... +..#........##..........#...#..........#.......#... +.#.#...........#.....#......#..#...#......#....... +................##...........#......#............. +##....#.........#...............#....##........... +............................#.#................... +..........#...........................#.#...##.... +............#....................#...........#.... +#........#.............#....#.................#... +...#........................#............#........ +..........#...#..........................##....... +.......#..##....#.......#........#.#.............. +..........#.....##.....#....#...........#......... +..##..#..#........................#...#........... +.........................#....#.....#......#...... +.......#.#.#.................#.................#.. +...#......................#.....#................. +.....#......#.......#..#.....#.................... +..........#...........#...............#........... +........#...........#.........#....##.........#... +........#.#........#..........#................... +................#.......#...##..#................. +...#.#....#.#....#...#......##........#...#....... +.................#.........#.#....#.#.....#....... +............#.....................#...#........... +........#.......#...#........#...........#........ +.......#............#...#.#.................#..#.. +..................#.............#..............#.. +.................#.........#...........#.......... +........##.#...............#...................... +....#.......#..............#..#.....#............. +..#......#..........#...........................#. +........#........#.......#.....#...#.............. + +26R47R4R17L43L25L43L44R10R16L33L39L5L3R43L6L20R19R21R36R9L48R25L44R22R42R20L15R11R18L32L1R44L7R22L22L8R44L25R11L26L19L25R43R14R4R38R23R23R44R26L22L34R48R33R44L6L40R6R43R21R36L3L5L33L42R29R46R26L19L36L23L27L43R31L8R33L21R39R50L43R40R13L35R27L5R9R3R48R16L26R5R21R43L4L35L12L12L37L1L42R34R35R28R9L19L10L1R38R49R38L38L15L20R32R8R42R40R4L40L4L11L14L2L12R33L16R39R25R21R32L8L23R15L37L16L25R6R32L12R34L5L12R48R25L17L15R35R8R2L35L47L49L21L48R46L23R16R32L39L25R19L23L2R5R8L11L39L42L6L12R27L32L14L1R28L6L44R44L43R47R10R40L14R1R19R34L30R43L8L33L2R22R28R23R19R6L30L45L32L20L33L18R8R38R11L41L38L34R24L31R22R29R6L49L10L44R34L23L17R19R39L37L31R40L19R25R32L46L27L17R11R45R2R23L30R2L48R21L1R46R29L4R26L7R19R9R35L30R39L23R38R8R17R7L17L36L14L7R49L34L43R28R23R31L23R38R44R32L23R45L2L19L28L14L25L6L43L28R24L25R10L31R3L1L14L20L48R39R33L34L35L13R7R9R14R30R16L48L40L20L18R7R13L7L2L48L32R30L28L32R26L36R41L29L25L2L7R49L36R42R26L37R31R24R29L21L3L10L30R9R26R32R44R35L24R43R22R12L31R25R34R28L34L36L22L40L9L25R34L11R8R12R45L40R2L26R9L37L30L34R33R12R25L6L7R37L33L9R38L14R25R8L43R37R34L7L34R43R46L47L11L23L1L11R47R14L31R31R6R26R6L18L6L12L27L17R31L19R7L5L25L24R45L12L40L36L13R49R48L12L28L35L17R24L29R29L45R32L38L6L27R48L27R37L5R8L6R1R46R9L2L47L2R37R21R36R49R12R34L44L49R1R20R20R34R5R7R31L32R42R6R25L18L19L6L1L36L50L4L48R37L49R39L16R9R50R11L15R43R27L22R40R10R6R50L46L2R6R39L16L14L1L22L50R27L32R13R44R37R47L19R46R6R43L5L21L39R6L4R45R1L2L5R42R35L32L1L26L43R26L19R38R1R24R26L12L25R46R28R19R30R46R12R50L49R25L4L29R47R42L22L29R42L6R30L18R15R25L31L13L34R40R42L38L18R40L26R10R39L30R7R12L29R15R28L6L40L33L29R6L8L11L42L25L12R14L33R16L42L14R38L30L8L33R34L40L25R17R29L19L47R29L12L17R12L47R19R37R30R48L45R14L48R5R31R20L39R20R24R46R42L21L4R14R3L46R32R15L45L47R24L16R40R33L50L21R12R20R43L47R14L47R30R33R27R48R44L3L45R19L34L25L13R24R38R28L37R34L44R45L15R36R41R12R44R15L28R7L8L22R16R36R3L18R34R34L47R1R24L8R27L50L24L26L34R45R43R23R34L33L5L10R41L25R11L4R50R31R18L9R41L43R30R17L7L31L45R17R8R21R32R18R47R50R11R2L24R38L34R27L19R50L5L35R16L50R41L30L14L27R39L42R34R18L36L17L42L36L28L20L43L48R24R33R32R20L48L16R33L50L29R36L26L49R27R47R4L36L12R45R15L18R41R39L30R44L30R16R38R8R8L29L49L38L50R49R44R7L23R30R21L35L45R22R11R19R45L46L37R36L20L6L27R18L16R46L39L6L15L19R15L11L39R4R42R23R11R44L1R44L23R15L22R40L12R1R41L36L43L41R20R49L50R18R1R43R11L35R45L10L16R27R17L30R14R24R20L21R30L41R25R7R47R15R7R46R44R19R28L49L32R43R1L33L48L46L15R20R3L33L38R39R8R26R16L4L49R36R40R15L36L16L39R30R3L33L14R25L27R41L43R26R46R25L3L47R10L38L31R11R49L1R40R8R13L39L23R31R30R21L5L48R7L33L35L37L43L18R38L8L18R14R29R13L36L44L23L40L38R7R13R48R28R41R8L48L2L40L11R33L17R20R16R21L33L31L50L31R31R23L39L19R6R33R37L49L38R25L35L21R50R33R21R34R20R2L45R36R11R29L3L30R13R25L38L13L30L31R10R3L14R26L5R15R36R22R12L7R45L3L10R19L10R21R45R1R21L6R22L48R27L16L22R28R49L32L21R6R32R2R27R45R5R4R35R45L44L32L8L31R45L38R1L28L17L21L25R34R45R38L11R23L25L32L3R25L24L6L45L25R30L39R20R34L29R33R28R18R9L47L48L49L26R30L39R47R6L21R14L10R23R39L39R36R27R31R18L24L12L5R16R45L29L4R38L19L37R38L37R33R11L2R11R43R32L8L35L41L13L35R20L43L17R23R42L35L16R23R12L6R36R25L33L5R28L32R5R32L26R14L40L27L8L16L21R31R43L21R5R16R1R21R44R45R5R49R45L44R19L11R4L22R45R48R12R34R43R46L19R49R24R7L15R26R18R37L8R11R14L1R2L49R3L50R46R4L14R9R40L23L49R41L49R46R7R10L25R44L8R35L18L24L36L4R33L16R25R50R20R20R19R33R7R37R20R40R14R15R30R26R41R42R8R14R12R35L23L28L6R34L33L48L9L31R7L42L13L26L32L42L9R6R23R35R41L9R37R9L46R28R12L16R39L23L9L15R4R9R38R36R5R2L23L47R8R16L40R22R39R19L40R42L23L9L50R11L34L41L1R29L1R14L18L13R30R36L1L49R34R40R27L43L25R26L13R22R41R15R36R44R39L1R34R7L11L7R23L4L5R48L9R4R3L36L1R4L47L14L16L42L22R50L39L44L1R7R13L21L14R38R36L47R26L36R31R36L41R22L16L18R10R26R9R49R18R33R7R32R9R24R22L7R20L30L1L50L11R14R15R42L34R5L36R16R4L32L42L35L34R44L18L4R47L15R20L44L32R21L47L4L34R12L40L15L1L14L41R27L30L11L17L36L4R5R4L49R33R32L43R1L5R11L4L4L27R17L1L42L3R2L21L15R9L44R25L36R9L18L17R44L14L24L3R25R25L10R20L37R11R19L18R17R17L5L26R12L9L32R47L41L16R41L10R40R25R27R10R43L21L43L14R48R33L39L41L30R11L8L18L10R12R39L49R8R4R10R12L41L39R9L38L18L7R46L32L26L28R27L10R19R22R36R45R30L26L4L38L9R16R45L1L38R43L29L34R11L48R33L32R11R14L47L4L30R46R25L3L10R30L12L36R38L40R21L28R23L13R42R16L18L24R26L10L5L12R10L11R8R25L36L19L42R48L25R1R21L34L37R23R40L28R48R33L49R1L35R10L1L23R31L41L23R5R36L10L32L3L47R40L17L9L31R11R16R4L32L4L47L12L24L10R11R43L15L15L31L32L30R18L44R30R45L19L29R27R19L37R27L24L16R4R4R43R41R48L44R44L15L5R11R32R43R6R18L17R29L24L3L46R40L10L16R6R7R6R21R34R19R7R35L4L33R21L1R16R14R37L2R28R38R29L8R40R14R46L14L24L32L49R5R22L2L48L6R35R4L29R21R37L36R41L11R17R2L17L36L9R14L27R29L44L5R11R40L27L32L32R37R43L39L1L27L8L1R29L28L36R16L18R2R19R41R46R47L6R18L16R28L2R8R48L31L31L45R37L34R32L42L27R43R43L5L11R21L31L18L26R36L8L4L50R18L46L10R16L16L27R37L30L48R40R31L9R7L32R5R43R28R18L22R6L11L32L46L32L4R23L43R50L5R25R19L12R43L47L12L39L28R5R7L31R32R13L1R13L27R45R14R32R24L4R33L27L49L16L28L6R42L9R8R15L16L3R10L17L30L6R17R22R47R48L13L17R21L5R7R30R34L47L3R50R40R12L33L4L22R24L19L48L33L5R19R22R12L26R10R42L21L10R9R21L22R26L32L3R48L42L50L40R1R25R40R24L40R25L42R49R38R43L46R34R11L30R10R1R11L32L22R17R31L20R21L46R32L17L2R17L49R19L1R28L48R21L23R20R12L13R39R31R45L16R28R10R8R33L9L21R35R19L20L41R39L45L24L13R37R7R2R14R33R21L24R48R32R41L48L47L24L9R1R35R48R2L6L8L29L28R12R5L47R6L22L47L38L32L30R21L2R9R1L46L12R28L9R1R38L22L23L45L26R15R20R43L27L50L48L24L42R42R25L16R8L6R11L37L7L24R16R35L20R41R6L4R47L9L15L23R41L16R4R18L31L1R24L28R26L34R11L15R28L33R11R47R36L21R29L31L34L16L46R35L13R20L39L11L6R50L27L30L25R37R46L37L42L36L12R4R7R1R11R50R45L9R10L31R39R41L33R18R14R43L18R23L31L14L13L37L29L29L31L38R17L14L7L5L5R16R6R43L3R31L18L32L2L18R11L10R2R5R2R35R48R12R15L48R25R10L27R23L17L13L42R34R36R17R25L36L17L12L9L3L50L15L2L22L50R45L43L13L39 diff --git a/inputs/input.23 b/inputs/input.23 new file mode 100644 index 0000000..234226b --- /dev/null +++ b/inputs/input.23 @@ -0,0 +1,71 @@ +..#.#.#.....#.#.###...#..#.#.##...#..#.#....#....#.###..#.#.##.#.#####. +...#......#.##.#......#...#.##.....#.#.##.#####..##.##.#...#..##..#.#.. +##....###.###..###....#.#..####...#####..#..###.##...########..#.####.. +#.#..###.#.#..#...###.......##.###.##.###.##.#..##..#.#.#..#..#..#####. +##.#..###.##..##..#.###.....#...#..#.##.#.###.####..#.###.#.#.###..###. +#.#####.####......###.###..#..#...#.......##.###...#.#.#...######.#.### +..###.#.#...##.###.#.####.###.##...###.###..#...#.#######.##.#.##.#.##. +##.##..##.#.####..####..#.##...#.#.#.###.###.####.#....#..#..##.#..#### +.#####...#####...####...#.##.##...#..####..#.......#..##.#..#..##.####. +##..###..##......####......#.##....#....###..#..##...#......###.#.####. +.#.#.......#.###.##......#..#..#.##....##....##.####.#.##..###..#.##### +....#..#....##..##########...#...#.#...#.##.#..##...#.#.###.##..##..### +#.#..#.###.#.#..###......###.#..#..#.#.#.##..###.#.##.##..####.#.#....# +..##...###...###....###..###.#######..##.....#..#.#####.#.########...#. +..#.#.....####..#..###..#.......#.#..#.#...#######..###......####...#.. +##.##.###..##..####.#..#....##.#....#.#.###.#..#...####....#.###.#....# +.#.....##.###.#.##...#.######.#.######.#..##..#.##...##....#...#####.#. +#..#....#.....#.#.......##.......##..#.#....#..#.#####..#...#...###.#.. +##..#....####.#....##....##.###.#....#...###..####..##.####........#.#. +###......#.#.#.##.##.#.#....#..############.#.#..##.##.####...#.#.###.# +#####.####.#.#.####..#...#.###..#.#.#....##.#.######.###.##.####.....## +...###.###....###.#.#.#.#.#..##.#..#..#..##.#....###..#.#.#.###....#.## +#######.##.##.#..##.###...#..#.#..#..#####.#..####..###.#....##.#..#.#. +....#..#...#.#.##.#.####..###.#.#..#.##.#.#...........#..#..#.##.##.##. +.##...#...###....##.##.....#....###.#####...#.##..##..#..##.....##...#. +###..#.##.##.#.#..##.....##.##.###.#...##.#..##..########.#.#.###.#.#.# +.####...##..##..#.##.#..#.#.###...#...##.###..##.#.######..##....#..#.# +.##.#.....#...#.###.....#..#...##...##.###.#.##...##.#......#...#...#.. +..###.#...##..##.##........#...##.#.#.##.#....###..#######.#.##...#.... +###..###..#.###.#.########...#.##.#...#.#...###..###..#...#.#.##...##.# +..##...#....###.###..#..##.####.#.##.....#.####.....###....#..#.##.###. +#....#.###..##...#...#....#..##...####..#.....#..#...####.#..##.##....# +##.##.#.#.##...####.######.#.#...##..###.....###...#..#######..#####.## +#.#..#...#....###.#.##.#.#....#..#.###.##.###.##.#..##..#.#..#...##.... +#..#..##....##..#.###.#..#...#.#..##.###..#.#..#...#.#..#...##.#####.#. +#..#...##..###.#...#.######..###.#..##.##..####.....####.#########.#.#. +#.#######.###.....#....##.#.#........##.##.###...##.###.#.##.#.######## +.##..##.#..#..#..#.##.########.##....#.###.#....#######...#..###.###### +#.#....##....#..##.#.#.###..####...######.#####.#.#.#..#.#.###...###.## +#........###..#.####......######.#...##...#..#.#..#.#.#.#...#.#.####.## +###.#.#.#....##.......###...#.###....#####..#....###.#.....#.##.#....## +..#.#.####.#.#.#..##.##..#.#.##..#...###..#.#.###.#.#...##.###.###..#.. +##.#..#...##..##..###...##..#.###..#..##..#..#.....#.#..###..##.##.###. +..#...#..####..#.##.##.#...#..#..#..##.#.####.##....#...#.#.#####..##.. +.....##...#.#......#..##..####...###..####..#........#..#...#.####.###. +.##.#..####.######....###.#.###.###.##...###....##.##..####.#...#.##.#. +.#.#.#####.#.#.#####.###...###.....##..#.#.#.##.#.###....###.#...#..#.# +##.#....#..#.##.##....##.#.###.###..#.##.##.##.#.#.#....#..#....#.#.#.. +...#.#.###.....##..#####.###.##..#..####.#..####.#.#.#.####..#.##..##.. +....##.##.###...#####.#..#....##..#..#.#.#.#.#..#.#...#...#.#.....##### +.#.##...#.###...#.#.#..##.##...####.....##.....#...##..####.#.#.#....## +.....#.#.##...#....#.###.#.##.###...#####..#.#.#...#####.#.#.##....##.# +.......##.##.....#....#..####...#....##.####..#..##..#...#.#..####...## +###.....####.##....###..######..#..###....##...##.#.###...##.##..##...# +.#.##.#.##....####......#.#..#.......##....##.##..##..#..##.##.#####..# +#.#....######..###..#.##...###..#.##..#.#...#.#.#.#.#...###.##.#.##.#.# +.....#..###..###..#..#..###..#...#.#.#.#.##..###.#.#.#...#......#...### +###..#..####.##.#...###...###.#.#..#...###.####.#...#...#.....#.#.###.# +###....#######.#..#....##..######.##.#.#..##.#.##..#.#...#...#.#.#..### +##.##..#..#####..##.#..#..#####.###.##.#####..####..#####.#.....###.##. +...##.####...#..###..#.#.#...#..##......#####.#.#.##.......####.....##. +.#....#.#.#.###.##.#.#..##...####.##..###..##..#....#...#####.#...##.#. +#....#.##....#...#.##.####..#...#.#..#.....#####.#.##.#.#..####.##.#.#. +....##...##############.#.##....####.#.#.#...##.###...###.#....##....#. +..###.#.#.#.##..##.#.##.##..#.#.#..#....##.#..#.######..##.#######.#... +###.#..##.#.###.##..##.#.#....###.#.##....##..##.##...#.#.###..#...###. +##..#..##.......###.###...##.##.#.#.##.#.#.##.#.#..#..###...###.##.#... +##..#####..#.#.#..##.#..###.#.#...###.#.##.##....###....#.#.#....##.#.# +#.###..###......##.###.#...####.#.##..##.#.#...##....#####.#.###.###..# +#.....#....#.##.##.#.#...#.#.####..#.###...#.####.####..#...#.##.###... +.#.#.....##...#.#...####..####.#.##...#..##.#..###...###.#.#.#.#.###### diff --git a/inputs/input.3 b/inputs/input.3 new file mode 100644 index 0000000..c827b9e --- /dev/null +++ b/inputs/input.3 @@ -0,0 +1,300 @@ +jVTBgVbgJQVrTLRRsLvRzWcZvnDs +dhtmhfdfNlNNldfqmPCflqGbNZDHsDWcRzvczWsczZNzHz +tmwwwCCfbJSMbwMb +hsrZZhHlhrHmPPbMbDFDQdnQgLfMFDdDQQ +GpBtwtqrcCcjgnLgqfgDDgRn +cJwVwpCpGJctJtBcCrSCGrVJhlsbvSvTvbmHmmsWmHslmsHm +gCtWJvmfmGGwVVMhJw +nzRSpZbSVFFRDFSDzcplddqplqMhQMclMp +zFLszzRTDnZnbTZTRZsVNgCjrvfvgtvNmtfvLW +glRQRpQQtQtGtQws +TnmbLqvBFRFFLPBFnPbvRBhshTtHWhwzdwtHdsdzWhws +qmCLPNmCFnLBnmPPqVbFLRrJjVggDgJjlZVVDjDlDD +vRRgpWvPQFdTFDDNQs +bqtCmltmlbwqLVLZqwtmLBBTMcGBddTTBgFNGcZGMD +bbtmJmjlVlwblwwbwzbbvrrznvzShgRhRvhfWrWn +ZMhThfNcpbbMNNjsHpmpsRqsPmRs +wQjDgggQDPqqDlsD +SCwSzvLVCSVtQVgLnrccfdGdTdZfcZMtjJhG +wNnNmNHnNPPwwPGCrLSZZvdVVZvBtMMvdm +WQzlhzjzbBtMMlBrMl +szbgWhJjTTcsWTqgzsqcsGHfwNcwfwnHHrCGCPPGwr +CNsbpFCMSrmDhQHNNGmH +fQPPPcqvljQzjVDDgRBhGGqDgqqD +ZctlcVzcfltQtnrndbQMCM +NQjQjQvZvZjcvrrrNjgTQgBQwTJsJswJlbGstqqtmGhmwhqw +PWpHRzRnPHHSCnPFwlqhbtqGZClJqGqG +ZzVpMpWPHnVzzpWzDRzSZrcdDQdrQNrcQgQfjcNfjf +BSZMtdtZBzMFvhCbBJDbhDDC +qcqVVmccrmVcjrlHqTrjDJRPQhWvPWWfPvblffDf +cHTrbGwpmGwVjdFMnzpLznMztd +DGDGGbNgTgJQQLMRMMTNVzvPsPbdsfPVsdVVZfPf +lcCmmlpwwnwSjCHtFpCpHzCrZsVrBZZzdvDfVrsfZd +lSHwnjpFmppHqppttttcFmnhMLGNRLhTMDqJLQNLLQNLhJ +WqWfDWBjBjLbfcbbqGbWqQsrFFztsppMFCzgCJzJCrFpCM +VRlhdHZTZVRRmZwlmFrJwFpMMDDrrrtJwg +PPVddvvDZmRmHvndTHmLcbcjSjLQBGWGGQWSqP +HHvgvwHMPMwHwmcRfJNFchFGNNCm +BsTDsjzBCCBJGffN +jznSnSdqzqnQTbdDljQjQSMHWWvvgWvtZlrWpPfWwtPr +DJCJJCNjCDRfDfDRhDnNhfjFPgbGbddBTjFdTFTPbgGSdF +cmMcMVqBZVcwsGFgGqgWdFqb +vcZVzwmHVcrtrwMMvvmBHwNNCDpQRfhLhrNJNfJDDDRC +VWSSScsncpDRdnsWsVncVzTwMMMHtMTrLTLMMVHM +fjJvQqBCQNhfQlZZnqmFHLFMTFTzwzLzrHMB +CqfjjQZJPjjvpRppDPgbnSnP +tLnjNwjRWttdCwRLsfGzfzPbzbWbQQPT +cvvBvlBrFrlTffsbfTqZ +vmrFpsrvFMMMNwhtDwhN +wzgRNqwtgzMWtqGwCssBBSBZnSRsrQQS +bbjLTmpjpHcpVncVdmffPCDrjZDSDsZffDQC +pbVFncvvbpbbHJJHVdvqMGMJNwWlNlJMwqzlNM +TdszlzFsRQqFdRzqwwQGlFsGmmSBBdmdVVmgSZdSPZBBBmSD +HMCCMbJHJJLHSmSvZLBcSDBP +NWbhPjfrbbNfWCPjhNnGsNzsqpQszTQGRwGQzR +ppQpTNCPBTlNBVmNQTNrrrrtqsrWbGrVFWqhZb +DMvDHnjRvMDLghhhgbqZWbqFSS +vWvMRRJDLMnHLJjDwWnnndcllNTzBmClQBpBBzQQzCBzCJ +VsNZfPMnrCnlCnWtbvBbvwtTbZwT +JhJQdQhmRHDRdLmHJhljhphgGwtttmcvbwwTWtvtbGBttc +jqLpjSLDHlhnffCMzsqCPP +JzJdLRmmzJwrLLwLJwLTWwBrMrpHlFnScVVqccrBHSlc +tvQDQhjhvbqFqFSpjHSV +QbgZtsgfbNNQbgbsbQRfmWRJwJGWWTPRwqzR +MwvDgpwszSpSJPsssMccTQfTDfTQRTljfRfT +PmGbWhbVtZWPTqRrcTrrjTrt +NbZbWHBmVGmLbZVBVNLPsMBzwSSzMJMCsCzvnvSp +cTpgTnpzbZlJHTZm +jRrLVtqtvtrjqsHZhvpmBfJHmhhp +FqDsFLCwCVRDqwgNQcQMwnncnMpg +sCCtssdZdZJmMbNJDmtmJzLSrcGfHGLTHDHnGLrHTSSn +gQwRRWqwqgpggFWPjPpFnSTSnHNfLLQrccrLGHLL +qqlpqhjFwPgPwvvRgFlPdslZCzMZtVdtVdVMtJlN +BWVmPtRVRRWDNtZBVQzCfdscmfjcfdfzzSfz +MhgJLbGggHbqpGgpgJbrFJdjwsCChCzllzCdjDSszCCD +grpDLFrbgpJnqJrHGFHGqMHBBPRWQTPWZBQVTQWnPNVvBt +gJfggdmHDgfJJWzCcbqvcqcmTG +hLZlRBZNlBlrpprzrWqvtHvvGtbvHT +sNLRjHZLNVnZZVLppnhNsMFJSjFPPQMjwgMPPfDMfS +mDDzHfrPBvJRJhpBRg +SsTSTwJwcbCtwssGFVWppgZRbLpLRNhpLhbLvg +ttVCGjTGrfJJMfjD +ffhcsTjnfqHLqvZSHvHB +CsgmPVmstsQVpRbHBvFbHBDMvZLZGB +ppgpmmRVpVPwPrrrTNlcrwrlWs +NDtssPNBjQtCtCcT +ZZqncfqhZqhJZFTJTllCGVljSl +ndrWbfZwWhngwbqbZnMZcwWhDmmLDmzvHPvzNLdmzsvBBHHP +FQtptwMppSFQRRQfSfvTrTJJJTrvLjMMJbgJ +CcDqWBWzbldcchDGCWBCBhdGrvhnrsrjjsJvLvghrjjnnjsJ +GDBldPDGqPGWVBBcwHFmSmbpSpNRwHFV +CwHwCFwtCmdCDflHDpwFnnvzhhNJhJNzmhzhhNMM +sTbZssPqScTrqSWSShdMvgMRRzdRRQ +brBrsWPTrdrWsPcBcTcGqDLDDHjFfDClwLLBfFlFlw +lNptNFWpbVMjlBgQgvdNBRQLrd +TsDCDfSCQqqQQqDq +TwTmwPPPzZSCccScJwpWZHljtbWMFFQVHpnj +fhFmwbrgnCcSnwtS +vZVVZvQZVPZsMnNSccMHPN +ddzvQJvQzBzWRTJzdRVSWGqbRbgmfbFFbmbgmpmlff +wdslVdQtdlBVHDrHBcBc +TJWvpncCcJzCWcRfWvJRRpfZHBDZZHmDZPBjZHjZrSfb +TRJFvvWpTRRWCpCgGtgtGQdlcNtsGlwg +rCHvRLJtCjpbRCLpptHMVCQgGlMndVlQGNcCMc +zZfzSmsfSsMzMccQMVcN +ssSmPmSmhwVhZBZsTBRJrtRjtbDvjvrTHLtJ +wswRCNHHhsrWFsGfGWFBGb +lLtngDPLgLJPttgWzQWlbCfBlmBFCW +DcDnVpcnnJPngjjcdpRhwNZSCZNdNdvr +NWNzWpfMRHfwsRNznPdjtdjJtPVPHVdJ +CSLTZBrGbSmClvBVdGzFVVcFdjjjnV +SrZhZbTvmmbbLvwQzMhsfhqqWwQR +vvZqwFBZvzZzrqltPsQstrGGpMcbbR +bhJdjJJmTRQMTMMPPM +mCmgLbdVVVLhVnJmLgJhBWZFDlqFvwZDlZBnBvWB +sMrcmQcHHsLLrSHZhvdCddvtJJFl +jzjjWplWpPRPDzPzfRGjqvdJqqqCtqdqDvdDqtwC +pPNWVpGGVVffPlnSMnMsTmgsQVLr +zGMMRbpGmqqqNRmmzbNfbzPRPlvThCTrHPnrHSVPlTHR +LSjjwgsjtTjhPhHhvC +dJZtJwFgtBLDZZbmNMGzMMqS +ZrnstppPWccnsFWpnZnRdjRtjbCtSSRjjjLLbG +JgBQPJvPgHHJvmmzwGGLdjHGSjShGHqdHL +wTJvPzmTJvzJQBfwNmTmlPsrVfnVFpcMVZprDpFrsrVc +ssGCtltsSdJJtQjPdvHvfbfvqLHqZtBfVb +pzRwwDwDTgzbqVTVvHqVWB +grzHnRpmFpDMnmzFhplJCjlsPdGJSjsFCdFs +CTGBBGCBlSTTSsnTMrQbNrBMtpVzNddWHWzVpHVtdHmwhphm +JqPZgMRFFvFZvDZMDFcFFfDchdtdPWpzpWhtHWwwhVzWpddW +ZfLZMcgqRDjgjcLccDRDLsbbrSBBlQGQBCTrCBnT +VjVGVqSqFLFVSqCjFJSsbfPprHbCCRRPccRWPW +wwnQmtwlvNmpZRsPsWWNbZ +DBhhhznhddldnvjMqJMTqDMGPSjF +TTJbsJPPBDsBVbJJGJBGWLfmWzgmDmzmLqmmLddQ +jHwVZZjwFZlzLzWZLMdLqM +HHHhjHplrHSpcCSvjlsNPbNRbRnVTrRsNNNJ +NzMMLZtwRmbwFnVDhnqD +SlsJsSdSJdNJnFphVHFjph +vlrsTlGPTgvvSBScGcBvfzmmLLCtMWNZRBQMzftf +tRFLmZZRLrtRvtvvrvvGgvtLNfwzMzNwgdznMpwwpnMpqHdz +hcsBsWTcQJhjbHMncNwzMqnzwl +VWSWWTJhWBVDTJsTVWQWTVVbZtCPSvrrGSLCRFRGtRZLPmmq +hbdFhdShGsFSGBlQhNhQMLLLlLJCvLLDtVJDLlwtwD +WcqWsmcWrmqcmtDHJjVHrJCjjt +WPWcnggssmzqzzzgfzZnWRqqdGpSNFdMSFdBMSFZhSFBZZhh +GNFNtRQMGjDjwfgDZjmz +bqDsPWWbsqVsdvvBJvBfmgfLLzSwzLcmzmfB +WPWrrVrrVJhVWJDVsqnPdRQllRQRNhQGMlFQFMplGl +mChChmSQGSGJrjPHCpPFtwgsFZjtFVZfgVwtdV +MBMqvDWMlTbzlRWzllDzblZfsrgdZffgrtwrswZfdZTd +DlcMvBbBMnqMDqcRqDBMWvLmCGrGLSJhnLHCCHHnPmSQ +tscfGqftGfDnnppJGDGCZLbzMVMwPPhsblzbjzzMMz +TWPTWWmHTmFRSBSvgBPwwwlVzhMdwblhbVjRLL +TTQNNWWgHWQHPBWTNPWNcqJtGCnfqfpQZJCZpQZn +CqzCGDQJCzzftfRqRzzMdvFpFpccdZFvFMtMbd +rNHwmHVmswsHVsPTLnbFSTbZZpFcpvSZZgpg +vPLhLLwHLhVVNVvQhBqDCBfhDzCffG +WsBbBbsWNhsPsCNssRWLPLpmLDDQHlJlnlzFnDDnzF +gcGfqggMqfjjGwrdDZzQFmpJQzZlFDMF +qdwqvjdTrwfvvBCPtpVvtR +RQdbbRHtHRvqZtwVcmwVwV +WnLNnqFDlDWzzNLLrjClwCZCGZcglGCccZ +LnTFfWBpffrfrhBqdsSBqhBJHb +sqsgJpDMrNQgGsFMsPCfjCPChPWjqSWSjh +RBnRnZVcwZllLwbwwLbZVLclhpjRttSdtjPhjWShWdphjCPd +HwHwVVwVnBVBmmGppNFzrrsgJJ +WpmDFlQlzmmgMMLMLQVTvTTSwNbmTVwTtHHw +jrhPDnDnnZfjPTNtHSVTcjccwt +CJqPfGnhGZCBfnPJCrBCqdLqMlQqDLlLRgLQFFRW +vZVvDZsvhDZhZvzgVcgVqPqmwWMqcw +bdTbdBBFQcdCdcGmcP +bmjQpHfbpzDJRjNhJZ +twRrwjFptprQjjjtQRdWCmNJTlNSCmZQcNlmlSST +VVDzMWDnDHMzLZDNNJSqqCJZZD +HHhhsfVHGbnwgjfrgdpgWj +GmszZGMrLmnmsfGVRcVlwtwccc +SSCgbNqSTgCCJMHCJtlVcwVbVljlclVfwf +HTCgHSgHQThMqWQQSgDnvBdsFDvrzdZsLdmLZZ +PRlMlBPPctVBlstzVLhsdwCqCdCNDjSDdWmMqdNw +fZrQQHFffgGFprSJSgvZrfnqjmWdnndCNGWmWDwNNDCG +rTvvpJZZrfpFSbQQvrrsssLRVPPtlRtRPThzTR +FqgHFFMRTRjRFRpRRjFtNdCtJCMnNNdrdMLdrQ +VhWSmwGwWVbGbvlwwlLZJLZSdJZtNCtnTSCJ +BmWwWWzhvVfwWhmhwlmvwlRqHpscHRTpTDRFfTsjDPjD +MJMgGqMFLPGgWVjpcmjZTpmZjZpJ +hdSzzlCtzNdtWSdndttflBmjpBRmvvpjnjcvBjmvHj +zdhCrfztrDSzfWzdChrhlhgPPPGDgqFFLGGFVVqqPVQw +ZQZNQRZzFdCCgfLcCGDfScjDcG +vsmwVHTmTfGcSHjcDS +tMsmMVlSWWzdWNnQNJ +GPRcQnwwQWwFFnrnnldSqzMfSCdfdldrJf +LpTsjmZTsBZjpmzhLLMdSJJSMhCC +ZsZBssBsDpDmmVBjCmDZHgnVNWvPQPNPGvNQncQPcRWn +pznzpzlGFrvGHGrnnMvDmBMfgfTmsBsTTghDsg +LJtWVCWLCNPcSbdcShWBgBThgTfjzwfhhz +VZZCdLCVNNCVbCLzFnRqGqlHprQZHRqr +dFTsQPdMFsMnWFPdSnwBltftttvlflNN +VLZhZLqghCgzqgrLrcgVgbCvtDDtwpqNpDtlBRflDwNqDpNw +cLmVhVcgbZrVhrhCLhczhQdJHTmPJJTjvTJsPFWFTW +SSwNPNHldNJSngHqBssQvBfccB +mMppmDprWpFGRGWmWrDrtGzQfcvvQZBBzzczqRQgRqRT +WtFtFvhvpLphNJJVSCbSNP +chpGMMzcwSSGnQFRQQFWcFWn +sgddTfjLqsWrRtLvQnJr +CsmlZgssbRdMhzCHDGpGGG +vHBrTzpMPTHMtbBRRJGtDsNB +QJWWVwnCZmQlWQWlLWCCmmLwRgtDdDbgngqtRdRGbDNDGtGq +LwmWQLJcWmwPrpvpjjrcjT +fcsWnWzhWcWgcbfbvtbHTRvpvHttmLtR +lNSjwjrDFjlFhlZlQTpLHvSHptvTSRtLmJ +NwjwrQDwFCZBCfWzqhqqzc +fgNJNRcvvWRfWRrZFldlwlFwfFllflDH +spQshQhpqhJsLpnQVLqBqlFwddHSdBFFjSFmwlFmwl +hppLsqPVLnpnzJPtqtPPJTCgNcrcNbrrGNcgRNrzcZbG +PWFdgDGCFPGhMtQqHBrpJqqW +nlllLNmnVNNLllVbVRLRsQMqqpccQQJcJtqcJcnBrc +NmvZLsNrbZNjNZVNGvdFFfwdDhPFdDzC +LpZpwgLsLSzDdjVGpS +bWBlHqqBhNJWNbJQFzGtCtDtGGjNGDgtGC +RBRbJggbWRRmhWqTcnnfnmZMTTsTcP +JJgzvfzpdzzJjJhgdfhvqfdScNsLwwGsrRbwRLbcbVrVRp +WDFBTTDtHTntltnCnnntCDwGlGGbSwNVSssrbwGVsVLs +nCHMDtCWWTCCHmmPDnZQgvfQgZNJJdvdMZQg +lFDgvlsGvvZGDsFZWgGvWrPqnmwwtqmMVSWrSqMM +hRpJhLQHhdTTVPmVSrqwtHmV +ctJJJfjLpjglZDGCGljF +CnnVMbhVRbQQZjBP +rlfsLFLtmLSJscttFfsdjZwZNNwBPWRjRNZBZBfQ +tFrmDFlDtmcltFvqVzDqQzGvCVCG +JzzJzVrmzJpCCmTFmjZS +HtDDtggWssqWfDgwDWvsfDBBchZjSnGGpCFjSFZjpGjFShZg +sbvbvfbbDblWtrNVNRzRlJPCzM +nlFnFWsWhrctWVdJPDPTnTNJPJQJ +fHqvHSqRqSHjBmqvmqqHCtJSTZGdMQJDPQDPPMdNTMZN +jzqmbtRRztmbLHcFpgWVsFphpcLV +PHZFZFVZZfHgpwjFtmgjtq +rpTrTNzzNdrTJwgMwqCBJzJz +vsTWbvccRcdRbrRnRRbRrcvVpGlGHZPspSVhSPPQGGZVHV +HWnDDjfPFccDPhfchnMMVWGzzpvGszCCGWWV +JNBtBTQJNwJQjTpRVRMvpLsQzsRR +JltNSrBjmrHfdPHnDlHg +ldCJHlZFspjzHMnp +zvcLQBQcQvhBwmcDppqbNpjMLnLDDn +BvcmQhWWRzPJJzWWWg +ggSTPZBwTPTPSTRwZPBnwPMLdVvBqzsqLzqqtVzqtzBszN +QRmhQhffCQhJcDfmpChQWJmJNNtzvqtLdvNsGtLqNGzvWqvG +HQFCDhDFCCQJQmZTZwTSSwrZnRFS +QbFlsMbgPWPlJWzsJsJZntvnvZtctHBfZvBZlD +VTqpTqmSrhVLqrpjNppgntfBgfjddHffZBdtcB +VCwpqqqNVgNVgMJJwbsWWGMGFR +GCwRjQlsCQrPrGMQPsRvpdvgnjgmVVmSStptgJ +DzNcZNHZZhzzHhDzDTLWhDzSdJSSpnnVSTSvJJmgvSdmmn +pfLNDppNWHqDWfWbzcHPRslCGbwRCPwQrGQPCF +hVLnDgCmbhltrmDlhbhVmcgFBWdSBSZZBFPwBLBPfWdPWZ +TNTjJNpjqGMTRRsTTCZddfWwFHFWHSSJSFPS +CGQqvQRTNzTpQsDtmcrgDQllhnQl +SWrtcHWjcWrPcwWrBwSPffnJNsqfMNCNqNfJFfSq +QLQvhBpbbvdvTdvpTdGDbDQqqqslsNMJlMMCqMfQnlfC +gThhpmDLbzBmGLptrmRZcwHWHZjVrW +gQvzQRvSSbvvJvQgfRrfbSpGqBPGwqwVjPBBwwjpRmjB +TcNHHVVtNsDHcMcdMBjqpBnGnwlGTwlPBl +MHsMDHFMdDtZddZdFdFrhhgbFFVvffrzzffrrS +QSFmrDSSQrqlfmDDHPRTdrrTPRbsTPTsNN +wBcclhhgwgMhWLLtVMgVvzRTNNjvbszzTdjNdsRbjp +nJgVMtBhwLBctmQHQlnCGqmQZZ +sggtjzzggfGmPbCMvRCMvTmT +RDqqhdQdDlcDpqVlLbSbZFSTTPllbCMv +hqpQWRhhdncDQcBsrwzjnfgtgGfgHs +MTrzlgMNQNggrrrPlzQDPCsFRfscTfFVhVftRsFFsScS +nWWHZHhZWJjjwjLjwbLbwHGSFppVfFVcGcFLfFSVttpf +jWhZZBhqBbwvZvBjZNNQrQQQzPMlzzglPB +jLVhJZQjwFCLRjQhPRZFLDzrGDHpDGsGqztGHststC +SBNlNmWnfvdLmlnvfNSbzrDTTzprdqrDpGqqpHrG +bNmSBnBmcfMmcmnlfcnNSnLhZPVVJhwjZRJPwjZMPjMZ +VpzBDgGTGVNNpSGzppMdTQwcvFdFMQdcdFwc +ZDsqfRftWtllmlWbLLtjFFMwMrjCcwfvMFvwcC +PHbDLHZtZJSJPpVgnV +bRvTdswLLSTvwswSbDhsDTvFmmGRVmJGZJnRcGGfFVJcqn +MWllQMllWHrjWPNplrllQMPZJmnnVmqJcNmVFFnJNFqVGC +PgpQrQjjzQWHzpBdvtwhwdSShBZTsT +MhTwjMTsTRFStjmSMqqppBrHpDrzHtPqbD +dllNcZWgldLvcsvvvvgvWddlHffqBHBBfPzbbqBpPHrpHNbq +VddvgWWdCZhnhsCSSCGT +LPjqHnDNqqHNllqLpqPCZCGRCssGdGrGFrPrgr +WVBztWTQSQMBQrGgRwwwCGgtwg +QJMTgvbTTWSzWWvSbVJTzJllJlHHhLpNqpHqjNjNHpjq +PCHCbPPPHPlTThBhjGTTNhMNTh +FrmfLqdqgfmfttqtWqfrqdhshchDBshDllDBcGDhGDWs +mqgdpvFmmdLdqqQCPHZZblvwZQZl +bQGqmngwwgSNrBWJWdHZmjfZWB +FlpRLCptFLMlLPRLlCCcCCMpjJZJHShWdWvBHHdcZdBWZvSv +FRPCDTTtFptVTnQnrGbwbS +LsdmnDMTLbzsbNtqcb +lJjCnHSvQRRwQQjRRHQbgWbqctNJPbcWrcPPgc +RhGSQGwBvvGShnGlHClwjmfpmfdmVmfFDBLDDZpmMf +ppDnPmwvNDjTjjcssT +qqfRHzdCPHWfhHHtTjjbbLLGZr +MhzqWdJCzqJWSJnpnpvvPSPP +NGWdQgDDHGJgQLznzzsJFFzvzB +twRCpZVjVWqVSqVwwjtZfrrfntfvznBssBncfLrc +jRRwCqwCZhlhZRpSZpjSqWwqmDMQdMmHPQQMHGdlHdTldNGd diff --git a/inputs/input.4 b/inputs/input.4 new file mode 100644 index 0000000..0745f29 --- /dev/null +++ b/inputs/input.4 @@ -0,0 +1,1000 @@ +61-78,61-77 +1-98,23-98 +70-70,3-70 +7-41,7-40 +5-85,2-50 +13-59,13-13 +22-81,57-82 +4-26,27-70 +37-86,38-86 +3-49,48-48 +43-52,42-52 +6-95,6-94 +27-66,26-65 +15-16,16-89 +29-61,22-86 +9-82,10-83 +2-40,39-42 +5-67,6-68 +6-57,13-87 +70-92,69-71 +37-53,50-59 +2-94,1-94 +11-81,10-82 +3-83,1-3 +78-90,77-93 +10-93,10-11 +14-81,32-80 +6-29,5-47 +91-99,19-91 +6-87,6-86 +29-94,93-94 +3-18,17-18 +44-44,45-91 +25-25,26-54 +30-83,30-30 +50-86,27-87 +8-40,9-40 +25-78,24-79 +3-12,11-95 +47-53,47-52 +27-47,27-47 +19-67,19-20 +98-98,1-99 +9-38,8-90 +6-98,7-11 +8-59,50-53 +37-99,36-99 +1-98,1-99 +14-14,15-44 +13-95,4-95 +1-99,2-98 +43-80,44-79 +14-87,5-88 +21-57,38-56 +41-49,9-50 +30-67,29-66 +64-94,83-93 +18-93,2-13 +56-61,3-62 +99-99,42-90 +21-83,22-71 +20-86,12-41 +12-77,81-89 +61-97,60-61 +94-95,10-95 +7-98,7-99 +57-80,3-99 +15-88,16-57 +46-64,21-65 +59-78,59-99 +3-86,24-36 +3-45,2-63 +65-66,65-69 +11-63,41-64 +3-76,8-75 +26-50,49-86 +7-98,8-98 +44-88,43-87 +10-25,9-99 +35-83,34-83 +14-41,14-40 +26-35,29-36 +21-95,22-22 +3-84,2-83 +81-90,2-89 +11-50,11-11 +44-52,45-51 +10-67,10-68 +88-99,9-24 +20-85,6-86 +78-93,77-94 +13-14,13-35 +65-80,57-79 +47-98,46-48 +65-93,64-92 +36-79,37-78 +38-38,37-93 +25-83,24-83 +8-91,90-91 +15-85,15-84 +72-87,42-72 +13-83,11-84 +12-92,11-41 +4-86,74-84 +79-92,82-93 +37-89,88-88 +12-83,82-82 +64-83,63-82 +10-12,11-76 +5-70,5-69 +24-66,23-66 +51-63,27-63 +6-84,5-84 +68-85,77-86 +45-69,69-92 +28-90,17-91 +30-45,30-46 +39-40,40-86 +39-74,74-75 +29-98,14-28 +4-40,1-40 +15-90,15-97 +6-19,5-42 +2-72,1-73 +27-81,81-82 +4-91,3-90 +33-95,33-96 +24-90,23-23 +88-88,15-89 +77-78,70-78 +28-80,11-27 +36-91,35-93 +98-99,3-98 +13-70,63-70 +3-73,49-73 +66-87,65-86 +12-93,13-14 +76-96,89-96 +24-72,25-71 +68-71,67-73 +1-6,5-89 +19-88,19-96 +5-5,5-21 +19-20,20-50 +76-97,75-97 +7-98,18-97 +24-25,25-50 +4-94,3-94 +66-92,65-92 +21-29,21-29 +5-43,6-43 +19-94,19-95 +17-60,27-59 +10-75,11-74 +57-84,57-85 +6-68,67-69 +66-66,22-65 +62-63,61-63 +17-86,17-87 +10-81,82-86 +12-90,12-89 +32-98,31-99 +83-85,10-84 +19-90,2-18 +83-85,14-84 +50-69,68-68 +25-96,25-95 +77-90,80-91 +68-90,73-89 +17-89,14-88 +45-55,46-55 +28-98,98-98 +54-78,54-54 +28-34,28-34 +69-76,70-70 +13-54,12-54 +28-46,16-45 +20-92,18-92 +64-65,11-65 +49-67,11-49 +16-17,17-98 +19-67,8-66 +19-27,9-64 +52-59,29-59 +43-78,4-77 +62-62,63-99 +5-6,6-71 +5-91,4-92 +3-9,8-69 +52-53,53-53 +77-80,78-80 +26-97,97-99 +8-61,35-60 +22-92,6-91 +8-68,7-9 +3-6,5-83 +1-1,3-80 +4-91,90-92 +18-73,72-72 +12-19,13-18 +21-73,20-73 +69-92,70-70 +9-75,10-10 +78-80,79-80 +52-54,18-53 +95-98,30-95 +3-91,3-91 +3-95,2-95 +9-81,9-9 +13-88,14-89 +24-67,25-66 +23-97,23-98 +30-30,1-31 +20-61,57-61 +38-38,38-98 +2-95,1-96 +11-92,10-83 +22-92,8-27 +45-97,27-96 +25-98,1-99 +10-79,62-80 +2-25,1-90 +12-92,25-93 +1-99,98-98 +67-90,67-67 +15-95,2-96 +16-64,16-63 +4-18,17-89 +7-87,45-82 +2-3,3-95 +72-75,64-77 +3-5,6-56 +16-96,16-90 +76-84,75-83 +27-27,28-52 +24-39,38-84 +16-97,12-97 +11-98,10-99 +3-13,2-94 +26-40,25-41 +44-74,59-73 +66-75,53-74 +1-96,2-96 +1-85,1-85 +9-12,11-61 +45-82,46-82 +14-98,7-97 +65-65,19-65 +1-36,7-35 +20-49,19-50 +7-99,4-6 +20-85,21-86 +46-99,2-99 +6-6,7-89 +89-89,62-90 +7-93,3-92 +26-68,27-27 +30-61,29-61 +51-75,74-74 +7-76,19-75 +12-13,12-82 +22-55,23-54 +1-53,54-63 +20-87,20-86 +86-86,87-87 +46-72,46-47 +54-65,23-33 +8-93,6-6 +2-96,1-96 +87-99,86-98 +30-71,31-71 +3-94,93-93 +7-96,6-6 +21-74,20-75 +10-90,11-90 +19-90,18-19 +69-69,26-70 +59-97,59-98 +6-68,3-7 +2-17,16-65 +2-98,3-98 +71-95,31-71 +37-52,36-52 +72-87,73-87 +29-82,46-79 +65-77,14-78 +7-92,6-85 +8-35,15-36 +7-59,1-59 +93-95,6-93 +47-93,48-48 +5-24,1-23 +1-81,10-80 +32-65,1-66 +64-90,65-66 +21-65,7-20 +11-85,12-86 +89-89,73-90 +62-92,91-93 +48-60,2-59 +13-44,13-23 +11-32,30-33 +17-96,18-96 +19-91,14-14 +25-54,24-54 +7-92,9-93 +34-91,34-99 +80-89,71-88 +37-58,57-57 +27-99,5-99 +3-89,1-4 +34-90,91-95 +10-27,11-26 +37-58,37-59 +57-81,56-82 +9-73,66-74 +5-78,42-78 +30-77,26-92 +41-61,41-41 +65-74,65-74 +8-86,7-86 +1-94,2-93 +26-65,63-65 +4-95,4-71 +54-71,55-58 +9-49,11-48 +33-42,39-41 +55-69,56-68 +28-89,28-46 +7-91,91-94 +77-98,97-97 +19-37,15-37 +94-94,90-95 +3-63,2-97 +28-84,28-85 +18-20,19-44 +53-61,43-61 +76-98,76-77 +96-98,10-97 +33-89,17-89 +22-99,21-22 +17-28,23-28 +9-9,10-16 +55-57,10-56 +6-55,6-6 +10-82,5-81 +21-22,21-48 +16-98,4-15 +41-72,42-59 +32-49,46-49 +38-87,38-95 +2-2,2-29 +38-78,38-79 +19-25,17-25 +99-99,13-99 +1-2,3-80 +60-93,59-94 +35-84,34-84 +44-98,44-98 +16-32,70-78 +33-39,15-32 +13-86,13-85 +1-5,6-42 +38-48,38-38 +37-39,38-98 +94-94,10-95 +54-58,54-59 +20-68,21-68 +21-63,20-64 +73-74,8-73 +68-97,69-76 +54-89,2-90 +3-94,4-95 +32-94,29-55 +75-75,19-75 +7-67,8-68 +5-44,6-48 +84-84,5-84 +2-89,2-98 +22-45,21-45 +9-94,8-8 +13-87,20-87 +18-19,18-70 +18-46,17-47 +56-82,57-57 +17-77,28-78 +62-87,61-88 +8-87,7-88 +10-90,9-91 +4-92,4-93 +3-94,4-94 +51-57,46-57 +3-31,2-85 +51-55,51-54 +10-76,75-76 +20-64,49-62 +8-99,26-99 +3-55,2-2 +56-77,56-85 +31-82,1-81 +71-76,70-77 +40-52,53-77 +8-20,9-9 +19-41,40-40 +18-64,19-46 +85-85,23-86 +15-39,8-19 +57-64,56-70 +48-81,49-80 +17-92,1-93 +29-57,35-56 +43-98,42-97 +47-90,17-91 +73-73,72-72 +20-72,44-71 +2-95,2-96 +77-79,48-77 +17-88,18-92 +5-80,5-6 +1-49,50-64 +34-94,35-93 +2-22,3-23 +12-34,11-34 +46-55,40-55 +55-61,51-60 +2-70,3-69 +8-94,2-13 +43-60,47-60 +19-20,19-36 +64-72,63-65 +11-45,10-45 +23-87,22-87 +10-89,9-90 +1-1,2-97 +42-42,41-42 +12-95,11-95 +5-95,95-98 +2-99,3-61 +80-96,65-96 +41-94,41-42 +50-70,50-71 +36-51,50-52 +36-85,9-85 +16-24,16-23 +19-96,20-85 +89-90,15-90 +7-99,5-93 +17-26,16-59 +92-92,60-93 +35-80,35-90 +1-3,3-91 +78-89,78-88 +4-29,5-28 +20-60,15-79 +55-95,56-62 +58-97,59-98 +7-15,16-88 +15-43,16-48 +3-96,4-95 +34-35,2-34 +1-73,5-73 +1-97,4-97 +63-96,62-98 +76-78,77-78 +46-46,27-47 +11-11,12-50 +15-86,90-90 +54-74,53-74 +5-93,5-5 +14-85,15-85 +36-92,91-91 +50-74,51-62 +51-51,17-52 +10-79,1-80 +74-92,18-91 +17-24,23-51 +33-61,9-62 +6-97,2-98 +72-96,95-97 +43-80,33-80 +17-34,16-35 +60-83,59-83 +49-65,48-65 +70-71,18-71 +10-87,66-86 +19-69,20-69 +24-59,25-58 +11-36,12-35 +47-99,48-99 +14-96,96-97 +22-96,22-85 +68-68,17-69 +5-71,4-70 +23-48,22-49 +88-90,3-88 +29-55,37-56 +41-93,40-92 +91-91,37-92 +2-96,3-21 +40-76,75-75 +2-8,8-96 +8-96,99-99 +52-83,82-82 +15-92,80-86 +10-87,6-87 +15-29,14-30 +13-86,8-85 +9-95,41-44 +2-44,3-44 +8-91,70-87 +28-66,28-67 +2-86,1-3 +3-93,2-94 +11-18,8-19 +12-69,13-70 +4-13,8-12 +86-98,2-86 +75-91,62-79 +68-84,67-83 +3-94,2-94 +80-98,80-98 +54-89,54-55 +69-97,35-88 +39-99,38-89 +9-91,10-92 +16-17,16-86 +7-11,7-8 +7-57,7-8 +2-41,2-39 +18-63,17-64 +81-85,83-85 +97-97,69-98 +1-4,4-61 +90-93,58-93 +34-73,33-73 +7-87,86-88 +19-95,18-96 +4-5,5-77 +35-35,35-54 +43-43,42-82 +5-99,3-6 +14-29,15-65 +82-86,2-83 +8-20,9-15 +2-97,3-97 +69-88,70-88 +38-38,37-92 +17-42,17-41 +80-80,79-94 +24-45,24-72 +51-62,50-89 +5-72,6-61 +56-78,16-51 +71-84,70-71 +2-78,13-68 +63-92,12-73 +40-90,37-79 +47-93,49-93 +21-72,3-73 +96-97,3-97 +7-74,50-75 +58-87,86-87 +88-90,4-89 +16-16,17-29 +4-97,10-97 +22-92,22-91 +88-89,11-89 +37-87,37-94 +75-75,15-76 +20-77,76-76 +32-80,33-75 +17-68,18-69 +93-98,4-93 +19-20,19-79 +41-60,42-61 +92-93,2-93 +6-99,7-99 +52-94,53-94 +61-91,40-92 +76-76,15-77 +17-71,16-78 +23-35,35-48 +1-23,22-99 +11-50,4-80 +5-95,95-96 +98-98,1-99 +13-72,71-71 +35-94,34-34 +1-98,1-97 +9-69,17-69 +22-55,21-55 +42-85,26-41 +14-81,21-82 +24-53,40-53 +76-80,59-77 +16-22,17-23 +5-38,5-6 +18-20,18-19 +3-62,61-63 +8-63,4-63 +21-39,22-40 +43-91,90-92 +35-51,50-51 +14-82,34-82 +34-58,57-57 +20-68,21-68 +16-16,15-72 +38-40,37-41 +46-51,9-48 +4-96,4-97 +30-83,30-41 +3-9,9-10 +72-73,39-72 +6-95,94-94 +58-71,57-72 +11-86,10-55 +9-79,10-78 +12-92,5-93 +10-85,68-85 +11-95,10-12 +11-37,36-56 +28-87,87-97 +21-96,20-20 +71-80,18-81 +23-24,2-23 +7-9,9-38 +37-55,3-55 +72-86,54-87 +48-94,11-94 +68-92,69-87 +51-53,50-53 +39-88,40-87 +3-12,1-13 +5-82,2-82 +5-67,1-68 +94-94,16-95 +31-31,32-96 +9-99,10-99 +62-64,2-63 +11-98,11-97 +15-36,27-35 +39-41,39-40 +11-16,11-15 +14-16,15-53 +14-90,14-91 +20-81,20-82 +59-91,39-90 +39-83,38-83 +76-78,43-77 +69-91,15-69 +67-85,37-84 +20-63,52-63 +38-68,37-38 +33-34,33-92 +37-66,66-83 +3-99,2-99 +77-79,74-79 +45-76,46-75 +59-95,40-53 +10-65,64-66 +41-92,42-56 +6-77,6-77 +2-91,2-3 +16-75,16-83 +64-93,63-92 +13-91,8-90 +12-63,13-13 +98-99,4-99 +60-81,29-61 +31-96,96-96 +89-90,5-90 +34-39,37-40 +73-88,74-89 +37-59,46-59 +23-85,24-84 +8-31,6-32 +16-55,15-16 +37-37,10-77 +39-85,84-86 +2-80,2-82 +11-66,5-12 +34-48,33-35 +8-88,1-73 +39-91,40-92 +69-93,68-95 +18-49,18-77 +89-91,90-91 +98-98,18-98 +14-93,15-92 +11-12,11-46 +25-81,26-80 +27-95,26-27 +14-75,74-76 +53-80,53-81 +43-95,43-96 +27-89,84-90 +13-96,14-89 +12-13,13-47 +45-81,44-49 +95-97,5-96 +31-31,32-94 +74-84,39-85 +7-93,8-92 +30-61,62-97 +22-72,22-69 +58-74,59-75 +1-3,2-61 +4-17,11-16 +52-52,51-53 +31-93,4-92 +23-85,84-85 +17-98,16-97 +8-32,9-48 +7-90,89-90 +12-98,12-87 +62-88,61-61 +34-89,31-88 +13-15,14-98 +9-37,38-78 +23-43,22-44 +7-30,30-31 +43-43,42-84 +2-98,1-98 +15-84,14-85 +45-84,84-84 +14-14,15-42 +2-92,2-91 +90-91,23-90 +35-56,34-34 +2-91,4-90 +34-97,8-97 +9-75,9-75 +3-17,18-98 +55-91,55-92 +54-95,55-99 +42-43,43-74 +34-42,33-42 +13-79,79-79 +15-85,16-85 +25-30,29-29 +19-21,20-21 +37-72,36-48 +27-52,1-53 +27-34,33-33 +1-72,4-72 +28-67,66-66 +61-64,64-91 +42-75,68-74 +96-97,23-96 +3-29,4-13 +13-90,56-90 +7-89,8-89 +21-23,22-47 +95-96,57-96 +59-59,20-59 +4-5,4-90 +31-86,30-85 +13-91,14-91 +62-70,34-36 +66-67,12-67 +4-5,5-33 +10-54,9-55 +73-82,50-73 +59-68,60-68 +36-63,35-47 +30-87,31-86 +18-50,6-51 +18-64,17-64 +87-88,14-88 +66-66,35-75 +27-59,5-28 +6-53,1-52 +12-84,13-83 +36-74,53-75 +9-90,13-90 +94-96,62-95 +44-58,44-86 +26-81,82-92 +1-38,18-39 +81-81,39-80 +9-44,8-45 +15-84,12-15 +6-14,5-76 +15-88,15-87 +59-95,59-92 +78-98,28-78 +66-77,65-76 +49-63,19-64 +1-83,22-64 +19-91,20-92 +14-80,13-80 +14-56,43-55 +29-68,36-69 +46-72,47-73 +14-28,6-27 +39-54,39-40 +37-72,37-38 +96-98,11-97 +77-96,96-97 +47-64,60-91 +1-94,3-93 +81-98,56-98 +75-88,88-88 +40-94,93-93 +19-97,19-99 +18-18,19-97 +49-96,48-95 +5-93,92-93 +17-18,17-84 +77-77,23-77 +25-27,6-27 +6-98,98-98 +17-67,17-66 +4-34,4-50 +40-41,40-99 +38-96,38-95 +23-44,23-44 +38-59,58-58 +88-89,88-88 +40-46,39-83 +66-76,23-76 +15-64,16-65 +6-36,36-37 +17-53,17-52 +41-79,42-78 +1-71,70-71 +5-87,45-87 +25-29,7-29 +9-16,10-26 +69-85,67-86 +25-57,8-57 +2-56,3-55 +57-76,58-93 +7-7,6-94 +26-93,27-94 +3-89,34-88 +52-70,51-65 +7-73,59-72 +66-99,47-65 +16-45,26-45 +72-79,71-78 +79-79,20-80 +23-90,22-91 +71-96,70-96 +68-88,11-72 +31-76,86-87 +13-93,12-94 +20-98,20-98 +6-91,9-90 +7-92,20-86 +11-90,11-62 +8-89,9-88 +31-98,32-94 +19-19,18-73 +31-70,1-71 +2-81,33-82 +11-65,76-83 +11-89,90-97 +81-82,39-82 +1-96,3-95 +9-98,8-98 +22-25,23-25 +16-73,14-72 +5-79,44-80 +95-95,10-96 +1-90,1-97 +13-73,13-72 +95-96,23-96 +4-46,37-47 +19-34,19-99 +50-91,19-90 +5-72,13-68 +16-71,15-72 +8-95,89-94 +4-97,1-98 +45-89,44-90 +35-36,35-97 +28-79,16-78 +88-93,88-92 +18-85,89-92 +20-91,19-92 +6-49,12-48 +12-46,5-51 +36-98,75-97 +6-21,4-21 +5-83,60-84 +40-95,39-96 +96-97,17-97 +21-94,21-72 +19-90,10-20 +9-21,22-65 +4-55,4-54 +8-86,85-85 +3-82,3-81 +36-54,37-53 +15-87,14-14 +7-53,8-52 +96-96,13-97 +3-72,71-71 +1-79,5-78 +23-55,16-60 +15-41,41-76 +64-69,64-97 +3-99,3-99 +3-93,2-93 +16-94,17-94 +10-94,9-94 +26-96,15-96 +16-52,19-52 +12-91,12-92 +52-95,51-99 +2-48,2-3 +19-59,13-58 +6-90,7-7 +73-95,74-99 +7-74,74-74 +21-44,33-45 +41-89,40-42 +94-96,80-95 +77-86,82-85 +53-93,58-92 +5-98,97-97 +9-71,9-72 +6-84,6-84 +90-94,73-84 +1-98,2-9 +20-88,52-87 +9-89,9-96 +12-84,11-11 +2-29,1-2 +2-98,1-99 +44-45,31-44 +7-77,8-98 +3-4,3-6 +2-20,4-21 +36-63,62-62 +1-98,8-99 +43-82,81-81 +18-30,17-29 +49-94,14-49 +28-60,1-59 +2-98,3-98 +22-38,37-39 +2-79,78-95 +25-30,24-31 +1-82,4-82 +4-84,4-83 +8-96,8-8 +27-67,27-68 +9-27,17-27 +8-70,69-69 +19-20,20-88 +13-79,47-79 +2-67,3-68 +8-60,36-60 +29-33,32-34 +9-94,8-9 +15-28,15-28 +1-2,2-53 +43-47,8-55 +26-82,25-26 +10-97,96-96 +28-33,27-39 +77-81,76-82 +28-78,67-79 +14-80,48-79 +76-77,59-76 +11-11,10-89 +8-30,5-17 +11-75,12-75 +13-90,55-91 +14-15,14-39 +94-96,23-95 +20-84,20-89 +28-95,29-94 +3-55,1-54 +3-98,3-97 +44-89,43-89 +58-96,57-74 +26-85,26-26 +52-53,52-91 +2-95,6-96 +3-87,87-97 +9-25,7-26 +8-76,14-75 +14-38,7-43 +66-67,66-80 +49-98,48-50 +77-96,77-97 +29-89,27-28 +42-92,42-91 +9-71,8-8 +40-40,1-39 +26-27,26-89 +77-78,17-77 +20-33,31-34 +64-65,23-65 +31-62,32-60 +61-81,61-80 +57-87,87-87 diff --git a/inputs/input.5 b/inputs/input.5 new file mode 100644 index 0000000..7227e79 --- /dev/null +++ b/inputs/input.5 @@ -0,0 +1,512 @@ +[S] [T] [Q] +[L] [B] [M] [P] [T] +[F] [S] [Z] [N] [S] [R] +[Z] [R] [N] [R] [D] [F] [V] +[D] [Z] [H] [J] [W] [G] [W] [G] +[B] [M] [C] [F] [H] [Z] [N] [R] [L] +[R] [B] [L] [C] [G] [J] [L] [Z] [C] +[H] [T] [Z] [S] [P] [V] [G] [M] [M] + 1 2 3 4 5 6 7 8 9 + +move 6 from 1 to 7 +move 2 from 2 to 4 +move 2 from 7 to 4 +move 6 from 4 to 3 +move 1 from 5 to 1 +move 3 from 8 to 3 +move 15 from 3 to 4 +move 6 from 5 to 9 +move 14 from 4 to 2 +move 3 from 2 to 7 +move 1 from 2 to 7 +move 9 from 9 to 1 +move 3 from 2 to 1 +move 7 from 6 to 7 +move 1 from 6 to 8 +move 2 from 9 to 1 +move 9 from 2 to 3 +move 8 from 3 to 9 +move 1 from 1 to 4 +move 1 from 8 to 6 +move 1 from 6 to 2 +move 5 from 9 to 8 +move 2 from 9 to 1 +move 1 from 4 to 2 +move 17 from 1 to 9 +move 1 from 3 to 1 +move 3 from 2 to 3 +move 2 from 4 to 5 +move 12 from 7 to 3 +move 16 from 9 to 2 +move 5 from 7 to 5 +move 2 from 1 to 2 +move 1 from 3 to 6 +move 1 from 4 to 6 +move 1 from 7 to 3 +move 1 from 6 to 3 +move 7 from 3 to 4 +move 5 from 8 to 3 +move 1 from 6 to 7 +move 7 from 3 to 4 +move 6 from 3 to 1 +move 2 from 4 to 8 +move 1 from 5 to 2 +move 10 from 4 to 5 +move 3 from 5 to 2 +move 2 from 8 to 9 +move 5 from 2 to 8 +move 1 from 3 to 5 +move 2 from 5 to 8 +move 12 from 5 to 7 +move 1 from 4 to 2 +move 5 from 9 to 4 +move 1 from 2 to 5 +move 6 from 1 to 3 +move 6 from 3 to 5 +move 10 from 7 to 4 +move 2 from 7 to 3 +move 4 from 7 to 6 +move 1 from 9 to 5 +move 12 from 2 to 1 +move 1 from 8 to 7 +move 3 from 7 to 4 +move 4 from 4 to 8 +move 7 from 5 to 3 +move 1 from 2 to 4 +move 10 from 1 to 5 +move 2 from 1 to 2 +move 4 from 6 to 7 +move 8 from 8 to 3 +move 5 from 4 to 9 +move 12 from 3 to 8 +move 4 from 3 to 8 +move 2 from 9 to 2 +move 3 from 5 to 4 +move 1 from 3 to 5 +move 1 from 7 to 6 +move 14 from 4 to 6 +move 6 from 5 to 9 +move 8 from 2 to 8 +move 3 from 5 to 7 +move 21 from 8 to 4 +move 16 from 4 to 9 +move 8 from 6 to 2 +move 4 from 6 to 1 +move 1 from 4 to 6 +move 2 from 4 to 8 +move 3 from 1 to 8 +move 2 from 4 to 6 +move 1 from 6 to 2 +move 3 from 8 to 4 +move 2 from 2 to 5 +move 2 from 5 to 7 +move 1 from 8 to 9 +move 1 from 4 to 9 +move 1 from 1 to 6 +move 3 from 6 to 3 +move 3 from 2 to 3 +move 1 from 4 to 6 +move 3 from 6 to 7 +move 10 from 9 to 7 +move 1 from 4 to 7 +move 6 from 8 to 3 +move 1 from 6 to 8 +move 2 from 2 to 5 +move 1 from 2 to 1 +move 1 from 8 to 9 +move 1 from 2 to 8 +move 1 from 1 to 9 +move 7 from 9 to 1 +move 1 from 8 to 5 +move 7 from 1 to 7 +move 3 from 5 to 8 +move 3 from 7 to 2 +move 1 from 8 to 4 +move 1 from 2 to 4 +move 2 from 4 to 6 +move 5 from 3 to 1 +move 9 from 7 to 2 +move 6 from 3 to 8 +move 8 from 2 to 7 +move 2 from 6 to 4 +move 2 from 1 to 7 +move 2 from 1 to 4 +move 24 from 7 to 4 +move 4 from 8 to 9 +move 2 from 7 to 5 +move 1 from 5 to 2 +move 1 from 3 to 8 +move 4 from 2 to 8 +move 13 from 9 to 2 +move 2 from 8 to 6 +move 3 from 9 to 6 +move 26 from 4 to 2 +move 1 from 5 to 7 +move 2 from 6 to 2 +move 2 from 4 to 1 +move 7 from 2 to 1 +move 15 from 2 to 6 +move 8 from 2 to 8 +move 4 from 6 to 8 +move 9 from 2 to 9 +move 13 from 6 to 7 +move 6 from 1 to 9 +move 2 from 2 to 4 +move 4 from 1 to 6 +move 3 from 8 to 3 +move 1 from 4 to 9 +move 2 from 6 to 7 +move 1 from 4 to 3 +move 3 from 3 to 2 +move 14 from 7 to 4 +move 5 from 9 to 5 +move 9 from 8 to 5 +move 7 from 9 to 6 +move 2 from 5 to 6 +move 2 from 9 to 2 +move 10 from 5 to 1 +move 1 from 3 to 1 +move 2 from 8 to 1 +move 1 from 9 to 2 +move 1 from 7 to 5 +move 4 from 2 to 1 +move 1 from 9 to 8 +move 3 from 4 to 1 +move 1 from 8 to 6 +move 12 from 1 to 5 +move 1 from 1 to 6 +move 1 from 7 to 5 +move 4 from 6 to 9 +move 2 from 2 to 4 +move 1 from 9 to 6 +move 1 from 1 to 5 +move 2 from 9 to 7 +move 10 from 6 to 5 +move 1 from 6 to 7 +move 20 from 5 to 1 +move 1 from 7 to 9 +move 2 from 9 to 1 +move 3 from 5 to 1 +move 2 from 8 to 4 +move 2 from 8 to 7 +move 1 from 5 to 9 +move 1 from 8 to 4 +move 22 from 1 to 7 +move 5 from 4 to 8 +move 1 from 5 to 9 +move 19 from 7 to 4 +move 2 from 9 to 1 +move 1 from 5 to 9 +move 10 from 1 to 8 +move 1 from 9 to 1 +move 1 from 8 to 3 +move 8 from 4 to 7 +move 1 from 5 to 6 +move 3 from 4 to 5 +move 1 from 5 to 9 +move 11 from 7 to 4 +move 4 from 4 to 9 +move 1 from 6 to 2 +move 1 from 3 to 9 +move 5 from 9 to 4 +move 5 from 7 to 9 +move 23 from 4 to 2 +move 17 from 2 to 7 +move 2 from 2 to 8 +move 4 from 4 to 7 +move 1 from 4 to 5 +move 2 from 5 to 2 +move 5 from 8 to 9 +move 5 from 2 to 7 +move 9 from 7 to 5 +move 11 from 9 to 2 +move 1 from 4 to 3 +move 5 from 8 to 7 +move 3 from 8 to 5 +move 2 from 1 to 3 +move 2 from 3 to 9 +move 1 from 5 to 8 +move 5 from 7 to 5 +move 15 from 5 to 4 +move 2 from 8 to 1 +move 2 from 5 to 1 +move 4 from 4 to 1 +move 1 from 8 to 7 +move 8 from 2 to 1 +move 4 from 2 to 8 +move 2 from 7 to 4 +move 5 from 8 to 6 +move 5 from 7 to 9 +move 4 from 6 to 5 +move 7 from 4 to 8 +move 1 from 6 to 1 +move 1 from 3 to 1 +move 2 from 5 to 1 +move 7 from 1 to 5 +move 5 from 1 to 3 +move 4 from 7 to 9 +move 4 from 3 to 9 +move 2 from 9 to 7 +move 6 from 9 to 2 +move 1 from 4 to 1 +move 1 from 3 to 5 +move 1 from 2 to 5 +move 5 from 9 to 4 +move 4 from 4 to 6 +move 1 from 8 to 9 +move 8 from 4 to 3 +move 7 from 7 to 3 +move 5 from 1 to 3 +move 11 from 5 to 9 +move 1 from 7 to 6 +move 2 from 3 to 5 +move 1 from 3 to 1 +move 3 from 6 to 2 +move 2 from 5 to 1 +move 2 from 1 to 2 +move 3 from 1 to 5 +move 5 from 9 to 2 +move 2 from 6 to 8 +move 2 from 3 to 8 +move 4 from 9 to 7 +move 3 from 5 to 2 +move 2 from 1 to 8 +move 1 from 9 to 8 +move 1 from 9 to 2 +move 4 from 7 to 9 +move 11 from 8 to 7 +move 1 from 8 to 2 +move 6 from 9 to 7 +move 3 from 7 to 1 +move 13 from 2 to 7 +move 24 from 7 to 1 +move 2 from 2 to 6 +move 1 from 8 to 3 +move 1 from 9 to 3 +move 5 from 2 to 4 +move 1 from 2 to 5 +move 1 from 6 to 2 +move 1 from 6 to 3 +move 1 from 2 to 4 +move 3 from 7 to 3 +move 2 from 1 to 7 +move 2 from 3 to 8 +move 2 from 7 to 8 +move 9 from 3 to 2 +move 3 from 4 to 8 +move 1 from 5 to 1 +move 9 from 2 to 1 +move 3 from 4 to 9 +move 1 from 7 to 8 +move 6 from 3 to 9 +move 2 from 1 to 5 +move 15 from 1 to 3 +move 13 from 3 to 9 +move 11 from 1 to 4 +move 5 from 4 to 1 +move 6 from 3 to 6 +move 4 from 4 to 8 +move 6 from 1 to 4 +move 1 from 5 to 2 +move 1 from 2 to 1 +move 3 from 4 to 2 +move 2 from 8 to 5 +move 2 from 4 to 2 +move 9 from 9 to 3 +move 9 from 3 to 5 +move 2 from 9 to 4 +move 5 from 2 to 6 +move 1 from 1 to 8 +move 1 from 4 to 1 +move 10 from 9 to 2 +move 9 from 2 to 4 +move 10 from 4 to 1 +move 3 from 1 to 3 +move 4 from 1 to 2 +move 5 from 2 to 4 +move 2 from 5 to 2 +move 4 from 1 to 7 +move 10 from 5 to 4 +move 2 from 2 to 4 +move 1 from 9 to 2 +move 2 from 3 to 5 +move 1 from 3 to 5 +move 3 from 6 to 7 +move 8 from 4 to 9 +move 6 from 6 to 1 +move 4 from 9 to 5 +move 2 from 9 to 1 +move 1 from 2 to 6 +move 6 from 5 to 2 +move 3 from 7 to 9 +move 4 from 8 to 2 +move 1 from 7 to 9 +move 1 from 5 to 3 +move 2 from 7 to 4 +move 1 from 7 to 1 +move 14 from 1 to 9 +move 1 from 1 to 9 +move 1 from 3 to 8 +move 3 from 2 to 5 +move 2 from 4 to 2 +move 6 from 8 to 1 +move 1 from 2 to 1 +move 5 from 1 to 9 +move 1 from 1 to 7 +move 2 from 8 to 5 +move 1 from 5 to 4 +move 1 from 6 to 1 +move 8 from 2 to 7 +move 2 from 6 to 1 +move 9 from 9 to 5 +move 11 from 4 to 8 +move 4 from 7 to 4 +move 6 from 4 to 6 +move 1 from 7 to 4 +move 6 from 6 to 7 +move 1 from 5 to 9 +move 6 from 8 to 9 +move 8 from 9 to 5 +move 1 from 4 to 5 +move 15 from 9 to 3 +move 3 from 1 to 4 +move 6 from 7 to 2 +move 3 from 4 to 9 +move 2 from 7 to 3 +move 1 from 7 to 3 +move 1 from 7 to 2 +move 2 from 8 to 1 +move 3 from 8 to 5 +move 2 from 1 to 7 +move 8 from 3 to 6 +move 3 from 6 to 5 +move 1 from 6 to 1 +move 10 from 5 to 7 +move 6 from 5 to 4 +move 4 from 2 to 4 +move 6 from 5 to 1 +move 6 from 1 to 8 +move 2 from 9 to 2 +move 2 from 9 to 7 +move 6 from 3 to 7 +move 1 from 3 to 5 +move 1 from 1 to 9 +move 2 from 8 to 1 +move 2 from 5 to 4 +move 3 from 3 to 7 +move 10 from 4 to 6 +move 1 from 9 to 7 +move 12 from 7 to 3 +move 12 from 3 to 8 +move 2 from 1 to 5 +move 1 from 1 to 3 +move 13 from 8 to 1 +move 7 from 7 to 1 +move 13 from 6 to 9 +move 1 from 7 to 4 +move 6 from 5 to 3 +move 3 from 4 to 3 +move 6 from 3 to 1 +move 10 from 9 to 4 +move 2 from 7 to 6 +move 8 from 1 to 9 +move 3 from 2 to 9 +move 1 from 3 to 5 +move 1 from 3 to 5 +move 1 from 1 to 4 +move 6 from 9 to 3 +move 2 from 6 to 7 +move 4 from 9 to 5 +move 4 from 1 to 6 +move 1 from 2 to 4 +move 6 from 1 to 4 +move 3 from 9 to 3 +move 3 from 6 to 8 +move 3 from 8 to 7 +move 5 from 5 to 1 +move 1 from 3 to 9 +move 1 from 9 to 5 +move 1 from 3 to 2 +move 2 from 5 to 1 +move 1 from 6 to 9 +move 1 from 6 to 3 +move 2 from 9 to 7 +move 2 from 8 to 1 +move 1 from 3 to 2 +move 1 from 2 to 5 +move 1 from 7 to 1 +move 7 from 7 to 9 +move 12 from 1 to 9 +move 1 from 5 to 2 +move 1 from 7 to 1 +move 13 from 4 to 7 +move 1 from 9 to 4 +move 5 from 7 to 3 +move 4 from 9 to 1 +move 8 from 7 to 9 +move 3 from 2 to 3 +move 4 from 3 to 7 +move 5 from 4 to 6 +move 3 from 9 to 4 +move 10 from 1 to 5 +move 3 from 4 to 7 +move 16 from 9 to 2 +move 3 from 9 to 2 +move 6 from 5 to 3 +move 4 from 6 to 2 +move 1 from 4 to 6 +move 2 from 6 to 8 +move 1 from 5 to 2 +move 1 from 5 to 8 +move 7 from 7 to 2 +move 16 from 2 to 1 +move 1 from 5 to 1 +move 10 from 2 to 8 +move 14 from 8 to 5 +move 2 from 2 to 6 +move 1 from 2 to 5 +move 2 from 2 to 1 +move 8 from 1 to 7 +move 4 from 1 to 7 +move 2 from 1 to 7 +move 5 from 3 to 2 +move 1 from 1 to 6 +move 2 from 2 to 5 +move 4 from 1 to 7 +move 1 from 2 to 8 +move 1 from 2 to 8 +move 3 from 6 to 7 +move 10 from 7 to 5 +move 1 from 2 to 8 +move 27 from 5 to 9 +move 1 from 5 to 6 +move 1 from 6 to 4 +move 1 from 4 to 3 +move 3 from 3 to 7 +move 4 from 3 to 6 +move 2 from 6 to 4 +move 3 from 8 to 1 +move 2 from 6 to 1 +move 12 from 7 to 8 +move 2 from 3 to 9 +move 1 from 9 to 2 +move 1 from 2 to 8 +move 2 from 1 to 2 +move 6 from 3 to 8 +move 1 from 7 to 4 +move 15 from 9 to 5 +move 7 from 9 to 4 +move 1 from 2 to 1 +move 16 from 8 to 2 +move 8 from 5 to 2 +move 24 from 2 to 9 +move 3 from 1 to 2 +move 24 from 9 to 1 +move 5 from 5 to 9 +move 3 from 4 to 1 +move 1 from 7 to 6 +move 1 from 6 to 3 +move 1 from 3 to 2 +move 3 from 2 to 3 +move 1 from 5 to 6 +move 1 from 2 to 7 diff --git a/inputs/input.6 b/inputs/input.6 new file mode 100644 index 0000000..636557c --- /dev/null +++ b/inputs/input.6 @@ -0,0 +1 @@ +gzbzwzjwwrfftfrrbvvcbcvcffpssvhhzfzbfzzrbrtrcttnthnhsnhsnnclcpctpprwwgppppchhvvctvtsvswwcdcrrdzdhzdzvddvfvfjjlldvvfllfhlfhlhghnhghrgrsggvbbhdhffzggmttjqtjjgljjwtjwjggldlzzrfrpppjsjggqrrdbbgwgtwwwtqwtqqvccjnnhrhqqsnssjbssmjjbzjjqnqnlnjncjjzzqddfqqqnqvnqncqqmsshqqccssvpvllbbfvfmmmgzgdggtjgjtjbttngtnnhhfrfddmtmtftcftthvttwzwrzrbrgrbrqbqccmmtvtqvtqqzmzwmzzzsvzvhhhqlhqlqplpggvmvwmmshhnshsjszzljlnlrnllgddqllpmllsgswwqnqlnlqqlmqqvrqvrqrppvrrqwqhqllgjgcggsllqgllghlghhbvhhcvvbddvcvwwwzdzzfjjvcczbbwccjvccmvmfvfgfmfttwrttpmtmsszccjggcssmqsmsgszzfpphghvgvvcddtltwlwnnrbbfdbbtssrvvmwwjfflmlblwlrlmlwwhrhnhqnnvdvllzblzzndzdlzzhpprbrprnrzrjjlnlnrrjddgrrwrttcstsgshszzvgvfvpfpqfpfbpbfbwbmmzvvnnqvvqppzspzpzplldqlqsqlldmlmgmcmwmsmfsfzfdzzbpzzbbcwbbtppphlhshchjjszztctpprqppszzchcqczczddscsrstsntstjsjqjjfggvccgbggqhghrhppdldnlndnpddllgplgppnlpnnmwwglghhftfrtrqtqsszrssfjjzhzfhfssflfslsmmgrrcdrdnrdnnqznndrrbtrrmhrhbhsbsgsnslsqlqnncpccplpldpldppshsdssqdsqdsqdsdsdfsddchczhczcszcscffzhfzffpbbgttdhthnhnjnwnnwrrmwmlljzlzlzdzrrcvcbbsfstfsfnfqftqffgjfjzfjfsjswswccsvcvlccshhjpjcccnfnqqmsqmmrwmwjwswgsgjsjttmjmjttpqtqwttgmgfmmnbnrnpnwppgspggwnwqnqpqmmbmmnwnllbwwdqqzsqqtgttnrtrllcwcchpchcbhbpbnpbpsptpvtvzvrzzslljddjzjjmqmmdpmddcdzzrdrqddtctppwzzwrzrvzrvrzzjtztqqsmmcncllhmlmpmhgsrtrzjhjbtfvhmzpssfbjwcdshthnmmqmfhlhwcbbllwzbwfgfvzjcqblchzqqqgcgmpnbnnblhbcpgmvsbvtcmhsghldlhqlghgtpdvjflmjsmppdsvrjlwvhmwsmfvvdnzpmtfqjqpjdctnnrlfjfvdtmvdmhsczlfsqwfrqtlqwnzdzrcdzmhvrgwnjjtqjrqljhgcffglvhnsdssqdpfrfhtjwlqzvfjmpjnqhsjvndtstqjsqgcmgqdjvfqnlmtjlvcblndprmffrgqdnnncnlfflclgqbjbmsdqsjrmzpwtbqqqqsqmgthhjfqwzvcbqwlvdbffhcvncpldmchnptbnlbhmzrrjhzvzdrvtlhsnfnfdnvhlrlrmdcpnmvdwswctcqldszlvftqtwldrhmfjmfvcgjcdjsbjqjwdtslblwhqfvgrfcpnhszqqsfwbwcmvfvccvztdmcjqfjvdvmbdtcjvtwqpwsqjtdvpvvvsdrrvngmjztgjtnpdbmtlrbrjlwsdnthgzgpssgbzzrqvgblqhrtfbflnphvhpzmdfrwqvjjvcpsmdrqwdbzlpnqpmglgqzfhctrzdpzdthqgjtvpwcrlsmqnjwgzlnqbthvfswhjtrrsrswhbmnddgzmznvppbnmtjpzpdpmpzpmsgfstzldgmrtgplwwsbztphtcvdfgsqzqwrmlqpnhvpcqpfjpbrthrtwgqlfnrqcrpvhssjmhfgpnzzvlrlcbnpmddhtdvvfrrvprqrwbhfgvvltgrhrpwsdgvrlgthbztcgcfggtcfzqtlcdhpmcvpgcszslhpfrttnrdrqpqlgdfwtccmbhfrnlbhhmrtrjmzstbqhmtphzcpcllzsnghfvlwvzzvlqrjmfsvhrnjnvldgnbqvpjsmmphhrmhqrtcncmjwbdlqtrvmhgjrjsrddcpqnjhfmczfgwzspnrjfwvfdpdlcfpvctfrlspdwwlnpbvbglzsmgfsmrshsqgcvlfrvjssrglbwvvvgpvtqshbtqmzbnglflhhldtfzqssptrbnnzdqwqtstpftdqgmmhfjdlfwtmcmtmcgcvtfhzvsbllgbchvlhrgnvvbsnrwqrlvdqlcwwlgbjrvrzgcvljqzvdngtbhpnppjrzpmbwztzvnvrbfccfgvnqvrcmpdblngcvlwjwzpbbwmnslsdjmbrwbvnjsgcmsfvzvnwbzrrlzvgdnzcqqgggvmcwczjqnrddnzhlndgzjbvtbtjqdnlvlflqnfvjdmfstpdfqsgjdslgtpgdnvvpmfwvlqbmbgdrqjhdfhlmsdtfwpscsvdzmswszjfwqtsjqpfnjjlnsspvlgzwwtvwgdzfjjljfwbvfbvpglcqcdbdpshwcqzswbwhftbfqblzpqfmqpvzdjsrcqtvjntnhmlhmzllffcjsdnwpfzdglvlrhrljbrhjhgdnfcqcrccwrbbhrvqwrzlwjrrwzsfcwsvbqsjgtgpzqwlczljrtdhtzcgsfgqssdbjjmttdtzhrqtbqjtqfwmcpdftrfjmznpscsqmtfcdpcdjwcqjvmhngcqnmtmwfttcvpwgcnhhgnnbgjdvztzhczvqljjqwcmwcbvmqqjsfnmhtbtsvsnsfwfzgdvlctrgdvbjqpgfrrlsnppmvhfbbclprlvcssnvtsgftmlpqrpjzrrphrzltbtgfwjqqvbgqjdpdgqvzppfzcbhdbbjttcdzclsphtlzfvnfqgpmqvpzrqgpdnbmsrqgsnfdwpvndzmsllgmnrlhnnzldwshtrrsrsmdncwrcjnmcjlwbbfpzcwzvldtgvbcvhnbhgjgwjcvslrfcwbqlrqldvpcgnbwbzzncncftrgbrwchfrrtnpqsjbcpzvplnbqdgtvnnrcwwfvbdzdrsfspvtbhflhsbqmlsjvfmpvjbfvcrdmgrfqsmqgfrntfqnlqbvmsqtpncjrstspbqvfmddmhwsssdcddshmwdlscttmdzljtpwhzhzhwsdnmgjstfmlnqqvzzdqpqsjdsllswmqcjtnthwqnhbscrjdstljqgncjvjvlpfrtscrzrqghrdvdnbtnpshpldcchljzrzqjlwwscnphvrwlvzttcdjdrddgmvqpvdmttdqhwpfmslzvnrwlrrdttbhctgpgzjrmdwjbcmsprwggvmdmmltldgpbfnppnrpwcnpgtblccdvbsnfvgzmjppftvndmdslfshjvndfvvzjjlzhgfmhcggttrcrbrlwrqgjpchvhnjwqnbsnmftwszhzftglrfdvvnbcbzsslgmdchtrrrqqzhllrfhwfwbbdgfpdfwssmzcfcnzmrhfdddtdhfqmctsglqbwhwpnbdzbsfbbvvthrrgjvztjjwgjcgjntrddmmdldtmvjnwjbcqwfwvfhsrpchznhlqpcttqjffbrpbftftdjzlrqchmzrfgjrqlndfwfrghtsfsblcvtjmjrbfrwdgsgzmmjpdlbwzfscfsfcdqwdwnjwjbvvbptmfrqltmnlpbtrqspwdfmhnncqgtrtmbzhfmwrbcqhmmpmvprvwrjplspcmmspldmbgpbtmqjtrfcpfhcnpjbnlhjpzflstjqfqvzcnfgvrmtplndchffzrtfrqdpdnzrspddwmpzlfchrzzfcfvmbvfnlfwtfbvnffdqhljbvwwdtmszgrjtzwqdbgvvfphcnsdgvlmslqngfmsbrztrnpjprghmjffscbnfqwrvjjjtfzrmjtzbwdsmzgmbtjzvddhngmzvflwftblbzfd diff --git a/inputs/input.7 b/inputs/input.7 new file mode 100644 index 0000000..efd9044 --- /dev/null +++ b/inputs/input.7 @@ -0,0 +1,1030 @@ +$ cd / +$ ls +dir bhtvbj +dir bmlllrl +dir dhm +dir mnp +dir nwqgchw +$ cd bhtvbj +$ ls +dir dmd +dir fjblqtdp +25595 mdmtpjq.wmf +dir qhm +dir rjr +dir smtrp +dir tbdsml +$ cd dmd +$ ls +232616 ngmqbc.mdj +75367 vqqcvgts.vrc +$ cd .. +$ cd fjblqtdp +$ ls +dir czvcf +dir jnzwf +245590 lcpgtrc.dqm +141631 nwqgchw +37152 nwqgchw.ppg +80432 rbj.twt +$ cd czvcf +$ ls +dir cqzcp +dir czvcf +$ cd cqzcp +$ ls +dir bshmsns +55418 svhphd +232179 vqqcvgts.vrc +$ cd bshmsns +$ ls +243135 rbhprlgq.gbh +$ cd .. +$ cd .. +$ cd czvcf +$ ls +158882 lhfsc.lrh +266626 ntsrpn +$ cd .. +$ cd .. +$ cd jnzwf +$ ls +108142 btmz +$ cd .. +$ cd .. +$ cd qhm +$ ls +162986 bnqbdmm.dfh +dir hqbhr +201987 hwvdlfl +dir lvdrr +143900 nwcjvb +dir rgtcchh +297583 wdcsgg.cjt +$ cd hqbhr +$ ls +175196 btmz +dir fcm +221851 ngmqbc +dir qnlssvn +263872 rdzsz.grd +dir vvbgt +dir wwzwqqh +$ cd fcm +$ ls +66471 sfddtgp.flr +$ cd .. +$ cd qnlssvn +$ ls +dir czvcf +dir gngvc +75812 lbthznl.llq +182104 nwqgchw.nlq +161446 rrvwdw.nzv +dir rzssqpcj +260877 wdcsgg.cjt +$ cd czvcf +$ ls +202850 vqqcvgts.vrc +$ cd .. +$ cd gngvc +$ ls +154834 rdzsz.hst +$ cd .. +$ cd rzssqpcj +$ ls +66116 bdzdp +$ cd .. +$ cd .. +$ cd vvbgt +$ ls +288775 cpsmvwq +dir fbfddwqz +81857 jcpj.wpf +dir nwjps +49905 tlrlbg.mgz +64870 wdcsgg.cjt +131013 zbc.rhl +$ cd fbfddwqz +$ ls +100619 wdcsgg.cjt +$ cd .. +$ cd nwjps +$ ls +96526 cjrvb.tdv +$ cd .. +$ cd .. +$ cd wwzwqqh +$ ls +dir czvcf +$ cd czvcf +$ ls +256121 nrjfpjc.wcg +$ cd .. +$ cd .. +$ cd .. +$ cd lvdrr +$ ls +27488 lhfsc.lrh +$ cd .. +$ cd rgtcchh +$ ls +19285 bfdfz.rln +166070 btmz +222301 vqqcvgts.vrc +$ cd .. +$ cd .. +$ cd rjr +$ ls +dir dbb +121292 drv.ljf +dir ntbbd +228025 rphtjh.ngl +133033 wrlwdgz +$ cd dbb +$ ls +158756 btmz +130326 czvcf.trn +dir fdgh +dir grr +20181 wdcsgg.cjt +$ cd fdgh +$ ls +24629 rph.rsl +299233 wdcsgg.cjt +$ cd .. +$ cd grr +$ ls +259732 tqvvp +$ cd .. +$ cd .. +$ cd ntbbd +$ ls +dir cwwhvghw +dir hggcq +169994 jrvt.srj +dir jtzbw +dir ptr +215668 smcngpwr +dir tfshcbw +$ cd cwwhvghw +$ ls +dir czvcf +167719 dzltv +dir mdgqwdjq +265831 pcfcw.jrd +86965 qsdv +71709 tdbtjwzp.msg +dir vtbr +$ cd czvcf +$ ls +dir ntj +dir nwqgchw +dir rdzsz +202867 vqqcvgts.vrc +$ cd ntj +$ ls +214072 ntplhvnn.zpt +$ cd .. +$ cd nwqgchw +$ ls +228489 qfphslzt +15383 zfpdpds.bjt +$ cd .. +$ cd rdzsz +$ ls +dir jrvt +6415 jrvt.vjt +290773 mhfwsc.nlr +82027 wdcsgg.cjt +$ cd jrvt +$ ls +85079 mnq.jvr +$ cd .. +$ cd .. +$ cd .. +$ cd mdgqwdjq +$ ls +223814 phghj +172175 wwpvcb +$ cd .. +$ cd vtbr +$ ls +134023 frwc.dhg +26692 fvgscmns.mpj +148404 wnlgfmdr.dch +$ cd .. +$ cd .. +$ cd hggcq +$ ls +19064 btmz +200043 lswzn +dir mlrj +49427 rcwmzz.nsn +dir wjznmcw +$ cd mlrj +$ ls +10869 czvcf.fvc +277796 gprlsg.tbt +$ cd .. +$ cd wjznmcw +$ ls +43168 bzwn +dir dznz +4102 lcpgtrc.dqm +dir ltcpgcdf +228100 nwqgchw.mgc +dir tbdqsnb +dir tmzswrgt +19984 whgmsm.bjj +$ cd dznz +$ ls +59403 msqdt.mlm +$ cd .. +$ cd ltcpgcdf +$ ls +dir czvcf +10727 jgphjm.pdw +309167 nwqgchw +dir pwbt +dir qznbn +203154 ztpcdmb.rrs +$ cd czvcf +$ ls +173609 pntjz.vzq +292292 trvbpz.djc +111008 wdcsgg.cjt +107437 wjvv.hsj +265353 wsbff.pzh +$ cd .. +$ cd pwbt +$ ls +307172 jtdtlbsh +dir lgz +$ cd lgz +$ ls +dir fnlsq +$ cd fnlsq +$ ls +161356 jrvt.ljb +$ cd .. +$ cd .. +$ cd .. +$ cd qznbn +$ ls +12354 bdgvj +59582 cslzb.qnq +dir czvcf +dir psnpf +136432 vlsswwgv +99861 vqqcvgts.vrc +39898 wzllwpmr.mqc +$ cd czvcf +$ ls +dir dqnpjjrv +13244 ztcpzzr +$ cd dqnpjjrv +$ ls +233675 ngmqbc.srp +$ cd .. +$ cd .. +$ cd psnpf +$ ls +1986 lhfsc.lrh +$ cd .. +$ cd .. +$ cd .. +$ cd tbdqsnb +$ ls +170099 hbcnv.gmj +$ cd .. +$ cd tmzswrgt +$ ls +118969 btmz +dir czvcf +51649 hbb.jcb +$ cd czvcf +$ ls +163330 hhcf +159514 wdhw +22876 wtn.pnb +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd jtzbw +$ ls +55634 rdzsz.dgf +$ cd .. +$ cd ptr +$ ls +49447 wdcsgg.cjt +$ cd .. +$ cd tfshcbw +$ ls +193480 btmz +44402 sjsgfmts.dtc +115952 vqncb.ssf +$ cd .. +$ cd .. +$ cd .. +$ cd smtrp +$ ls +dir hlpzdbwp +307696 jrvt.hds +300691 lcpgtrc.dqm +dir nflt +dir qcph +dir qlrdf +$ cd hlpzdbwp +$ ls +dir czvcf +dir frzvnrb +dir jrvt +$ cd czvcf +$ ls +155141 lcpgtrc.dqm +$ cd .. +$ cd frzvnrb +$ ls +71241 btmz +dir rdzsz +dir vdb +$ cd rdzsz +$ ls +35362 jngsmcrm.pwt +$ cd .. +$ cd vdb +$ ls +239928 jrvt.nbf +16883 ngmqbc +$ cd .. +$ cd .. +$ cd jrvt +$ ls +dir lcchtcz +$ cd lcchtcz +$ ls +199091 qzsh.fst +$ cd .. +$ cd .. +$ cd .. +$ cd nflt +$ ls +219987 nwqgchw.qpf +dir rdzsz +257069 wdcsgg.cjt +$ cd rdzsz +$ ls +dir zmgf +$ cd zmgf +$ ls +dir vwcvbff +$ cd vwcvbff +$ ls +157598 qsp +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd qcph +$ ls +158708 cdj.bch +dir drdpdzj +dir jrvt +109459 lhfsc.lrh +dir ngmqbc +164488 rtnvpg +23729 vqqcvgts.vrc +115775 wdcsgg.cjt +$ cd drdpdzj +$ ls +dir ngwcr +dir pwffm +dir vcclwq +$ cd ngwcr +$ ls +76003 rqjbn +84407 vqqcvgts.vrc +$ cd .. +$ cd pwffm +$ ls +284565 rzdjrmn.jdz +$ cd .. +$ cd vcclwq +$ ls +137044 czvcf.qll +3433 nwqgchw +18027 vqqcvgts.vrc +$ cd .. +$ cd .. +$ cd jrvt +$ ls +57605 vljs +$ cd .. +$ cd ngmqbc +$ ls +217554 btmz +96485 lhfsc.lrh +dir lpcr +dir sltwgmjv +dir snll +dir tsq +218323 vqqcvgts.vrc +150009 wdcsgg.cjt +$ cd lpcr +$ ls +227650 qhfz.grc +$ cd .. +$ cd sltwgmjv +$ ls +39536 fncjl.vlr +248067 lcpgtrc.dqm +$ cd .. +$ cd snll +$ ls +70368 btmz +195228 svmdc.pcv +$ cd .. +$ cd tsq +$ ls +271904 vqqcvgts.vrc +104043 wbgwpcl +$ cd .. +$ cd .. +$ cd .. +$ cd qlrdf +$ ls +dir dqgln +dir ngmqbc +dir ntngh +$ cd dqgln +$ ls +dir qdrszjvm +$ cd qdrszjvm +$ ls +199245 lcpgtrc.dqm +$ cd .. +$ cd .. +$ cd ngmqbc +$ ls +171851 czvcf.jft +dir ngmqbc +dir qdffn +$ cd ngmqbc +$ ls +14596 jjhmhzs.dww +$ cd .. +$ cd qdffn +$ ls +dir czvcf +$ cd czvcf +$ ls +130227 jhqhd.fdz +$ cd .. +$ cd .. +$ cd .. +$ cd ntngh +$ ls +243908 bqjfjnl.pcl +112351 btmz +30167 lcpgtrc.dqm +249181 mfwcvc.zdg +dir qlhw +157482 vqqcvgts.vrc +$ cd qlhw +$ ls +267233 gfhthp.prr +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd tbdsml +$ ls +44152 btmz +143454 cpzlrsh +47848 crdvhbt.dfr +dir gvjhlqdd +171842 mgljcrw.trm +dir nqsq +dir rdzsz +$ cd gvjhlqdd +$ ls +177040 ffbm +$ cd .. +$ cd nqsq +$ ls +dir fchtl +dir jrvt +dir nsgbjwbt +dir qcz +dir vqlnqvwn +55184 wlspgz +dir wzm +dir zpw +$ cd fchtl +$ ls +193793 btmz +164089 jrvt.hzn +53839 lpv.gtg +dir qmfwds +dir sqznc +dir tdqg +dir zvd +$ cd qmfwds +$ ls +dir dqtbp +236341 lcpgtrc.dqm +101548 rdzsz.vqr +180341 wzpdq.gjr +$ cd dqtbp +$ ls +56177 hdgnthn.dff +56834 jrvt.nmg +$ cd .. +$ cd .. +$ cd sqznc +$ ls +282988 dpdfvn.spw +248737 tzfd.pfd +$ cd .. +$ cd tdqg +$ ls +251266 rdzsz.dhb +$ cd .. +$ cd zvd +$ ls +124979 ngmqbc +$ cd .. +$ cd .. +$ cd jrvt +$ ls +206684 dbbppj.sds +189832 jvst.fzr +$ cd .. +$ cd nsgbjwbt +$ ls +32810 btmz +$ cd .. +$ cd qcz +$ ls +dir bjbsl +dir brvgznjr +98771 btmz +dir gbfhz +dir ngmqbc +88248 rccpzctp.gwn +dir rdzsz +39060 tqswrdh.wfc +dir ztnv +$ cd bjbsl +$ ls +1312 rdzsz.qtl +$ cd .. +$ cd brvgznjr +$ ls +98988 lhfsc.lrh +$ cd .. +$ cd gbfhz +$ ls +96203 hgldz +28558 nwqgchw +dir qrzd +240140 wjww.hjf +$ cd qrzd +$ ls +231108 hjfcwvtq +$ cd .. +$ cd .. +$ cd ngmqbc +$ ls +dir cpjvd +dir vrbfcwc +$ cd cpjvd +$ ls +142549 btmz +dir ngmqbc +$ cd ngmqbc +$ ls +62008 vqqcvgts.vrc +$ cd .. +$ cd .. +$ cd vrbfcwc +$ ls +dir czj +$ cd czj +$ ls +48640 btmz +$ cd .. +$ cd .. +$ cd .. +$ cd rdzsz +$ ls +dir czvcf +dir fmgmgmp +dir jrvt +308389 lhfsc.lrh +dir nfdh +dir ptgsd +dir qmg +244691 vqqcvgts.vrc +$ cd czvcf +$ ls +dir fqjrb +dir jbtgpl +dir jstzjf +299095 lcpgtrc.dqm +122426 lhfsc.lrh +dir wczwphjh +219013 wdcsgg.cjt +$ cd fqjrb +$ ls +dir fpspthg +dir hdmtsv +118041 mwlsw.fvs +dir rdzsz +99976 wdcsgg.cjt +$ cd fpspthg +$ ls +280707 hmwsq +$ cd .. +$ cd hdmtsv +$ ls +102842 btmz +72949 fpzqpqb.zjp +$ cd .. +$ cd rdzsz +$ ls +36159 sjtwbsvc +$ cd .. +$ cd .. +$ cd jbtgpl +$ ls +139817 lhfsc.lrh +139333 nwqgchw.wrz +$ cd .. +$ cd jstzjf +$ ls +dir gngbnq +54929 lcpgtrc.dqm +dir pdbdwmc +$ cd gngbnq +$ ls +dir bfvsz +dir pndfrjhz +$ cd bfvsz +$ ls +283370 mdf.wvc +$ cd .. +$ cd pndfrjhz +$ ls +252824 lhfsc.lrh +$ cd .. +$ cd .. +$ cd pdbdwmc +$ ls +dir nwqgchw +dir sdmfntl +266823 vqqcvgts.vrc +$ cd nwqgchw +$ ls +dir bnfhbvmr +$ cd bnfhbvmr +$ ls +62602 lrmmtjmv +$ cd .. +$ cd .. +$ cd sdmfntl +$ ls +93365 njfgsgm.jtv +$ cd .. +$ cd .. +$ cd .. +$ cd wczwphjh +$ ls +164840 lcpgtrc.dqm +$ cd .. +$ cd .. +$ cd fmgmgmp +$ ls +292610 jglzqc.mss +dir rdzsz +dir rrrjw +$ cd rdzsz +$ ls +295660 lcpgtrc.dqm +$ cd .. +$ cd rrrjw +$ ls +dir lsc +$ cd lsc +$ ls +280045 dljtrq.tll +dir nwqgchw +$ cd nwqgchw +$ ls +162525 lhfsc.lrh +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd jrvt +$ ls +227518 pcsqv +$ cd .. +$ cd nfdh +$ ls +304769 ngmqbc.qhd +$ cd .. +$ cd ptgsd +$ ls +281593 cpfzhhd +123541 hhlhssqb.szt +250182 lcpgtrc.dqm +dir ngmqbc +229226 pppmnp +dir wntfhzqf +dir zchjnbz +$ cd ngmqbc +$ ls +202162 vqqcvgts.vrc +$ cd .. +$ cd wntfhzqf +$ ls +dir czvcf +dir rdzsz +dir wvhznt +$ cd czvcf +$ ls +250212 bzwsvd.lhc +$ cd .. +$ cd rdzsz +$ ls +244145 ngmqbc.lfb +236278 plnjrm.rgs +$ cd .. +$ cd wvhznt +$ ls +264719 czvcf.cgn +$ cd .. +$ cd .. +$ cd zchjnbz +$ ls +dir jrvt +dir msrs +dir vtrcs +$ cd jrvt +$ ls +154825 jrvt +44966 rdzsz +198819 vnnrqcbr.fjf +$ cd .. +$ cd msrs +$ ls +188969 cwbq.ltd +$ cd .. +$ cd vtrcs +$ ls +2014 jmvvq.pvn +$ cd .. +$ cd .. +$ cd .. +$ cd qmg +$ ls +dir dqfs +dir hwnbws +dir ngmqbc +$ cd dqfs +$ ls +130929 smwcjg.vjm +$ cd .. +$ cd hwnbws +$ ls +dir vsq +$ cd vsq +$ ls +196984 twlvvd.qlc +$ cd .. +$ cd .. +$ cd ngmqbc +$ ls +212410 cdzjjw +$ cd .. +$ cd .. +$ cd .. +$ cd ztnv +$ ls +167568 pwrsss +64234 rlprpl +$ cd .. +$ cd .. +$ cd vqlnqvwn +$ ls +19448 lcpgtrc.dqm +$ cd .. +$ cd wzm +$ ls +123271 lhfsc.lrh +dir ngmqbc +dir qvvvdl +$ cd ngmqbc +$ ls +dir bdjfhmvz +101745 cqg +dir ngmqbc +119605 ngmqbc.lnd +dir tnfr +dir wfzct +$ cd bdjfhmvz +$ ls +104287 jrvt.nnj +$ cd .. +$ cd ngmqbc +$ ls +88793 nwqgchw +$ cd .. +$ cd tnfr +$ ls +dir nggnpj +161400 vqqcvgts.vrc +$ cd nggnpj +$ ls +308915 btmz +81154 jjtwrbtw.bln +50902 sfppg.hvn +dir tpg +$ cd tpg +$ ls +143630 vqqcvgts.vrc +$ cd .. +$ cd .. +$ cd .. +$ cd wfzct +$ ls +71154 bzhzl.zcg +$ cd .. +$ cd .. +$ cd qvvvdl +$ ls +185898 nwqgchw.tvr +$ cd .. +$ cd .. +$ cd zpw +$ ls +167347 bcfj.lch +dir fldmgj +dir jspslmwp +199949 rdsz.dng +$ cd fldmgj +$ ls +154330 sbftm.wmt +$ cd .. +$ cd jspslmwp +$ ls +75378 jrvt.jdw +26174 mzthsl.qtv +214743 njjdqsr +29213 tsdnqwj +$ cd .. +$ cd .. +$ cd .. +$ cd rdzsz +$ ls +263486 cfjb.mfc +77949 fjnfp.lcl +262618 lcpgtrc.dqm +124555 lhfsc.lrh +dir pngmr +$ cd pngmr +$ ls +305791 fdvbthn.cvs +32332 rdjvldmt.lfw +dir rwwqsl +dir rzgv +$ cd rwwqsl +$ ls +158602 bmqnqtz +dir cvphd +dir hpb +$ cd cvphd +$ ls +119828 hfhvv.ffp +dir qbvcjq +257077 wdcsgg.cjt +$ cd qbvcjq +$ ls +dir nwqgchw +$ cd nwqgchw +$ ls +127576 lcpgtrc.dqm +$ cd .. +$ cd .. +$ cd .. +$ cd hpb +$ ls +176379 nwqgchw +166831 qhdgmsvv.bdr +$ cd .. +$ cd .. +$ cd rzgv +$ ls +56544 pngtztnf.gdt +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd bmlllrl +$ ls +270146 chqqnfpn.dfs +dir ngmqbc +dir rdzsz +70712 vqqcvgts.vrc +$ cd ngmqbc +$ ls +dir rgcrvvgj +301804 vqqcvgts.vrc +$ cd rgcrvvgj +$ ls +219577 jwrlwq +$ cd .. +$ cd .. +$ cd rdzsz +$ ls +290477 nwqgchw.rng +$ cd .. +$ cd .. +$ cd dhm +$ ls +127736 npznvgqn.bdd +59221 smmlzfj.lhh +22345 zhfpvppf.gtn +$ cd .. +$ cd mnp +$ ls +dir gdntwv +dir qlsfmcqp +dir schlsbb +$ cd gdntwv +$ ls +133571 btmz +$ cd .. +$ cd qlsfmcqp +$ ls +244176 bffzdczp.gqf +12060 cqlvm.wdd +dir jnl +14040 ldczcfl +dir nwqgchw +243637 sphmmcv +290808 wdcsgg.cjt +$ cd jnl +$ ls +252674 lcpgtrc.dqm +$ cd .. +$ cd nwqgchw +$ ls +258944 btmz +$ cd .. +$ cd .. +$ cd schlsbb +$ ls +dir fpbrwnz +dir hnrh +101456 rtqfwbl +$ cd fpbrwnz +$ ls +232867 btmz +150179 cmq.tgm +249603 jztmgg.dlb +dir mqhz +62465 wdcsgg.cjt +$ cd mqhz +$ ls +232359 rdzsz.lhj +25201 vpjbmjd.zvt +277414 vqqcvgts.vrc +$ cd .. +$ cd .. +$ cd hnrh +$ ls +dir dmghrm +290254 lcpgtrc.dqm +dir tbbp +104510 vqqcvgts.vrc +$ cd dmghrm +$ ls +16799 vqqcvgts.vrc +$ cd .. +$ cd tbbp +$ ls +14688 jrvt +45492 wdcsgg.cjt +$ cd .. +$ cd .. +$ cd .. +$ cd .. +$ cd nwqgchw +$ ls +21374 lhfsc.lrh +121726 wdcsgg.cjt diff --git a/inputs/input.8 b/inputs/input.8 new file mode 100644 index 0000000..ca6ffe2 --- /dev/null +++ b/inputs/input.8 @@ -0,0 +1,99 @@ +200210101302123001201232003214413304042424024222111455334421333412020113121332322101331130101222121 +120100002010203210130421301201404231101254535242322112224524254031333224202413331320010302202022220 +001200100200133300103241144403033124133341435524324143423341133252144040000423121430200100022211211 +000012321202320024030320421230202213131514345325422513145221212451233202023402411040301113132131121 +111103022312211340103042313022513413532253114352113252432213335135141552003023313142423321320321212 +012112331020102411442404102132241553154421513555415233312432515445154422402444314033003303323320102 +200110201230142322043222345241215442224221523534521123322555135454422121142320102300340211100120310 +120012121330311223132012342543213553334431544155643463443115441515143121132442433102420433301221030 +232202001121031432403445341332243414414443326545556526423425612114153351234111432130314202330220010 +133033302004430221300431213144135422424546344243432363665246244341243432352514332142044434023131003 +323030003440212122341123551231453352464334362343245665335563565343421512431425213111441304340011231 +003000034413321402514254435224115366533425244663634336625232232553226312522142535212414040004113221 +203203234020411021411532552144456644553434362455342664624546642245543563524451523133334201141411113 +103032442424101341214421543433253563535422262333555222632224462463423526635422354541113034433423000 +020133314440123532124351233325245665424345546323747756264656566346366665333444354252523314300303020 +303102341103425544443131253325266522334544545666744335557473366256323634266213415324324341134211112 +023044020203451414535535625633224445223364357435363343536455577666362444542245113553311434011140201 +130031020304324235255516652533544625454347643363434554557436654343442356543323225524232341230421320 +220403302205252431242554332553635575345744474647573376655365465333365246645632425211423335322131241 +214400202003451322143346242334324356456753434655775663756755654555657245563342333124515412311131042 +144333342021131124452334346355653767663565565443573444757577736363654665266666525633314514341134041 +111433243134224443344522523636635556736633645434676475377437457745566744646666544632522235344014021 +421102342525325521256266235434736567476654664744455647574564433767653357626264235361354533341223334 +030103204353142134336562363447366767454375766855756788856466566674566447433523254456444314525331002 +410404421315115456635435323737634573668554668666466474777667486334467637567356564452622223212300033 +012140231351312622653242266664756743747655464548677545754787855754646777456542663563451151125130001 +122202541435443225443523376367336378575474446665666578564485767586653557636553243543226514123433024 +322341213145516625463356665437453687675788656768568586885644456856643777435654242663525154214512210 +140223342343464363346556333753354858857777544686557677466886555488585473373334765233552623543312200 +422403124152143243445554363655577858878487546898958587796787475657654747656366532662626445424424410 +321231255223524234247766447646866656646454795565859795788557647554485844673466335434256341522445230 +434145334313623446664556646655886667557495589675986998765976684664875654474437775454342445551523513 +433432522546645452345446344376857768848989787655576756768988889768856644743374354326655353222112422 +420512322415655344574666457745755754768778785979569655887679799664764746786677655366663463434125353 +124155335466242262756735466446866676986698997576575557966855895697587767454454543472442666623435524 +415345153363443642766655644464854747967899588766957797576697788779586574578644737774624632644545113 +441333524323362443745375688445665755769658789797769878578585579797547585786676677364322333511241423 +434241414244556353633455448684455597576765697869997689879755769799778646786856633667554436244553435 +245314523664342366643466667485888767568897999988699997889967759988686546445685776346654553265354523 +321432211425653366363657657447568665877957979987786779697868577888595675855456734636524456425431142 +033422313632342655364345567644755898785796699996888776886796657757797857688876376354363532536232314 +052242355542323647576334458576689579586968867996689878797799969587659875547656644765646363224253444 +234434342653226546436658855775896968867876797997996768779677667699889796745768337366436634632245213 +445222213235346735753667755676669878598898697986687998696976996987769858656476757667332332625351514 +435355546442363575345376588657989988589877788898987788998987888969858697674677876744344654353312151 +133553556352633665357787686775799577779997878787787897797699998878965787455885663557545355624324115 +545233354544544435573376578458655587598789677877787899897869896658788766588656837747764363655341521 +211555453542466735366787685658866856979676887788987997989769978968996968546685834576542622243213155 +144113123264426777463777488587699869767977889987787997788887696979756858576885677473635653233543243 +311313235543366635754558457576795998769778679778889889889987668888968988774448543757733325643231422 +443355342254425446767468656476595865887986787897998879979969967775865587546587644777655235234324344 +442443355324564334365767887885668589686866989997898887797879967668978575855866836656334552623632351 +413433144665547465436464847768768777996977968777788977797977679895685768676556634643436422334442455 +453142566345254453333444885587565578677688779977889999789888796877778557847675867477652535546215422 +151332265265444777364585745778956687969888787989789897978868788787686655764465553577745632625231455 +445223254646322766445774546689887968566967668798798897976876999668956869458456654344465452425345523 +354122314463434747436654644484979696677686898978887878797976779669677694454485555635752664656513133 +012232355266625635373378685656767767887668769986988989987778777769685698467858437754343553255322444 +024555213224464774353435485656687879797989768686778867676969798596899575656786466333455553355345234 +132432444233664544676735848585667856997869777886887797667989767578765688576686457343436442546533142 +444143435624244477333448558448667577665667766788798979786987858959699677748784665774745235262414311 +231541231646652273467743578658756967656599897986666898787998598868878558884847373763743436333442222 +452115141256244235637554556584849575796768969699769887767797597866989785545764765437552564345131455 +425244513366263336575446588857846976888767658868676696667958899568857767458773744637333452423533532 +105131435443626324576435676555478786567757999689999668897789599599856875674774656477364623225123151 +032315232453426453465765574644575446896598678899586759777588775565758668474745575344566425615355433 +414341314426235264647543645746457657967695558965975769898785985654576867658657635475666624352134144 +100323311242236242255347744575476776858879688698797878579969975874748675444573747344653555211352221 +014311441544336355454575445686757688689666888758996965685596966444845578855576543546465554243154142 +342254542123656656546356366778675574845697675569556687688586558646447667434456665352633422255244414 +211453143353434566563465675745864885674687588998996685977676784567474566434544466522533343353114231 +313022332133466332336477634667465867888785648576775865668487487544484845366535575442326624351431012 +114211155121535434243656644454647447848458486648876856858767458446765544736737656643222525432544232 +010122525344156263354227756636434587458665676586887787858748554686666673755577552352343354534152040 +412321535231542523462334653374657358685586488785485678564864446878734675557735423665442154552342011 +104424333415333444626345536643374555557465464777678466847574454875666744474766234464241242553110441 +124112314331255362622446225633636335345644866876474848854678487634655646573245644334324331251444400 +312000445323443215433555564337345455776744675674478888474578745344363573744242633426233313351422233 +430022234512251423424326264637465355355746637447648757857473743746654776525262553642221524414041323 +233102134414232412332356226435465646465443546335436365365755446655434343246552323324433143130002111 +111404313153153442123666355224747746356376564475444457353545546774737575424345446353354342244313412 +234334440424325351212523232526466575445565545647676363335445774536647332224524363441415351434423203 +123130340344441323432464644565445455655737653455763575457374566467753266262333355253144434121341413 +032133414041244541233153446223224334665566654364436733465455436362242424353334354423444542342323120 +331120000421342243325115456255364522626457536537755343436545747263466663636524533235411311121411332 +332230404213303353133111256254363655255434744674474754434646343454354433433515513135334442222004010 +202121313223222511453512322255566444565544643556454452443454524223535655434354335552444042314134332 +213300030010040331541141441242645424354334635234565662362526354224246533454523242512414430303043302 +303300002321212004244535244451242654252646636554662636263664646235263231315331142352102120130122303 +331101014024440131342122251123415223633335635453354263636226636262256541131443215354304023243302102 +331202033431032221244232125455313233642635432336534464333635335635423524411525215033323313120333013 +033030202002100313111523432311242321352266332543436322536365535415434245433251242122313014031212313 +222211100333332310242343252221251543414443226355325632364262625135251521332232522230244440201332023 +000203310213011213412344315255131512335223453552465335425413252322422253334440310223340313231332020 +011332231323130141310431031222132533232453353124412341254122255424331153344341340113311310010033130 +010021033100310312123242131122524221555411455523421253253142545515323423322444300142424333201332021 +110101220202201114310003401420513324334525253112533435355244442344311112421320024234333132222021000 +020011123333222200003244032430305123255531342321413242534522552125444313014002424233330331130222200 +100220000312023302114114440201033304323431155212155522541415515211123243000444221343002001121202102 diff --git a/inputs/input.9 b/inputs/input.9 new file mode 100644 index 0000000..6eead55 --- /dev/null +++ b/inputs/input.9 @@ -0,0 +1,2000 @@ +R 1 +D 1 +L 1 +D 1 +L 2 +U 2 +D 2 +R 1 +D 1 +L 2 +R 1 +L 2 +R 2 +L 1 +R 2 +D 1 +R 1 +D 2 +U 1 +R 1 +D 2 +R 2 +L 1 +D 1 +R 2 +D 2 +R 1 +L 2 +D 1 +L 2 +D 2 +R 2 +D 2 +L 1 +D 1 +L 1 +D 1 +R 2 +L 2 +R 2 +D 2 +R 2 +D 2 +R 2 +L 2 +R 2 +U 1 +R 1 +D 2 +R 1 +L 1 +U 1 +L 2 +U 1 +D 1 +R 1 +U 1 +R 2 +D 2 +U 2 +D 2 +R 1 +L 1 +U 2 +L 2 +D 2 +L 1 +R 2 +D 1 +R 1 +L 2 +U 2 +R 1 +D 1 +U 2 +L 1 +U 2 +L 1 +R 2 +D 2 +R 1 +D 2 +R 1 +D 1 +R 1 +D 1 +L 2 +D 2 +R 2 +D 2 +R 1 +D 1 +R 2 +L 1 +U 2 +R 2 +D 1 +L 2 +U 1 +D 2 +L 2 +D 2 +L 2 +D 1 +R 1 +L 1 +U 2 +L 2 +D 1 +L 2 +U 1 +L 3 +D 1 +R 1 +U 3 +L 2 +U 1 +D 3 +L 1 +D 2 +R 1 +L 3 +D 2 +L 2 +D 1 +L 1 +R 2 +L 3 +D 2 +L 1 +U 3 +L 1 +R 3 +U 1 +R 3 +U 3 +D 1 +L 2 +U 2 +D 2 +U 3 +D 3 +L 1 +U 3 +D 3 +L 3 +R 1 +D 1 +U 2 +R 1 +U 3 +L 3 +D 2 +L 3 +D 1 +R 2 +U 1 +D 2 +L 3 +D 2 +U 2 +R 1 +L 3 +R 2 +L 2 +U 2 +R 2 +L 1 +D 1 +U 3 +D 1 +R 2 +L 1 +U 1 +R 1 +L 1 +D 2 +L 1 +D 1 +L 1 +D 3 +U 3 +D 3 +R 3 +D 2 +L 1 +R 1 +L 1 +D 3 +L 2 +D 1 +R 1 +D 3 +U 3 +L 2 +D 1 +U 1 +D 1 +U 3 +R 2 +L 1 +D 3 +U 3 +D 3 +U 2 +L 1 +R 1 +U 1 +D 3 +R 2 +U 1 +L 2 +U 1 +L 2 +U 2 +D 1 +L 3 +U 1 +R 1 +L 2 +U 1 +D 2 +L 1 +D 4 +L 3 +D 4 +R 2 +D 2 +L 3 +U 2 +L 3 +D 1 +L 4 +R 2 +D 1 +U 4 +L 3 +D 1 +R 1 +D 4 +R 4 +U 3 +D 3 +L 3 +D 3 +U 1 +R 4 +L 2 +D 1 +R 3 +L 4 +D 1 +R 2 +L 4 +U 3 +L 4 +R 1 +L 3 +D 1 +U 4 +L 4 +R 3 +U 4 +D 3 +U 2 +R 3 +D 1 +R 3 +L 3 +D 2 +U 4 +R 3 +U 4 +L 4 +R 4 +L 2 +R 2 +D 3 +L 2 +U 1 +L 4 +U 3 +R 3 +L 4 +U 1 +L 1 +U 1 +D 2 +R 1 +U 1 +L 3 +R 4 +L 2 +D 4 +R 3 +L 2 +R 1 +L 4 +R 1 +D 2 +R 4 +L 3 +U 3 +L 3 +D 1 +R 2 +L 4 +D 2 +R 3 +U 2 +D 3 +R 2 +U 4 +L 1 +U 2 +D 2 +L 1 +D 4 +R 3 +L 3 +R 4 +D 1 +U 2 +R 2 +D 1 +L 3 +U 2 +L 3 +R 1 +D 1 +R 4 +L 4 +R 1 +U 3 +R 4 +L 3 +D 3 +L 4 +R 4 +D 5 +R 2 +U 5 +L 1 +D 5 +L 5 +R 1 +L 5 +U 5 +L 3 +D 3 +L 2 +D 1 +L 1 +U 1 +L 1 +D 2 +L 3 +U 2 +D 3 +L 4 +R 5 +U 2 +L 3 +D 3 +R 4 +U 3 +D 5 +U 1 +R 3 +L 3 +D 1 +U 2 +L 3 +R 5 +D 2 +R 2 +U 4 +L 2 +R 4 +D 5 +R 2 +U 2 +D 5 +L 3 +R 2 +D 2 +L 1 +U 2 +R 1 +D 2 +U 1 +L 2 +U 5 +R 1 +U 4 +D 1 +R 4 +U 4 +R 3 +D 1 +U 2 +L 5 +U 1 +L 3 +D 1 +U 5 +D 5 +U 1 +L 3 +D 1 +R 2 +L 4 +R 4 +L 2 +U 2 +R 5 +U 1 +R 5 +L 1 +D 1 +R 3 +D 2 +R 4 +L 5 +D 3 +L 3 +U 5 +R 2 +D 5 +L 1 +U 2 +D 2 +U 4 +R 4 +L 4 +U 1 +D 1 +U 4 +R 4 +D 3 +L 4 +R 2 +D 3 +R 5 +U 4 +L 4 +R 4 +L 2 +U 4 +R 4 +D 1 +R 3 +D 6 +U 6 +D 5 +L 4 +R 2 +D 5 +R 5 +D 3 +R 3 +U 3 +D 3 +U 2 +L 2 +R 6 +L 6 +D 1 +L 4 +R 6 +D 5 +L 2 +R 4 +U 2 +L 5 +R 6 +U 6 +D 1 +U 3 +D 3 +R 1 +L 4 +D 2 +U 1 +L 2 +R 1 +D 3 +U 5 +R 1 +D 2 +U 5 +D 5 +R 3 +U 2 +D 4 +U 2 +R 5 +U 4 +R 2 +L 4 +U 5 +L 3 +D 1 +R 3 +U 3 +L 1 +U 1 +L 2 +R 5 +U 2 +D 4 +R 1 +D 5 +L 6 +R 6 +U 2 +D 4 +R 4 +D 4 +L 6 +D 3 +U 1 +L 4 +U 5 +R 3 +D 3 +R 6 +D 3 +R 6 +D 1 +L 3 +R 4 +D 5 +R 4 +D 6 +R 3 +U 6 +R 4 +U 1 +D 4 +L 2 +D 4 +L 2 +U 2 +R 4 +D 4 +L 1 +D 4 +U 4 +D 6 +U 3 +D 1 +L 2 +D 5 +R 2 +D 2 +L 5 +R 4 +L 5 +R 5 +U 6 +L 1 +R 3 +U 5 +D 1 +U 2 +R 2 +D 4 +R 4 +D 6 +R 4 +L 4 +D 2 +R 6 +L 1 +D 1 +U 3 +R 1 +D 4 +L 1 +D 3 +U 5 +R 2 +U 2 +D 6 +L 5 +U 4 +L 5 +R 3 +U 7 +R 2 +D 1 +R 6 +D 6 +U 6 +R 5 +D 5 +R 6 +D 6 +R 6 +D 5 +U 5 +D 7 +L 4 +U 3 +D 3 +U 2 +L 2 +U 4 +D 1 +R 7 +U 4 +L 1 +D 4 +L 3 +R 6 +L 1 +R 2 +L 4 +R 5 +U 6 +D 6 +U 2 +R 5 +U 4 +L 5 +U 3 +D 1 +L 6 +R 2 +D 2 +L 3 +U 5 +R 6 +U 7 +R 1 +L 7 +D 5 +U 5 +D 2 +R 4 +U 2 +L 7 +R 4 +D 7 +U 4 +D 3 +R 2 +D 3 +L 3 +U 6 +R 2 +L 6 +D 2 +R 6 +L 3 +R 4 +U 1 +D 3 +U 2 +L 4 +D 6 +U 7 +D 4 +L 3 +R 1 +U 6 +L 3 +R 3 +U 7 +R 7 +U 6 +L 1 +U 8 +L 1 +D 8 +L 6 +R 3 +L 7 +D 5 +U 8 +R 5 +L 4 +U 8 +L 3 +D 2 +U 1 +R 8 +D 8 +R 7 +U 1 +D 2 +R 6 +L 8 +D 5 +L 6 +U 1 +R 2 +U 6 +L 3 +D 6 +U 2 +R 2 +D 1 +U 4 +L 8 +D 8 +R 1 +L 2 +R 2 +D 7 +U 5 +D 8 +L 1 +R 7 +L 8 +D 2 +R 8 +D 7 +U 3 +R 3 +U 3 +D 1 +L 2 +U 6 +D 7 +U 8 +R 6 +D 6 +R 5 +U 7 +R 8 +L 1 +U 7 +D 2 +R 6 +U 7 +R 3 +D 3 +R 3 +U 4 +D 8 +L 7 +R 5 +U 1 +L 6 +R 8 +D 6 +R 4 +L 4 +D 1 +U 5 +L 6 +U 1 +D 8 +U 2 +R 4 +L 2 +R 8 +D 1 +R 1 +L 4 +R 7 +U 7 +D 8 +R 8 +L 6 +U 7 +L 4 +D 2 +R 2 +U 5 +D 1 +R 5 +L 6 +U 8 +L 1 +R 7 +D 8 +L 3 +D 2 +U 3 +D 3 +L 1 +R 3 +L 7 +D 6 +R 4 +D 1 +U 8 +L 3 +D 6 +L 7 +U 5 +R 6 +D 2 +L 4 +R 9 +D 2 +R 4 +D 6 +R 5 +L 7 +R 5 +U 7 +R 1 +L 5 +U 6 +R 4 +D 8 +U 5 +L 4 +U 1 +D 8 +U 9 +D 4 +U 7 +L 4 +R 8 +D 4 +R 4 +D 8 +R 1 +D 3 +R 5 +D 7 +U 8 +D 2 +R 2 +U 1 +L 1 +U 2 +L 9 +R 9 +D 1 +U 1 +D 8 +R 3 +L 8 +D 7 +U 9 +R 6 +L 4 +U 8 +D 4 +U 2 +L 3 +D 8 +L 2 +R 5 +U 4 +D 6 +U 6 +L 8 +R 7 +D 2 +R 3 +L 8 +U 9 +R 2 +U 4 +L 9 +R 5 +D 5 +R 4 +D 6 +R 3 +D 3 +R 8 +D 3 +R 4 +D 1 +U 2 +D 6 +R 4 +D 7 +U 5 +D 2 +R 6 +D 3 +U 3 +R 4 +U 5 +L 3 +U 5 +L 8 +D 3 +L 8 +D 5 +R 4 +L 8 +R 5 +U 8 +R 10 +D 2 +U 10 +R 1 +D 1 +L 4 +D 9 +L 6 +U 2 +R 3 +D 2 +L 6 +R 2 +L 10 +D 2 +L 10 +U 3 +L 2 +D 8 +U 10 +R 5 +L 1 +U 8 +R 9 +D 8 +U 2 +R 4 +U 3 +D 2 +U 4 +D 2 +R 3 +L 2 +U 4 +D 1 +U 9 +R 2 +U 1 +R 3 +D 3 +L 3 +R 2 +D 1 +U 8 +D 1 +L 5 +R 4 +L 8 +D 3 +L 1 +U 10 +R 9 +D 9 +U 9 +D 1 +R 6 +L 6 +U 6 +L 1 +D 5 +L 4 +U 8 +L 10 +U 9 +R 9 +D 5 +U 4 +D 7 +R 5 +U 10 +D 5 +U 1 +R 5 +L 7 +D 9 +R 5 +L 3 +U 2 +D 6 +R 4 +D 7 +U 4 +R 8 +L 5 +R 8 +L 9 +R 8 +D 1 +R 1 +L 9 +D 7 +L 10 +D 6 +R 8 +U 4 +D 4 +R 7 +L 9 +D 9 +R 9 +L 1 +R 6 +L 7 +R 10 +L 1 +U 9 +D 11 +R 4 +D 4 +U 5 +R 8 +U 9 +L 8 +D 8 +L 10 +U 10 +L 4 +D 1 +L 3 +U 7 +D 11 +U 4 +L 7 +R 2 +U 9 +D 4 +R 4 +U 1 +L 5 +U 10 +R 4 +D 3 +L 9 +R 2 +L 3 +U 5 +D 6 +U 2 +R 7 +D 7 +R 4 +L 8 +U 5 +R 1 +U 4 +D 3 +U 5 +R 9 +D 2 +R 4 +D 8 +U 9 +R 7 +U 5 +D 3 +R 6 +L 7 +U 7 +R 10 +L 3 +U 10 +L 8 +R 11 +L 3 +U 10 +R 5 +D 1 +U 7 +R 6 +U 9 +L 3 +R 9 +L 4 +R 9 +L 5 +R 9 +D 5 +U 8 +R 7 +L 7 +R 4 +L 9 +R 9 +D 7 +R 2 +L 3 +U 1 +L 1 +D 11 +U 3 +D 5 +R 3 +U 11 +L 1 +U 7 +R 8 +D 8 +U 7 +D 7 +R 6 +D 3 +R 8 +L 9 +U 10 +D 10 +L 1 +D 9 +L 1 +R 5 +D 6 +U 5 +L 1 +R 10 +L 1 +U 7 +D 11 +R 8 +U 11 +L 6 +R 4 +U 7 +R 3 +L 8 +D 8 +L 12 +U 3 +D 12 +L 6 +R 1 +U 8 +R 3 +U 4 +L 3 +D 10 +L 9 +D 6 +L 12 +R 11 +D 4 +U 4 +L 12 +R 1 +U 1 +D 10 +L 11 +R 3 +D 4 +R 4 +U 4 +D 3 +U 10 +R 9 +U 9 +L 1 +U 10 +D 11 +U 4 +D 3 +L 10 +R 5 +D 8 +R 5 +U 6 +R 12 +L 10 +U 10 +D 2 +L 6 +U 5 +D 3 +R 2 +D 3 +U 7 +D 1 +L 5 +U 9 +D 3 +U 10 +L 10 +U 4 +L 12 +R 11 +D 2 +L 10 +U 6 +L 4 +D 5 +R 3 +L 4 +D 8 +U 7 +R 12 +D 1 +U 5 +L 2 +D 7 +R 3 +U 1 +L 10 +R 9 +L 7 +R 8 +U 9 +R 9 +U 1 +L 7 +D 6 +L 1 +R 11 +L 9 +U 12 +R 8 +U 3 +R 5 +U 5 +L 12 +R 7 +L 8 +R 11 +L 4 +R 10 +D 2 +L 4 +U 12 +R 5 +D 1 +L 12 +D 1 +L 5 +D 3 +U 8 +L 5 +U 5 +R 7 +D 1 +L 3 +D 9 +L 12 +R 5 +D 12 +U 6 +L 7 +D 6 +L 5 +U 6 +R 7 +U 5 +D 8 +R 11 +D 12 +R 10 +L 11 +R 6 +L 13 +D 3 +L 2 +U 4 +D 12 +U 8 +D 6 +R 2 +D 2 +R 13 +U 1 +D 6 +R 8 +D 12 +L 8 +R 4 +L 7 +R 8 +D 9 +U 3 +L 1 +U 3 +L 10 +R 12 +U 13 +R 7 +U 1 +D 13 +U 6 +L 13 +D 11 +U 8 +L 10 +D 13 +R 11 +L 8 +D 5 +U 11 +R 1 +D 9 +L 4 +D 12 +R 13 +L 11 +D 7 +L 9 +U 8 +L 13 +D 11 +L 10 +R 4 +U 4 +D 4 +L 5 +D 7 +L 12 +U 10 +R 3 +L 10 +U 2 +L 2 +R 8 +L 6 +U 11 +L 4 +D 4 +U 9 +L 1 +R 12 +D 12 +R 13 +D 8 +R 8 +L 12 +U 5 +D 8 +L 7 +D 13 +U 12 +D 12 +R 10 +U 10 +R 13 +D 9 +R 3 +U 13 +L 12 +R 6 +U 14 +D 11 +R 14 +L 2 +R 5 +U 6 +R 10 +U 6 +L 3 +R 8 +U 7 +L 3 +D 4 +R 13 +L 10 +D 5 +U 10 +R 13 +L 6 +R 6 +L 1 +D 4 +U 10 +R 14 +U 7 +L 11 +R 14 +D 11 +R 8 +D 2 +U 13 +L 5 +R 10 +D 6 +U 7 +D 7 +L 6 +U 11 +L 4 +D 11 +L 9 +R 6 +L 5 +U 14 +R 2 +D 1 +U 12 +L 3 +U 3 +D 2 +U 3 +L 7 +U 10 +D 2 +R 9 +L 8 +U 10 +D 4 +R 7 +U 4 +L 8 +R 3 +L 6 +D 2 +R 11 +L 2 +D 12 +U 14 +L 1 +R 1 +U 12 +R 3 +L 14 +U 9 +D 7 +L 3 +U 8 +R 9 +L 4 +U 7 +D 4 +R 5 +D 7 +R 11 +L 13 +R 3 +D 10 +R 11 +U 6 +L 4 +D 9 +R 4 +U 5 +D 9 +R 13 +D 6 +R 11 +L 1 +D 1 +R 13 +U 4 +L 9 +U 14 +L 9 +R 2 +D 2 +L 7 +D 13 +L 11 +D 8 +R 4 +L 7 +R 4 +U 12 +D 5 +R 13 +D 14 +R 7 +U 6 +R 2 +U 13 +L 7 +U 14 +R 11 +U 15 +R 8 +U 7 +D 7 +L 5 +U 2 +D 13 +U 11 +L 12 +R 6 +D 13 +L 6 +U 8 +L 3 +R 15 +L 13 +D 1 +U 2 +L 14 +D 8 +L 4 +U 6 +R 11 +D 11 +R 2 +U 13 +L 13 +R 2 +U 15 +R 3 +D 4 +L 7 +R 7 +D 7 +R 7 +L 13 +R 10 +U 8 +R 13 +L 2 +U 13 +D 8 +U 15 +L 4 +D 13 +R 13 +U 8 +R 3 +L 11 +R 12 +U 2 +L 13 +U 1 +L 9 +U 11 +D 14 +R 12 +D 6 +U 6 +D 12 +U 8 +R 3 +U 4 +R 8 +U 2 +D 5 +L 12 +U 14 +D 4 +R 1 +U 10 +L 10 +R 6 +D 13 +U 11 +D 11 +U 11 +R 14 +D 15 +L 11 +U 14 +D 7 +L 12 +D 3 +L 14 +U 7 +R 1 +U 5 +L 1 +R 15 +U 13 +D 7 +R 9 +L 15 +U 15 +L 15 +D 7 +R 15 +D 3 +U 5 +L 8 +R 13 +L 15 +D 8 +L 15 +D 12 +L 5 +D 14 +U 16 +R 11 +L 14 +R 6 +L 10 +U 11 +R 8 +U 16 +L 6 +U 9 +L 13 +D 14 +R 7 +D 10 +L 15 +D 1 +L 10 +D 1 +R 2 +U 15 +L 9 +U 6 +D 3 +L 8 +D 13 +U 16 +D 12 +R 2 +L 1 +D 8 +L 15 +R 14 +D 8 +L 9 +U 12 +R 3 +U 15 +D 10 +U 13 +R 8 +L 15 +D 9 +R 8 +L 9 +U 2 +R 7 +L 11 +R 3 +D 13 +U 16 +L 9 +U 6 +L 7 +U 4 +L 16 +U 16 +L 12 +U 9 +R 8 +D 13 +L 2 +R 15 +D 7 +U 15 +D 16 +R 12 +L 12 +U 8 +L 8 +D 3 +R 16 +L 3 +U 13 +R 1 +L 5 +R 10 +U 13 +D 7 +R 3 +D 10 +L 2 +R 1 +U 4 +L 13 +U 15 +R 4 +D 1 +R 2 +L 5 +D 3 +L 1 +R 4 +L 1 +U 1 +D 7 +R 9 +L 12 +R 13 +D 5 +R 5 +D 9 +L 15 +R 17 +D 4 +R 2 +U 1 +D 1 +R 3 +L 15 +D 10 +L 8 +U 16 +L 14 +U 12 +R 5 +L 13 +D 10 +L 15 +D 12 +U 4 +D 8 +R 9 +L 17 +D 17 +U 3 +D 2 +L 14 +D 12 +L 5 +D 9 +L 3 +R 10 +U 1 +R 9 +U 16 +L 14 +R 13 +L 11 +R 4 +U 2 +L 10 +D 6 +R 5 +D 17 +L 15 +R 12 +U 15 +L 9 +U 9 +D 3 +R 8 +U 6 +R 8 +U 9 +D 14 +R 7 +U 1 +L 3 +R 3 +D 2 +U 4 +R 5 +L 17 +D 16 +U 13 +D 5 +U 6 +R 2 +U 5 +D 7 +U 11 +R 6 +L 17 +R 4 +L 14 +D 3 +U 15 +L 5 +R 4 +U 1 +D 16 +L 16 +U 10 +L 10 +D 17 +R 6 +D 2 +U 10 +L 10 +D 12 +R 15 +L 4 +R 11 +L 17 +U 15 +L 8 +U 8 +L 16 +D 6 +L 7 +U 17 +L 14 +D 6 +L 5 +R 14 +U 5 +D 1 +U 2 +D 17 +R 14 +L 1 +R 4 +D 7 +L 8 +U 7 +D 6 +L 16 +U 5 +D 7 +R 7 +D 17 +L 16 +R 1 +D 5 +U 17 +L 2 +U 7 +L 16 +U 15 +L 17 +D 3 +L 2 +R 7 +L 11 +R 1 +L 16 +U 2 +L 1 +R 18 +U 5 +L 9 +U 4 +D 8 +U 4 +L 18 +D 17 +L 14 +D 2 +R 1 +U 13 +L 9 +R 14 +D 14 +U 12 +D 14 +L 2 +U 10 +D 11 +R 10 +L 9 +U 7 +D 12 +L 4 +D 2 +R 17 +D 1 +U 15 +R 14 +D 16 +L 1 +R 11 +U 9 +R 8 +U 6 +D 7 +U 7 +L 2 +D 10 +U 9 +D 9 +L 11 +D 11 +L 14 +U 16 +D 11 +L 17 +R 5 +L 13 +U 16 +R 16 +U 18 +D 1 +R 1 +U 13 +R 6 +L 7 +U 11 +D 12 +L 8 +U 17 +D 11 +U 8 +L 14 +U 17 +L 4 +U 18 +D 18 +R 8 +D 13 +L 10 +U 3 +R 9 +L 14 +R 7 +U 14 +R 14 +L 9 +U 5 +R 4 +D 13 +U 10 +D 1 +R 10 +D 4 +R 3 +U 14 +D 10 +U 12 +L 11 +U 9 +L 16 +R 5 +L 14 +D 4 +U 11 +L 2 +R 10 +U 8 +D 9 +L 2 +R 16 +L 1 +R 12 +U 7 +D 11 +U 18 +D 4 +R 8 +U 18 +D 5 +R 15 +U 16 +L 2 +D 15 +U 5 +D 10 +U 18 +L 7 +U 4 +R 2 +U 17 +L 2 +R 3 +D 2 +L 2 +U 3 +R 10 +L 8 +U 4 +L 18 +U 6 +D 11 +R 13 +D 9 +U 10 +L 16 +R 15 +L 4 +D 1 +L 5 +D 7 +U 18 +L 5 +R 7 +L 15 +U 4 +L 6 +U 19 +D 19 +L 2 +R 2 +L 19 +D 9 +L 14 +U 18 +D 12 +R 19 +U 15 +L 16 +U 9 +L 11 +R 5 +L 14 +R 16 +U 19 +D 7 +U 8 +R 6 +U 14 +R 17 +D 9 +L 5 +U 3 +D 9 +U 8 +L 4 +U 12 +D 12 +R 13 +U 3 +R 18 +U 5 +L 12 +U 4 +L 1 +D 14 +R 5 +L 19 +U 17 +R 18 +D 11 +L 4 +U 18 +L 9 diff --git a/main.go b/main.go new file mode 100644 index 0000000..43bf46b --- /dev/null +++ b/main.go @@ -0,0 +1,88 @@ +package main + +import ( + "fmt" + "os" + + "github.com/acw/advent2022/solutions/day1" + "github.com/acw/advent2022/solutions/day10" + "github.com/acw/advent2022/solutions/day11" + "github.com/acw/advent2022/solutions/day12" + "github.com/acw/advent2022/solutions/day13" + "github.com/acw/advent2022/solutions/day14" + "github.com/acw/advent2022/solutions/day15" + "github.com/acw/advent2022/solutions/day16" + "github.com/acw/advent2022/solutions/day17" + "github.com/acw/advent2022/solutions/day18" + "github.com/acw/advent2022/solutions/day19" + "github.com/acw/advent2022/solutions/day2" + "github.com/acw/advent2022/solutions/day20" + "github.com/acw/advent2022/solutions/day21" + "github.com/acw/advent2022/solutions/day22" + "github.com/acw/advent2022/solutions/day23" + "github.com/acw/advent2022/solutions/day3" + "github.com/acw/advent2022/solutions/day4" + "github.com/acw/advent2022/solutions/day5" + "github.com/acw/advent2022/solutions/day6" + "github.com/acw/advent2022/solutions/day7" + "github.com/acw/advent2022/solutions/day8" + "github.com/acw/advent2022/solutions/day9" +) + +func main() { + if len(os.Args) < 3 { + fmt.Println("USAGE: advent2022 [dayNN] [input]...") + return + } + + switch os.Args[1] { + case "day1": + day1.Run(os.Args[2]) + case "day2": + day2.Run(os.Args[2]) + case "day3": + day3.Run(os.Args[2]) + case "day4": + day4.Run(os.Args[2]) + case "day5": + day5.Run(os.Args[2], os.Args[2]) + case "day6": + day6.Run(os.Args[2], os.Args[2]) + case "day7": + day7.Run(os.Args[2]) + case "day8": + day8.Run(os.Args[2]) + case "day9": + day9.Run(os.Args[2], os.Args[2]) + case "day10": + day10.Run(os.Args[2]) + case "day11": + day11.Run(os.Args[2]) + case "day12": + day12.Run(os.Args[2]) + case "day13": + day13.Run(os.Args[2]) + case "day14": + day14.Run(os.Args[2]) + case "day15": + day15.Run(os.Args[2], os.Args[3], os.Args[4]) + case "day16": + day16.Run(os.Args[2]) + case "day17": + day17.Run(os.Args[2], os.Args[3]) + case "day18": + day18.Run(os.Args[2]) + case "day19": + day19.Run(os.Args[2]) + case "day20": + day20.Run(os.Args[2], os.Args[3], os.Args[4]) + case "day21": + day21.Run(os.Args[2]) + case "day22": + day22.Run(os.Args[2]) + case "day23": + day23.Run(os.Args[2]) + default: + fmt.Println("PANIC! Unknown day.") + } +} diff --git a/run b/run new file mode 100644 index 0000000..5a899be --- /dev/null +++ b/run @@ -0,0 +1,6446 @@ +Point {7 14 13} had 4 blank sides. +Point {6 12 7} had 6 blank sides. +Point {6 3 11} had 0 blank sides. +Point {15 11 3} had 2 blank sides. +Point {13 2 6} had 3 blank sides. +Point {16 3 11} had 4 blank sides. +Point {14 17 12} had 3 blank sides. +Point {9 2 7} had 0 blank sides. +Point {10 18 8} had 1 blank sides. +Point {9 17 4} had 2 blank sides. +Point {11 5 15} had 0 blank sides. +Point {15 10 3} had 2 blank sides. +Point {10 12 17} had 0 blank sides. +Point {8 3 5} had 0 blank sides. +Point {8 17 9} had 1 blank sides. +Point {6 2 12} had 2 blank sides. +Point {4 12 9} had 3 blank sides. +Point {11 4 14} had 0 blank sides. +Point {2 12 14} had 4 blank sides. +Point {4 10 16} had 0 blank sides. +Point {5 9 14} had 2 blank sides. +Point {5 4 15} had 2 blank sides. +Point {17 13 7} had 0 blank sides. +Point {5 10 3} had 0 blank sides. +Point {14 4 9} had 2 blank sides. +Point {8 2 12} had 2 blank sides. +Point {4 5 11} had 1 blank sides. +Point {12 1 11} had 2 blank sides. +Point {14 9 3} had 0 blank sides. +Point {11 9 17} had 0 blank sides. +Point {10 14 15} had 1 blank sides. +Point {11 12 2} had 0 blank sides. +Point {18 10 9} had 2 blank sides. +Point {10 15 14} had 0 blank sides. +Point {13 13 3} had 0 blank sides. +Point {3 14 11} had 0 blank sides. +Point {2 9 14} had 3 blank sides. +Point {8 6 2} had 1 blank sides. +Point {6 12 16} had 0 blank sides. +Point {9 19 10} had 5 blank sides. +Point {18 5 10} had 5 blank sides. +Point {1 8 7} had 3 blank sides. +Point {1 9 10} had 1 blank sides. +Point {16 13 5} had 3 blank sides. +Point {6 12 5} had 4 blank sides. +Point {9 1 11} had 2 blank sides. +Point {2 10 9} had 1 blank sides. +Point {10 3 3} had 4 blank sides. +Point {7 8 1} had 2 blank sides. +Point {12 17 6} had 1 blank sides. +Point {13 16 10} had 0 blank sides. +Point {14 5 13} had 0 blank sides. +Point {7 6 2} had 1 blank sides. +Point {4 15 14} had 4 blank sides. +Point {10 3 7} had 1 blank sides. +Point {2 8 11} had 0 blank sides. +Point {15 9 3} had 2 blank sides. +Point {4 12 12} had 4 blank sides. +Point {12 16 15} had 2 blank sides. +Point {15 9 14} had 1 blank sides. +Point {16 5 8} had 0 blank sides. +Point {8 5 16} had 1 blank sides. +Point {5 2 7} had 2 blank sides. +Point {9 18 7} had 1 blank sides. +Point {10 4 4} had 0 blank sides. +Point {15 12 14} had 0 blank sides. +Point {10 5 16} had 0 blank sides. +Point {9 9 17} had 0 blank sides. +Point {16 7 9} had 0 blank sides. +Point {4 14 15} had 3 blank sides. +Point {11 14 14} had 1 blank sides. +Point {3 6 6} had 1 blank sides. +Point {11 16 14} had 0 blank sides. +Point {9 16 4} had 0 blank sides. +Point {16 14 9} had 0 blank sides. +Point {13 17 13} had 3 blank sides. +Point {16 4 12} had 3 blank sides. +Point {18 7 9} had 2 blank sides. +Point {11 1 9} had 2 blank sides. +Point {10 16 15} had 3 blank sides. +Point {3 14 10} had 0 blank sides. +Point {18 11 10} had 2 blank sides. +Point {16 12 14} had 2 blank sides. +Point {6 14 14} had 1 blank sides. +Point {14 17 11} had 1 blank sides. +Point {3 16 13} had 6 blank sides. +Point {9 18 11} had 1 blank sides. +Point {12 3 11} had 1 blank sides. +Point {16 9 13} had 1 blank sides. +Point {5 3 9} had 1 blank sides. +Point {16 14 14} had 4 blank sides. +Point {16 9 10} had 2 blank sides. +Point {4 7 11} had 4 blank sides. +Point {5 16 13} had 3 blank sides. +Point {4 10 3} had 2 blank sides. +Point {18 10 8} had 3 blank sides. +Point {7 2 12} had 0 blank sides. +Point {15 16 10} had 2 blank sides. +Point {7 16 15} had 2 blank sides. +Point {5 9 3} had 1 blank sides. +Point {5 10 16} had 0 blank sides. +Point {6 10 17} had 1 blank sides. +Point {15 6 6} had 0 blank sides. +Point {14 10 2} had 3 blank sides. +Point {10 9 3} had 0 blank sides. +Point {5 5 5} had 1 blank sides. +Point {11 8 3} had 1 blank sides. +Point {17 7 8} had 0 blank sides. +Point {7 4 7} had 4 blank sides. +Point {1 7 10} had 3 blank sides. +Point {16 6 9} had 0 blank sides. +Point {3 6 8} had 0 blank sides. +Point {2 10 8} had 0 blank sides. +Point {5 5 4} had 3 blank sides. +Point {4 17 11} had 3 blank sides. +Point {13 4 16} had 3 blank sides. +Point {15 10 16} had 3 blank sides. +Point {15 7 5} had 1 blank sides. +Point {18 11 7} had 3 blank sides. +Point {4 8 3} had 1 blank sides. +Point {13 13 12} had 4 blank sides. +Point {11 6 16} had 1 blank sides. +Point {2 14 7} had 3 blank sides. +Point {8 15 4} had 1 blank sides. +Point {7 13 16} had 1 blank sides. +Point {14 8 3} had 1 blank sides. +Point {10 9 2} had 0 blank sides. +Point {5 17 11} had 1 blank sides. +Point {15 14 6} had 0 blank sides. +Point {15 13 7} had 0 blank sides. +Point {9 4 16} had 1 blank sides. +Point {11 14 15} had 0 blank sides. +Point {6 3 9} had 0 blank sides. +Point {13 10 3} had 1 blank sides. +Point {7 1 10} had 3 blank sides. +Point {6 5 13} had 1 blank sides. +Point {14 13 2} had 3 blank sides. +Point {15 15 6} had 1 blank sides. +Point {6 4 8} had 3 blank sides. +Point {4 14 14} had 0 blank sides. +Point {7 7 3} had 1 blank sides. +Point {15 6 9} had 2 blank sides. +Point {6 4 4} had 3 blank sides. +Point {16 11 5} had 1 blank sides. +Point {4 8 13} had 1 blank sides. +Point {14 8 13} had 4 blank sides. +Point {5 5 6} had 0 blank sides. +Point {16 6 6} had 1 blank sides. +Point {2 14 13} had 4 blank sides. +Point {11 16 6} had 1 blank sides. +Point {6 14 15} had 0 blank sides. +Point {10 17 13} had 2 blank sides. +Point {17 5 6} had 4 blank sides. +Point {8 9 16} had 1 blank sides. +Point {15 5 3} had 3 blank sides. +Point {13 12 15} had 1 blank sides. +Point {4 15 10} had 0 blank sides. +Point {10 13 17} had 1 blank sides. +Point {6 9 16} had 1 blank sides. +Point {7 10 16} had 1 blank sides. +Point {4 14 9} had 1 blank sides. +Point {4 5 12} had 0 blank sides. +Point {12 14 5} had 2 blank sides. +Point {6 2 7} had 1 blank sides. +Point {7 17 9} had 0 blank sides. +Point {11 17 14} had 3 blank sides. +Point {13 3 7} had 0 blank sides. +Point {5 8 3} had 1 blank sides. +Point {8 2 7} had 1 blank sides. +Point {14 14 6} had 0 blank sides. +Point {14 11 7} had 5 blank sides. +Point {8 18 7} had 2 blank sides. +Point {3 6 9} had 0 blank sides. +Point {16 6 8} had 1 blank sides. +Point {2 4 10} had 4 blank sides. +Point {2 13 7} had 3 blank sides. +Point {3 12 6} had 1 blank sides. +Point {7 4 4} had 0 blank sides. +Point {15 11 17} had 5 blank sides. +Point {17 12 11} had 1 blank sides. +Point {8 18 11} had 1 blank sides. +Point {9 15 5} had 0 blank sides. +Point {7 11 15} had 3 blank sides. +Point {9 2 12} had 0 blank sides. +Point {6 6 5} had 3 blank sides. +Point {13 2 8} had 2 blank sides. +Point {15 5 9} had 1 blank sides. +Point {4 2 8} had 3 blank sides. +Point {6 6 15} had 0 blank sides. +Point {3 12 13} had 2 blank sides. +Point {10 1 8} had 2 blank sides. +Point {5 4 11} had 0 blank sides. +Point {2 10 10} had 1 blank sides. +Point {15 12 3} had 2 blank sides. +Point {9 8 16} had 1 blank sides. +Point {14 12 2} had 3 blank sides. +Point {2 8 6} had 2 blank sides. +Point {17 6 11} had 1 blank sides. +Point {14 14 16} had 3 blank sides. +Point {3 15 7} had 2 blank sides. +Point {2 10 6} had 1 blank sides. +Point {17 11 10} had 1 blank sides. +Point {7 17 12} had 0 blank sides. +Point {3 13 9} had 0 blank sides. +Point {7 12 4} had 2 blank sides. +Point {7 16 6} had 0 blank sides. +Point {14 5 11} had 2 blank sides. +Point {3 7 6} had 0 blank sides. +Point {9 8 2} had 0 blank sides. +Point {16 10 13} had 0 blank sides. +Point {14 2 11} had 3 blank sides. +Point {9 1 9} had 2 blank sides. +Point {9 6 16} had 0 blank sides. +Point {6 5 17} had 4 blank sides. +Point {11 10 17} had 1 blank sides. +Point {8 15 13} had 2 blank sides. +Point {16 12 3} had 4 blank sides. +Point {6 2 9} had 1 blank sides. +Point {7 3 11} had 1 blank sides. +Point {11 2 8} had 1 blank sides. +Point {18 10 10} had 1 blank sides. +Point {3 7 15} had 1 blank sides. +Point {5 15 6} had 0 blank sides. +Point {13 14 15} had 0 blank sides. +Point {8 8 2} had 0 blank sides. +Point {8 2 9} had 0 blank sides. +Point {3 7 14} had 2 blank sides. +Point {12 1 9} had 4 blank sides. +Point {18 8 8} had 3 blank sides. +Point {16 11 11} had 1 blank sides. +Point {4 5 13} had 0 blank sides. +Point {7 18 12} had 3 blank sides. +Point {8 8 16} had 1 blank sides. +Point {3 11 9} had 3 blank sides. +Point {10 16 6} had 1 blank sides. +Point {3 10 12} had 1 blank sides. +Point {11 3 7} had 1 blank sides. +Point {5 13 7} had 3 blank sides. +Point {15 4 8} had 0 blank sides. +Point {3 13 12} had 1 blank sides. +Point {7 10 1} had 1 blank sides. +Point {12 16 6} had 0 blank sides. +Point {17 11 7} had 0 blank sides. +Point {3 11 12} had 2 blank sides. +Point {13 3 8} had 0 blank sides. +Point {6 15 5} had 0 blank sides. +Point {15 11 6} had 2 blank sides. +Point {12 18 11} had 4 blank sides. +Point {17 7 10} had 0 blank sides. +Point {6 13 3} had 0 blank sides. +Point {5 5 14} had 0 blank sides. +Point {2 7 7} had 1 blank sides. +Point {15 10 13} had 3 blank sides. +Point {14 15 8} had 0 blank sides. +Point {6 5 12} had 1 blank sides. +Point {8 16 4} had 1 blank sides. +Point {8 11 17} had 0 blank sides. +Point {6 1 11} had 4 blank sides. +Point {9 17 6} had 1 blank sides. +Point {4 4 14} had 2 blank sides. +Point {7 5 16} had 1 blank sides. +Point {14 14 8} had 1 blank sides. +Point {5 11 5} had 2 blank sides. +Point {9 17 5} had 0 blank sides. +Point {8 12 4} had 3 blank sides. +Point {5 13 15} had 1 blank sides. +Point {13 15 15} had 2 blank sides. +Point {4 5 10} had 0 blank sides. +Point {9 3 9} had 2 blank sides. +Point {11 18 9} had 1 blank sides. +Point {4 4 6} had 2 blank sides. +Point {3 9 7} had 1 blank sides. +Point {3 12 5} had 2 blank sides. +Point {5 4 9} had 0 blank sides. +Point {12 13 2} had 1 blank sides. +Point {16 9 6} had 0 blank sides. +Point {15 3 9} had 2 blank sides. +Point {15 5 15} had 2 blank sides. +Point {7 16 14} had 0 blank sides. +Point {15 8 16} had 4 blank sides. +Point {5 16 10} had 0 blank sides. +Point {10 3 10} had 2 blank sides. +Point {12 6 12} had 6 blank sides. +Point {10 2 6} had 0 blank sides. +Point {13 14 14} had 1 blank sides. +Point {17 8 7} had 1 blank sides. +Point {9 11 18} had 1 blank sides. +Point {10 7 17} had 0 blank sides. +Point {9 7 3} had 1 blank sides. +Point {13 7 2} had 2 blank sides. +Point {12 2 12} had 0 blank sides. +Point {14 4 15} had 2 blank sides. +Point {14 9 16} had 0 blank sides. +Point {6 13 4} had 1 blank sides. +Point {3 4 10} had 0 blank sides. +Point {14 15 12} had 2 blank sides. +Point {12 15 6} had 3 blank sides. +Point {8 6 6} had 5 blank sides. +Point {5 18 9} had 4 blank sides. +Point {14 13 13} had 1 blank sides. +Point {15 14 8} had 0 blank sides. +Point {2 8 12} had 1 blank sides. +Point {3 12 10} had 2 blank sides. +Point {8 3 6} had 0 blank sides. +Point {7 14 5} had 1 blank sides. +Point {3 16 10} had 3 blank sides. +Point {15 4 7} had 1 blank sides. +Point {13 14 9} had 2 blank sides. +Point {3 8 4} had 0 blank sides. +Point {12 16 14} had 0 blank sides. +Point {6 10 15} had 1 blank sides. +Point {11 9 18} had 1 blank sides. +Point {7 8 16} had 1 blank sides. +Point {12 4 15} had 0 blank sides. +Point {3 12 7} had 1 blank sides. +Point {10 15 3} had 2 blank sides. +Point {16 7 3} had 3 blank sides. +Point {14 5 7} had 1 blank sides. +Point {16 8 13} had 1 blank sides. +Point {12 6 3} had 0 blank sides. +Point {11 16 15} had 1 blank sides. +Point {15 9 16} had 1 blank sides. +Point {10 16 14} had 1 blank sides. +Point {13 13 5} had 3 blank sides. +Point {11 13 17} had 2 blank sides. +Point {7 8 2} had 0 blank sides. +Point {7 11 18} had 3 blank sides. +Point {8 17 11} had 1 blank sides. +Point {14 6 2} had 5 blank sides. +Point {14 7 15} had 0 blank sides. +Point {9 15 13} had 1 blank sides. +Point {13 8 7} had 6 blank sides. +Point {16 7 4} had 2 blank sides. +Point {5 11 2} had 3 blank sides. +Point {16 13 10} had 1 blank sides. +Point {14 10 5} had 3 blank sides. +Point {6 16 5} had 2 blank sides. +Point {13 14 7} had 2 blank sides. +Point {9 6 14} had 5 blank sides. +Point {15 6 7} had 1 blank sides. +Point {13 7 16} had 0 blank sides. +Point {4 13 8} had 1 blank sides. +Point {3 15 10} had 1 blank sides. +Point {5 16 6} had 1 blank sides. +Point {14 7 14} had 2 blank sides. +Point {14 3 5} had 4 blank sides. +Point {14 11 5} had 2 blank sides. +Point {17 10 5} had 3 blank sides. +Point {3 10 15} had 2 blank sides. +Point {12 15 14} had 0 blank sides. +Point {7 17 8} had 1 blank sides. +Point {7 15 15} had 2 blank sides. +Point {16 7 7} had 0 blank sides. +Point {2 9 4} had 4 blank sides. +Point {6 11 2} had 1 blank sides. +Point {1 10 7} had 1 blank sides. +Point {15 4 15} had 4 blank sides. +Point {7 3 8} had 1 blank sides. +Point {17 11 11} had 1 blank sides. +Point {12 4 7} had 2 blank sides. +Point {7 5 3} had 1 blank sides. +Point {18 7 7} had 4 blank sides. +Point {16 5 12} had 1 blank sides. +Point {9 7 4} had 4 blank sides. +Point {7 18 10} had 2 blank sides. +Point {10 9 4} had 3 blank sides. +Point {13 3 11} had 0 blank sides. +Point {17 15 11} had 6 blank sides. +Point {9 3 10} had 1 blank sides. +Point {5 12 4} had 0 blank sides. +Point {14 10 4} had 1 blank sides. +Point {5 9 4} had 0 blank sides. +Point {16 11 7} had 2 blank sides. +Point {14 10 14} had 3 blank sides. +Point {17 14 10} had 3 blank sides. +Point {3 6 7} had 0 blank sides. +Point {10 5 15} had 2 blank sides. +Point {8 5 15} had 0 blank sides. +Point {13 5 14} had 0 blank sides. +Point {17 10 4} had 2 blank sides. +Point {8 17 7} had 0 blank sides. +Point {16 8 4} had 2 blank sides. +Point {10 14 5} had 1 blank sides. +Point {3 16 6} had 5 blank sides. +Point {11 5 6} had 3 blank sides. +Point {17 6 10} had 1 blank sides. +Point {7 2 13} had 2 blank sides. +Point {14 4 7} had 0 blank sides. +Point {9 10 18} had 1 blank sides. +Point {3 8 13} had 0 blank sides. +Point {10 13 3} had 0 blank sides. +Point {10 12 3} had 2 blank sides. +Point {15 3 10} had 2 blank sides. +Point {17 10 14} had 1 blank sides. +Point {1 9 7} had 1 blank sides. +Point {8 4 12} had 2 blank sides. +Point {6 7 5} had 3 blank sides. +Point {3 5 9} had 0 blank sides. +Point {4 4 13} had 1 blank sides. +Point {8 16 16} had 3 blank sides. +Point {13 11 15} had 1 blank sides. +Point {2 6 13} had 4 blank sides. +Point {13 13 13} had 3 blank sides. +Point {2 9 9} had 0 blank sides. +Point {6 16 9} had 1 blank sides. +Point {5 14 6} had 0 blank sides. +Point {8 1 9} had 2 blank sides. +Point {15 13 14} had 2 blank sides. +Point {3 6 5} had 2 blank sides. +Point {4 6 10} had 3 blank sides. +Point {9 13 16} had 0 blank sides. +Point {17 10 8} had 0 blank sides. +Point {3 6 15} had 3 blank sides. +Point {11 5 5} had 1 blank sides. +Point {12 3 7} had 0 blank sides. +Point {14 15 11} had 1 blank sides. +Point {7 16 10} had 1 blank sides. +Point {14 12 16} had 1 blank sides. +Point {3 8 3} had 3 blank sides. +Point {14 12 5} had 1 blank sides. +Point {11 18 6} had 2 blank sides. +Point {10 12 18} had 2 blank sides. +Point {11 5 4} had 1 blank sides. +Point {12 12 4} had 3 blank sides. +Point {4 12 15} had 1 blank sides. +Point {11 15 14} had 0 blank sides. +Point {9 7 18} had 2 blank sides. +Point {15 14 11} had 0 blank sides. +Point {12 4 4} had 0 blank sides. +Point {14 13 5} had 0 blank sides. +Point {12 8 18} had 3 blank sides. +Point {17 13 6} had 3 blank sides. +Point {11 7 17} had 1 blank sides. +Point {9 17 14} had 3 blank sides. +Point {1 8 10} had 1 blank sides. +Point {16 9 8} had 2 blank sides. +Point {12 8 17} had 0 blank sides. +Point {13 9 18} had 3 blank sides. +Point {6 15 4} had 2 blank sides. +Point {9 2 13} had 2 blank sides. +Point {15 6 5} had 1 blank sides. +Point {14 4 8} had 0 blank sides. +Point {3 7 8} had 1 blank sides. +Point {6 16 7} had 0 blank sides. +Point {13 14 13} had 2 blank sides. +Point {10 13 4} had 1 blank sides. +Point {15 9 5} had 1 blank sides. +Point {15 6 15} had 1 blank sides. +Point {15 15 9} had 0 blank sides. +Point {2 9 12} had 1 blank sides. +Point {13 4 11} had 2 blank sides. +Point {14 14 11} had 1 blank sides. +Point {8 10 2} had 0 blank sides. +Point {12 10 3} had 1 blank sides. +Point {11 16 3} had 4 blank sides. +Point {13 12 17} had 3 blank sides. +Point {16 6 7} had 0 blank sides. +Point {15 11 14} had 1 blank sides. +Point {12 16 10} had 0 blank sides. +Point {2 13 14} had 5 blank sides. +Point {10 16 10} had 2 blank sides. +Point {11 16 13} had 0 blank sides. +Point {12 17 13} had 1 blank sides. +Point {12 6 16} had 1 blank sides. +Point {3 4 12} had 2 blank sides. +Point {11 4 5} had 0 blank sides. +Point {4 5 8} had 0 blank sides. +Point {14 12 7} had 2 blank sides. +Point {12 16 13} had 0 blank sides. +Point {6 12 4} had 1 blank sides. +Point {15 8 5} had 0 blank sides. +Point {6 2 10} had 1 blank sides. +Point {2 5 11} had 2 blank sides. +Point {11 16 10} had 2 blank sides. +Point {5 17 7} had 3 blank sides. +Point {10 16 13} had 1 blank sides. +Point {8 2 10} had 0 blank sides. +Point {7 1 12} had 4 blank sides. +Point {7 5 15} had 0 blank sides. +Point {16 4 10} had 2 blank sides. +Point {17 13 11} had 3 blank sides. +Point {8 4 5} had 0 blank sides. +Point {16 10 11} had 0 blank sides. +Point {12 3 8} had 2 blank sides. +Point {4 14 7} had 0 blank sides. +Point {8 3 16} had 3 blank sides. +Point {5 17 10} had 1 blank sides. +Point {4 8 4} had 0 blank sides. +Point {17 8 12} had 1 blank sides. +Point {11 13 3} had 1 blank sides. +Point {8 14 5} had 2 blank sides. +Point {14 13 12} had 1 blank sides. +Point {14 8 4} had 0 blank sides. +Point {8 13 16} had 0 blank sides. +Point {10 17 4} had 2 blank sides. +Point {4 13 6} had 0 blank sides. +Point {15 10 11} had 4 blank sides. +Point {9 4 9} had 5 blank sides. +Point {15 8 14} had 1 blank sides. +Point {8 6 15} had 1 blank sides. +Point {8 5 3} had 0 blank sides. +Point {10 8 16} had 0 blank sides. +Point {7 8 5} had 6 blank sides. +Point {2 7 9} had 1 blank sides. +Point {7 16 13} had 0 blank sides. +Point {5 12 8} had 5 blank sides. +Point {11 1 14} had 6 blank sides. +Point {10 5 3} had 0 blank sides. +Point {13 18 8} had 4 blank sides. +Point {5 14 16} had 4 blank sides. +Point {7 16 3} had 4 blank sides. +Point {2 8 7} had 1 blank sides. +Point {10 8 2} had 0 blank sides. +Point {13 2 11} had 1 blank sides. +Point {10 11 17} had 1 blank sides. +Point {6 3 10} had 1 blank sides. +Point {10 4 15} had 0 blank sides. +Point {13 5 4} had 1 blank sides. +Point {4 2 11} had 5 blank sides. +Point {5 13 14} had 0 blank sides. +Point {9 15 4} had 1 blank sides. +Point {10 9 1} had 2 blank sides. +Point {5 15 9} had 2 blank sides. +Point {7 6 15} had 1 blank sides. +Point {5 7 16} had 0 blank sides. +Point {13 5 5} had 1 blank sides. +Point {2 12 11} had 0 blank sides. +Point {11 11 17} had 0 blank sides. +Point {16 5 10} had 0 blank sides. +Point {1 8 11} had 2 blank sides. +Point {10 12 14} had 6 blank sides. +Point {5 6 17} had 3 blank sides. +Point {16 9 11} had 2 blank sides. +Point {11 14 13} had 4 blank sides. +Point {9 1 5} had 4 blank sides. +Point {11 6 3} had 2 blank sides. +Point {11 17 6} had 0 blank sides. +Point {10 2 5} had 3 blank sides. +Point {13 6 4} had 0 blank sides. +Point {14 17 10} had 2 blank sides. +Point {12 15 9} had 2 blank sides. +Point {12 9 16} had 1 blank sides. +Point {16 12 9} had 2 blank sides. +Point {2 9 15} had 3 blank sides. +Point {6 15 13} had 1 blank sides. +Point {17 7 6} had 1 blank sides. +Point {10 15 7} had 3 blank sides. +Point {5 8 4} had 0 blank sides. +Point {11 17 5} had 2 blank sides. +Point {5 3 10} had 0 blank sides. +Point {10 10 18} had 1 blank sides. +Point {17 13 8} had 1 blank sides. +Point {12 2 13} had 1 blank sides. +Point {13 5 6} had 2 blank sides. +Point {4 15 7} had 1 blank sides. +Point {3 13 13} had 2 blank sides. +Point {6 13 17} had 2 blank sides. +Point {2 12 12} had 2 blank sides. +Point {13 15 8} had 0 blank sides. +Point {14 17 7} had 3 blank sides. +Point {11 5 14} had 2 blank sides. +Point {11 2 15} had 3 blank sides. +Point {4 7 5} had 0 blank sides. +Point {7 4 15} had 0 blank sides. +Point {3 11 8} had 1 blank sides. +Point {16 16 7} had 4 blank sides. +Point {10 8 15} had 5 blank sides. +Point {17 9 7} had 1 blank sides. +Point {7 3 7} had 0 blank sides. +Point {4 11 3} had 2 blank sides. +Point {7 15 11} had 4 blank sides. +Point {9 14 5} had 2 blank sides. +Point {8 15 5} had 0 blank sides. +Point {4 11 4} had 0 blank sides. +Point {5 2 10} had 3 blank sides. +Point {9 10 1} had 2 blank sides. +Point {13 13 2} had 1 blank sides. +Point {11 3 11} had 3 blank sides. +Point {4 11 16} had 1 blank sides. +Point {1 8 9} had 2 blank sides. +Point {5 14 8} had 3 blank sides. +Point {4 17 10} had 3 blank sides. +Point {3 5 15} had 4 blank sides. +Point {10 10 16} had 3 blank sides. +Point {9 16 16} had 4 blank sides. +Point {8 2 14} had 3 blank sides. +Point {3 7 10} had 2 blank sides. +Point {8 3 12} had 0 blank sides. +Point {4 10 7} had 3 blank sides. +Point {0 7 9} had 6 blank sides. +Point {17 8 6} had 2 blank sides. +Point {14 12 6} had 2 blank sides. +Point {5 9 15} had 1 blank sides. +Point {6 4 15} had 2 blank sides. +Point {12 11 17} had 1 blank sides. +Point {17 10 6} had 1 blank sides. +Point {10 1 6} had 2 blank sides. +Point {16 14 7} had 0 blank sides. +Point {4 14 13} had 0 blank sides. +Point {17 10 10} had 0 blank sides. +Point {17 8 14} had 3 blank sides. +Point {9 3 7} had 2 blank sides. +Point {4 9 13} had 1 blank sides. +Point {4 12 14} had 0 blank sides. +Point {4 6 9} had 2 blank sides. +Point {10 16 4} had 2 blank sides. +Point {2 12 9} had 0 blank sides. +Point {15 12 12} had 1 blank sides. +Point {5 5 9} had 2 blank sides. +Point {11 11 3} had 3 blank sides. +Point {16 4 6} had 3 blank sides. +Point {6 16 11} had 1 blank sides. +Point {2 5 12} had 3 blank sides. +Point {15 13 11} had 3 blank sides. +Point {4 15 6} had 2 blank sides. +Point {8 7 17} had 0 blank sides. +Point {5 10 7} had 4 blank sides. +Point {12 16 4} had 3 blank sides. +Point {11 11 16} had 1 blank sides. +Point {14 6 6} had 2 blank sides. +Point {7 2 14} had 3 blank sides. +Point {4 13 14} had 1 blank sides. +Point {10 15 6} had 2 blank sides. +Point {14 13 4} had 0 blank sides. +Point {9 11 1} had 2 blank sides. +Point {12 4 16} had 1 blank sides. +Point {8 10 15} had 4 blank sides. +Point {16 12 12} had 1 blank sides. +Point {14 5 8} had 3 blank sides. +Point {15 15 10} had 0 blank sides. +Point {9 15 8} had 4 blank sides. +Point {15 10 7} had 5 blank sides. +Point {14 16 13} had 3 blank sides. +Point {8 16 6} had 0 blank sides. +Point {5 13 6} had 2 blank sides. +Point {10 10 3} had 2 blank sides. +Point {17 6 6} had 2 blank sides. +Point {15 4 9} had 0 blank sides. +Point {13 5 16} had 1 blank sides. +Point {16 11 8} had 1 blank sides. +Point {15 9 15} had 1 blank sides. +Point {10 13 5} had 2 blank sides. +Point {17 6 8} had 1 blank sides. +Point {9 18 9} had 1 blank sides. +Point {7 16 4} had 1 blank sides. +Point {1 13 11} had 4 blank sides. +Point {5 3 8} had 0 blank sides. +Point {15 5 6} had 0 blank sides. +Point {11 4 13} had 2 blank sides. +Point {12 17 14} had 3 blank sides. +Point {5 6 7} had 3 blank sides. +Point {4 8 8} had 3 blank sides. +Point {10 2 15} had 3 blank sides. +Point {9 2 10} had 0 blank sides. +Point {13 16 6} had 0 blank sides. +Point {7 11 1} had 3 blank sides. +Point {9 17 13} had 1 blank sides. +Point {11 12 16} had 0 blank sides. +Point {6 6 2} had 4 blank sides. +Point {4 14 12} had 0 blank sides. +Point {17 9 8} had 1 blank sides. +Point {2 13 11} had 0 blank sides. +Point {15 8 12} had 3 blank sides. +Point {5 8 17} had 2 blank sides. +Point {9 1 7} had 2 blank sides. +Point {6 12 2} had 2 blank sides. +Point {5 4 7} had 1 blank sides. +Point {7 14 15} had 0 blank sides. +Point {14 9 15} had 1 blank sides. +Point {3 12 8} had 0 blank sides. +Point {6 15 16} had 4 blank sides. +Point {12 11 16} had 0 blank sides. +Point {9 15 12} had 5 blank sides. +Point {8 3 15} had 1 blank sides. +Point {5 14 4} had 2 blank sides. +Point {8 18 9} had 1 blank sides. +Point {9 12 16} had 0 blank sides. +Point {9 12 5} had 6 blank sides. +Point {14 13 3} had 1 blank sides. +Point {11 15 3} had 1 blank sides. +Point {13 14 5} had 1 blank sides. +Point {18 11 12} had 3 blank sides. +Point {7 6 17} had 2 blank sides. +Point {8 16 14} had 0 blank sides. +Point {4 7 15} had 0 blank sides. +Point {5 6 15} had 0 blank sides. +Point {17 7 5} had 4 blank sides. +Point {10 1 10} had 2 blank sides. +Point {4 7 14} had 0 blank sides. +Point {12 11 3} had 1 blank sides. +Point {11 8 18} had 1 blank sides. +Point {15 5 4} had 2 blank sides. +Point {4 10 11} had 4 blank sides. +Point {6 3 8} had 0 blank sides. +Point {5 6 5} had 0 blank sides. +Point {6 9 4} had 2 blank sides. +Point {6 4 11} had 3 blank sides. +Point {9 2 14} had 2 blank sides. +Point {15 5 5} had 1 blank sides. +Point {17 8 10} had 0 blank sides. +Point {8 6 17} had 1 blank sides. +Point {3 14 8} had 0 blank sides. +Point {9 5 13} had 3 blank sides. +Point {16 13 13} had 2 blank sides. +Point {9 6 4} had 4 blank sides. +Point {15 13 8} had 2 blank sides. +Point {5 7 3} had 1 blank sides. +Point {15 8 6} had 1 blank sides. +Point {4 7 6} had 0 blank sides. +Point {14 17 8} had 2 blank sides. +Point {4 6 8} had 2 blank sides. +Point {3 9 13} had 0 blank sides. +Point {15 7 8} had 2 blank sides. +Point {16 14 12} had 2 blank sides. +Point {3 9 10} had 4 blank sides. +Point {9 19 7} had 5 blank sides. +Point {10 4 17} had 4 blank sides. +Point {13 15 4} had 3 blank sides. +Point {9 13 15} had 2 blank sides. +Point {8 15 11} had 4 blank sides. +Point {4 16 12} had 3 blank sides. +Point {1 5 10} had 5 blank sides. +Point {7 15 5} had 0 blank sides. +Point {2 13 8} had 1 blank sides. +Point {4 6 6} had 0 blank sides. +Point {5 4 8} had 0 blank sides. +Point {7 1 8} had 4 blank sides. +Point {7 2 10} had 0 blank sides. +Point {16 12 11} had 1 blank sides. +Point {1 9 11} had 2 blank sides. +Point {13 16 14} had 1 blank sides. +Point {16 11 15} had 3 blank sides. +Point {7 14 14} had 1 blank sides. +Point {6 8 14} had 5 blank sides. +Point {7 13 14} had 2 blank sides. +Point {12 10 1} had 3 blank sides. +Point {18 11 9} had 2 blank sides. +Point {12 3 10} had 1 blank sides. +Point {14 14 3} had 3 blank sides. +Point {17 6 9} had 2 blank sides. +Point {3 15 9} had 2 blank sides. +Point {2 8 15} had 4 blank sides. +Point {6 11 18} had 4 blank sides. +Point {7 7 2} had 1 blank sides. +Point {13 9 17} had 0 blank sides. +Point {11 8 17} had 0 blank sides. +Point {12 5 13} had 2 blank sides. +Point {11 13 5} had 4 blank sides. +Point {13 17 6} had 1 blank sides. +Point {3 13 10} had 1 blank sides. +Point {13 16 15} had 3 blank sides. +Point {6 15 12} had 3 blank sides. +Point {6 3 3} had 6 blank sides. +Point {12 18 9} had 3 blank sides. +Point {9 15 16} had 1 blank sides. +Point {12 10 16} had 2 blank sides. +Point {16 8 8} had 0 blank sides. +Point {2 7 12} had 2 blank sides. +Point {12 7 17} had 1 blank sides. +Point {6 14 5} had 1 blank sides. +Point {12 15 2} had 4 blank sides. +Point {12 2 10} had 2 blank sides. +Point {6 3 7} had 1 blank sides. +Point {12 13 4} had 2 blank sides. +Point {17 10 9} had 0 blank sides. +Point {17 8 11} had 0 blank sides. +Point {16 9 7} had 2 blank sides. +Point {11 0 11} had 5 blank sides. +Point {17 4 9} had 5 blank sides. +Point {4 16 11} had 0 blank sides. +Point {10 6 2} had 1 blank sides. +Point {7 17 10} had 1 blank sides. +Point {3 6 11} had 1 blank sides. +Point {6 10 14} had 4 blank sides. +Point {3 9 6} had 0 blank sides. +Point {15 9 12} had 4 blank sides. +Point {11 14 5} had 1 blank sides. +Point {4 11 6} had 1 blank sides. +Point {14 14 10} had 1 blank sides. +Point {13 6 3} had 2 blank sides. +Point {7 17 7} had 0 blank sides. +Point {16 5 11} had 0 blank sides. +Point {2 11 6} had 3 blank sides. +Point {6 10 4} had 3 blank sides. +Point {13 6 14} had 3 blank sides. +Point {9 5 17} had 3 blank sides. +Point {16 15 8} had 2 blank sides. +Point {5 2 13} had 4 blank sides. +Point {8 12 16} had 1 blank sides. +Point {13 8 2} had 2 blank sides. +Point {1 10 11} had 1 blank sides. +Point {2 5 10} had 0 blank sides. +Point {10 17 5} had 2 blank sides. +Point {9 4 15} had 0 blank sides. +Point {13 11 2} had 1 blank sides. +Point {12 10 18} had 2 blank sides. +Point {10 8 1} had 2 blank sides. +Point {13 3 9} had 1 blank sides. +Point {5 5 15} had 0 blank sides. +Point {13 8 16} had 1 blank sides. +Point {12 9 2} had 1 blank sides. +Point {1 9 8} had 1 blank sides. +Point {9 16 6} had 1 blank sides. +Point {9 6 18} had 2 blank sides. +Point {16 16 11} had 5 blank sides. +Point {8 13 15} had 2 blank sides. +Point {15 4 11} had 0 blank sides. +Point {12 14 15} had 1 blank sides. +Point {15 14 10} had 1 blank sides. +Point {12 15 10} had 3 blank sides. +Point {8 16 15} had 3 blank sides. +Point {12 5 17} had 3 blank sides. +Point {10 2 11} had 2 blank sides. +Point {5 9 5} had 3 blank sides. +Point {6 13 2} had 3 blank sides. +Point {8 17 8} had 0 blank sides. +Point {11 1 7} had 2 blank sides. +Point {3 12 4} had 2 blank sides. +Point {6 2 13} had 2 blank sides. +Point {4 4 12} had 0 blank sides. +Point {5 15 10} had 1 blank sides. +Point {16 15 12} had 4 blank sides. +Point {12 9 3} had 1 blank sides. +Point {11 15 2} had 3 blank sides. +Point {8 4 13} had 0 blank sides. +Point {15 5 14} had 1 blank sides. +Point {11 17 4} had 3 blank sides. +Point {4 9 6} had 2 blank sides. +Point {8 10 17} had 0 blank sides. +Point {16 6 11} had 1 blank sides. +Point {13 15 13} had 2 blank sides. +Point {17 11 12} had 1 blank sides. +Point {4 11 13} had 1 blank sides. +Point {3 11 7} had 1 blank sides. +Point {14 15 5} had 0 blank sides. +Point {4 14 5} had 1 blank sides. +Point {10 17 6} had 0 blank sides. +Point {8 9 1} had 1 blank sides. +Point {2 11 13} had 3 blank sides. +Point {13 4 15} had 0 blank sides. +Point {12 13 3} had 0 blank sides. +Point {6 7 15} had 2 blank sides. +Point {8 3 14} had 0 blank sides. +Point {17 8 9} had 0 blank sides. +Point {6 15 8} had 3 blank sides. +Point {15 3 8} had 3 blank sides. +Point {18 8 13} had 3 blank sides. +Point {11 18 7} had 2 blank sides. +Point {6 17 6} had 2 blank sides. +Point {17 11 9} had 1 blank sides. +Point {7 12 16} had 1 blank sides. +Point {5 11 15} had 0 blank sides. +Point {11 5 16} had 0 blank sides. +Point {12 12 2} had 0 blank sides. +Point {9 7 2} had 1 blank sides. +Point {9 10 3} had 1 blank sides. +Point {13 7 3} had 1 blank sides. +Point {18 12 10} had 3 blank sides. +Point {8 7 1} had 3 blank sides. +Point {17 10 12} had 0 blank sides. +Point {5 3 7} had 0 blank sides. +Point {17 9 11} had 0 blank sides. +Point {7 9 17} had 1 blank sides. +Point {14 9 4} had 1 blank sides. +Point {6 16 12} had 0 blank sides. +Point {16 5 7} had 1 blank sides. +Point {14 16 10} had 0 blank sides. +Point {15 9 4} had 0 blank sides. +Point {3 7 11} had 0 blank sides. +Point {13 17 5} had 4 blank sides. +Point {11 16 4} had 0 blank sides. +Point {12 2 14} had 3 blank sides. +Point {9 16 14} had 1 blank sides. +Point {11 18 13} had 4 blank sides. +Point {6 11 15} had 1 blank sides. +Point {11 18 11} had 1 blank sides. +Point {15 13 6} had 0 blank sides. +Point {7 3 10} had 0 blank sides. +Point {3 4 13} had 3 blank sides. +Point {12 14 14} had 1 blank sides. +Point {6 4 9} had 3 blank sides. +Point {3 7 7} had 0 blank sides. +Point {9 2 11} had 0 blank sides. +Point {17 9 14} had 2 blank sides. +Point {10 7 3} had 1 blank sides. +Point {9 7 17} had 0 blank sides. +Point {7 17 5} had 2 blank sides. +Point {5 14 12} had 2 blank sides. +Point {6 17 7} had 1 blank sides. +Point {6 3 6} had 0 blank sides. +Point {13 16 8} had 0 blank sides. +Point {6 12 17} had 2 blank sides. +Point {14 15 6} had 0 blank sides. +Point {3 13 11} had 1 blank sides. +Point {16 4 7} had 2 blank sides. +Point {4 5 14} had 1 blank sides. +Point {13 7 5} had 4 blank sides. +Point {1 12 11} had 1 blank sides. +Point {6 6 12} had 4 blank sides. +Point {3 7 4} had 3 blank sides. +Point {6 4 12} had 0 blank sides. +Point {12 16 5} had 1 blank sides. +Point {11 3 14} had 1 blank sides. +Point {2 11 12} had 1 blank sides. +Point {3 8 7} had 0 blank sides. +Point {16 11 14} had 0 blank sides. +Point {10 1 11} had 1 blank sides. +Point {12 12 1} had 3 blank sides. +Point {11 15 8} had 3 blank sides. +Point {17 11 13} had 1 blank sides. +Point {8 8 18} had 2 blank sides. +Point {3 5 11} had 0 blank sides. +Point {3 14 7} had 1 blank sides. +Point {6 17 10} had 1 blank sides. +Point {4 9 5} had 0 blank sides. +Point {11 14 2} had 2 blank sides. +Point {5 15 8} had 0 blank sides. +Point {5 5 13} had 0 blank sides. +Point {15 8 8} had 4 blank sides. +Point {2 11 9} had 0 blank sides. +Point {17 10 7} had 2 blank sides. +Point {10 17 10} had 1 blank sides. +Point {11 2 13} had 2 blank sides. +Point {4 4 9} had 0 blank sides. +Point {8 8 17} had 0 blank sides. +Point {2 6 11} had 1 blank sides. +Point {6 14 4} had 0 blank sides. +Point {7 12 15} had 1 blank sides. +Point {4 10 6} had 1 blank sides. +Point {10 12 16} had 2 blank sides. +Point {2 14 10} had 3 blank sides. +Point {7 16 5} had 0 blank sides. +Point {6 6 3} had 1 blank sides. +Point {4 8 12} had 2 blank sides. +Point {8 11 2} had 0 blank sides. +Point {7 4 12} had 1 blank sides. +Point {11 14 4} had 1 blank sides. +Point {6 5 6} had 3 blank sides. +Point {5 4 6} had 0 blank sides. +Point {6 6 14} had 2 blank sides. +Point {14 13 16} had 2 blank sides. +Point {9 8 17} had 1 blank sides. +Point {4 6 4} had 2 blank sides. +Point {13 9 16} had 0 blank sides. +Point {11 7 18} had 3 blank sides. +Point {8 16 8} had 1 blank sides. +Point {10 17 7} had 0 blank sides. +Point {12 2 15} had 3 blank sides. +Point {2 7 6} had 2 blank sides. +Point {9 15 3} had 2 blank sides. +Point {11 4 15} had 0 blank sides. +Point {9 14 6} had 4 blank sides. +Point {7 13 2} had 2 blank sides. +Point {6 8 4} had 2 blank sides. +Point {13 15 9} had 0 blank sides. +Point {14 12 3} had 0 blank sides. +Point {7 8 17} had 0 blank sides. +Point {11 7 4} had 4 blank sides. +Point {11 15 12} had 4 blank sides. +Point {5 4 14} had 0 blank sides. +Point {13 3 15} had 4 blank sides. +Point {6 7 16} had 0 blank sides. +Point {9 17 12} had 1 blank sides. +Point {3 10 16} had 2 blank sides. +Point {13 8 3} had 0 blank sides. +Point {6 5 5} had 1 blank sides. +Point {13 1 10} had 3 blank sides. +Point {12 15 8} had 2 blank sides. +Point {12 3 13} had 0 blank sides. +Point {17 7 9} had 0 blank sides. +Point {3 13 8} had 0 blank sides. +Point {16 4 8} had 2 blank sides. +Point {14 5 16} had 3 blank sides. +Point {6 5 4} had 1 blank sides. +Point {9 5 3} had 3 blank sides. +Point {12 16 9} had 0 blank sides. +Point {14 8 6} had 3 blank sides. +Point {14 11 17} had 2 blank sides. +Point {17 11 6} had 1 blank sides. +Point {7 16 7} had 0 blank sides. +Point {13 14 17} had 5 blank sides. +Point {14 6 4} had 1 blank sides. +Point {4 8 6} had 1 blank sides. +Point {7 2 11} had 0 blank sides. +Point {4 3 8} had 1 blank sides. +Point {10 3 12} had 2 blank sides. +Point {2 9 6} had 1 blank sides. +Point {8 1 10} had 2 blank sides. +Point {6 16 10} had 1 blank sides. +Point {12 7 2} had 1 blank sides. +Point {12 3 4} had 3 blank sides. +Point {14 16 12} had 1 blank sides. +Point {4 7 13} had 1 blank sides. +Point {14 3 8} had 1 blank sides. +Point {13 17 7} had 1 blank sides. +Point {1 12 12} had 3 blank sides. +Point {9 1 12} had 3 blank sides. +Point {5 3 6} had 1 blank sides. +Point {8 6 16} had 0 blank sides. +Point {3 5 7} had 1 blank sides. +Point {10 10 17} had 0 blank sides. +Point {7 17 6} had 1 blank sides. +Point {4 14 4} had 3 blank sides. +Point {7 16 9} had 0 blank sides. +Point {7 7 1} had 2 blank sides. +Point {5 5 10} had 2 blank sides. +Point {10 16 7} had 2 blank sides. +Point {18 7 8} had 2 blank sides. +Point {1 10 8} had 2 blank sides. +Point {7 8 18} had 3 blank sides. +Point {3 14 13} had 1 blank sides. +Point {12 1 12} had 3 blank sides. +Point {16 7 8} had 0 blank sides. +Point {18 14 8} had 5 blank sides. +Point {7 6 16} had 0 blank sides. +Point {6 12 12} had 6 blank sides. +Point {10 14 16} had 0 blank sides. +Point {7 3 5} had 0 blank sides. +Point {3 9 5} had 1 blank sides. +Point {12 16 7} had 1 blank sides. +Point {12 5 3} had 2 blank sides. +Point {5 15 12} had 0 blank sides. +Point {16 15 10} had 3 blank sides. +Point {17 5 10} had 2 blank sides. +Point {13 17 10} had 1 blank sides. +Point {9 3 6} had 1 blank sides. +Point {11 15 16} had 2 blank sides. +Point {9 11 3} had 3 blank sides. +Point {16 10 9} had 3 blank sides. +Point {6 15 3} had 3 blank sides. +Point {11 16 7} had 1 blank sides. +Point {10 18 7} had 1 blank sides. +Point {4 4 11} had 1 blank sides. +Point {9 11 16} had 3 blank sides. +Point {11 3 15} had 0 blank sides. +Point {12 8 5} had 6 blank sides. +Point {2 8 13} had 2 blank sides. +Point {10 6 3} had 1 blank sides. +Point {4 13 13} had 0 blank sides. +Point {9 12 15} had 4 blank sides. +Point {5 11 14} had 1 blank sides. +Point {6 13 14} had 1 blank sides. +Point {14 16 11} had 0 blank sides. +Point {9 16 8} had 2 blank sides. +Point {10 4 5} had 0 blank sides. +Point {3 12 9} had 0 blank sides. +Point {6 14 17} had 4 blank sides. +Point {12 9 18} had 1 blank sides. +Point {13 15 14} had 0 blank sides. +Point {6 16 13} had 1 blank sides. +Point {7 7 17} had 1 blank sides. +Point {2 9 10} had 0 blank sides. +Point {11 11 1} had 3 blank sides. +Point {10 2 10} had 1 blank sides. +Point {9 10 17} had 1 blank sides. +Point {9 2 15} had 3 blank sides. +Point {10 18 11} had 2 blank sides. +Point {13 6 2} had 1 blank sides. +Point {7 11 3} had 1 blank sides. +Point {15 6 16} had 4 blank sides. +Point {6 2 5} had 3 blank sides. +Point {15 15 12} had 0 blank sides. +Point {8 3 9} had 1 blank sides. +Point {12 2 11} had 1 blank sides. +Point {4 3 7} had 3 blank sides. +Point {14 4 10} had 0 blank sides. +Point {8 2 5} had 1 blank sides. +Point {8 4 15} had 0 blank sides. +Point {2 9 13} had 1 blank sides. +Point {9 17 9} had 0 blank sides. +Point {12 13 16} had 1 blank sides. +Point {9 14 16} had 0 blank sides. +Point {11 16 9} had 2 blank sides. +Point {5 12 17} had 3 blank sides. +Point {8 17 4} had 2 blank sides. +Point {14 3 7} had 3 blank sides. +Point {7 9 16} had 0 blank sides. +Point {2 12 8} had 2 blank sides. +Point {2 13 10} had 1 blank sides. +Point {12 6 5} had 2 blank sides. +Point {1 8 8} had 3 blank sides. +Point {5 7 5} had 0 blank sides. +Point {8 18 10} had 2 blank sides. +Point {13 4 13} had 0 blank sides. +Point {12 10 2} had 0 blank sides. +Point {7 15 6} had 1 blank sides. +Point {8 10 3} had 1 blank sides. +Point {13 2 13} had 3 blank sides. +Point {1 10 10} had 1 blank sides. +Point {14 12 14} had 2 blank sides. +Point {13 18 9} had 3 blank sides. +Point {6 4 5} had 0 blank sides. +Point {4 10 5} had 1 blank sides. +Point {11 13 15} had 3 blank sides. +Point {1 10 6} had 3 blank sides. +Point {9 9 1} had 1 blank sides. +Point {9 4 13} had 2 blank sides. +Point {3 10 13} had 0 blank sides. +Point {18 11 6} had 4 blank sides. +Point {17 14 9} had 2 blank sides. +Point {10 15 5} had 1 blank sides. +Point {16 13 14} had 2 blank sides. +Point {12 17 11} had 0 blank sides. +Point {8 14 16} had 1 blank sides. +Point {6 5 14} had 0 blank sides. +Point {4 15 5} had 3 blank sides. +Point {17 5 12} had 3 blank sides. +Point {2 5 9} had 2 blank sides. +Point {11 17 8} had 0 blank sides. +Point {5 5 12} had 1 blank sides. +Point {9 5 15} had 1 blank sides. +Point {14 11 13} had 5 blank sides. +Point {12 11 1} had 1 blank sides. +Point {9 18 10} had 1 blank sides. +Point {7 3 13} had 0 blank sides. +Point {4 7 16} had 1 blank sides. +Point {12 12 17} had 1 blank sides. +Point {8 15 7} had 3 blank sides. +Point {4 10 4} had 0 blank sides. +Point {7 4 5} had 1 blank sides. +Point {16 10 12} had 2 blank sides. +Point {9 13 12} had 6 blank sides. +Point {16 7 10} had 1 blank sides. +Point {8 7 2} had 0 blank sides. +Point {18 9 11} had 2 blank sides. +Point {5 14 5} had 0 blank sides. +Point {7 3 4} had 3 blank sides. +Point {4 10 14} had 0 blank sides. +Point {11 1 12} had 2 blank sides. +Point {18 7 10} had 2 blank sides. +Point {4 7 12} had 1 blank sides. +Point {4 5 6} had 1 blank sides. +Point {11 16 5} had 1 blank sides. +Point {4 16 10} had 1 blank sides. +Point {12 5 15} had 1 blank sides. +Point {5 13 17} had 4 blank sides. +Point {15 4 12} had 0 blank sides. +Point {12 3 5} had 1 blank sides. +Point {13 14 2} had 3 blank sides. +Point {16 8 6} had 0 blank sides. +Point {3 13 6} had 3 blank sides. +Point {1 11 9} had 2 blank sides. +Point {15 15 8} had 0 blank sides. +Point {17 9 16} had 5 blank sides. +Point {5 6 13} had 2 blank sides. +Point {13 12 4} had 1 blank sides. +Point {11 12 15} had 2 blank sides. +Point {14 6 14} had 0 blank sides. +Point {1 11 11} had 2 blank sides. +Point {9 3 13} had 0 blank sides. +Point {2 15 11} had 3 blank sides. +Point {16 8 14} had 0 blank sides. +Point {12 17 12} had 1 blank sides. +Point {15 10 14} had 0 blank sides. +Point {7 17 4} had 3 blank sides. +Point {11 16 12} had 2 blank sides. +Point {11 15 13} had 0 blank sides. +Point {7 6 13} had 5 blank sides. +Point {9 6 2} had 2 blank sides. +Point {16 15 9} had 2 blank sides. +Point {13 14 16} had 1 blank sides. +Point {9 2 5} had 0 blank sides. +Point {15 10 4} had 0 blank sides. +Point {7 11 17} had 2 blank sides. +Point {5 10 14} had 1 blank sides. +Point {11 1 8} had 2 blank sides. +Point {12 16 11} had 2 blank sides. +Point {12 4 6} had 0 blank sides. +Point {14 13 15} had 1 blank sides. +Point {14 14 15} had 1 blank sides. +Point {4 11 5} had 0 blank sides. +Point {16 10 5} had 0 blank sides. +Point {10 16 11} had 3 blank sides. +Point {17 13 10} had 1 blank sides. +Point {16 14 6} had 2 blank sides. +Point {5 10 4} had 1 blank sides. +Point {15 11 15} had 1 blank sides. +Point {11 12 3} had 1 blank sides. +Point {8 18 8} had 2 blank sides. +Point {5 7 14} had 2 blank sides. +Point {11 9 1} had 2 blank sides. +Point {17 12 6} had 1 blank sides. +Point {8 3 11} had 1 blank sides. +Point {16 8 5} had 1 blank sides. +Point {15 7 4} had 0 blank sides. +Point {9 10 2} had 0 blank sides. +Point {3 12 11} had 2 blank sides. +Point {17 11 4} had 4 blank sides. +Point {5 16 8} had 1 blank sides. +Point {8 14 2} had 2 blank sides. +Point {10 6 18} had 3 blank sides. +Point {6 14 6} had 3 blank sides. +Point {5 5 7} had 1 blank sides. +Point {10 14 17} had 3 blank sides. +Point {6 3 5} had 1 blank sides. +Point {17 12 13} had 4 blank sides. +Point {15 3 4} had 6 blank sides. +Point {4 4 15} had 3 blank sides. +Point {5 7 15} had 0 blank sides. +Point {15 10 5} had 0 blank sides. +Point {9 11 17} had 0 blank sides. +Point {13 4 12} had 1 blank sides. +Point {5 7 6} had 3 blank sides. +Point {15 14 15} had 5 blank sides. +Point {10 18 6} had 3 blank sides. +Point {4 12 6} had 1 blank sides. +Point {7 16 11} had 0 blank sides. +Point {3 9 15} had 0 blank sides. +Point {15 7 7} had 2 blank sides. +Point {3 5 10} had 0 blank sides. +Point {17 6 12} had 1 blank sides. +Point {16 10 14} had 0 blank sides. +Point {5 13 13} had 2 blank sides. +Point {9 3 4} had 1 blank sides. +Point {13 15 10} had 1 blank sides. +Point {16 10 4} had 1 blank sides. +Point {11 3 12} had 1 blank sides. +Point {8 15 6} had 1 blank sides. +Point {8 14 4} had 1 blank sides. +Point {9 12 18} had 2 blank sides. +Point {4 12 13} had 1 blank sides. +Point {9 13 3} had 1 blank sides. +Point {14 4 6} had 1 blank sides. +Point {4 7 3} had 2 blank sides. +Point {13 9 3} had 1 blank sides. +Point {3 4 11} had 2 blank sides. +Point {5 15 13} had 1 blank sides. +Point {12 6 17} had 1 blank sides. +Point {11 17 10} had 0 blank sides. +Point {13 12 2} had 1 blank sides. +Point {16 10 8} had 2 blank sides. +Point {10 8 3} had 1 blank sides. +Point {9 18 8} had 1 blank sides. +Point {12 15 13} had 2 blank sides. +Point {11 12 18} had 3 blank sides. +Point {10 13 16} had 1 blank sides. +Point {14 4 14} had 2 blank sides. +Point {13 14 8} had 2 blank sides. +Point {5 3 5} had 3 blank sides. +Point {4 6 12} had 2 blank sides. +Point {15 11 8} had 5 blank sides. +Point {15 9 13} had 1 blank sides. +Point {8 10 16} had 1 blank sides. +Point {10 3 14} had 1 blank sides. +Point {7 14 3} had 1 blank sides. +Point {10 19 11} had 5 blank sides. +Point {16 8 10} had 1 blank sides. +Point {16 9 14} had 0 blank sides. +Point {4 15 11} had 0 blank sides. +Point {11 3 16} had 3 blank sides. +Point {8 11 18} had 1 blank sides. +Point {11 17 7} had 0 blank sides. +Point {7 2 5} had 2 blank sides. +Point {8 7 18} had 2 blank sides. +Point {9 14 2} had 3 blank sides. +Point {17 5 11} had 2 blank sides. +Point {14 14 14} had 1 blank sides. +Point {15 14 9} had 0 blank sides. +Point {5 5 11} had 2 blank sides. +Point {13 5 2} had 5 blank sides. +Point {7 3 6} had 0 blank sides. +Point {9 15 14} had 1 blank sides. +Point {8 5 12} had 3 blank sides. +Point {3 5 13} had 2 blank sides. +Point {7 15 7} had 2 blank sides. +Point {5 17 6} had 3 blank sides. +Point {7 6 1} had 4 blank sides. +Point {14 5 14} had 0 blank sides. +Point {12 4 14} had 0 blank sides. +Point {8 4 17} had 5 blank sides. +Point {9 13 4} had 3 blank sides. +Point {4 6 14} had 1 blank sides. +Point {16 12 8} had 1 blank sides. +Point {4 6 3} had 3 blank sides. +Point {10 5 17} had 1 blank sides. +Point {8 10 18} had 2 blank sides. +Point {4 9 15} had 0 blank sides. +Point {15 4 13} had 3 blank sides. +Point {7 12 14} had 3 blank sides. +Point {4 14 6} had 1 blank sides. +Point {14 13 7} had 2 blank sides. +Point {7 13 18} had 6 blank sides. +Point {17 7 12} had 1 blank sides. +Point {14 14 9} had 1 blank sides. +Point {16 13 6} had 0 blank sides. +Point {4 3 10} had 2 blank sides. +Point {17 12 5} had 4 blank sides. +Point {11 18 12} had 3 blank sides. +Point {3 9 12} had 1 blank sides. +Point {14 5 6} had 0 blank sides. +Point {15 9 6} had 1 blank sides. +Point {12 9 17} had 1 blank sides. +Point {6 8 18} had 3 blank sides. +Point {6 17 8} had 2 blank sides. +Point {13 2 10} had 0 blank sides. +Point {17 8 8} had 0 blank sides. +Point {5 6 16} had 0 blank sides. +Point {4 8 5} had 0 blank sides. +Point {14 3 10} had 0 blank sides. +Point {6 3 13} had 0 blank sides. +Point {14 16 5} had 2 blank sides. +Point {14 8 5} had 3 blank sides. +Point {11 7 2} had 2 blank sides. +Point {16 13 11} had 0 blank sides. +Point {16 8 11} had 2 blank sides. +Point {4 12 5} had 0 blank sides. +Point {3 4 9} had 2 blank sides. +Point {13 7 15} had 2 blank sides. +Point {15 8 4} had 0 blank sides. +Point {2 6 7} had 3 blank sides. +Point {4 12 16} had 3 blank sides. +Point {9 1 8} had 1 blank sides. +Point {6 4 13} had 0 blank sides. +Point {10 14 4} had 1 blank sides. +Point {6 15 14} had 1 blank sides. +Point {9 17 11} had 0 blank sides. +Point {9 4 5} had 1 blank sides. +Point {14 7 16} had 2 blank sides. +Point {14 9 6} had 4 blank sides. +Point {12 4 3} had 3 blank sides. +Point {14 12 15} had 0 blank sides. +Point {3 5 12} had 0 blank sides. +Point {17 10 11} had 0 blank sides. +Point {11 5 2} had 3 blank sides. +Point {8 5 13} had 2 blank sides. +Point {8 2 11} had 1 blank sides. +Point {5 4 10} had 1 blank sides. +Point {9 3 5} had 0 blank sides. +Point {5 14 7} had 1 blank sides. +Point {10 5 13} had 4 blank sides. +Point {6 7 3} had 1 blank sides. +Point {16 6 13} had 1 blank sides. +Point {6 2 11} had 0 blank sides. +Point {11 15 4} had 0 blank sides. +Point {17 12 7} had 1 blank sides. +Point {14 7 12} had 5 blank sides. +Point {4 8 14} had 0 blank sides. +Point {16 9 16} had 3 blank sides. +Point {8 17 5} had 1 blank sides. +Point {14 8 14} had 2 blank sides. +Point {12 7 4} had 2 blank sides. +Point {7 9 3} had 1 blank sides. +Point {11 9 4} had 4 blank sides. +Point {3 9 9} had 3 blank sides. +Point {1 10 9} had 1 blank sides. +Point {8 12 3} had 1 blank sides. +Point {6 8 17} had 0 blank sides. +Point {10 17 8} had 1 blank sides. +Point {14 2 9} had 3 blank sides. +Point {16 14 8} had 0 blank sides. +Point {7 4 13} had 1 blank sides. +Point {3 8 16} had 2 blank sides. +Point {15 5 8} had 1 blank sides. +Point {1 12 9} had 2 blank sides. +Point {8 13 4} had 1 blank sides. +Point {17 12 10} had 0 blank sides. +Point {4 12 7} had 2 blank sides. +Point {2 7 5} had 4 blank sides. +Point {10 15 15} had 0 blank sides. +Point {8 10 1} had 1 blank sides. +Point {4 9 4} had 0 blank sides. +Point {3 14 12} had 1 blank sides. +Point {7 9 2} had 0 blank sides. +Point {16 5 9} had 1 blank sides. +Point {6 14 16} had 0 blank sides. +Point {2 14 11} had 1 blank sides. +Point {15 10 6} had 1 blank sides. +Point {5 2 11} had 2 blank sides. +Point {3 8 15} had 0 blank sides. +Point {14 16 9} had 0 blank sides. +Point {5 14 13} had 1 blank sides. +Point {10 3 15} had 1 blank sides. +Point {12 3 6} had 0 blank sides. +Point {15 13 13} had 0 blank sides. +Point {7 18 9} had 2 blank sides. +Point {10 6 4} had 3 blank sides. +Point {16 13 8} had 0 blank sides. +Point {14 15 7} had 0 blank sides. +Point {10 10 2} had 1 blank sides. +Point {1 10 12} had 4 blank sides. +Point {4 11 11} had 4 blank sides. +Point {15 6 13} had 1 blank sides. +Point {7 16 12} had 1 blank sides. +Point {8 17 6} had 1 blank sides. +Point {4 9 12} had 3 blank sides. +Point {16 15 14} had 5 blank sides. +Point {11 14 16} had 1 blank sides. +Point {5 8 5} had 2 blank sides. +Point {8 12 18} had 3 blank sides. +Point {15 16 8} had 2 blank sides. +Point {4 14 8} had 0 blank sides. +Point {16 8 9} had 2 blank sides. +Point {2 11 11} had 0 blank sides. +Point {12 14 3} had 1 blank sides. +Point {10 2 13} had 2 blank sides. +Point {3 9 4} had 0 blank sides. +Point {12 17 9} had 0 blank sides. +Point {15 15 13} had 4 blank sides. +Point {7 5 12} had 3 blank sides. +Point {3 11 14} had 2 blank sides. +Point {14 11 16} had 1 blank sides. +Point {14 5 4} had 1 blank sides. +Point {12 15 4} had 1 blank sides. +Point {10 7 16} had 2 blank sides. +Point {6 5 16} had 1 blank sides. +Point {14 16 7} had 0 blank sides. +Point {16 7 11} had 2 blank sides. +Point {13 17 8} had 0 blank sides. +Point {13 4 5} had 0 blank sides. +Point {13 14 6} had 2 blank sides. +Point {14 11 3} had 1 blank sides. +Point {16 12 4} had 2 blank sides. +Point {11 13 16} had 0 blank sides. +Point {8 13 3} had 0 blank sides. +Point {3 15 8} had 2 blank sides. +Point {18 10 13} had 3 blank sides. +Point {14 11 4} had 0 blank sides. +Point {5 3 13} had 1 blank sides. +Point {7 12 3} had 0 blank sides. +Point {16 10 6} had 1 blank sides. +Point {17 7 13} had 2 blank sides. +Point {13 3 12} had 0 blank sides. +Point {16 10 10} had 2 blank sides. +Point {9 14 17} had 3 blank sides. +Point {5 8 14} had 1 blank sides. +Point {15 12 4} had 0 blank sides. +Point {2 10 13} had 2 blank sides. +Point {3 6 13} had 1 blank sides. +Point {12 16 12} had 2 blank sides. +Point {14 5 5} had 0 blank sides. +Point {12 1 6} had 4 blank sides. +Point {5 6 14} had 0 blank sides. +Point {8 17 14} had 2 blank sides. +Point {11 6 17} had 1 blank sides. +Point {3 3 10} had 4 blank sides. +Point {16 14 11} had 2 blank sides. +Point {3 15 11} had 1 blank sides. +Point {5 6 3} had 2 blank sides. +Point {5 9 7} had 5 blank sides. +Point {16 8 15} had 3 blank sides. +Point {15 5 10} had 0 blank sides. +Point {12 5 6} had 2 blank sides. +Point {3 7 16} had 3 blank sides. +Point {9 16 5} had 1 blank sides. +Point {9 1 6} had 2 blank sides. +Point {4 5 15} had 1 blank sides. +Point {14 10 16} had 0 blank sides. +Point {10 6 1} had 3 blank sides. +Point {7 8 3} had 1 blank sides. +Point {5 10 2} had 3 blank sides. +Point {7 1 11} had 2 blank sides. +Point {12 11 18} had 3 blank sides. +Point {6 17 12} had 2 blank sides. +Point {7 13 4} had 0 blank sides. +Point {8 9 17} had 0 blank sides. +Point {6 4 6} had 1 blank sides. +Point {5 2 8} had 2 blank sides. +Point {13 8 17} had 2 blank sides. +Point {8 15 9} had 4 blank sides. +Point {6 9 17} had 0 blank sides. +Point {16 7 5} had 1 blank sides. +Point {8 14 3} had 1 blank sides. +Point {15 7 9} had 3 blank sides. +Point {10 17 12} had 2 blank sides. +Point {6 11 3} had 1 blank sides. +Point {11 3 6} had 0 blank sides. +Point {3 11 6} had 0 blank sides. +Point {4 13 3} had 4 blank sides. +Point {6 11 16} had 2 blank sides. +Point {12 12 3} had 0 blank sides. +Point {9 3 15} had 0 blank sides. +Point {7 9 1} had 2 blank sides. +Point {13 11 17} had 1 blank sides. +Point {16 15 6} had 3 blank sides. +Point {13 7 17} had 1 blank sides. +Point {13 9 4} had 2 blank sides. +Point {7 2 6} had 1 blank sides. +Point {15 8 3} had 2 blank sides. +Point {19 7 10} had 4 blank sides. +Point {10 7 2} had 1 blank sides. +Point {5 11 16} had 1 blank sides. +Point {13 10 17} had 1 blank sides. +Point {5 14 15} had 1 blank sides. +Point {2 9 7} had 0 blank sides. +Point {7 4 6} had 1 blank sides. +Point {6 3 14} had 2 blank sides. +Point {5 11 4} had 1 blank sides. +Point {15 11 12} had 3 blank sides. +Point {10 4 14} had 2 blank sides. +Point {16 9 5} had 1 blank sides. +Point {5 11 3} had 0 blank sides. +Point {1 9 9} had 1 blank sides. +Point {3 7 12} had 0 blank sides. +Point {12 15 5} had 0 blank sides. +Point {10 15 16} had 2 blank sides. +Point {11 18 10} had 3 blank sides. +Point {5 4 12} had 0 blank sides. +Point {4 12 2} had 6 blank sides. +Point {7 3 12} had 0 blank sides. +Point {10 11 18} had 1 blank sides. +Point {9 17 10} had 1 blank sides. +Point {2 11 10} had 1 blank sides. +Point {3 13 7} had 0 blank sides. +Point {9 9 16} had 2 blank sides. +Point {6 5 3} had 3 blank sides. +Point {2 7 11} had 0 blank sides. +Point {15 16 11} had 0 blank sides. +Point {10 12 4} had 4 blank sides. +Point {5 15 5} had 1 blank sides. +Point {7 4 14} had 0 blank sides. +Point {7 14 4} had 0 blank sides. +Point {8 4 16} had 0 blank sides. +Point {7 13 3} had 0 blank sides. +Point {8 6 18} had 3 blank sides. +Point {5 13 12} had 3 blank sides. +Point {16 4 11} had 1 blank sides. +Point {3 8 11} had 3 blank sides. +Point {10 4 6} had 3 blank sides. +Point {4 10 17} had 4 blank sides. +Point {7 15 3} had 1 blank sides. +Point {8 1 8} had 2 blank sides. +Point {9 16 9} had 2 blank sides. +Point {12 7 3} had 0 blank sides. +Point {9 17 7} had 1 blank sides. +Point {11 11 18} had 1 blank sides. +Point {9 13 17} had 1 blank sides. +Point {6 7 4} had 2 blank sides. +Point {14 15 10} had 0 blank sides. +Point {15 5 13} had 1 blank sides. +Point {6 10 3} had 0 blank sides. +Point {15 8 13} had 1 blank sides. +Point {9 5 5} had 3 blank sides. +Point {9 14 3} had 1 blank sides. +Point {5 3 14} had 3 blank sides. +Point {5 12 3} had 2 blank sides. +Point {5 16 12} had 0 blank sides. +Point {10 3 5} had 0 blank sides. +Point {14 3 9} had 0 blank sides. +Point {13 2 7} had 2 blank sides. +Point {3 11 13} had 0 blank sides. +Point {7 10 2} had 0 blank sides. +Point {9 8 3} had 1 blank sides. +Point {4 3 9} had 1 blank sides. +Point {3 10 7} had 0 blank sides. +Point {6 4 14} had 0 blank sides. +Point {2 11 7} had 1 blank sides. +Point {15 13 5} had 0 blank sides. +Point {6 15 6} had 0 blank sides. +Point {8 3 7} had 1 blank sides. +Point {9 2 6} had 0 blank sides. +Point {12 5 4} had 1 blank sides. +Point {4 14 11} had 2 blank sides. +Point {5 13 9} had 5 blank sides. +Point {7 9 15} had 4 blank sides. +Point {8 2 8} had 0 blank sides. +Point {11 15 5} had 1 blank sides. +Point {11 16 8} had 1 blank sides. +Point {13 17 12} had 2 blank sides. +Point {2 14 8} had 3 blank sides. +Point {5 14 14} had 1 blank sides. +Point {8 8 3} had 1 blank sides. +Point {2 12 10} had 0 blank sides. +Point {11 2 9} had 3 blank sides. +Point {15 6 4} had 1 blank sides. +Point {10 9 18} had 1 blank sides. +Point {6 2 8} had 1 blank sides. +Point {4 13 4} had 0 blank sides. +Point {14 13 14} had 1 blank sides. +Point {6 12 14} had 2 blank sides. +Point {3 5 8} had 0 blank sides. +Point {18 8 12} had 2 blank sides. +Point {14 1 10} had 4 blank sides. +Point {14 6 16} had 1 blank sides. +Point {17 10 13} had 0 blank sides. +Point {2 5 6} had 5 blank sides. +Point {8 13 17} had 3 blank sides. +Point {4 10 15} had 0 blank sides. +Point {15 13 9} had 3 blank sides. +Point {9 2 4} had 3 blank sides. +Point {14 14 7} had 0 blank sides. +Point {12 16 8} had 0 blank sides. +Point {11 2 7} had 0 blank sides. +Point {5 7 17} had 2 blank sides. +Point {5 13 5} had 1 blank sides. +Point {2 6 8} had 0 blank sides. +Point {10 14 3} had 1 blank sides. +Point {5 8 16} had 0 blank sides. +Point {3 16 11} had 3 blank sides. +Point {13 2 9} had 2 blank sides. +Point {11 1 6} had 2 blank sides. +Point {12 11 15} had 2 blank sides. +Point {12 17 8} had 1 blank sides. +Point {15 15 5} had 2 blank sides. +Point {17 9 12} had 2 blank sides. +Point {13 16 5} had 1 blank sides. +Point {13 17 9} had 0 blank sides. +Point {13 12 16} had 0 blank sides. +Point {4 2 9} had 4 blank sides. +Point {11 17 11} had 1 blank sides. +Point {12 4 13} had 1 blank sides. +Point {2 13 12} had 2 blank sides. +Point {1 11 10} had 1 blank sides. +Point {4 4 8} had 0 blank sides. +Point {11 4 16} had 1 blank sides. +Point {10 15 8} had 2 blank sides. +Point {11 9 3} had 1 blank sides. +Point {17 9 9} had 2 blank sides. +Point {14 2 10} had 1 blank sides. +Point {4 8 15} had 0 blank sides. +Point {15 14 7} had 0 blank sides. +Point {8 16 5} had 0 blank sides. +Point {14 9 17} had 3 blank sides. +Point {12 3 16} had 3 blank sides. +Point {7 6 4} had 4 blank sides. +Point {14 8 15} had 2 blank sides. +Point {15 5 12} had 0 blank sides. +Point {9 15 6} had 1 blank sides. +Point {1 13 9} had 4 blank sides. +Point {15 13 12} had 0 blank sides. +Point {8 3 8} had 2 blank sides. +Point {10 18 9} had 2 blank sides. +Point {16 11 4} had 1 blank sides. +Point {13 4 10} had 3 blank sides. +Point {7 16 8} had 1 blank sides. +Point {15 16 12} had 3 blank sides. +Point {7 4 3} had 3 blank sides. +Point {2 15 12} had 4 blank sides. +Point {10 13 6} had 5 blank sides. +Point {4 9 3} had 1 blank sides. +Point {14 4 13} had 1 blank sides. +Point {9 3 14} had 0 blank sides. +Point {1 11 7} had 4 blank sides. +Point {9 6 17} had 0 blank sides. +Point {5 16 11} had 0 blank sides. +Point {3 7 13} had 1 blank sides. +Point {13 13 15} had 2 blank sides. +Point {4 15 8} had 0 blank sides. +Point {2 13 9} had 1 blank sides. +Point {13 9 1} had 5 blank sides. +Point {13 15 7} had 1 blank sides. +Point {4 5 9} had 0 blank sides. +Point {3 8 14} had 1 blank sides. +Point {11 8 2} had 0 blank sides. +Point {10 17 9} had 1 blank sides. +Point {4 7 4} had 0 blank sides. +Point {10 4 3} had 1 blank sides. +Point {14 12 12} had 4 blank sides. +Point {6 13 16} had 1 blank sides. +Point {12 14 4} had 1 blank sides. +Point {4 4 7} had 0 blank sides. +Point {10 11 15} had 5 blank sides. +Point {8 16 7} had 1 blank sides. +Point {12 2 6} had 1 blank sides. +Point {11 8 16} had 2 blank sides. +Point {6 6 13} had 1 blank sides. +Point {6 5 15} had 0 blank sides. +Point {10 3 4} had 1 blank sides. +Point {15 14 13} had 2 blank sides. +Point {10 2 12} had 0 blank sides. +Point {12 3 12} had 1 blank sides. +Point {8 15 14} had 2 blank sides. +Point {11 9 2} had 0 blank sides. +Point {1 8 13} had 5 blank sides. +Point {13 6 5} had 1 blank sides. +Point {8 7 3} had 1 blank sides. +Point {7 15 2} had 4 blank sides. +Point {2 6 9} had 1 blank sides. +Point {4 7 7} had 2 blank sides. +Point {14 8 2} had 3 blank sides. +Point {13 16 9} had 0 blank sides. +Point {12 14 2} had 1 blank sides. +Point {13 6 15} had 1 blank sides. +Point {5 12 14} had 1 blank sides. +Point {14 8 16} had 1 blank sides. +Point {10 10 4} had 4 blank sides. +Point {4 8 16} had 1 blank sides. +Point {11 11 15} had 2 blank sides. +Point {15 7 3} had 2 blank sides. +Point {16 4 9} had 1 blank sides. +Point {13 9 15} had 3 blank sides. +Point {8 16 9} had 0 blank sides. +Point {2 10 11} had 0 blank sides. +Point {3 8 5} had 1 blank sides. +Point {4 15 12} had 1 blank sides. +Point {14 14 13} had 1 blank sides. +Point {12 13 14} had 5 blank sides. +Point {13 3 6} had 1 blank sides. +Point {5 4 5} had 2 blank sides. +Point {13 10 15} had 2 blank sides. +Point {3 9 3} had 3 blank sides. +Point {12 5 14} had 1 blank sides. +Point {4 6 16} had 3 blank sides. +Point {5 8 15} had 1 blank sides. +Point {9 18 5} had 5 blank sides. +Point {17 9 4} had 4 blank sides. +Point {6 17 9} had 0 blank sides. +Point {18 10 11} had 2 blank sides. +Point {6 12 3} had 0 blank sides. +Point {15 4 6} had 2 blank sides. +Point {13 14 11} had 4 blank sides. +Point {10 3 13} had 1 blank sides. +Point {13 16 7} had 0 blank sides. +Point {12 6 2} had 3 blank sides. +Point {7 17 13} had 2 blank sides. +Point {15 6 12} had 2 blank sides. +Point {8 4 4} had 0 blank sides. +Point {11 15 15} had 0 blank sides. +Point {7 12 17} had 2 blank sides. +Point {15 14 12} had 0 blank sides. +Point {15 16 9} had 2 blank sides. +Point {11 3 5} had 1 blank sides. +Point {7 10 15} had 1 blank sides. +Point {6 9 18} had 3 blank sides. +Point {10 6 16} had 1 blank sides. +Point {12 17 10} had 1 blank sides. +Point {2 9 11} had 1 blank sides. +Point {8 18 12} had 2 blank sides. +Point {15 7 12} had 3 blank sides. +Point {5 11 13} had 4 blank sides. +Point {8 9 18} had 2 blank sides. +Point {6 16 15} had 3 blank sides. +Point {11 10 16} had 1 blank sides. +Point {17 13 9} had 1 blank sides. +Point {3 9 14} had 0 blank sides. +Point {9 16 11} had 2 blank sides. +Point {3 7 9} had 2 blank sides. +Point {15 15 11} had 1 blank sides. +Point {14 16 8} had 0 blank sides. +Point {13 14 10} had 2 blank sides. +Point {6 3 12} had 0 blank sides. +Point {11 12 1} had 2 blank sides. +Point {10 8 17} had 0 blank sides. +Point {10 15 4} had 0 blank sides. +Point {12 17 7} had 1 blank sides. +Point {15 6 3} had 2 blank sides. +Point {11 1 10} had 2 blank sides. +Point {10 8 18} had 2 blank sides. +Point {3 6 12} had 0 blank sides. +Point {1 6 8} had 5 blank sides. +Point {13 6 17} had 3 blank sides. +Point {10 11 2} had 2 blank sides. +Point {16 12 6} had 0 blank sides. +Point {18 12 11} had 3 blank sides. +Point {15 13 4} had 2 blank sides. +Point {3 4 8} had 2 blank sides. +Point {6 12 15} had 0 blank sides. +Point {15 5 11} had 1 blank sides. +Point {15 6 14} had 0 blank sides. +Point {14 14 12} had 1 blank sides. +Point {8 2 4} had 3 blank sides. +Point {9 9 2} had 0 blank sides. +Point {16 12 13} had 0 blank sides. +Point {11 14 3} had 0 blank sides. +Point {14 15 9} had 0 blank sides. +Point {6 18 9} had 3 blank sides. +Point {12 14 16} had 2 blank sides. +Point {15 16 7} had 2 blank sides. +Point {8 7 16} had 0 blank sides. +Point {11 10 18} had 1 blank sides. +Point {9 13 2} had 1 blank sides. +Point {4 13 5} had 1 blank sides. +Point {7 7 15} had 2 blank sides. +Point {3 8 6} had 0 blank sides. +Point {14 4 12} had 0 blank sides. +Point {15 12 6} had 0 blank sides. +Point {6 14 3} had 2 blank sides. +Point {9 4 14} had 1 blank sides. +Point {15 12 13} had 2 blank sides. +Point {4 11 15} had 1 blank sides. +Point {11 2 12} had 1 blank sides. +Point {13 4 6} had 0 blank sides. +Point {17 14 7} had 3 blank sides. +Point {11 11 2} had 0 blank sides. +Point {15 11 5} had 0 blank sides. +Point {18 12 12} had 3 blank sides. +Point {3 12 14} had 2 blank sides. +Point {8 12 17} had 0 blank sides. +Point {13 5 12} had 3 blank sides. +Point {2 8 4} had 4 blank sides. +Point {17 7 7} had 0 blank sides. +Point {10 5 2} had 3 blank sides. +Point {9 6 15} had 2 blank sides. +Point {9 9 3} had 1 blank sides. +Point {15 16 5} had 4 blank sides. +Point {11 5 13} had 2 blank sides. +Point {18 9 13} had 3 blank sides. +Point {8 5 2} had 4 blank sides. +Point {2 7 10} had 0 blank sides. +Point {5 11 6} had 4 blank sides. +Point {18 8 10} had 0 blank sides. +Point {8 3 10} had 1 blank sides. +Point {11 17 12} had 0 blank sides. +Point {8 16 12} had 2 blank sides. +Point {13 4 14} had 1 blank sides. +Point {7 15 14} had 0 blank sides. +Point {12 15 15} had 1 blank sides. +Point {4 9 14} had 0 blank sides. +Point {3 11 3} had 4 blank sides. +Point {8 15 2} had 4 blank sides. +Point {16 10 15} had 1 blank sides. +Point {7 13 5} had 4 blank sides. +Point {3 11 4} had 1 blank sides. +Point {15 5 7} had 0 blank sides. +Point {8 17 13} had 1 blank sides. +Point {3 8 12} had 0 blank sides. +Point {2 10 7} had 0 blank sides. +Point {6 10 1} had 4 blank sides. +Point {16 6 14} had 2 blank sides. +Point {14 11 14} had 1 blank sides. +Point {3 11 16} had 4 blank sides. +Point {5 6 4} had 1 blank sides. +Point {16 6 3} had 4 blank sides. +Point {13 18 6} had 4 blank sides. +Point {15 10 15} had 0 blank sides. +Point {2 11 8} had 1 blank sides. +Point {13 15 6} had 0 blank sides. +Point {9 18 12} had 3 blank sides. +Point {9 12 1} had 2 blank sides. +Point {13 3 13} had 2 blank sides. +Point {5 9 17} had 2 blank sides. +Point {18 13 7} had 5 blank sides. +Point {7 3 14} had 0 blank sides. +Point {15 4 10} had 0 blank sides. +Point {17 12 8} had 1 blank sides. +Point {10 9 17} had 0 blank sides. +Point {12 11 2} had 0 blank sides. +Point {5 3 12} had 1 blank sides. +Point {16 5 14} had 4 blank sides. +Point {4 8 7} had 2 blank sides. +Point {5 10 15} had 0 blank sides. +Point {16 9 15} had 1 blank sides. +Point {12 2 8} had 2 blank sides. +Point {14 5 15} had 0 blank sides. +Point {18 9 10} had 2 blank sides. +Point {12 3 15} had 0 blank sides. +Point {10 3 6} had 0 blank sides. +Point {16 6 12} had 1 blank sides. +Point {4 12 8} had 1 blank sides. +Point {3 4 7} had 2 blank sides. +Point {10 2 7} had 0 blank sides. +Point {16 7 15} had 2 blank sides. +Point {10 7 18} had 1 blank sides. +Point {5 12 15} had 0 blank sides. +Point {15 3 12} had 3 blank sides. +Point {8 12 1} had 2 blank sides. +Point {14 7 4} had 2 blank sides. +Point {4 14 10} had 1 blank sides. +Point {16 12 5} had 0 blank sides. +Point {13 10 2} had 2 blank sides. +Point {6 10 18} had 3 blank sides. +Point {10 2 9} had 2 blank sides. +Point {8 13 1} had 4 blank sides. +Point {7 2 8} had 0 blank sides. +Point {11 5 17} had 2 blank sides. +Point {16 7 14} had 1 blank sides. +Point {15 12 16} had 4 blank sides. +Point {11 3 4} had 2 blank sides. +Point {16 5 6} had 0 blank sides. +Point {13 11 16} had 0 blank sides. +Point {4 6 13} had 0 blank sides. +Point {13 16 11} had 2 blank sides. +Point {15 12 5} had 0 blank sides. +Point {5 13 3} had 2 blank sides. +Point {13 13 16} had 1 blank sides. +Point {18 8 11} had 2 blank sides. +Point {8 11 1} had 1 blank sides. +Point {13 11 4} had 3 blank sides. +Point {16 11 13} had 1 blank sides. +Point {7 15 9} had 4 blank sides. +Point {17 11 14} had 3 blank sides. +Point {9 3 12} had 1 blank sides. +Point {2 6 10} had 1 blank sides. +Point {16 7 6} had 0 blank sides. +Point {13 11 3} had 0 blank sides. +Point {9 12 17} had 0 blank sides. +Point {4 15 13} had 2 blank sides. +Point {8 16 11} had 0 blank sides. +Point {12 8 15} had 4 blank sides. +Point {11 9 16} had 1 blank sides. +Point {9 1 10} had 0 blank sides. +Point {7 14 16} had 2 blank sides. +Point {16 9 4} had 1 blank sides. +Point {5 2 6} had 3 blank sides. +Point {11 3 13} had 0 blank sides. +Point {13 17 11} had 1 blank sides. +Point {7 17 14} had 3 blank sides. +Point {5 10 17} had 2 blank sides. +Point {11 4 7} had 3 blank sides. +Point {11 17 9} had 0 blank sides. +Point {6 10 16} had 0 blank sides. +Point {13 9 5} had 5 blank sides. +Point {15 12 10} had 5 blank sides. +Point {16 12 7} had 0 blank sides. +Point {7 4 10} had 5 blank sides. +Point {11 18 8} had 2 blank sides. +Point {12 1 10} had 1 blank sides. +Point {12 10 4} had 5 blank sides. +Point {12 7 16} had 1 blank sides. +Point {4 9 16} had 1 blank sides. +Point {6 6 16} had 0 blank sides. +Point {5 16 5} had 3 blank sides. +Point {6 15 7} had 1 blank sides. +Point {10 15 13} had 2 blank sides. +Point {5 4 13} had 0 blank sides. +Point {11 7 3} had 0 blank sides. +Point {13 5 13} had 1 blank sides. +Point {16 12 10} had 1 blank sides. +Point {15 12 7} had 2 blank sides. +Point {6 16 6} had 0 blank sides. +Point {5 13 4} had 0 blank sides. +Point {3 14 14} had 4 blank sides. +Point {6 17 11} had 1 blank sides. +Point {6 2 6} had 1 blank sides. +Point {5 5 8} had 2 blank sides. +Point {18 8 9} had 2 blank sides. +Point {16 13 7} had 0 blank sides. +Point {12 4 5} had 1 blank sides. +Point {17 5 8} had 4 blank sides. +Point {13 3 5} had 2 blank sides. +Point {14 14 5} had 0 blank sides. +Point {14 13 6} had 1 blank sides. +Point {19 8 10} had 4 blank sides. +Point {11 8 1} had 3 blank sides. +Point {9 4 3} had 2 blank sides. +Point {5 15 11} had 2 blank sides. +Point {8 2 6} had 1 blank sides. +Point {4 13 9} had 1 blank sides. +Point {13 2 12} had 2 blank sides. +Point {3 10 11} had 2 blank sides. +Point {11 12 17} had 0 blank sides. +Point {9 2 8} had 1 blank sides. +Point {2 9 8} had 1 blank sides. +Point {12 8 2} had 1 blank sides. +Point {10 1 7} had 1 blank sides. +Point {6 14 10} had 5 blank sides. +Point {2 7 8} had 2 blank sides. +Point {10 4 10} had 5 blank sides. +Point {9 17 8} had 0 blank sides. +Point {16 8 7} had 1 blank sides. +Point {16 11 6} had 0 blank sides. +Point {5 16 7} had 1 blank sides. +Point {7 10 17} had 1 blank sides. +Point {12 8 16} had 0 blank sides. +Point {12 5 16} had 0 blank sides. +Point {14 3 11} had 0 blank sides. +Point {15 14 5} had 1 blank sides. +Point {6 16 14} had 2 blank sides. +Point {6 8 3} had 0 blank sides. +Point {12 3 14} had 1 blank sides. +Point {14 4 5} had 2 blank sides. +Point {14 10 3} had 0 blank sides. +Point {8 13 2} had 0 blank sides. +Point {7 18 11} had 2 blank sides. +Point {3 16 7} had 4 blank sides. +Point {16 5 5} had 4 blank sides. +Point {6 13 15} had 0 blank sides. +Point {11 4 4} had 0 blank sides. +Point {3 14 9} had 1 blank sides. +Point {17 6 13} had 3 blank sides. +Point {13 8 4} had 2 blank sides. +Point {16 14 10} had 0 blank sides. +Point {3 9 16} had 2 blank sides. +Point {8 6 3} had 2 blank sides. +Point {4 13 12} had 1 blank sides. +Point {11 6 15} had 4 blank sides. +Point {7 3 15} had 3 blank sides. +Point {12 6 6} had 3 blank sides. +Point {10 17 11} had 0 blank sides. +Point {15 11 11} had 3 blank sides. +Point {12 12 15} had 2 blank sides. +Point {14 5 3} had 4 blank sides. +Point {9 3 16} had 3 blank sides. +Point {11 6 5} had 4 blank sides. +Point {5 16 9} had 1 blank sides. +Point {9 5 16} had 0 blank sides. +Point {16 15 7} had 1 blank sides. +Point {13 14 3} had 2 blank sides. +Point {10 12 2} had 0 blank sides. +Point {17 8 13} had 0 blank sides. +Point {14 6 13} had 3 blank sides. +Point {7 6 3} had 0 blank sides. +Point {7 18 7} had 4 blank sides. +Point {14 15 14} had 3 blank sides. +Point {4 12 4} had 1 blank sides. +Point {15 6 10} had 3 blank sides. +Point {8 11 16} had 2 blank sides. +Point {3 10 8} had 2 blank sides. +Point {13 16 13} had 1 blank sides. +Point {9 15 15} had 2 blank sides. +Point {6 8 16} had 1 blank sides. +Point {10 12 1} had 2 blank sides. +Point {14 5 12} had 1 blank sides. +Point {3 7 5} had 0 blank sides. +Point {8 11 3} had 1 blank sides. +Point {14 15 4} had 3 blank sides. +Point {6 8 2} had 3 blank sides. +Point {5 6 6} had 1 blank sides. +Point {13 11 1} had 4 blank sides. +Point {11 16 16} had 4 blank sides. +Point {7 5 4} had 1 blank sides. +Point {16 13 9} had 0 blank sides. +Point {9 4 4} had 1 blank sides. +Point {4 16 8} had 4 blank sides. +Point {3 5 6} had 0 blank sides. +Point {7 15 13} had 1 blank sides. +Point {7 13 15} had 0 blank sides. +Point {7 3 9} had 1 blank sides. +Point {9 9 18} had 2 blank sides. +Point {13 7 4} had 0 blank sides. +Point {8 15 16} had 3 blank sides. +Point {2 5 8} had 3 blank sides. +Point {13 6 16} had 0 blank sides. +Point {4 13 7} had 0 blank sides. +Point {1 9 6} had 3 blank sides. +Point {16 7 16} had 5 blank sides. +Point {12 18 6} had 3 blank sides. +Point {4 6 15} had 0 blank sides. +Point {2 8 10} had 1 blank sides. +Point {3 6 10} had 0 blank sides. +Point {18 7 12} had 4 blank sides. +Point {11 4 2} had 4 blank sides. +Point {3 9 8} had 0 blank sides. +Point {3 13 4} had 4 blank sides. +Point {11 6 1} had 5 blank sides. +Point {4 6 5} had 1 blank sides. +Point {12 7 15} had 3 blank sides. +Point {5 9 16} had 0 blank sides. +Point {14 17 9} had 2 blank sides. +Point {11 4 3} had 1 blank sides. +Point {11 2 6} had 1 blank sides. +Point {16 13 12} had 1 blank sides. +Point {4 15 9} had 1 blank sides. +Point {14 6 7} had 3 blank sides. +Point {11 10 2} had 2 blank sides. +Point {10 9 16} had 1 blank sides. +Point {8 17 12} had 0 blank sides. +Point {13 5 15} had 0 blank sides. +Point {1 7 11} had 3 blank sides. +Point {14 11 15} had 0 blank sides. +Point {18 11 8} had 2 blank sides. +Point {14 3 12} had 2 blank sides. +Point {8 5 14} had 2 blank sides. +Point {6 9 2} had 2 blank sides. +Point {13 4 7} had 1 blank sides. +Point {11 17 13} had 0 blank sides. +Point {10 6 17} had 0 blank sides. +Point {9 14 15} had 1 blank sides. +Point {10 13 2} had 1 blank sides. +Point {10 15 9} had 5 blank sides. +Point {8 16 13} had 0 blank sides. +Point {7 12 2} had 1 blank sides. +Point {14 16 6} had 2 blank sides. +Point {12 7 6} had 5 blank sides. +Point {8 9 2} had 0 blank sides. +Point {8 4 14} had 0 blank sides. +Point {12 8 3} had 1 blank sides. +Point {14 12 4} had 0 blank sides. +Point {4 3 12} had 4 blank sides. +Point {10 3 8} had 4 blank sides. +Point {7 4 16} had 3 blank sides. +Point {9 2 9} had 0 blank sides. +Point {17 6 7} had 2 blank sides. +Point {12 12 16} had 0 blank sides. +Point {9 7 16} had 1 blank sides. +Point {4 6 7} had 0 blank sides. +Point {15 14 4} had 3 blank sides. +Point {3 8 8} had 2 blank sides. +Point {11 5 3} had 0 blank sides. +Point {12 9 1} had 2 blank sides. +Point {5 12 5} had 1 blank sides. +Point {14 10 15} had 0 blank sides. +Point {8 4 6} had 3 blank sides. +Point {14 6 15} had 0 blank sides. +Point {13 3 10} had 0 blank sides. +Point {8 14 15} had 2 blank sides. +Point {9 3 11} had 2 blank sides. +Point {9 0 10} had 5 blank sides. +Point {10 4 16} had 1 blank sides. +Point {5 15 7} had 0 blank sides. +Point {14 6 5} had 1 blank sides. +Point {17 9 13} had 0 blank sides. +Point {5 12 16} had 1 blank sides. +Point {4 11 14} had 0 blank sides. +Point {4 10 13} had 2 blank sides. +Point {1 12 13} had 5 blank sides. +Point {7 17 11} had 0 blank sides. +Point {15 3 11} had 1 blank sides. +Point {16 11 12} had 0 blank sides. +Point {8 9 3} had 1 blank sides. +Point {4 4 10} had 0 blank sides. +Point {8 3 4} had 1 blank sides. +Point {1 12 6} had 6 blank sides. +Point {10 13 1} had 4 blank sides. +Point {3 10 5} had 1 blank sides. +Point {15 12 15} had 2 blank sides. +Point {6 9 3} had 0 blank sides. +Point {17 10 15} had 4 blank sides. +Point {10 2 8} had 0 blank sides. +Point {3 11 11} had 1 blank sides. +Point {7 2 9} had 1 blank sides. +Point {13 4 8} had 3 blank sides. +Point {3 5 5} had 4 blank sides. +Point {14 16 14} had 3 blank sides. +Point {13 7 18} had 5 blank sides. +Point {12 2 7} had 1 blank sides. +Point {8 3 13} had 1 blank sides. +Point {14 14 4} had 1 blank sides. +Point {9 16 10} had 1 blank sides. +Point {17 14 8} had 1 blank sides. +Point {5 17 9} had 2 blank sides. +Point {11 1 11} had 1 blank sides. +Point {13 4 4} had 3 blank sides. +Point {3 10 14} had 1 blank sides. +Point {17 9 10} had 0 blank sides. +Point {4 13 15} had 2 blank sides. +Point {3 4 6} had 3 blank sides. +Point {8 12 2} had 0 blank sides. +Point {14 4 11} had 0 blank sides. +Point {4 9 8} had 4 blank sides. +Point {16 6 10} had 0 blank sides. +Point {3 10 4} had 2 blank sides. +Point {6 7 17} had 1 blank sides. +Point {10 1 12} had 2 blank sides. +Point {11 3 10} had 3 blank sides. +Point {9 8 1} had 2 blank sides. +Point {17 9 6} had 2 blank sides. +Point {5 5 16} had 3 blank sides. +Point {13 12 3} had 0 blank sides. +Point {18 10 12} had 2 blank sides. +Point {18 13 12} had 5 blank sides. +Point {9 16 13} had 1 blank sides. +Point {6 6 17} had 1 blank sides. +Point {9 16 3} had 4 blank sides. +Point {14 9 2} had 3 blank sides. +Point {7 5 14} had 2 blank sides. +Point {13 9 13} had 6 blank sides. +Point {14 10 17} had 2 blank sides. +Point {5 17 12} had 3 blank sides. +Point {15 15 7} had 0 blank sides. +Point {4 5 7} had 0 blank sides. +Point {2 10 12} had 0 blank sides. +Point {7 2 7} had 1 blank sides. +Point {9 6 1} had 4 blank sides. +Point {13 10 18} had 3 blank sides. +Point {6 10 2} had 0 blank sides. +Point {9 12 2} had 1 blank sides. +Point {11 13 2} had 1 blank sides. +Point {15 17 11} had 4 blank sides. +Point {8 8 1} had 1 blank sides. +Point {6 16 8} had 0 blank sides. +Point {7 11 2} had 0 blank sides. +Point {12 3 9} had 3 blank sides. +Point {2 6 12} had 1 blank sides. +Point {2 14 12} had 1 blank sides. +Point {14 5 10} had 3 blank sides. +Point {11 4 6} had 0 blank sides. +Point {5 3 11} had 1 blank sides. +Point {16 7 13} had 2 blank sides. +Point {12 6 4} had 1 blank sides. +Point {8 7 14} had 5 blank sides. +Point {15 7 15} had 2 blank sides. +Point {17 11 8} had 0 blank sides. +Point {5 7 4} had 0 blank sides. +Point {8 5 5} had 3 blank sides. +Point {8 7 15} had 2 blank sides. +Point {3 11 5} had 1 blank sides. +Point {7 7 16} had 0 blank sides. +Point {15 7 14} had 1 blank sides. +Point {10 5 5} had 2 blank sides. +Point {2 8 9} had 2 blank sides. +Point {10 14 14} had 3 blank sides. +Point {7 10 3} had 1 blank sides. +Point {8 5 4} had 2 blank sides. +Point {13 13 4} had 1 blank sides. +Point {17 7 11} had 1 blank sides. +Point {13 10 16} had 0 blank sides. +Point {5 14 10} had 3 blank sides. +Point {3 10 6} had 0 blank sides. +Point {10 5 4} had 1 blank sides. +Point {8 7 6} had 5 blank sides. +Point {12 13 17} had 3 blank sides. +Point {13 15 5} had 0 blank sides. +Point {15 7 6} had 1 blank sides. +Point {9 11 2} had 0 blank sides. +Point {7 15 4} had 0 blank sides. +Point {17 12 9} had 1 blank sides. +Point {6 1 9} had 5 blank sides. +Point {8 16 10} had 2 blank sides. +Point {1 12 10} had 2 blank sides. +Point {6 15 15} had 1 blank sides. +Point {15 11 4} had 0 blank sides. +Point {8 4 3} had 2 blank sides. +Found 3390 blank sides in base solid. +Min point {0 0 1} +Max point {19 19 18} +Filling in internal point {2 8 8} +Filling in internal point {2 12 13} +Filling in internal point {3 8 9} +Filling in internal point {3 8 10} +Filling in internal point {3 9 11} +Filling in internal point {3 10 9} +Filling in internal point {3 10 10} +Filling in internal point {3 11 10} +Filling in internal point {3 12 12} +Filling in internal point {4 6 11} +Filling in internal point {4 7 8} +Filling in internal point {4 7 9} +Filling in internal point {4 7 10} +Filling in internal point {4 8 9} +Filling in internal point {4 8 10} +Filling in internal point {4 8 11} +Filling in internal point {4 9 7} +Filling in internal point {4 9 9} +Filling in internal point {4 9 10} +Filling in internal point {4 9 11} +Filling in internal point {4 10 8} +Filling in internal point {4 10 9} +Filling in internal point {4 10 10} +Filling in internal point {4 10 12} +Filling in internal point {4 11 7} +Filling in internal point {4 11 8} +Filling in internal point {4 11 9} +Filling in internal point {4 11 10} +Filling in internal point {4 11 12} +Filling in internal point {4 12 10} +Filling in internal point {4 12 11} +Filling in internal point {4 13 10} +Filling in internal point {4 13 11} +Filling in internal point {5 6 8} +Filling in internal point {5 6 9} +Filling in internal point {5 6 10} +Filling in internal point {5 6 11} +Filling in internal point {5 6 12} +Filling in internal point {5 7 7} +Filling in internal point {5 7 8} +Filling in internal point {5 7 9} +Filling in internal point {5 7 10} +Filling in internal point {5 7 11} +Filling in internal point {5 7 12} +Filling in internal point {5 7 13} +Filling in internal point {5 8 6} +Filling in internal point {5 8 7} +Filling in internal point {5 8 8} +Filling in internal point {5 8 9} +Filling in internal point {5 8 10} +Filling in internal point {5 8 11} +Filling in internal point {5 8 12} +Filling in internal point {5 8 13} +Filling in internal point {5 9 6} +Filling in internal point {5 9 8} +Filling in internal point {5 9 9} +Filling in internal point {5 9 10} +Filling in internal point {5 9 11} +Filling in internal point {5 9 12} +Filling in internal point {5 9 13} +Filling in internal point {5 10 5} +Filling in internal point {5 10 6} +Filling in internal point {5 10 8} +Filling in internal point {5 10 9} +Filling in internal point {5 10 10} +Filling in internal point {5 10 11} +Filling in internal point {5 10 12} +Filling in internal point {5 10 13} +Filling in internal point {5 11 7} +Filling in internal point {5 11 8} +Filling in internal point {5 11 9} +Filling in internal point {5 11 10} +Filling in internal point {5 11 11} +Filling in internal point {5 11 12} +Filling in internal point {5 12 6} +Filling in internal point {5 12 7} +Filling in internal point {5 12 9} +Filling in internal point {5 12 10} +Filling in internal point {5 12 11} +Filling in internal point {5 12 12} +Filling in internal point {5 12 13} +Filling in internal point {5 13 8} +Filling in internal point {5 13 10} +Filling in internal point {5 13 11} +Filling in internal point {5 14 9} +Filling in internal point {5 14 11} +Filling in internal point {6 4 7} +Filling in internal point {6 4 10} +Filling in internal point {6 5 7} +Filling in internal point {6 5 8} +Filling in internal point {6 5 9} +Filling in internal point {6 5 10} +Filling in internal point {6 5 11} +Filling in internal point {6 6 4} +Filling in internal point {6 6 6} +Filling in internal point {6 6 7} +Filling in internal point {6 6 8} +Filling in internal point {6 6 9} +Filling in internal point {6 6 10} +Filling in internal point {6 6 11} +Filling in internal point {6 7 6} +Filling in internal point {6 7 7} +Filling in internal point {6 7 8} +Filling in internal point {6 7 9} +Filling in internal point {6 7 10} +Filling in internal point {6 7 11} +Filling in internal point {6 7 12} +Filling in internal point {6 7 13} +Filling in internal point {6 7 14} +Filling in internal point {6 8 5} +Filling in internal point {6 8 6} +Filling in internal point {6 8 7} +Filling in internal point {6 8 8} +Filling in internal point {6 8 9} +Filling in internal point {6 8 10} +Filling in internal point {6 8 11} +Filling in internal point {6 8 12} +Filling in internal point {6 8 13} +Filling in internal point {6 8 15} +Filling in internal point {6 9 5} +Filling in internal point {6 9 6} +Filling in internal point {6 9 7} +Filling in internal point {6 9 8} +Filling in internal point {6 9 9} +Filling in internal point {6 9 10} +Filling in internal point {6 9 11} +Filling in internal point {6 9 12} +Filling in internal point {6 9 13} +Filling in internal point {6 9 14} +Filling in internal point {6 9 15} +Filling in internal point {6 10 5} +Filling in internal point {6 10 6} +Filling in internal point {6 10 7} +Filling in internal point {6 10 8} +Filling in internal point {6 10 9} +Filling in internal point {6 10 10} +Filling in internal point {6 10 11} +Filling in internal point {6 10 12} +Filling in internal point {6 10 13} +Filling in internal point {6 11 4} +Filling in internal point {6 11 5} +Filling in internal point {6 11 6} +Filling in internal point {6 11 7} +Filling in internal point {6 11 8} +Filling in internal point {6 11 9} +Filling in internal point {6 11 10} +Filling in internal point {6 11 11} +Filling in internal point {6 11 12} +Filling in internal point {6 11 13} +Filling in internal point {6 11 14} +Filling in internal point {6 12 6} +Filling in internal point {6 12 8} +Filling in internal point {6 12 9} +Filling in internal point {6 12 10} +Filling in internal point {6 12 11} +Filling in internal point {6 12 13} +Filling in internal point {6 13 5} +Filling in internal point {6 13 6} +Filling in internal point {6 13 7} +Filling in internal point {6 13 8} +Filling in internal point {6 13 9} +Filling in internal point {6 13 10} +Filling in internal point {6 13 11} +Filling in internal point {6 13 12} +Filling in internal point {6 13 13} +Filling in internal point {6 14 7} +Filling in internal point {6 14 8} +Filling in internal point {6 14 9} +Filling in internal point {6 14 11} +Filling in internal point {6 14 12} +Filling in internal point {6 14 13} +Filling in internal point {6 15 9} +Filling in internal point {6 15 10} +Filling in internal point {6 15 11} +Filling in internal point {7 4 8} +Filling in internal point {7 4 9} +Filling in internal point {7 4 11} +Filling in internal point {7 5 5} +Filling in internal point {7 5 6} +Filling in internal point {7 5 7} +Filling in internal point {7 5 8} +Filling in internal point {7 5 9} +Filling in internal point {7 5 10} +Filling in internal point {7 5 11} +Filling in internal point {7 5 13} +Filling in internal point {7 6 5} +Filling in internal point {7 6 6} +Filling in internal point {7 6 7} +Filling in internal point {7 6 8} +Filling in internal point {7 6 9} +Filling in internal point {7 6 10} +Filling in internal point {7 6 11} +Filling in internal point {7 6 12} +Filling in internal point {7 6 14} +Filling in internal point {7 7 4} +Filling in internal point {7 7 5} +Filling in internal point {7 7 6} +Filling in internal point {7 7 7} +Filling in internal point {7 7 8} +Filling in internal point {7 7 9} +Filling in internal point {7 7 10} +Filling in internal point {7 7 11} +Filling in internal point {7 7 12} +Filling in internal point {7 7 13} +Filling in internal point {7 7 14} +Filling in internal point {7 8 4} +Filling in internal point {7 8 6} +Filling in internal point {7 8 7} +Filling in internal point {7 8 8} +Filling in internal point {7 8 9} +Filling in internal point {7 8 10} +Filling in internal point {7 8 11} +Filling in internal point {7 8 12} +Filling in internal point {7 8 13} +Filling in internal point {7 8 14} +Filling in internal point {7 8 15} +Filling in internal point {7 9 4} +Filling in internal point {7 9 5} +Filling in internal point {7 9 6} +Filling in internal point {7 9 7} +Filling in internal point {7 9 8} +Filling in internal point {7 9 9} +Filling in internal point {7 9 10} +Filling in internal point {7 9 11} +Filling in internal point {7 9 12} +Filling in internal point {7 9 13} +Filling in internal point {7 9 14} +Filling in internal point {7 10 4} +Filling in internal point {7 10 5} +Filling in internal point {7 10 6} +Filling in internal point {7 10 7} +Filling in internal point {7 10 8} +Filling in internal point {7 10 9} +Filling in internal point {7 10 10} +Filling in internal point {7 10 11} +Filling in internal point {7 10 12} +Filling in internal point {7 10 13} +Filling in internal point {7 10 14} +Filling in internal point {7 11 4} +Filling in internal point {7 11 5} +Filling in internal point {7 11 6} +Filling in internal point {7 11 7} +Filling in internal point {7 11 8} +Filling in internal point {7 11 9} +Filling in internal point {7 11 10} +Filling in internal point {7 11 11} +Filling in internal point {7 11 12} +Filling in internal point {7 11 13} +Filling in internal point {7 11 14} +Filling in internal point {7 11 16} +Filling in internal point {7 12 5} +Filling in internal point {7 12 6} +Filling in internal point {7 12 7} +Filling in internal point {7 12 8} +Filling in internal point {7 12 9} +Filling in internal point {7 12 10} +Filling in internal point {7 12 11} +Filling in internal point {7 12 12} +Filling in internal point {7 12 13} +Filling in internal point {7 13 6} +Filling in internal point {7 13 7} +Filling in internal point {7 13 8} +Filling in internal point {7 13 9} +Filling in internal point {7 13 10} +Filling in internal point {7 13 11} +Filling in internal point {7 13 12} +Filling in internal point {7 13 13} +Filling in internal point {7 14 6} +Filling in internal point {7 14 7} +Filling in internal point {7 14 8} +Filling in internal point {7 14 9} +Filling in internal point {7 14 10} +Filling in internal point {7 14 11} +Filling in internal point {7 14 12} +Filling in internal point {7 15 8} +Filling in internal point {7 15 10} +Filling in internal point {7 15 12} +Filling in internal point {8 4 7} +Filling in internal point {8 4 8} +Filling in internal point {8 4 9} +Filling in internal point {8 4 10} +Filling in internal point {8 4 11} +Filling in internal point {8 5 6} +Filling in internal point {8 5 7} +Filling in internal point {8 5 8} +Filling in internal point {8 5 9} +Filling in internal point {8 5 10} +Filling in internal point {8 5 11} +Filling in internal point {8 6 4} +Filling in internal point {8 6 5} +Filling in internal point {8 6 7} +Filling in internal point {8 6 8} +Filling in internal point {8 6 9} +Filling in internal point {8 6 10} +Filling in internal point {8 6 11} +Filling in internal point {8 6 12} +Filling in internal point {8 6 13} +Filling in internal point {8 6 14} +Filling in internal point {8 7 4} +Filling in internal point {8 7 5} +Filling in internal point {8 7 7} +Filling in internal point {8 7 8} +Filling in internal point {8 7 9} +Filling in internal point {8 7 10} +Filling in internal point {8 7 11} +Filling in internal point {8 7 12} +Filling in internal point {8 7 13} +Filling in internal point {8 8 4} +Filling in internal point {8 8 5} +Filling in internal point {8 8 6} +Filling in internal point {8 8 7} +Filling in internal point {8 8 8} +Filling in internal point {8 8 9} +Filling in internal point {8 8 10} +Filling in internal point {8 8 11} +Filling in internal point {8 8 12} +Filling in internal point {8 8 13} +Filling in internal point {8 8 14} +Filling in internal point {8 8 15} +Filling in internal point {8 9 4} +Filling in internal point {8 9 5} +Filling in internal point {8 9 6} +Filling in internal point {8 9 7} +Filling in internal point {8 9 8} +Filling in internal point {8 9 9} +Filling in internal point {8 9 10} +Filling in internal point {8 9 11} +Filling in internal point {8 9 12} +Filling in internal point {8 9 13} +Filling in internal point {8 9 14} +Filling in internal point {8 9 15} +Filling in internal point {8 10 4} +Filling in internal point {8 10 5} +Filling in internal point {8 10 6} +Filling in internal point {8 10 7} +Filling in internal point {8 10 8} +Filling in internal point {8 10 9} +Filling in internal point {8 10 10} +Filling in internal point {8 10 11} +Filling in internal point {8 10 12} +Filling in internal point {8 10 13} +Filling in internal point {8 10 14} +Filling in internal point {8 11 4} +Filling in internal point {8 11 5} +Filling in internal point {8 11 6} +Filling in internal point {8 11 7} +Filling in internal point {8 11 8} +Filling in internal point {8 11 9} +Filling in internal point {8 11 10} +Filling in internal point {8 11 11} +Filling in internal point {8 11 12} +Filling in internal point {8 11 13} +Filling in internal point {8 11 14} +Filling in internal point {8 11 15} +Filling in internal point {8 12 5} +Filling in internal point {8 12 6} +Filling in internal point {8 12 7} +Filling in internal point {8 12 8} +Filling in internal point {8 12 9} +Filling in internal point {8 12 10} +Filling in internal point {8 12 11} +Filling in internal point {8 12 12} +Filling in internal point {8 12 13} +Filling in internal point {8 12 14} +Filling in internal point {8 12 15} +Filling in internal point {8 13 5} +Filling in internal point {8 13 6} +Filling in internal point {8 13 7} +Filling in internal point {8 13 8} +Filling in internal point {8 13 9} +Filling in internal point {8 13 10} +Filling in internal point {8 13 11} +Filling in internal point {8 13 12} +Filling in internal point {8 13 13} +Filling in internal point {8 13 14} +Filling in internal point {8 14 6} +Filling in internal point {8 14 7} +Filling in internal point {8 14 8} +Filling in internal point {8 14 9} +Filling in internal point {8 14 10} +Filling in internal point {8 14 11} +Filling in internal point {8 14 12} +Filling in internal point {8 14 13} +Filling in internal point {8 14 14} +Filling in internal point {8 15 8} +Filling in internal point {8 15 10} +Filling in internal point {8 15 12} +Filling in internal point {8 15 15} +Filling in internal point {8 17 10} +Filling in internal point {9 3 8} +Filling in internal point {9 4 6} +Filling in internal point {9 4 7} +Filling in internal point {9 4 8} +Filling in internal point {9 4 10} +Filling in internal point {9 4 11} +Filling in internal point {9 4 12} +Filling in internal point {9 5 4} +Filling in internal point {9 5 6} +Filling in internal point {9 5 7} +Filling in internal point {9 5 8} +Filling in internal point {9 5 9} +Filling in internal point {9 5 10} +Filling in internal point {9 5 11} +Filling in internal point {9 5 12} +Filling in internal point {9 5 14} +Filling in internal point {9 6 3} +Filling in internal point {9 6 5} +Filling in internal point {9 6 6} +Filling in internal point {9 6 7} +Filling in internal point {9 6 8} +Filling in internal point {9 6 9} +Filling in internal point {9 6 10} +Filling in internal point {9 6 11} +Filling in internal point {9 6 12} +Filling in internal point {9 6 13} +Filling in internal point {9 7 5} +Filling in internal point {9 7 6} +Filling in internal point {9 7 7} +Filling in internal point {9 7 8} +Filling in internal point {9 7 9} +Filling in internal point {9 7 10} +Filling in internal point {9 7 11} +Filling in internal point {9 7 12} +Filling in internal point {9 7 13} +Filling in internal point {9 7 14} +Filling in internal point {9 7 15} +Filling in internal point {9 8 4} +Filling in internal point {9 8 5} +Filling in internal point {9 8 6} +Filling in internal point {9 8 7} +Filling in internal point {9 8 8} +Filling in internal point {9 8 9} +Filling in internal point {9 8 10} +Filling in internal point {9 8 11} +Filling in internal point {9 8 12} +Filling in internal point {9 8 13} +Filling in internal point {9 8 14} +Filling in internal point {9 8 15} +Filling in internal point {9 9 4} +Filling in internal point {9 9 5} +Filling in internal point {9 9 6} +Filling in internal point {9 9 7} +Filling in internal point {9 9 8} +Filling in internal point {9 9 9} +Filling in internal point {9 9 10} +Filling in internal point {9 9 11} +Filling in internal point {9 9 12} +Filling in internal point {9 9 13} +Filling in internal point {9 9 14} +Filling in internal point {9 9 15} +Filling in internal point {9 10 4} +Filling in internal point {9 10 5} +Filling in internal point {9 10 6} +Filling in internal point {9 10 7} +Filling in internal point {9 10 8} +Filling in internal point {9 10 9} +Filling in internal point {9 10 10} +Filling in internal point {9 10 11} +Filling in internal point {9 10 12} +Filling in internal point {9 10 13} +Filling in internal point {9 10 14} +Filling in internal point {9 10 15} +Filling in internal point {9 10 16} +Filling in internal point {9 11 4} +Filling in internal point {9 11 5} +Filling in internal point {9 11 6} +Filling in internal point {9 11 7} +Filling in internal point {9 11 8} +Filling in internal point {9 11 9} +Filling in internal point {9 11 10} +Filling in internal point {9 11 11} +Filling in internal point {9 11 12} +Filling in internal point {9 11 13} +Filling in internal point {9 11 14} +Filling in internal point {9 11 15} +Filling in internal point {9 12 3} +Filling in internal point {9 12 4} +Filling in internal point {9 12 6} +Filling in internal point {9 12 7} +Filling in internal point {9 12 8} +Filling in internal point {9 12 9} +Filling in internal point {9 12 10} +Filling in internal point {9 12 11} +Filling in internal point {9 12 12} +Filling in internal point {9 12 13} +Filling in internal point {9 12 14} +Filling in internal point {9 13 5} +Filling in internal point {9 13 6} +Filling in internal point {9 13 7} +Filling in internal point {9 13 8} +Filling in internal point {9 13 9} +Filling in internal point {9 13 10} +Filling in internal point {9 13 11} +Filling in internal point {9 13 13} +Filling in internal point {9 13 14} +Filling in internal point {9 14 4} +Filling in internal point {9 14 7} +Filling in internal point {9 14 8} +Filling in internal point {9 14 9} +Filling in internal point {9 14 10} +Filling in internal point {9 14 11} +Filling in internal point {9 14 12} +Filling in internal point {9 14 13} +Filling in internal point {9 14 14} +Filling in internal point {9 15 7} +Filling in internal point {9 15 9} +Filling in internal point {9 15 10} +Filling in internal point {9 15 11} +Filling in internal point {9 16 7} +Filling in internal point {9 16 12} +Filling in internal point {10 3 9} +Filling in internal point {10 3 11} +Filling in internal point {10 4 7} +Filling in internal point {10 4 8} +Filling in internal point {10 4 9} +Filling in internal point {10 4 11} +Filling in internal point {10 4 12} +Filling in internal point {10 4 13} +Filling in internal point {10 5 6} +Filling in internal point {10 5 7} +Filling in internal point {10 5 8} +Filling in internal point {10 5 9} +Filling in internal point {10 5 10} +Filling in internal point {10 5 11} +Filling in internal point {10 5 12} +Filling in internal point {10 5 14} +Filling in internal point {10 6 5} +Filling in internal point {10 6 6} +Filling in internal point {10 6 7} +Filling in internal point {10 6 8} +Filling in internal point {10 6 9} +Filling in internal point {10 6 10} +Filling in internal point {10 6 11} +Filling in internal point {10 6 12} +Filling in internal point {10 6 13} +Filling in internal point {10 6 14} +Filling in internal point {10 6 15} +Filling in internal point {10 7 4} +Filling in internal point {10 7 5} +Filling in internal point {10 7 6} +Filling in internal point {10 7 7} +Filling in internal point {10 7 8} +Filling in internal point {10 7 9} +Filling in internal point {10 7 10} +Filling in internal point {10 7 11} +Filling in internal point {10 7 12} +Filling in internal point {10 7 13} +Filling in internal point {10 7 14} +Filling in internal point {10 7 15} +Filling in internal point {10 8 4} +Filling in internal point {10 8 5} +Filling in internal point {10 8 6} +Filling in internal point {10 8 7} +Filling in internal point {10 8 8} +Filling in internal point {10 8 9} +Filling in internal point {10 8 10} +Filling in internal point {10 8 11} +Filling in internal point {10 8 12} +Filling in internal point {10 8 13} +Filling in internal point {10 8 14} +Filling in internal point {10 9 5} +Filling in internal point {10 9 6} +Filling in internal point {10 9 7} +Filling in internal point {10 9 8} +Filling in internal point {10 9 9} +Filling in internal point {10 9 10} +Filling in internal point {10 9 11} +Filling in internal point {10 9 12} +Filling in internal point {10 9 13} +Filling in internal point {10 9 14} +Filling in internal point {10 9 15} +Filling in internal point {10 10 5} +Filling in internal point {10 10 6} +Filling in internal point {10 10 7} +Filling in internal point {10 10 8} +Filling in internal point {10 10 9} +Filling in internal point {10 10 10} +Filling in internal point {10 10 11} +Filling in internal point {10 10 12} +Filling in internal point {10 10 13} +Filling in internal point {10 10 14} +Filling in internal point {10 10 15} +Filling in internal point {10 11 3} +Filling in internal point {10 11 4} +Filling in internal point {10 11 5} +Filling in internal point {10 11 6} +Filling in internal point {10 11 7} +Filling in internal point {10 11 8} +Filling in internal point {10 11 9} +Filling in internal point {10 11 10} +Filling in internal point {10 11 11} +Filling in internal point {10 11 12} +Filling in internal point {10 11 13} +Filling in internal point {10 11 14} +Filling in internal point {10 11 16} +Filling in internal point {10 12 5} +Filling in internal point {10 12 6} +Filling in internal point {10 12 7} +Filling in internal point {10 12 8} +Filling in internal point {10 12 9} +Filling in internal point {10 12 10} +Filling in internal point {10 12 11} +Filling in internal point {10 12 12} +Filling in internal point {10 12 13} +Filling in internal point {10 12 15} +Filling in internal point {10 13 7} +Filling in internal point {10 13 8} +Filling in internal point {10 13 9} +Filling in internal point {10 13 10} +Filling in internal point {10 13 11} +Filling in internal point {10 13 12} +Filling in internal point {10 13 13} +Filling in internal point {10 13 14} +Filling in internal point {10 13 15} +Filling in internal point {10 14 6} +Filling in internal point {10 14 7} +Filling in internal point {10 14 8} +Filling in internal point {10 14 9} +Filling in internal point {10 14 10} +Filling in internal point {10 14 11} +Filling in internal point {10 14 12} +Filling in internal point {10 14 13} +Filling in internal point {10 15 10} +Filling in internal point {10 15 11} +Filling in internal point {10 15 12} +Filling in internal point {10 16 5} +Filling in internal point {10 16 8} +Filling in internal point {10 16 9} +Filling in internal point {10 16 12} +Filling in internal point {11 2 10} +Filling in internal point {11 2 11} +Filling in internal point {11 2 14} +Filling in internal point {11 3 8} +Filling in internal point {11 3 9} +Filling in internal point {11 4 8} +Filling in internal point {11 4 9} +Filling in internal point {11 4 10} +Filling in internal point {11 4 11} +Filling in internal point {11 4 12} +Filling in internal point {11 5 7} +Filling in internal point {11 5 8} +Filling in internal point {11 5 9} +Filling in internal point {11 5 10} +Filling in internal point {11 5 11} +Filling in internal point {11 5 12} +Filling in internal point {11 6 2} +Filling in internal point {11 6 4} +Filling in internal point {11 6 6} +Filling in internal point {11 6 7} +Filling in internal point {11 6 8} +Filling in internal point {11 6 9} +Filling in internal point {11 6 10} +Filling in internal point {11 6 11} +Filling in internal point {11 6 12} +Filling in internal point {11 6 13} +Filling in internal point {11 6 14} +Filling in internal point {11 7 5} +Filling in internal point {11 7 6} +Filling in internal point {11 7 7} +Filling in internal point {11 7 8} +Filling in internal point {11 7 9} +Filling in internal point {11 7 10} +Filling in internal point {11 7 11} +Filling in internal point {11 7 12} +Filling in internal point {11 7 13} +Filling in internal point {11 7 14} +Filling in internal point {11 7 15} +Filling in internal point {11 7 16} +Filling in internal point {11 8 4} +Filling in internal point {11 8 5} +Filling in internal point {11 8 6} +Filling in internal point {11 8 7} +Filling in internal point {11 8 8} +Filling in internal point {11 8 9} +Filling in internal point {11 8 10} +Filling in internal point {11 8 11} +Filling in internal point {11 8 12} +Filling in internal point {11 8 13} +Filling in internal point {11 8 14} +Filling in internal point {11 8 15} +Filling in internal point {11 9 5} +Filling in internal point {11 9 6} +Filling in internal point {11 9 7} +Filling in internal point {11 9 8} +Filling in internal point {11 9 9} +Filling in internal point {11 9 10} +Filling in internal point {11 9 11} +Filling in internal point {11 9 12} +Filling in internal point {11 9 13} +Filling in internal point {11 9 14} +Filling in internal point {11 9 15} +Filling in internal point {11 10 3} +Filling in internal point {11 10 4} +Filling in internal point {11 10 5} +Filling in internal point {11 10 6} +Filling in internal point {11 10 7} +Filling in internal point {11 10 8} +Filling in internal point {11 10 9} +Filling in internal point {11 10 10} +Filling in internal point {11 10 11} +Filling in internal point {11 10 12} +Filling in internal point {11 10 13} +Filling in internal point {11 10 14} +Filling in internal point {11 10 15} +Filling in internal point {11 11 4} +Filling in internal point {11 11 5} +Filling in internal point {11 11 6} +Filling in internal point {11 11 7} +Filling in internal point {11 11 8} +Filling in internal point {11 11 9} +Filling in internal point {11 11 10} +Filling in internal point {11 11 11} +Filling in internal point {11 11 12} +Filling in internal point {11 11 13} +Filling in internal point {11 11 14} +Filling in internal point {11 12 4} +Filling in internal point {11 12 5} +Filling in internal point {11 12 6} +Filling in internal point {11 12 7} +Filling in internal point {11 12 8} +Filling in internal point {11 12 9} +Filling in internal point {11 12 10} +Filling in internal point {11 12 11} +Filling in internal point {11 12 12} +Filling in internal point {11 12 13} +Filling in internal point {11 12 14} +Filling in internal point {11 13 4} +Filling in internal point {11 13 6} +Filling in internal point {11 13 7} +Filling in internal point {11 13 8} +Filling in internal point {11 13 9} +Filling in internal point {11 13 10} +Filling in internal point {11 13 11} +Filling in internal point {11 13 12} +Filling in internal point {11 13 13} +Filling in internal point {11 13 14} +Filling in internal point {11 14 6} +Filling in internal point {11 14 7} +Filling in internal point {11 14 8} +Filling in internal point {11 14 9} +Filling in internal point {11 14 10} +Filling in internal point {11 14 11} +Filling in internal point {11 14 12} +Filling in internal point {11 15 6} +Filling in internal point {11 15 7} +Filling in internal point {11 15 9} +Filling in internal point {11 15 10} +Filling in internal point {11 15 11} +Filling in internal point {11 16 11} +Filling in internal point {12 2 9} +Filling in internal point {12 4 8} +Filling in internal point {12 4 9} +Filling in internal point {12 4 10} +Filling in internal point {12 4 11} +Filling in internal point {12 4 12} +Filling in internal point {12 5 5} +Filling in internal point {12 5 7} +Filling in internal point {12 5 8} +Filling in internal point {12 5 9} +Filling in internal point {12 5 10} +Filling in internal point {12 5 11} +Filling in internal point {12 5 12} +Filling in internal point {12 6 7} +Filling in internal point {12 6 8} +Filling in internal point {12 6 9} +Filling in internal point {12 6 10} +Filling in internal point {12 6 11} +Filling in internal point {12 6 13} +Filling in internal point {12 6 14} +Filling in internal point {12 6 15} +Filling in internal point {12 7 5} +Filling in internal point {12 7 7} +Filling in internal point {12 7 8} +Filling in internal point {12 7 9} +Filling in internal point {12 7 10} +Filling in internal point {12 7 11} +Filling in internal point {12 7 12} +Filling in internal point {12 7 13} +Filling in internal point {12 7 14} +Filling in internal point {12 8 4} +Filling in internal point {12 8 6} +Filling in internal point {12 8 7} +Filling in internal point {12 8 8} +Filling in internal point {12 8 9} +Filling in internal point {12 8 10} +Filling in internal point {12 8 11} +Filling in internal point {12 8 12} +Filling in internal point {12 8 13} +Filling in internal point {12 8 14} +Filling in internal point {12 9 4} +Filling in internal point {12 9 5} +Filling in internal point {12 9 6} +Filling in internal point {12 9 7} +Filling in internal point {12 9 8} +Filling in internal point {12 9 9} +Filling in internal point {12 9 10} +Filling in internal point {12 9 11} +Filling in internal point {12 9 12} +Filling in internal point {12 9 13} +Filling in internal point {12 9 14} +Filling in internal point {12 9 15} +Filling in internal point {12 10 5} +Filling in internal point {12 10 6} +Filling in internal point {12 10 7} +Filling in internal point {12 10 8} +Filling in internal point {12 10 9} +Filling in internal point {12 10 10} +Filling in internal point {12 10 11} +Filling in internal point {12 10 12} +Filling in internal point {12 10 13} +Filling in internal point {12 10 14} +Filling in internal point {12 10 15} +Filling in internal point {12 10 17} +Filling in internal point {12 11 4} +Filling in internal point {12 11 5} +Filling in internal point {12 11 6} +Filling in internal point {12 11 7} +Filling in internal point {12 11 8} +Filling in internal point {12 11 9} +Filling in internal point {12 11 10} +Filling in internal point {12 11 11} +Filling in internal point {12 11 12} +Filling in internal point {12 11 13} +Filling in internal point {12 11 14} +Filling in internal point {12 12 5} +Filling in internal point {12 12 6} +Filling in internal point {12 12 7} +Filling in internal point {12 12 8} +Filling in internal point {12 12 9} +Filling in internal point {12 12 10} +Filling in internal point {12 12 11} +Filling in internal point {12 12 12} +Filling in internal point {12 12 13} +Filling in internal point {12 12 14} +Filling in internal point {12 13 5} +Filling in internal point {12 13 6} +Filling in internal point {12 13 7} +Filling in internal point {12 13 8} +Filling in internal point {12 13 9} +Filling in internal point {12 13 10} +Filling in internal point {12 13 11} +Filling in internal point {12 13 12} +Filling in internal point {12 13 13} +Filling in internal point {12 13 15} +Filling in internal point {12 14 6} +Filling in internal point {12 14 7} +Filling in internal point {12 14 8} +Filling in internal point {12 14 9} +Filling in internal point {12 14 10} +Filling in internal point {12 14 11} +Filling in internal point {12 14 12} +Filling in internal point {12 14 13} +Filling in internal point {12 15 7} +Filling in internal point {12 15 11} +Filling in internal point {12 15 12} +Filling in internal point {13 4 9} +Filling in internal point {13 5 7} +Filling in internal point {13 5 8} +Filling in internal point {13 5 9} +Filling in internal point {13 5 10} +Filling in internal point {13 5 11} +Filling in internal point {13 6 6} +Filling in internal point {13 6 7} +Filling in internal point {13 6 8} +Filling in internal point {13 6 9} +Filling in internal point {13 6 10} +Filling in internal point {13 6 11} +Filling in internal point {13 6 12} +Filling in internal point {13 6 13} +Filling in internal point {13 7 6} +Filling in internal point {13 7 7} +Filling in internal point {13 7 8} +Filling in internal point {13 7 9} +Filling in internal point {13 7 10} +Filling in internal point {13 7 11} +Filling in internal point {13 7 12} +Filling in internal point {13 7 13} +Filling in internal point {13 7 14} +Filling in internal point {13 8 5} +Filling in internal point {13 8 6} +Filling in internal point {13 8 8} +Filling in internal point {13 8 9} +Filling in internal point {13 8 10} +Filling in internal point {13 8 11} +Filling in internal point {13 8 12} +Filling in internal point {13 8 13} +Filling in internal point {13 8 14} +Filling in internal point {13 8 15} +Filling in internal point {13 9 2} +Filling in internal point {13 9 6} +Filling in internal point {13 9 7} +Filling in internal point {13 9 8} +Filling in internal point {13 9 9} +Filling in internal point {13 9 10} +Filling in internal point {13 9 11} +Filling in internal point {13 9 12} +Filling in internal point {13 9 14} +Filling in internal point {13 10 4} +Filling in internal point {13 10 5} +Filling in internal point {13 10 6} +Filling in internal point {13 10 7} +Filling in internal point {13 10 8} +Filling in internal point {13 10 9} +Filling in internal point {13 10 10} +Filling in internal point {13 10 11} +Filling in internal point {13 10 12} +Filling in internal point {13 10 13} +Filling in internal point {13 10 14} +Filling in internal point {13 11 5} +Filling in internal point {13 11 6} +Filling in internal point {13 11 7} +Filling in internal point {13 11 8} +Filling in internal point {13 11 9} +Filling in internal point {13 11 10} +Filling in internal point {13 11 11} +Filling in internal point {13 11 12} +Filling in internal point {13 11 13} +Filling in internal point {13 11 14} +Filling in internal point {13 12 5} +Filling in internal point {13 12 6} +Filling in internal point {13 12 7} +Filling in internal point {13 12 8} +Filling in internal point {13 12 9} +Filling in internal point {13 12 10} +Filling in internal point {13 12 11} +Filling in internal point {13 12 12} +Filling in internal point {13 12 13} +Filling in internal point {13 12 14} +Filling in internal point {13 13 6} +Filling in internal point {13 13 7} +Filling in internal point {13 13 8} +Filling in internal point {13 13 9} +Filling in internal point {13 13 10} +Filling in internal point {13 13 11} +Filling in internal point {13 13 14} +Filling in internal point {13 14 4} +Filling in internal point {13 14 12} +Filling in internal point {13 15 11} +Filling in internal point {13 15 12} +Filling in internal point {13 16 12} +Filling in internal point {14 5 9} +Filling in internal point {14 6 3} +Filling in internal point {14 6 8} +Filling in internal point {14 6 9} +Filling in internal point {14 6 10} +Filling in internal point {14 6 11} +Filling in internal point {14 6 12} +Filling in internal point {14 7 5} +Filling in internal point {14 7 6} +Filling in internal point {14 7 7} +Filling in internal point {14 7 8} +Filling in internal point {14 7 9} +Filling in internal point {14 7 10} +Filling in internal point {14 7 11} +Filling in internal point {14 7 13} +Filling in internal point {14 8 7} +Filling in internal point {14 8 8} +Filling in internal point {14 8 9} +Filling in internal point {14 8 10} +Filling in internal point {14 8 11} +Filling in internal point {14 8 12} +Filling in internal point {14 9 5} +Filling in internal point {14 9 7} +Filling in internal point {14 9 8} +Filling in internal point {14 9 9} +Filling in internal point {14 9 10} +Filling in internal point {14 9 11} +Filling in internal point {14 9 12} +Filling in internal point {14 9 13} +Filling in internal point {14 9 14} +Filling in internal point {14 10 6} +Filling in internal point {14 10 7} +Filling in internal point {14 10 8} +Filling in internal point {14 10 9} +Filling in internal point {14 10 10} +Filling in internal point {14 10 11} +Filling in internal point {14 10 12} +Filling in internal point {14 10 13} +Filling in internal point {14 11 6} +Filling in internal point {14 11 8} +Filling in internal point {14 11 9} +Filling in internal point {14 11 10} +Filling in internal point {14 11 11} +Filling in internal point {14 11 12} +Filling in internal point {14 12 8} +Filling in internal point {14 12 9} +Filling in internal point {14 12 10} +Filling in internal point {14 12 11} +Filling in internal point {14 12 13} +Filling in internal point {14 13 8} +Filling in internal point {14 13 9} +Filling in internal point {14 13 10} +Filling in internal point {14 13 11} +Filling in internal point {14 15 13} +Filling in internal point {15 6 8} +Filling in internal point {15 6 11} +Filling in internal point {15 7 10} +Filling in internal point {15 7 11} +Filling in internal point {15 7 13} +Filling in internal point {15 8 7} +Filling in internal point {15 8 9} +Filling in internal point {15 8 10} +Filling in internal point {15 8 11} +Filling in internal point {15 8 15} +Filling in internal point {15 9 7} +Filling in internal point {15 9 8} +Filling in internal point {15 9 9} +Filling in internal point {15 9 10} +Filling in internal point {15 9 11} +Filling in internal point {15 10 8} +Filling in internal point {15 10 9} +Filling in internal point {15 10 10} +Filling in internal point {15 10 12} +Filling in internal point {15 11 7} +Filling in internal point {15 11 9} +Filling in internal point {15 11 10} +Filling in internal point {15 11 13} +Filling in internal point {15 12 8} +Filling in internal point {15 12 9} +Filling in internal point {15 12 11} +Filling in internal point {15 13 10} +Filling in internal point {16 7 12} +Filling in internal point {16 8 12} +Filling in internal point {16 9 9} +Filling in internal point {16 9 12} +Filling in internal point {16 10 7} +Filling in internal point {16 11 9} +Filling in internal point {16 11 10} +Filling in internal point {16 15 11} +Point {10 5 13} had 0 blank sides. +Point {6 7 3} had 1 blank sides. +Point {16 6 13} had 1 blank sides. +Point {5 14 7} had 0 blank sides. +Point {7 10 10} had 0 blank sides. +Point {11 12 14} had 0 blank sides. +Point {13 6 8} had 0 blank sides. +Point {17 12 7} had 1 blank sides. +Point {14 7 12} had 0 blank sides. +Point {4 8 14} had 0 blank sides. +Point {6 2 11} had 0 blank sides. +Point {11 15 4} had 0 blank sides. +Point {4 12 10} had 0 blank sides. +Point {5 8 10} had 0 blank sides. +Point {8 4 9} had 0 blank sides. +Point {12 7 4} had 0 blank sides. +Point {7 9 3} had 0 blank sides. +Point {11 9 4} had 0 blank sides. +Point {16 9 16} had 3 blank sides. +Point {8 17 5} had 1 blank sides. +Point {14 8 14} had 0 blank sides. +Point {6 12 9} had 0 blank sides. +Point {8 12 3} had 0 blank sides. +Point {6 8 17} had 0 blank sides. +Point {10 17 8} had 0 blank sides. +Point {3 9 9} had 0 blank sides. +Point {1 10 9} had 1 blank sides. +Point {7 8 4} had 0 blank sides. +Point {9 11 13} had 0 blank sides. +Point {16 14 8} had 0 blank sides. +Point {7 4 13} had 0 blank sides. +Point {3 8 16} had 2 blank sides. +Point {14 2 9} had 3 blank sides. +Point {12 11 12} had 0 blank sides. +Point {8 13 4} had 0 blank sides. +Point {17 12 10} had 0 blank sides. +Point {4 12 7} had 0 blank sides. +Point {15 5 8} had 0 blank sides. +Point {1 12 9} had 2 blank sides. +Point {11 6 2} had 0 blank sides. +Point {11 8 14} had 0 blank sides. +Point {8 10 1} had 1 blank sides. +Point {4 9 4} had 0 blank sides. +Point {3 14 12} had 1 blank sides. +Point {2 7 5} had 4 blank sides. +Point {10 15 15} had 0 blank sides. +Point {7 13 10} had 0 blank sides. +Point {7 14 10} had 0 blank sides. +Point {12 7 7} had 0 blank sides. +Point {7 9 2} had 0 blank sides. +Point {16 5 9} had 1 blank sides. +Point {4 7 9} had 0 blank sides. +Point {9 7 11} had 0 blank sides. +Point {10 4 13} had 0 blank sides. +Point {15 10 10} had 0 blank sides. +Point {6 14 16} had 0 blank sides. +Point {2 14 11} had 1 blank sides. +Point {15 10 6} had 0 blank sides. +Point {9 8 4} had 0 blank sides. +Point {5 2 11} had 2 blank sides. +Point {3 8 15} had 0 blank sides. +Point {11 9 12} had 0 blank sides. +Point {11 11 9} had 0 blank sides. +Point {14 16 9} had 0 blank sides. +Point {5 14 13} had 0 blank sides. +Point {6 13 11} had 0 blank sides. +Point {8 10 13} had 0 blank sides. +Point {10 6 4} had 0 blank sides. +Point {16 13 8} had 0 blank sides. +Point {14 15 7} had 0 blank sides. +Point {10 10 2} had 1 blank sides. +Point {10 3 15} had 1 blank sides. +Point {12 3 6} had 0 blank sides. +Point {15 13 13} had 0 blank sides. +Point {7 18 9} had 2 blank sides. +Point {1 10 12} had 4 blank sides. +Point {5 10 10} had 0 blank sides. +Point {6 9 10} had 0 blank sides. +Point {8 11 15} had 0 blank sides. +Point {10 11 9} had 0 blank sides. +Point {12 9 11} had 0 blank sides. +Point {4 11 11} had 0 blank sides. +Point {5 10 6} had 0 blank sides. +Point {7 11 6} had 0 blank sides. +Point {8 9 10} had 0 blank sides. +Point {9 9 5} had 0 blank sides. +Point {9 12 14} had 0 blank sides. +Point {10 7 12} had 0 blank sides. +Point {16 15 14} had 5 blank sides. +Point {11 14 16} had 1 blank sides. +Point {5 8 5} had 0 blank sides. +Point {8 12 18} had 3 blank sides. +Point {15 6 13} had 0 blank sides. +Point {7 16 12} had 0 blank sides. +Point {8 17 6} had 1 blank sides. +Point {4 9 12} had 0 blank sides. +Point {15 16 8} had 2 blank sides. +Point {4 13 10} had 0 blank sides. +Point {8 8 4} had 0 blank sides. +Point {2 11 11} had 0 blank sides. +Point {12 14 3} had 1 blank sides. +Point {10 2 13} had 2 blank sides. +Point {4 14 8} had 0 blank sides. +Point {16 8 9} had 0 blank sides. +Point {12 10 15} had 0 blank sides. +Point {13 13 14} had 0 blank sides. +Point {7 5 12} had 0 blank sides. +Point {3 11 14} had 2 blank sides. +Point {14 11 16} had 1 blank sides. +Point {3 9 4} had 0 blank sides. +Point {12 17 9} had 0 blank sides. +Point {15 15 13} had 3 blank sides. +Point {10 11 12} had 0 blank sides. +Point {14 16 7} had 0 blank sides. +Point {16 7 11} had 0 blank sides. +Point {13 17 8} had 0 blank sides. +Point {13 4 5} had 0 blank sides. +Point {14 5 4} had 1 blank sides. +Point {12 15 4} had 1 blank sides. +Point {10 7 16} had 0 blank sides. +Point {6 5 16} had 1 blank sides. +Point {13 14 6} had 0 blank sides. +Point {14 11 3} had 1 blank sides. +Point {16 12 4} had 2 blank sides. +Point {11 13 16} had 0 blank sides. +Point {8 9 13} had 0 blank sides. +Point {11 4 11} had 0 blank sides. +Point {11 8 10} had 0 blank sides. +Point {18 10 13} had 3 blank sides. +Point {14 11 4} had 0 blank sides. +Point {5 3 13} had 1 blank sides. +Point {8 13 3} had 0 blank sides. +Point {3 15 8} had 2 blank sides. +Point {4 9 9} had 0 blank sides. +Point {6 9 13} had 0 blank sides. +Point {11 16 11} had 0 blank sides. +Point {12 13 7} had 0 blank sides. +Point {7 12 3} had 0 blank sides. +Point {16 10 6} had 0 blank sides. +Point {10 5 10} had 0 blank sides. +Point {10 16 12} had 0 blank sides. +Point {17 7 13} had 2 blank sides. +Point {13 3 12} had 0 blank sides. +Point {16 10 10} had 0 blank sides. +Point {6 8 8} had 0 blank sides. +Point {8 5 10} had 0 blank sides. +Point {9 11 6} had 0 blank sides. +Point {13 6 9} had 0 blank sides. +Point {15 12 4} had 0 blank sides. +Point {2 10 13} had 2 blank sides. +Point {3 6 13} had 1 blank sides. +Point {9 14 17} had 3 blank sides. +Point {5 8 14} had 0 blank sides. +Point {4 8 10} had 0 blank sides. +Point {11 11 12} had 0 blank sides. +Point {12 16 12} had 0 blank sides. +Point {14 5 5} had 0 blank sides. +Point {11 9 9} had 0 blank sides. +Point {14 8 10} had 0 blank sides. +Point {12 1 6} had 4 blank sides. +Point {5 6 14} had 0 blank sides. +Point {8 17 14} had 2 blank sides. +Point {16 14 11} had 1 blank sides. +Point {3 15 11} had 1 blank sides. +Point {5 6 3} had 2 blank sides. +Point {11 6 17} had 1 blank sides. +Point {3 3 10} had 4 blank sides. +Point {9 12 9} had 0 blank sides. +Point {5 9 7} had 0 blank sides. +Point {16 8 15} had 2 blank sides. +Point {15 11 9} had 0 blank sides. +Point {15 5 10} had 0 blank sides. +Point {12 5 6} had 0 blank sides. +Point {3 7 16} had 3 blank sides. +Point {9 8 13} had 0 blank sides. +Point {9 10 5} had 0 blank sides. +Point {10 9 7} had 0 blank sides. +Point {12 10 9} had 0 blank sides. +Point {8 8 13} had 0 blank sides. +Point {14 10 16} had 0 blank sides. +Point {10 6 1} had 3 blank sides. +Point {7 8 3} had 0 blank sides. +Point {9 16 5} had 0 blank sides. +Point {9 1 6} had 2 blank sides. +Point {4 5 15} had 1 blank sides. +Point {7 11 14} had 0 blank sides. +Point {10 10 6} had 0 blank sides. +Point {11 13 6} had 0 blank sides. +Point {7 1 11} had 2 blank sides. +Point {12 11 18} had 3 blank sides. +Point {6 17 12} had 2 blank sides. +Point {5 10 2} had 3 blank sides. +Point {10 10 10} had 0 blank sides. +Point {8 9 17} had 0 blank sides. +Point {6 4 6} had 0 blank sides. +Point {5 2 8} had 2 blank sides. +Point {7 13 4} had 0 blank sides. +Point {8 15 9} had 0 blank sides. +Point {6 9 17} had 0 blank sides. +Point {16 7 5} had 1 blank sides. +Point {13 8 17} had 2 blank sides. +Point {3 8 9} had 0 blank sides. +Point {8 13 10} had 0 blank sides. +Point {10 13 8} had 0 blank sides. +Point {15 7 9} had 0 blank sides. +Point {10 17 12} had 1 blank sides. +Point {6 11 3} had 0 blank sides. +Point {8 14 3} had 1 blank sides. +Point {9 10 14} had 0 blank sides. +Point {11 3 6} had 0 blank sides. +Point {3 11 6} had 0 blank sides. +Point {5 6 12} had 0 blank sides. +Point {6 11 4} had 0 blank sides. +Point {9 5 6} had 0 blank sides. +Point {4 13 3} had 4 blank sides. +Point {6 11 16} had 1 blank sides. +Point {14 9 8} had 0 blank sides. +Point {11 6 11} had 0 blank sides. +Point {7 9 1} had 2 blank sides. +Point {13 11 17} had 1 blank sides. +Point {16 15 6} had 3 blank sides. +Point {12 12 3} had 0 blank sides. +Point {9 3 15} had 0 blank sides. +Point {8 7 9} had 0 blank sides. +Point {9 10 4} had 0 blank sides. +Point {11 14 11} had 0 blank sides. +Point {9 11 14} had 0 blank sides. +Point {15 8 3} had 2 blank sides. +Point {19 7 10} had 4 blank sides. +Point {10 7 2} had 1 blank sides. +Point {13 7 17} had 1 blank sides. +Point {13 9 4} had 0 blank sides. +Point {7 2 6} had 1 blank sides. +Point {6 14 11} had 0 blank sides. +Point {13 12 6} had 0 blank sides. +Point {5 11 16} had 1 blank sides. +Point {13 10 17} had 0 blank sides. +Point {5 14 15} had 1 blank sides. +Point {15 9 8} had 0 blank sides. +Point {6 3 14} had 2 blank sides. +Point {5 11 4} had 0 blank sides. +Point {15 11 12} had 0 blank sides. +Point {2 9 7} had 0 blank sides. +Point {7 4 6} had 0 blank sides. +Point {9 7 5} had 0 blank sides. +Point {11 5 11} had 0 blank sides. +Point {3 7 12} had 0 blank sides. +Point {12 15 5} had 0 blank sides. +Point {10 15 16} had 2 blank sides. +Point {11 18 10} had 3 blank sides. +Point {10 4 14} had 0 blank sides. +Point {16 9 5} had 1 blank sides. +Point {5 11 3} had 0 blank sides. +Point {1 9 9} had 1 blank sides. +Point {5 4 12} had 0 blank sides. +Point {13 12 13} had 0 blank sides. +Point {10 13 11} had 0 blank sides. +Point {9 17 10} had 0 blank sides. +Point {2 11 10} had 0 blank sides. +Point {3 13 7} had 0 blank sides. +Point {4 12 2} had 6 blank sides. +Point {7 3 12} had 0 blank sides. +Point {10 11 18} had 1 blank sides. +Point {8 5 8} had 0 blank sides. +Point {2 7 11} had 0 blank sides. +Point {15 16 11} had 0 blank sides. +Point {10 12 4} had 0 blank sides. +Point {9 9 16} had 0 blank sides. +Point {6 5 3} had 3 blank sides. +Point {9 5 4} had 0 blank sides. +Point {10 5 8} had 0 blank sides. +Point {8 9 11} had 0 blank sides. +Point {7 4 14} had 0 blank sides. +Point {7 14 4} had 0 blank sides. +Point {8 4 16} had 0 blank sides. +Point {5 15 5} had 1 blank sides. +Point {4 11 10} had 0 blank sides. +Point {5 7 10} had 0 blank sides. +Point {6 7 7} had 0 blank sides. +Point {11 5 7} had 0 blank sides. +Point {12 9 10} had 0 blank sides. +Point {16 4 11} had 1 blank sides. +Point {3 8 11} had 0 blank sides. +Point {10 4 6} had 0 blank sides. +Point {7 13 3} had 0 blank sides. +Point {8 6 18} had 3 blank sides. +Point {5 13 12} had 0 blank sides. +Point {6 9 11} had 0 blank sides. +Point {8 1 8} had 2 blank sides. +Point {9 16 9} had 0 blank sides. +Point {12 7 3} had 0 blank sides. +Point {4 10 17} had 4 blank sides. +Point {7 15 3} had 1 blank sides. +Point {5 14 9} had 0 blank sides. +Point {9 10 8} had 0 blank sides. +Point {9 17 7} had 0 blank sides. +Point {13 9 12} had 0 blank sides. +Point {11 7 16} had 0 blank sides. +Point {15 5 13} had 1 blank sides. +Point {6 10 3} had 0 blank sides. +Point {15 8 13} had 0 blank sides. +Point {11 11 18} had 1 blank sides. +Point {9 13 17} had 1 blank sides. +Point {6 7 4} had 0 blank sides. +Point {14 15 10} had 0 blank sides. +Point {13 8 8} had 0 blank sides. +Point {5 12 3} had 2 blank sides. +Point {5 16 12} had 0 blank sides. +Point {10 3 5} had 0 blank sides. +Point {9 5 5} had 0 blank sides. +Point {9 14 3} had 0 blank sides. +Point {5 3 14} had 3 blank sides. +Point {13 2 7} had 2 blank sides. +Point {3 11 13} had 0 blank sides. +Point {7 10 2} had 0 blank sides. +Point {14 3 9} had 0 blank sides. +Point {4 11 7} had 0 blank sides. +Point {10 14 10} had 0 blank sides. +Point {13 9 9} had 0 blank sides. +Point {9 8 3} had 0 blank sides. +Point {6 5 9} had 0 blank sides. +Point {6 4 14} had 0 blank sides. +Point {2 11 7} had 1 blank sides. +Point {15 13 5} had 0 blank sides. +Point {4 3 9} had 1 blank sides. +Point {3 10 7} had 0 blank sides. +Point {11 7 12} had 0 blank sides. +Point {13 7 8} had 0 blank sides. +Point {12 5 4} had 0 blank sides. +Point {4 14 11} had 0 blank sides. +Point {5 13 9} had 0 blank sides. +Point {6 15 6} had 0 blank sides. +Point {8 3 7} had 0 blank sides. +Point {9 2 6} had 0 blank sides. +Point {12 10 12} had 0 blank sides. +Point {8 2 8} had 0 blank sides. +Point {11 15 5} had 0 blank sides. +Point {11 16 8} had 0 blank sides. +Point {7 9 15} had 0 blank sides. +Point {10 6 13} had 0 blank sides. +Point {12 8 7} had 0 blank sides. +Point {13 17 12} had 1 blank sides. +Point {2 14 8} had 3 blank sides. +Point {11 12 9} had 0 blank sides. +Point {12 5 5} had 0 blank sides. +Point {12 9 13} had 0 blank sides. +Point {7 8 13} had 0 blank sides. +Point {15 6 4} had 1 blank sides. +Point {10 9 18} had 1 blank sides. +Point {6 2 8} had 1 blank sides. +Point {5 14 14} had 1 blank sides. +Point {8 8 3} had 0 blank sides. +Point {2 12 10} had 0 blank sides. +Point {11 2 9} had 0 blank sides. +Point {9 16 7} had 0 blank sides. +Point {4 13 4} had 0 blank sides. +Point {14 13 14} had 0 blank sides. +Point {6 12 14} had 0 blank sides. +Point {3 5 8} had 0 blank sides. +Point {18 8 12} had 2 blank sides. +Point {14 1 10} had 4 blank sides. +Point {14 6 16} had 1 blank sides. +Point {17 10 13} had 0 blank sides. +Point {2 5 6} had 5 blank sides. +Point {10 16 8} had 0 blank sides. +Point {14 14 7} had 0 blank sides. +Point {12 16 8} had 0 blank sides. +Point {11 2 7} had 0 blank sides. +Point {8 13 17} had 3 blank sides. +Point {4 10 15} had 0 blank sides. +Point {15 13 9} had 0 blank sides. +Point {9 2 4} had 3 blank sides. +Point {10 14 3} had 1 blank sides. +Point {5 8 16} had 0 blank sides. +Point {3 16 11} had 3 blank sides. +Point {5 7 17} had 2 blank sides. +Point {5 13 5} had 0 blank sides. +Point {2 6 8} had 0 blank sides. +Point {11 11 8} had 0 blank sides. +Point {14 10 13} had 0 blank sides. +Point {11 1 6} had 2 blank sides. +Point {12 11 15} had 0 blank sides. +Point {12 17 8} had 1 blank sides. +Point {13 2 9} had 1 blank sides. +Point {3 8 10} had 0 blank sides. +Point {8 9 8} had 0 blank sides. +Point {13 12 5} had 0 blank sides. +Point {10 11 8} had 0 blank sides. +Point {13 17 9} had 0 blank sides. +Point {13 12 16} had 0 blank sides. +Point {4 2 9} had 4 blank sides. +Point {15 15 5} had 2 blank sides. +Point {17 9 12} had 1 blank sides. +Point {13 16 5} had 1 blank sides. +Point {6 9 8} had 0 blank sides. +Point {11 17 11} had 0 blank sides. +Point {12 4 13} had 0 blank sides. +Point {2 13 12} had 2 blank sides. +Point {1 11 10} had 1 blank sides. +Point {4 4 8} had 0 blank sides. +Point {9 6 11} had 0 blank sides. +Point {14 2 10} had 1 blank sides. +Point {4 8 15} had 0 blank sides. +Point {15 14 7} had 0 blank sides. +Point {8 16 5} had 0 blank sides. +Point {11 4 16} had 1 blank sides. +Point {10 15 8} had 0 blank sides. +Point {11 9 3} had 0 blank sides. +Point {17 9 9} had 1 blank sides. +Point {14 9 17} had 3 blank sides. +Point {7 9 4} had 0 blank sides. +Point {14 12 11} had 0 blank sides. +Point {7 6 4} had 0 blank sides. +Point {14 8 15} had 0 blank sides. +Point {15 5 12} had 0 blank sides. +Point {12 3 16} had 3 blank sides. +Point {7 12 9} had 0 blank sides. +Point {10 10 8} had 0 blank sides. +Point {15 13 12} had 0 blank sides. +Point {8 3 8} had 0 blank sides. +Point {10 18 9} had 2 blank sides. +Point {9 15 6} had 0 blank sides. +Point {1 13 9} had 4 blank sides. +Point {12 12 14} had 0 blank sides. +Point {13 12 10} had 0 blank sides. +Point {13 4 10} had 0 blank sides. +Point {7 16 8} had 0 blank sides. +Point {15 16 12} had 3 blank sides. +Point {16 11 4} had 1 blank sides. +Point {7 7 5} had 0 blank sides. +Point {12 7 9} had 0 blank sides. +Point {13 11 13} had 0 blank sides. +Point {13 5 7} had 0 blank sides. +Point {4 9 3} had 1 blank sides. +Point {14 4 13} had 1 blank sides. +Point {9 3 14} had 0 blank sides. +Point {7 4 3} had 3 blank sides. +Point {2 15 12} had 4 blank sides. +Point {10 13 6} had 0 blank sides. +Point {9 14 10} had 0 blank sides. +Point {13 6 7} had 0 blank sides. +Point {9 6 17} had 0 blank sides. +Point {5 16 11} had 0 blank sides. +Point {3 7 13} had 1 blank sides. +Point {1 11 7} had 4 blank sides. +Point {8 6 4} had 0 blank sides. +Point {11 8 15} had 0 blank sides. +Point {13 13 15} had 0 blank sides. +Point {4 15 8} had 0 blank sides. +Point {2 13 9} had 1 blank sides. +Point {9 9 14} had 0 blank sides. +Point {13 12 7} had 0 blank sides. +Point {13 9 1} had 4 blank sides. +Point {13 15 7} had 0 blank sides. +Point {4 5 9} had 0 blank sides. +Point {11 13 8} had 0 blank sides. +Point {12 9 6} had 0 blank sides. +Point {11 8 2} had 0 blank sides. +Point {10 17 9} had 0 blank sides. +Point {4 7 4} had 0 blank sides. +Point {3 8 14} had 1 blank sides. +Point {12 11 8} had 0 blank sides. +Point {13 5 11} had 0 blank sides. +Point {8 11 9} had 0 blank sides. +Point {12 14 4} had 0 blank sides. +Point {4 4 7} had 0 blank sides. +Point {10 11 15} had 0 blank sides. +Point {10 4 3} had 1 blank sides. +Point {14 12 12} had 0 blank sides. +Point {6 13 16} had 1 blank sides. +Point {7 9 12} had 0 blank sides. +Point {9 5 14} had 0 blank sides. +Point {10 12 8} had 0 blank sides. +Point {6 5 15} had 0 blank sides. +Point {10 3 4} had 1 blank sides. +Point {15 14 13} had 2 blank sides. +Point {8 16 7} had 0 blank sides. +Point {12 2 6} had 1 blank sides. +Point {11 8 16} had 0 blank sides. +Point {6 6 13} had 0 blank sides. +Point {8 15 14} had 0 blank sides. +Point {11 9 2} had 0 blank sides. +Point {1 8 13} had 5 blank sides. +Point {10 2 12} had 0 blank sides. +Point {12 3 12} had 0 blank sides. +Point {8 14 10} had 0 blank sides. +Point {9 13 10} had 0 blank sides. +Point {2 6 9} had 1 blank sides. +Point {4 7 7} had 0 blank sides. +Point {14 8 2} had 3 blank sides. +Point {13 6 5} had 0 blank sides. +Point {8 7 3} had 0 blank sides. +Point {7 15 2} had 4 blank sides. +Point {9 4 10} had 0 blank sides. +Point {13 16 9} had 0 blank sides. +Point {12 14 2} had 1 blank sides. +Point {13 6 15} had 0 blank sides. +Point {5 7 8} had 0 blank sides. +Point {8 10 11} had 0 blank sides. +Point {10 10 14} had 0 blank sides. +Point {13 13 7} had 0 blank sides. +Point {5 12 14} had 0 blank sides. +Point {14 8 16} had 1 blank sides. +Point {10 10 4} had 0 blank sides. +Point {12 6 10} had 0 blank sides. +Point {4 8 16} had 1 blank sides. +Point {11 11 15} had 0 blank sides. +Point {15 7 3} had 2 blank sides. +Point {9 10 10} had 0 blank sides. +Point {3 8 5} had 1 blank sides. +Point {4 15 12} had 1 blank sides. +Point {14 14 13} had 0 blank sides. +Point {16 4 9} had 1 blank sides. +Point {13 9 15} had 0 blank sides. +Point {8 16 9} had 0 blank sides. +Point {2 10 11} had 0 blank sides. +Point {11 7 13} had 0 blank sides. +Point {11 10 3} had 0 blank sides. +Point {11 13 11} had 0 blank sides. +Point {12 13 14} had 0 blank sides. +Point {8 12 9} had 0 blank sides. +Point {9 10 6} had 0 blank sides. +Point {10 8 4} had 0 blank sides. +Point {13 3 6} had 1 blank sides. +Point {5 4 5} had 2 blank sides. +Point {7 15 10} had 0 blank sides. +Point {13 11 6} had 0 blank sides. +Point {3 9 3} had 3 blank sides. +Point {12 5 14} had 0 blank sides. +Point {4 6 16} had 3 blank sides. +Point {13 10 15} had 0 blank sides. +Point {2 12 13} had 1 blank sides. +Point {15 9 11} had 0 blank sides. +Point {5 8 15} had 0 blank sides. +Point {9 18 5} had 5 blank sides. +Point {17 9 4} had 4 blank sides. +Point {7 9 9} had 0 blank sides. +Point {14 9 11} had 0 blank sides. +Point {6 17 9} had 0 blank sides. +Point {18 10 11} had 2 blank sides. +Point {2 8 8} had 0 blank sides. +Point {8 11 12} had 0 blank sides. +Point {13 7 10} had 0 blank sides. +Point {6 12 3} had 0 blank sides. +Point {15 4 6} had 2 blank sides. +Point {10 10 5} had 0 blank sides. +Point {10 15 12} had 0 blank sides. +Point {13 16 7} had 0 blank sides. +Point {12 6 2} had 2 blank sides. +Point {7 17 13} had 2 blank sides. +Point {13 14 11} had 0 blank sides. +Point {10 3 13} had 0 blank sides. +Point {7 5 8} had 0 blank sides. +Point {11 15 15} had 0 blank sides. +Point {7 12 17} had 2 blank sides. +Point {15 14 12} had 0 blank sides. +Point {15 6 12} had 0 blank sides. +Point {8 4 4} had 0 blank sides. +Point {8 7 12} had 0 blank sides. +Point {10 13 14} had 0 blank sides. +Point {15 16 9} had 2 blank sides. +Point {11 3 5} had 1 blank sides. +Point {7 10 15} had 0 blank sides. +Point {10 10 12} had 0 blank sides. +Point {10 6 16} had 0 blank sides. +Point {12 17 10} had 1 blank sides. +Point {2 9 11} had 0 blank sides. +Point {6 9 18} had 3 blank sides. +Point {12 7 13} had 0 blank sides. +Point {13 6 11} had 0 blank sides. +Point {15 7 12} had 0 blank sides. +Point {5 11 13} had 0 blank sides. +Point {8 9 18} had 2 blank sides. +Point {8 18 12} had 2 blank sides. +Point {9 16 11} had 0 blank sides. +Point {3 7 9} had 0 blank sides. +Point {15 15 11} had 0 blank sides. +Point {14 16 8} had 0 blank sides. +Point {6 16 15} had 3 blank sides. +Point {11 10 16} had 0 blank sides. +Point {17 13 9} had 1 blank sides. +Point {3 9 14} had 0 blank sides. +Point {6 11 13} had 0 blank sides. +Point {7 12 11} had 0 blank sides. +Point {11 5 10} had 0 blank sides. +Point {11 12 1} had 2 blank sides. +Point {10 8 17} had 0 blank sides. +Point {10 15 4} had 0 blank sides. +Point {13 14 10} had 0 blank sides. +Point {6 3 12} had 0 blank sides. +Point {14 12 9} had 0 blank sides. +Point {8 4 8} had 0 blank sides. +Point {12 17 7} had 1 blank sides. +Point {12 4 12} had 0 blank sides. +Point {3 6 12} had 0 blank sides. +Point {1 6 8} had 5 blank sides. +Point {13 6 17} had 3 blank sides. +Point {15 6 3} had 1 blank sides. +Point {11 1 10} had 1 blank sides. +Point {10 8 18} had 2 blank sides. +Point {5 8 7} had 0 blank sides. +Point {3 4 8} had 2 blank sides. +Point {6 12 15} had 0 blank sides. +Point {15 5 11} had 0 blank sides. +Point {15 6 14} had 0 blank sides. +Point {10 11 2} had 1 blank sides. +Point {16 12 6} had 0 blank sides. +Point {18 12 11} had 3 blank sides. +Point {15 13 4} had 2 blank sides. +Point {8 14 11} had 0 blank sides. +Point {9 6 7} had 0 blank sides. +Point {9 9 2} had 0 blank sides. +Point {16 12 13} had 0 blank sides. +Point {11 14 3} had 0 blank sides. +Point {14 14 12} had 0 blank sides. +Point {8 2 4} had 3 blank sides. +Point {6 10 13} had 0 blank sides. +Point {6 18 9} had 3 blank sides. +Point {12 14 16} had 2 blank sides. +Point {15 16 7} had 2 blank sides. +Point {14 15 9} had 0 blank sides. +Point {7 7 6} had 0 blank sides. +Point {9 13 2} had 1 blank sides. +Point {4 13 5} had 1 blank sides. +Point {7 7 15} had 0 blank sides. +Point {8 7 16} had 0 blank sides. +Point {11 10 18} had 1 blank sides. +Point {15 12 6} had 0 blank sides. +Point {6 14 3} had 2 blank sides. +Point {9 4 14} had 0 blank sides. +Point {3 8 6} had 0 blank sides. +Point {14 4 12} had 0 blank sides. +Point {8 12 12} had 0 blank sides. +Point {11 2 12} had 0 blank sides. +Point {13 4 6} had 0 blank sides. +Point {17 14 7} had 3 blank sides. +Point {15 12 13} had 0 blank sides. +Point {4 11 15} had 1 blank sides. +Point {5 9 11} had 0 blank sides. +Point {11 11 2} had 0 blank sides. +Point {15 11 5} had 0 blank sides. +Point {7 7 14} had 0 blank sides. +Point {7 9 5} had 0 blank sides. +Point {8 11 11} had 0 blank sides. +Point {10 9 11} had 0 blank sides. +Point {14 13 11} had 0 blank sides. +Point {2 8 4} had 4 blank sides. +Point {17 7 7} had 0 blank sides. +Point {10 5 2} had 3 blank sides. +Point {9 6 15} had 0 blank sides. +Point {18 12 12} had 3 blank sides. +Point {3 12 14} had 2 blank sides. +Point {8 12 17} had 0 blank sides. +Point {13 5 12} had 0 blank sides. +Point {8 4 7} had 0 blank sides. +Point {9 6 5} had 0 blank sides. +Point {18 9 13} had 3 blank sides. +Point {8 5 2} had 4 blank sides. +Point {2 7 10} had 0 blank sides. +Point {9 9 3} had 0 blank sides. +Point {15 16 5} had 4 blank sides. +Point {11 5 13} had 0 blank sides. +Point {9 4 6} had 0 blank sides. +Point {11 7 9} had 0 blank sides. +Point {11 17 12} had 0 blank sides. +Point {8 16 12} had 0 blank sides. +Point {13 4 14} had 1 blank sides. +Point {5 11 6} had 0 blank sides. +Point {18 8 10} had 0 blank sides. +Point {8 3 10} had 0 blank sides. +Point {5 7 11} had 0 blank sides. +Point {7 15 14} had 0 blank sides. +Point {12 15 15} had 1 blank sides. +Point {4 9 14} had 0 blank sides. +Point {7 14 6} had 0 blank sides. +Point {8 13 13} had 0 blank sides. +Point {3 11 3} had 4 blank sides. +Point {8 15 2} had 4 blank sides. +Point {8 12 11} had 0 blank sides. +Point {10 8 8} had 0 blank sides. +Point {3 11 4} had 1 blank sides. +Point {15 5 7} had 0 blank sides. +Point {8 17 13} had 1 blank sides. +Point {16 10 15} had 1 blank sides. +Point {7 13 5} had 0 blank sides. +Point {6 11 6} had 0 blank sides. +Point {12 13 6} had 0 blank sides. +Point {16 6 14} had 2 blank sides. +Point {14 11 14} had 0 blank sides. +Point {3 11 16} had 4 blank sides. +Point {3 8 12} had 0 blank sides. +Point {2 10 7} had 0 blank sides. +Point {6 10 1} had 4 blank sides. +Point {9 14 11} had 0 blank sides. +Point {5 6 4} had 0 blank sides. +Point {16 6 3} had 4 blank sides. +Point {13 18 6} had 4 blank sides. +Point {11 9 14} had 0 blank sides. +Point {15 10 15} had 0 blank sides. +Point {2 11 8} had 1 blank sides. +Point {14 13 8} had 0 blank sides. +Point {13 15 6} had 0 blank sides. +Point {9 18 12} had 3 blank sides. +Point {9 12 1} had 2 blank sides. +Point {10 10 9} had 0 blank sides. +Point {11 8 7} had 0 blank sides. +Point {13 3 13} had 2 blank sides. +Point {5 9 17} had 2 blank sides. +Point {4 11 8} had 0 blank sides. +Point {8 15 10} had 0 blank sides. +Point {12 14 8} had 0 blank sides. +Point {15 4 10} had 0 blank sides. +Point {17 12 8} had 1 blank sides. +Point {10 9 17} had 0 blank sides. +Point {18 13 7} had 5 blank sides. +Point {7 3 14} had 0 blank sides. +Point {8 10 7} had 0 blank sides. +Point {4 8 7} had 0 blank sides. +Point {5 10 15} had 0 blank sides. +Point {16 9 15} had 1 blank sides. +Point {12 11 2} had 0 blank sides. +Point {5 3 12} had 1 blank sides. +Point {16 5 14} had 4 blank sides. +Point {9 15 7} had 0 blank sides. +Point {12 2 8} had 1 blank sides. +Point {7 12 12} had 0 blank sides. +Point {14 8 7} had 0 blank sides. +Point {14 5 15} had 0 blank sides. +Point {18 9 10} had 2 blank sides. +Point {8 9 7} had 0 blank sides. +Point {12 10 6} had 0 blank sides. +Point {12 10 10} had 0 blank sides. +Point {4 12 8} had 0 blank sides. +Point {3 4 7} had 2 blank sides. +Point {10 2 7} had 0 blank sides. +Point {12 3 15} had 0 blank sides. +Point {10 3 6} had 0 blank sides. +Point {16 6 12} had 0 blank sides. +Point {6 9 7} had 0 blank sides. +Point {13 16 12} had 0 blank sides. +Point {16 7 15} had 2 blank sides. +Point {10 7 18} had 1 blank sides. +Point {5 12 15} had 0 blank sides. +Point {12 7 12} had 0 blank sides. +Point {15 7 13} had 0 blank sides. +Point {14 7 4} had 1 blank sides. +Point {4 14 10} had 0 blank sides. +Point {16 12 5} had 0 blank sides. +Point {15 3 12} had 3 blank sides. +Point {8 12 1} had 2 blank sides. +Point {6 13 7} had 0 blank sides. +Point {11 11 7} had 0 blank sides. +Point {13 10 2} had 1 blank sides. +Point {6 10 18} had 3 blank sides. +Point {6 8 13} had 0 blank sides. +Point {8 7 13} had 0 blank sides. +Point {10 14 11} had 0 blank sides. +Point {7 2 8} had 0 blank sides. +Point {11 5 17} had 2 blank sides. +Point {16 7 14} had 1 blank sides. +Point {10 2 9} had 1 blank sides. +Point {8 13 1} had 4 blank sides. +Point {6 4 10} had 0 blank sides. +Point {15 12 16} had 4 blank sides. +Point {11 3 4} had 2 blank sides. +Point {16 5 6} had 0 blank sides. +Point {9 10 9} had 0 blank sides. +Point {11 10 13} had 0 blank sides. +Point {12 10 5} had 0 blank sides. +Point {7 13 12} had 0 blank sides. +Point {5 13 3} had 2 blank sides. +Point {13 13 16} had 1 blank sides. +Point {18 8 11} had 2 blank sides. +Point {13 11 16} had 0 blank sides. +Point {4 6 13} had 0 blank sides. +Point {13 16 11} had 0 blank sides. +Point {15 12 5} had 0 blank sides. +Point {11 6 7} had 0 blank sides. +Point {12 6 9} had 0 blank sides. +Point {14 7 7} had 0 blank sides. +Point {8 11 1} had 1 blank sides. +Point {13 11 4} had 0 blank sides. +Point {16 11 13} had 0 blank sides. +Point {10 11 7} had 0 blank sides. +Point {2 6 10} had 1 blank sides. +Point {16 7 6} had 0 blank sides. +Point {13 11 3} had 0 blank sides. +Point {7 15 9} had 0 blank sides. +Point {17 11 14} had 3 blank sides. +Point {9 3 12} had 0 blank sides. +Point {9 13 13} had 0 blank sides. +Point {11 9 16} had 0 blank sides. +Point {9 1 10} had 0 blank sides. +Point {7 14 16} had 2 blank sides. +Point {16 9 4} had 1 blank sides. +Point {9 12 17} had 0 blank sides. +Point {4 15 13} had 2 blank sides. +Point {8 16 11} had 0 blank sides. +Point {12 8 15} had 0 blank sides. +Point {11 13 14} had 0 blank sides. +Point {5 2 6} had 3 blank sides. +Point {11 3 13} had 0 blank sides. +Point {13 17 11} had 1 blank sides. +Point {9 7 15} had 0 blank sides. +Point {11 12 12} had 0 blank sides. +Point {12 13 11} had 0 blank sides. +Point {11 4 7} had 0 blank sides. +Point {11 17 9} had 0 blank sides. +Point {6 10 16} had 0 blank sides. +Point {7 17 14} had 3 blank sides. +Point {5 10 17} had 2 blank sides. +Point {9 7 14} had 0 blank sides. +Point {16 12 7} had 0 blank sides. +Point {7 4 10} had 0 blank sides. +Point {11 18 8} had 2 blank sides. +Point {13 9 5} had 0 blank sides. +Point {15 12 10} had 0 blank sides. +Point {11 11 10} had 0 blank sides. +Point {12 7 16} had 0 blank sides. +Point {4 9 16} had 1 blank sides. +Point {6 6 16} had 0 blank sides. +Point {12 1 10} had 1 blank sides. +Point {12 10 4} had 0 blank sides. +Point {9 12 11} had 0 blank sides. +Point {5 16 5} had 3 blank sides. +Point {6 15 7} had 0 blank sides. +Point {7 13 9} had 0 blank sides. +Point {10 11 10} had 0 blank sides. +Point {10 15 13} had 0 blank sides. +Point {5 4 13} had 0 blank sides. +Point {11 7 3} had 0 blank sides. +Point {9 7 6} had 0 blank sides. +Point {11 5 12} had 0 blank sides. +Point {12 15 11} had 0 blank sides. +Point {16 12 10} had 0 blank sides. +Point {15 12 7} had 0 blank sides. +Point {6 16 6} had 0 blank sides. +Point {13 5 13} had 0 blank sides. +Point {12 10 14} had 0 blank sides. +Point {5 13 4} had 0 blank sides. +Point {3 14 14} had 4 blank sides. +Point {11 12 11} had 0 blank sides. +Point {12 14 6} had 0 blank sides. +Point {14 9 7} had 0 blank sides. +Point {5 5 8} had 0 blank sides. +Point {18 8 9} had 2 blank sides. +Point {16 13 7} had 0 blank sides. +Point {6 17 11} had 1 blank sides. +Point {6 2 6} had 1 blank sides. +Point {11 14 10} had 0 blank sides. +Point {16 9 12} had 0 blank sides. +Point {17 5 8} had 4 blank sides. +Point {13 3 5} had 2 blank sides. +Point {14 14 5} had 0 blank sides. +Point {12 4 5} had 0 blank sides. +Point {12 6 8} had 0 blank sides. +Point {12 11 7} had 0 blank sides. +Point {12 10 8} had 0 blank sides. +Point {9 4 3} had 2 blank sides. +Point {5 15 11} had 0 blank sides. +Point {8 2 6} had 1 blank sides. +Point {14 13 6} had 0 blank sides. +Point {19 8 10} had 4 blank sides. +Point {11 8 1} had 3 blank sides. +Point {8 6 12} had 0 blank sides. +Point {11 12 17} had 0 blank sides. +Point {9 2 8} had 0 blank sides. +Point {2 9 8} had 0 blank sides. +Point {4 13 9} had 0 blank sides. +Point {13 2 12} had 2 blank sides. +Point {3 10 11} had 0 blank sides. +Point {12 8 2} had 1 blank sides. +Point {10 1 7} had 1 blank sides. +Point {9 12 12} had 0 blank sides. +Point {14 5 9} had 0 blank sides. +Point {10 4 10} had 0 blank sides. +Point {9 17 8} had 0 blank sides. +Point {16 8 7} had 0 blank sides. +Point {6 14 10} had 0 blank sides. +Point {2 7 8} had 1 blank sides. +Point {7 10 17} had 1 blank sides. +Point {12 8 16} had 0 blank sides. +Point {12 5 16} had 0 blank sides. +Point {16 11 6} had 0 blank sides. +Point {5 16 7} had 1 blank sides. +Point {7 6 12} had 0 blank sides. +Point {15 9 7} had 0 blank sides. +Point {12 3 14} had 1 blank sides. +Point {14 4 5} had 2 blank sides. +Point {14 10 3} had 0 blank sides. +Point {8 13 2} had 0 blank sides. +Point {14 3 11} had 0 blank sides. +Point {15 14 5} had 1 blank sides. +Point {6 16 14} had 2 blank sides. +Point {6 8 3} had 0 blank sides. +Point {5 9 8} had 0 blank sides. +Point {12 11 10} had 0 blank sides. +Point {7 18 11} had 2 blank sides. +Point {3 16 7} had 4 blank sides. +Point {7 14 8} had 0 blank sides. +Point {10 9 8} had 0 blank sides. +Point {6 13 15} had 0 blank sides. +Point {11 4 4} had 0 blank sides. +Point {3 14 9} had 1 blank sides. +Point {16 5 5} had 4 blank sides. +Point {8 6 14} had 0 blank sides. +Point {10 7 7} had 0 blank sides. +Point {13 5 10} had 0 blank sides. +Point {16 14 10} had 0 blank sides. +Point {3 9 16} had 2 blank sides. +Point {8 6 3} had 0 blank sides. +Point {17 6 13} had 3 blank sides. +Point {13 8 4} had 0 blank sides. +Point {8 11 5} had 0 blank sides. +Point {10 17 11} had 0 blank sides. +Point {15 11 11} had 0 blank sides. +Point {12 12 15} had 0 blank sides. +Point {4 13 12} had 0 blank sides. +Point {11 6 15} had 0 blank sides. +Point {7 3 15} had 3 blank sides. +Point {12 6 6} had 0 blank sides. +Point {9 10 12} had 0 blank sides. +Point {11 4 8} had 0 blank sides. +Point {16 9 9} had 0 blank sides. +Point {13 7 11} had 0 blank sides. +Point {5 16 9} had 1 blank sides. +Point {9 5 16} had 0 blank sides. +Point {16 15 7} had 1 blank sides. +Point {14 5 3} had 3 blank sides. +Point {9 3 16} had 3 blank sides. +Point {11 6 5} had 0 blank sides. +Point {11 15 11} had 0 blank sides. +Point {13 14 3} had 1 blank sides. +Point {10 12 2} had 0 blank sides. +Point {17 8 13} had 0 blank sides. +Point {7 6 14} had 0 blank sides. +Point {9 16 12} had 0 blank sides. +Point {10 7 4} had 0 blank sides. +Point {12 13 8} had 0 blank sides. +Point {7 18 7} had 4 blank sides. +Point {14 15 14} had 2 blank sides. +Point {4 12 4} had 1 blank sides. +Point {14 6 13} had 0 blank sides. +Point {7 6 3} had 0 blank sides. +Point {13 8 9} had 0 blank sides. +Point {8 11 16} had 0 blank sides. +Point {3 10 8} had 0 blank sides. +Point {13 16 13} had 0 blank sides. +Point {15 6 10} had 0 blank sides. +Point {8 14 14} had 0 blank sides. +Point {9 11 7} had 0 blank sides. +Point {12 12 10} had 0 blank sides. +Point {13 12 14} had 0 blank sides. +Point {9 15 15} had 1 blank sides. +Point {6 8 16} had 0 blank sides. +Point {9 13 14} had 0 blank sides. +Point {13 7 7} had 0 blank sides. +Point {14 5 12} had 0 blank sides. +Point {3 7 5} had 0 blank sides. +Point {8 11 3} had 0 blank sides. +Point {10 12 1} had 2 blank sides. +Point {7 11 10} had 0 blank sides. +Point {11 16 16} had 4 blank sides. +Point {7 5 4} had 0 blank sides. +Point {16 13 9} had 0 blank sides. +Point {9 4 4} had 0 blank sides. +Point {14 15 4} had 3 blank sides. +Point {6 8 2} had 3 blank sides. +Point {5 6 6} had 0 blank sides. +Point {13 11 1} had 4 blank sides. +Point {8 11 4} had 0 blank sides. +Point {9 7 12} had 0 blank sides. +Point {12 12 7} had 0 blank sides. +Point {7 13 15} had 0 blank sides. +Point {7 3 9} had 0 blank sides. +Point {9 9 18} had 2 blank sides. +Point {4 16 8} had 4 blank sides. +Point {3 5 6} had 0 blank sides. +Point {7 15 13} had 0 blank sides. +Point {7 7 13} had 0 blank sides. +Point {13 7 4} had 0 blank sides. +Point {8 15 16} had 2 blank sides. +Point {2 5 8} had 3 blank sides. +Point {7 5 5} had 0 blank sides. +Point {9 4 8} had 0 blank sides. +Point {4 13 7} had 0 blank sides. +Point {1 9 6} had 3 blank sides. +Point {16 7 16} had 5 blank sides. +Point {13 6 16} had 0 blank sides. +Point {10 6 11} had 0 blank sides. +Point {10 7 11} had 0 blank sides. +Point {12 9 15} had 0 blank sides. +Point {12 18 6} had 3 blank sides. +Point {7 9 13} had 0 blank sides. +Point {12 10 11} had 0 blank sides. +Point {10 8 6} had 0 blank sides. +Point {2 8 10} had 0 blank sides. +Point {3 6 10} had 0 blank sides. +Point {18 7 12} had 4 blank sides. +Point {4 6 15} had 0 blank sides. +Point {4 7 10} had 0 blank sides. +Point {7 9 10} had 0 blank sides. +Point {7 11 7} had 0 blank sides. +Point {12 14 7} had 0 blank sides. +Point {3 13 4} had 4 blank sides. +Point {11 6 1} had 4 blank sides. +Point {4 6 5} had 1 blank sides. +Point {11 4 2} had 4 blank sides. +Point {3 9 8} had 0 blank sides. +Point {6 7 8} had 0 blank sides. +Point {12 7 14} had 0 blank sides. +Point {5 9 16} had 0 blank sides. +Point {14 17 9} had 2 blank sides. +Point {11 4 3} had 1 blank sides. +Point {12 7 15} had 0 blank sides. +Point {8 14 9} had 0 blank sides. +Point {9 11 10} had 0 blank sides. +Point {16 7 12} had 0 blank sides. +Point {9 8 7} had 0 blank sides. +Point {11 10 2} had 1 blank sides. +Point {10 9 16} had 0 blank sides. +Point {8 17 12} had 0 blank sides. +Point {11 2 6} had 1 blank sides. +Point {16 13 12} had 1 blank sides. +Point {4 15 9} had 1 blank sides. +Point {14 6 7} had 0 blank sides. +Point {12 13 10} had 0 blank sides. +Point {14 3 12} had 2 blank sides. +Point {8 5 14} had 0 blank sides. +Point {6 9 2} had 2 blank sides. +Point {13 4 7} had 0 blank sides. +Point {13 5 15} had 0 blank sides. +Point {1 7 11} had 3 blank sides. +Point {14 11 15} had 0 blank sides. +Point {18 11 8} had 2 blank sides. +Point {11 17 13} had 0 blank sides. +Point {10 6 17} had 0 blank sides. +Point {9 14 15} had 0 blank sides. +Point {8 8 7} had 0 blank sides. +Point {5 6 8} had 0 blank sides. +Point {14 16 6} had 2 blank sides. +Point {12 7 6} had 0 blank sides. +Point {8 9 2} had 0 blank sides. +Point {10 13 2} had 1 blank sides. +Point {10 15 9} had 0 blank sides. +Point {8 16 13} had 0 blank sides. +Point {7 12 2} had 1 blank sides. +Point {6 15 11} had 0 blank sides. +Point {10 5 14} had 0 blank sides. +Point {13 10 13} had 0 blank sides. +Point {6 5 11} had 0 blank sides. +Point {10 3 8} had 0 blank sides. +Point {7 4 16} had 3 blank sides. +Point {9 2 9} had 0 blank sides. +Point {8 4 14} had 0 blank sides. +Point {12 8 3} had 0 blank sides. +Point {14 12 4} had 0 blank sides. +Point {4 3 12} had 4 blank sides. +Point {9 10 7} had 0 blank sides. +Point {11 13 13} had 0 blank sides. +Point {12 12 5} had 0 blank sides. +Point {12 15 7} had 0 blank sides. +Point {17 6 7} had 2 blank sides. +Point {12 12 16} had 0 blank sides. +Point {9 7 16} had 0 blank sides. +Point {6 12 13} had 0 blank sides. +Point {3 8 8} had 0 blank sides. +Point {11 5 3} had 0 blank sides. +Point {12 9 1} had 2 blank sides. +Point {4 6 7} had 0 blank sides. +Point {15 14 4} had 3 blank sides. +Point {11 6 13} had 0 blank sides. +Point {13 9 6} had 0 blank sides. +Point {14 10 15} had 0 blank sides. +Point {8 4 6} had 0 blank sides. +Point {14 6 15} had 0 blank sides. +Point {5 12 5} had 0 blank sides. +Point {6 5 7} had 0 blank sides. +Point {12 14 13} had 0 blank sides. +Point {10 4 16} had 1 blank sides. +Point {5 15 7} had 0 blank sides. +Point {14 6 5} had 0 blank sides. +Point {17 9 13} had 0 blank sides. +Point {13 3 10} had 0 blank sides. +Point {8 14 15} had 0 blank sides. +Point {9 3 11} had 0 blank sides. +Point {9 0 10} had 5 blank sides. +Point {5 12 16} had 1 blank sides. +Point {6 12 6} had 0 blank sides. +Point {6 13 9} had 0 blank sides. +Point {9 4 7} had 0 blank sides. +Point {10 8 12} had 0 blank sides. +Point {4 11 14} had 0 blank sides. +Point {4 10 13} had 0 blank sides. +Point {12 8 13} had 0 blank sides. +Point {13 8 11} had 0 blank sides. +Point {7 17 11} had 0 blank sides. +Point {15 3 11} had 1 blank sides. +Point {16 11 12} had 0 blank sides. +Point {1 12 13} had 4 blank sides. +Point {9 14 9} had 0 blank sides. +Point {8 3 4} had 1 blank sides. +Point {1 12 6} had 6 blank sides. +Point {10 13 1} had 4 blank sides. +Point {8 9 3} had 0 blank sides. +Point {4 4 10} had 0 blank sides. +Point {7 8 7} had 0 blank sides. +Point {15 12 15} had 2 blank sides. +Point {6 9 3} had 0 blank sides. +Point {17 10 15} had 4 blank sides. +Point {3 10 5} had 1 blank sides. +Point {11 7 5} had 0 blank sides. +Point {12 4 11} had 0 blank sides. +Point {5 12 7} had 0 blank sides. +Point {14 11 8} had 0 blank sides. +Point {16 11 9} had 0 blank sides. +Point {10 2 8} had 0 blank sides. +Point {3 11 11} had 0 blank sides. +Point {7 2 9} had 1 blank sides. +Point {9 9 7} had 0 blank sides. +Point {11 5 9} had 0 blank sides. +Point {13 11 5} had 0 blank sides. +Point {14 7 11} had 0 blank sides. +Point {13 4 8} had 0 blank sides. +Point {3 5 5} had 4 blank sides. +Point {14 16 14} had 3 blank sides. +Point {5 6 9} had 0 blank sides. +Point {11 9 8} had 0 blank sides. +Point {12 2 7} had 1 blank sides. +Point {8 3 13} had 1 blank sides. +Point {14 14 4} had 0 blank sides. +Point {13 7 18} had 5 blank sides. +Point {6 13 12} had 0 blank sides. +Point {7 5 6} had 0 blank sides. +Point {5 12 10} had 0 blank sides. +Point {13 4 4} had 3 blank sides. +Point {3 10 14} had 1 blank sides. +Point {17 9 10} had 0 blank sides. +Point {9 16 10} had 0 blank sides. +Point {17 14 8} had 1 blank sides. +Point {5 17 9} had 2 blank sides. +Point {11 1 11} had 0 blank sides. +Point {3 4 6} had 3 blank sides. +Point {8 12 2} had 0 blank sides. +Point {14 4 11} had 0 blank sides. +Point {4 13 15} had 2 blank sides. +Point {11 15 7} had 0 blank sides. +Point {16 15 11} had 0 blank sides. +Point {4 9 8} had 0 blank sides. +Point {6 8 15} had 0 blank sides. +Point {15 8 7} had 0 blank sides. +Point {16 6 10} had 0 blank sides. +Point {3 10 4} had 2 blank sides. +Point {6 7 17} had 1 blank sides. +Point {7 13 7} had 0 blank sides. +Point {9 14 14} had 0 blank sides. +Point {10 1 12} had 2 blank sides. +Point {11 3 10} had 0 blank sides. +Point {9 7 13} had 0 blank sides. +Point {18 10 12} had 2 blank sides. +Point {18 13 12} had 5 blank sides. +Point {9 16 13} had 0 blank sides. +Point {9 8 1} had 2 blank sides. +Point {17 9 6} had 2 blank sides. +Point {5 5 16} had 3 blank sides. +Point {13 12 3} had 0 blank sides. +Point {10 14 9} had 0 blank sides. +Point {6 6 17} had 1 blank sides. +Point {9 16 3} had 4 blank sides. +Point {8 15 8} had 0 blank sides. +Point {14 9 2} had 2 blank sides. +Point {7 5 14} had 0 blank sides. +Point {13 9 13} had 0 blank sides. +Point {13 8 10} had 0 blank sides. +Point {15 15 7} had 0 blank sides. +Point {4 5 7} had 0 blank sides. +Point {2 10 12} had 0 blank sides. +Point {14 10 17} had 2 blank sides. +Point {5 17 12} had 3 blank sides. +Point {6 10 2} had 0 blank sides. +Point {9 12 2} had 0 blank sides. +Point {11 13 2} had 1 blank sides. +Point {7 2 7} had 1 blank sides. +Point {9 6 1} had 4 blank sides. +Point {13 10 18} had 3 blank sides. +Point {12 12 13} had 0 blank sides. +Point {12 12 6} had 0 blank sides. +Point {8 8 1} had 1 blank sides. +Point {6 16 8} had 0 blank sides. +Point {7 11 2} had 0 blank sides. +Point {15 17 11} had 4 blank sides. +Point {7 7 12} had 0 blank sides. +Point {10 13 13} had 0 blank sides. +Point {12 9 9} had 0 blank sides. +Point {12 3 9} had 0 blank sides. +Point {2 6 12} had 1 blank sides. +Point {2 14 12} had 1 blank sides. +Point {12 2 9} had 0 blank sides. +Point {12 5 8} had 0 blank sides. +Point {13 5 9} had 0 blank sides. +Point {14 15 13} had 0 blank sides. +Point {5 3 11} had 1 blank sides. +Point {16 7 13} had 0 blank sides. +Point {12 6 4} had 0 blank sides. +Point {14 5 10} had 0 blank sides. +Point {11 4 6} had 0 blank sides. +Point {4 9 11} had 0 blank sides. +Point {6 6 11} had 0 blank sides. +Point {8 7 14} had 0 blank sides. +Point {15 7 15} had 1 blank sides. +Point {17 11 8} had 0 blank sides. +Point {8 10 12} had 0 blank sides. +Point {3 11 5} had 1 blank sides. +Point {7 7 16} had 0 blank sides. +Point {15 7 14} had 0 blank sides. +Point {5 7 4} had 0 blank sides. +Point {8 5 5} had 0 blank sides. +Point {8 7 15} had 0 blank sides. +Point {13 11 11} had 0 blank sides. +Point {2 8 9} had 0 blank sides. +Point {10 14 14} had 0 blank sides. +Point {7 10 3} had 0 blank sides. +Point {10 5 5} had 0 blank sides. +Point {6 13 5} had 0 blank sides. +Point {7 14 7} had 0 blank sides. +Point {12 9 12} had 0 blank sides. +Point {8 5 4} had 0 blank sides. +Point {13 13 4} had 0 blank sides. +Point {17 7 11} had 1 blank sides. +Point {3 10 10} had 0 blank sides. +Point {11 9 11} had 0 blank sides. +Point {13 9 10} had 0 blank sides. +Point {3 10 6} had 0 blank sides. +Point {10 5 4} had 0 blank sides. +Point {8 7 6} had 0 blank sides. +Point {13 10 16} had 0 blank sides. +Point {5 14 10} had 0 blank sides. +Point {9 5 8} had 0 blank sides. +Point {14 13 10} had 0 blank sides. +Point {14 12 8} had 0 blank sides. +Point {13 15 5} had 0 blank sides. +Point {15 7 6} had 0 blank sides. +Point {9 11 2} had 0 blank sides. +Point {12 13 17} had 3 blank sides. +Point {5 7 7} had 0 blank sides. +Point {6 7 10} had 0 blank sides. +Point {10 12 12} had 0 blank sides. +Point {7 15 4} had 0 blank sides. +Point {4 7 8} had 0 blank sides. +Point {5 11 12} had 0 blank sides. +Point {6 15 15} had 1 blank sides. +Point {15 11 4} had 0 blank sides. +Point {8 4 3} had 2 blank sides. +Point {17 12 9} had 1 blank sides. +Point {6 1 9} had 5 blank sides. +Point {8 16 10} had 0 blank sides. +Point {1 12 10} had 2 blank sides. +Point {6 3 11} had 0 blank sides. +Point {15 11 3} had 2 blank sides. +Point {13 2 6} had 3 blank sides. +Point {7 14 13} had 0 blank sides. +Point {6 12 7} had 0 blank sides. +Point {8 10 9} had 0 blank sides. +Point {12 9 4} had 0 blank sides. +Point {9 17 4} had 2 blank sides. +Point {11 5 15} had 0 blank sides. +Point {15 10 3} had 2 blank sides. +Point {16 3 11} had 4 blank sides. +Point {14 17 12} had 3 blank sides. +Point {9 2 7} had 0 blank sides. +Point {10 18 8} had 1 blank sides. +Point {10 12 17} had 0 blank sides. +Point {8 3 5} had 0 blank sides. +Point {8 17 9} had 0 blank sides. +Point {8 6 10} had 0 blank sides. +Point {10 10 7} had 0 blank sides. +Point {10 9 14} had 0 blank sides. +Point {11 4 14} had 0 blank sides. +Point {2 12 14} had 3 blank sides. +Point {4 10 16} had 0 blank sides. +Point {6 2 12} had 2 blank sides. +Point {4 12 9} had 0 blank sides. +Point {8 5 6} had 0 blank sides. +Point {8 15 12} had 0 blank sides. +Point {5 9 14} had 0 blank sides. +Point {5 4 15} had 2 blank sides. +Point {6 12 10} had 0 blank sides. +Point {7 9 6} had 0 blank sides. +Point {8 13 14} had 0 blank sides. +Point {10 5 6} had 0 blank sides. +Point {5 10 3} had 0 blank sides. +Point {14 4 9} had 0 blank sides. +Point {8 2 12} had 2 blank sides. +Point {17 13 7} had 0 blank sides. +Point {6 11 12} had 0 blank sides. +Point {7 6 10} had 0 blank sides. +Point {10 12 11} had 0 blank sides. +Point {13 8 14} had 0 blank sides. +Point {14 9 3} had 0 blank sides. +Point {11 9 17} had 0 blank sides. +Point {10 14 15} had 0 blank sides. +Point {4 5 11} had 0 blank sides. +Point {12 1 11} had 2 blank sides. +Point {13 13 3} had 0 blank sides. +Point {3 14 11} had 0 blank sides. +Point {2 9 14} had 3 blank sides. +Point {11 12 2} had 0 blank sides. +Point {18 10 9} had 2 blank sides. +Point {10 15 14} had 0 blank sides. +Point {5 12 13} had 0 blank sides. +Point {8 6 2} had 1 blank sides. +Point {6 12 16} had 0 blank sides. +Point {9 19 10} had 5 blank sides. +Point {5 12 6} had 0 blank sides. +Point {1 9 10} had 1 blank sides. +Point {16 13 5} had 3 blank sides. +Point {6 12 5} had 0 blank sides. +Point {18 5 10} had 5 blank sides. +Point {1 8 7} had 3 blank sides. +Point {6 11 9} had 0 blank sides. +Point {2 10 9} had 0 blank sides. +Point {10 3 3} had 4 blank sides. +Point {7 8 1} had 2 blank sides. +Point {9 1 11} had 2 blank sides. +Point {5 11 9} had 0 blank sides. +Point {9 15 11} had 0 blank sides. +Point {12 4 9} had 0 blank sides. +Point {12 17 6} had 1 blank sides. +Point {13 16 10} had 0 blank sides. +Point {14 5 13} had 0 blank sides. +Point {9 6 13} had 0 blank sides. +Point {7 6 2} had 1 blank sides. +Point {10 3 7} had 0 blank sides. +Point {2 8 11} had 0 blank sides. +Point {15 9 3} had 2 blank sides. +Point {4 15 14} had 4 blank sides. +Point {3 9 11} had 0 blank sides. +Point {13 8 5} had 0 blank sides. +Point {16 5 8} had 0 blank sides. +Point {8 5 16} had 1 blank sides. +Point {5 2 7} had 2 blank sides. +Point {4 12 12} had 0 blank sides. +Point {12 16 15} had 2 blank sides. +Point {15 9 14} had 0 blank sides. +Point {5 8 13} had 0 blank sides. +Point {8 10 8} had 0 blank sides. +Point {9 9 17} had 0 blank sides. +Point {16 7 9} had 0 blank sides. +Point {4 14 15} had 3 blank sides. +Point {9 18 7} had 1 blank sides. +Point {10 4 4} had 0 blank sides. +Point {15 12 14} had 0 blank sides. +Point {10 5 16} had 0 blank sides. +Point {7 15 8} had 0 blank sides. +Point {11 16 14} had 0 blank sides. +Point {9 16 4} had 0 blank sides. +Point {16 14 9} had 0 blank sides. +Point {11 14 14} had 0 blank sides. +Point {3 6 6} had 1 blank sides. +Point {5 11 11} had 0 blank sides. +Point {7 12 8} had 0 blank sides. +Point {9 11 8} had 0 blank sides. +Point {10 8 9} had 0 blank sides. +Point {11 1 9} had 2 blank sides. +Point {10 16 15} had 3 blank sides. +Point {3 14 10} had 0 blank sides. +Point {13 17 13} had 3 blank sides. +Point {16 4 12} had 3 blank sides. +Point {18 7 9} had 2 blank sides. +Point {7 14 12} had 0 blank sides. +Point {18 11 10} had 2 blank sides. +Point {6 4 7} had 0 blank sides. +Point {6 5 10} had 0 blank sides. +Point {15 6 8} had 0 blank sides. +Point {16 12 14} had 2 blank sides. +Point {6 14 14} had 0 blank sides. +Point {6 11 11} had 0 blank sides. +Point {14 17 11} had 1 blank sides. +Point {3 16 13} had 6 blank sides. +Point {6 6 7} had 0 blank sides. +Point {9 13 8} had 0 blank sides. +Point {10 7 10} had 0 blank sides. +Point {9 18 11} had 1 blank sides. +Point {12 3 11} had 0 blank sides. +Point {16 9 13} had 0 blank sides. +Point {10 4 8} had 0 blank sides. +Point {13 13 9} had 0 blank sides. +Point {14 9 14} had 0 blank sides. +Point {11 14 9} had 0 blank sides. +Point {4 7 11} had 0 blank sides. +Point {5 16 13} had 3 blank sides. +Point {4 10 3} had 2 blank sides. +Point {5 3 9} had 1 blank sides. +Point {16 14 14} had 4 blank sides. +Point {16 9 10} had 0 blank sides. +Point {9 7 9} had 0 blank sides. +Point {7 2 12} had 0 blank sides. +Point {15 16 10} had 2 blank sides. +Point {7 16 15} had 2 blank sides. +Point {18 10 8} had 3 blank sides. +Point {5 6 10} had 0 blank sides. +Point {5 10 16} had 0 blank sides. +Point {6 10 17} had 1 blank sides. +Point {15 6 6} had 0 blank sides. +Point {5 9 3} had 1 blank sides. +Point {7 11 8} had 0 blank sides. +Point {9 12 4} had 0 blank sides. +Point {13 8 6} had 0 blank sides. +Point {5 5 5} had 1 blank sides. +Point {11 8 3} had 0 blank sides. +Point {17 7 8} had 0 blank sides. +Point {14 10 2} had 3 blank sides. +Point {10 9 3} had 0 blank sides. +Point {16 6 9} had 0 blank sides. +Point {3 6 8} had 0 blank sides. +Point {2 10 8} had 0 blank sides. +Point {7 4 7} had 0 blank sides. +Point {1 7 10} had 3 blank sides. +Point {5 5 4} had 3 blank sides. +Point {4 17 11} had 3 blank sides. +Point {8 7 5} had 0 blank sides. +Point {11 4 10} had 0 blank sides. +Point {15 7 5} had 0 blank sides. +Point {18 11 7} had 3 blank sides. +Point {4 8 3} had 1 blank sides. +Point {13 4 16} had 3 blank sides. +Point {15 10 16} had 3 blank sides. +Point {8 11 13} had 0 blank sides. +Point {13 15 11} had 0 blank sides. +Point {8 15 4} had 1 blank sides. +Point {7 13 16} had 1 blank sides. +Point {14 8 3} had 1 blank sides. +Point {13 13 12} had 0 blank sides. +Point {11 6 16} had 0 blank sides. +Point {2 14 7} had 3 blank sides. +Point {6 14 9} had 0 blank sides. +Point {5 17 11} had 1 blank sides. +Point {15 14 6} had 0 blank sides. +Point {15 13 7} had 0 blank sides. +Point {10 9 2} had 0 blank sides. +Point {10 15 10} had 0 blank sides. +Point {14 11 10} had 0 blank sides. +Point {10 4 7} had 0 blank sides. +Point {13 10 3} had 0 blank sides. +Point {7 1 10} had 3 blank sides. +Point {6 5 13} had 0 blank sides. +Point {9 4 16} had 1 blank sides. +Point {11 14 15} had 0 blank sides. +Point {6 3 9} had 0 blank sides. +Point {9 13 11} had 0 blank sides. +Point {11 8 13} had 0 blank sides. +Point {13 8 12} had 0 blank sides. +Point {6 4 8} had 0 blank sides. +Point {4 14 14} had 0 blank sides. +Point {7 7 3} had 0 blank sides. +Point {14 13 2} had 3 blank sides. +Point {15 15 6} had 1 blank sides. +Point {8 12 8} had 0 blank sides. +Point {11 10 15} had 0 blank sides. +Point {15 6 9} had 0 blank sides. +Point {6 4 4} had 3 blank sides. +Point {16 11 5} had 1 blank sides. +Point {4 8 13} had 0 blank sides. +Point {7 15 12} had 0 blank sides. +Point {13 11 9} had 0 blank sides. +Point {16 6 6} had 1 blank sides. +Point {2 14 13} had 4 blank sides. +Point {11 16 6} had 0 blank sides. +Point {14 8 13} had 0 blank sides. +Point {5 5 6} had 0 blank sides. +Point {9 9 11} had 0 blank sides. +Point {12 9 5} had 0 blank sides. +Point {8 10 5} had 0 blank sides. +Point {15 5 3} had 3 blank sides. +Point {13 12 15} had 0 blank sides. +Point {4 15 10} had 0 blank sides. +Point {6 14 15} had 0 blank sides. +Point {10 17 13} had 2 blank sides. +Point {17 5 6} had 4 blank sides. +Point {8 9 16} had 0 blank sides. +Point {9 11 15} had 0 blank sides. +Point {10 8 11} had 0 blank sides. +Point {11 12 4} had 0 blank sides. +Point {10 13 17} had 1 blank sides. +Point {6 9 16} had 0 blank sides. +Point {7 10 16} had 0 blank sides. +Point {5 14 11} had 0 blank sides. +Point {4 5 12} had 0 blank sides. +Point {12 14 5} had 0 blank sides. +Point {6 2 7} had 1 blank sides. +Point {4 14 9} had 0 blank sides. +Point {11 3 8} had 0 blank sides. +Point {13 6 13} had 0 blank sides. +Point {13 11 12} had 0 blank sides. +Point {7 17 9} had 0 blank sides. +Point {11 17 14} had 3 blank sides. +Point {4 12 11} had 0 blank sides. +Point {8 13 6} had 0 blank sides. +Point {14 7 10} had 0 blank sides. +Point {11 13 10} had 0 blank sides. +Point {8 2 7} had 1 blank sides. +Point {14 14 6} had 0 blank sides. +Point {14 11 7} had 0 blank sides. +Point {13 3 7} had 0 blank sides. +Point {5 8 3} had 1 blank sides. +Point {7 4 8} had 0 blank sides. +Point {10 12 9} had 0 blank sides. +Point {3 6 9} had 0 blank sides. +Point {16 6 8} had 0 blank sides. +Point {2 4 10} had 4 blank sides. +Point {8 18 7} had 2 blank sides. +Point {2 13 7} had 3 blank sides. +Point {3 12 6} had 1 blank sides. +Point {7 4 4} had 0 blank sides. +Point {17 12 11} had 1 blank sides. +Point {8 18 11} had 1 blank sides. +Point {9 15 5} had 0 blank sides. +Point {15 11 17} had 5 blank sides. +Point {8 10 14} had 0 blank sides. +Point {10 10 11} had 0 blank sides. +Point {6 6 5} had 0 blank sides. +Point {13 2 8} had 2 blank sides. +Point {15 5 9} had 0 blank sides. +Point {7 11 15} had 0 blank sides. +Point {9 2 12} had 0 blank sides. +Point {8 10 4} had 0 blank sides. +Point {3 12 13} had 0 blank sides. +Point {10 1 8} had 2 blank sides. +Point {5 4 11} had 0 blank sides. +Point {4 2 8} had 3 blank sides. +Point {6 6 15} had 0 blank sides. +Point {8 11 6} had 0 blank sides. +Point {12 13 13} had 0 blank sides. +Point {2 10 10} had 0 blank sides. +Point {15 12 3} had 2 blank sides. +Point {9 8 16} had 0 blank sides. +Point {8 6 9} had 0 blank sides. +Point {9 10 11} had 0 blank sides. +Point {11 9 7} had 0 blank sides. +Point {12 14 12} had 0 blank sides. +Point {3 15 7} had 2 blank sides. +Point {2 10 6} had 1 blank sides. +Point {17 11 10} had 0 blank sides. +Point {7 17 12} had 0 blank sides. +Point {14 12 2} had 3 blank sides. +Point {2 8 6} had 2 blank sides. +Point {17 6 11} had 1 blank sides. +Point {14 14 16} had 3 blank sides. +Point {10 7 8} had 0 blank sides. +Point {10 8 10} had 0 blank sides. +Point {14 5 11} had 0 blank sides. +Point {3 7 6} had 0 blank sides. +Point {9 8 2} had 0 blank sides. +Point {3 13 9} had 0 blank sides. +Point {7 12 4} had 0 blank sides. +Point {7 16 6} had 0 blank sides. +Point {7 8 15} had 0 blank sides. +Point {9 1 9} had 2 blank sides. +Point {9 6 16} had 0 blank sides. +Point {6 5 17} had 4 blank sides. +Point {16 10 13} had 0 blank sides. +Point {14 2 11} had 3 blank sides. +Point {9 9 8} had 0 blank sides. +Point {7 6 9} had 0 blank sides. +Point {6 2 9} had 1 blank sides. +Point {7 3 11} had 0 blank sides. +Point {11 2 8} had 0 blank sides. +Point {11 10 17} had 0 blank sides. +Point {8 15 13} had 0 blank sides. +Point {16 12 3} had 4 blank sides. +Point {4 9 7} had 0 blank sides. +Point {5 15 6} had 0 blank sides. +Point {13 14 15} had 0 blank sides. +Point {8 8 2} had 0 blank sides. +Point {18 10 10} had 1 blank sides. +Point {3 7 15} had 1 blank sides. +Point {8 13 11} had 0 blank sides. +Point {14 6 11} had 0 blank sides. +Point {8 2 9} had 0 blank sides. +Point {3 7 14} had 2 blank sides. +Point {7 18 12} had 3 blank sides. +Point {8 8 16} had 0 blank sides. +Point {3 11 9} had 0 blank sides. +Point {12 1 9} had 3 blank sides. +Point {18 8 8} had 3 blank sides. +Point {16 11 11} had 0 blank sides. +Point {4 5 13} had 0 blank sides. +Point {10 16 6} had 0 blank sides. +Point {3 10 12} had 0 blank sides. +Point {6 9 14} had 0 blank sides. +Point {10 6 7} had 0 blank sides. +Point {11 3 7} had 0 blank sides. +Point {5 13 7} had 0 blank sides. +Point {8 9 14} had 0 blank sides. +Point {12 10 7} had 0 blank sides. +Point {15 4 8} had 0 blank sides. +Point {3 13 12} had 0 blank sides. +Point {5 10 13} had 0 blank sides. +Point {6 8 7} had 0 blank sides. +Point {9 12 8} had 0 blank sides. +Point {15 8 15} had 0 blank sides. +Point {17 11 7} had 0 blank sides. +Point {3 11 12} had 0 blank sides. +Point {13 3 8} had 0 blank sides. +Point {7 10 1} had 1 blank sides. +Point {12 16 6} had 0 blank sides. +Point {10 11 14} had 0 blank sides. +Point {11 15 6} had 0 blank sides. +Point {15 11 6} had 0 blank sides. +Point {12 18 11} had 4 blank sides. +Point {17 7 10} had 0 blank sides. +Point {6 15 5} had 0 blank sides. +Point {8 10 6} had 0 blank sides. +Point {12 7 5} had 0 blank sides. +Point {6 13 3} had 0 blank sides. +Point {5 5 14} had 0 blank sides. +Point {2 7 7} had 1 blank sides. +Point {7 7 9} had 0 blank sides. +Point {8 10 10} had 0 blank sides. +Point {9 13 6} had 0 blank sides. +Point {11 11 14} had 0 blank sides. +Point {6 5 12} had 0 blank sides. +Point {8 16 4} had 1 blank sides. +Point {8 11 17} had 0 blank sides. +Point {15 10 13} had 0 blank sides. +Point {14 15 8} had 0 blank sides. +Point {6 7 11} had 0 blank sides. +Point {9 17 6} had 1 blank sides. +Point {4 4 14} had 2 blank sides. +Point {7 5 16} had 1 blank sides. +Point {6 1 11} had 4 blank sides. +Point {14 14 8} had 0 blank sides. +Point {3 10 9} had 0 blank sides. +Point {10 6 5} had 0 blank sides. +Point {11 7 15} had 0 blank sides. +Point {5 11 5} had 0 blank sides. +Point {10 6 15} had 0 blank sides. +Point {5 13 15} had 1 blank sides. +Point {13 15 15} had 2 blank sides. +Point {4 5 10} had 0 blank sides. +Point {9 17 5} had 0 blank sides. +Point {8 12 4} had 0 blank sides. +Point {8 13 8} had 0 blank sides. +Point {10 13 10} had 0 blank sides. +Point {11 18 9} had 1 blank sides. +Point {4 4 6} had 2 blank sides. +Point {3 9 7} had 0 blank sides. +Point {9 3 9} had 0 blank sides. +Point {7 6 8} had 0 blank sides. +Point {11 7 14} had 0 blank sides. +Point {3 12 5} had 2 blank sides. +Point {5 4 9} had 0 blank sides. +Point {12 13 2} had 1 blank sides. +Point {7 16 14} had 0 blank sides. +Point {15 8 16} had 3 blank sides. +Point {5 16 10} had 0 blank sides. +Point {16 9 6} had 0 blank sides. +Point {15 3 9} had 2 blank sides. +Point {15 5 15} had 2 blank sides. +Point {10 8 14} had 0 blank sides. +Point {10 2 6} had 0 blank sides. +Point {13 14 14} had 0 blank sides. +Point {17 8 7} had 1 blank sides. +Point {10 3 10} had 0 blank sides. +Point {12 6 12} had 0 blank sides. +Point {6 11 5} had 0 blank sides. +Point {11 12 8} had 0 blank sides. +Point {8 4 10} had 0 blank sides. +Point {13 7 2} had 2 blank sides. +Point {12 2 12} had 0 blank sides. +Point {14 4 15} had 2 blank sides. +Point {9 11 18} had 1 blank sides. +Point {10 7 17} had 0 blank sides. +Point {9 7 3} had 0 blank sides. +Point {7 10 13} had 0 blank sides. +Point {8 6 8} had 0 blank sides. +Point {11 7 6} had 0 blank sides. +Point {3 4 10} had 0 blank sides. +Point {14 15 12} had 0 blank sides. +Point {12 15 6} had 0 blank sides. +Point {14 9 16} had 0 blank sides. +Point {6 13 4} had 0 blank sides. +Point {8 8 15} had 0 blank sides. +Point {8 6 6} had 0 blank sides. +Point {5 18 9} had 4 blank sides. +Point {14 13 13} had 0 blank sides. +Point {15 14 8} had 0 blank sides. +Point {2 8 12} had 1 blank sides. +Point {3 12 10} had 0 blank sides. +Point {8 3 6} had 0 blank sides. +Point {7 14 5} had 0 blank sides. +Point {3 16 10} had 3 blank sides. +Point {3 8 4} had 0 blank sides. +Point {12 16 14} had 0 blank sides. +Point {6 10 15} had 0 blank sides. +Point {15 4 7} had 1 blank sides. +Point {13 14 9} had 0 blank sides. +Point {11 9 18} had 1 blank sides. +Point {7 8 16} had 0 blank sides. +Point {12 4 15} had 0 blank sides. +Point {7 6 6} had 0 blank sides. +Point {10 8 5} had 0 blank sides. +Point {15 11 13} had 0 blank sides. +Point {12 11 14} had 0 blank sides. +Point {16 8 13} had 0 blank sides. +Point {12 6 3} had 0 blank sides. +Point {11 16 15} had 1 blank sides. +Point {3 12 7} had 1 blank sides. +Point {10 15 3} had 2 blank sides. +Point {16 7 3} had 3 blank sides. +Point {14 5 7} had 0 blank sides. +Point {14 7 8} had 0 blank sides. +Point {4 6 11} had 0 blank sides. +Point {7 8 2} had 0 blank sides. +Point {7 11 18} had 3 blank sides. +Point {8 17 11} had 0 blank sides. +Point {15 9 16} had 1 blank sides. +Point {10 16 14} had 1 blank sides. +Point {13 13 5} had 0 blank sides. +Point {11 13 17} had 2 blank sides. +Point {9 8 15} had 0 blank sides. +Point {12 6 14} had 0 blank sides. +Point {13 12 12} had 0 blank sides. +Point {14 6 2} had 4 blank sides. +Point {14 7 15} had 0 blank sides. +Point {9 15 13} had 0 blank sides. +Point {6 6 8} had 0 blank sides. +Point {6 12 8} had 0 blank sides. +Point {9 14 12} had 0 blank sides. +Point {12 5 11} had 0 blank sides. +Point {16 11 10} had 0 blank sides. +Point {12 13 12} had 0 blank sides. +Point {14 10 5} had 0 blank sides. +Point {6 16 5} had 2 blank sides. +Point {13 14 7} had 0 blank sides. +Point {13 8 7} had 0 blank sides. +Point {16 7 4} had 2 blank sides. +Point {5 11 2} had 3 blank sides. +Point {16 13 10} had 0 blank sides. +Point {9 6 14} had 0 blank sides. +Point {15 6 7} had 0 blank sides. +Point {13 7 16} had 0 blank sides. +Point {9 4 11} had 0 blank sides. +Point {5 16 6} had 1 blank sides. +Point {14 7 14} had 0 blank sides. +Point {14 3 5} had 4 blank sides. +Point {4 13 8} had 0 blank sides. +Point {3 15 10} had 1 blank sides. +Point {5 7 13} had 0 blank sides. +Point {7 8 11} had 0 blank sides. +Point {9 6 3} had 0 blank sides. +Point {14 11 5} had 0 blank sides. +Point {17 10 5} had 3 blank sides. +Point {3 10 15} had 2 blank sides. +Point {7 15 15} had 1 blank sides. +Point {16 7 7} had 0 blank sides. +Point {2 9 4} had 4 blank sides. +Point {12 15 14} had 0 blank sides. +Point {7 17 8} had 1 blank sides. +Point {13 11 8} had 0 blank sides. +Point {15 4 15} had 4 blank sides. +Point {7 3 8} had 0 blank sides. +Point {17 11 11} had 1 blank sides. +Point {6 11 2} had 1 blank sides. +Point {1 10 7} had 1 blank sides. +Point {9 10 16} had 0 blank sides. +Point {7 5 3} had 1 blank sides. +Point {18 7 7} had 4 blank sides. +Point {16 5 12} had 1 blank sides. +Point {12 4 7} had 0 blank sides. +Point {13 9 7} had 0 blank sides. +Point {14 7 6} had 0 blank sides. +Point {9 7 4} had 0 blank sides. +Point {7 18 10} had 2 blank sides. +Point {10 9 4} had 0 blank sides. +Point {6 10 9} had 0 blank sides. +Point {12 13 9} had 0 blank sides. +Point {5 12 4} had 0 blank sides. +Point {14 10 4} had 0 blank sides. +Point {5 9 4} had 0 blank sides. +Point {13 3 11} had 0 blank sides. +Point {17 15 11} had 5 blank sides. +Point {9 3 10} had 0 blank sides. +Point {8 17 10} had 0 blank sides. +Point {14 6 10} had 0 blank sides. +Point {17 14 10} had 3 blank sides. +Point {3 6 7} had 0 blank sides. +Point {10 5 15} had 0 blank sides. +Point {16 11 7} had 0 blank sides. +Point {14 10 14} had 0 blank sides. +Point {9 5 11} had 0 blank sides. +Point {9 8 9} had 0 blank sides. +Point {8 5 15} had 0 blank sides. +Point {13 5 14} had 0 blank sides. +Point {9 6 12} had 0 blank sides. +Point {10 11 13} had 0 blank sides. +Point {12 8 8} had 0 blank sides. +Point {15 8 11} had 0 blank sides. +Point {8 17 7} had 0 blank sides. +Point {16 8 4} had 2 blank sides. +Point {10 14 5} had 0 blank sides. +Point {17 10 4} had 2 blank sides. +Point {9 7 7} had 0 blank sides. +Point {10 3 9} had 0 blank sides. +Point {11 11 13} had 0 blank sides. +Point {17 6 10} had 1 blank sides. +Point {7 2 13} had 2 blank sides. +Point {14 4 7} had 0 blank sides. +Point {3 16 6} had 5 blank sides. +Point {11 5 6} had 0 blank sides. +Point {7 13 11} had 0 blank sides. +Point {8 8 9} had 0 blank sides. +Point {9 10 18} had 1 blank sides. +Point {3 8 13} had 0 blank sides. +Point {10 13 3} had 0 blank sides. +Point {6 6 6} had 0 blank sides. +Point {11 7 8} had 0 blank sides. +Point {12 9 14} had 0 blank sides. +Point {13 7 12} had 0 blank sides. +Point {10 12 3} had 0 blank sides. +Point {15 3 10} had 2 blank sides. +Point {17 10 14} had 1 blank sides. +Point {7 5 9} had 0 blank sides. +Point {9 9 6} had 0 blank sides. +Point {12 11 6} had 0 blank sides. +Point {6 10 12} had 0 blank sides. +Point {3 5 9} had 0 blank sides. +Point {4 4 13} had 1 blank sides. +Point {8 16 16} had 3 blank sides. +Point {1 9 7} had 1 blank sides. +Point {8 4 12} had 0 blank sides. +Point {6 7 5} had 0 blank sides. +Point {5 9 12} had 0 blank sides. +Point {11 2 11} had 0 blank sides. +Point {10 9 12} had 0 blank sides. +Point {2 9 9} had 0 blank sides. +Point {6 16 9} had 0 blank sides. +Point {5 14 6} had 0 blank sides. +Point {13 11 15} had 0 blank sides. +Point {2 6 13} had 4 blank sides. +Point {13 13 13} had 0 blank sides. +Point {6 13 10} had 0 blank sides. +Point {12 4 8} had 0 blank sides. +Point {8 1 9} had 2 blank sides. +Point {15 13 14} had 2 blank sides. +Point {3 6 5} had 2 blank sides. +Point {17 10 8} had 0 blank sides. +Point {3 6 15} had 3 blank sides. +Point {11 5 5} had 0 blank sides. +Point {4 6 10} had 0 blank sides. +Point {9 13 16} had 0 blank sides. +Point {9 11 9} had 0 blank sides. +Point {12 7 11} had 0 blank sides. +Point {7 16 10} had 0 blank sides. +Point {14 12 16} had 1 blank sides. +Point {3 8 3} had 3 blank sides. +Point {12 3 7} had 0 blank sides. +Point {14 15 11} had 0 blank sides. +Point {4 13 11} had 0 blank sides. +Point {10 12 18} had 2 blank sides. +Point {11 5 4} had 0 blank sides. +Point {12 12 4} had 0 blank sides. +Point {14 12 5} had 0 blank sides. +Point {11 18 6} had 2 blank sides. +Point {11 15 14} had 0 blank sides. +Point {9 7 18} had 2 blank sides. +Point {15 14 11} had 0 blank sides. +Point {4 12 15} had 1 blank sides. +Point {9 5 7} had 0 blank sides. +Point {14 10 8} had 0 blank sides. +Point {12 4 4} had 0 blank sides. +Point {14 13 5} had 0 blank sides. +Point {12 8 18} had 3 blank sides. +Point {6 6 9} had 0 blank sides. +Point {7 8 9} had 0 blank sides. +Point {7 11 12} had 0 blank sides. +Point {17 13 6} had 3 blank sides. +Point {11 7 17} had 0 blank sides. +Point {10 7 6} had 0 blank sides. +Point {9 17 14} had 3 blank sides. +Point {1 8 10} had 1 blank sides. +Point {16 9 8} had 0 blank sides. +Point {8 8 11} had 0 blank sides. +Point {13 12 11} had 0 blank sides. +Point {6 15 4} had 2 blank sides. +Point {9 2 13} had 2 blank sides. +Point {15 6 5} had 1 blank sides. +Point {12 8 17} had 0 blank sides. +Point {13 9 18} had 3 blank sides. +Point {7 13 8} had 0 blank sides. +Point {10 11 6} had 0 blank sides. +Point {10 13 4} had 0 blank sides. +Point {15 9 5} had 0 blank sides. +Point {15 6 15} had 1 blank sides. +Point {15 15 9} had 0 blank sides. +Point {14 4 8} had 0 blank sides. +Point {3 7 8} had 0 blank sides. +Point {6 16 7} had 0 blank sides. +Point {13 14 13} had 0 blank sides. +Point {7 11 9} had 0 blank sides. +Point {10 10 13} had 0 blank sides. +Point {14 12 10} had 0 blank sides. +Point {12 5 7} had 0 blank sides. +Point {13 4 11} had 0 blank sides. +Point {14 14 11} had 0 blank sides. +Point {8 10 2} had 0 blank sides. +Point {2 9 12} had 1 blank sides. +Point {10 7 14} had 0 blank sides. +Point {10 9 9} had 0 blank sides. +Point {11 11 6} had 0 blank sides. +Point {14 9 5} had 0 blank sides. +Point {16 6 7} had 0 blank sides. +Point {15 11 14} had 0 blank sides. +Point {12 16 10} had 0 blank sides. +Point {12 10 3} had 0 blank sides. +Point {11 16 3} had 4 blank sides. +Point {13 12 17} had 3 blank sides. +Point {5 9 9} had 0 blank sides. +Point {11 16 13} had 0 blank sides. +Point {12 17 13} had 1 blank sides. +Point {12 6 16} had 0 blank sides. +Point {2 13 14} had 5 blank sides. +Point {10 16 10} had 0 blank sides. +Point {9 8 11} had 0 blank sides. +Point {12 11 13} had 0 blank sides. +Point {15 8 9} had 0 blank sides. +Point {11 4 5} had 0 blank sides. +Point {4 5 8} had 0 blank sides. +Point {14 12 7} had 0 blank sides. +Point {3 4 12} had 2 blank sides. +Point {8 14 12} had 0 blank sides. +Point {9 11 12} had 0 blank sides. +Point {10 7 15} had 0 blank sides. +Point {12 16 13} had 0 blank sides. +Point {6 12 4} had 0 blank sides. +Point {15 8 5} had 0 blank sides. +Point {7 8 14} had 0 blank sides. +Point {8 5 9} had 0 blank sides. +Point {10 6 6} had 0 blank sides. +Point {6 2 10} had 1 blank sides. +Point {5 7 12} had 0 blank sides. +Point {6 8 6} had 0 blank sides. +Point {10 5 9} had 0 blank sides. +Point {2 5 11} had 2 blank sides. +Point {6 11 10} had 0 blank sides. +Point {11 15 9} had 0 blank sides. +Point {13 15 12} had 0 blank sides. +Point {10 16 13} had 0 blank sides. +Point {8 2 10} had 0 blank sides. +Point {7 1 12} had 4 blank sides. +Point {11 16 10} had 0 blank sides. +Point {5 17 7} had 3 blank sides. +Point {7 9 7} had 0 blank sides. +Point {11 8 4} had 0 blank sides. +Point {7 5 15} had 0 blank sides. +Point {16 4 10} had 2 blank sides. +Point {17 13 11} had 3 blank sides. +Point {16 10 11} had 0 blank sides. +Point {12 3 8} had 0 blank sides. +Point {4 14 7} had 0 blank sides. +Point {8 4 5} had 0 blank sides. +Point {5 6 11} had 0 blank sides. +Point {5 11 10} had 0 blank sides. +Point {13 10 7} had 0 blank sides. +Point {4 8 4} had 0 blank sides. +Point {17 8 12} had 0 blank sides. +Point {11 13 3} had 0 blank sides. +Point {8 3 16} had 3 blank sides. +Point {5 17 10} had 1 blank sides. +Point {9 10 13} had 0 blank sides. +Point {11 10 9} had 0 blank sides. +Point {14 13 12} had 0 blank sides. +Point {14 8 4} had 0 blank sides. +Point {8 13 16} had 0 blank sides. +Point {8 14 5} had 0 blank sides. +Point {11 6 12} had 0 blank sides. +Point {15 8 14} had 0 blank sides. +Point {8 6 15} had 0 blank sides. +Point {8 5 3} had 0 blank sides. +Point {10 8 16} had 0 blank sides. +Point {10 17 4} had 2 blank sides. +Point {4 13 6} had 0 blank sides. +Point {15 10 11} had 0 blank sides. +Point {9 4 9} had 0 blank sides. +Point {7 8 5} had 0 blank sides. +Point {6 11 7} had 0 blank sides. +Point {6 14 13} had 0 blank sides. +Point {7 7 7} had 0 blank sides. +Point {11 1 14} had 5 blank sides. +Point {10 5 3} had 0 blank sides. +Point {13 18 8} had 4 blank sides. +Point {2 7 9} had 1 blank sides. +Point {7 16 13} had 0 blank sides. +Point {5 12 8} had 0 blank sides. +Point {6 5 8} had 0 blank sides. +Point {8 6 5} had 0 blank sides. +Point {9 8 10} had 0 blank sides. +Point {11 7 10} had 0 blank sides. +Point {2 8 7} had 0 blank sides. +Point {10 8 2} had 0 blank sides. +Point {13 2 11} had 1 blank sides. +Point {5 14 16} had 4 blank sides. +Point {7 16 3} had 4 blank sides. +Point {11 4 12} had 0 blank sides. +Point {4 2 11} had 5 blank sides. +Point {5 13 14} had 0 blank sides. +Point {9 15 4} had 0 blank sides. +Point {10 9 1} had 2 blank sides. +Point {10 11 17} had 0 blank sides. +Point {6 3 10} had 0 blank sides. +Point {10 4 15} had 0 blank sides. +Point {13 5 4} had 1 blank sides. +Point {5 15 9} had 0 blank sides. +Point {7 6 15} had 0 blank sides. +Point {5 10 11} had 0 blank sides. +Point {13 7 13} had 0 blank sides. +Point {2 12 11} had 0 blank sides. +Point {11 11 17} had 0 blank sides. +Point {16 5 10} had 0 blank sides. +Point {5 7 16} had 0 blank sides. +Point {13 5 5} had 0 blank sides. +Point {7 6 5} had 0 blank sides. +Point {7 7 4} had 0 blank sides. +Point {1 8 11} had 2 blank sides. +Point {10 12 14} had 0 blank sides. +Point {8 8 10} had 0 blank sides. +Point {8 11 14} had 0 blank sides. +Point {10 6 8} had 0 blank sides. +Point {11 6 14} had 0 blank sides. +Point {5 11 7} had 0 blank sides. +Point {11 6 3} had 0 blank sides. +Point {11 17 6} had 0 blank sides. +Point {10 2 5} had 3 blank sides. +Point {5 6 17} had 3 blank sides. +Point {16 9 11} had 0 blank sides. +Point {11 14 13} had 0 blank sides. +Point {9 1 5} had 4 blank sides. +Point {14 13 9} had 0 blank sides. +Point {13 6 4} had 0 blank sides. +Point {14 17 10} had 2 blank sides. +Point {15 7 11} had 0 blank sides. +Point {8 6 7} had 0 blank sides. +Point {16 12 9} had 0 blank sides. +Point {2 9 15} had 3 blank sides. +Point {6 15 13} had 0 blank sides. +Point {12 15 9} had 0 blank sides. +Point {12 9 16} had 0 blank sides. +Point {7 10 11} had 0 blank sides. +Point {7 13 6} had 0 blank sides. +Point {12 13 5} had 0 blank sides. +Point {8 9 5} had 0 blank sides. +Point {5 8 4} had 0 blank sides. +Point {11 17 5} had 2 blank sides. +Point {5 3 10} had 0 blank sides. +Point {17 7 6} had 1 blank sides. +Point {10 15 7} had 0 blank sides. +Point {6 14 7} had 0 blank sides. +Point {8 8 5} had 0 blank sides. +Point {9 9 10} had 0 blank sides. +Point {17 13 8} had 1 blank sides. +Point {12 2 13} had 1 blank sides. +Point {13 5 6} had 0 blank sides. +Point {10 10 18} had 1 blank sides. +Point {6 9 5} had 0 blank sides. +Point {8 7 11} had 0 blank sides. +Point {11 13 4} had 0 blank sides. +Point {3 13 13} had 2 blank sides. +Point {6 13 17} had 2 blank sides. +Point {2 12 12} had 0 blank sides. +Point {4 15 7} had 1 blank sides. +Point {7 8 10} had 0 blank sides. +Point {10 14 12} had 0 blank sides. +Point {15 12 9} had 0 blank sides. +Point {13 15 8} had 0 blank sides. +Point {14 17 7} had 3 blank sides. +Point {11 5 14} had 0 blank sides. +Point {7 6 7} had 0 blank sides. +Point {9 8 5} had 0 blank sides. +Point {11 14 7} had 0 blank sides. +Point {12 12 8} had 0 blank sides. +Point {7 4 15} had 0 blank sides. +Point {3 11 8} had 0 blank sides. +Point {16 16 7} had 4 blank sides. +Point {11 2 15} had 2 blank sides. +Point {4 7 5} had 0 blank sides. +Point {10 8 15} had 0 blank sides. +Point {17 9 7} had 1 blank sides. +Point {7 3 7} had 0 blank sides. +Point {13 4 9} had 0 blank sides. +Point {14 11 11} had 0 blank sides. +Point {4 11 3} had 2 blank sides. +Point {7 15 11} had 0 blank sides. +Point {9 14 5} had 0 blank sides. +Point {8 15 5} had 0 blank sides. +Point {4 11 4} had 0 blank sides. +Point {5 2 10} had 3 blank sides. +Point {10 6 9} had 0 blank sides. +Point {14 10 10} had 0 blank sides. +Point {11 3 11} had 0 blank sides. +Point {4 11 16} had 1 blank sides. +Point {1 8 9} had 2 blank sides. +Point {9 10 1} had 2 blank sides. +Point {13 13 2} had 1 blank sides. +Point {6 8 12} had 0 blank sides. +Point {8 8 14} had 0 blank sides. +Point {4 17 10} had 3 blank sides. +Point {3 5 15} had 4 blank sides. +Point {10 10 16} had 0 blank sides. +Point {5 14 8} had 0 blank sides. +Point {14 10 6} had 0 blank sides. +Point {3 7 10} had 0 blank sides. +Point {8 3 12} had 0 blank sides. +Point {4 10 7} had 0 blank sides. +Point {9 16 16} had 4 blank sides. +Point {8 2 14} had 3 blank sides. +Point {10 9 15} had 0 blank sides. +Point {15 8 10} had 0 blank sides. +Point {17 8 6} had 2 blank sides. +Point {14 12 6} had 0 blank sides. +Point {5 9 15} had 0 blank sides. +Point {0 7 9} had 6 blank sides. +Point {9 8 14} had 0 blank sides. +Point {9 9 13} had 0 blank sides. +Point {12 11 17} had 0 blank sides. +Point {17 10 6} had 1 blank sides. +Point {10 1 6} had 2 blank sides. +Point {6 4 15} had 2 blank sides. +Point {11 10 12} had 0 blank sides. +Point {14 12 13} had 0 blank sides. +Point {16 14 7} had 0 blank sides. +Point {4 14 13} had 0 blank sides. +Point {17 10 10} had 0 blank sides. +Point {6 9 9} had 0 blank sides. +Point {4 6 9} had 0 blank sides. +Point {10 16 4} had 1 blank sides. +Point {2 12 9} had 0 blank sides. +Point {17 8 14} had 3 blank sides. +Point {9 3 7} had 0 blank sides. +Point {4 9 13} had 0 blank sides. +Point {4 12 14} had 0 blank sides. +Point {9 5 10} had 0 blank sides. +Point {9 8 6} had 0 blank sides. +Point {11 11 4} had 0 blank sides. +Point {12 6 13} had 0 blank sides. +Point {10 4 11} had 0 blank sides. +Point {11 11 3} had 0 blank sides. +Point {16 4 6} had 3 blank sides. +Point {6 16 11} had 0 blank sides. +Point {15 12 12} had 0 blank sides. +Point {5 5 9} had 0 blank sides. +Point {8 9 9} had 0 blank sides. +Point {8 12 6} had 0 blank sides. +Point {11 10 5} had 0 blank sides. +Point {12 10 13} had 0 blank sides. +Point {4 15 6} had 2 blank sides. +Point {8 7 17} had 0 blank sides. +Point {5 10 7} had 0 blank sides. +Point {2 5 12} had 3 blank sides. +Point {15 13 11} had 0 blank sides. +Point {8 12 13} had 0 blank sides. +Point {11 11 16} had 0 blank sides. +Point {14 6 6} had 0 blank sides. +Point {7 2 14} had 3 blank sides. +Point {12 16 4} had 3 blank sides. +Point {9 13 7} had 0 blank sides. +Point {10 8 7} had 0 blank sides. +Point {11 12 10} had 0 blank sides. +Point {10 15 6} had 0 blank sides. +Point {14 13 4} had 0 blank sides. +Point {9 11 1} had 2 blank sides. +Point {4 13 14} had 1 blank sides. +Point {6 6 10} had 0 blank sides. +Point {11 9 13} had 0 blank sides. +Point {13 13 10} had 0 blank sides. +Point {8 10 15} had 0 blank sides. +Point {16 12 12} had 1 blank sides. +Point {14 5 8} had 0 blank sides. +Point {12 4 16} had 1 blank sides. +Point {6 13 13} had 0 blank sides. +Point {10 11 16} had 0 blank sides. +Point {13 7 9} had 0 blank sides. +Point {14 11 12} had 0 blank sides. +Point {10 14 13} had 0 blank sides. +Point {15 10 7} had 0 blank sides. +Point {14 16 13} had 2 blank sides. +Point {8 16 6} had 0 blank sides. +Point {15 15 10} had 0 blank sides. +Point {9 15 8} had 0 blank sides. +Point {7 8 12} had 0 blank sides. +Point {10 11 4} had 0 blank sides. +Point {11 12 7} had 0 blank sides. +Point {17 6 6} had 2 blank sides. +Point {15 4 9} had 0 blank sides. +Point {13 5 16} had 1 blank sides. +Point {5 13 6} had 0 blank sides. +Point {10 10 3} had 0 blank sides. +Point {8 8 6} had 0 blank sides. +Point {10 11 3} had 0 blank sides. +Point {13 11 7} had 0 blank sides. +Point {16 11 8} had 0 blank sides. +Point {15 9 15} had 0 blank sides. +Point {10 13 5} had 0 blank sides. +Point {6 8 10} had 0 blank sides. +Point {17 6 8} had 1 blank sides. +Point {11 10 4} had 0 blank sides. +Point {14 11 9} had 0 blank sides. +Point {14 8 8} had 0 blank sides. +Point {1 13 11} had 4 blank sides. +Point {5 3 8} had 0 blank sides. +Point {15 5 6} had 0 blank sides. +Point {9 18 9} had 1 blank sides. +Point {7 16 4} had 1 blank sides. +Point {11 10 14} had 0 blank sides. +Point {12 5 10} had 0 blank sides. +Point {11 9 10} had 0 blank sides. +Point {10 2 15} had 3 blank sides. +Point {9 2 10} had 0 blank sides. +Point {13 16 6} had 0 blank sides. +Point {11 4 13} had 0 blank sides. +Point {12 17 14} had 3 blank sides. +Point {5 6 7} had 0 blank sides. +Point {4 8 8} had 0 blank sides. +Point {13 9 11} had 0 blank sides. +Point {13 10 11} had 0 blank sides. +Point {16 10 7} had 0 blank sides. +Point {7 11 1} had 3 blank sides. +Point {9 17 13} had 1 blank sides. +Point {11 12 16} had 0 blank sides. +Point {8 9 12} had 0 blank sides. +Point {6 6 2} had 4 blank sides. +Point {4 14 12} had 0 blank sides. +Point {17 9 8} had 1 blank sides. +Point {6 9 12} had 0 blank sides. +Point {11 12 5} had 0 blank sides. +Point {13 11 10} had 0 blank sides. +Point {14 6 8} had 0 blank sides. +Point {2 13 11} had 0 blank sides. +Point {15 8 12} had 0 blank sides. +Point {5 8 17} had 2 blank sides. +Point {11 8 8} had 0 blank sides. +Point {7 14 15} had 0 blank sides. +Point {14 9 15} had 0 blank sides. +Point {3 12 8} had 0 blank sides. +Point {9 1 7} had 2 blank sides. +Point {6 12 2} had 2 blank sides. +Point {5 4 7} had 0 blank sides. +Point {4 9 10} had 0 blank sides. +Point {11 13 12} had 0 blank sides. +Point {5 14 4} had 2 blank sides. +Point {8 18 9} had 1 blank sides. +Point {9 12 16} had 0 blank sides. +Point {6 15 16} had 4 blank sides. +Point {12 11 16} had 0 blank sides. +Point {9 15 12} had 0 blank sides. +Point {8 3 15} had 1 blank sides. +Point {18 11 12} had 3 blank sides. +Point {7 6 17} had 2 blank sides. +Point {8 16 14} had 0 blank sides. +Point {4 7 15} had 0 blank sides. +Point {9 12 5} had 0 blank sides. +Point {14 13 3} had 1 blank sides. +Point {11 15 3} had 1 blank sides. +Point {13 14 5} had 0 blank sides. +Point {7 12 6} had 0 blank sides. +Point {12 11 3} had 0 blank sides. +Point {11 8 18} had 1 blank sides. +Point {15 5 4} had 2 blank sides. +Point {4 10 11} had 0 blank sides. +Point {5 6 15} had 0 blank sides. +Point {17 7 5} had 4 blank sides. +Point {10 1 10} had 2 blank sides. +Point {4 7 14} had 0 blank sides. +Point {7 12 13} had 0 blank sides. +Point {6 3 8} had 0 blank sides. +Point {5 6 5} had 0 blank sides. +Point {12 7 10} had 0 blank sides. +Point {12 11 4} had 0 blank sides. +Point {8 7 8} had 0 blank sides. +Point {9 2 14} had 2 blank sides. +Point {15 5 5} had 1 blank sides. +Point {17 8 10} had 0 blank sides. +Point {6 9 4} had 0 blank sides. +Point {6 4 11} had 0 blank sides. +Point {6 8 5} had 0 blank sides. +Point {6 10 10} had 0 blank sides. +Point {9 6 4} had 0 blank sides. +Point {15 13 8} had 0 blank sides. +Point {5 7 3} had 1 blank sides. +Point {15 8 6} had 0 blank sides. +Point {8 6 17} had 1 blank sides. +Point {3 14 8} had 0 blank sides. +Point {9 5 13} had 0 blank sides. +Point {16 13 13} had 2 blank sides. +Point {6 10 6} had 0 blank sides. +Point {8 9 4} had 0 blank sides. +Point {4 7 6} had 0 blank sides. +Point {14 17 8} had 2 blank sides. +Point {7 11 5} had 0 blank sides. +Point {7 14 9} had 0 blank sides. +Point {11 10 8} had 0 blank sides. +Point {3 9 13} had 0 blank sides. +Point {15 7 8} had 0 blank sides. +Point {16 14 12} had 2 blank sides. +Point {4 6 8} had 0 blank sides. +Point {15 12 11} had 0 blank sides. +Point {13 15 4} had 2 blank sides. +Point {9 13 15} had 0 blank sides. +Point {8 15 11} had 0 blank sides. +Point {3 9 10} had 0 blank sides. +Point {9 19 7} had 5 blank sides. +Point {10 4 17} had 4 blank sides. +Point {11 13 9} had 0 blank sides. +Point {2 13 8} had 1 blank sides. +Point {4 6 6} had 0 blank sides. +Point {5 4 8} had 0 blank sides. +Point {4 16 12} had 3 blank sides. +Point {1 5 10} had 5 blank sides. +Point {7 15 5} had 0 blank sides. +Point {7 9 8} had 0 blank sides. +Point {6 14 12} had 0 blank sides. +Point {11 3 9} had 0 blank sides. +Point {14 6 9} had 0 blank sides. +Point {7 6 11} had 0 blank sides. +Point {9 8 12} had 0 blank sides. +Point {9 12 7} had 0 blank sides. +Point {13 16 14} had 1 blank sides. +Point {16 11 15} had 3 blank sides. +Point {7 14 14} had 0 blank sides. +Point {6 8 14} had 0 blank sides. +Point {7 1 8} had 4 blank sides. +Point {7 2 10} had 0 blank sides. +Point {16 12 11} had 0 blank sides. +Point {1 9 11} had 2 blank sides. +Point {7 4 11} had 0 blank sides. +Point {8 8 12} had 0 blank sides. +Point {10 14 7} had 0 blank sides. +Point {18 11 9} had 2 blank sides. +Point {12 3 10} had 0 blank sides. +Point {14 14 3} had 3 blank sides. +Point {7 13 14} had 0 blank sides. +Point {12 10 1} had 3 blank sides. +Point {7 8 6} had 0 blank sides. +Point {11 14 12} had 0 blank sides. +Point {17 6 9} had 2 blank sides. +Point {3 15 9} had 2 blank sides. +Point {2 8 15} had 4 blank sides. +Point {9 11 5} had 0 blank sides. +Point {8 6 11} had 0 blank sides. +Point {13 9 17} had 0 blank sides. +Point {11 8 17} had 0 blank sides. +Point {12 5 13} had 0 blank sides. +Point {6 11 18} had 4 blank sides. +Point {7 7 2} had 1 blank sides. +Point {5 8 8} had 0 blank sides. +Point {7 10 7} had 0 blank sides. +Point {9 12 10} had 0 blank sides. +Point {13 17 6} had 1 blank sides. +Point {3 13 10} had 0 blank sides. +Point {13 16 15} had 3 blank sides. +Point {11 13 5} had 0 blank sides. +Point {6 9 15} had 0 blank sides. +Point {12 5 12} had 0 blank sides. +Point {9 15 16} had 1 blank sides. +Point {12 10 16} had 0 blank sides. +Point {16 8 8} had 0 blank sides. +Point {6 15 12} had 0 blank sides. +Point {6 3 3} had 6 blank sides. +Point {12 18 9} had 3 blank sides. +Point {8 9 15} had 0 blank sides. +Point {14 9 12} had 0 blank sides. +Point {12 2 10} had 0 blank sides. +Point {6 3 7} had 0 blank sides. +Point {12 13 4} had 0 blank sides. +Point {2 7 12} had 2 blank sides. +Point {12 7 17} had 1 blank sides. +Point {6 14 5} had 0 blank sides. +Point {12 15 2} had 4 blank sides. +Point {17 4 9} had 5 blank sides. +Point {4 16 11} had 0 blank sides. +Point {10 6 2} had 0 blank sides. +Point {7 17 10} had 0 blank sides. +Point {17 10 9} had 0 blank sides. +Point {17 8 11} had 0 blank sides. +Point {16 9 7} had 0 blank sides. +Point {11 0 11} had 5 blank sides. +Point {8 12 7} had 0 blank sides. +Point {3 6 11} had 0 blank sides. +Point {6 10 14} had 0 blank sides. +Point {15 9 12} had 0 blank sides. +Point {11 14 5} had 0 blank sides. +Point {4 11 6} had 0 blank sides. +Point {3 9 6} had 0 blank sides. +Point {7 11 11} had 0 blank sides. +Point {8 15 15} had 0 blank sides. +Point {11 12 6} had 0 blank sides. +Point {14 14 10} had 0 blank sides. +Point {13 6 3} had 1 blank sides. +Point {7 17 7} had 0 blank sides. +Point {11 12 13} had 0 blank sides. +Point {12 8 4} had 0 blank sides. +Point {14 10 9} had 0 blank sides. +Point {14 7 5} had 0 blank sides. +Point {13 6 14} had 0 blank sides. +Point {9 5 17} had 3 blank sides. +Point {16 15 8} had 2 blank sides. +Point {16 5 11} had 0 blank sides. +Point {2 11 6} had 3 blank sides. +Point {6 10 4} had 0 blank sides. +Point {8 12 10} had 0 blank sides. +Point {15 9 9} had 0 blank sides. +Point {1 10 11} had 1 blank sides. +Point {2 5 10} had 0 blank sides. +Point {10 17 5} had 1 blank sides. +Point {5 2 13} had 4 blank sides. +Point {8 12 16} had 0 blank sides. +Point {13 8 2} had 1 blank sides. +Point {9 14 7} had 0 blank sides. +Point {13 14 12} had 0 blank sides. +Point {12 10 18} had 1 blank sides. +Point {10 8 1} had 2 blank sides. +Point {13 3 9} had 0 blank sides. +Point {9 4 15} had 0 blank sides. +Point {13 11 2} had 1 blank sides. +Point {8 12 5} had 0 blank sides. +Point {11 7 11} had 0 blank sides. +Point {9 5 12} had 0 blank sides. +Point {12 9 2} had 0 blank sides. +Point {1 9 8} had 1 blank sides. +Point {9 16 6} had 0 blank sides. +Point {5 5 15} had 0 blank sides. +Point {13 8 16} had 0 blank sides. +Point {5 7 9} had 0 blank sides. +Point {6 11 8} had 0 blank sides. +Point {10 4 9} had 0 blank sides. +Point {10 6 10} had 0 blank sides. +Point {9 6 18} had 2 blank sides. +Point {6 8 9} had 0 blank sides. +Point {10 3 11} had 0 blank sides. +Point {12 14 15} had 0 blank sides. +Point {15 14 10} had 0 blank sides. +Point {12 15 10} had 0 blank sides. +Point {16 16 11} had 4 blank sides. +Point {8 13 15} had 0 blank sides. +Point {15 4 11} had 0 blank sides. +Point {5 13 8} had 0 blank sides. +Point {15 6 11} had 0 blank sides. +Point {8 16 15} had 2 blank sides. +Point {12 5 17} had 3 blank sides. +Point {10 2 11} had 0 blank sides. +Point {5 11 8} had 0 blank sides. +Point {8 14 13} had 0 blank sides. +Point {9 11 11} had 0 blank sides. +Point {5 9 5} had 0 blank sides. +Point {6 13 2} had 3 blank sides. +Point {13 6 12} had 0 blank sides. +Point {8 17 8} had 0 blank sides. +Point {11 1 7} had 2 blank sides. +Point {3 12 4} had 2 blank sides. +Point {6 10 5} had 0 blank sides. +Point {7 9 11} had 0 blank sides. +Point {10 9 5} had 0 blank sides. +Point {14 9 9} had 0 blank sides. +Point {6 2 13} had 2 blank sides. +Point {6 7 6} had 0 blank sides. +Point {10 13 9} had 0 blank sides. +Point {15 7 10} had 0 blank sides. +Point {12 9 3} had 0 blank sides. +Point {11 15 2} had 3 blank sides. +Point {8 4 13} had 0 blank sides. +Point {4 4 12} had 0 blank sides. +Point {5 15 10} had 0 blank sides. +Point {16 15 12} had 3 blank sides. +Point {9 3 8} had 0 blank sides. +Point {15 5 14} had 1 blank sides. +Point {11 17 4} had 3 blank sides. +Point {4 9 6} had 0 blank sides. +Point {9 14 13} had 0 blank sides. +Point {8 10 17} had 0 blank sides. +Point {16 6 11} had 0 blank sides. +Point {13 15 13} had 0 blank sides. +Point {7 12 7} had 0 blank sides. +Point {8 7 10} had 0 blank sides. +Point {17 11 12} had 1 blank sides. +Point {4 11 13} had 0 blank sides. +Point {3 11 7} had 0 blank sides. +Point {6 7 14} had 0 blank sides. +Point {12 7 8} had 0 blank sides. +Point {13 12 9} had 0 blank sides. +Point {14 15 5} had 0 blank sides. +Point {4 14 5} had 1 blank sides. +Point {10 17 6} had 0 blank sides. +Point {12 14 9} had 0 blank sides. +Point {13 8 15} had 0 blank sides. +Point {8 9 1} had 1 blank sides. +Point {2 11 13} had 2 blank sides. +Point {13 4 15} had 0 blank sides. +Point {11 9 6} had 0 blank sides. +Point {7 12 10} had 0 blank sides. +Point {17 8 9} had 0 blank sides. +Point {6 15 8} had 0 blank sides. +Point {15 3 8} had 3 blank sides. +Point {12 13 3} had 0 blank sides. +Point {6 7 15} had 0 blank sides. +Point {8 3 14} had 0 blank sides. +Point {7 4 9} had 0 blank sides. +Point {8 13 7} had 0 blank sides. +Point {8 14 7} had 0 blank sides. +Point {10 12 15} had 0 blank sides. +Point {6 17 6} had 2 blank sides. +Point {17 11 9} had 0 blank sides. +Point {7 12 16} had 0 blank sides. +Point {18 8 13} had 3 blank sides. +Point {11 18 7} had 2 blank sides. +Point {6 10 8} had 0 blank sides. +Point {10 7 5} had 0 blank sides. +Point {10 13 12} had 0 blank sides. +Point {5 11 15} had 0 blank sides. +Point {11 5 16} had 0 blank sides. +Point {7 12 5} had 0 blank sides. +Point {9 12 6} had 0 blank sides. +Point {11 6 4} had 0 blank sides. +Point {11 10 10} had 0 blank sides. +Point {13 7 3} had 1 blank sides. +Point {18 12 10} had 3 blank sides. +Point {8 7 1} had 3 blank sides. +Point {12 12 2} had 0 blank sides. +Point {9 7 2} had 1 blank sides. +Point {9 10 3} had 0 blank sides. +Point {9 12 13} had 0 blank sides. +Point {14 9 4} had 0 blank sides. +Point {6 16 12} had 0 blank sides. +Point {16 5 7} had 1 blank sides. +Point {14 16 10} had 0 blank sides. +Point {17 10 12} had 0 blank sides. +Point {5 3 7} had 0 blank sides. +Point {17 9 11} had 0 blank sides. +Point {7 9 17} had 1 blank sides. +Point {5 13 11} had 0 blank sides. +Point {11 10 6} had 0 blank sides. +Point {15 9 4} had 0 blank sides. +Point {3 7 11} had 0 blank sides. +Point {12 2 14} had 2 blank sides. +Point {9 16 14} had 1 blank sides. +Point {11 18 13} had 4 blank sides. +Point {13 17 5} had 4 blank sides. +Point {11 16 4} had 0 blank sides. +Point {13 9 8} had 0 blank sides. +Point {15 13 6} had 0 blank sides. +Point {7 3 10} had 0 blank sides. +Point {3 4 13} had 3 blank sides. +Point {6 11 15} had 0 blank sides. +Point {11 18 11} had 1 blank sides. +Point {3 11 10} had 0 blank sides. +Point {14 10 12} had 0 blank sides. +Point {12 14 14} had 0 blank sides. +Point {6 4 9} had 0 blank sides. +Point {6 8 11} had 0 blank sides. +Point {11 15 10} had 0 blank sides. +Point {3 7 7} had 0 blank sides. +Point {9 2 11} had 0 blank sides. +Point {17 9 14} had 2 blank sides. +Point {10 12 7} had 0 blank sides. +Point {9 7 17} had 0 blank sides. +Point {7 17 5} had 2 blank sides. +Point {5 14 12} had 0 blank sides. +Point {10 7 3} had 0 blank sides. +Point {7 8 8} had 0 blank sides. +Point {9 6 6} had 0 blank sides. +Point {12 15 12} had 0 blank sides. +Point {6 12 17} had 2 blank sides. +Point {14 15 6} had 0 blank sides. +Point {3 13 11} had 0 blank sides. +Point {6 17 7} had 1 blank sides. +Point {6 3 6} had 0 blank sides. +Point {13 16 8} had 0 blank sides. +Point {10 13 7} had 0 blank sides. +Point {4 5 14} had 1 blank sides. +Point {13 7 5} had 0 blank sides. +Point {1 12 11} had 1 blank sides. +Point {16 4 7} had 2 blank sides. +Point {5 8 6} had 0 blank sides. +Point {6 6 12} had 0 blank sides. +Point {3 7 4} had 3 blank sides. +Point {6 4 12} had 0 blank sides. +Point {7 5 7} had 0 blank sides. +Point {10 12 10} had 0 blank sides. +Point {12 16 5} had 1 blank sides. +Point {11 3 14} had 0 blank sides. +Point {2 11 12} had 1 blank sides. +Point {8 13 9} had 0 blank sides. +Point {16 11 14} had 0 blank sides. +Point {10 1 11} had 1 blank sides. +Point {12 12 1} had 3 blank sides. +Point {3 8 7} had 0 blank sides. +Point {6 12 11} had 0 blank sides. +Point {9 9 9} had 0 blank sides. +Point {10 16 5} had 0 blank sides. +Point {3 5 11} had 0 blank sides. +Point {3 14 7} had 1 blank sides. +Point {6 17 10} had 1 blank sides. +Point {11 15 8} had 0 blank sides. +Point {17 11 13} had 1 blank sides. +Point {8 8 18} had 2 blank sides. +Point {4 11 12} had 0 blank sides. +Point {4 9 5} had 0 blank sides. +Point {11 14 2} had 2 blank sides. +Point {12 8 11} had 0 blank sides. +Point {15 8 8} had 0 blank sides. +Point {2 11 9} had 0 blank sides. +Point {17 10 7} had 1 blank sides. +Point {5 15 8} had 0 blank sides. +Point {5 5 13} had 0 blank sides. +Point {9 13 5} had 0 blank sides. +Point {11 8 12} had 0 blank sides. +Point {13 8 13} had 0 blank sides. +Point {11 2 13} had 1 blank sides. +Point {4 4 9} had 0 blank sides. +Point {8 8 17} had 0 blank sides. +Point {10 17 10} had 1 blank sides. +Point {4 10 10} had 0 blank sides. +Point {10 11 11} had 0 blank sides. +Point {10 12 5} had 0 blank sides. +Point {9 9 12} had 0 blank sides. +Point {4 10 6} had 0 blank sides. +Point {10 12 16} had 0 blank sides. +Point {2 14 10} had 3 blank sides. +Point {2 6 11} had 1 blank sides. +Point {6 14 4} had 0 blank sides. +Point {7 12 15} had 0 blank sides. +Point {4 11 9} had 0 blank sides. +Point {11 9 5} had 0 blank sides. +Point {8 11 2} had 0 blank sides. +Point {7 4 12} had 0 blank sides. +Point {11 14 4} had 0 blank sides. +Point {7 16 5} had 0 blank sides. +Point {6 6 3} had 0 blank sides. +Point {4 8 12} had 0 blank sides. +Point {6 10 11} had 0 blank sides. +Point {11 11 11} had 0 blank sides. +Point {14 10 7} had 0 blank sides. +Point {14 8 12} had 0 blank sides. +Point {14 13 16} had 2 blank sides. +Point {9 8 17} had 1 blank sides. +Point {4 6 4} had 2 blank sides. +Point {6 5 6} had 0 blank sides. +Point {5 4 6} had 0 blank sides. +Point {6 6 14} had 0 blank sides. +Point {8 13 12} had 0 blank sides. +Point {10 14 8} had 0 blank sides. +Point {8 14 6} had 0 blank sides. +Point {10 17 7} had 0 blank sides. +Point {12 2 15} had 3 blank sides. +Point {2 7 6} had 2 blank sides. +Point {13 9 16} had 0 blank sides. +Point {11 7 18} had 3 blank sides. +Point {8 16 8} had 0 blank sides. +Point {6 15 10} had 0 blank sides. +Point {9 6 8} had 0 blank sides. +Point {6 8 4} had 0 blank sides. +Point {13 15 9} had 0 blank sides. +Point {14 12 3} had 0 blank sides. +Point {7 8 17} had 0 blank sides. +Point {9 15 3} had 2 blank sides. +Point {11 4 15} had 0 blank sides. +Point {9 14 6} had 0 blank sides. +Point {7 13 2} had 2 blank sides. +Point {9 10 15} had 0 blank sides. +Point {5 4 14} had 0 blank sides. +Point {13 3 15} had 4 blank sides. +Point {6 7 16} had 0 blank sides. +Point {11 7 4} had 0 blank sides. +Point {11 15 12} had 0 blank sides. +Point {10 4 12} had 0 blank sides. +Point {15 11 7} had 0 blank sides. +Point {9 17 12} had 0 blank sides. +Point {3 10 16} had 2 blank sides. +Point {9 9 4} had 0 blank sides. +Point {11 8 6} had 0 blank sides. +Point {13 10 6} had 0 blank sides. +Point {13 8 3} had 0 blank sides. +Point {6 5 5} had 0 blank sides. +Point {13 10 10} had 0 blank sides. +Point {12 15 8} had 0 blank sides. +Point {12 3 13} had 0 blank sides. +Point {17 7 9} had 0 blank sides. +Point {13 1 10} had 3 blank sides. +Point {5 9 6} had 0 blank sides. +Point {7 9 14} had 0 blank sides. +Point {7 14 11} had 0 blank sides. +Point {6 5 4} had 0 blank sides. +Point {9 5 3} had 1 blank sides. +Point {12 16 9} had 0 blank sides. +Point {3 13 8} had 0 blank sides. +Point {16 4 8} had 2 blank sides. +Point {14 5 16} had 3 blank sides. +Point {7 7 10} had 0 blank sides. +Point {10 9 6} had 0 blank sides. +Point {11 7 7} had 0 blank sides. +Point {14 11 17} had 2 blank sides. +Point {17 11 6} had 1 blank sides. +Point {7 16 7} had 0 blank sides. +Point {14 8 6} had 0 blank sides. +Point {10 16 9} had 0 blank sides. +Point {14 6 4} had 0 blank sides. +Point {4 8 6} had 0 blank sides. +Point {7 2 11} had 0 blank sides. +Point {13 14 17} had 5 blank sides. +Point {9 7 8} had 0 blank sides. +Point {12 5 9} had 0 blank sides. +Point {13 5 8} had 0 blank sides. +Point {4 3 8} had 1 blank sides. +Point {10 3 12} had 0 blank sides. +Point {2 9 6} had 1 blank sides. +Point {5 8 12} had 0 blank sides. +Point {7 5 11} had 0 blank sides. +Point {9 6 9} had 0 blank sides. +Point {10 13 15} had 0 blank sides. +Point {12 3 4} had 3 blank sides. +Point {14 16 12} had 0 blank sides. +Point {4 7 13} had 0 blank sides. +Point {8 1 10} had 2 blank sides. +Point {6 16 10} had 0 blank sides. +Point {12 7 2} had 1 blank sides. +Point {5 13 10} had 0 blank sides. +Point {13 17 7} had 1 blank sides. +Point {1 12 12} had 3 blank sides. +Point {9 1 12} had 3 blank sides. +Point {14 3 8} had 1 blank sides. +Point {15 11 10} had 0 blank sides. +Point {8 6 16} had 0 blank sides. +Point {3 5 7} had 1 blank sides. +Point {10 10 17} had 0 blank sides. +Point {5 3 6} had 1 blank sides. +Point {8 8 8} had 0 blank sides. +Point {8 12 15} had 0 blank sides. +Point {13 13 6} had 0 blank sides. +Point {5 5 10} had 0 blank sides. +Point {10 16 7} had 0 blank sides. +Point {18 7 8} had 2 blank sides. +Point {1 10 8} had 2 blank sides. +Point {7 17 6} had 1 blank sides. +Point {4 14 4} had 3 blank sides. +Point {7 16 9} had 0 blank sides. +Point {7 7 1} had 2 blank sides. +Point {9 8 8} had 0 blank sides. +Point {7 8 18} had 3 blank sides. +Point {3 14 13} had 1 blank sides. +Point {6 7 12} had 0 blank sides. +Point {9 5 9} had 0 blank sides. +Point {12 8 9} had 0 blank sides. +Point {12 1 12} had 3 blank sides. +Point {16 7 8} had 0 blank sides. +Point {18 14 8} had 5 blank sides. +Point {3 9 5} had 1 blank sides. +Point {12 16 7} had 0 blank sides. +Point {12 5 3} had 2 blank sides. +Point {5 15 12} had 0 blank sides. +Point {7 6 16} had 0 blank sides. +Point {6 12 12} had 0 blank sides. +Point {10 14 16} had 0 blank sides. +Point {7 3 5} had 0 blank sides. +Point {16 15 10} had 2 blank sides. +Point {17 5 10} had 2 blank sides. +Point {13 17 10} had 1 blank sides. +Point {12 11 11} had 0 blank sides. +Point {13 12 8} had 0 blank sides. +Point {9 3 6} had 0 blank sides. +Point {11 15 16} had 2 blank sides. +Point {9 11 3} had 0 blank sides. +Point {12 4 10} had 0 blank sides. +Point {13 10 4} had 0 blank sides. +Point {15 13 10} had 0 blank sides. +Point {14 7 9} had 0 blank sides. +Point {11 16 7} had 0 blank sides. +Point {10 18 7} had 1 blank sides. +Point {4 4 11} had 1 blank sides. +Point {16 10 9} had 0 blank sides. +Point {6 15 3} had 3 blank sides. +Point {9 11 4} had 0 blank sides. +Point {10 12 13} had 0 blank sides. +Point {10 12 6} had 0 blank sides. +Point {2 8 13} had 2 blank sides. +Point {10 6 3} had 0 blank sides. +Point {4 13 13} had 0 blank sides. +Point {9 11 16} had 0 blank sides. +Point {11 3 15} had 0 blank sides. +Point {12 8 5} had 0 blank sides. +Point {8 11 7} had 0 blank sides. +Point {11 10 11} had 0 blank sides. +Point {13 10 14} had 0 blank sides. +Point {6 13 14} had 0 blank sides. +Point {14 16 11} had 0 blank sides. +Point {9 16 8} had 0 blank sides. +Point {9 12 15} had 0 blank sides. +Point {5 11 14} had 0 blank sides. +Point {10 6 14} had 0 blank sides. +Point {11 6 8} had 0 blank sides. +Point {6 11 14} had 0 blank sides. +Point {13 15 14} had 0 blank sides. +Point {6 16 13} had 1 blank sides. +Point {7 7 17} had 1 blank sides. +Point {10 4 5} had 0 blank sides. +Point {3 12 9} had 0 blank sides. +Point {6 14 17} had 4 blank sides. +Point {12 9 18} had 1 blank sides. +Point {10 14 6} had 0 blank sides. +Point {2 9 10} had 0 blank sides. +Point {11 11 1} had 3 blank sides. +Point {8 14 8} had 0 blank sides. +Point {10 2 10} had 0 blank sides. +Point {9 10 17} had 0 blank sides. +Point {9 2 15} had 3 blank sides. +Point {4 10 8} had 0 blank sides. +Point {5 9 13} had 0 blank sides. +Point {9 9 15} had 0 blank sides. +Point {16 8 12} had 0 blank sides. +Point {10 18 11} had 2 blank sides. +Point {13 6 2} had 1 blank sides. +Point {10 9 13} had 0 blank sides. +Point {13 13 11} had 0 blank sides. +Point {14 11 6} had 0 blank sides. +Point {10 9 10} had 0 blank sides. +Point {6 2 5} had 3 blank sides. +Point {15 15 12} had 0 blank sides. +Point {8 3 9} had 0 blank sides. +Point {7 11 3} had 0 blank sides. +Point {15 6 16} had 4 blank sides. +Point {5 10 9} had 0 blank sides. +Point {8 11 10} had 0 blank sides. +Point {13 10 5} had 0 blank sides. +Point {12 2 11} had 0 blank sides. +Point {4 3 7} had 3 blank sides. +Point {5 9 10} had 0 blank sides. +Point {7 11 4} had 0 blank sides. +Point {11 5 8} had 0 blank sides. +Point {10 6 12} had 0 blank sides. +Point {8 4 15} had 0 blank sides. +Point {2 9 13} had 1 blank sides. +Point {9 17 9} had 0 blank sides. +Point {14 4 10} had 0 blank sides. +Point {8 2 5} had 1 blank sides. +Point {7 11 16} had 0 blank sides. +Point {10 5 7} had 0 blank sides. +Point {11 13 7} had 0 blank sides. +Point {12 8 14} had 0 blank sides. +Point {12 12 12} had 0 blank sides. +Point {8 17 4} had 2 blank sides. +Point {14 3 7} had 3 blank sides. +Point {7 9 16} had 0 blank sides. +Point {2 12 8} had 2 blank sides. +Point {12 13 16} had 0 blank sides. +Point {9 14 16} had 0 blank sides. +Point {11 16 9} had 0 blank sides. +Point {5 12 17} had 3 blank sides. +Point {8 5 7} had 0 blank sides. +Point {1 8 8} had 2 blank sides. +Point {5 7 5} had 0 blank sides. +Point {8 18 10} had 1 blank sides. +Point {2 13 10} had 1 blank sides. +Point {12 6 5} had 0 blank sides. +Point {12 11 5} had 0 blank sides. +Point {15 10 9} had 0 blank sides. +Point {13 4 13} had 0 blank sides. +Point {7 10 12} had 0 blank sides. +Point {10 10 15} had 0 blank sides. +Point {11 6 6} had 0 blank sides. +Point {12 6 15} had 0 blank sides. +Point {12 10 2} had 0 blank sides. +Point {7 15 6} had 0 blank sides. +Point {13 6 10} had 0 blank sides. +Point {8 10 3} had 0 blank sides. +Point {5 12 11} had 0 blank sides. +Point {13 2 13} had 3 blank sides. +Point {1 10 10} had 1 blank sides. +Point {5 10 12} had 0 blank sides. +Point {9 7 10} had 0 blank sides. +Point {13 9 14} had 0 blank sides. +Point {13 13 8} had 0 blank sides. +Point {9 13 9} had 0 blank sides. +Point {11 13 15} had 0 blank sides. +Point {1 10 6} had 3 blank sides. +Point {9 9 1} had 1 blank sides. +Point {14 12 14} had 0 blank sides. +Point {13 18 9} had 3 blank sides. +Point {6 4 5} had 0 blank sides. +Point {4 10 5} had 0 blank sides. +Point {9 4 13} had 0 blank sides. +Point {3 10 13} had 0 blank sides. +Point {7 7 8} had 0 blank sides. +Point {17 14 9} had 2 blank sides. +Point {10 15 5} had 0 blank sides. +Point {16 13 14} had 2 blank sides. +Point {18 11 6} had 4 blank sides. +Point {12 12 11} had 0 blank sides. +Point {12 17 11} had 0 blank sides. +Point {8 14 16} had 1 blank sides. +Point {11 6 9} had 0 blank sides. +Point {12 6 7} had 0 blank sides. +Point {15 10 12} had 0 blank sides. +Point {4 15 5} had 3 blank sides. +Point {17 5 12} had 3 blank sides. +Point {2 5 9} had 2 blank sides. +Point {6 5 14} had 0 blank sides. +Point {7 10 9} had 0 blank sides. +Point {10 5 11} had 0 blank sides. +Point {14 11 13} had 0 blank sides. +Point {12 11 1} had 1 blank sides. +Point {9 18 10} had 1 blank sides. +Point {11 17 8} had 0 blank sides. +Point {5 5 12} had 0 blank sides. +Point {9 5 15} had 0 blank sides. +Point {5 12 12} had 0 blank sides. +Point {12 14 11} had 0 blank sides. +Point {7 3 13} had 0 blank sides. +Point {4 7 16} had 1 blank sides. +Point {12 12 17} had 1 blank sides. +Point {8 5 11} had 0 blank sides. +Point {8 15 7} had 0 blank sides. +Point {13 14 4} had 0 blank sides. +Point {16 7 10} had 0 blank sides. +Point {8 7 2} had 0 blank sides. +Point {18 9 11} had 2 blank sides. +Point {5 14 5} had 0 blank sides. +Point {4 10 4} had 0 blank sides. +Point {7 4 5} had 0 blank sides. +Point {16 10 12} had 0 blank sides. +Point {9 13 12} had 0 blank sides. +Point {10 11 5} had 0 blank sides. +Point {12 9 7} had 0 blank sides. +Point {7 3 4} had 3 blank sides. +Point {4 10 14} had 0 blank sides. +Point {11 1 12} had 2 blank sides. +Point {9 14 8} had 0 blank sides. +Point {4 5 6} had 1 blank sides. +Point {11 16 5} had 0 blank sides. +Point {4 16 10} had 1 blank sides. +Point {18 7 10} had 2 blank sides. +Point {4 7 12} had 0 blank sides. +Point {7 13 13} had 0 blank sides. +Point {15 4 12} had 0 blank sides. +Point {12 3 5} had 1 blank sides. +Point {13 14 2} had 3 blank sides. +Point {12 5 15} had 0 blank sides. +Point {5 13 17} had 4 blank sides. +Point {16 8 6} had 0 blank sides. +Point {8 13 5} had 0 blank sides. +Point {3 13 6} had 3 blank sides. +Point {1 11 9} had 2 blank sides. +Point {15 15 8} had 0 blank sides. +Point {9 15 10} had 0 blank sides. +Point {10 7 9} had 0 blank sides. +Point {12 8 10} had 0 blank sides. +Point {5 6 13} had 0 blank sides. +Point {13 12 4} had 0 blank sides. +Point {11 12 15} had 0 blank sides. +Point {17 9 16} had 5 blank sides. +Point {6 7 13} had 0 blank sides. +Point {11 11 5} had 0 blank sides. +Point {13 10 8} had 0 blank sides. +Point {8 4 11} had 0 blank sides. +Point {16 8 14} had 0 blank sides. +Point {12 17 12} had 1 blank sides. +Point {15 10 14} had 0 blank sides. +Point {14 6 14} had 0 blank sides. +Point {1 11 11} had 2 blank sides. +Point {9 3 13} had 0 blank sides. +Point {2 15 11} had 3 blank sides. +Point {11 16 12} had 0 blank sides. +Point {11 15 13} had 0 blank sides. +Point {7 6 13} had 0 blank sides. +Point {7 17 4} had 3 blank sides. +Point {12 10 17} had 0 blank sides. +Point {14 6 3} had 1 blank sides. +Point {16 15 9} had 2 blank sides. +Point {13 14 16} had 1 blank sides. +Point {9 2 5} had 0 blank sides. +Point {9 6 2} had 1 blank sides. +Point {5 12 9} had 0 blank sides. +Point {15 10 4} had 0 blank sides. +Point {12 9 8} had 0 blank sides. +Point {7 11 17} had 1 blank sides. +Point {5 10 14} had 0 blank sides. +Point {11 2 14} had 1 blank sides. +Point {11 1 8} had 2 blank sides. +Point {12 16 11} had 0 blank sides. +Point {12 4 6} had 0 blank sides. +Point {7 10 8} had 0 blank sides. +Point {8 6 13} had 0 blank sides. +Point {16 10 5} had 0 blank sides. +Point {10 16 11} had 0 blank sides. +Point {17 13 10} had 1 blank sides. +Point {14 13 15} had 1 blank sides. +Point {14 14 15} had 1 blank sides. +Point {4 11 5} had 0 blank sides. +Point {16 14 6} had 2 blank sides. +Point {5 10 4} had 0 blank sides. +Point {15 11 15} had 1 blank sides. +Point {7 5 13} had 0 blank sides. +Point {17 12 6} had 1 blank sides. +Point {8 3 11} had 0 blank sides. +Point {16 8 5} had 1 blank sides. +Point {15 7 4} had 0 blank sides. +Point {11 12 3} had 0 blank sides. +Point {8 18 8} had 2 blank sides. +Point {5 7 14} had 0 blank sides. +Point {11 9 1} had 2 blank sides. +Point {8 9 6} had 0 blank sides. +Point {14 7 13} had 0 blank sides. +Point {14 8 11} had 0 blank sides. +Point {9 10 2} had 0 blank sides. +Point {3 12 11} had 0 blank sides. +Point {4 8 11} had 0 blank sides. +Point {5 8 9} had 0 blank sides. +Point {6 9 6} had 0 blank sides. +Point {14 6 12} had 0 blank sides. +Point {6 14 6} had 0 blank sides. +Point {5 5 7} had 0 blank sides. +Point {10 14 17} had 3 blank sides. +Point {6 3 5} had 1 blank sides. +Point {17 11 4} had 4 blank sides. +Point {5 16 8} had 1 blank sides. +Point {8 14 2} had 2 blank sides. +Point {10 6 18} had 3 blank sides. +Point {10 8 13} had 0 blank sides. +Point {4 4 15} had 3 blank sides. +Point {5 7 15} had 0 blank sides. +Point {15 10 5} had 0 blank sides. +Point {17 12 13} had 4 blank sides. +Point {15 3 4} had 6 blank sides. +Point {8 7 4} had 0 blank sides. +Point {9 6 10} had 0 blank sides. +Point {13 11 14} had 0 blank sides. +Point {10 18 6} had 3 blank sides. +Point {4 12 6} had 0 blank sides. +Point {7 16 11} had 0 blank sides. +Point {3 9 15} had 0 blank sides. +Point {9 11 17} had 0 blank sides. +Point {13 4 12} had 0 blank sides. +Point {5 7 6} had 0 blank sides. +Point {15 14 15} had 5 blank sides. +Point {15 7 7} had 0 blank sides. +Point {11 8 11} had 0 blank sides. +Point {11 10 7} had 0 blank sides. +Point {12 8 12} had 0 blank sides. +Point {12 14 10} had 0 blank sides. +Point {11 14 6} had 0 blank sides. +Point {5 13 13} had 0 blank sides. +Point {9 3 4} had 1 blank sides. +Point {13 15 10} had 0 blank sides. +Point {3 5 10} had 0 blank sides. +Point {17 6 12} had 1 blank sides. +Point {16 10 14} had 0 blank sides. +Point {8 12 14} had 0 blank sides. +Point {8 15 6} had 0 blank sides. +Point {8 14 4} had 0 blank sides. +Point {9 12 18} had 2 blank sides. +Point {16 10 4} had 1 blank sides. +Point {11 3 12} had 0 blank sides. +Point {4 10 12} had 0 blank sides. +Point {5 10 5} had 0 blank sides. +Point {13 9 3} had 0 blank sides. +Point {3 4 11} had 2 blank sides. +Point {5 15 13} had 1 blank sides. +Point {4 12 13} had 0 blank sides. +Point {9 13 3} had 0 blank sides. +Point {14 4 6} had 1 blank sides. +Point {4 7 3} had 2 blank sides. +Point {6 13 6} had 0 blank sides. +Point {8 7 7} had 0 blank sides. +Point {13 10 9} had 0 blank sides. +Point {12 6 17} had 1 blank sides. +Point {11 17 10} had 0 blank sides. +Point {13 12 2} had 1 blank sides. +Point {3 12 12} had 0 blank sides. +Point {16 10 8} had 0 blank sides. +Point {10 8 3} had 0 blank sides. +Point {9 14 4} had 0 blank sides. +Point {11 4 9} had 0 blank sides. +Point {10 15 11} had 0 blank sides. +Point {12 15 13} had 0 blank sides. +Point {11 12 18} had 3 blank sides. +Point {10 13 16} had 0 blank sides. +Point {9 18 8} had 1 blank sides. +Point {6 15 9} had 0 blank sides. +Point {7 5 10} had 0 blank sides. +Point {7 10 5} had 0 blank sides. +Point {15 11 8} had 0 blank sides. +Point {15 9 13} had 0 blank sides. +Point {8 10 16} had 0 blank sides. +Point {10 3 14} had 1 blank sides. +Point {14 4 14} had 2 blank sides. +Point {13 14 8} had 0 blank sides. +Point {5 3 5} had 3 blank sides. +Point {4 6 12} had 0 blank sides. +Point {9 4 12} had 0 blank sides. +Point {13 9 2} had 0 blank sides. +Point {16 9 14} had 0 blank sides. +Point {4 15 11} had 0 blank sides. +Point {11 3 16} had 3 blank sides. +Point {7 14 3} had 1 blank sides. +Point {10 19 11} had 5 blank sides. +Point {16 8 10} had 0 blank sides. +Point {9 12 3} had 0 blank sides. +Point {14 9 13} had 0 blank sides. +Point {9 14 2} had 3 blank sides. +Point {17 5 11} had 2 blank sides. +Point {14 14 14} had 1 blank sides. +Point {15 14 9} had 0 blank sides. +Point {8 11 18} had 1 blank sides. +Point {11 17 7} had 0 blank sides. +Point {7 2 5} had 2 blank sides. +Point {8 7 18} had 2 blank sides. +Point {7 7 11} had 0 blank sides. +Point {5 5 11} had 0 blank sides. +Point {13 5 2} had 5 blank sides. +Point {4 10 9} had 0 blank sides. +Point {6 7 9} had 0 blank sides. +Point {10 5 12} had 0 blank sides. +Point {7 3 6} had 0 blank sides. +Point {9 15 14} had 0 blank sides. +Point {8 5 12} had 0 blank sides. +Point {10 7 13} had 0 blank sides. +Point {12 8 6} had 0 blank sides. +Point {13 10 12} had 0 blank sides. +Point {3 5 13} had 2 blank sides. +Point {7 15 7} had 0 blank sides. +Point {5 10 8} had 0 blank sides. +Point {11 8 9} had 0 blank sides. +Point {14 5 14} had 0 blank sides. +Point {12 4 14} had 0 blank sides. +Point {8 4 17} had 5 blank sides. +Point {5 17 6} had 3 blank sides. +Point {7 6 1} had 4 blank sides. +Point {7 10 14} had 0 blank sides. +Point {9 13 4} had 0 blank sides. +Point {4 6 14} had 1 blank sides. +Point {16 12 8} had 0 blank sides. +Point {6 6 4} had 0 blank sides. +Point {7 10 4} had 0 blank sides. +Point {12 6 11} had 0 blank sides. +Point {10 5 17} had 1 blank sides. +Point {8 10 18} had 2 blank sides. +Point {4 9 15} had 0 blank sides. +Point {4 6 3} had 3 blank sides. +Point {11 2 10} had 0 blank sides. +Point {14 9 10} had 0 blank sides. +Point {14 8 9} had 0 blank sides. +Point {15 9 10} had 0 blank sides. +Point {15 10 8} had 0 blank sides. +Point {7 12 14} had 0 blank sides. +Point {4 14 6} had 1 blank sides. +Point {14 13 7} had 0 blank sides. +Point {15 4 13} had 3 blank sides. +Point {4 8 9} had 0 blank sides. +Point {5 8 11} had 0 blank sides. +Point {7 13 18} had 6 blank sides. +Point {12 12 9} had 0 blank sides. +Point {15 12 8} had 0 blank sides. +Point {17 7 12} had 0 blank sides. +Point {14 14 9} had 0 blank sides. +Point {16 13 6} had 0 blank sides. +Point {11 9 15} had 0 blank sides. +Point {4 3 10} had 2 blank sides. +Point {17 12 5} had 4 blank sides. +Point {11 18 12} had 3 blank sides. +Point {6 14 8} had 0 blank sides. +Point {8 11 8} had 0 blank sides. +Point {12 13 15} had 0 blank sides. +Point {6 8 18} had 3 blank sides. +Point {6 17 8} had 2 blank sides. +Point {13 2 10} had 0 blank sides. +Point {17 8 8} had 0 blank sides. +Point {3 9 12} had 0 blank sides. +Point {14 5 6} had 0 blank sides. +Point {15 9 6} had 0 blank sides. +Point {12 9 17} had 0 blank sides. +Point {5 6 16} had 0 blank sides. +Point {12 11 9} had 0 blank sides. +Point {4 8 5} had 0 blank sides. +Point {14 3 10} had 0 blank sides. +Point {6 3 13} had 0 blank sides. +Point {6 10 7} had 0 blank sides. +Point {14 10 11} had 0 blank sides. +Point {11 7 2} had 1 blank sides. +Point {16 13 11} had 0 blank sides. +Point {16 8 11} had 0 blank sides. +Point {14 16 5} had 2 blank sides. +Point {14 8 5} had 0 blank sides. +Point {9 15 9} had 0 blank sides. +Point {13 7 6} had 0 blank sides. +Point {3 4 9} had 2 blank sides. +Point {13 7 15} had 0 blank sides. +Point {15 8 4} had 0 blank sides. +Point {4 12 5} had 0 blank sides. +Point {6 13 8} had 0 blank sides. +Point {7 11 13} had 0 blank sides. +Point {13 6 6} had 0 blank sides. +Point {9 1 8} had 1 blank sides. +Point {6 4 13} had 0 blank sides. +Point {10 14 4} had 0 blank sides. +Point {2 6 7} had 3 blank sides. +Point {4 12 16} had 3 blank sides. +Point {9 4 5} had 0 blank sides. +Point {14 7 16} had 2 blank sides. +Point {14 9 6} had 0 blank sides. +Point {6 15 14} had 1 blank sides. +Point {9 17 11} had 0 blank sides. +Point {13 7 14} had 0 blank sides. +Point {14 12 15} had 0 blank sides. +Point {3 5 12} had 0 blank sides. +Point {17 10 11} had 0 blank sides. +Point {12 4 3} had 3 blank sides. +Point {11 6 10} had 0 blank sides. +Point {11 8 5} had 0 blank sides. +Point {11 14 8} had 0 blank sides. +Point {8 2 11} had 1 blank sides. +Point {5 4 10} had 0 blank sides. +Point {9 3 5} had 0 blank sides. +Point {11 5 2} had 2 blank sides. +Point {8 5 13} had 0 blank sides. +Point {7 10 6} had 0 blank sides. +Found 2046 blank sides after filling interior. diff --git a/solutions/day1/day1.go b/solutions/day1/day1.go new file mode 100644 index 0000000..cffd689 --- /dev/null +++ b/solutions/day1/day1.go @@ -0,0 +1,59 @@ +package day1 + +import ( + "bufio" + "fmt" + "os" + "sort" + "strconv" +) + +func Run(filename string) { + file, err := os.Open(filename) + + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + + var elf_totals []int + var current_total int + var max_total int + + max_total = 0 + for scanner.Scan() { + num, err := strconv.Atoi(scanner.Text()) + + if err == nil { + current_total += num + } else { + // this means we got a newline, I'd guess + elf_totals = append(elf_totals, current_total) + + if current_total > max_total { + max_total = current_total + } + + current_total = 0 + } + } + + if current_total > 0 { + elf_totals = append(elf_totals, current_total) + if current_total > max_total { + max_total = current_total + } + } + + file.Close() + + fmt.Println("Maximum food value is", max_total) + sort.Slice(elf_totals, func(i, j int) bool { + return elf_totals[i] > elf_totals[j] + }) + fmt.Println("Top three items are", elf_totals[0:3]) + fmt.Println("which adds to", elf_totals[0]+elf_totals[1]+elf_totals[2]) +} diff --git a/solutions/day10/day10.go b/solutions/day10/day10.go new file mode 100644 index 0000000..b6b5626 --- /dev/null +++ b/solutions/day10/day10.go @@ -0,0 +1,98 @@ +package day10 + +import ( + "bufio" + "fmt" + "os" + "strconv" + "strings" +) + +func clearLine(line *[]rune) { + for idx := range *line { + (*line)[idx] = '.' + } +} + +func printLine(line *[]rune) { + for _, c := range *line { + fmt.Printf("%c", c) + } + fmt.Println() +} + +func registerCycle(cycle int, x int, line *[]rune) int { + result := 0 + var position int + + for position = cycle - 1; position > 40; position -= 40 { + } + + if cycle == 20 || (cycle > 20 && ((cycle-20)%40 == 0)) { + result = x * cycle + //fmt.Println("register cycle", cycle, "value of x is", x, "signal strength is", result) + } + + //if position == 0 { + // fmt.Println("position is", position, "and x is", x) + //} + + if position >= x-1 && position <= x+1 { + (*line)[position] = '#' + } + + if position == 40 { + printLine(line) + clearLine(line) + } + + return result +} + +func Run(filename string) { + file, err := os.Open(filename) + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + cycle := 1 + x := 1 + signalStrengthSum := 0 + currentLine := []rune{'.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.', '.'} + if len(currentLine) != 40 { + fmt.Println("line length", len(currentLine)) + return + } + + registerCycle(cycle, x, ¤tLine) + for scanner.Scan() { + line := scanner.Text() + + if strings.HasPrefix(line, "addx ") { + cycle += 1 + signalStrengthSum += registerCycle(cycle, x, ¤tLine) + cycle += 1 + mod, err := strconv.Atoi(string(line[5:])) + if err != nil { + fmt.Println("Invalid x modifier", err, "having read", string(line[5:])) + return + } + x += mod + signalStrengthSum += registerCycle(cycle, x, ¤tLine) + } else if strings.HasPrefix(line, "noop") { + cycle += 1 + signalStrengthSum += registerCycle(cycle, x, ¤tLine) + } else { + fmt.Println("PANIC: Unknown instruction:", line) + return + } + } + + file.Close() + //printLine(line) + + fmt.Println("Signal strength fun", signalStrengthSum) +} diff --git a/solutions/day11/day11.go b/solutions/day11/day11.go new file mode 100644 index 0000000..2653736 --- /dev/null +++ b/solutions/day11/day11.go @@ -0,0 +1,226 @@ +package day11 + +import ( + "bufio" + "fmt" + "os" + "strconv" + "strings" +) + +type Operation int + +const ( + Times Operation = iota + Plus + Square +) + +type Monkey struct { + items []int + operation Operation + operation_by int + divisible_by int + if_true int + if_false int +} + +func printMonkeys(monkeys []*Monkey) { + for monkey_no, monkey := range monkeys { + if monkey != nil { + fmt.Printf("Monkey #%d: ", monkey_no) + var items []int = (*monkey).items + for idx, item := range items { + fmt.Printf("%d", item) + if idx != len(items)-1 { + fmt.Printf(", ") + } + } + fmt.Println() + } + } +} + +func lcm(items []int) int { + worstCase := 1 + smallest := items[0] + for _, val := range items { + worstCase *= val + if val < smallest { + smallest = val + } + } + + retval := worstCase + for candidate := worstCase; candidate > 2; candidate -= smallest { + works := true + for _, val := range items { + works = works && (candidate%val == 0) + } + if works { + retval = candidate + } + } + + return retval +} + +func runRound(monkeys *[]*Monkey, counts *[]int, ceiling int) { + //three := big.NewInt(3) + for monkey_no, monkey := range *monkeys { + if monkey == nil { + break + } + //fmt.Printf("Monkey %d:\n", monkey_no) + items := (*monkey).items + (*monkey).items = []int{} + for _, item := range items { + (*counts)[monkey_no] += 1 + //fmt.Printf(" Monkey inspects an item with a worry level of %d.\n", item) + var result int = item + switch monkey.operation { + case Times: + result = item * monkey.operation_by + //fmt.Printf(" Worry level is multiplied by %d to %d.\n", monkey.operation_by, result) + case Square: + result = item * item + //fmt.Printf(" Worry level is squared to %d.\n", result) + case Plus: + result = item + monkey.operation_by + //fmt.Printf(" Worry level is increased by %d to %d.\n", monkey.operation_by, result) + default: + //fmt.Printf("PANIC: Don't understand operation\n", monkey.operation_by) + return + } + result %= ceiling + //result = result.Div(result, three) + //fmt.Printf(" Monkey gets bored with item. Worry level is divided by 3 to %d.\n", result) + var targetMonkey int + + if result%monkey.divisible_by == 0 { + //fmt.Printf(" Current worry level is divisible by %d.\n", monkey.divisible_by) + targetMonkey = monkey.if_true + } else { + //fmt.Printf(" Current worry level is not divisible by %d.\n", monkey.divisible_by) + targetMonkey = monkey.if_false + } + //fmt.Printf(" Item with worry level %d is thrown to monkey %d.\n", result, targetMonkey) + (*monkeys)[targetMonkey].items = append((*monkeys)[targetMonkey].items, result) + } + } +} + +func Run(filename string) { + file, err := os.Open(filename) + + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + + monkeys := []*Monkey{nil, nil, nil, nil, nil, nil, nil, nil} + inspectionCounts := []int{0, 0, 0, 0, 0, 0, 0, 0} + divisors := []int{} + var currentMonkey *Monkey = nil + + for scanner.Scan() { + line := scanner.Text() + + if strings.HasPrefix(line, "Monkey ") { + number, err := strconv.Atoi(line[7 : len(line)-1]) + if err != nil { + fmt.Println("Error parsing monkey number", line[7:len(line)-1]) + return + } + + newMonkey := Monkey{[]int{}, Times, 0, 0, 0, 0} + monkeys[number] = &newMonkey + currentMonkey = &newMonkey + } else if strings.HasPrefix(line, " Starting items: ") { + list := line[18:] + splits := strings.Split(list, ", ") + if currentMonkey == nil { + fmt.Println("Item list with no monkey") + return + } + for _, split := range splits { + splitInt, err := strconv.Atoi(split) + if err != nil { + fmt.Println("Error parsing monkey's item", split) + return + } + (*currentMonkey).items = append((*¤tMonkey).items, splitInt) + } + } else if strings.HasPrefix(line, " Operation: new = old * ") { + amtString := line[25:] + if amtString == "old" { + (*currentMonkey).operation = Square + } else { + amt, err := strconv.Atoi(amtString) + if err != nil { + fmt.Println("Error parsing operation number", amtString) + return + } + (*¤tMonkey).operation = Times + (*¤tMonkey).operation_by = amt + } + } else if strings.HasPrefix(line, " Operation: new = old + ") { + amtString := line[25:] + amt, err := strconv.Atoi(amtString) + if err != nil { + fmt.Println("Error parsing plus operation number", amtString) + return + } + (*¤tMonkey).operation = Plus + (*¤tMonkey).operation_by = amt + } else if strings.HasPrefix(line, " Test: divisible by ") { + amtString := line[21:] + amt, err := strconv.Atoi(amtString) + if err != nil { + fmt.Println("Error parsing divisible by number", amtString) + return + } + (*¤tMonkey).divisible_by = amt + divisors = append(divisors, amt) + } else if strings.HasPrefix(line, " If true: throw to monkey ") { + amtString := line[29:] + amt, err := strconv.Atoi(amtString) + if err != nil { + fmt.Println("Error parsing if true number", amtString) + return + } + (*¤tMonkey).if_true = amt + } else if strings.HasPrefix(line, " If false: throw to monkey ") { + amtString := line[30:] + amt, err := strconv.Atoi(amtString) + if err != nil { + fmt.Println("Error parsing if false number", amtString) + return + } + (*¤tMonkey).if_false = amt + } else if len(line) == 0 { + } else { + fmt.Printf("Invalid line: '%s'\n", line) + return + } + } + + ceiling := lcm(divisors) + + printMonkeys(monkeys) + for i := 0; i < 10000; i++ { + if i%100 == 0 { + fmt.Println("Running round", i) + } + runRound(&monkeys, &inspectionCounts, ceiling) + //printMonkeys(monkeys) + } + for monkey_no, count := range inspectionCounts { + fmt.Printf("Monkey %d inspected items %d times\n", monkey_no, count) + } + + file.Close() +} diff --git a/solutions/day12/day12.go b/solutions/day12/day12.go new file mode 100644 index 0000000..245e81b --- /dev/null +++ b/solutions/day12/day12.go @@ -0,0 +1,174 @@ +package day12 + +import ( + "bufio" + "fmt" + "os" +) + +type Point struct { + x int + y int +} + +func to_level(r rune) int { + return int(r - 'a') +} + +func from_level(l int) rune { + return rune('a' + l) +} + +func validMove(p1 Point, p2 Point, grid [][]int) bool { + if p2.x < 0 || p2.y < 0 || p2.x >= len(grid[0]) || p2.y >= len(grid) { + return false + } + + diff := grid[p2.y][p2.x] - grid[p1.y][p1.x] + return (diff <= 1) +} + +func updateDistances(grid [][]int, distances [][]int) bool { + y := 0 + updatedSomething := false + + for _, row := range distances { + for x := range row { + best := distances[y][x] + nexts := nextSteps(Point{x, y}, grid) + + for _, next := range nexts { + if distances[next.y][next.x] != -1 { + if best == -1 || distances[next.y][next.x]+1 < best { + fmt.Println("Found a live one; at", Point{x, y}, "with score", distances[y][x], "going to", next, "with score", distances[next.y][next.x]) + best = distances[next.y][next.x] + 1 + updatedSomething = true + } + } + } + + distances[y][x] = best + } + y += 1 + } + + return updatedSomething +} + +func nextSteps(p Point, grid [][]int) []Point { + retval := []Point{} + + // point above + above := Point{p.x, p.y - 1} + if validMove(p, above, grid) { + retval = append(retval, above) + } + // point below + below := Point{p.x, p.y + 1} + if validMove(p, below, grid) { + retval = append(retval, below) + } + // point left + left := Point{p.x - 1, p.y} + if validMove(p, left, grid) { + retval = append(retval, left) + } + // point right + right := Point{p.x + 1, p.y} + if validMove(p, right, grid) { + retval = append(retval, right) + } + + return retval +} + +func printMap(grid [][]int) { + for _, line := range grid { + for _, v := range line { + fmt.Printf("%c", from_level(v)) + } + fmt.Println() + } +} + +func printDistances(grid [][]int, distances [][]int) { + for y, line := range distances { + for x, v := range line { + fmt.Printf("%5d/%c", v, from_level(grid[y][x])) + } + fmt.Println() + } +} + +func Run(filename string) { + file, err := os.Open(filename) + + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + grid := [][]int{} + distances := [][]int{} + var start Point + var end Point + + for scanner.Scan() { + line := scanner.Text() + row := []int{} + drow := []int{} + + y := len(grid) + for x, r := range []rune(line) { + if r == 'S' { + r = 'a' + start = Point{x, y} + } + if r == 'E' { + r = 'z' + end = Point{x, y} + } + row = append(row, to_level(r)) + drow = append(drow, -1) + } + grid = append(grid, row) + distances = append(distances, drow) + } + + file.Close() + + distances[end.y][end.x] = 0 + + printMap(grid) + printDistances(grid, distances) + fmt.Printf("Start position is (%d, %d)\n", start.x, start.y) + fmt.Printf("End position is (%d, %d)\n", end.x, end.y) + fmt.Println("Valid first steps:", nextSteps(start, grid)) + iteration := 0 + keepGoing := true + for keepGoing { + fmt.Println("Running iteration", iteration) + printDistances(grid, distances) + keepGoing = updateDistances(grid, distances) + iteration += 1 + } + fmt.Printf("Best path is %d steps long.\n", distances[start.y][start.x]) + + closestAIs := -1 + for y, line := range grid { + for x, v := range line { + if from_level(v) == 'a' { + distance := distances[y][x] + fmt.Printf("Point (%d, %d) is level `a`, and is %d steps from end.\n", x, y, distance) + if distance != -1 { + if closestAIs == -1 || distance < closestAIs { + closestAIs = distance + } + } + } + } + } + fmt.Println("The closest 'a' is", closestAIs, "steps away.") +} diff --git a/solutions/day13/day13.go b/solutions/day13/day13.go new file mode 100644 index 0000000..bae0d20 --- /dev/null +++ b/solutions/day13/day13.go @@ -0,0 +1,208 @@ +package day13 + +import ( + "bufio" + "fmt" + "os" + "sort" + "strings" +) + +type Element struct { + isNumber bool + number int + sublist []Element +} + +func parseElement(line string) (retval Element, remainder string, err error) { + line = strings.TrimSpace(line) + //fmt.Printf("Working on line: '%s'\n", line) + if line[0] == '[' { + sublist := []Element{} + + if line[1] == ']' { + retval = Element{false, 0, sublist} + remainder = line[2:] + return + } + + work := line[1:] + for { + element, rest, suberr := parseElement(work) + //fmt.Println("Back from subcall with element", element, "rest", rest, "suberr", suberr) + if suberr != nil { + err = fmt.Errorf("suberror: %s", suberr) + return + } + sublist = append(sublist, element) + if rest[0] == ',' { + work = rest[1:] + } else if rest[0] == ']' { + work = rest[1:] + break + } else { + err = fmt.Errorf("don't know how to deal with list that ends with '%s'", rest) + return + } + } + + retval = Element{false, 0, sublist} + remainder = work + return + } else if line[0] >= '0' && line[0] <= '9' { + var computed int + + for computed = 0; line[0] >= '0' && line[0] <= '9'; line = line[1:] { + computed = (computed * 10) + int(line[0]-'0') + } + + retval = Element{true, computed, nil} + remainder = line + return + } else { + err = fmt.Errorf("panic: Don't know how to parse line element '%s'", line) + return + } +} + +func renderElement(element Element) string { + if element.isNumber { + return fmt.Sprintf("%d", element.number) + } else { + retval := "[" + + if len(element.sublist) > 0 { + retval += renderElement(element.sublist[0]) + } + + for i := 1; i < len(element.sublist); i++ { + retval += fmt.Sprintf(",%s", renderElement(element.sublist[i])) + } + + retval += "]" + return retval + } +} + +type OrderResult int + +const ( + ProperlyOrdered OrderResult = iota + ImproperlyOrdered + Unknown +) + +func compareElements(a Element, b Element) OrderResult { + if a.isNumber && b.isNumber { + return compareNumbers(a.number, b.number) + } else if a.isNumber && !b.isNumber { + return compareLists([]Element{{true, a.number, nil}}, b.sublist) + } else if !a.isNumber && b.isNumber { + return compareLists(a.sublist, []Element{{true, b.number, nil}}) + } else { + return compareLists(a.sublist, b.sublist) + } +} + +func compareNumbers(a int, b int) OrderResult { + if a < b { + return ProperlyOrdered + } + + if a > b { + return ImproperlyOrdered + } + + return Unknown +} + +func compareLists(a []Element, b []Element) OrderResult { + if len(a) > 0 && len(b) > 0 { + headResult := compareElements(a[0], b[0]) + + if headResult != Unknown { + return headResult + } + + return compareLists(a[1:], b[1:]) + } + + if len(a) == 0 && len(b) == 0 { + return Unknown + } + + if len(a) == 0 { + return ProperlyOrdered + } + + return ImproperlyOrdered +} + +func Run(filename string) { + file, err := os.Open(filename) + + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + elements := []Element{} + + for scanner.Scan() { + line := scanner.Text() + if len(line) == 0 { + continue + } + element, remainder, err := parseElement(line) + if err != nil { + fmt.Println(err) + return + } + if len(remainder) > 0 { + fmt.Printf("Unexpected remainder in line: '%s'\n", remainder) + return + } + fmt.Println("Parsed element", renderElement(element)) + elements = append(elements, element) + } + + total := 0 + for i := 0; i < len(elements); i += 2 { + index := i/2 + 1 + switch compareElements(elements[i], elements[i+1]) { + case ProperlyOrdered: + fmt.Printf("Pair #%d is properly ordered\n", index) + total += index + case ImproperlyOrdered: + fmt.Printf("Pair #%d is NOT properly ordered\n", index) + case Unknown: + fmt.Printf("Pair #%d is UNKNOWN\n", index) + default: + fmt.Printf("PANIC PANIC PANIC: Unknown ordering?!\n") + } + } + fmt.Println("\nTotal proper index value is", total) + + divider2, _, _ := parseElement("[[2]]") + divider6, _, _ := parseElement("[[6]]") + elements = append(elements, divider2, divider6) + + sort.SliceStable(elements, func(i, j int) bool { + return compareElements(elements[i], elements[j]) == ProperlyOrdered + }) + + fmt.Println() + fmt.Println("Sorted order:") + decoderKey := 1 + for i := 0; i < len(elements); i++ { + fmt.Println(renderElement(elements[i])) + if compareElements(elements[i], divider2) == Unknown || compareElements(elements[i], divider6) == Unknown { + decoderKey *= i + 1 + } + } + fmt.Println("Decoder key is", decoderKey) + + file.Close() +} diff --git a/solutions/day14/day14.go b/solutions/day14/day14.go new file mode 100644 index 0000000..f033111 --- /dev/null +++ b/solutions/day14/day14.go @@ -0,0 +1,295 @@ +package day14 + +import ( + "bufio" + "errors" + "fmt" + "os" + "strconv" + "strings" +) + +type Point struct { + x int + y int +} + +func parsePoint(v string) (result Point, err error) { + var parts []string = strings.Split(v, ",") + if len(parts) != 2 { + err = errors.New("Weird number of parts in point") + return + } + + x, xerr := strconv.Atoi(parts[0]) + if xerr != nil { + err = xerr + return + } + + y, yerr := strconv.Atoi(parts[1]) + if yerr != nil { + err = yerr + return + } + + result = Point{x, y} + return +} + +type Segment struct { + start Point + end Point +} + +func parseSegments(line string) (result []Segment, err error) { + parts := strings.Split(line, " -> ") + result = []Segment{} + var left *Point = nil + + for _, rightString := range parts { + right, rerr := parsePoint(rightString) + if rerr != nil { + err = rerr + return + } + if left != nil { + result = append(result, Segment{*left, right}) + } + left = &right + } + + return +} + +func segmentPoints(segments []Segment) []Point { + retval := []Point{} + + for _, segment := range segments { + retval = append(retval, segment.start, segment.end) + } + + return retval +} + +func findExtents(segments []Segment) (leftmost int, rightmost int, bottom int) { + leftmost = int(^uint(0) >> 1) + rightmost = 0 + bottom = 0 + + for _, point := range segmentPoints(segments) { + if point.x < leftmost { + leftmost = point.x + } + if point.x > rightmost { + rightmost = point.x + } + if point.y > bottom { + bottom = point.y + } + } + + return +} + +type Cell int + +const ( + Air Cell = iota + Stone + Sand + Start +) + +func drawGraph(graph [][]Cell) { + for _, line := range graph { + for _, v := range line { + switch v { + case Air: + fmt.Printf(".") + case Stone: + fmt.Printf("#") + case Sand: + fmt.Printf("O") + case Start: + fmt.Printf("+") + default: + fmt.Printf("?") + } + } + fmt.Println() + } + fmt.Println() +} + +type State int + +const ( + Good State = iota + Stop + Done +) + +func nextStep(curX int, curY int, graph [][]Cell) (nextX int, nextY int, state State) { + if curY+1 >= len(graph) { + state = Done + return + } + + if graph[curY+1][curX] == Air { + nextX = curX + nextY = curY + 1 + state = Good + return + } + + if curX == 0 { + state = Done + return + } + + if graph[curY+1][curX-1] == Air { + nextX = curX - 1 + nextY = curY + 1 + state = Good + return + } + + if curX+1 >= len(graph[0]) { + state = Done + return + } + + if graph[curY+1][curX+1] == Air { + nextX = curX + 1 + nextY = curY + 1 + state = Good + return + } + + state = Stop + return +} + +func dropGrain(startX int, graph [][]Cell) bool { + curX := startX + curY := 0 + + for true { + nextX, nextY, result := nextStep(curX, curY, graph) + switch result { + case Done: + return true + case Stop: + result := graph[curY][curX] == Start + graph[curY][curX] = Sand + return result + case Good: + curX = nextX + curY = nextY + } + } + + return true +} + +func Run(filename string) { + file, err := os.Open(filename) + + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + segments := []Segment{} + + for scanner.Scan() { + line := scanner.Text() + newSegments, err := parseSegments(line) + + if err != nil { + fmt.Println("PANIC", err) + return + } + + for _, segment := range newSegments { + segments = append(segments, segment) + } + } + + file.Close() + + fmt.Println(segments) + leftmostX, rightmostX, bottomY := findExtents(segments) + fmt.Println("Leftmost X value is", leftmostX) + fmt.Println("Rightmost X value is", rightmostX) + fmt.Println("Bottom Y value is", bottomY) + leftmostX = 0 + rightmostX += 500 + width := rightmostX - leftmostX + graph := [][]Cell{} + for y := 0; y <= bottomY+2; y++ { + line := []Cell{} + + for x := 0; x <= width; x++ { + line = append(line, Air) + } + graph = append(graph, line) + } + segments = append(segments, Segment{Point{leftmostX, bottomY + 2}, Point{rightmostX, bottomY + 2}}) + for _, segment := range segments { + if segment.start.x == segment.end.x { + var top int + var bottom int + + if segment.start.y < segment.end.y { + top = segment.start.y + bottom = segment.end.y + } else { + top = segment.end.y + bottom = segment.start.y + } + + for current := top; current <= bottom; current++ { + graph[current][segment.start.x-leftmostX] = Stone + } + + continue + } + + if segment.start.y == segment.end.y { + var left int + var right int + + if segment.start.x < segment.end.x { + left = segment.start.x + right = segment.end.x + } else { + left = segment.end.x + right = segment.start.x + } + + for current := left; current <= right; current++ { + graph[segment.start.y][current-leftmostX] = Stone + } + + continue + } + + fmt.Println("PANIC: Diagonal line!?") + return + } + graph[0][500-leftmostX] = Start + drawGraph(graph) + count := 0 + for !dropGrain(500-leftmostX, graph) { + count += 1 + } + drawGraph(graph) + fmt.Println("Dropped", count, "grains of sand") + if graph[0][500-leftmostX] != Sand { + fmt.Println("PANIC: NOT WIDE ENOUGH") + } +} diff --git a/solutions/day15/day15.go b/solutions/day15/day15.go new file mode 100644 index 0000000..4eb2090 --- /dev/null +++ b/solutions/day15/day15.go @@ -0,0 +1,182 @@ +package day15 + +import ( + "bufio" + "fmt" + "os" + "strconv" +) + +type Point struct { + x int + y int +} + +func pointDistance(a Point, b Point) int { + return diff(a.x, b.x) + diff(a.y, b.y) +} + +func diff(a int, b int) int { + if a > b { + return a - b + } else { + return b - a + } +} + +type Sensor struct { + location Point + distance int +} + +func parseLine(line string) (sensor Sensor, beacon Point) { + var sensorX int + var sensorY int + var beaconX int + var beaconY int + + fmt.Sscanf(line, "Sensor at x=%d, y=%d: closest beacon is at x=%d, y=%d", &sensorX, &sensorY, &beaconX, &beaconY) + sensorLoc := Point{sensorX, sensorY} + beacon = Point{beaconX, beaconY} + distance := pointDistance(sensorLoc, beacon) + sensor = Sensor{sensorLoc, distance} + return +} + +func isBeacon(x int, y int, beacons []Point) bool { + for _, beacon := range beacons { + if beacon.x == x && beacon.y == y { + return true + } + } + return false +} + +func inSensorRange(x int, y int, sensors []Sensor) *Sensor { + point := Point{x, y} + for _, sensor := range sensors { + distance := pointDistance(point, sensor.location) + if distance <= sensor.distance { + return &sensor + } + } + return nil +} + +func leftmostPoint(sensors []Sensor) int { + leftmost := 0 + + for _, sensor := range sensors { + candidate := sensor.location.x - sensor.distance + if candidate < leftmost { + leftmost = candidate + } + } + + return leftmost +} + +func rightmostPoint(sensors []Sensor) int { + rightmost := 0 + + for _, sensor := range sensors { + candidate := sensor.location.x + sensor.distance + if candidate > rightmost { + rightmost = candidate + } + } + + return rightmost +} + +func addLinePoints(pointSet *[]Point, start Point, end Point) { + offsetX := 1 + offsetY := 1 + + if end.x < start.x { + offsetX = -1 + } + if end.y < start.y { + offsetY = -1 + } + + for x, y := start.x, start.y; y != end.y; x, y = x+offsetX, y+offsetY { + *pointSet = append(*pointSet, Point{x, y}) + } +} + +func addEdgePoints(pointSet *[]Point, sensor Sensor) { + distance := sensor.distance + 1 + top := Point{sensor.location.x, sensor.location.y - distance} + right := Point{sensor.location.x + distance, sensor.location.y} + bottom := Point{sensor.location.x, sensor.location.y + distance} + left := Point{sensor.location.x - distance, sensor.location.y} + + addLinePoints(pointSet, top, right) + addLinePoints(pointSet, right, bottom) + addLinePoints(pointSet, bottom, left) + addLinePoints(pointSet, left, top) +} + +func Run(filename string, yStr string, maxCoordStr string) { + y, err := strconv.Atoi(yStr) + if err != nil { + fmt.Println("PANIC: bad y argument", yStr) + return + } + + maxCoord, err := strconv.Atoi(maxCoordStr) + if err != nil { + fmt.Println("PANIC: bad y argument", maxCoordStr) + return + } + + file, err := os.Open(filename) + + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + sensors := []Sensor{} + beacons := []Point{} + + for scanner.Scan() { + line := scanner.Text() + sensor, beacon := parseLine(line) + sensors = append(sensors, sensor) + beacons = append(beacons, beacon) + } + + file.Close() + + fmt.Println(sensors) + + count := 0 + for x := leftmostPoint(sensors); x <= rightmostPoint(sensors); x++ { + if isBeacon(x, y, beacons) { + continue + } + + if inSensorRange(x, y, sensors) != nil { + count += 1 + } + } + fmt.Println("Beacons couldn't be in", count, "places on line", y) + + candidates := []Point{} + for _, sensor := range sensors { + addEdgePoints(&candidates, sensor) + } + + for _, candidate := range candidates { + if candidate.x >= 0 && candidate.y >= 0 && candidate.x <= maxCoord && candidate.y <= maxCoord { + closestSensor := inSensorRange(candidate.x, candidate.y, sensors) + if closestSensor == nil { + fmt.Printf("Found possible beacon location at (%d, %d). Frequency value is %d\n", candidate.x, candidate.y, candidate.x*4000000+candidate.y) + } + } + } +} diff --git a/solutions/day16/day16.go b/solutions/day16/day16.go new file mode 100644 index 0000000..b87ae12 --- /dev/null +++ b/solutions/day16/day16.go @@ -0,0 +1,185 @@ +package day16 + +import ( + "bufio" + "fmt" + "os" + "strings" + "unicode" +) + +type Valve struct { + flowRate int + leadsTo []string +} + +type SimulationPoint struct { + time int + imAt string + elephantAt string + opened string +} + +type MovePair struct { + me string + elephant string +} + +func newMovePair(useElephant bool, a string, b string) MovePair { + if useElephant && a != "**" && b != "**" && b < a { + return MovePair{b, a} + } else { + return MovePair{a, b} + } +} + +func addMovePair(pair MovePair, list *[]MovePair) { + for _, existing := range *list { + if existing.me == pair.me && existing.elephant == pair.elephant { + return + } + } + *list = append(*list, pair) +} + +func alreadyVisited(place string, point SimulationPoint) bool { + for i := 0; i < len(point.opened); i += 2 { + if place[0] == point.opened[i] && place[1] == point.opened[i+1] { + return true + } + } + return false +} + +func addPlace(place string, opened string) string { + injectionPoint := 0 + + for injectionPoint < len(opened) && (opened[injectionPoint] < place[0] || (opened[injectionPoint] == place[0] && opened[injectionPoint+1] < place[1])) { + injectionPoint += 2 + } + + return opened[0:injectionPoint] + place + opened[injectionPoint:] +} + +var everythingOpened string +var simulatedItems map[SimulationPoint]int + +func runSimulations(useElephant bool, time int, myPlace string, elephantAt string, opened string, valves map[string]Valve) int { + maxTime := 30 + if useElephant { + maxTime = 26 + } + + if time == maxTime || everythingOpened == opened { + return 0 + } + + point := SimulationPoint{time, myPlace, elephantAt, opened} + + if previousValue, ok := simulatedItems[point]; ok { + return previousValue + } + + bestResult := 0 + + myMoves := []string{} + if !alreadyVisited(myPlace, point) && valves[myPlace].flowRate != 0 { + myMoves = append(myMoves, "**") + } + myMoves = append(myMoves, valves[myPlace].leadsTo...) + + elephantMoves := []string{"AA"} + if useElephant { + elephantMoves = []string{} + if !alreadyVisited(elephantAt, point) && valves[elephantAt].flowRate != 0 && myPlace != elephantAt { + elephantMoves = append(elephantMoves, "**") + } + elephantMoves = append(elephantMoves, valves[elephantAt].leadsTo...) + } + + moves := []MovePair{} + for _, myMove := range myMoves { + for _, elephantMove := range elephantMoves { + pair := newMovePair(useElephant, myMove, elephantMove) + addMovePair(pair, &moves) + } + } + + for _, pair := range moves { + myMove := pair.me + elephantMove := pair.elephant + openReleases := 0 + myNext := myPlace + elephantNext := elephantAt + nowOpen := opened + + if myMove == "**" { + openReleases += valves[myPlace].flowRate * (maxTime - (time + 1)) + nowOpen = addPlace(myPlace, nowOpen) + } else { + myNext = myMove + } + + if elephantMove == "**" { + openReleases += valves[elephantAt].flowRate * (maxTime - (time + 1)) + nowOpen = addPlace(elephantAt, nowOpen) + } else { + elephantNext = elephantMove + } + + candidate := openReleases + runSimulations(useElephant, time+1, myNext, elephantNext, nowOpen, valves) + if candidate > bestResult { + bestResult = candidate + } + } + + simulatedItems[point] = bestResult + + return bestResult +} + +func Run(filename string) { + file, err := os.Open(filename) + + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + valveMap := map[string]Valve{} + everythingOpened = "" + + for scanner.Scan() { + line := scanner.Text() + var valve string + var rate int + fmt.Sscanf(line, "Valve %s has flow rate=%d", &valve, &rate) + _, after_semi, found_semi := strings.Cut(line, ";") + if !found_semi { + fmt.Println("PANIC: Couldn't find semi colon in line.") + return + } + after_semi = strings.TrimLeftFunc(after_semi, func(r rune) bool { + return !unicode.IsUpper(r) + }) + targets := strings.Split(after_semi, ", ") + + if rate > 0 { + everythingOpened = addPlace(valve, everythingOpened) + } + + valveMap[valve] = Valve{rate, targets} + } + + simulatedItems = map[SimulationPoint]int{} + bestRelease1 := runSimulations(false, 0, "AA", "AA", "", valveMap) + fmt.Println("Working on my own, best pressure release found is", bestRelease1) + + simulatedItems = map[SimulationPoint]int{} + bestRelease2 := runSimulations(true, 0, "AA", "AA", "", valveMap) + fmt.Println("Working with an elephant, best pressure release found is", bestRelease2) + + file.Close() +} diff --git a/solutions/day17/day17.go b/solutions/day17/day17.go new file mode 100644 index 0000000..272bb87 --- /dev/null +++ b/solutions/day17/day17.go @@ -0,0 +1,301 @@ +package day17 + +import ( + "bufio" + "fmt" + "os" + "strconv" + "strings" +) + +type Piece []string + +var horizontalBar Piece = Piece{"@@@@"} +var plus Piece = Piece{".@.", "@@@", ".@."} +var backwardsL Piece = Piece{"..@", "..@", "@@@"} +var verticalBar Piece = Piece{"@", "@", "@", "@"} +var block Piece = Piece{"@@", "@@"} + +var pieces []Piece = []Piece{horizontalBar, plus, backwardsL, verticalBar, block} + +type Board [][]rune + +func newBoard() Board { + return Board{} +} + +func pieceToRows(piece Piece) Board { + retval := Board{} + + for i := range piece { + newRow := append([]rune(".."), []rune(piece[i])...) + + for len(newRow) < 7 { + newRow = append(newRow, '.') + } + + retval = append(retval, newRow) + } + + return retval +} + +func rowEmpty(row int, board Board) bool { + if row >= len(board) { + return false + } + + for i := 0; i < 7; i++ { + if board[row][i] != '.' { + return false + } + } + + return true +} + +func addPiece(piece Piece, board *Board) { + rows := pieceToRows(piece) + for !(rowEmpty(0, *board) && rowEmpty(1, *board) && rowEmpty(2, *board)) { + *board = append(Board{[]rune(".......")}, *board...) + } + for len(*board) >= 3 && rowEmpty(3, *board) { + *board = (*board)[1:] + } + *board = append(rows, *board...) +} + +func printBoard(board *Board) { + for _, row := range *board { + fmt.Printf("|") + for _, r := range row { + fmt.Printf("%c", r) + } + fmt.Printf("|\n") + } + fmt.Printf("+-------+\n") +} + +func copyBoard(clearPiece bool, currentBoard *Board, newBoard *Board) { + for len(*newBoard) < len(*currentBoard) { + *newBoard = append(Board{[]rune(".......")}, *newBoard...) + } + for len(*newBoard) > len(*currentBoard) { + *newBoard = (*newBoard)[1:] + } + for y, row := range *currentBoard { + for x, value := range row { + if clearPiece && value == '@' { + (*newBoard)[y][x] = '.' + } else { + (*newBoard)[y][x] = (*currentBoard)[y][x] + } + } + } +} + +func movePiece(direction rune, currentBoard *Board, newBoard *Board) bool { + /// match the values + copyBoard(true, currentBoard, newBoard) + for y, row := range *currentBoard { + for x, value := range row { + if value == '@' { + newX := x + newY := y + + switch direction { + case '<': + newX = x - 1 + case '>': + newX = x + 1 + case 'v': + newY = y + 1 + default: + fmt.Printf("PANIC: Invalid direction %c\n", direction) + return false + } + + if newX < 0 || newX >= 7 || newY >= len(*currentBoard) { + return false + } + + if (*currentBoard)[newY][newX] == '#' { + return false + } + + (*newBoard)[newY][newX] = '@' + } + } + } + + return true +} + +func freezeBoard(board *Board) int { + for _, row := range *board { + for x, value := range row { + if value == '@' { + row[x] = '#' + } + } + } + + for y := 0; y < len(*board)-3; y++ { + allCovered := true + for x := 0; x < 7; x++ { + allCovered = allCovered && ((*board)[y][x] == '#' || (*board)[y+1][x] == '#' || (*board)[y+2][x] == '#' || (*board)[y+3][x] == '#') + } + + if allCovered { + originalLength := len(*board) + //fmt.Println("--- original board ---") + //printBoard(board) + *board = (*board)[0 : y+4] + //fmt.Println("--- cleaned board ---") + //printBoard(board) + //fmt.Println("---", originalLength-len(*board), "rows removed ---") + removedRows := originalLength - len(*board) + //if removedRows > 0 { + // fmt.Println("Removed", removedRows, "rows.") + //} + return removedRows + } + } + + return 0 +} + +func sameBoard(board1 Board, board2 Board) bool { + if len(board1) != len(board2) { + return false + } + + for y, row := range board1 { + for x := range row { + if board1[y][x] != board2[y][x] { + return false + } + } + } + + return true +} + +func duplicateBoard(board Board) Board { + newBoard := Board{} + + for _, row := range board { + newRow := []rune(".......") + copy(newRow, row) + newBoard = append(newBoard, newRow) + } + + return newBoard +} + +type PreviousState struct { + moveIndex int + pieceIndex int +} + +type PreviousLocation struct { + dropNo int + removedRows int + board Board +} + +func Run(filename string, targetStr string) { + targetPieces, err := strconv.Atoi(targetStr) + if err != nil { + fmt.Println("PANIC: Don't understand target number") + return + } + + file, err := os.Open(filename) + + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + instructions := []rune{} + for scanner.Scan() { + line := scanner.Text() + line = strings.TrimFunc(line, func(r rune) bool { + return r != '>' && r != '<' + }) + instructions = append(instructions, []rune(line)...) + } + file.Close() + + board1 := newBoard() + board2 := newBoard() + + moveIndex := 0 + pieceIndex := 0 + previousStates := map[PreviousState][]PreviousLocation{} + removedRows := 0 + skippedAhead := false + + for dropNo := 1; dropNo <= targetPieces; dropNo++ { + //fmt.Println("Dropping piece", dropNo, "with piece", pieceIndex, "and move", moveIndex) + + if !skippedAhead { + state := PreviousState{moveIndex, pieceIndex} + previousLocations, previousStateExisted := previousStates[state] + if previousStateExisted { + for _, location := range previousLocations { + if sameBoard(board1, location.board) { + dropDifference := dropNo - location.dropNo + removedRowsDifference := removedRows - location.removedRows + fmt.Println("Got it, current drop", dropNo, "previous version", location.dropNo, "removed row diff", removedRowsDifference) + repeats := (targetPieces - dropNo) / dropDifference + fmt.Println("Drop difference of", dropDifference, "meaning we can do this gap", repeats, "more times") + fmt.Println("removed rows", removedRows, "+", repeats*removedRowsDifference, "=", removedRows+(repeats*removedRowsDifference)) + removedRows += repeats * removedRowsDifference + fmt.Println("Drop number", dropNo, "+", repeats*dropDifference, "=", dropNo+(repeats*dropDifference)) + dropNo += repeats*dropDifference - 1 + skippedAhead = true + break + } + } + + if skippedAhead { + continue + } else { + previousStates[state] = append(previousStates[state], PreviousLocation{dropNo, removedRows, duplicateBoard(board1)}) + } + } else { + previousStates[state] = []PreviousLocation{{dropNo, removedRows, duplicateBoard(board1)}} + } + } + + addPiece(pieces[pieceIndex], &board1) + for { + //fmt.Println("Move", moveIndex, "is", string(instructions[moveIndex])) + if !movePiece(instructions[moveIndex], &board1, &board2) { + copyBoard(false, &board1, &board2) + } + moveIndex = (moveIndex + 1) % len(instructions) + if !movePiece('v', &board2, &board1) { + copyBoard(false, &board2, &board1) + break + } + } + + removedRows += freezeBoard(&board1) + pieceIndex = (pieceIndex + 1) % len(pieces) + } + + //printBoard(&board1) + fmt.Println("Removed", removedRows, "rows.") + rowsWithRocks := removedRows + for i := 0; i < len(board1); i++ { + if !rowEmpty(i, board1) { + rowsWithRocks += 1 + } + } + fmt.Println("Rocks are", rowsWithRocks, "rows tall.") +} diff --git a/solutions/day18/day18.go b/solutions/day18/day18.go new file mode 100644 index 0000000..5cee1c8 --- /dev/null +++ b/solutions/day18/day18.go @@ -0,0 +1,148 @@ +package day18 + +import ( + "bufio" + "fmt" + "os" +) + +type Point struct { + x int + y int + z int +} + +const ( + Lava int = iota + Air + Steam +) + +func surroundingPoints(point Point) []Point { + return []Point{ + {point.x - 1, point.y, point.z}, + {point.x + 1, point.y, point.z}, + {point.x, point.y - 1, point.z}, + {point.x, point.y + 1, point.z}, + {point.x, point.y, point.z - 1}, + {point.x, point.y, point.z + 1}, + } +} + +func countBlankSides(points map[Point]int, against int) int { + blankSides := 0 + for point, original := range points { + if original == Lava { + pointBlankSides := 0 + for _, surrounding := range surroundingPoints(point) { + if points[surrounding] == against { + pointBlankSides += 1 + } + } + //fmt.Println("Point", point, "had", pointBlankSides, "blank sides.") + blankSides += pointBlankSides + } + } + return blankSides +} + +func inUniverse(point Point, min Point, max Point) bool { + return point.x >= min.x && point.x <= max.x && + point.y >= min.y && point.y <= max.y && + point.z >= min.z && point.z <= max.x +} + +func floodSteam(minPoint Point, maxPoint Point, points map[Point]int) { + stack := []Point{minPoint} + + for len(stack) > 0 { + nextIdx := len(stack) - 1 + next := stack[nextIdx] + stack = stack[0:nextIdx] + + if inUniverse(next, minPoint, maxPoint) && points[next] == Air { + points[next] = Steam + stack = append(stack, surroundingPoints(next)...) + } + } +} + +func findExtendedBoundingBox(points map[Point]int) (minPoint Point, maxPoint Point) { + minPoint = Point{1000000, 100000, 100000} + maxPoint = Point{0, 0, 0} + + for point := range points { + if point.x < minPoint.x { + minPoint.x = point.x + } + if point.x > maxPoint.x { + maxPoint.x = point.x + } + if point.y < minPoint.y { + minPoint.y = point.y + } + if point.y > maxPoint.y { + maxPoint.y = point.y + } + if point.z < minPoint.z { + minPoint.z = point.z + } + if point.z > maxPoint.z { + maxPoint.z = point.z + } + } + + fmt.Println("Min point", minPoint) + fmt.Println("Max point", maxPoint) + + minPoint.x -= 1 + minPoint.y -= 1 + minPoint.z -= 1 + maxPoint.x += 1 + maxPoint.y += 1 + maxPoint.z += 1 + + return +} + +func Run(filename string) { + file, err := os.Open(filename) + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + points := map[Point]int{} + + for scanner.Scan() { + line := scanner.Text() + var x int + var y int + var z int + fmt.Sscanf(line, "%d,%d,%d", &x, &y, &z) + point := Point{x, y, z} + points[point] = Lava + } + file.Close() + + minPoint, maxPoint := findExtendedBoundingBox(points) + + for x := minPoint.x; x <= maxPoint.x; x++ { + for y := minPoint.y; y <= maxPoint.y; y++ { + for z := minPoint.z; z <= maxPoint.z; z++ { + point := Point{x, y, z} + _, exists := points[point] + if !exists { + points[point] = Air + } + } + } + } + + fmt.Println("Found", countBlankSides(points, Air), "blank sides in base solid.") + floodSteam(minPoint, maxPoint, points) + fmt.Println("Found", countBlankSides(points, Steam), "blank sides after filling interior.") + +} diff --git a/solutions/day19/day19.go b/solutions/day19/day19.go new file mode 100644 index 0000000..4efc181 --- /dev/null +++ b/solutions/day19/day19.go @@ -0,0 +1,171 @@ +package day19 + +import ( + "bufio" + "fmt" + "os" +) + +type Blueprint struct { + blueprintNumber int + oreRobotOreCost int + clayRobotOreCost int + obsRobotOreCost int + obsRobotClayCost int + geodeRobotOreCost int + geodeRobotObsCost int +} + +type State struct { + minute int + ore int + clay int + obsidian int + geodes int + + oreRobots int + clayRobots int + obsidianRobots int + geodeRobots int +} + +var initialState State = State{0, 0, 0, 0, 0, 1, 0, 0, 0} + +func copyState(state State) State { + return State{ + state.minute, + state.ore, + state.clay, + state.obsidian, + state.geodes, + state.oreRobots, + state.clayRobots, + state.obsidianRobots, + state.geodeRobots, + } +} + +func nextStates(current State, minutes int, blueprint Blueprint) []State { + if current.minute == minutes { + return []State{} + } + + buyNothing := State{ + current.minute + 1, + current.ore + current.oreRobots, + current.clay + current.clayRobots, + current.obsidian + current.obsidianRobots, + current.geodes + current.geodeRobots, + current.oreRobots, + current.clayRobots, + current.obsidianRobots, + current.geodeRobots, + } + + retval := []State{buyNothing} + + if current.ore >= blueprint.oreRobotOreCost { + buyOre := copyState(buyNothing) + buyOre.ore -= blueprint.oreRobotOreCost + buyOre.oreRobots += 1 + retval = append(retval, buyOre) + } + + if current.ore >= blueprint.clayRobotOreCost { + buyClay := copyState(buyNothing) + buyClay.ore -= blueprint.clayRobotOreCost + buyClay.clayRobots += 1 + retval = append(retval, buyClay) + } + + if current.ore >= blueprint.obsRobotOreCost && current.clay >= blueprint.obsRobotClayCost { + buyObsidian := copyState(buyNothing) + buyObsidian.ore -= blueprint.obsRobotOreCost + buyObsidian.clay -= blueprint.obsRobotClayCost + buyObsidian.obsidianRobots += 1 + retval = append(retval, buyObsidian) + } + + if current.ore >= blueprint.geodeRobotOreCost && current.obsidian >= blueprint.geodeRobotObsCost { + buyGeode := copyState(buyNothing) + buyGeode.ore -= blueprint.geodeRobotOreCost + buyGeode.obsidian -= blueprint.geodeRobotObsCost + buyGeode.geodeRobots += 1 + retval = append(retval, buyGeode) + } + + return retval +} + +func runSimulation(blueprint Blueprint, minutes int) int { + visited := map[State]bool{} + queue := []State{initialState} + bestResult := 0 + + for len(queue) > 0 { + nextState := queue[len(queue)-1] + queue = queue[0 : len(queue)-1] + + _, alreadyDone := visited[nextState] + if alreadyDone { + continue + } + visited[nextState] = true + + minutesLeft := minutes - nextState.minute + bestPossibleFuture := nextState.geodes + (minutesLeft*(2*nextState.geodeRobots+(minutesLeft-1)))/2 + if bestPossibleFuture < bestResult { + continue + } + + newStates := nextStates(nextState, minutes, blueprint) + if len(newStates) == 0 { + if nextState.geodes > bestResult { + bestResult = nextState.geodes + } + } + queue = append(queue, newStates...) + } + + return bestResult +} + +func Run(filename string) { + file, err := os.Open(filename) + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + blueprints := []Blueprint{} + + for scanner.Scan() { + line := scanner.Text() + var blueprintNumber, oreRobotOre, clayRobotOre, obsRobotOre, obsRobotClay, geodeRobotOre, geodeRobotObs int + fmt.Sscanf(line, "Blueprint %d: Each ore robot costs %d ore. Each clay robot costs %d ore. Each obsidian robot costs %d ore and %d clay. Each geode robot costs %d ore and %d obsidian.", &blueprintNumber, &oreRobotOre, &clayRobotOre, &obsRobotOre, &obsRobotClay, &geodeRobotOre, &geodeRobotObs) + blueprints = append(blueprints, Blueprint{blueprintNumber, oreRobotOre, clayRobotOre, obsRobotOre, obsRobotClay, geodeRobotOre, geodeRobotObs}) + } + file.Close() + + fmt.Println("Blueprints", blueprints) + totalQualityLevel := 0 + for _, blueprint := range blueprints { + geodesHarvested := runSimulation(blueprint, 24) + fmt.Println("Found", geodesHarvested, "geodes for blueprint", blueprint.blueprintNumber) + totalQualityLevel += geodesHarvested * blueprint.blueprintNumber + } + fmt.Println("Total quality level of all blueprints at 24 minutes is", totalQualityLevel) + + multipliedGeodes := 1 + if len(blueprints) > 3 { + blueprints = blueprints[0:3] + } + for _, blueprint := range blueprints { + geodesHarvested := runSimulation(blueprint, 32) + fmt.Println("Found", geodesHarvested, "geodes for blueprint", blueprint.blueprintNumber) + multipliedGeodes *= geodesHarvested + } + fmt.Println("Multiplied number of geodes of first three blueprints at 32 minutes is", multipliedGeodes) +} diff --git a/solutions/day2/day2.go b/solutions/day2/day2.go new file mode 100644 index 0000000..efd1586 --- /dev/null +++ b/solutions/day2/day2.go @@ -0,0 +1,166 @@ +package day2 + +import ( + "bufio" + "fmt" + "os" + + "golang.org/x/exp/utf8string" +) + +type Move = int + +const ( + Rock Move = 1 + Paper = 2 + Scissors = 3 +) + +type Result = int + +const ( + Loss Result = 0 + Tie = 3 + Win = 6 +) + +func score(opponent Move, us Move) int { + switch opponent { + case Rock: + switch us { + case Rock: + return Rock + Tie + case Paper: + return Paper + Win + case Scissors: + return Scissors + Loss + } + + case Paper: + switch us { + case Rock: + return Rock + Loss + case Paper: + return Paper + Tie + case Scissors: + return Scissors + Win + } + + case Scissors: + switch us { + case Rock: + return Rock + Win + case Paper: + return Paper + Loss + case Scissors: + return Scissors + Tie + } + } + + fmt.Println("PANIC: Unknown combo: them", opponent, "us", us) + return 0 +} + +func compute_move(opponent Move, goal Result) Move { + switch opponent { + case Rock: + switch goal { + case Loss: + return Scissors + case Tie: + return Rock + case Win: + return Paper + } + + case Paper: + switch goal { + case Loss: + return Rock + case Tie: + return Paper + case Win: + return Scissors + } + + case Scissors: + switch goal { + case Loss: + return Paper + case Tie: + return Scissors + case Win: + return Rock + } + } + + fmt.Println("PANIC: Unknown combo: them", opponent, "goal", goal) + return 0 + +} + +func move(r rune) Move { + switch r { + case 'A': + return Rock + case 'B': + return Paper + case 'C': + return Scissors + case 'X': + return Rock + case 'Y': + return Paper + case 'Z': + return Scissors + } + fmt.Println("PANIC: Unknown character", r) + return 0 +} + +func result(r rune) Result { + switch r { + case 'X': + return Loss + case 'Y': + return Tie + case 'Z': + return Win + } + fmt.Println("PANIC: Unknown character for result", r) + return 99 +} + +func Run(filename string) { + file, err := os.Open(filename) + + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + + var total_score_base int = 0 + var total_score_extended int = 0 + + for scanner.Scan() { + line := scanner.Text() + utf8 := utf8string.NewString(line) + + opponent := move(utf8.At(0)) + us := move(utf8.At(2)) + + total_score_base += score(opponent, us) + + target := result(utf8.At(2)) + computed_move := compute_move(opponent, target) + total_score_extended += score(opponent, computed_move) + } + + file.Close() + + fmt.Println("Total initial score is", total_score_base) + fmt.Println("Total score with back compute is", total_score_extended) +} diff --git a/solutions/day20/day20.go b/solutions/day20/day20.go new file mode 100644 index 0000000..42a29d7 --- /dev/null +++ b/solutions/day20/day20.go @@ -0,0 +1,144 @@ +package day20 + +import ( + "bufio" + "fmt" + "os" + "strconv" +) + +func printNumbers(numbers []int, nexts []int) { + current := 0 + + for nexts[current] == -1 { + current += 1 + } + + first := numbers[current] + fmt.Printf("%d", first) + current = nexts[current] + for numbers[current] != first { + fmt.Printf(" %d", numbers[current]) + current = nexts[current] + } + fmt.Println() +} + +func removeIndex(idx int, prevs []int, nexts []int) (before int, after int) { + before = prevs[idx] + after = nexts[idx] + + nexts[before] = after + prevs[after] = before + prevs[idx] = -1 + nexts[idx] = -1 + + return +} + +func insertAfter(idx int, after int, prevs []int, nexts []int) { + afterNext := nexts[after] + prevs[idx] = after + nexts[idx] = afterNext + prevs[afterNext] = idx + nexts[after] = idx +} + +func insertBefore(idx int, before int, prevs []int, nexts []int) { + beforePrev := prevs[before] + prevs[idx] = beforePrev + nexts[idx] = before + prevs[before] = idx + nexts[beforePrev] = idx +} + +func shift(count int, idx int, prevs []int, nexts []int) { + count %= len(prevs) - 1 + for count != 0 { + before, after := removeIndex(idx, prevs, nexts) + if count > 0 { + insertAfter(idx, after, prevs, nexts) + count -= 1 + } else { + insertBefore(idx, before, prevs, nexts) + count += 1 + } + } +} + +func indexPast(count int, current int, nexts []int) int { + for count > 0 { + current = nexts[current] + count -= 1 + } + return current +} + +func Run(filename string, keyString string, countString string) { + file, err := os.Open(filename) + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + key, err := strconv.Atoi(keyString) + if err != nil { + fmt.Println("Invalid key value", err) + return + } + + roundCount, err := strconv.Atoi(countString) + if err != nil { + fmt.Println("Invalid round count", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + numbers := []int{} + nexts := []int{} + prevs := []int{} + zeroIndex := -1 + + for scanner.Scan() { + line := scanner.Text() + x, err := strconv.Atoi(line) + if err != nil { + fmt.Println("Couldn't parse number", line) + return + } + numbers = append(numbers, x*key) + nexts = append(nexts, 0) + prevs = append(prevs, 0) + + if x == 0 { + zeroIndex = len(numbers) - 1 + } + } + + for idx := range nexts { + nexts[idx] = (idx + 1) % len(nexts) + if idx == 0 { + prevs[idx] = len(prevs) - 1 + } else { + prevs[idx] = idx - 1 + } + } + file.Close() + + for round := 0; round < roundCount; round++ { + for idx := range numbers { + fmt.Println("Working round", round+1, "index", idx, "with value/count", numbers[idx]) + shift(numbers[idx], idx, prevs, nexts) + //printNumbers(numbers, nexts) + } + } + + idx1k := indexPast(1000, zeroIndex, nexts) + idx2k := indexPast(1000, idx1k, nexts) + idx3k := indexPast(1000, idx2k, nexts) + val1k := numbers[idx1k] + val2k := numbers[idx2k] + val3k := numbers[idx3k] + fmt.Println("Value 1k after 0", val1k, "2k", val2k, "3k", val3k, "sum", val1k+val2k+val3k) +} diff --git a/solutions/day21/day21.go b/solutions/day21/day21.go new file mode 100644 index 0000000..f09cfd8 --- /dev/null +++ b/solutions/day21/day21.go @@ -0,0 +1,221 @@ +package day21 + +import ( + "bufio" + "fmt" + "os" + "strconv" +) + +const ( + OpAdd int = iota + OpMul + OpSub + OpDiv + OpTarget +) + +func opString(v int) string { + switch v { + case OpAdd: + return "+" + case OpMul: + return "*" + case OpSub: + return "-" + case OpDiv: + return "/" + case OpTarget: + return "==" + default: + return "???????" + } +} + +type MonkeyState struct { + valueSet bool + value int + operation int + left string + right string +} + +func step(monkeys map[string]MonkeyState) bool { + changedSomething := false + + for monkey, state := range monkeys { + if !state.valueSet && monkeys[state.left].valueSet && monkeys[state.right].valueSet { + switch state.operation { + case OpAdd: + state.value = monkeys[state.left].value + monkeys[state.right].value + case OpSub: + state.value = monkeys[state.left].value - monkeys[state.right].value + case OpMul: + state.value = monkeys[state.left].value * monkeys[state.right].value + case OpDiv: + state.value = monkeys[state.left].value / monkeys[state.right].value + } + state.valueSet = true + monkeys[monkey] = state + changedSomething = true + } + } + + return changedSomething +} + +func contains(ls []string, x string) bool { + for _, tester := range ls { + if tester == x { + return true + } + } + return false +} + +func Run(filename string) { + file, err := os.Open(filename) + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + monkeys := map[string]MonkeyState{} + + for scanner.Scan() { + line := scanner.Text() + + monkey := line[0:4] + data := line[6:] + value, err := strconv.Atoi(data) + if err == nil { + monkeys[monkey] = MonkeyState{true, value, 0, "", ""} + } else { + left := data[0:4] + right := data[7:] + switch data[5] { + case '+': + monkeys[monkey] = MonkeyState{false, 0, OpAdd, left, right} + case '-': + monkeys[monkey] = MonkeyState{false, 0, OpSub, left, right} + case '*': + monkeys[monkey] = MonkeyState{false, 0, OpMul, left, right} + case '/': + monkeys[monkey] = MonkeyState{false, 0, OpDiv, left, right} + default: + fmt.Println("Bad operation", string(data[5])) + return + } + } + } + file.Close() + + for !monkeys["root"].valueSet { + step(monkeys) + } + fmt.Println("Root monkey value, part 1:", monkeys["root"].value) + + humn := monkeys["humn"] + humn.valueSet = false + humn.operation = OpTarget + monkeys["humn"] = humn + unwoundMonkeys := []string{"humn"} + updatedSomething := true + for updatedSomething { + updatedSomething = false + for monkey, state := range monkeys { + if contains(unwoundMonkeys, state.left) || contains(unwoundMonkeys, state.right) { + if state.valueSet { + state.valueSet = false + monkeys[monkey] = state + unwoundMonkeys = append(unwoundMonkeys, monkey) + updatedSomething = true + } + } + } + } + + fmt.Println("monkeys now", monkeys) + var targetValue int + var nextNode string + + if monkeys[monkeys["root"].left].valueSet { + targetValue = monkeys[monkeys["root"].left].value + nextNode = monkeys["root"].right + fmt.Println("Root's right is the unknown one", nextNode) + } else { + targetValue = monkeys[monkeys["root"].right].value + nextNode = monkeys["root"].left + fmt.Println("Root's left is the unknown one", nextNode) + } + + for !monkeys["humn"].valueSet { + nextState := monkeys[nextNode] + + if nextState.valueSet { + fmt.Println("PANIC: Grounded in a node with the value set") + return + } else if nextState.operation == OpTarget { + nextState.value = targetValue + nextState.valueSet = true + monkeys[nextNode] = nextState + } else if monkeys[nextState.left].valueSet { + nextState.value = targetValue + nextState.valueSet = true + monkeys[nextNode] = nextState + switch nextState.operation { + case OpAdd: + // T = V + X + // T - V = X + targetValue = targetValue - monkeys[nextState.left].value + case OpMul: + // T = V * X + // T / V = X + targetValue = targetValue / monkeys[nextState.left].value + case OpSub: + // T = V - X + // T + X = V + // X = V - T + targetValue = monkeys[nextState.left].value - targetValue + case OpDiv: + // T = V / X + // TX = V + // X = V / T + targetValue = monkeys[nextState.left].value / targetValue + default: + fmt.Println("PANIC: Bad operation in back compute") + } + nextNode = nextState.right + } else if monkeys[nextState.right].valueSet { + nextState.value = targetValue + nextState.valueSet = true + monkeys[nextNode] = nextState + switch nextState.operation { + case OpAdd: + // T = X + V + // T - V = X + targetValue = targetValue - monkeys[nextState.right].value + case OpMul: + // T = X * V + targetValue = targetValue / monkeys[nextState.right].value + case OpSub: + // T = X - V + // T + V = X + targetValue = targetValue + monkeys[nextState.right].value + case OpDiv: + // T = X / V + // TV = X + targetValue = targetValue * monkeys[nextState.right].value + default: + fmt.Println("PANIC: Bad operation in back compute") + } + nextNode = nextState.left + } else { + fmt.Println("PANIC: Trouble with a double split in search") + return + } + } + fmt.Println("Actually, my value should be", monkeys["humn"].value) +} diff --git a/solutions/day22/day22.go b/solutions/day22/day22.go new file mode 100644 index 0000000..fcc9fff --- /dev/null +++ b/solutions/day22/day22.go @@ -0,0 +1,635 @@ +package day22 + +import ( + "bufio" + "fmt" + "os" +) + +type Command int +type Tile int +type Direction int +type Face int +type Board [][]Tile +type FaceMap map[Face]Board + +const ( + TurnRight Command = -1 + TurnLeft = -2 +) + +const ( + Void Tile = iota + Empty + Wall +) + +const ( + Right Direction = 0 + Down = 1 + Left = 2 + Up = 3 +) + +const ( + TopFace Face = iota + BottomFace + LeftFace + RightFace + FrontFace + BackFace +) + +func printBoard(board Board) { + for _, row := range board { + for _, tile := range row { + switch tile { + case Void: + fmt.Printf(" ") + case Empty: + fmt.Printf(".") + case Wall: + fmt.Printf("#") + } + } + fmt.Println() + } +} + +func parseCommands(runes []rune) []Command { + result := []Command{} + accum := 0 + + for _, r := range runes { + if r >= '0' && r <= '9' { + accum = (accum * 10) + int(r-'0') + } else { + result = append(result, Command(accum)) + accum = 0 + if r == 'R' { + result = append(result, TurnRight) + } else { + result = append(result, TurnLeft) + } + } + } + + if accum > 0 { + result = append(result, Command(accum)) + } + + return result +} + +func parseBoardLine(runes []rune) []Tile { + result := []Tile{} + + for _, r := range runes { + switch r { + case ' ': + result = append(result, Void) + case '.': + result = append(result, Empty) + case '#': + result = append(result, Wall) + default: + fmt.Println("PANIC: Illegal character in board map", string(r)) + } + } + + return result +} + +func initialPosition(board Board) (x int, y int) { + for idx, tile := range board[0] { + if tile == Empty { + x = idx + y = 0 + return + } + } + fmt.Println("PANIC: Couldn't figure out initial position") + x = 0 + y = 0 + return +} + +func turn(direction Direction, turn Command) Direction { + switch direction { + case Up: + switch turn { + case TurnLeft: + return Left + case TurnRight: + return Right + } + case Right: + switch turn { + case TurnLeft: + return Up + case TurnRight: + return Down + } + case Down: + switch turn { + case TurnLeft: + return Right + case TurnRight: + return Left + } + case Left: + switch turn { + case TurnLeft: + return Down + case TurnRight: + return Up + } + } + fmt.Println("PANIC: turn default WTF") + return Down +} + +type State2D struct { + x int + y int + direction Direction + board Board +} + +func step2d(count int, state *State2D) { + if count == 0 { + return + } + + keepGoing := true + + switch state.direction { + case Right: + currentRow := state.board[state.y] + tester := (state.x + 1) % len(currentRow) + for { + if currentRow[tester] == Void { + tester = (tester + 1) % len(currentRow) + continue + } else if currentRow[tester] == Wall { + keepGoing = false + break + } else { + (*state).x = tester + break + } + } + + case Left: + currentRow := state.board[state.y] + tester := state.x - 1 + for { + if tester < 0 { + tester = len(currentRow) - 1 + } + if currentRow[tester] == Void { + tester -= 1 + continue + } else if currentRow[tester] == Wall { + keepGoing = false + break + } else { + (*state).x = tester + break + } + } + + case Up: + tester := state.y - 1 + for { + if tester < 0 { + tester = len(state.board) - 1 + } + if state.board[tester][state.x] == Void { + tester -= 1 + continue + } else if state.board[tester][state.x] == Wall { + keepGoing = false + break + } else { + (*state).y = tester + break + } + } + + case Down: + fmt.Println("Moving down count is", count, "y value", state.y) + tester := (state.y + 1) % len(state.board) + for { + if state.board[tester][state.x] == Void { + tester = (tester + 1) % len(state.board) + continue + } else if state.board[tester][state.x] == Wall { + fmt.Println("Hit wall at tester", tester) + keepGoing = false + break + } else { + (*state).y = tester + break + } + } + + default: + fmt.Println("BAD") + } + + if keepGoing { + step2d(count-1, state) + } +} + +func copyFace(startX int, startY int, faceSize int, board Board) Board { + retval := Board{} + + for y := 0; y < faceSize; y++ { + newRow := []Tile{} + + for x := 0; x < faceSize; x++ { + newRow = append(newRow, board[y+startY][x+startX]) + } + retval = append(retval, newRow) + } + + return retval +} + +func validPoint(x int, y int, board Board) bool { + return (x >= 0) && (y >= 0) && (x < len(board[0])) && (y < len(board)) +} + +var faceMoves map[Face]map[Direction]Face = map[Face]map[Direction]Face{ + TopFace: map[Direction]Face{ + Up: BackFace, + Left: LeftFace, + Right: RightFace, + Down: FrontFace, + }, + BottomFace: map[Direction]Face{ + Up: FrontFace, + Left: LeftFace, + Right: RightFace, + Down: BackFace, + }, + LeftFace: map[Direction]Face{ + Up: TopFace, + Left: BackFace, + Right: FrontFace, + Down: BottomFace, + }, + RightFace: map[Direction]Face{ + Up: TopFace, + Left: FrontFace, + Right: BackFace, + Down: BottomFace, + }, + FrontFace: map[Direction]Face{ + Up: TopFace, + Left: LeftFace, + Right: RightFace, + Down: BottomFace, + }, + BackFace: map[Direction]Face{ + Up: BackFace, + Left: RightFace, + Right: FrontFace, + Down: FrontFace, + }, +} + +var faceName map[Face]string = map[Face]string{ + TopFace: "top", + BottomFace: "bottom", + LeftFace: "left", + RightFace: "right", + FrontFace: "front", + BackFace: "back", +} + +var dirName map[Direction]string = map[Direction]string{ + Up: "up", + Down: "down", + Left: "left", + Right: "right", +} + +var tileName map[Tile]string = map[Tile]string{ + Void: "void", + Empty: "empty", + Wall: "wall", +} + +type State3D struct { + x int + y int + face Face + direction Direction + board FaceMap +} + +func translate(x int, y int, faceSize int, face Face, dir Direction) (resx int, resy int, resdir Direction) { + switch face { + case TopFace: + resdir = Down + switch dir { + case Right, Left: + resy = 0 + resx = y + case Up, Down: + resy = 0 + resx = x + } + case FrontFace: + resdir = dir + switch dir { + case Up: + resy = faceSize - 1 + resx = x + case Down: + resy = 0 + resx = x + case Left: + resy = y + resx = faceSize - 1 + case Right: + resy = y + resx = 0 + } + case LeftFace: + switch dir { + case Up: + resx = 0 + resy = x + resdir = Right + case Down: + resx = 0 + resy = x + resdir = Right + case Left: + resy = y + resx = faceSize - 1 + resdir = Left + case Right: + resy = y + resx = 0 + resdir = Right + } + case RightFace: + switch dir { + case Up: + resx = faceSize - 1 + resy = x + resdir = Left + case Down: + resx = faceSize - 1 + resy = x + resdir = Left + case Left: + resx = faceSize - 1 + resy = y + resdir = Left + case Right: + resy = y + resx = 0 + resdir = Right + } + case BackFace: + switch dir { + case Up: + resx = x + resy = 0 + resdir = Down + case Down: + resx = x + resy = faceSize - 1 + resdir = Up + case Left: + resx = faceSize - 1 + resy = y + resdir = Right + case Right: + resy = y + resx = 0 + resdir = Left + } + case BottomFace: + switch dir { + case Up: + resx = x + resy = faceSize - 1 + resdir = Up + case Down: + resx = x + resy = faceSize - 1 + resdir = Up + case Left: + resx = y + resy = faceSize - 1 + resdir = Up + case Right: + resy = faceSize - 1 + resx = y + resdir = Up + } + } + + return +} + +func step3d(count int, state *State3D) { + if count == 0 { + return + } + + for i := 0; i < count; i++ { + newX := state.x + newY := state.y + newFace := state.face + newDirection := state.direction + + switch state.direction { + case Up: + newY -= 1 + case Down: + newY += 1 + case Left: + newX -= 1 + case Right: + newX += 1 + } + + if !validPoint(newX, newY, state.board[state.face]) { + newFace = faceMoves[state.face][state.direction] + newX, newY, newDirection = translate(newX, newY, len(state.board[state.face]), state.face, state.direction) + } + fmt.Printf("(%d, %d) going %s on %s ---> (%d, %d) going %s on %s [%s]\n", state.x, state.y, dirName[state.direction], faceName[state.face], newX, newY, dirName[newDirection], faceName[newFace], tileName[state.board[newFace][newY][state.x]]) + + if state.board[newFace][newY][newX] == Wall { + return + } + + (*state).x = newX + (*state).y = newY + (*state).face = newFace + (*state).direction = newDirection + } +} + +func Run(filename string) { + file, err := os.Open(filename) + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + var commands []Command + initialBoard := Board{} + + for scanner.Scan() { + line := scanner.Text() + runes := []rune(line) + + if len(runes) > 0 { + if runes[0] >= '0' && runes[0] <= '9' { + commands = parseCommands(runes) + } else { + initialBoard = append(initialBoard, parseBoardLine(runes)) + } + } + } + file.Close() + + maximumRowLength := 0 + for _, row := range initialBoard { + if len(row) > maximumRowLength { + maximumRowLength = len(row) + } + } + + board := Board{} + + for _, row := range initialBoard { + for len(row) < maximumRowLength { + row = append(row, Void) + } + board = append(board, row) + } + + printBoard(board) + + startX, startY := initialPosition(board) + x, y := startX, startY + fmt.Println("initial position is", x, y) + state := State2D{x, y, Right, board} + for _, command := range commands { + fmt.Println("x", state.x, "y", state.y, "direction", dirName[state.direction]) + fmt.Println("Running", command) + switch command { + case TurnRight: + state.direction = turn(state.direction, TurnRight) + case TurnLeft: + state.direction = turn(state.direction, TurnLeft) + default: + step2d(int(command), &state) + } + } + + finalRow := state.y + 1 + finalColumn := state.x + 1 + finalPassword := 1000*finalRow + 4*finalColumn + int(state.direction) + fmt.Println("Final row is", finalRow, "final column is", finalColumn, "final password is", finalPassword) + + narrowestSection := len(board[0]) + for _, row := range board { + startIdx := -1 + endIdx := -1 + + for idx, tile := range row { + if tile != Void && startIdx == -1 { + startIdx = idx + } + + if tile == Void && (startIdx != -1) && (endIdx == -1) { + endIdx = idx + } + } + + if endIdx == -1 { + endIdx = len(row) - 1 + } + + if (endIdx - startIdx) < narrowestSection { + narrowestSection = endIdx - startIdx + } + } + + cubeFaceSize := narrowestSection + fmt.Println("Cube face size is", cubeFaceSize) + + faceMap := FaceMap{} + currentFace := TopFace + currentSpineX := startX + currentSpineY := startY + + for validPoint(currentSpineX, currentSpineY, board) { + faceMap[currentFace] = copyFace(currentSpineX, currentSpineY, cubeFaceSize, board) + fmt.Printf("Found %s face at (%d,%d)\n", faceName[currentFace], currentSpineX, currentSpineY) + + leftwardsFace := faceMoves[currentFace][Left] + for leftX := currentSpineX - cubeFaceSize; validPoint(leftX, currentSpineY, board) && board[currentSpineY][leftX] != Void; leftX -= cubeFaceSize { + faceMap[leftwardsFace] = copyFace(leftX, currentSpineY, cubeFaceSize, board) + fmt.Printf("Found %s face at (%d,%d)\n", faceName[leftwardsFace], leftX, currentSpineY) + fmt.Println("Moving face", faceName[leftwardsFace], "left to", faceName[faceMoves[leftwardsFace][Left]]) + leftwardsFace = faceMoves[leftwardsFace][Left] + } + + rightwardsFace := faceMoves[currentFace][Right] + for rightX := currentSpineX + cubeFaceSize; validPoint(rightX, currentSpineY, board) && board[currentSpineY][rightX] != Void; rightX += cubeFaceSize { + faceMap[rightwardsFace] = copyFace(rightX, currentSpineY, cubeFaceSize, board) + fmt.Printf("Found %s face at (%d,%d)\n", faceName[rightwardsFace], rightX, currentSpineY) + fmt.Println("Moving face", faceName[rightwardsFace], "right to", faceName[faceMoves[rightwardsFace][Left]]) + rightwardsFace = faceMoves[rightwardsFace][Right] + } + + currentSpineY += cubeFaceSize + fmt.Println("Moving face", faceName[currentFace], "down to", faceName[faceMoves[currentFace][Down]]) + currentFace = faceMoves[currentFace][Down] + } + + if len(faceMap) != 6 { + fmt.Println("COULD NOT FIND ALL SIX FACES") + return + } + + for face, board := range faceMap { + fmt.Println("Board", faceName[face]) + printBoard(board) + } + + fmt.Println("initial position is", x, y) + state3 := State3D{0, 0, TopFace, Right, faceMap} + for _, command := range commands { + fmt.Println("x", state3.x, "y", state3.y, "face", faceName[state3.face], "direction", dirName[state3.direction]) + fmt.Println("Running", command) + switch command { + case TurnRight: + state3.direction = turn(state3.direction, TurnRight) + case TurnLeft: + state3.direction = turn(state3.direction, TurnLeft) + default: + step3d(int(command), &state3) + } + } + + finalRow = state3.y + 1 + finalColumn = state3.x + 1 + finalPassword = 1000*finalRow + 4*finalColumn + int(state.direction) + fmt.Println("Final row is", finalRow, "final column is", finalColumn, "final password is", finalPassword) + +} diff --git a/solutions/day23/day23.go b/solutions/day23/day23.go new file mode 100644 index 0000000..3922ad2 --- /dev/null +++ b/solutions/day23/day23.go @@ -0,0 +1,237 @@ +package day23 + +import ( + "bufio" + "fmt" + "os" +) + +type Direction int + +const ( + North Direction = iota + South + East + West +) + +type Point struct { + x int + y int +} + +type ElfLocations map[Point]bool + +func extents(locations ElfLocations) (topLeft Point, bottomRight Point) { + lowestX := 1000000000000000000 + highestX := -1000000000000000000 + lowestY := 1000000000000000000 + highestY := -1000000000000000000 + + for location := range locations { + if location.x < lowestX { + lowestX = location.x + } + + if location.x > highestX { + highestX = location.x + } + + if location.y < lowestY { + lowestY = location.y + } + + if location.y > highestY { + highestY = location.y + } + } + + topLeft = Point{lowestX, lowestY} + bottomRight = Point{highestX, highestY} + return +} + +func hasElf(x int, y int, locations ElfLocations) bool { + _, exists := locations[Point{x, y}] + return exists +} + +func printMap(locations ElfLocations) { + topLeft, bottomRight := extents(locations) + + fmt.Println("top left", topLeft) + fmt.Println("bottom right", bottomRight) + for y := topLeft.y; y <= bottomRight.y; y++ { + for x := topLeft.x; x <= bottomRight.x; x++ { + if hasElf(x, y, locations) { + fmt.Printf("#") + } else { + fmt.Printf(".") + } + } + fmt.Println() + } +} + +func directionIsEmpty(direction Direction, x int, y int, locations ElfLocations) bool { + switch direction { + case North: + return !hasElf(x-1, y-1, locations) && !hasElf(x, y-1, locations) && !hasElf(x+1, y-1, locations) + case South: + return !hasElf(x-1, y+1, locations) && !hasElf(x, y+1, locations) && !hasElf(x+1, y+1, locations) + case West: + return !hasElf(x-1, y-1, locations) && !hasElf(x-1, y, locations) && !hasElf(x-1, y+1, locations) + case East: + return !hasElf(x+1, y-1, locations) && !hasElf(x+1, y, locations) && !hasElf(x+1, y+1, locations) + } + return false +} + +func showDirection(dir *Direction) string { + if dir == nil { + return "" + } + + switch *dir { + case North: + return "north" + case South: + return "south" + case East: + return "east" + case West: + return "west" + } + + return "" +} + +func proposeMove(x int, y int, directionPreference []Direction, locations ElfLocations) *Point { + var firstEmpty *Direction = nil + allEmpty := true + + for _, dir := range directionPreference { + if directionIsEmpty(dir, x, y, locations) { + if firstEmpty == nil { + firstEmpty = new(Direction) + *firstEmpty = dir + } + } else { + allEmpty = false + } + } + + if allEmpty { + return nil + } + + if firstEmpty == nil { + return nil + } + + switch *firstEmpty { + case North: + return &Point{x, y - 1} + case South: + return &Point{x, y + 1} + case East: + return &Point{x + 1, y} + case West: + return &Point{x - 1, y} + } + + fmt.Println("PANIC: fell through?!") + return nil +} + +func runRound(locations ElfLocations, preferredDirections []Direction) (newLocations ElfLocations, done bool) { + suggestedMoves := map[Point]Point{} + takenPoints := map[Point]int{} + + for location := range locations { + proposed := proposeMove(location.x, location.y, preferredDirections, locations) + if proposed != nil { + fmt.Println("Proposed to move", location, "to", proposed) + suggestedMoves[location] = *proposed + curVal := takenPoints[*proposed] + takenPoints[*proposed] = curVal + 1 + } + } + + newLocations = ElfLocations{} + done = true + for originalLocation := range locations { + newPlace, hasNewPlace := suggestedMoves[originalLocation] + if hasNewPlace && takenPoints[newPlace] <= 1 { + newLocations[newPlace] = true + done = false + } else { + newLocations[originalLocation] = true + } + } + + return +} + +func Run(filename string) { + file, err := os.Open(filename) + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + elfLocations := ElfLocations{} + y := 0 + + for scanner.Scan() { + line := []rune(scanner.Text()) + + for x, r := range line { + if r == '#' { + elfLocations[Point{x, y}] = true + } + } + y += 1 + } + file.Close() + + preferredDirections := []Direction{North, South, West, East} + for i := 0; i < 10; i++ { + fmt.Println("Round", i) + printMap(elfLocations) + newLocations, done := runRound(elfLocations, preferredDirections) + preferredDirections = append(preferredDirections[1:], preferredDirections[0]) + if done { + fmt.Println("No one moves after this round, so we're done.") + break + } + elfLocations = newLocations + } + printMap(elfLocations) + + topLeft, bottomRight := extents(elfLocations) + emptyGround := 0 + for x := topLeft.x; x <= bottomRight.x; x++ { + for y := topLeft.y; y <= bottomRight.y; y++ { + if !hasElf(x, y, elfLocations) { + emptyGround += 1 + } + } + } + fmt.Println(emptyGround, "empty spots in smallest bounding box.") + + round := 11 + for { + fmt.Println("Starting round", round) + newLocations, done := runRound(elfLocations, preferredDirections) + if done { + fmt.Println("No one moved after round", round) + break + } + elfLocations = newLocations + preferredDirections = append(preferredDirections[1:], preferredDirections[0]) + round += 1 + } +} diff --git a/solutions/day3/day3.go b/solutions/day3/day3.go new file mode 100644 index 0000000..d5dcc32 --- /dev/null +++ b/solutions/day3/day3.go @@ -0,0 +1,92 @@ +package day3 + +import ( + "bufio" + "fmt" + "os" +) + +func in_set(target rune, set []rune) bool { + for _, char := range set { + if char == target { + return true + } + } + return false +} + +func priority(value rune) int { + var base_value int = 0 + + if value >= 'A' && value <= 'Z' { + base_value = int('A') - 27 + } + + if value >= 'a' && value <= 'z' { + base_value = int('a') - 1 + } + + return int(value) - base_value +} + +func part1_addition(runes []rune) int { + var total int = 0 + + midpoint := len(runes) / 2 + left_runes := runes[0:midpoint] + right_runes := runes[midpoint:] + + for pos, char := range left_runes { + if !in_set(char, left_runes[0:pos]) { + if in_set(char, right_runes) { + total += priority(char) + } + } + } + + return total +} + +func score_badge(set1 []rune, set2 []rune, set3 []rune) int { + for pos, char := range set1 { + if !in_set(char, set1[0:pos]) { + if in_set(char, set2) && in_set(char, set3) { + return priority(char) + } + } + } + fmt.Println("PANIC: Couldn't find overlapping badge item") + return 0 +} + +func Run(filename string) { + file, err := os.Open(filename) + + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + var total_overlap int = 0 + var total_badge int = 0 + var grouping [][]rune = [][]rune{} + + for scanner.Scan() { + line := scanner.Text() + runes := []rune(line) + total_overlap += part1_addition(runes) + + grouping = append(grouping, runes) + if len(grouping) == 3 { + total_badge += score_badge(grouping[0], grouping[1], grouping[2]) + grouping = [][]rune{} + } + } + + file.Close() + + fmt.Println("Total initial score is", total_overlap) + fmt.Println("Total badge score is", total_badge) +} diff --git a/solutions/day4/day4.go b/solutions/day4/day4.go new file mode 100644 index 0000000..eee62e3 --- /dev/null +++ b/solutions/day4/day4.go @@ -0,0 +1,114 @@ +package day4 + +import ( + "bufio" + "errors" + "fmt" + "os" + "strconv" + "strings" +) + +type SectionRange struct { + start int + end int +} + +func total_overlap(a SectionRange, b SectionRange) bool { + return ((a.start >= b.start) && (a.end <= b.end)) || + ((b.start >= a.start) && (b.end <= a.end)) +} + +func partial_overlap(a SectionRange, b SectionRange) bool { + return (a.start >= b.start && a.start <= b.end) || + (a.end >= b.end && a.end <= b.end) || + (b.start >= a.start && b.start <= a.end) || + (b.end >= a.start && b.end <= a.end) +} + +func range_from_string(s string) (ret_range SectionRange, err error) { + ret_range = SectionRange{0, 0} + items := strings.Split(s, "-") + + if len(items) != 2 { + err = errors.New("invalid range format") + return + } + + start, start_err := strconv.Atoi(items[0]) + if start_err != nil { + err = start_err + return + } + ret_range.start = start + + end, end_err := strconv.Atoi(items[1]) + if end_err != nil { + err = end_err + return + } + ret_range.end = end + + err = nil + + return +} + +func line_to_pair(s string) (left SectionRange, right SectionRange, err error) { + items := strings.Split(s, ",") + + if len(items) != 2 { + err = errors.New("invalid range format") + return + } + + left, left_err := range_from_string(items[0]) + if left_err != nil { + err = left_err + return + } + + right, right_err := range_from_string(items[1]) + if right_err != nil { + err = right_err + return + } + + return +} + +func Run(filename string) { + file, err := os.Open(filename) + + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + var total_overlapping int = 0 + var partial_overlapping int = 0 + + for scanner.Scan() { + line := scanner.Text() + left, right, err := line_to_pair(line) + + if err != nil { + fmt.Println("ERROR: failed to parse line:", err) + } else { + if total_overlap(left, right) { + total_overlapping += 1 + } + + if partial_overlap(left, right) { + partial_overlapping += 1 + } + } + } + + file.Close() + + fmt.Println("# of overlapping pairs", total_overlapping) + fmt.Println("# of partially overlapping pairs", partial_overlapping) +} diff --git a/solutions/day5/day5.go b/solutions/day5/day5.go new file mode 100644 index 0000000..accb527 --- /dev/null +++ b/solutions/day5/day5.go @@ -0,0 +1,282 @@ +package day5 + +import ( + "bufio" + "errors" + "fmt" + "os" + "strconv" + "strings" + "unicode" +) + +type Stack struct { + identity rune + then *Stack +} + +func newStack() *Stack { + return nil +} + +func push(box rune, stack *Stack) *Stack { + var retval *Stack = new(Stack) + retval.identity = box + retval.then = stack + return retval +} + +func pushToEnd(box rune, stack *Stack) *Stack { + if stack == nil { + retval := new(Stack) + retval.identity = box + retval.then = nil + return retval + } else { + stack.then = pushToEnd(box, stack.then) + return stack + } +} + +func pushSet(front *Stack, stack *Stack) *Stack { + var prev *Stack = nil + current := front + + for current != nil { + prev = current + current = current.then + } + + if prev == nil { + return stack + } else { + prev.then = stack + } + + return front +} + +func pop(stack *Stack) (newStack *Stack, value rune, err error) { + if stack == nil { + newStack = nil + value = 'X' + err = errors.New("attempt to pop from empty stack") + return + } + + value = stack.identity + newStack = stack.then + return +} + +func popSet(amt int, stack *Stack) (newStack *Stack, set *Stack, err error) { + var prev *Stack = nil + var current *Stack = stack + + for i := 0; i < amt; i++ { + if current == nil { + err = errors.New("tried to take more items than existed in stack") + return + } + + prev = current + current = current.then + } + + if prev != nil { + set = stack + prev.then = nil + } else { + set = nil + } + newStack = current + + return +} + +func stackLength(stack *Stack) int { + if stack == nil { + return 0 + } else { + return 1 + stackLength(stack.then) + } +} + +type Workspace []*Stack + +func addLine(line string, input *Workspace) (err error) { + currentColumn := 0 + + fmt.Println("Workspace line's length is", len(line)) + for len(line) >= 3 { + fmt.Println(" line length now", len(line)) + // make sure we've got enough space in the workspace + for currentColumn+1 >= len(*input) { + *input = append(*input, newStack()) + } + + // see if there's actually something there + if line[0] == '[' && unicode.IsLetter(rune(line[1])) { + fmt.Println("Adding", rune(line[1]), "to column", currentColumn) + (*input)[currentColumn] = pushToEnd(rune(line[1]), (*input)[currentColumn]) + } else if line[0] != ' ' { + err = errors.New("doesn't start with square or blank") + return + } + + currentColumn += 1 + if len(line) == 3 { + return + } + + if len(line) > 3 { + line = line[4:] + } + } + + return +} + +func runMove(problem int, move OperatorMove, workspace *Workspace) error { + switch problem { + case 1: + for i := 0; i < move.count; i++ { + newFrom, value, err := pop((*workspace)[move.from]) + if err != nil { + return err + } + (*workspace)[move.from] = newFrom + (*workspace)[move.to] = push(value, (*workspace)[move.to]) + } + return nil + + case 2: + newFrom, poppedSet, err := popSet(move.count, (*workspace)[move.from]) + if err != nil { + return err + } + (*workspace)[move.from] = newFrom + (*workspace)[move.to] = pushSet(poppedSet, (*workspace)[move.to]) + return nil + + default: + return errors.New("weird problem number found in runMove") + } +} + +func printWorkspace(input Workspace) { + maxLength := 0 + + for _, element := range input { + current := stackLength(element) + if current > maxLength { + maxLength = current + } + } + + for _, element := range input { + current := stackLength(element) + blanks := maxLength - current + outputString := "" + + for i := 0; i < blanks; i++ { + outputString = outputString + " " + } + + node := element + for node != nil { + outputString = outputString + fmt.Sprintf("[%c] ", node.identity) + node = node.then + } + + fmt.Println(outputString) + } + +} + +type OperatorMove struct { + count int + from int + to int +} + +func parseMove(line string) (move OperatorMove, err error) { + words := strings.Split(line, " ") + + if len(words) != 6 { + err = errors.New("wrong number of words in move line") + return + } + + if words[0] != "move" || words[2] != "from" || words[4] != "to" { + err = fmt.Errorf("illegal words in move line: %s/%s/%s", words[0], words[2], words[4]) + return + } + + count, cerr := strconv.Atoi(words[1]) + from, ferr := strconv.Atoi(words[3]) + to, terr := strconv.Atoi(words[5]) + + if cerr != nil || ferr != nil || terr != nil { + err = fmt.Errorf("illegal number found: %s/%s/%s", words[1], words[3], words[5]) + } + + move = OperatorMove{count, from - 1, to - 1} + + return +} + +func Run(filename string, problemStr string) { + problem, err := strconv.Atoi(problemStr) + if err != nil || (problem < 1 || problem > 2) { + fmt.Println("Didn't understand problem number", os.Args[2], "should be 1 or 2") + } + + file, err := os.Open(filename) + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + workspace := new(Workspace) + moves := []OperatorMove{} + + for scanner.Scan() { + line := scanner.Text() + + if strings.Contains(line, "[") { + fmt.Println("Adding workspace line") + addLine(line, workspace) + } else { + move, err := parseMove(line) + + if err == nil { + fmt.Println("Adding move", move) + moves = append(moves, move) + } else { + fmt.Println("Skipping dead line") + } + } + } + + file.Close() + + printWorkspace(*workspace) + for count, move := range moves { + fmt.Println("-----", count+1, "-----") + runMove(problem, move, workspace) + printWorkspace(*workspace) + } + + resultString := "" + for _, stack := range *workspace { + if stack == nil { + resultString += "*" + } else { + resultString += fmt.Sprintf("%c", rune((*stack).identity)) + } + } + fmt.Println("Final string is", resultString) +} diff --git a/solutions/day6/day6.go b/solutions/day6/day6.go new file mode 100644 index 0000000..6422e20 --- /dev/null +++ b/solutions/day6/day6.go @@ -0,0 +1,58 @@ +package day6 + +import ( + "bufio" + "fmt" + "os" + "strconv" +) + +func allDifferent(a string) bool { + length := len(a) + + for i := 0; i < length; i++ { + for j := i + 1; j < length; j++ { + if a[i] == a[j] { + return false + } + } + } + + return true +} + +func Run(filename string, problemStr string) { + problem, err := strconv.Atoi(problemStr) + if err != nil || !(problem == 4 || problem == 14) { + fmt.Println("Didn't understand problem number", os.Args[2], "should be 4 or 14") + } + + file, err := os.Open(filename) + + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + + for scanner.Scan() { + line := scanner.Text() + + if len(line) > 0 { + var index int + offset := problem - 1 + + for index = offset; index < len(line); index++ { + if allDifferent(line[index-offset : index+1]) { + break + } + } + + fmt.Println("First marker after character", index+1) + } + } + + file.Close() +} diff --git a/solutions/day7/day7.go b/solutions/day7/day7.go new file mode 100644 index 0000000..511519f --- /dev/null +++ b/solutions/day7/day7.go @@ -0,0 +1,159 @@ +package day7 + +import ( + "bufio" + "errors" + "fmt" + "os" + "strconv" + "strings" +) + +type FileSystem struct { + name string + parent *FileSystem + subdirectories []*FileSystem + files []FileInfo +} + +func newFileSystem(name string, parent *FileSystem) *FileSystem { + return &FileSystem{name, parent, []*FileSystem{}, []FileInfo{}} +} + +func printFileTree(tree *FileSystem, prefix string) { + fmt.Println(prefix, "-", tree.name, fmt.Sprintf("(dir size=%d)", totalSize(tree))) + + for _, file := range tree.files { + fmt.Println(prefix, " ", "-", file.name, fmt.Sprintf("(file, size=%d)", file.size)) + } + + for _, dir := range tree.subdirectories { + printFileTree(dir, prefix+" ") + } +} + +func totalSize(tree *FileSystem) int { + total := 0 + + for _, file := range tree.files { + total += file.size + } + + for _, dir := range tree.subdirectories { + total += totalSize(dir) + } + + return total +} + +func computePart1(tree *FileSystem) int { + result := 0 + + for _, dir := range tree.subdirectories { + result += computePart1(dir) + } + + currentSize := totalSize(tree) + if currentSize <= 100000 { + result += currentSize + } + + return result +} + +func computePart2(tree *FileSystem, size int) int { + result := 70000000 + + for _, dir := range tree.subdirectories { + subResult := computePart2(dir, size) + if subResult < result { + result = subResult + } + } + + currentSize := totalSize(tree) + if currentSize > size && currentSize < result { + result = currentSize + } + + return result +} + +type FileInfo struct { + name string + size int +} + +func parseFileInfo(line string) (result FileInfo, err error) { + splits := strings.Split(line, " ") + if len(splits) != 2 { + err = errors.New("too many values from file info split") + return + } + + size, err := strconv.Atoi(splits[0]) + if err != nil { + err = errors.New(fmt.Sprintf("could not parse file size: '%s'", splits[0])) + return + } + + result = FileInfo{splits[1], size} + return +} + +func Run(filename string) { + file, err := os.Open(filename) + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + + root := newFileSystem("/", nil) + current := root + + for scanner.Scan() { + line := scanner.Text() + + fmt.Println("line", line) + if strings.HasPrefix(line, "$ cd /") { + current = root + } else if strings.HasPrefix(line, "$ cd ..") { + current = current.parent + } else if strings.HasPrefix(line, "$ cd ") { + for _, subdir := range current.subdirectories { + if subdir.name == line[5:] { + current = subdir + continue + } + } + } else if strings.HasPrefix(line, "$ ls") { + // don't do anything + } else if strings.HasPrefix(line, "dir ") { + newTree := newFileSystem(line[4:], current) + current.subdirectories = append(current.subdirectories, newTree) + } else { + fileInfo, err := parseFileInfo(line) + if err != nil { + fmt.Println("PANIC:", err) + return + } + + current.files = append((*current).files, fileInfo) + } + } + + file.Close() + + printFileTree(root, "") + fmt.Println("example first part", computePart1(root)) + + unusedSpace := 70000000 - totalSize(root) + fmt.Println("unused space is currently", unusedSpace) + needToGet := 30000000 - unusedSpace + fmt.Println("need to find a directory at least", needToGet, "bytes big") + fmt.Println("that directory has size", computePart2(root, needToGet)) + +} diff --git a/solutions/day8/day8.go b/solutions/day8/day8.go new file mode 100644 index 0000000..092d66f --- /dev/null +++ b/solutions/day8/day8.go @@ -0,0 +1,142 @@ +package day8 + +import ( + "bufio" + "fmt" + "os" + "strconv" +) + +func isVisible(treeMap [][]int, x int, y int) bool { + treeHeight := treeMap[y][x] + + left_test := true + for trial := 0; trial < x; trial++ { + left_test = left_test && treeMap[y][trial] < treeHeight + } + + right_test := true + for trial := x + 1; trial < len(treeMap[y]); trial++ { + right_test = right_test && treeMap[y][trial] < treeHeight + } + + up_test := true + for trial := 0; trial < y; trial++ { + up_test = up_test && treeMap[trial][x] < treeHeight + } + + down_test := true + for trial := y + 1; trial < len(treeMap); trial++ { + down_test = down_test && treeMap[trial][x] < treeHeight + } + fmt.Println("Test for x", x, "y", y, "which has height", treeHeight, "tests are", left_test, right_test, up_test, down_test) + + return (left_test || right_test || up_test || down_test) +} + +func score(treeMap [][]int, x int, y int) int { + treeHeight := treeMap[y][x] + + if x == 0 || y == 0 { + return 0 + } + + final := 1 + + score := 0 + for trial := x - 1; trial >= 0; trial-- { + if treeMap[y][trial] >= treeHeight { + score += 1 + break + } + score += 1 + } + final *= score + + score = 0 + for trial := x + 1; trial < len(treeMap[y]); trial++ { + if treeMap[y][trial] >= treeHeight { + score += 1 + break + } + score += 1 + } + final *= score + + score = 0 + for trial := y - 1; trial >= 0; trial-- { + if treeMap[trial][x] >= treeHeight { + score += 1 + break + } + score += 1 + } + final *= score + + score = 0 + for trial := y + 1; trial < len(treeMap); trial++ { + if treeMap[trial][x] >= treeHeight { + score += 1 + break + } + score += 1 + } + final *= score + + return final +} + +func Run(filename string) { + file, err := os.Open(filename) + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + + treeMap := [][]int{} + + for scanner.Scan() { + line := scanner.Text() + row := []int{} + for _, c := range line { + value, err := strconv.Atoi(string(c)) + if err != nil { + fmt.Println("PANIC: bad character") + return + } + row = append(row, value) + } + treeMap = append(treeMap, row) + } + + file.Close() + + width := len(treeMap[0]) + height := len(treeMap) + + visibleTrees := 2*width + 2*height - 4 + bestScore := 1 + + for y := 1; y < (height - 1); y++ { + for x := 1; x < (width - 1); x++ { + if isVisible(treeMap, x, y) { + visibleTrees += 1 + //fmt.Printf("*") + } else { + //fmt.Printf("%d", treeMap[y][x]) + } + + current := score(treeMap, x, y) + if current > bestScore { + bestScore = current + } + } + //fmt.Println() + } + + fmt.Println("There are", visibleTrees, "visible trees") + fmt.Println("Best score is", bestScore) +} diff --git a/solutions/day9/day9.go b/solutions/day9/day9.go new file mode 100644 index 0000000..825c5df --- /dev/null +++ b/solutions/day9/day9.go @@ -0,0 +1,153 @@ +package day9 + +import ( + "bufio" + "fmt" + "os" + "strconv" +) + +type Point struct { + x int + y int +} + +func makeSnake(length int) []*Point { + snake := []*Point{} + + for i := 0; i < length; i++ { + snake = append(snake, &Point{0, 0}) + } + + return snake +} + +func move(direction rune, point *Point) { + switch direction { + case 'U': + point.y -= 1 + case 'R': + point.x += 1 + case 'D': + point.y += 1 + case 'L': + point.x -= 1 + default: + fmt.Println("PANIC! Bad direction", string(direction)) + } +} + +func abs(x int) int { + if x >= 0 { + return x + } else { + return -x + } +} + +func areTouching(head *Point, tail *Point) bool { + return abs(head.x-tail.x) <= 1 && abs(head.y-tail.y) <= 1 +} + +func updateTail(head *Point, tail *Point) { + if areTouching(head, tail) { + return + } + + if head.x == tail.x { + if head.y <= tail.y-2 { + tail.y -= 1 + return + } + + if head.y >= tail.y+2 { + tail.y += 1 + return + } + } + + if head.y == tail.y { + if head.x <= tail.x-2 { + tail.x -= 1 + return + } + if head.x >= tail.x+2 { + tail.x += 1 + return + } + } + + proposedTails := []Point{ + {tail.x - 1, tail.y - 1}, + {tail.x - 1, tail.y + 1}, + {tail.x + 1, tail.y - 1}, + {tail.x + 1, tail.y + 1}} + + for _, proposed := range proposedTails { + if areTouching(head, &proposed) { + tail.x = proposed.x + tail.y = proposed.y + return + } + } + + fmt.Println("PANIC, couldn't figure out next step for", *head, "and", *tail) +} + +func contains(array *[]Point, point Point) bool { + for _, val := range *array { + if val == point { + return true + } + } + return false +} + +func runMove(direction rune, amount int, snake []*Point, visitedPoints *[]Point) { + for i := 0; i < amount; i++ { + move(direction, snake[0]) + for t := 1; t < len(snake); t++ { + updateTail(snake[t-1], snake[t]) + } + lastPoint := snake[len(snake)-1] + if !contains(visitedPoints, *lastPoint) { + *visitedPoints = append(*visitedPoints, *lastPoint) + } + } +} + +func Run(filename string, lengthStr string) { + file, err := os.Open(filename) + if err != nil { + fmt.Println("Error opening file:", err) + return + } + + snakeLength, err := strconv.Atoi(lengthStr) + if err != nil { + fmt.Println("Error parsing snake length:", err) + return + } + + scanner := bufio.NewScanner(file) + scanner.Split(bufio.ScanLines) + + snake := makeSnake(snakeLength) + visitedPoints := []Point{} + + for scanner.Scan() { + line := scanner.Text() + + amount, err := strconv.Atoi(line[2:]) + if err != nil { + fmt.Println("Could not parse argument", line) + return + } + + runMove(rune(line[0]), amount, snake, &visitedPoints) + } + + fmt.Println("The tail visited", len(visitedPoints), "points") + + file.Close() +}