From eda7d95d331df07e3fa5beda257f7f433061cb6d Mon Sep 17 00:00:00 2001 From: Tom-the-Bomb Date: Tue, 26 Dec 2023 23:46:58 -0500 Subject: [PATCH] day 22 --- aoc-py/solutions/__init__.py | 8 +- aoc-py/solutions/day21.py | 4 +- aoc-py/solutions/day22.py | 200 +++++ aoc-py/solutions/day25.py | 44 ++ inputs/day22.txt | 1388 ++++++++++++++++++++++++++++++++++ inputs/day25.txt | 1221 ++++++++++++++++++++++++++++++ requirements.txt | 1 + src/bin/day21.rs | 0 8 files changed, 2864 insertions(+), 2 deletions(-) create mode 100644 aoc-py/solutions/day22.py create mode 100644 aoc-py/solutions/day25.py create mode 100644 inputs/day22.txt create mode 100644 inputs/day25.txt create mode 100644 requirements.txt delete mode 100644 src/bin/day21.rs diff --git a/aoc-py/solutions/__init__.py b/aoc-py/solutions/__init__.py index eb3c0d5..a217efc 100644 --- a/aoc-py/solutions/__init__.py +++ b/aoc-py/solutions/__init__.py @@ -19,6 +19,10 @@ 'Day17', 'Day18', 'Day19', + 'Day20', + 'Day21', + 'Day22', + 'Day25', ) from .day1 import Day1 @@ -42,6 +46,8 @@ from .day19 import Day19 from .day20 import Day20 from .day21 import Day21 +from .day22 import Day22 +from .day25 import Day25 from ..solution import Solution @@ -50,7 +56,7 @@ Day6, Day7, Day8, Day9, Day10, Day11, Day12, Day13, Day14, Day15, Day16, Day17, Day18, Day19, Day20, - Day21, + Day21, Day22, Day25, ) del Solution \ No newline at end of file diff --git a/aoc-py/solutions/day21.py b/aoc-py/solutions/day21.py index 4007098..24c93b4 100644 --- a/aoc-py/solutions/day21.py +++ b/aoc-py/solutions/day21.py @@ -57,9 +57,11 @@ def traverse( # i.e. when we are in th initial, given grid: # `n_row_wraps` and `n_col_wraps` are both `0` # - # quotient of dividing the current `index` by the number of rows/cols + # quotient of dividing the current `index` by the # of rows/cols # needs to be stored in `traversed` to allow the set to distinguish # between coordinates that are the same, but are on different cycles/wraps of the grid + # + # the modulo of the index and the # of rows/cols will give us the index we can use on the gri new_row_wraps, new_row = divmod(new_row, n_rows) new_col_wraps, new_col = divmod(new_col, n_cols) new_row_wraps += n_row_wraps diff --git a/aoc-py/solutions/day22.py b/aoc-py/solutions/day22.py new file mode 100644 index 0000000..3e47719 --- /dev/null +++ b/aoc-py/solutions/day22.py @@ -0,0 +1,200 @@ +from __future__ import annotations +""" +Day 22: Sand Slabs + +https://adventofcode.com/2023/day/22 +""" +__all__ = ('Day22',) + +from typing import ClassVar +from collections import defaultdict + +from ..solution import Solution + +class Point: + """Represents a coordinate/point in 3D space (x, y, z) + + A brick contains a pair of these, representing 2 ends of the brick + """ + __slots__ = ('x', 'y', 'z') + + def __init__(self, x: int, y: int, z: int) -> None: + self.x = x + self.y = y + self.z = z + + @classmethod + def from_str(cls, raw: str) -> Point: + """Parses from given input""" + x, y, z = raw.split(',') + return cls(int(x), int(y), int(z)) + + def __repr__(self) -> str: + return f'<{self.__class__.__name__} ({self.x}, {self.y}, {self.z})>' + + def __eq__(self, other: Point) -> bool: + return self.x == other.x and self.y == other.y and self.z == other.z + + def __ne__(self, other: Point) -> bool: + return not self == other + +class Brick: + """Represents a brick + + Stores information about its provided 2 coordinate points + """ + __slots__ = ('bottom', 'top') + + def __init__(self, bottom: Point, top: Point) -> None: + self.bottom = bottom + self.top = top + + @classmethod + def from_str(cls, raw: str) -> Brick: + """Parses from given input""" + bottom, top = raw.split('~') + return cls( + Point.from_str(bottom), + Point.from_str(top), + ) + + @property + def height(self) -> int: + """Returns the height / thickness of the brick itself, difference in z-values""" + return self.top.z - self.bottom.z + + def __repr__(self) -> str: + return f'<{self.__class__.__name__} bottom={self.bottom!r} top={self.top!r}>' + + def overlaps_xy(self, other: Brick) -> bool: + """Checks whether or not the bricks overlap when looking from a birds-eye view + + gives us insight into whether or not there even is potential for them to support each other + by telling us whether or not they are above each other + """ + return ( + max(self.bottom.x, other.bottom.x) <= min(self.top.x, other.top.x) + and max(self.bottom.y, other.bottom.y) <= min(self.top.y, other.top.y) + ) + + def __eq__(self, other: Brick) -> bool: + return self.bottom == other.bottom and self.top == other.top + + def __ne__(self, other: Brick) -> bool: + return not self == other + + def __ge__(self, other: Brick) -> bool: + return self.bottom.z >= other.bottom.z + + def __gt__(self, other: Brick) -> bool: + return self.bottom.z > other.bottom.z + + def __le__(self, other: Brick) -> bool: + return self.bottom.z <= other.bottom.z + + def __lt__(self, other: Brick) -> bool: + return self.bottom.z < other.bottom.z + +class Day22(Solution): + NAME: ClassVar[str] = 'Sand Slabs' + + def _get_support_mappings(self, inp: str) -> tuple[list[Brick], dict[int, set[int]], dict[int, set[int]]]: + bricks = [Brick.from_str(line) for line in inp.splitlines()] + # sort from lowest-z to highest-z (height) + bricks.sort() + + # drop bricks + for i, brick in enumerate(bricks): + z = 1 + # all bricks under `brick` + for lower_brick in bricks[:i]: + # `brick` overlaps with `lower_brick` on the x-y plane, + # since `lower_brick` is under `brick`, and they overlap + # (overlap = `lower_brick` can support `brick`) + if brick.overlaps_xy(lower_brick): + # this indicates that `brick` cannot fall any lower than `lower_brick`'s top height + 1 + # + # repeat this process for all bricks under `brick` and + # get the maximum height it can fall down to of all the bricks + # giving us where `brick` will fall down to ultimately + z = max(z, lower_brick.top.z + 1) + # `z` represents what the brick's BOTTOM will drop down to + # + # set z-level of the top of the brick to `z` + the height offset + brick.top.z = brick.height + z + # drop the z-level of the brick's bottom to `z` + brick.bottom.z = z + bricks.sort() + + # 2 way mapping: + # maps: brick -> what other bricks that brick supports + supports = defaultdict(set) + # maps: brick -> what supports that brick + supported_by = defaultdict(set) + + for a, brick in enumerate(bricks): + # all bricks beneath brick `a` + for b, lower_brick in enumerate(bricks[:a]): + if ( + # bricks overlap on the x-y plane: potential for support + lower_brick.overlaps_xy(brick) + # the brick's bottom's z-value is exactly equal to the z-value + 1 of the top of the brick below it + # indicating that `lower_brick` is touching/supporting `brick` + # `b` brick is supporting `a` + and brick.bottom.z == lower_brick.top.z + 1 + ): + supports[b].add(a) + supported_by[a].add(b) + return bricks, supports, supported_by + + def part_one(self, inp: str) -> int: + bricks, supports, supported_by = self._get_support_mappings(inp) + + return sum( + 1 + # for all bricks (`b`) check: + for b in range(len(bricks)) + # there are more than 1 brick supporting `a` + # indicating there is another brick OTHER than `b` to support `a` + # therefore, we can safely disintegrate `b` as `a` will still be supported + # + # for all bricks (`a`) that `b` supports + if all(len(supported_by[a]) > 1 for a in supports[b]) + ) + + def part_two(self, inp: str) -> int: + bricks, supports, supported_by = self._get_support_mappings(inp) + total = 0 + + for b in range(len(bricks)): + # all bricks `a` that are SOLELY supported by `b` + # which will also be all the bricks that will fall once `b` disintegrates + # + # we go through all bricks `b` supports and include it (`a`) + # if `a` is supported by only 1 brick, which has to be `b` + to_check = [ + a for a in supports[b] if len(supported_by[a]) == 1 + ] + # bricks that are going to fall + falling = set(to_check + [b]) + + while to_check: + to_fall = to_check.pop(0) + + # go through all bricks that are supported by `to_fall` + # that is also NOT already falling + for a in supports[to_fall].difference(falling): + # if everything that supports `a` is ALL falling + if supported_by[a].issubset(falling): + to_check.append(a) + falling.add(a) + # we need to substract `1` as we included `b` the original disintegrated brick + total += len(falling) - 1 + return total + + def run(self, inp: str) -> None: + print('Part 1:', p1 := self.part_one(inp)) + print('Part 2:', p2 := self.part_two(inp)) + + assert p1 == 459 + assert p2 == 75784 \ No newline at end of file diff --git a/aoc-py/solutions/day25.py b/aoc-py/solutions/day25.py new file mode 100644 index 0000000..3bbffda --- /dev/null +++ b/aoc-py/solutions/day25.py @@ -0,0 +1,44 @@ +""" +Day 25: Snowverload + +https://adventofcode.com/2023/day/25 +""" +__all__ = ('Day25',) + +from typing import ClassVar + +import networkx as nx + +from ..solution import Solution + +class Day25(Solution): + NAME: ClassVar[str] = 'Snowverload' + + def part_one(self, inp: str) -> int: + graph = nx.Graph() + + for line in inp.splitlines(): + left, right = line.split(':') + for node in right.strip().split(): + graph.add_edge(left, node) + graph.add_edge(node, left) + + graph.remove_edges_from( + nx.minimum_edge_cut(graph) + ) + + a, b = nx.connected_components(graph) + return len(a) * len(b) + + def part_two(self, _: str) -> None: + """No part 2 for day 25! + + Merry Christmas! + """ + + def run(self, inp: str) -> None: + print('Part 1:', p1 := self.part_one(inp)) + print('Part 2:', p2 := self.part_two(inp)) + + assert p1 == 554064 + assert p2 is None \ No newline at end of file diff --git a/inputs/day22.txt b/inputs/day22.txt new file mode 100644 index 0000000..0b0d56e --- /dev/null +++ b/inputs/day22.txt @@ -0,0 +1,1388 @@ +1,5,224~1,7,224 +7,8,210~7,8,212 +7,6,89~9,6,89 +0,9,2~0,9,3 +7,8,121~7,8,123 +4,3,51~6,3,51 +1,4,72~1,5,72 +0,8,183~3,8,183 +4,2,182~5,2,182 +8,3,92~8,6,92 +8,7,69~9,7,69 +5,5,256~5,7,256 +1,4,246~1,4,246 +1,7,256~1,9,256 +6,1,246~8,1,246 +3,6,147~3,6,149 +5,0,286~5,2,286 +8,9,239~9,9,239 +7,3,137~7,5,137 +2,1,145~2,1,147 +0,5,304~0,5,307 +1,1,166~2,1,166 +3,4,159~4,4,159 +7,9,178~8,9,178 +0,3,173~2,3,173 +5,0,140~5,2,140 +9,8,200~9,8,203 +1,0,193~3,0,193 +0,8,222~0,9,222 +1,3,278~1,3,280 +9,0,217~9,1,217 +5,2,158~5,5,158 +2,0,84~3,0,84 +0,7,40~0,8,40 +4,6,33~4,7,33 +3,5,110~3,7,110 +4,0,271~4,2,271 +4,2,119~4,4,119 +1,4,305~1,6,305 +8,3,25~8,5,25 +5,6,14~7,6,14 +0,7,158~1,7,158 +3,3,82~3,4,82 +6,5,20~8,5,20 +2,3,285~4,3,285 +6,2,221~6,5,221 +9,0,247~9,0,249 +2,2,27~2,4,27 +0,7,178~3,7,178 +4,3,227~4,5,227 +5,3,22~5,5,22 +4,9,257~6,9,257 +9,6,167~9,6,169 +5,5,238~5,7,238 +1,1,240~3,1,240 +1,4,160~4,4,160 +8,0,78~8,2,78 +4,2,241~6,2,241 +6,7,186~7,7,186 +1,3,276~1,5,276 +7,2,211~7,5,211 +1,1,277~1,1,277 +1,7,287~2,7,287 +6,7,197~6,8,197 +9,3,35~9,3,36 +7,1,174~9,1,174 +6,1,152~7,1,152 +9,1,150~9,3,150 +2,3,274~2,6,274 +3,6,234~3,8,234 +1,1,43~1,1,44 +2,0,323~2,1,323 +5,0,213~5,1,213 +1,2,101~4,2,101 +5,0,46~7,0,46 +0,7,61~0,9,61 +4,3,287~4,5,287 +8,1,177~8,2,177 +4,9,85~7,9,85 +1,5,318~4,5,318 +0,6,94~0,8,94 +5,3,144~7,3,144 +0,1,223~0,4,223 +2,6,306~4,6,306 +1,9,68~2,9,68 +4,5,296~4,8,296 +7,1,147~9,1,147 +8,3,28~9,3,28 +8,7,173~8,9,173 +5,4,53~7,4,53 +1,5,165~5,5,165 +4,1,23~6,1,23 +4,6,290~4,9,290 +7,8,184~8,8,184 +4,9,236~8,9,236 +4,4,273~4,4,273 +8,0,33~8,0,35 +2,6,108~3,6,108 +2,5,147~2,5,149 +4,9,260~5,9,260 +4,1,269~6,1,269 +0,4,174~2,4,174 +6,1,94~6,4,94 +3,6,308~4,6,308 +3,6,301~3,8,301 +6,5,69~6,7,69 +2,8,73~2,8,73 +2,6,199~3,6,199 +2,0,49~2,1,49 +6,2,138~8,2,138 +9,6,7~9,8,7 +6,5,120~9,5,120 +9,3,273~9,6,273 +0,5,69~2,5,69 +2,7,260~2,9,260 +1,9,3~1,9,5 +3,4,184~3,6,184 +8,0,219~8,2,219 +4,6,266~4,6,269 +7,6,237~9,6,237 +1,4,201~2,4,201 +2,3,192~5,3,192 +3,1,200~3,3,200 +3,0,165~3,2,165 +3,1,244~6,1,244 +4,0,82~6,0,82 +5,1,8~5,1,9 +9,3,154~9,6,154 +4,7,174~4,7,174 +0,0,168~2,0,168 +1,3,291~4,3,291 +4,1,225~5,1,225 +3,3,239~3,5,239 +0,6,32~0,8,32 +4,4,177~4,6,177 +6,7,85~8,7,85 +4,4,163~4,5,163 +8,2,80~8,2,82 +2,5,15~4,5,15 +4,5,208~4,6,208 +4,0,142~5,0,142 +6,5,16~9,5,16 +0,7,188~3,7,188 +1,7,271~4,7,271 +7,7,72~8,7,72 +5,2,284~5,5,284 +2,1,286~2,4,286 +3,5,182~4,5,182 +2,0,223~5,0,223 +6,9,82~8,9,82 +4,9,168~7,9,168 +7,7,148~7,9,148 +7,9,257~9,9,257 +5,7,114~7,7,114 +7,3,240~7,6,240 +4,8,196~7,8,196 +8,7,162~8,9,162 +5,3,272~7,3,272 +8,4,210~8,6,210 +6,5,65~6,5,65 +4,1,39~4,4,39 +0,2,116~0,5,116 +8,1,317~8,4,317 +4,5,236~4,7,236 +7,9,39~9,9,39 +2,3,212~3,3,212 +4,2,266~6,2,266 +1,2,50~1,4,50 +2,3,113~2,5,113 +6,2,276~6,5,276 +2,6,225~5,6,225 +9,3,278~9,4,278 +2,0,220~2,3,220 +5,2,267~5,5,267 +3,1,68~5,1,68 +6,3,155~6,3,155 +7,0,274~7,3,274 +0,8,219~0,8,221 +5,3,136~5,6,136 +0,7,311~2,7,311 +0,9,17~3,9,17 +0,1,257~2,1,257 +4,5,195~4,8,195 +5,6,295~6,6,295 +5,0,17~8,0,17 +0,6,254~0,6,256 +4,4,51~7,4,51 +4,2,218~6,2,218 +5,2,25~5,5,25 +1,7,102~1,9,102 +9,3,202~9,4,202 +8,4,79~8,5,79 +0,6,211~0,8,211 +6,8,154~6,9,154 +1,3,186~1,3,189 +0,5,63~3,5,63 +7,1,50~7,3,50 +1,3,311~2,3,311 +0,4,78~2,4,78 +1,1,275~1,2,275 +4,2,142~4,2,145 +6,4,234~6,6,234 +3,8,21~5,8,21 +4,9,178~6,9,178 +4,5,233~7,5,233 +3,5,80~3,7,80 +6,6,73~8,6,73 +5,4,141~5,6,141 +3,4,24~3,7,24 +6,8,324~6,8,325 +3,4,216~3,6,216 +9,6,160~9,8,160 +6,2,224~6,2,224 +3,1,81~3,3,81 +6,4,28~8,4,28 +1,9,258~1,9,261 +1,1,66~1,1,68 +3,2,130~5,2,130 +7,3,56~7,4,56 +6,6,67~6,9,67 +2,5,79~2,6,79 +4,5,283~6,5,283 +2,7,282~5,7,282 +1,7,44~1,9,44 +3,1,63~3,4,63 +2,1,120~2,4,120 +2,5,244~4,5,244 +5,5,183~7,5,183 +2,3,205~6,3,205 +0,6,193~0,6,193 +5,1,175~5,1,177 +7,9,2~8,9,2 +0,1,72~0,3,72 +6,2,182~8,2,182 +9,9,82~9,9,85 +7,6,6~9,6,6 +1,6,260~2,6,260 +6,3,71~9,3,71 +6,2,98~7,2,98 +6,0,107~6,0,108 +5,1,215~5,2,215 +8,1,109~8,1,111 +2,6,40~2,8,40 +4,8,169~7,8,169 +6,2,25~8,2,25 +7,5,214~7,8,214 +5,5,181~5,6,181 +2,4,262~4,4,262 +1,2,142~2,2,142 +5,2,172~8,2,172 +6,0,248~7,0,248 +3,6,71~3,7,71 +9,0,171~9,0,172 +7,2,195~7,4,195 +1,9,232~3,9,232 +8,1,44~8,4,44 +0,5,301~3,5,301 +8,2,3~8,5,3 +6,3,223~6,3,224 +3,5,243~4,5,243 +2,3,160~3,3,160 +7,4,191~8,4,191 +5,6,58~5,7,58 +0,6,268~0,8,268 +5,7,212~5,9,212 +7,8,161~9,8,161 +0,9,31~1,9,31 +8,3,96~8,3,98 +1,9,287~4,9,287 +5,7,257~5,7,259 +5,3,119~5,5,119 +2,2,141~5,2,141 +3,6,128~3,9,128 +2,9,109~4,9,109 +7,8,157~9,8,157 +5,6,227~8,6,227 +3,4,189~6,4,189 +9,2,206~9,2,207 +4,8,122~5,8,122 +1,0,7~1,0,9 +5,2,217~5,5,217 +7,0,246~9,0,246 +0,5,70~0,6,70 +3,6,51~3,8,51 +6,3,286~6,5,286 +8,4,34~8,6,34 +2,5,181~4,5,181 +0,2,68~0,3,68 +1,7,53~2,7,53 +6,2,197~9,2,197 +3,6,3~3,6,5 +1,7,14~1,9,14 +8,2,198~9,2,198 +4,0,88~4,0,90 +6,8,152~7,8,152 +4,1,223~5,1,223 +2,3,84~3,3,84 +2,5,72~2,8,72 +6,3,168~6,4,168 +7,7,163~7,7,166 +1,4,186~1,4,189 +5,5,260~7,5,260 +3,8,131~4,8,131 +8,5,111~8,8,111 +4,7,259~4,8,259 +4,3,276~4,5,276 +5,5,139~8,5,139 +5,8,168~8,8,168 +0,9,290~3,9,290 +1,8,91~4,8,91 +8,1,144~8,4,144 +9,4,240~9,6,240 +3,5,58~3,7,58 +7,6,31~7,8,31 +2,1,163~4,1,163 +0,4,82~2,4,82 +3,0,271~3,2,271 +1,8,177~2,8,177 +2,8,181~4,8,181 +3,7,231~3,9,231 +6,1,267~6,3,267 +1,1,139~4,1,139 +0,7,118~0,8,118 +3,2,2~3,3,2 +4,0,77~4,2,77 +6,8,83~8,8,83 +0,8,85~2,8,85 +2,8,9~4,8,9 +1,6,227~4,6,227 +1,1,84~4,1,84 +6,5,26~9,5,26 +3,1,32~5,1,32 +5,8,199~5,8,200 +7,7,184~8,7,184 +8,3,207~8,4,207 +1,0,27~2,0,27 +3,9,69~3,9,72 +5,3,168~5,5,168 +9,8,246~9,9,246 +4,3,33~5,3,33 +3,0,186~3,2,186 +6,1,181~9,1,181 +5,5,102~5,7,102 +2,0,91~2,0,93 +2,5,218~3,5,218 +3,3,202~5,3,202 +2,5,183~2,7,183 +3,2,227~5,2,227 +6,1,139~6,1,141 +3,6,125~4,6,125 +4,2,265~4,4,265 +7,4,263~7,7,263 +5,9,323~8,9,323 +3,1,194~5,1,194 +7,1,178~9,1,178 +2,1,100~3,1,100 +7,6,271~9,6,271 +2,6,197~2,8,197 +1,3,270~1,5,270 +0,0,38~0,2,38 +3,6,121~4,6,121 +4,1,137~7,1,137 +2,0,248~2,1,248 +1,9,47~3,9,47 +4,8,180~7,8,180 +7,0,256~8,0,256 +5,6,99~6,6,99 +0,9,114~2,9,114 +3,5,127~3,7,127 +4,8,20~4,9,20 +5,4,48~5,5,48 +5,1,51~7,1,51 +1,0,18~4,0,18 +1,3,184~1,4,184 +5,4,23~5,4,24 +1,0,277~4,0,277 +8,1,102~8,1,104 +6,1,215~9,1,215 +5,4,130~5,7,130 +9,6,245~9,9,245 +3,7,49~5,7,49 +2,2,70~5,2,70 +7,1,255~9,1,255 +5,1,30~8,1,30 +1,1,38~1,3,38 +0,4,313~2,4,313 +3,6,260~6,6,260 +8,7,185~9,7,185 +1,7,269~3,7,269 +6,6,294~6,9,294 +0,0,84~0,1,84 +0,1,65~3,1,65 +6,0,13~8,0,13 +0,0,52~2,0,52 +7,4,267~9,4,267 +7,2,183~9,2,183 +9,6,205~9,8,205 +4,9,254~8,9,254 +8,3,101~8,3,103 +2,9,158~5,9,158 +6,1,97~6,3,97 +5,8,209~7,8,209 +1,0,247~1,0,248 +2,1,99~4,1,99 +4,4,311~4,7,311 +1,1,36~1,4,36 +4,5,251~4,9,251 +0,6,122~0,8,122 +3,1,14~3,3,14 +0,5,147~0,7,147 +1,0,245~4,0,245 +1,1,142~5,1,142 +5,2,71~5,3,71 +4,3,34~4,5,34 +1,8,205~3,8,205 +1,7,148~3,7,148 +5,2,168~7,2,168 +0,8,81~4,8,81 +5,3,233~7,3,233 +9,0,50~9,0,52 +0,7,208~2,7,208 +9,6,166~9,9,166 +6,4,8~6,8,8 +3,8,15~5,8,15 +6,7,322~6,9,322 +2,4,222~2,6,222 +8,8,210~9,8,210 +9,7,125~9,8,125 +9,0,169~9,2,169 +3,1,173~5,1,173 +6,4,223~9,4,223 +8,1,141~8,3,141 +6,1,36~9,1,36 +3,5,201~4,5,201 +1,0,85~1,0,86 +0,1,278~0,1,280 +3,7,243~3,8,243 +7,4,164~7,6,164 +6,8,126~7,8,126 +2,5,1~2,5,1 +5,7,106~7,7,106 +4,7,142~6,7,142 +1,7,273~1,9,273 +4,5,37~7,5,37 +8,4,275~8,7,275 +7,9,260~9,9,260 +3,1,182~3,3,182 +2,6,168~6,6,168 +2,6,114~2,6,117 +3,1,88~4,1,88 +1,9,195~2,9,195 +9,6,38~9,8,38 +4,5,304~6,5,304 +8,6,114~8,9,114 +2,3,245~2,5,245 +4,9,126~6,9,126 +1,0,78~1,1,78 +7,6,84~9,6,84 +4,3,183~4,5,183 +6,8,114~7,8,114 +6,0,43~8,0,43 +6,8,258~6,9,258 +3,3,237~4,3,237 +7,6,248~7,8,248 +0,2,87~0,3,87 +8,2,42~8,5,42 +6,1,270~8,1,270 +7,1,256~9,1,256 +8,4,201~8,6,201 +4,1,15~6,1,15 +4,2,67~4,2,69 +3,3,138~5,3,138 +7,5,110~7,7,110 +0,6,84~0,8,84 +1,3,120~1,5,120 +6,3,147~6,5,147 +5,4,157~7,4,157 +0,6,37~0,6,37 +8,6,240~8,7,240 +3,2,22~7,2,22 +3,2,92~4,2,92 +7,0,108~7,2,108 +5,1,71~6,1,71 +1,2,73~2,2,73 +8,5,165~8,8,165 +4,5,300~4,5,301 +0,0,70~0,2,70 +0,5,207~0,5,209 +5,8,219~7,8,219 +8,2,181~8,4,181 +5,5,186~8,5,186 +1,4,309~3,4,309 +7,0,185~9,0,185 +5,3,23~7,3,23 +0,0,21~2,0,21 +0,6,80~1,6,80 +2,6,27~4,6,27 +0,1,324~0,3,324 +4,9,27~6,9,27 +1,3,125~3,3,125 +8,7,179~8,7,181 +3,1,148~6,1,148 +4,5,303~4,8,303 +2,2,95~3,2,95 +7,2,61~7,2,64 +2,5,143~5,5,143 +3,9,133~5,9,133 +1,9,116~1,9,118 +1,6,109~1,7,109 +9,0,251~9,1,251 +4,1,151~5,1,151 +3,1,307~3,4,307 +3,3,254~3,6,254 +4,9,40~6,9,40 +2,3,303~2,5,303 +5,5,93~5,5,95 +0,3,205~0,5,205 +5,0,216~5,1,216 +6,3,12~6,6,12 +2,3,76~2,6,76 +1,8,257~4,8,257 +6,0,85~6,3,85 +6,3,196~6,3,198 +5,3,126~5,5,126 +6,5,80~8,5,80 +7,2,275~7,4,275 +4,7,285~4,9,285 +7,0,115~7,0,117 +0,6,16~0,8,16 +2,1,208~2,3,208 +1,1,168~2,1,168 +4,4,7~6,4,7 +6,2,195~6,5,195 +1,6,179~3,6,179 +8,5,30~9,5,30 +8,1,252~8,4,252 +5,4,55~6,4,55 +5,7,183~7,7,183 +5,5,45~5,6,45 +1,0,3~4,0,3 +3,5,202~5,5,202 +7,6,79~9,6,79 +2,0,321~2,2,321 +6,2,162~9,2,162 +0,5,25~0,5,27 +6,9,56~6,9,58 +6,2,10~6,4,10 +4,7,201~4,7,201 +7,1,182~8,1,182 +5,1,170~6,1,170 +6,6,138~8,6,138 +0,0,275~0,2,275 +4,3,78~5,3,78 +6,1,167~9,1,167 +7,0,111~7,0,113 +3,2,65~5,2,65 +0,9,34~3,9,34 +0,8,303~3,8,303 +1,7,180~2,7,180 +9,5,155~9,8,155 +6,3,29~8,3,29 +9,5,278~9,8,278 +3,5,46~3,7,46 +1,7,105~1,7,107 +6,2,159~6,2,160 +4,9,86~6,9,86 +4,3,132~5,3,132 +3,5,325~3,6,325 +2,3,58~2,3,59 +3,6,256~3,6,258 +2,0,160~2,2,160 +4,6,167~4,8,167 +7,1,107~9,1,107 +9,4,124~9,6,124 +1,4,123~1,6,123 +5,1,38~5,4,38 +2,7,84~3,7,84 +5,0,182~8,0,182 +7,1,171~7,3,171 +6,3,208~7,3,208 +1,2,272~3,2,272 +6,1,153~8,1,153 +2,3,111~2,6,111 +1,1,190~3,1,190 +4,4,96~4,4,96 +1,7,306~1,8,306 +2,3,149~5,3,149 +3,3,150~3,5,150 +5,7,11~7,7,11 +3,3,124~3,5,124 +3,7,272~3,9,272 +3,2,51~3,4,51 +1,7,125~1,8,125 +7,3,1~9,3,1 +0,1,66~0,2,66 +3,4,61~3,7,61 +0,7,269~0,9,269 +7,4,243~7,5,243 +3,6,137~6,6,137 +0,2,319~2,2,319 +3,0,250~6,0,250 +7,0,214~7,3,214 +5,8,65~8,8,65 +3,1,25~3,3,25 +7,6,116~7,8,116 +0,7,55~3,7,55 +9,3,33~9,5,33 +8,2,268~8,4,268 +4,5,30~7,5,30 +0,6,266~0,8,266 +1,4,131~3,4,131 +9,4,275~9,5,275 +7,4,245~7,7,245 +7,2,184~8,2,184 +0,3,41~0,5,41 +3,5,116~5,5,116 +0,1,31~2,1,31 +8,9,115~9,9,115 +2,3,244~4,3,244 +1,4,215~3,4,215 +2,0,278~4,0,278 +2,3,265~2,4,265 +2,1,48~2,2,48 +3,0,80~4,0,80 +0,4,130~0,6,130 +0,3,198~3,3,198 +1,7,221~4,7,221 +6,2,58~8,2,58 +0,1,34~0,1,35 +5,8,203~8,8,203 +8,2,39~8,4,39 +2,6,276~2,6,278 +0,0,14~0,2,14 +0,8,145~2,8,145 +8,6,23~8,9,23 +4,6,18~6,6,18 +5,8,176~5,8,179 +7,4,198~9,4,198 +5,1,17~7,1,17 +2,3,114~2,5,114 +4,5,192~5,5,192 +2,2,219~4,2,219 +7,7,117~9,7,117 +7,1,134~7,4,134 +0,5,211~0,5,211 +9,6,163~9,9,163 +4,7,172~4,8,172 +1,3,228~1,5,228 +5,3,314~8,3,314 +2,5,14~2,7,14 +5,3,41~7,3,41 +0,2,273~2,2,273 +4,4,76~6,4,76 +0,6,212~0,7,212 +2,7,189~3,7,189 +6,2,289~6,3,289 +6,6,210~6,8,210 +4,4,207~4,7,207 +5,5,61~5,6,61 +5,4,249~6,4,249 +0,3,117~0,5,117 +8,7,208~8,9,208 +2,1,184~4,1,184 +3,7,13~3,9,13 +2,5,73~5,5,73 +6,5,32~6,5,33 +0,3,123~0,3,125 +8,5,123~8,8,123 +2,4,186~3,4,186 +1,2,90~1,2,92 +3,2,260~3,4,260 +3,1,36~5,1,36 +6,2,158~6,4,158 +7,7,181~7,8,181 +1,9,170~4,9,170 +0,7,229~1,7,229 +0,7,36~2,7,36 +0,8,15~1,8,15 +1,1,87~1,3,87 +1,0,284~2,0,284 +3,3,232~3,5,232 +8,4,231~8,6,231 +8,9,130~9,9,130 +1,7,231~1,9,231 +6,4,273~6,7,273 +5,0,179~5,3,179 +3,3,313~5,3,313 +3,9,53~6,9,53 +7,6,242~7,7,242 +7,5,47~9,5,47 +5,7,108~8,7,108 +5,3,27~5,3,30 +2,2,246~5,2,246 +0,5,127~0,7,127 +8,0,38~8,3,38 +5,7,93~5,8,93 +0,3,24~0,5,24 +3,4,50~4,4,50 +2,4,282~5,4,282 +2,2,157~4,2,157 +4,4,281~4,7,281 +8,6,69~8,6,70 +3,3,194~3,6,194 +8,6,68~8,8,68 +0,1,202~0,3,202 +3,2,78~5,2,78 +0,8,37~2,8,37 +4,2,88~6,2,88 +2,3,91~5,3,91 +0,6,286~2,6,286 +9,6,120~9,7,120 +4,7,189~4,9,189 +2,2,46~2,4,46 +5,7,231~5,9,231 +2,1,274~2,2,274 +7,1,15~7,4,15 +4,6,50~4,9,50 +7,5,28~7,6,28 +7,1,80~7,4,80 +1,4,80~4,4,80 +0,7,271~0,8,271 +9,7,179~9,9,179 +0,9,189~2,9,189 +6,9,80~9,9,80 +2,4,128~2,7,128 +4,3,268~6,3,268 +1,3,216~1,6,216 +8,4,117~8,6,117 +5,8,125~5,9,125 +6,3,250~6,5,250 +2,3,163~2,4,163 +7,0,251~7,0,253 +0,3,113~0,5,113 +2,0,280~2,0,282 +9,6,180~9,8,180 +6,4,97~8,4,97 +3,7,263~3,7,266 +7,0,218~9,0,218 +8,0,29~8,1,29 +4,0,15~6,0,15 +5,0,49~5,0,51 +1,4,323~1,5,323 +3,9,59~4,9,59 +6,1,156~7,1,156 +1,9,28~4,9,28 +1,0,192~1,2,192 +0,5,16~0,5,17 +2,1,171~2,4,171 +3,4,313~6,4,313 +0,6,251~2,6,251 +4,6,179~6,6,179 +1,9,19~3,9,19 +1,8,147~1,8,148 +0,4,79~0,4,79 +9,4,225~9,6,225 +3,0,274~5,0,274 +2,0,13~5,0,13 +4,6,253~6,6,253 +9,9,181~9,9,183 +0,7,185~0,8,185 +6,8,222~6,8,224 +2,2,184~3,2,184 +6,0,106~6,2,106 +6,0,91~6,2,91 +1,7,111~1,9,111 +2,2,275~5,2,275 +4,0,40~6,0,40 +4,0,225~7,0,225 +5,2,208~5,3,208 +5,0,10~7,0,10 +7,1,150~7,1,151 +6,6,209~6,7,209 +3,5,176~3,7,176 +8,9,210~8,9,210 +4,6,265~7,6,265 +0,5,192~0,5,194 +8,6,20~8,8,20 +2,5,285~2,8,285 +1,5,126~1,7,126 +5,6,206~5,9,206 +3,9,261~4,9,261 +3,7,228~5,7,228 +4,1,239~4,4,239 +7,6,91~7,8,91 +7,2,216~7,4,216 +5,0,184~5,0,184 +2,2,224~2,2,226 +0,0,27~0,3,27 +1,6,17~1,7,17 +4,5,245~5,5,245 +0,6,95~0,7,95 +0,5,38~0,8,38 +6,7,318~6,9,318 +3,0,37~3,2,37 +7,9,86~7,9,88 +6,6,297~7,6,297 +7,3,241~9,3,241 +5,6,236~8,6,236 +3,3,153~6,3,153 +1,6,181~3,6,181 +6,8,112~8,8,112 +2,6,44~2,6,46 +1,7,19~1,8,19 +7,3,95~9,3,95 +1,0,251~1,3,251 +6,8,26~8,8,26 +2,1,193~3,1,193 +7,8,222~8,8,222 +0,7,157~0,9,157 +4,3,117~4,5,117 +4,6,28~4,7,28 +4,8,164~6,8,164 +3,0,252~4,0,252 +2,4,200~2,6,200 +9,4,92~9,6,92 +8,3,206~8,5,206 +2,7,274~4,7,274 +8,2,46~8,2,49 +2,2,163~4,2,163 +3,6,44~5,6,44 +5,7,39~7,7,39 +2,1,211~5,1,211 +5,1,146~5,3,146 +3,3,86~3,4,86 +3,3,179~3,5,179 +7,7,32~7,8,32 +3,2,187~3,3,187 +5,8,220~5,8,223 +3,5,68~3,7,68 +0,4,156~0,5,156 +7,1,136~7,3,136 +5,0,226~5,0,228 +0,2,44~2,2,44 +4,6,313~5,6,313 +0,9,171~1,9,171 +3,4,246~5,4,246 +9,4,164~9,7,164 +7,2,54~7,4,54 +2,3,158~4,3,158 +0,1,222~2,1,222 +7,3,255~7,5,255 +0,0,321~0,2,321 +2,2,316~2,5,316 +4,4,95~6,4,95 +3,5,303~3,5,304 +8,5,203~8,7,203 +7,4,266~9,4,266 +5,8,120~8,8,120 +2,4,157~3,4,157 +3,2,316~3,4,316 +6,6,70~6,7,70 +6,2,57~8,2,57 +2,3,57~5,3,57 +2,9,56~3,9,56 +6,1,185~8,1,185 +7,6,80~9,6,80 +3,3,257~3,5,257 +8,2,178~8,3,178 +7,1,201~7,2,201 +2,3,223~2,4,223 +1,5,78~3,5,78 +2,8,219~2,9,219 +8,6,19~8,8,19 +0,0,254~2,0,254 +2,9,14~3,9,14 +4,2,220~4,4,220 +2,8,142~3,8,142 +6,6,206~6,8,206 +8,7,62~8,9,62 +5,2,67~5,5,67 +8,5,144~8,5,147 +3,2,27~5,2,27 +6,4,222~9,4,222 +0,6,35~0,8,35 +4,4,46~4,6,46 +1,6,287~3,6,287 +6,2,102~6,3,102 +7,2,152~7,4,152 +1,2,12~1,5,12 +1,9,137~2,9,137 +1,7,155~1,7,155 +1,6,42~4,6,42 +6,8,201~8,8,201 +7,8,206~8,8,206 +9,0,1~9,0,3 +2,6,175~4,6,175 +3,5,8~3,8,8 +5,7,51~9,7,51 +5,1,221~5,3,221 +5,6,17~5,7,17 +7,4,158~7,6,158 +4,5,238~4,8,238 +8,0,244~8,2,244 +3,2,190~5,2,190 +1,6,82~3,6,82 +4,8,171~6,8,171 +3,4,304~5,4,304 +4,3,191~4,6,191 +2,7,136~5,7,136 +4,2,24~4,5,24 +1,9,159~3,9,159 +6,7,126~8,7,126 +8,2,249~8,4,249 +0,8,76~2,8,76 +7,3,138~7,5,138 +6,1,165~6,4,165 +9,6,170~9,8,170 +8,0,76~8,3,76 +0,6,125~0,8,125 +3,7,83~4,7,83 +9,3,279~9,5,279 +0,1,254~3,1,254 +2,8,18~4,8,18 +0,4,132~0,6,132 +2,6,2~2,6,4 +2,0,41~5,0,41 +1,5,322~4,5,322 +9,8,165~9,9,165 +0,2,31~0,2,31 +3,4,129~3,5,129 +6,7,167~6,9,167 +5,3,302~5,5,302 +0,0,67~0,3,67 +0,7,161~1,7,161 +5,6,185~5,8,185 +4,9,136~6,9,136 +4,6,263~6,6,263 +2,9,62~5,9,62 +5,6,161~5,8,161 +1,8,263~3,8,263 +7,3,269~7,5,269 +5,4,190~8,4,190 +7,9,36~9,9,36 +8,9,28~8,9,30 +4,9,157~7,9,157 +7,1,12~7,3,12 +4,6,30~5,6,30 +0,4,21~3,4,21 +2,6,123~3,6,123 +6,2,242~8,2,242 +3,7,299~5,7,299 +1,6,196~3,6,196 +0,5,112~2,5,112 +3,6,300~3,7,300 +3,1,85~4,1,85 +7,1,161~7,5,161 +1,8,93~1,9,93 +0,2,84~0,4,84 +7,5,140~7,7,140 +0,5,3~0,7,3 +1,8,74~4,8,74 +1,6,275~1,8,275 +8,6,272~8,8,272 +6,0,8~6,3,8 +0,3,47~1,3,47 +2,4,18~4,4,18 +9,4,34~9,4,36 +7,9,176~9,9,176 +0,0,1~2,0,1 +4,4,144~4,7,144 +6,4,63~6,5,63 +6,1,105~6,3,105 +3,0,238~3,2,238 +2,3,33~2,4,33 +4,6,60~7,6,60 +3,1,94~3,3,94 +5,2,103~5,4,103 +4,5,81~4,5,83 +5,5,98~5,6,98 +0,4,227~0,4,229 +0,5,146~2,5,146 +7,3,162~7,7,162 +9,0,47~9,2,47 +6,9,175~9,9,175 +2,5,325~2,7,325 +6,9,26~9,9,26 +4,8,133~4,8,134 +1,6,112~1,8,112 +8,3,45~8,5,45 +6,3,70~6,5,70 +6,2,279~6,4,279 +1,9,46~2,9,46 +1,7,227~2,7,227 +4,7,137~4,7,139 +1,2,13~3,2,13 +2,0,194~4,0,194 +9,5,52~9,8,52 +1,1,40~3,1,40 +3,0,23~3,3,23 +6,5,263~6,5,263 +0,5,78~0,8,78 +5,3,252~7,3,252 +1,3,129~3,3,129 +0,7,50~1,7,50 +3,5,113~5,5,113 +2,7,107~2,9,107 +0,8,106~0,9,106 +9,2,29~9,4,29 +7,2,159~7,5,159 +9,2,201~9,2,204 +6,6,121~6,9,121 +3,6,169~5,6,169 +0,3,15~2,3,15 +0,3,40~0,6,40 +5,2,230~5,5,230 +0,7,154~1,7,154 +7,4,77~9,4,77 +8,4,230~8,6,230 +9,7,177~9,9,177 +8,6,82~8,8,82 +7,8,182~7,8,183 +5,9,156~7,9,156 +3,4,242~3,7,242 +3,4,270~5,4,270 +4,1,6~6,1,6 +6,2,45~9,2,45 +0,0,122~0,2,122 +5,2,170~6,2,170 +3,3,159~4,3,159 +0,2,41~1,2,41 +0,7,58~0,9,58 +1,7,255~2,7,255 +9,4,28~9,7,28 +2,7,109~2,7,110 +1,8,176~1,9,176 +5,2,271~5,2,274 +2,2,164~4,2,164 +1,4,213~3,4,213 +9,8,87~9,9,87 +3,5,66~3,7,66 +1,3,24~1,5,24 +2,3,193~2,3,195 +3,6,226~3,7,226 +8,5,59~8,7,59 +5,0,35~6,0,35 +6,3,179~8,3,179 +2,3,211~2,4,211 +7,8,251~9,8,251 +0,1,232~0,3,232 +6,8,198~9,8,198 +5,9,262~6,9,262 +1,1,170~1,2,170 +5,9,171~8,9,171 +5,2,151~9,2,151 +2,9,134~5,9,134 +8,7,128~8,9,128 +6,2,14~6,5,14 +0,0,224~2,0,224 +4,4,48~4,6,48 +8,6,207~8,6,207 +8,4,46~8,4,48 +3,1,235~3,3,235 +0,0,83~3,0,83 +1,6,127~1,9,127 +5,7,145~7,7,145 +5,1,99~8,1,99 +4,2,21~6,2,21 +2,3,126~2,4,126 +1,8,6~4,8,6 +0,5,152~0,8,152 +0,2,226~0,4,226 +0,7,98~1,7,98 +0,9,174~2,9,174 +9,3,151~9,5,151 +3,8,298~5,8,298 +8,4,31~9,4,31 +0,8,164~0,8,164 +3,2,259~5,2,259 +7,1,155~7,2,155 +4,7,204~4,8,204 +8,1,52~8,3,52 +5,0,289~5,1,289 +0,8,104~2,8,104 +0,0,4~0,3,4 +5,3,39~5,4,39 +7,7,36~9,7,36 +5,5,62~7,5,62 +6,8,35~7,8,35 +3,0,72~3,2,72 +8,1,114~8,3,114 +6,8,11~8,8,11 +7,6,88~7,7,88 +9,2,32~9,5,32 +3,6,140~3,8,140 +4,1,247~4,2,247 +5,1,199~7,1,199 +0,0,5~2,0,5 +4,0,83~4,0,85 +3,2,155~3,5,155 +5,1,100~6,1,100 +5,2,310~6,2,310 +7,4,193~9,4,193 +0,8,88~3,8,88 +4,2,224~5,2,224 +4,7,113~5,7,113 +5,1,13~7,1,13 +8,5,168~8,6,168 +7,3,154~7,5,154 +4,5,198~4,7,198 +2,9,4~2,9,6 +2,5,319~2,5,320 +2,5,250~2,8,250 +3,7,199~4,7,199 +8,6,177~8,9,177 +2,7,204~2,7,207 +7,7,217~7,9,217 +6,2,270~6,5,270 +0,8,43~2,8,43 +1,4,158~3,4,158 +0,4,10~3,4,10 +8,1,37~9,1,37 +1,1,70~4,1,70 +5,2,54~5,3,54 +4,1,167~4,2,167 +0,4,115~0,7,115 +3,8,321~6,8,321 +0,1,187~2,1,187 +1,2,194~1,2,194 +4,0,248~4,1,248 +1,8,100~2,8,100 +6,6,76~9,6,76 +4,7,293~6,7,293 +5,9,208~7,9,208 +2,5,48~3,5,48 +1,4,159~1,6,159 +5,7,90~7,7,90 +0,6,170~2,6,170 +5,7,111~5,8,111 +0,5,73~0,5,76 +1,0,253~1,3,253 +4,2,75~4,5,75 +2,6,118~4,6,118 +0,4,190~0,7,190 +1,4,9~3,4,9 +1,0,191~1,2,191 +4,5,129~5,5,129 +3,2,258~3,3,258 +9,4,269~9,6,269 +5,6,133~5,8,133 +8,4,17~8,6,17 +7,4,248~8,4,248 +3,1,277~3,3,277 +2,7,254~4,7,254 +0,8,148~0,8,150 +4,4,15~6,4,15 +8,4,205~8,6,205 +1,8,52~3,8,52 +4,5,78~4,8,78 +1,4,26~3,4,26 +5,2,143~7,2,143 +2,6,309~2,9,309 +6,9,324~9,9,324 +1,1,33~1,2,33 +0,2,13~0,4,13 +8,2,220~8,2,222 +3,4,272~5,4,272 +8,4,125~8,6,125 +0,0,120~0,3,120 +0,8,265~2,8,265 +4,3,139~4,3,142 +0,4,173~0,6,173 +5,3,16~7,3,16 +8,3,90~8,6,90 +7,6,57~7,9,57 +1,7,262~3,7,262 +3,5,157~4,5,157 +6,2,51~7,2,51 +0,2,201~0,4,201 +7,0,222~9,0,222 +6,1,9~9,1,9 +9,8,178~9,9,178 +8,2,271~9,2,271 +4,2,49~4,5,49 +3,6,204~3,8,204 +1,3,117~2,3,117 +6,4,315~6,7,315 +1,7,47~1,7,48 +7,6,228~7,6,229 +1,9,192~1,9,193 +6,1,26~8,1,26 +3,3,310~5,3,310 +1,3,183~3,3,183 +3,3,162~3,4,162 +3,1,96~4,1,96 +3,3,163~5,3,163 +5,1,56~5,3,56 +6,1,217~8,1,217 +9,1,156~9,3,156 +7,5,22~9,5,22 +0,3,154~0,5,154 +4,8,301~6,8,301 +9,2,171~9,5,171 +7,0,277~7,2,277 +9,1,253~9,2,253 +0,3,66~0,6,66 +7,7,109~8,7,109 +0,7,12~2,7,12 +0,8,198~3,8,198 +5,8,173~7,8,173 +6,1,20~6,3,20 +9,5,195~9,5,196 +3,0,241~3,1,241 +4,4,132~4,6,132 +5,2,19~5,5,19 +7,6,53~7,8,53 +0,8,199~3,8,199 +0,2,221~2,2,221 +3,8,11~5,8,11 +4,0,72~4,2,72 +0,1,49~0,2,49 +2,7,171~2,9,171 +3,1,171~6,1,171 +1,0,24~1,0,25 +2,5,184~2,7,184 +0,5,4~0,7,4 +2,4,271~2,4,273 +6,4,262~6,7,262 +3,8,19~4,8,19 +3,6,105~5,6,105 +5,4,262~5,5,262 +7,6,118~8,6,118 +4,0,243~4,4,243 +1,6,146~4,6,146 +3,1,196~5,1,196 +1,4,267~3,4,267 +3,5,122~3,7,122 +3,1,33~6,1,33 +0,4,30~0,6,30 +3,9,64~4,9,64 +5,3,193~8,3,193 +6,6,275~6,7,275 +2,7,147~4,7,147 +8,6,25~8,8,25 +2,1,255~3,1,255 +5,7,241~7,7,241 +3,8,30~4,8,30 +1,6,186~1,9,186 +7,5,63~7,6,63 +0,8,163~3,8,163 +2,3,310~2,5,310 +3,5,259~3,5,260 +3,1,230~3,3,230 +7,3,217~9,3,217 +7,6,217~9,6,217 +4,4,229~4,7,229 +8,2,255~8,3,255 +0,9,293~1,9,293 +3,4,115~3,7,115 +0,7,202~3,7,202 +5,9,81~8,9,81 +6,7,54~8,7,54 +6,1,3~6,4,3 +2,5,220~2,7,220 +2,8,53~4,8,53 +4,8,302~4,9,302 +1,2,189~3,2,189 +3,5,299~5,5,299 +9,4,194~9,5,194 +2,3,8~4,3,8 +7,7,33~7,9,33 +5,7,104~8,7,104 +5,2,123~5,6,123 +2,4,145~4,4,145 +6,0,268~6,2,268 +2,4,188~2,4,190 +6,5,77~6,9,77 +5,1,132~8,1,132 +3,3,283~3,6,283 +9,4,186~9,5,186 +4,4,118~5,4,118 +9,3,74~9,5,74 +1,1,76~1,3,76 +6,1,186~9,1,186 +1,0,167~3,0,167 +4,1,131~4,4,131 +4,4,244~6,4,244 +3,0,6~3,4,6 +6,8,119~8,8,119 +0,6,215~0,7,215 +9,5,39~9,7,39 +9,3,200~9,4,200 +7,6,151~7,8,151 +3,6,53~6,6,53 +9,6,182~9,7,182 +1,3,133~1,6,133 +5,6,160~7,6,160 +6,5,198~6,7,198 +4,0,37~7,0,37 +0,2,47~2,2,47 +4,4,186~6,4,186 +1,6,9~1,9,9 +0,4,22~0,4,22 +3,6,28~3,8,28 +6,0,31~8,0,31 +7,3,143~9,3,143 +2,4,164~5,4,164 +6,6,100~8,6,100 +2,9,130~3,9,130 +8,3,99~9,3,99 +1,3,303~1,6,303 +0,7,91~0,9,91 +2,8,262~3,8,262 +3,7,29~3,7,31 +2,9,67~3,9,67 +1,4,278~4,4,278 +1,4,124~1,7,124 +1,6,223~3,6,223 +7,2,28~8,2,28 +7,6,213~7,8,213 +0,1,123~0,1,127 +1,6,217~1,8,217 +2,2,23~2,5,23 +1,1,143~3,1,143 +4,2,89~4,4,89 +8,7,21~8,7,21 +6,1,96~9,1,96 +3,2,268~5,2,268 +4,4,2~4,4,5 +5,5,92~5,8,92 +5,5,269~5,7,269 +5,4,258~5,5,258 +1,2,45~1,4,45 +2,9,139~5,9,139 +1,3,242~4,3,242 +2,2,30~2,4,30 +4,7,188~6,7,188 +8,1,273~9,1,273 +9,5,123~9,7,123 +9,7,242~9,9,242 +1,4,226~4,4,226 +3,7,116~4,7,116 +5,5,255~5,8,255 +0,3,134~1,3,134 +0,2,127~0,4,127 +0,5,248~2,5,248 +0,0,30~0,2,30 +7,3,117~9,3,117 +2,6,176~2,6,178 +4,1,289~4,4,289 +3,2,308~6,2,308 +8,5,141~8,5,143 +5,3,122~6,3,122 +0,7,1~2,7,1 +6,8,37~6,9,37 +2,0,87~2,0,89 +7,4,165~7,4,167 +5,8,264~5,9,264 +2,6,259~4,6,259 +1,6,99~1,9,99 +6,0,33~7,0,33 +4,9,3~4,9,6 +4,0,9~4,3,9 +2,7,3~2,9,3 +4,3,248~4,6,248 +4,0,292~6,0,292 +7,4,58~9,4,58 +6,6,237~6,8,237 +7,2,181~7,3,181 +0,3,273~3,3,273 +2,4,151~4,4,151 +1,1,172~1,3,172 +5,6,56~8,6,56 +1,3,46~1,5,46 +4,2,100~6,2,100 +6,3,74~8,3,74 +0,5,14~1,5,14 +5,0,129~5,4,129 +1,1,244~1,4,244 +7,7,128~7,7,128 +4,8,206~4,8,208 +7,4,184~9,4,184 +9,6,3~9,9,3 +7,0,186~9,0,186 +5,5,23~6,5,23 +2,8,306~2,9,306 +6,4,148~6,5,148 +0,6,121~0,8,121 +2,3,251~4,3,251 +5,9,234~6,9,234 +0,8,218~2,8,218 +7,1,48~7,4,48 +2,7,160~2,9,160 +2,3,270~2,5,270 +4,6,172~6,6,172 +6,9,174~7,9,174 +1,2,48~1,4,48 +0,1,229~0,3,229 +0,5,174~1,5,174 \ No newline at end of file diff --git a/inputs/day25.txt b/inputs/day25.txt new file mode 100644 index 0000000..930cdd1 --- /dev/null +++ b/inputs/day25.txt @@ -0,0 +1,1221 @@ +fqt: bzs +pbl: jkk zmp +vkq: lqr +tlk: jcs ddq nkt vfh +hhp: qlf +zxv: jxj vlm fmb mpm +qtg: vzg +bxf: ddb lxs rfq +zqt: nkt mxj +jxd: zsf rsk hfk jnp +hsx: nhc psx jtj lkt +rts: thb +czc: lhf fmz rnq hkq +jcs: lbs nzh +rzm: rpf ntt lgs +ntj: fkd mbh bfr qxz +lsx: xdf msv kxx tjn +hsp: hcb ptz nzs dpv bdf +bdv: zbf spp zzj tzz +jbm: ggk +xqx: pjf fts bcv ssc +mlv: psz fcs djx vbt +src: fhv stv lzg qnq +jrk: pmv kqx nll xsj lhf +hkx: hxr bhf +prh: pbn +xkg: hcn hcg prf +ttg: dgl mxg fpc +dql: gtc +zxs: pxq xnv rcf zrv +dgb: lfm kzx vzg nll +fhv: pnv +bnh: mbc +rrz: jxj rpf bnk pgn +jjd: gxt mcj +fxg: zxj +shg: dpk tnr vtn +zzf: nzh +zqr: fkr tzr +zmp: krh +xqf: srs gsl +nvb: dcf msn fts +qsn: bhc jmc nmz +hbq: qxz +qkv: kpd chd +mfg: chz ddb vtl +vgx: cpd +csd: mzq +jhf: ztb rrf gqm +xbg: vzd qgg gpj +fjn: nmg fdh bdh hzk hbq +qtf: tcx hhp zvx +jmc: qcz +fmb: jxj +dsz: ppt +dpl: gjf +bxb: fmh fkq gxp +prd: ghh lmq +gsq: zvx fmb +gxf: kkr pkh vgv pjm dnf +fzd: jfj lxb pnh +vkk: dsz +hqx: djm +zrj: vbt lch lrs dqj srv +thh: vgv zbx qmj mgd +ccj: qvb +hbc: tkh +pgr: jxz vbr xxs rjp +mkg: jgq +xnd: dng bpb +rbl: znp ksx +ddq: djm +zxz: ljg lrs +vtj: ltn ktl kxt +ssf: zfd njn mxv jtj qxf +ksx: bxp +zhg: pbl phs +szr: hnc qhh stv rrf +kmz: bsb lcb +vfh: jgq lvv tjg vms +tvx: ztq mfc +jpq: nbj xxv dnf fnb +qxf: rhd +jdn: rcb bvm kmh +zst: mfn prr xcv +qrz: bll pgz +hqj: nll mjv gck pqg +vzh: dxl xqg lqr +dkm: vth mxv vcz bnq zdv +tmd: trt krn pzv qgb +vvn: hbs ckg +tlh: skp zbl +qqp: lgj +shz: pvn +tjs: ljl trz hls +qqg: bhf cns fkq +kzl: zvg jtg +xcl: xqg dhp zzf rjq bhb +mtq: qpb fbc rhn +xpn: cds +ssm: pbc qln cjt npk +drm: bll rhh +jjx: zfg msm ndc +phs: csh +ftr: tff tst xnj +pfb: hcl zgq +spk: lhh bgn lbs +cpf: vgn tbc +cxh: hcq gst jdm jxx vps +sfj: ffq fqt dxp +klk: bbv lqr +zld: xpz gbr ssc zql +klv: shh tqh kpl +xnn: czl xcq nfl tbx +csc: bsj bhj zlc +fpm: rns xdz xdh shz +nfc: jvx chm ccd qtx jbm +bjk: hbh +lqr: dsx +klz: bvm cmz +sdm: gxt vdr gjf +tvh: vkh hrv +qhh: gzd ztm kpd +ssl: cpd pqp kks +cmf: vgr llz +zjf: zpl gtg lpp kkq +tpl: znp plb psx qpg +kvh: ghh zxz jvx +ghl: rxd rxn qdq vjv mbq +hbg: xvt pjv +ztm: xxl hsp nzk frh +llz: kfq +mpx: mxj fjm rhn +vzf: nss nzl kdg xft +vjb: nzm mgv kcr xhj +znh: lhm mzm zpx dpf mdv +lnf: xfc hbs vdr +qsf: pqp +xgn: vkf tpt hnc +cdt: zgm zgd +ncg: psx czp +bbp: nzk rhv ggt jgc +shv: lkt rpd fpc dqf qsn +cts: kgj xft mcj tgg +zhk: kqr qlf qgm +ldj: qzh rxc lkt nzs qjh +pzj: xft +rfq: qlg +zcj: dgl kzl nmc mpb pzg +tkv: jtj jnj +pth: jbx lcs dld bzv mgj +dxg: jgg trb vlh sfn +kpf: pnb +hmq: qxn mfn +hcb: hnc mxg hrd +vgn: tsp bxm +qpq: hjh lhf +znm: xrl +hht: xtm mvx +jqv: qln xrv hhp rzn +mxx: xbt +xhv: hds snt +qfz: xxr fnb +mht: fbc +rcf: sfn +hgp: djb pnh tqh jfp llr +stm: hkq znz fgs sdp +mfz: vrs vxn xdr qdr zxl +rfh: nfq vkf bvm +hvl: stv +jrq: mlf gpj bhn +lss: srv bfh +rqm: zgz +fvg: gjb fxp skp +rdq: crk nmf mfg +qhn: sdf +zhr: jmh jvx pkb +rfp: pjv jnf kgj +flt: zhk ggt bnk xcn +jtj: bjz vtm +qfl: xhh lhj ptz +pvz: fcf +bnv: bml rhd +rrf: dlm cbv +jpd: klk sxv kvh pcb +xhk: vcr gtc cmf pnd mgj zhm +tfm: kvt dgc +rdh: gmz lbc ksb nzq +msz: zkb nfb +dzm: cvj ksx trl lxs +krm: tnf zsf crs ftp +gfd: bkb rts nlg +tzz: vhf +kkm: dtr kpl brq +xgs: jcs hkx mfh mbh kbs +kzx: bfh crp flq qmr +jhq: kgj dsd tqq jjm +vng: hgr sdm kmf xxv +fdh: bnh qfz +rzk: vfb ppc qfp +tsz: xhn gsl mkh bdf +qzj: pnz rpf tkd crj +qxp: glt +scv: mvx ghv vzl stp +trl: znm +znq: qxp cbv +psl: lnm vcp llr bbq +lpc: kxx +cdp: lcb knr qqp +mnh: vfn rcb bcv +kfp: vrs bjb +fhr: rpb jmr +lfm: kbs ktl +xdl: sbs tjg crp +vms: vzg xjn +zzm: fmd jtj jtg nzk nxx +fnb: lnm +hct: fxq sjk tjq mdk nzl +sld: hzn +ckv: tnf +cdd: mzn tsj dqz rzn +gfl: pjm tgg +rdm: tmx +tzr: rdb +gpp: pkj glb lqh tss +lbb: xfc spp +zrc: zpl zxl skm tmx +prf: pgz +ddz: prh +fkc: rqx skp nfl +gmf: zhg jql tkv crk +gnx: phs +mgj: rgs zqv cfk bzm +kxj: rbj hbh +mrj: pqp zqh tbv +tff: vgx hjx +xpz: vpj +qcp: rmm ndq hbg +nxx: qbh +fbt: xtk jqv sqb +kvt: xph +lhj: cpm jtg +pzm: fxb vfc tkf ppc rqz +xvv: xtm +lxn: bjf fvz ccj +jzh: fmb nmd snr gmz +cvf: jtr zvx xpp bhn +hmh: glt sld tqd +dpt: qlf ckv cgx pfm zvg +fdd: hcg zhv jnp zfd +mjk: zlq +tjb: mht hvm srv +ssk: rhh jxx +hzc: qxr pvf +kfs: srv +nbv: fxp hnt fdk bxp vjt +sgm: gbl jrq vkh mhg +tkd: vtl +jxx: vjt +kps: cdt mjq tsf +blc: vxn +vzd: bll +khh: bml djc +lgs: tlh nfs csh +qpz: lnl fjh vzl djq +gmj: xbz cns +kfn: pjm lrs dlj hlx gxr +jjm: dql +gzk: llz fjm +cth: gmn +mfn: stb +xxs: xtk zqh pqm dvg +sfs: jtr cjt +ldk: kxj pkj pbq +jjj: sfd thq hrt +rpp: zgm tvh +vdb: nmd xgv ckv +mlt: lpp cnn +ztb: bnk rbj bjz +xkb: fqm +nfs: cgx +zqb: skv +gxt: bbq +vlq: nzq bjk stp +hkj: rzn mlf gbn zdv +rqz: jht +bps: vkq gxc ctc fcf +xjz: vxd gnj +hbh: svm +xpl: tjb lbb +fhl: qkx fjh +nzc: jrc xrm +xcv: sjz fgs +dxl: lfc jlb nzh mjk +kcc: bmp xgh dlj vkk +hqp: vbr xpn lxx qzn mxv +mmv: ggh prr +zbx: xfc xql +lqg: lzv ppl pcv +ncp: xnf smq ktl mfh +mzq: srv +kgd: nrt dhp gxc kkm +xvp: chs msh qnf +gxp: zcb vgr +qgb: fjh +mzn: xtm +rft: frq tjg qcp lbs +tbn: mxx sbh vxd +nmz: ckt vht vkf shg +tpf: rjq lxb jmh zhm nrt +vdq: mfh +qkp: kmh pqm +kpb: hfd mcj dqb rkt +tct: smq xbr +vbb: tlb mpm +jxz: lhb rpx +tzd: qct rxc plq +jgp: clc bgb mbd +zgd: pfm +fsc: jtc rdb dtf vdr qmj +thv: cnn xqg tzz rnt +gxr: fdq mzq jpr +sng: prh pkb pzt pbn +xgh: rqz xql gtc +dqn: gqm pzn lnq lxx +xsx: qxx +qbz: zsf +hps: trs jfc qgb +nxh: xkb hmc +tjq: lmq dtl gfl +sgz: ttg tpl sbm dbd kcm +hpp: tzk dxn mjc dqb +ztd: brq jjd +jmm: qnf zpx hbz +zvn: lqs zfg +jgs: xxt ggh cdp xfn +xhh: gcx tqd dlm +tdh: nfs +dbn: ffq xph ghh +gpl: rfq +cmz: rhd jtg +xbr: xph xhr +hxq: sfp rpf pzg pgn vmb +nnr: kpg xcr hgr +sqp: mjv bjb jbm +crs: qgb +snv: mxx +pnz: nfs +qjx: qxf sbm +lnq: nxx fhr +gkr: hrv ptf +xbk: jmk +rnt: lpx jmj zng mnk +sbg: jjz xtm djc qcz czp +zfd: klz +xgd: mss +gbn: trs jjz vkf +xbc: frf vfb spp vvf cth +lqs: vpj +pps: qpv ngg qjh +grd: rql tkd cmz prf +mfc: kxt +fcs: kvt jlb +gdv: jnf bfr +fdl: pln hrd pnv tss +hhs: qtx kkr mtq +mhf: fnz nzm zmd tbs xtm +rgd: dqz rfq hht xtk +vfb: kqx fdq +nkt: jfp dsc +fnz: bcv +jmk: qkv +mdq: hnt qln rcb +ppk: jpr spx +jtd: gfd nsh vcp dtl gtg +nfb: vtl +rxd: qrz xqf mxp +bmv: khb rvq +xtc: pgn +chd: knk +xpf: kfq tgg +msn: ggk jfj mfh +bgb: llr dsx +dxr: hkx bzs chm kmf +vml: cfk +pdg: bbl +vps: dzf mtl hbh +fxp: tzg lxx +mzf: pbl tnf vlf +dqc: vgv xfn jfp thj +lzq: btj knr qhn bgn vqp bsb +kpl: xhr fmh ljg +mvf: cjs nsh dfb chm +rgh: bjb +pvn: mlf +qjt: llr +tzp: vtj +rbt: rnn bpz mlc vkc jhd rsk +trt: ccj pkm +bzp: rjd hmh fvz +rnc: kgz pqm rdh dqn +mtc: pfb fbc tcg zcb +tlc: qhn cnd fxb +sqs: fmz qkd xjn +skq: pdg nzq zhv +vjg: vjt jhf xbk +cbn: tqt pxq +rns: jtg vmb hzb pqh +xpm: csn vjv lbc jxj +tgk: rtg qnp tzk nhr +lhh: zzf +lbh: bpb lzh +qmp: pzt dcb srv vgf +chz: qjh +mrl: ssl qzn glb lhb +jpm: jpr tpn xpl +nzm: kfj xdg qgm +skm: vkq njz kfq +cqb: gpl bpm qsn cpf +hgd: gnr kgz vbr lxn cpm +ppr: xqx njn lhb mgx +tlb: nzc shg lhb gjb +xqt: fkr rlq +chm: rmt kkr zjr +skl: fxb tpn rcp psl +hhj: ljg +rdn: fzd tfm vdq hbl tcq +zkb: vtn tsp +csh: rhd slv +cfk: lfc ppc +lqh: szx csq tcx +fbd: kgj mfp +dgl: cgx +qrn: tjn xsz tqq nns pth +cxk: qfz klk +tjk: hds dnf jht +qcx: mhd zmq qsf +bhf: dxm +xxt: bxl pxq ccd +nsc: gxc mbd xqt smg +tqq: tvx hls vlh +sbh: ktl hgr +zrr: dld mdv xrq pcb +xgm: xtc srh qxp khr cvs +qdq: tnf +jfx: nxh sqs dsz nlg jqh hmq +mxv: ptf +cfg: xqz zzf khb lss +ndq: kkq klb sfj gcg +mlf: thf +nzl: pgx +qmj: qxr +mgx: vjg xbg rzn fbj hbx +kmb: qtv mdv +ppl: mcv qnf +vqp: hph vxd xbz mjc +hbl: kfq rjq fxb kmb +rtm: ckj +hxr: snt +mjq: ckt hfk +jdg: vdr hph bmp +vth: gmz kgz +kqr: tkv ghv +hbt: fcc jzf zhr cjs +ksg: jqs +mxq: tfc +nrf: tdh xpz npk mjg +zxq: zlq +frm: ggk +xfr: glt +vhj: vsb xbk pkg dqp +jzf: ngz pkh lfc +mcp: sjz jjl lhm zqr +khb: sfd +cjz: qtg pnb xjf +gtm: fmd qkp +snc: qdp pst cvs bjk tbx kps +zqv: klb jpr jfp +fms: kcm mzn hgx +rdj: tkh fxr +lxp: qtv vsq xhr +plq: rzs xrv +fkf: mtr lzh +zjc: pgv prg tjb pzj +ddh: qlg +lzp: hbg dsd ztd zxj +mtp: rcs pbq tmb +jfc: jjz +jgq: mzm +dld: thb djx rdm tcg +mkv: mrp pzn qgm fpd tff +blb: bmv vbt gsz +cxb: hbq vvn brq rft +vch: drm +zbl: hrv +nhr: qxn tqt xxr +llr: vcp +thb: clc +grl: mfn ppt vzb +pbq: hhp pdg bdf xbk bng +qkh: fmd zdd hfk kks +hbx: mhd qlf klr txj +ngz: trb gzk +msg: xnv fdq zxj +xft: msh bgb +sxv: flq bcs dng jcx lnm +ndv: xqf hbc jtr svm gkq +bgl: vfc zhm nss cbn +gkv: vbb pln shg +pkg: vtl nln rcs +hcn: nmd +xgj: tqh fbd vml +dbd: xgv +kbs: fmz +qrt: mzm zsn +qff: jnf +ggh: tfc mqh xdr +lhz: mbd qtg +trp: xqg zqr +pnd: dkh cxl +hmt: pqp grx txx zbl +gxc: tqh rzk +vkc: lcf +kgk: zfz kfs rcp bkr tct srv +zdv: jkk +qnq: gzq rqx pqp qkp +lrs: kpf qxr +qmr: gcx +lzl: vjg gnx tsj tzx +mjg: hsx xvv mqd crc +jrp: zcl tbn kvm vml lvv gck +jkf: xfr qcn rcs +cfn: gsz dql djm +smg: bgn bjj +zdj: rfp bjj +bbj: nrh fpb xdr nzl rnq +sbs: cnn thq nbj +ngg: fts cpd tkd pkm +dss: qnz ssv pbc +fpd: vzl +pqh: mtl hcv dbd +smx: zdj xfc +bcs: qjt vsc vlh +bhs: rrf crk ntt dbd +jtc: bjj +pvc: srh mfl znm csn +qfh: lzg qpv bxh znn pkj +bxp: zfg +lcm: stv +xqz: ppt +xpt: hhj qxn kfq zxl +dgc: xnv jdg +htk: nxx fhl nxv shz mxp +fzg: tzr kzm msv rdm +dvg: bng +thz: xbg xgn rqk pgz +nlg: rsq mxq fkr kpg +qtv: kgj +jxc: glp tzr cth +glp: sdp kxx xtd gtg +mdk: rts xcr kpf +qmb: bhx ghv kfj vkc +bkb: gdv +jpf: jcx ztq +lrn: qsp jrq +qfr: sqp fmz +ttc: kvb crp zsz xsj +cjs: llz ktt +vrc: ccb zbx mxj +gdn: tpn +bng: ddb +dkh: zxj djx +pgx: xsj pmv +rcp: dlj rcf +qbb: qzh vkf tzx jjx glh +qtb: lpx ckj pbn +tnb: ztd grl bkb +fdk: ptf +dzp: hqj zqr ppk lrb +fpc: fxp pfm hbn +mxg: hrv +jdk: nxf jtk xfr +nns: lcq xkb fqt +cdj: qxx vht krn jfc +qfp: cns hls znz +sjk: dqm +rdk: hqn rcp shh +fpj: mxq hfd pmv +ccd: qqp +hpf: rvq dxm qrn sjz +pcb: xnd +gvl: tjn tcg hqn svn +ngr: pln qtk xsx +lxb: gdn +ffq: pkh fnb +tgv: vhf mcp klk lbh +ztq: smq +fvz: tlm +gqm: xfr +tst: qbz jxx vpj +qzr: fhv npk lfg zsf scz +nkh: fkf srv xpl qjt +hhl: cpf lqs +hvm: znz xfc +pmp: tfm msg bxl mcv mpl +zgz: gcd znz dnf +dsd: kpg +psn: gjf fkd +xbz: hds bhb tnb +xlv: fms gnc nzk vlq xpn dpv +rsk: tkh +qdl: zbf klv xsz fjf +pdf: rns sqb bhn +vzv: cjz ppt khb sjk +pzg: bxf jrc +lgk: mfc mtc sgh ndz tvx +nxr: jfv klb xsg pjz kpg +vrk: ssk ptz ggt +nss: nzh hhj lcs ffq xxv +rjd: ggt +flq: bzs +lnl: pps +cxr: zfz lrb hhj +mjv: frm +jcx: ghh lcq +vsk: kbs xqg mcj +nkc: bzp ftr hzb jnj +xdr: jjl fxq +vsb: fxr +plb: pfm qln +gzd: qxp znm +vkb: lfm bfh +fkq: pcc fkd +rlf: vgx zfg +skv: mfn stb xsj +bkr: jqs kqx fjm +sdp: pbn +hgx: lfg lqs rdj crk nbk +djq: srh tzg hvl +zlq: tpn +mgd: blc lst xql +xhn: crk zvn +pzn: skq tcx zmp +xnv: kxt +blg: pdf ggt fhr vvl +pkj: crs +ctc: fjf xjn cnd +kqm: spx dtl ppl lpc +vvl: qdq +rgs: vgr +hdq: xcq rdj jxz pms +jfj: lmq lgj +qpb: snv dfb lhf +vlc: bhn krh +lqx: msh bpb rgh +xdh: zfg vmb +ppm: tnr dlm xrv tbs +dxm: qtv mjv qfp +jcp: trs tsp khr pvj +dtl: xmh +pms: vht vtn +vtm: kpd +fxr: slv +tzk: ztq lcs +skf: ngg msk dlm +cnx: snv +btj: cmf sdf rmt +fvd: spx hzc +mrp: zpg mnh lcm +zrv: ppt vdn +ktk: mkh ggm tqd ftp +pjv: lzv +pqg: fqm nnr tlc +mxp: zgd mrp +jqh: sgc hbs +zlc: xsx dss +dnk: kcc mfh lzq +bcv: scz +qkx: jtk +pxc: ftr bnv dqf jkk +ggx: xbd dpl jfv vlh rmr vfc qqg +vrs: hkq +fpk: xqt jpf rdm xbd +rpd: hvl +hcc: rhh vbb skp +lll: ppk qkd zqt qff +brd: prr lss gmj fxg psn +fmh: ckg +trz: lmq pzj +glb: txx ssc +lbk: dqz cmz knk bvm +phr: smx ccb tkf vkq +mkh: gzc nhc plq +jzd: nzs szx hcv +vmh: xkn spq fkf xnd zvc +jfr: xdg pnz rpp +xsz: hgr xmh +jvc: nmd qzh xxl +mbh: lhh gxf +pgv: vzb pqv +qds: mvx ksx znn dqp +lkt: csq +bsh: pzj +pbc: klz krh +qpj: vvl jmc hjx zfx nln +pjz: dsc hzc +jqs: dqb +tmx: xsj nbj +bxh: jfc xgd cmz hhl +pst: gpj mzn +dvz: pnd jrz fnb pnb rkt +dcp: dhp zjf mpl nrs +gsr: bxf vzd jdm hhl +qlb: nkq gjg pvn fbt +cch: fcs ccb rtm +mtb: mkg pnh blc cnx +nhq: pjf vbr dzf lcf +tqt: rts +nlb: ccd mxx +zgm: gpj +bbb: klv jgg xcv vgr +btd: kcr lxx crs kqr lcf mzf ljn +jmj: rdb +bzm: lcb ddz +nxv: qxx xgd hbc +fsk: ppc jlb hqx vvf +ndc: mqd tsp tcx +skp: qpv ckt +rqk: qxf +zqh: zvn +fgq: qtz xsd ggk tzk +hcq: qbz khr fxr +hql: ntq pfb gvb +zcb: xmh +rhn: mfp jjm bbq +rmt: rsq +qcn: vrk qdq stp +jnp: vtn fpd +snt: fmh pvz +dsr: blc zqt dkh +kvn: btj mjk bcb ckg +qqq: sbj klr bpz vzl +gjh: fbc bfr jss +hzn: xtc qsf +bnq: rzn vlc bhc nfs +mfl: pbl dpv gcx +khr: dbd +nrh: ktt ddz hkq +fvf: fmd rsk jtk lrz +qhf: rhh fnz jfc ggm +kvl: fvg vgx gkv bbl +tmb: pvj pbq +dlj: fpb djm +ntt: zdv bjk +qdt: mcv bjj nvb sbh +glr: lxb cxk kmz qrt jvx +mkk: zlc mgf qmb +xgq: mdv zqb +srh: fpd +jhd: xnn hsp pgd +sbn: lfx tzx tkh dgl +nln: csq +knq: nhc csc kzl nfq jrq pvj +qnz: zgm zdv xvv +spq: xbt jgp hph +mpm: pqh xdg +lfg: jnj nzs +clc: fcf +cpm: lrz mqd +hbn: qpv csq fmb +cvj: tbc nfb pfm +mnk: fmh +txx: nbk +ksb: mlf xrv +bpm: txx jkk qfl +kvb: djx +vhf: bjb +rjq: xtd +rtg: gmj +ghv: qjc +zsn: qkd gtg lst +cms: pln czp +fmv: hps spn dqp rjd vtl +rmr: pvf sfd gmn +qqt: lpx xgj ddq +svn: xxr ddz +rzz: xdg mqd ftr thf plq +zfx: xcn glt +hlx: bxl jmj vzb +vpj: qsp +kzp: stv nxf rpb +qtk: csh +mcv: sdp +ghh: jkh mbc +pdq: fcj rzs vch tsk +rtt: trp pjz zjr +fbq: drm tsj rzn cms +jrz: vvn rgh +psx: chz +spn: rbj vsb +qdr: vxn qxn pjv bsb tzz +ctv: hcn vlc ksb cpd +sdx: jff csn gsq vdb +kkl: mpl ksg xbr +mdx: fjm zlq bzv +cmk: jkr qtg qqt dgc dqm zsz +mhg: zqh bxf xmm +tmz: xcn zvx pzv +mhp: ndq pkb mfc +pxq: xmh +tsg: rpx krn ghv fxr +kzm: xqz hrt +bzs: ztq +kgz: scz rhh +xjf: nlb frf bzv bsh +pjj: vrs xnf hls +cds: qbh stv vpj +gkq: xgv klr shz +srs: ptf dpk +rgc: msm trs gsq rlf +lzc: nzc znq nfl vlm +dxh: nzm ptf hcc rlf +gsz: pvz +bsj: bng jgc +tbv: bxm qgg tss +xgv: dqp +rnn: vvl +nbk: ssc +zdd: rcb hcg tsb lxs nfq +cmq: vth rzs rbq qkx +hpd: vdn dpl hql mht +zmq: rnn zxc hnt +mgv: jkf rfh zfx rnn skf +tvf: pjh zxj dxn xdf +prg: dsz dtf +tsb: mss jtr rxv +qfj: vdn gmn mqh flq flp cnd +qfg: kkl njz jtc zjr +qsb: txm rjd gsl ggm +zng: smx zxl +jkq: vzh jjd pfs mzm gjf +srq: fxg kmb xsl lqg +cxl: kqx lcq +tsx: rhv qtp jfr hht +tbs: bjk +gmz: gnr bjf +xbd: gmn rkt +bfq: stb vrc xxr fzm +sgh: lcq dhp rkt mlt +xsd: jbx kmz +hzg: jmh kfs xdl qnf +zgq: xcr hkq +zjr: kpl +zhv: ptm pln +mmg: xqt hls lbs ndz +mpb: chd bjz lrn +lbc: lzg +smq: fdq +fxq: bbq +czl: gkr qmr +kzt: rtg vdq bnh xgh +lhb: hcv nmd +zzj: kpf cbn +vmq: crp hqx gsz +lbs: lnf +brv: cjt tdh zhg kqr mpm +fgs: mbd rqz gmn +jss: rsq cns zst hqn +hjs: kkr cnx kkq sqs mfp +rlq: dlj jgg qjt +tpt: lqs rhd frh +fcj: qrz knk pdg zmp +gcv: ftp mtl ztb qcx +sgc: vkk +mqb: gqr gnx vtm rsk txx +rnq: mmv fzd +tcq: jmj gdn +gzc: zkb +krq: stv kfh xpp rrf +vsq: mpl hqx +zcl: qqt vvf tzp +cpd: hnc +csn: lrz +tqd: nxf +vlf: rqk qgg +hvc: kbs dpf gdv hkx +gzq: qbh thf +pcv: xsd fnb ckg svn +bhc: gzc +jmh: rdb +lkh: zpx jxc bxb xcr +mqr: xkg rns rjp tqd +djc: gpl bvm mxg +hrt: sfn +cxd: dlc kqx lpc vfc +rxn: mlf vlf prf +hzb: bjz +cvs: ncg zcr +klb: bnh +qhg: vch hsr sbj njj +jbx: gcd vml +zbf: qtb dsd mlt +grx: hcb hbc znn rhv +nrs: mnk kvb hfd +bvm: nfs +rqx: thf +zvg: kmh bxv +xcq: gjb mhd +shh: mzm lvv +zpg: kcm fms +dlc: dtn gsz bdv lpc +bbv: tlc lhh +stl: cdt gjg vdb bxp +nvj: sqp nkt xhv bbq +thq: tqt vhf +gnt: fts rbl nbk bxv +tdq: qmb ddb gtm qvb +zmd: cpf tbx vjv +pjh: nll xnf jqs +nlr: gfl tzp fdh xvt +nrt: gtc xdr +qxz: cnx pmv +fcc: ktt znz fxg +gfz: ljg tlk rmt +hsr: tsp zdv jdk +msh: hrt +tnr: pms kxj ddh +gjc: qsp vkh ddh jnz +ttm: vbt lll bdv +kks: vjv pvn +nfl: tsp qvb +bxx: tjs zxl hhs nxr +qzn: qmr +xxl: tvh +gst: nzq kzp xpn +mqh: lgj cxl kfp kvb +bdh: xnf qpq mkg lbb +gnc: pzv lnl txx +lrb: pfs cnn jqs +mtr: xbt rqm ddz +gvb: fqt qxr +flp: rdk rmm fjf +mjc: pzt mxj +chs: lpp gvb fcf +xvt: ltn kzm +pgd: ssk pfm dpk +jfv: jjj rtm +qnp: blb cxk kfp cfn +xdf: hds bfh +hvn: spn hnc jdn +jrc: zmm hzn gnr +mbq: njn +glm: jmm hvf cxk vsc jtc +llv: rqm kvb ndz vdq +jgc: cgx tbc qpg +hjx: fts bpz +vkl: vxn fqm zdj spq clc +rbq: zmm xgv hrd +sbm: hcg +jtr: lcm +cjt: vfn +pgz: cds +xnj: stp +kpk: qgp ngz vkk mkg xcl +jff: nln vht xnj xgd +qdp: fkc vzd zdv hzn +zfz: jgq kxx +mbc: vcp +zcr: bxm txx ncg +zql: bjz dpk qlf +vhx: gzq lhj kcm qhg qct +zpt: blc rsq hbq bpb +drv: fjh xvv spr bnk +kcr: dvg rqk fhl +gmr: pqm mbq lzg +hqn: zzj +nsh: lcb snv jbm +kmf: pjm +sct: dqz qjx tsj +cks: crc jzd hzb xcn znn +cqc: glh srs xjp jkk tlh +qbs: dqf zmp gmz gzc lrn +hmc: lpp kmf bfr +nmg: xhr +pkb: xpf xkb kkq +bnk: gnr +ljl: ksg ztd qqg lhz +tck: xfn mvf gfz vkb +nhc: frh +xsg: jht zxq +nzq: qvb msz +ljn: qsp bnv gpj +kjn: bjf rxd qsf rzm ssl +gck: xqt zgq +qcz: ddh xrl +zsz: rgs rcp +tfc: psl +pjf: tsp +dqj: lst xhv kfq +zdm: bkg rcf vsq pcc hvm nbj +xzj: mbq bcv msm gbr +scg: fdq dqb kxx lpx +njz: rtm ckg +qqc: trl jfr vjv zmq +qct: gsl xrl +ltn: hfd ppt +znd: lcm msm pqh +gbp: zxq sgc jfx pfs +hrd: xxl +pnv: bbl mtl cgx +xmm: csh qkx +pzv: czp +nbj: fkr +xjp: ngr knk pqp +lrr: mtp rbl rpd bnk +gbr: fjh +cvc: fvz tmz mxv rdq +xsl: xpl vkb ddq +dzf: qlf +bgc: pbn zrc xgq gjh +plg: pvj jnz vzd dhl +blv: qqt cth klv xpl +ksh: trt sfs znd qcz +sdf: xxr fpb +tsq: kzp hcn zfd +tsj: xrm +jxj: jmk +bxl: qkd kdg +vcr: jfv lzv +ptm: hnt +jjl: lnm pnh +jkj: pmv dsc mcv cch +tkf: jkh ttm dnf +jnz: bsj +ndz: lxp +hzk: jqh thb kpl +vcz: gtm pkj vfn +jsn: xdh slv xpz msk +dfb: nmg hds +bxm: hbc +tlm: ksx lrz szx +snj: lkt qzn nxf hrv +lch: mdx rtt fcf +dqm: kfq stb +bkg: qff jnf pkh lvv +rpx: qnq zmp +jmr: qgg rfq mvx crc +nkq: xfr khh jmk +fjp: hpd psl rtt hbz +qjd: lnq tmb pnz gbr +dtn: vvf lhh dxp +txm: znq bpz gcx +xrq: ckj frm nkt pgx +zmm: bbl nfb xdz +hcl: hph fkd vzb +qjc: bxv mjq ccj +vvg: vmq djm lpp bmv hbl +tqj: tfc dtf jqh trz rgh xsg +kfh: phs vlm rjp +xph: bhb +bgn: fdq +kdh: frf fcf jpm cnd +tmp: sjk dsx fzd hxr +bll: tqd +pns: xnj kmh mkk trl npk +jjz: bjk +mcl: hmq lrb qrt sgc +fzm: prd mdx pnb +hjh: brq gnj lgj +jtk: tzg +qdx: kmz frf fdh xnf +dsf: qnk gxh nrs fpj +gcg: psn rfp qqp sfd +qnk: pjv fdq bhf +kkt: pqv xqt jrz rlr jjd +snr: xdz qtp vkc +nlj: fzg xxt zxj jpf +dxp: rvq +msv: bgn sbh +tsf: xfr dvg vch +sfn: mfp +rql: tbx pgz zqh +hsn: xqz spx pcb zhm +ctl: bsh mcv jpf cxr +xdz: qzh +cmt: mnk kxt cdp qtz +tsk: lkt ktk pgn +klr: bjk +sfz: knr xnf gdn sjz bmp +bhj: msk dzf +bck: qlg tzd sct pqk +gnj: vhf mfn +rxv: qpg ftp sld +xhj: gkr dlm nmf fdk +zvc: tzp mpx dbn +xtg: vms fvd nlr mcl xjz +njn: jvc +dhl: bdf qgm mqd +ssv: fhv qjx phs xtc +tqz: rtg xvp hxr ktl kfs +vgf: trb gxp nxh +jfp: xph +gqr: gnr sbm dqf +psz: ksg pvz xql +nlf: trp lhz ccb rvq +crj: tbx pst bhj +lfx: trl jmc vjv +mss: jvc svm +dtr: ktt gxt lst +spp: zsn +fbj: gbr rhh chz +pfv: pfs hlx qgp fvd tct dql +pqk: vtl pln +vjt: trs +kvm: xnd xdr +txj: gjb czl lqh tzx frh +dmc: ldk jkf ttg gzd qbh +mlc: zgd gmr xsx +bkj: tcq kvm phr nhr +jql: mdq +nmc: gqm dqf msz +fvm: qpg tsq hbx mhd xmm +mfh: zxz csd smq +nqn: zrv dfb lzh rqm spk +zns: lqr jbj vvn jfp jff +rjp: slv +jfd: qtf kfj scz vsb +ggt: kpd qtk +xtd: tgg jnf +jqj: vcr gzk mbc bbv +glh: rbj rgc sld +sbj: csh jql ckt +npk: zbl znp +hpv: bkb pxq qpq hgk +spr: sfs qzr xhh +bml: bjz rpd +ckj: jht +rpb: tcx gnr +rxc: rcs bxv vmb xrm +dpf: bzv dsx +ftx: qfh ngr plb gpl +pvj: qkp +gcd: fqt lzv +cbv: kks bjf +qgp: mcl dng +pqv: tjn dng +kfj: xbk +jkr: rmm cnd tjk +hgk: jjm pqg +vgr: pvf +tgc: vsk qhn ppl zqv pgv +qkm: xpp bhc pjf tzx lfg szr +gdx: zpg vgn cms khh dhl mrj +knr: kvt vzg fpb ppt +njj: xvv xpp rqx +bcb: pvf gfl +pgn: stv +pzt: csd +gxh: hrt fjf dcb +cfh: prd rgs kmf kzm +ckf: fxq lqx dxr klk +frq: zqb rmm smg pgv +gqn: tsk lfb vlm fdk jnz +kzh: pvn fnz hbn ckv +zxc: lbk chd szx pst +nmf: xrm rhv dqp qlg +vdn: qmj +xfn: qfr bsh xpf +sqb: lnl xgn dpv +lhm: cfk xbz +lfb: qxx jdm lxs +dcf: lhh fcc zng +xcg: vfn grx xrl qfh +gbl: crc jql tkh +mgf: rrf qtk lbc vkh +jbj: mmv thq mht nlb +lfc: jlb +dpg: hgx krn ptz qjh +dsx: prh +crl: zdd krn dqp qbz +dcb: hjh csd +xtk: tbc vtm +trb: jjd +xqg: jgg pjj tjg +nzk: svm +rzs: msk pqk +fvv: dxn xgq hbs lzh frm gzk lbh +sfp: hvl cpf ptm +mtf: drm ggm qhf tsz +ntq: dsc sdp prr +jdm: ssk +zpx: sgh +qtx: hhj tcg rvq +zpl: fqm xkb +hvf: vxd pnb xxv dpl fbd +xkn: qfr dnk hgk +thj: nmg dxp jkh bhb bzm +pkm: qjh gnx nfq +rlr: zlq jkh zxj +xjn: dtf mhp +xbt: zxq +jnj: hcv +zvx: hfk +pcc: tcg dqm +ctx: hvn tnr zdd mzn +vsc: cmf mjv +kdg: mjk dlj +bhx: tbs rpp ftx +bcz: zvn ptm znp qqc +gjg: lcf mfl +ppp: fcc vgv prg njz +qtp: qkv xhn +qtz: zbf zcb +lcs: xbt +dxn: jjl +bmp: xhr +qvm: stv vlq kpd tss +djb: mxq xjz bcb +hbz: mzq zqb dtr dsr +htj: qff bfr bsb hqx +krh: tdh tzg \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..6ae7ffa --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +networkx \ No newline at end of file diff --git a/src/bin/day21.rs b/src/bin/day21.rs deleted file mode 100644 index e69de29..0000000