diff --git a/2023/d22/ex1/ex1.py b/2023/d22/ex1/ex1.py deleted file mode 100755 index 1e2eaa5..0000000 --- a/2023/d22/ex1/ex1.py +++ /dev/null @@ -1,128 +0,0 @@ -#!/usr/bin/env python - -import dataclasses -import sys -from collections import defaultdict -from collections.abc import Iterator -from typing import NamedTuple - - -def sign(x: int) -> int: - if x == 0: - return 0 - return 1 if x > 0 else -1 - - -class Point(NamedTuple): - x: int - y: int - z: int - - def fall(self, delta: int = 0) -> "Point": - assert delta <= self.z # Sanity check - return self._replace(z=self.z - delta) - - -@dataclasses.dataclass -class Brick: - top_left: Point - bot_right: Point - - def __post_init__(self) -> None: - assert self.top_left.z >= self.bot_right.z # Sanity check - - def orientation(self) -> Point: - return Point( - sign(self.bot_right.x - self.top_left.x), - sign(self.bot_right.y - self.top_left.y), - sign(self.bot_right.z - self.top_left.z), - ) - - def blocks(self) -> Iterator[Point]: - p = self.top_left - dx, dy, dz = self.orientation() - while p != self.bot_right: - yield p - p = Point(p.x + dx, p.y + dy, p.z + dz) - yield self.bot_right - - def fall(self, delta: int = 0) -> "Brick": - assert delta >= 0 # Sanity check - return Brick(self.top_left.fall(delta), self.bot_right.fall(delta)) - - -class TowerMap(NamedTuple): - supports: dict[int, set[int]] - supported_by: dict[int, set[int]] - num_bricks: int - - @classmethod - def compute_support(cls, tower: dict[Point, int]) -> "TowerMap": - supports: dict[int, set[int]] = defaultdict(set) - supported_by: dict[int, set[int]] = defaultdict(set) - - for p, i in tower.items(): - under = p.fall(1) - support = tower.get(under) - # No supporting brick - if support is None: - continue - # Don't count the brick as supporting itself - if support == i: - continue - supports[support].add(i) - supported_by[i].add(support) - - return cls( - supports=dict(supports), - supported_by=dict(supported_by), - num_bricks=max(supports.keys() | supported_by.keys()) + 1, - ) - - -def solve(input: list[str]) -> int: - def parse_brick(line: str) -> Brick: - a, b = (Point._make(map(int, p.split(","))) for p in line.split("~")) - if a < b: - a, b = b, a - return Brick(a, b) - - # Returns which point in space belongs to which brick index - def drop(snapshots: list[Brick]) -> dict[Point, int]: - # Re-order by lowest height - snapshots = sorted(snapshots, key=lambda b: b.bot_right.z) - # By default the ground is at 0, index with Point(p.x, p.y, 0) - heights: dict[Point, int] = defaultdict(int) - res: dict[Point, int] = {} - - for i, brick in enumerate(snapshots): - z = max(heights[p.fall(p.z)] for p in brick.blocks()) + 1 - assert brick.bot_right.z >= z # Sanity check - delta = brick.bot_right.z - z # Drop it to the top of the pile - brick = brick.fall(delta) - # Record the height of the brick for every block composing it - for p in brick.blocks(): - res[p] = i - heights[p.fall(p.z)] = brick.top_left.z - - return res - - def can_disintegrate(tower_map: TowerMap, brick: int) -> bool: - for on_top in tower_map.supports.get(brick, set()): - if len(tower_map.supported_by[on_top]) == 1: - return False - return True - - snapshots = [parse_brick(line) for line in input] - tower = drop(snapshots) - tower_map = TowerMap.compute_support(tower) - return sum(can_disintegrate(tower_map, i) for i in range(tower_map.num_bricks)) - - -def main() -> None: - input = sys.stdin.read().splitlines() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2023/d22/ex1/input b/2023/d22/ex1/input deleted file mode 100644 index 6209227..0000000 --- a/2023/d22/ex1/input +++ /dev/null @@ -1,1233 +0,0 @@ -4,6,74~4,6,76 -0,3,277~0,4,277 -7,4,124~7,6,124 -5,1,268~5,1,269 -6,8,273~6,8,274 -8,0,268~8,0,270 -5,5,84~5,7,84 -1,9,196~3,9,196 -7,3,214~9,3,214 -6,2,171~8,2,171 -6,4,122~7,4,122 -1,2,177~1,5,177 -5,1,31~5,2,31 -1,3,196~1,6,196 -0,7,93~0,8,93 -0,5,267~0,6,267 -7,2,256~9,2,256 -3,8,40~4,8,40 -3,7,289~6,7,289 -7,5,269~7,7,269 -8,1,191~8,3,191 -3,0,190~5,0,190 -4,8,278~6,8,278 -8,6,25~8,9,25 -1,1,109~1,4,109 -4,6,270~4,7,270 -7,3,302~7,3,304 -6,0,108~8,0,108 -8,1,87~8,1,88 -6,6,94~6,8,94 -4,6,137~7,6,137 -3,4,20~3,7,20 -6,8,206~9,8,206 -6,9,266~8,9,266 -3,0,9~3,1,9 -9,0,82~9,3,82 -0,5,210~0,5,213 -5,5,303~7,5,303 -5,9,202~7,9,202 -8,3,256~8,6,256 -4,1,273~4,4,273 -6,6,1~6,7,1 -4,5,42~4,7,42 -5,6,183~7,6,183 -4,0,261~4,2,261 -3,3,271~5,3,271 -6,1,76~7,1,76 -5,2,59~7,2,59 -6,5,203~8,5,203 -4,6,278~6,6,278 -1,8,271~4,8,271 -6,4,279~7,4,279 -2,6,78~5,6,78 -9,7,112~9,9,112 -9,7,110~9,8,110 -6,2,208~9,2,208 -4,3,89~4,6,89 -2,7,93~2,9,93 -1,3,259~1,3,261 -5,3,45~7,3,45 -0,6,41~2,6,41 -3,8,42~5,8,42 -1,0,179~1,2,179 -1,1,283~3,1,283 -1,3,178~3,3,178 -3,5,182~3,7,182 -6,6,111~6,8,111 -1,0,106~1,2,106 -7,2,299~7,4,299 -8,7,88~8,9,88 -2,5,184~5,5,184 -1,0,2~2,0,2 -4,4,165~4,4,167 -1,9,116~2,9,116 -3,4,195~4,4,195 -8,5,150~8,7,150 -9,7,90~9,9,90 -1,7,31~1,9,31 -4,2,63~4,5,63 -5,0,271~5,0,274 -3,2,158~3,3,158 -4,4,150~4,5,150 -2,1,188~5,1,188 -2,2,35~2,4,35 -1,0,219~1,2,219 -1,6,98~3,6,98 -5,4,213~5,5,213 -7,1,120~7,3,120 -4,0,222~6,0,222 -7,2,112~9,2,112 -1,2,200~4,2,200 -2,3,165~2,4,165 -1,3,112~2,3,112 -0,3,189~2,3,189 -6,5,103~8,5,103 -2,6,176~3,6,176 -0,6,32~2,6,32 -2,2,297~2,4,297 -6,3,73~7,3,73 -8,4,231~8,6,231 -5,2,57~7,2,57 -8,6,180~8,9,180 -6,9,282~7,9,282 -0,0,65~0,2,65 -2,7,276~2,8,276 -1,8,191~2,8,191 -4,0,187~4,2,187 -5,6,214~8,6,214 -8,7,267~8,8,267 -2,1,246~4,1,246 -7,6,40~7,8,40 -6,2,248~6,4,248 -3,6,23~4,6,23 -9,6,181~9,8,181 -0,7,112~2,7,112 -3,4,147~4,4,147 -1,0,89~3,0,89 -5,2,172~7,2,172 -6,6,110~8,6,110 -6,5,133~6,7,133 -3,3,84~5,3,84 -9,4,128~9,6,128 -6,6,206~6,7,206 -7,2,131~7,3,131 -7,8,267~7,9,267 -7,1,12~7,3,12 -0,6,102~0,9,102 -2,8,96~4,8,96 -3,9,75~3,9,77 -3,0,70~3,3,70 -8,5,107~8,7,107 -4,7,173~5,7,173 -5,7,136~7,7,136 -1,1,57~2,1,57 -8,9,216~8,9,219 -3,4,267~3,6,267 -4,6,185~5,6,185 -2,2,16~2,5,16 -6,4,289~6,6,289 -1,5,255~3,5,255 -0,7,189~2,7,189 -7,4,234~7,7,234 -0,7,5~0,9,5 -0,5,214~0,5,217 -5,3,61~5,5,61 -1,9,193~3,9,193 -3,2,262~6,2,262 -5,4,291~5,5,291 -4,8,17~7,8,17 -9,6,45~9,7,45 -1,5,279~3,5,279 -0,1,7~0,2,7 -6,4,208~9,4,208 -0,3,49~0,6,49 -3,6,58~3,6,60 -6,1,55~8,1,55 -3,6,25~4,6,25 -3,6,57~5,6,57 -0,1,188~0,4,188 -0,0,262~0,1,262 -7,9,214~9,9,214 -9,6,70~9,7,70 -3,4,131~5,4,131 -5,7,224~5,9,224 -1,9,33~3,9,33 -5,1,185~5,4,185 -9,2,191~9,4,191 -2,5,201~5,5,201 -2,6,61~4,6,61 -8,7,215~9,7,215 -9,0,217~9,1,217 -3,2,56~3,4,56 -0,1,215~0,3,215 -1,4,45~1,6,45 -2,0,32~4,0,32 -5,9,173~7,9,173 -8,1,168~8,3,168 -5,5,167~6,5,167 -1,6,35~4,6,35 -2,6,54~4,6,54 -9,4,254~9,7,254 -7,0,80~8,0,80 -0,1,57~0,2,57 -5,9,276~5,9,278 -3,0,193~5,0,193 -0,6,202~3,6,202 -5,6,288~7,6,288 -0,7,218~0,7,219 -3,1,115~6,1,115 -0,3,276~2,3,276 -6,6,227~6,8,227 -8,4,224~8,7,224 -5,3,161~5,5,161 -4,3,26~6,3,26 -7,5,315~9,5,315 -6,6,41~9,6,41 -6,2,54~6,4,54 -6,9,279~7,9,279 -2,2,270~2,4,270 -3,7,84~3,8,84 -0,6,266~1,6,266 -2,4,164~4,4,164 -7,5,212~7,7,212 -6,2,75~6,2,76 -1,7,284~2,7,284 -6,7,300~7,7,300 -8,3,258~8,5,258 -7,8,205~9,8,205 -5,4,251~5,5,251 -1,2,205~1,4,205 -6,0,137~6,1,137 -1,7,102~2,7,102 -5,5,202~5,7,202 -7,7,179~7,9,179 -4,5,174~4,7,174 -7,6,13~7,8,13 -4,6,212~4,8,212 -0,7,222~0,8,222 -6,7,21~8,7,21 -7,5,17~9,5,17 -4,0,29~4,2,29 -1,7,253~1,7,254 -2,6,169~2,6,171 -1,5,164~4,5,164 -3,2,247~6,2,247 -3,3,295~3,3,296 -8,2,15~9,2,15 -2,4,34~2,6,34 -7,2,128~7,5,128 -0,4,189~3,4,189 -0,2,56~0,5,56 -1,7,114~1,9,114 -1,4,102~3,4,102 -3,2,272~3,4,272 -6,5,294~7,5,294 -2,3,81~4,3,81 -9,2,253~9,3,253 -5,2,43~5,4,43 -7,2,301~7,3,301 -6,5,320~8,5,320 -3,7,22~3,9,22 -2,8,35~5,8,35 -8,5,295~9,5,295 -6,9,68~7,9,68 -6,1,234~6,3,234 -5,8,67~7,8,67 -5,0,243~7,0,243 -5,0,118~5,2,118 -3,6,9~5,6,9 -4,3,275~4,6,275 -3,2,127~4,2,127 -6,6,247~6,8,247 -3,4,124~6,4,124 -4,3,274~5,3,274 -1,3,91~1,5,91 -4,6,64~4,8,64 -0,5,270~0,8,270 -4,4,103~6,4,103 -5,5,249~7,5,249 -2,0,52~5,0,52 -4,2,189~4,5,189 -8,1,241~8,2,241 -1,3,294~3,3,294 -8,0,1~8,0,2 -6,5,165~6,9,165 -3,5,41~3,7,41 -3,3,254~3,5,254 -2,6,105~2,7,105 -3,3,106~4,3,106 -7,9,268~9,9,268 -2,5,81~2,8,81 -0,6,199~0,8,199 -3,1,212~3,4,212 -5,5,63~5,6,63 -5,2,49~6,2,49 -6,8,39~6,9,39 -8,9,7~8,9,9 -7,7,24~7,9,24 -5,8,47~8,8,47 -5,5,187~5,5,189 -8,6,273~8,9,273 -8,9,185~9,9,185 -4,6,171~4,8,171 -2,7,191~4,7,191 -2,0,168~2,3,168 -5,1,68~5,3,68 -7,6,91~7,9,91 -8,1,13~8,3,13 -6,2,202~6,3,202 -6,0,200~6,1,200 -4,3,252~4,4,252 -5,0,93~5,2,93 -7,6,237~7,8,237 -0,8,33~2,8,33 -0,0,86~0,2,86 -8,6,226~8,6,229 -0,4,1~2,4,1 -2,0,122~2,3,122 -5,3,69~8,3,69 -2,8,46~4,8,46 -6,5,66~9,5,66 -7,6,294~9,6,294 -8,6,113~8,8,113 -5,1,163~5,4,163 -1,6,269~4,6,269 -8,6,207~8,7,207 -7,4,213~9,4,213 -2,6,22~2,8,22 -0,5,83~0,8,83 -0,2,210~0,4,210 -6,6,167~6,8,167 -5,4,171~7,4,171 -0,0,281~4,0,281 -5,0,270~5,2,270 -6,2,118~9,2,118 -5,0,53~6,0,53 -4,2,13~4,4,13 -2,6,52~5,6,52 -1,5,203~4,5,203 -7,5,14~7,7,14 -7,2,258~7,2,260 -6,2,193~6,3,193 -7,9,180~7,9,181 -6,3,307~6,5,307 -8,4,281~8,6,281 -4,2,107~7,2,107 -6,6,205~8,6,205 -6,7,51~6,8,51 -8,5,5~8,8,5 -9,6,295~9,7,295 -8,2,85~8,4,85 -0,2,268~0,5,268 -3,3,173~5,3,173 -8,3,285~8,5,285 -5,9,175~7,9,175 -3,7,194~5,7,194 -9,3,256~9,5,256 -9,1,80~9,4,80 -6,1,100~6,3,100 -6,6,88~8,6,88 -2,7,15~5,7,15 -2,2,180~2,5,180 -0,8,70~0,9,70 -0,2,221~0,3,221 -7,7,16~9,7,16 -3,1,101~5,1,101 -8,8,29~9,8,29 -3,0,80~5,0,80 -2,3,291~4,3,291 -4,6,243~7,6,243 -1,0,118~4,0,118 -4,2,78~4,5,78 -5,9,67~7,9,67 -1,8,192~4,8,192 -5,3,259~5,5,259 -6,4,5~8,4,5 -5,4,132~5,5,132 -0,7,85~0,9,85 -1,9,201~4,9,201 -8,6,24~8,7,24 -2,1,249~3,1,249 -0,5,209~0,8,209 -7,4,317~7,6,317 -0,5,37~2,5,37 -3,5,185~5,5,185 -7,5,292~7,7,292 -6,2,266~6,3,266 -1,3,42~1,3,44 -4,6,245~4,8,245 -1,3,45~2,3,45 -7,5,167~7,6,167 -4,8,3~4,8,3 -5,4,205~7,4,205 -4,5,308~7,5,308 -2,0,77~5,0,77 -5,1,47~5,3,47 -9,2,193~9,4,193 -1,9,194~4,9,194 -4,7,12~4,9,12 -3,2,211~3,5,211 -4,7,182~6,7,182 -7,1,14~9,1,14 -0,6,99~0,7,99 -8,0,273~8,1,273 -2,4,268~4,4,268 -5,2,28~5,2,28 -6,9,19~8,9,19 -1,3,55~1,5,55 -6,1,245~6,4,245 -4,8,214~4,8,216 -3,2,188~3,2,190 -5,9,17~7,9,17 -1,8,284~1,9,284 -9,7,269~9,9,269 -4,7,200~4,9,200 -0,4,184~0,7,184 -5,2,50~5,4,50 -9,6,108~9,9,108 -4,0,277~4,1,277 -6,6,220~6,8,220 -6,3,251~6,5,251 -1,0,240~1,4,240 -0,0,199~0,4,199 -4,1,139~5,1,139 -2,4,291~4,4,291 -2,4,294~2,6,294 -5,6,73~8,6,73 -0,6,62~0,8,62 -5,6,167~5,8,167 -5,5,135~5,5,138 -0,8,282~0,9,282 -7,4,274~7,6,274 -7,2,185~9,2,185 -4,3,269~5,3,269 -6,4,262~6,4,265 -0,9,104~0,9,106 -3,5,128~3,5,129 -5,5,205~8,5,205 -8,3,147~8,5,147 -2,5,168~2,6,168 -6,4,126~6,4,128 -4,0,311~8,0,311 -6,0,211~6,3,211 -6,1,185~6,2,185 -6,3,290~7,3,290 -6,9,233~6,9,234 -5,1,244~5,1,247 -4,2,249~4,3,249 -0,0,123~2,0,123 -1,2,182~1,3,182 -7,0,140~7,2,140 -8,8,85~8,9,85 -6,0,14~6,3,14 -0,4,181~0,7,181 -1,4,197~1,7,197 -3,0,76~3,2,76 -7,5,131~8,5,131 -7,4,77~7,7,77 -0,7,283~1,7,283 -5,0,205~8,0,205 -3,6,155~3,8,155 -8,6,68~8,6,70 -6,0,254~7,0,254 -7,3,126~9,3,126 -1,7,94~4,7,94 -8,3,11~8,6,11 -5,6,45~5,8,45 -8,4,86~8,7,86 -7,8,292~9,8,292 -2,9,227~5,9,227 -1,7,108~4,7,108 -7,0,253~7,2,253 -2,4,167~2,7,167 -3,6,135~6,6,135 -3,7,287~6,7,287 -4,2,291~5,2,291 -5,5,269~6,5,269 -7,2,141~7,4,141 -4,9,21~6,9,21 -1,5,22~1,5,25 -3,8,296~3,8,298 -1,7,111~1,8,111 -0,9,217~1,9,217 -7,4,79~9,4,79 -0,6,207~0,8,207 -3,4,209~3,5,209 -3,4,152~3,6,152 -2,5,20~2,7,20 -7,0,187~7,3,187 -5,4,129~5,6,129 -8,1,254~8,1,257 -2,0,106~3,0,106 -6,5,248~8,5,248 -5,8,92~7,8,92 -9,6,274~9,8,274 -6,2,121~6,4,121 -4,0,112~4,2,112 -3,0,63~3,2,63 -1,5,239~1,6,239 -0,6,7~0,8,7 -6,7,135~8,7,135 -6,7,67~9,7,67 -1,2,83~1,5,83 -6,7,240~7,7,240 -7,5,8~9,5,8 -4,1,23~4,4,23 -3,2,277~3,2,279 -4,0,219~4,2,219 -4,1,237~6,1,237 -1,6,280~1,7,280 -2,4,197~2,5,197 -6,9,237~9,9,237 -7,8,70~8,8,70 -0,4,180~1,4,180 -4,6,180~5,6,180 -0,5,259~4,5,259 -5,2,236~7,2,236 -7,9,98~8,9,98 -0,8,88~1,8,88 -1,0,80~2,0,80 -9,2,129~9,3,129 -6,5,282~8,5,282 -9,5,282~9,5,285 -6,6,223~8,6,223 -6,6,268~6,8,268 -7,9,65~9,9,65 -6,0,150~6,0,152 -5,3,231~6,3,231 -2,1,99~4,1,99 -7,0,298~7,3,298 -2,8,198~2,8,199 -5,1,95~5,3,95 -8,4,13~8,4,15 -2,0,195~3,0,195 -5,8,2~8,8,2 -7,2,1~7,4,1 -1,6,101~3,6,101 -9,3,235~9,5,235 -9,5,105~9,8,105 -1,5,126~3,5,126 -4,7,279~7,7,279 -6,2,252~6,3,252 -7,4,32~7,6,32 -2,8,114~4,8,114 -4,2,309~4,4,309 -8,2,50~8,2,50 -0,0,64~3,0,64 -2,0,213~2,1,213 -7,5,79~7,7,79 -9,3,9~9,3,12 -9,6,42~9,7,42 -0,3,82~2,3,82 -7,5,313~7,6,313 -4,3,60~4,5,60 -0,8,203~2,8,203 -6,1,1~8,1,1 -6,1,52~8,1,52 -3,2,87~3,5,87 -6,7,282~8,7,282 -1,2,88~3,2,88 -3,7,264~3,8,264 -1,0,217~1,2,217 -5,7,284~7,7,284 -7,2,269~7,2,271 -7,4,278~9,4,278 -0,9,2~2,9,2 -2,2,272~2,4,272 -2,2,260~5,2,260 -1,6,278~1,8,278 -1,3,48~1,4,48 -2,2,52~4,2,52 -5,6,300~6,6,300 -6,7,33~8,7,33 -2,5,75~4,5,75 -1,8,277~1,9,277 -1,5,270~1,6,270 -7,3,60~7,4,60 -7,8,203~7,9,203 -5,7,208~5,9,208 -3,1,240~4,1,240 -4,7,86~4,7,90 -8,2,49~8,4,49 -9,3,127~9,4,127 -1,0,216~4,0,216 -5,1,311~7,1,311 -4,1,243~6,1,243 -9,2,55~9,4,55 -5,0,143~8,0,143 -0,3,212~0,4,212 -5,6,239~5,6,241 -0,4,135~2,4,135 -1,7,251~3,7,251 -0,0,218~0,2,218 -5,8,271~6,8,271 -1,5,199~3,5,199 -9,1,195~9,2,195 -3,0,11~3,0,13 -2,3,171~4,3,171 -2,7,5~4,7,5 -7,7,289~7,8,289 -6,6,235~6,7,235 -6,4,57~9,4,57 -2,3,124~2,5,124 -0,7,100~3,7,100 -2,9,34~5,9,34 -5,2,256~5,2,258 -0,6,203~3,6,203 -5,1,208~5,4,208 -0,3,271~0,4,271 -6,0,310~6,3,310 -2,2,109~4,2,109 -3,4,192~3,4,192 -9,0,215~9,2,215 -4,0,136~4,3,136 -4,4,41~6,4,41 -4,7,83~7,7,83 -2,3,22~4,3,22 -5,7,175~7,7,175 -6,6,170~6,9,170 -3,5,46~3,7,46 -7,4,48~7,6,48 -9,0,286~9,1,286 -2,2,278~2,2,280 -4,2,125~4,4,125 -5,3,301~5,6,301 -0,8,67~2,8,67 -3,1,72~3,1,74 -0,3,174~2,3,174 -8,0,146~9,0,146 -7,0,189~7,2,189 -5,2,209~7,2,209 -6,6,84~6,8,84 -2,6,190~2,9,190 -4,7,99~4,9,99 -1,7,43~3,7,43 -8,5,267~8,6,267 -5,7,281~8,7,281 -5,0,210~5,2,210 -3,9,268~3,9,270 -8,5,134~8,5,136 -6,1,214~8,1,214 -8,1,70~8,3,70 -2,1,21~2,4,21 -8,8,4~8,9,4 -8,5,249~9,5,249 -3,0,208~3,2,208 -4,7,41~4,9,41 -5,3,97~6,3,97 -8,3,312~8,5,312 -2,0,33~2,0,36 -7,3,192~7,4,192 -5,5,66~5,5,67 -9,1,211~9,2,211 -5,4,294~5,4,296 -9,3,279~9,5,279 -8,3,82~8,5,82 -5,3,65~5,5,65 -4,4,11~4,6,11 -0,1,66~2,1,66 -4,6,186~4,6,186 -2,2,183~2,2,185 -4,5,294~5,5,294 -4,0,105~7,0,105 -4,0,270~4,1,270 -6,5,77~6,8,77 -8,6,264~8,7,264 -1,0,115~4,0,115 -7,2,194~7,2,196 -3,5,77~3,5,77 -4,9,265~6,9,265 -5,7,263~5,9,263 -6,1,216~6,4,216 -6,8,49~8,8,49 -6,5,297~6,7,297 -6,7,178~9,7,178 -1,4,26~1,6,26 -5,6,60~8,6,60 -5,2,103~6,2,103 -5,6,170~5,6,173 -8,4,270~8,6,270 -4,2,26~7,2,26 -4,7,167~4,7,169 -4,5,59~5,5,59 -6,4,45~9,4,45 -6,0,51~6,2,51 -0,7,89~3,7,89 -3,3,28~3,4,28 -0,0,128~0,0,128 -1,6,231~4,6,231 -6,3,284~9,3,284 -6,4,202~6,6,202 -7,5,113~7,6,113 -0,4,54~1,4,54 -1,0,228~2,0,228 -2,4,156~4,4,156 -6,2,2~6,4,2 -8,4,141~8,5,141 -2,8,86~4,8,86 -0,7,9~0,9,9 -6,2,223~8,2,223 -3,5,253~5,5,253 -1,4,235~3,4,235 -6,9,198~6,9,201 -1,6,241~3,6,241 -5,5,101~5,7,101 -2,8,14~6,8,14 -4,3,124~6,3,124 -7,4,144~7,4,147 -8,6,138~8,8,138 -1,2,210~1,4,210 -6,3,190~8,3,190 -3,6,92~3,7,92 -1,3,93~2,3,93 -5,9,230~7,9,230 -2,7,42~3,7,42 -4,9,230~4,9,231 -5,8,274~5,9,274 -6,5,179~6,7,179 -0,8,281~2,8,281 -1,4,199~1,4,199 -8,1,313~8,4,313 -0,0,1~0,2,1 -5,7,205~7,7,205 -1,7,198~1,7,201 -4,3,260~4,5,260 -2,6,111~2,8,111 -3,6,291~5,6,291 -4,1,89~4,2,89 -3,1,86~3,3,86 -0,5,57~0,8,57 -3,1,62~4,1,62 -9,1,5~9,3,5 -8,4,47~8,6,47 -4,7,206~5,7,206 -5,6,236~5,8,236 -0,5,186~0,7,186 -7,2,193~8,2,193 -7,5,286~7,7,286 -4,5,58~4,6,58 -3,5,22~4,5,22 -0,3,36~2,3,36 -0,0,125~1,0,125 -5,1,70~5,2,70 -3,2,54~3,5,54 -0,5,1~0,6,1 -7,2,227~7,4,227 -7,5,5~7,8,5 -2,0,226~3,0,226 -5,0,246~7,0,246 -3,1,43~3,2,43 -0,5,206~0,7,206 -2,0,225~2,2,225 -3,4,233~3,6,233 -4,4,36~4,7,36 -3,2,275~3,4,275 -9,1,63~9,4,63 -0,3,88~0,5,88 -3,1,225~3,3,225 -6,4,291~9,4,291 -6,5,226~6,7,226 -1,4,296~2,4,296 -3,1,96~6,1,96 -0,8,198~1,8,198 -1,8,230~1,9,230 -7,0,220~7,1,220 -4,4,304~5,4,304 -0,1,282~0,3,282 -3,3,149~3,4,149 -3,1,34~5,1,34 -4,1,207~4,3,207 -0,1,124~3,1,124 -0,3,208~1,3,208 -6,6,75~8,6,75 -7,6,62~7,9,62 -1,4,237~1,6,237 -6,2,239~8,2,239 -5,2,310~5,4,310 -7,2,114~7,3,114 -5,7,18~6,7,18 -7,5,250~7,8,250 -5,1,3~5,4,3 -3,3,155~6,3,155 -8,4,277~8,7,277 -4,3,132~4,3,134 -4,3,263~4,3,263 -2,1,315~5,1,315 -8,8,28~9,8,28 -3,9,100~5,9,100 -1,0,105~3,0,105 -7,7,64~7,8,64 -0,2,40~3,2,40 -0,0,104~2,0,104 -8,0,207~8,2,207 -4,1,133~6,1,133 -3,2,183~7,2,183 -3,7,2~3,7,2 -4,7,70~7,7,70 -7,6,252~8,6,252 -8,5,165~8,6,165 -1,9,236~3,9,236 -4,0,50~4,3,50 -9,3,215~9,4,215 -4,8,37~7,8,37 -8,1,10~8,2,10 -6,7,183~6,8,183 -2,2,114~5,2,114 -6,5,104~9,5,104 -5,4,51~5,6,51 -4,5,165~4,8,165 -6,1,264~6,3,264 -7,1,255~7,1,257 -9,0,7~9,4,7 -5,9,94~7,9,94 -4,3,262~7,3,262 -5,1,201~7,1,201 -4,8,238~5,8,238 -4,7,267~6,7,267 -4,1,55~4,3,55 -3,3,154~3,5,154 -9,6,213~9,9,213 -6,1,167~6,4,167 -8,6,209~8,8,209 -3,4,25~4,4,25 -5,2,225~8,2,225 -2,7,248~4,7,248 -4,4,72~4,6,72 -8,0,289~9,0,289 -0,3,257~3,3,257 -5,2,62~6,2,62 -9,4,86~9,4,88 -0,5,257~2,5,257 -5,5,211~6,5,211 -5,9,231~6,9,231 -0,9,213~0,9,216 -9,0,218~9,0,219 -0,6,52~0,8,52 -5,3,289~5,6,289 -1,6,43~3,6,43 -6,7,237~6,8,237 -8,7,80~8,9,80 -2,2,222~4,2,222 -4,6,7~4,8,7 -8,0,264~8,0,265 -2,0,101~2,2,101 -1,5,79~3,5,79 -5,5,262~6,5,262 -3,3,73~3,4,73 -8,6,63~8,8,63 -2,3,19~5,3,19 -4,3,286~6,3,286 -4,4,161~4,7,161 -2,6,225~6,6,225 -0,7,212~0,9,212 -4,9,197~6,9,197 -6,9,71~6,9,75 -6,4,52~6,6,52 -5,2,294~6,2,294 -5,3,165~5,5,165 -8,6,116~8,8,116 -5,2,253~5,4,253 -4,6,136~5,6,136 -6,0,203~6,3,203 -4,6,233~7,6,233 -9,1,212~9,2,212 -6,1,247~9,1,247 -7,7,277~7,9,277 -7,6,255~7,7,255 -1,4,179~3,4,179 -1,1,222~3,1,222 -0,0,201~0,2,201 -8,3,36~8,6,36 -0,7,272~0,9,272 -4,0,56~6,0,56 -4,5,45~4,6,45 -2,6,270~2,8,270 -3,5,43~5,5,43 -9,3,316~9,6,316 -5,6,164~5,9,164 -3,4,228~3,6,228 -8,9,239~9,9,239 -6,5,4~6,7,4 -1,2,135~1,2,136 -6,2,13~6,3,13 -1,1,60~1,1,61 -3,0,187~3,2,187 -4,1,8~7,1,8 -9,2,282~9,4,282 -1,7,17~4,7,17 -8,8,64~9,8,64 -9,6,272~9,8,272 -1,3,297~1,5,297 -1,1,6~5,1,6 -7,0,240~7,2,240 -4,0,33~6,0,33 -2,7,25~2,7,27 -8,4,9~8,6,9 -0,7,96~0,9,96 -6,5,209~9,5,209 -3,3,307~5,3,307 -3,7,211~5,7,211 -4,2,87~4,4,87 -5,2,73~5,2,73 -4,6,241~4,8,241 -5,6,270~6,6,270 -3,5,23~3,5,25 -6,1,299~6,4,299 -6,0,4~8,0,4 -2,1,204~5,1,204 -4,1,75~6,1,75 -5,2,165~8,2,165 -2,0,229~2,0,231 -4,2,307~5,2,307 -7,0,97~9,0,97 -8,4,16~8,4,18 -4,0,272~4,0,275 -2,1,223~2,3,223 -1,8,274~1,9,274 -5,0,130~5,2,130 -1,8,195~2,8,195 -9,1,9~9,2,9 -7,2,7~7,4,7 -5,2,250~8,2,250 -6,4,285~6,4,287 -1,0,170~4,0,170 -3,3,309~3,6,309 -2,6,264~4,6,264 -3,7,109~5,7,109 -0,7,98~2,7,98 -5,7,239~5,9,239 -0,8,115~2,8,115 -4,4,222~6,4,222 -6,7,110~8,7,110 -4,5,237~4,8,237 -3,2,180~3,4,180 -3,1,312~3,3,312 -9,5,183~9,7,183 -4,7,72~4,8,72 -9,5,258~9,5,260 -2,4,159~5,4,159 -6,1,72~6,4,72 -0,1,261~0,4,261 -0,1,175~0,3,175 -1,2,46~1,5,46 -2,1,224~2,3,224 -2,6,273~2,7,273 -4,0,186~4,3,186 -0,4,51~1,4,51 -6,1,312~7,1,312 -3,7,266~3,9,266 -0,6,80~2,6,80 -3,7,262~5,7,262 -7,3,288~8,3,288 -2,8,200~3,8,200 -1,6,29~1,8,29 -8,1,297~8,2,297 -4,8,217~6,8,217 -5,5,35~8,5,35 -3,5,234~3,7,234 -5,5,3~5,7,3 -4,5,16~6,5,16 -8,3,293~8,5,293 -9,0,188~9,2,188 -2,2,206~2,5,206 -1,6,47~3,6,47 -1,5,1~1,8,1 -7,6,138~7,9,138 -6,9,14~9,9,14 -7,1,139~7,3,139 -1,9,118~1,9,121 -2,8,82~4,8,82 -0,4,197~0,6,197 -4,1,142~4,4,142 -3,7,295~3,9,295 -6,3,230~9,3,230 -3,4,261~3,5,261 -2,6,214~4,6,214 -7,2,230~7,2,233 -7,2,211~7,4,211 -5,6,5~5,7,5 -5,5,164~8,5,164 -2,4,183~5,4,183 -7,8,82~9,8,82 -3,0,90~5,0,90 -4,1,293~4,3,293 -7,7,85~7,9,85 -6,1,220~6,4,220 -6,7,276~8,7,276 -8,1,243~8,5,243 -6,3,101~6,5,101 -0,7,217~0,8,217 -6,0,110~9,0,110 -9,7,89~9,9,89 -3,1,2~3,2,2 -6,5,304~8,5,304 -7,2,28~7,4,28 -2,5,14~4,5,14 -9,1,238~9,3,238 -7,2,61~9,2,61 -8,2,210~9,2,210 -2,4,100~5,4,100 -7,0,78~7,2,78 -0,9,10~0,9,13 -3,8,193~5,8,193 -7,0,219~8,0,219 -9,7,296~9,7,297 -1,7,101~4,7,101 -1,7,39~4,7,39 -8,2,1~8,2,3 -8,1,86~8,3,86 -8,2,262~8,2,264 -6,3,196~6,5,196 -2,1,282~3,1,282 -2,1,277~2,3,277 -0,7,90~3,7,90 -1,5,92~1,5,94 -2,6,62~5,6,62 -5,4,284~8,4,284 -4,6,177~4,7,177 -5,1,136~7,1,136 -3,3,187~4,3,187 -6,7,27~9,7,27 -2,5,83~2,6,83 -9,4,46~9,4,49 -3,3,179~4,3,179 -7,0,130~9,0,130 -1,2,139~1,4,139 -0,4,185~0,6,185 -3,6,74~3,9,74 -1,8,233~1,8,235 -5,4,256~5,6,256 -9,7,86~9,7,86 -1,3,81~1,5,81 -9,3,233~9,4,233 -3,9,296~6,9,296 -7,6,30~7,8,30 -3,0,267~5,0,267 -0,3,44~0,6,44 -0,6,193~3,6,193 -5,6,19~5,7,19 -0,2,91~0,4,91 -3,9,230~3,9,233 -6,1,79~7,1,79 -1,2,130~3,2,130 -6,2,169~6,4,169 -7,6,97~7,9,97 -7,2,266~7,3,266 -7,8,141~9,8,141 -1,3,88~1,7,88 -0,6,95~0,8,95 -7,9,100~7,9,101 -9,1,2~9,1,4 -6,5,267~7,5,267 -6,5,37~6,6,37 -8,0,261~8,3,261 -5,8,3~6,8,3 -0,6,174~2,6,174 -3,7,24~3,8,24 -4,8,223~6,8,223 -5,0,275~6,0,275 -6,4,44~7,4,44 -1,1,206~3,1,206 -5,2,21~5,3,21 -3,6,93~3,6,95 -0,6,38~4,6,38 -8,1,253~8,4,253 -9,4,133~9,6,133 -0,6,195~3,6,195 -6,8,168~8,8,168 -6,2,296~8,2,296 -4,6,131~7,6,131 -4,8,10~6,8,10 -3,3,189~3,3,191 -9,1,258~9,2,258 -3,0,197~3,0,200 -4,0,223~6,0,223 -3,2,197~3,4,197 -1,2,89~2,2,89 -3,8,272~4,8,272 -7,2,264~7,3,264 -0,1,4~3,1,4 -2,2,261~2,5,261 -8,1,5~8,3,5 -3,2,66~3,2,66 -4,2,289~4,4,289 -3,0,186~3,2,186 -2,6,215~2,8,215 -4,1,61~4,3,61 -7,3,123~9,3,123 -6,2,117~8,2,117 -9,3,251~9,6,251 -2,8,206~3,8,206 -8,4,306~8,7,306 -7,5,25~7,7,25 -9,1,84~9,4,84 -1,5,20~1,8,20 -7,0,50~7,4,50 -2,1,52~5,1,52 -7,7,47~9,7,47 -0,4,59~0,6,59 -7,7,42~8,7,42 -4,3,130~5,3,130 -2,5,196~2,6,196 -6,5,64~6,5,65 -0,1,279~2,1,279 -6,7,116~7,7,116 -0,6,64~1,6,64 -0,0,121~2,0,121 -3,8,65~4,8,65 -0,2,142~2,2,142 -3,9,13~6,9,13 -0,8,216~3,8,216 -7,5,208~9,5,208 -3,8,44~3,9,44 -4,6,69~4,7,69 -8,2,259~8,5,259 -0,2,260~0,6,260 -2,6,37~4,6,37 -8,4,65~8,6,65 -9,4,108~9,5,108 -7,6,93~8,6,93 -5,9,92~7,9,92 -6,5,62~6,6,62 -5,1,239~5,2,239 -4,8,81~4,9,81 -8,0,128~8,2,128 -4,3,107~4,3,109 -6,5,19~6,6,19 -4,7,67~4,8,67 -9,5,83~9,8,83 -7,4,193~7,4,196 -9,4,129~9,4,131 -1,3,203~4,3,203 -9,1,81~9,2,81 -9,5,1~9,5,3 -3,5,236~3,5,239 -3,6,261~3,8,261 -4,1,10~6,1,10 -5,1,266~5,3,266 -1,0,126~1,0,128 -4,6,80~4,9,80 -5,8,12~7,8,12 -0,6,263~1,6,263 -4,2,91~4,5,91 -7,8,210~9,8,210 -7,8,291~7,9,291 -9,2,130~9,3,130 -9,1,285~9,2,285 -2,1,54~2,4,54 -0,1,83~0,3,83 -5,5,110~8,5,110 -5,0,96~7,0,96 -8,1,246~9,1,246 -5,6,59~7,6,59 -6,8,275~6,8,275 -6,0,148~9,0,148 -2,6,258~5,6,258 -1,2,133~1,5,133 -0,6,271~0,8,271 -9,2,18~9,5,18 -9,5,185~9,6,185 -5,5,311~8,5,311 -9,7,271~9,9,271 -3,3,305~5,3,305 -4,5,266~6,5,266 -9,6,215~9,6,216 -4,2,65~4,3,65 -1,7,46~1,9,46 -2,0,43~2,2,43 -5,9,269~6,9,269 -3,7,292~5,7,292 -3,4,278~3,6,278 -2,4,208~4,4,208 -6,5,139~8,5,139 -5,2,304~5,3,304 -1,8,66~3,8,66 -6,6,245~8,6,245 -4,4,145~4,5,145 -7,8,88~7,9,88 -5,6,184~7,6,184 -5,2,127~5,4,127 -6,2,201~6,3,201 -8,1,7~8,4,7 -4,2,46~6,2,46 -3,2,5~3,2,6 -5,4,261~6,4,261 -0,3,46~0,6,46 -3,1,57~3,2,57 -5,9,205~5,9,206 -1,1,39~1,4,39 -1,0,242~1,1,242 -8,1,16~8,1,19 -6,1,188~6,1,190 -2,4,92~4,4,92 -6,6,51~7,6,51 -4,2,48~4,4,48 -5,3,219~7,3,219 -8,9,182~8,9,182 -1,1,40~2,1,40 -9,3,91~9,4,91 -4,0,104~4,3,104 -5,2,10~7,2,10 -2,1,275~2,3,275 -5,3,99~5,6,99 -0,4,85~0,5,85 -5,9,36~7,9,36 -4,0,279~4,1,279 -1,0,10~3,0,10 -2,1,207~3,1,207 -4,3,234~4,6,234 -2,0,71~5,0,71 -8,6,78~8,7,78 -4,9,102~4,9,105 -2,6,73~4,6,73 -3,6,162~6,6,162 -6,1,199~6,4,199 -4,7,226~4,8,226 -8,0,217~8,2,217 -4,5,265~4,8,265 -6,2,110~8,2,110 -2,5,179~2,7,179 -6,8,173~8,8,173 -3,0,36~5,0,36 -7,5,271~7,7,271 -6,6,114~6,9,114 -1,0,67~3,0,67 -1,0,86~1,3,86 -5,0,140~5,2,140 -5,0,265~5,2,265 -5,2,87~5,3,87 -6,7,250~6,9,250 -4,4,37~4,4,38 -8,7,227~8,8,227 -2,1,210~2,3,210 -8,1,220~8,1,222 -1,9,228~3,9,228 -5,7,16~5,8,16 -0,0,8~0,1,8 -0,3,200~3,3,200 -8,3,89~9,3,89 -3,8,37~3,8,39 -1,4,136~1,5,136 -5,1,277~5,3,277 -6,4,246~6,5,246 -5,9,15~8,9,15 -8,5,261~8,7,261 -8,2,127~8,3,127 -2,1,3~2,4,3 -8,2,144~8,4,144 -7,4,53~9,4,53 -3,3,138~6,3,138 -6,9,63~8,9,63 -3,6,204~5,6,204 -3,5,179~3,6,179 diff --git a/2023/d22/ex2/ex2.py b/2023/d22/ex2/ex2.py deleted file mode 100755 index c9ce5d4..0000000 --- a/2023/d22/ex2/ex2.py +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env python - -import dataclasses -import sys -from collections import defaultdict -from collections.abc import Iterator -from typing import NamedTuple - - -def sign(x: int) -> int: - if x == 0: - return 0 - return 1 if x > 0 else -1 - - -class Point(NamedTuple): - x: int - y: int - z: int - - def fall(self, delta: int = 0) -> "Point": - assert delta <= self.z # Sanity check - return self._replace(z=self.z - delta) - - -@dataclasses.dataclass -class Brick: - top_left: Point - bot_right: Point - - def __post_init__(self) -> None: - assert self.top_left.z >= self.bot_right.z # Sanity check - - def orientation(self) -> Point: - return Point( - sign(self.bot_right.x - self.top_left.x), - sign(self.bot_right.y - self.top_left.y), - sign(self.bot_right.z - self.top_left.z), - ) - - def blocks(self) -> Iterator[Point]: - p = self.top_left - dx, dy, dz = self.orientation() - while p != self.bot_right: - yield p - p = Point(p.x + dx, p.y + dy, p.z + dz) - yield self.bot_right - - def fall(self, delta: int = 0) -> "Brick": - assert delta >= 0 # Sanity check - return Brick(self.top_left.fall(delta), self.bot_right.fall(delta)) - - -class TowerMap(NamedTuple): - supports: dict[int, set[int]] - supported_by: dict[int, set[int]] - num_bricks: int - - @classmethod - def compute_support(cls, tower: dict[Point, int]) -> "TowerMap": - supports: dict[int, set[int]] = defaultdict(set) - supported_by: dict[int, set[int]] = defaultdict(set) - - for p, i in tower.items(): - under = p.fall(1) - support = tower.get(under) - # No supporting brick - if support is None: - continue - # Don't count the brick as supporting itself - if support == i: - continue - supports[support].add(i) - supported_by[i].add(support) - - return cls( - supports=dict(supports), - supported_by=dict(supported_by), - num_bricks=max(supports.keys() | supported_by.keys()) + 1, - ) - - def roots(self) -> set[int]: - return {p for p in range(self.num_bricks) if p not in self.supported_by} - - # From bottom to top of tower - def topo_sort(self) -> list[int]: - res: list[int] = [] - nodes = self.roots() - seen: set[int] = set() - - while nodes: - node = nodes.pop() - res.append(node) - seen.add(node) - for child in self.supports.get(node, set()): - if len(self.supported_by[child] - seen) == 0: - nodes.add(child) - - assert set(res) == set(range(self.num_bricks)) # Sanity check - # NOTE: from construction, the topo_sort is just list(range(self.num_bricks)) - # But I'd rather do the actual algorithm for completeness - return res - - -def solve(input: list[str]) -> int: - def parse_brick(line: str) -> Brick: - a, b = (Point._make(map(int, p.split(","))) for p in line.split("~")) - if a < b: - a, b = b, a - return Brick(a, b) - - # Returns which point in space belongs to which brick index - def drop(snapshots: list[Brick]) -> dict[Point, int]: - # Re-order by lowest height - snapshots = sorted(snapshots, key=lambda b: b.bot_right.z) - # By default the ground is at 0, index with Point(p.x, p.y, 0) - heights: dict[Point, int] = defaultdict(int) - res: dict[Point, int] = {} - - for i, brick in enumerate(snapshots): - z = max(heights[p.fall(p.z)] for p in brick.blocks()) + 1 - assert brick.bot_right.z >= z # Sanity check - delta = brick.bot_right.z - z # Drop it to the top of the pile - brick = brick.fall(delta) - # Record the height of the brick for every block composing it - for p in brick.blocks(): - res[p] = i - heights[p.fall(p.z)] = brick.top_left.z - - return res - - def disintegrate(tower_map: TowerMap, brick: int) -> int: - fallen = {brick} - - for b in tower_map.topo_sort(): - parents = tower_map.supported_by.get(b, set()) - # Bricks on the floor shouldn't fall - if len(parents) == 0: - continue - if all(parent in fallen for parent in parents): - fallen.add(b) - - return len(fallen) - 1 # Don't count the disintegrated brick - - snapshots = [parse_brick(line) for line in input] - tower = drop(snapshots) - tower_map = TowerMap.compute_support(tower) - return sum(disintegrate(tower_map, i) for i in range(tower_map.num_bricks)) - - -def main() -> None: - input = sys.stdin.read().splitlines() - print(solve(input)) - - -if __name__ == "__main__": - main() diff --git a/2023/d22/ex2/input b/2023/d22/ex2/input deleted file mode 100644 index 6209227..0000000 --- a/2023/d22/ex2/input +++ /dev/null @@ -1,1233 +0,0 @@ -4,6,74~4,6,76 -0,3,277~0,4,277 -7,4,124~7,6,124 -5,1,268~5,1,269 -6,8,273~6,8,274 -8,0,268~8,0,270 -5,5,84~5,7,84 -1,9,196~3,9,196 -7,3,214~9,3,214 -6,2,171~8,2,171 -6,4,122~7,4,122 -1,2,177~1,5,177 -5,1,31~5,2,31 -1,3,196~1,6,196 -0,7,93~0,8,93 -0,5,267~0,6,267 -7,2,256~9,2,256 -3,8,40~4,8,40 -3,7,289~6,7,289 -7,5,269~7,7,269 -8,1,191~8,3,191 -3,0,190~5,0,190 -4,8,278~6,8,278 -8,6,25~8,9,25 -1,1,109~1,4,109 -4,6,270~4,7,270 -7,3,302~7,3,304 -6,0,108~8,0,108 -8,1,87~8,1,88 -6,6,94~6,8,94 -4,6,137~7,6,137 -3,4,20~3,7,20 -6,8,206~9,8,206 -6,9,266~8,9,266 -3,0,9~3,1,9 -9,0,82~9,3,82 -0,5,210~0,5,213 -5,5,303~7,5,303 -5,9,202~7,9,202 -8,3,256~8,6,256 -4,1,273~4,4,273 -6,6,1~6,7,1 -4,5,42~4,7,42 -5,6,183~7,6,183 -4,0,261~4,2,261 -3,3,271~5,3,271 -6,1,76~7,1,76 -5,2,59~7,2,59 -6,5,203~8,5,203 -4,6,278~6,6,278 -1,8,271~4,8,271 -6,4,279~7,4,279 -2,6,78~5,6,78 -9,7,112~9,9,112 -9,7,110~9,8,110 -6,2,208~9,2,208 -4,3,89~4,6,89 -2,7,93~2,9,93 -1,3,259~1,3,261 -5,3,45~7,3,45 -0,6,41~2,6,41 -3,8,42~5,8,42 -1,0,179~1,2,179 -1,1,283~3,1,283 -1,3,178~3,3,178 -3,5,182~3,7,182 -6,6,111~6,8,111 -1,0,106~1,2,106 -7,2,299~7,4,299 -8,7,88~8,9,88 -2,5,184~5,5,184 -1,0,2~2,0,2 -4,4,165~4,4,167 -1,9,116~2,9,116 -3,4,195~4,4,195 -8,5,150~8,7,150 -9,7,90~9,9,90 -1,7,31~1,9,31 -4,2,63~4,5,63 -5,0,271~5,0,274 -3,2,158~3,3,158 -4,4,150~4,5,150 -2,1,188~5,1,188 -2,2,35~2,4,35 -1,0,219~1,2,219 -1,6,98~3,6,98 -5,4,213~5,5,213 -7,1,120~7,3,120 -4,0,222~6,0,222 -7,2,112~9,2,112 -1,2,200~4,2,200 -2,3,165~2,4,165 -1,3,112~2,3,112 -0,3,189~2,3,189 -6,5,103~8,5,103 -2,6,176~3,6,176 -0,6,32~2,6,32 -2,2,297~2,4,297 -6,3,73~7,3,73 -8,4,231~8,6,231 -5,2,57~7,2,57 -8,6,180~8,9,180 -6,9,282~7,9,282 -0,0,65~0,2,65 -2,7,276~2,8,276 -1,8,191~2,8,191 -4,0,187~4,2,187 -5,6,214~8,6,214 -8,7,267~8,8,267 -2,1,246~4,1,246 -7,6,40~7,8,40 -6,2,248~6,4,248 -3,6,23~4,6,23 -9,6,181~9,8,181 -0,7,112~2,7,112 -3,4,147~4,4,147 -1,0,89~3,0,89 -5,2,172~7,2,172 -6,6,110~8,6,110 -6,5,133~6,7,133 -3,3,84~5,3,84 -9,4,128~9,6,128 -6,6,206~6,7,206 -7,2,131~7,3,131 -7,8,267~7,9,267 -7,1,12~7,3,12 -0,6,102~0,9,102 -2,8,96~4,8,96 -3,9,75~3,9,77 -3,0,70~3,3,70 -8,5,107~8,7,107 -4,7,173~5,7,173 -5,7,136~7,7,136 -1,1,57~2,1,57 -8,9,216~8,9,219 -3,4,267~3,6,267 -4,6,185~5,6,185 -2,2,16~2,5,16 -6,4,289~6,6,289 -1,5,255~3,5,255 -0,7,189~2,7,189 -7,4,234~7,7,234 -0,7,5~0,9,5 -0,5,214~0,5,217 -5,3,61~5,5,61 -1,9,193~3,9,193 -3,2,262~6,2,262 -5,4,291~5,5,291 -4,8,17~7,8,17 -9,6,45~9,7,45 -1,5,279~3,5,279 -0,1,7~0,2,7 -6,4,208~9,4,208 -0,3,49~0,6,49 -3,6,58~3,6,60 -6,1,55~8,1,55 -3,6,25~4,6,25 -3,6,57~5,6,57 -0,1,188~0,4,188 -0,0,262~0,1,262 -7,9,214~9,9,214 -9,6,70~9,7,70 -3,4,131~5,4,131 -5,7,224~5,9,224 -1,9,33~3,9,33 -5,1,185~5,4,185 -9,2,191~9,4,191 -2,5,201~5,5,201 -2,6,61~4,6,61 -8,7,215~9,7,215 -9,0,217~9,1,217 -3,2,56~3,4,56 -0,1,215~0,3,215 -1,4,45~1,6,45 -2,0,32~4,0,32 -5,9,173~7,9,173 -8,1,168~8,3,168 -5,5,167~6,5,167 -1,6,35~4,6,35 -2,6,54~4,6,54 -9,4,254~9,7,254 -7,0,80~8,0,80 -0,1,57~0,2,57 -5,9,276~5,9,278 -3,0,193~5,0,193 -0,6,202~3,6,202 -5,6,288~7,6,288 -0,7,218~0,7,219 -3,1,115~6,1,115 -0,3,276~2,3,276 -6,6,227~6,8,227 -8,4,224~8,7,224 -5,3,161~5,5,161 -4,3,26~6,3,26 -7,5,315~9,5,315 -6,6,41~9,6,41 -6,2,54~6,4,54 -6,9,279~7,9,279 -2,2,270~2,4,270 -3,7,84~3,8,84 -0,6,266~1,6,266 -2,4,164~4,4,164 -7,5,212~7,7,212 -6,2,75~6,2,76 -1,7,284~2,7,284 -6,7,300~7,7,300 -8,3,258~8,5,258 -7,8,205~9,8,205 -5,4,251~5,5,251 -1,2,205~1,4,205 -6,0,137~6,1,137 -1,7,102~2,7,102 -5,5,202~5,7,202 -7,7,179~7,9,179 -4,5,174~4,7,174 -7,6,13~7,8,13 -4,6,212~4,8,212 -0,7,222~0,8,222 -6,7,21~8,7,21 -7,5,17~9,5,17 -4,0,29~4,2,29 -1,7,253~1,7,254 -2,6,169~2,6,171 -1,5,164~4,5,164 -3,2,247~6,2,247 -3,3,295~3,3,296 -8,2,15~9,2,15 -2,4,34~2,6,34 -7,2,128~7,5,128 -0,4,189~3,4,189 -0,2,56~0,5,56 -1,7,114~1,9,114 -1,4,102~3,4,102 -3,2,272~3,4,272 -6,5,294~7,5,294 -2,3,81~4,3,81 -9,2,253~9,3,253 -5,2,43~5,4,43 -7,2,301~7,3,301 -6,5,320~8,5,320 -3,7,22~3,9,22 -2,8,35~5,8,35 -8,5,295~9,5,295 -6,9,68~7,9,68 -6,1,234~6,3,234 -5,8,67~7,8,67 -5,0,243~7,0,243 -5,0,118~5,2,118 -3,6,9~5,6,9 -4,3,275~4,6,275 -3,2,127~4,2,127 -6,6,247~6,8,247 -3,4,124~6,4,124 -4,3,274~5,3,274 -1,3,91~1,5,91 -4,6,64~4,8,64 -0,5,270~0,8,270 -4,4,103~6,4,103 -5,5,249~7,5,249 -2,0,52~5,0,52 -4,2,189~4,5,189 -8,1,241~8,2,241 -1,3,294~3,3,294 -8,0,1~8,0,2 -6,5,165~6,9,165 -3,5,41~3,7,41 -3,3,254~3,5,254 -2,6,105~2,7,105 -3,3,106~4,3,106 -7,9,268~9,9,268 -2,5,81~2,8,81 -0,6,199~0,8,199 -3,1,212~3,4,212 -5,5,63~5,6,63 -5,2,49~6,2,49 -6,8,39~6,9,39 -8,9,7~8,9,9 -7,7,24~7,9,24 -5,8,47~8,8,47 -5,5,187~5,5,189 -8,6,273~8,9,273 -8,9,185~9,9,185 -4,6,171~4,8,171 -2,7,191~4,7,191 -2,0,168~2,3,168 -5,1,68~5,3,68 -7,6,91~7,9,91 -8,1,13~8,3,13 -6,2,202~6,3,202 -6,0,200~6,1,200 -4,3,252~4,4,252 -5,0,93~5,2,93 -7,6,237~7,8,237 -0,8,33~2,8,33 -0,0,86~0,2,86 -8,6,226~8,6,229 -0,4,1~2,4,1 -2,0,122~2,3,122 -5,3,69~8,3,69 -2,8,46~4,8,46 -6,5,66~9,5,66 -7,6,294~9,6,294 -8,6,113~8,8,113 -5,1,163~5,4,163 -1,6,269~4,6,269 -8,6,207~8,7,207 -7,4,213~9,4,213 -2,6,22~2,8,22 -0,5,83~0,8,83 -0,2,210~0,4,210 -6,6,167~6,8,167 -5,4,171~7,4,171 -0,0,281~4,0,281 -5,0,270~5,2,270 -6,2,118~9,2,118 -5,0,53~6,0,53 -4,2,13~4,4,13 -2,6,52~5,6,52 -1,5,203~4,5,203 -7,5,14~7,7,14 -7,2,258~7,2,260 -6,2,193~6,3,193 -7,9,180~7,9,181 -6,3,307~6,5,307 -8,4,281~8,6,281 -4,2,107~7,2,107 -6,6,205~8,6,205 -6,7,51~6,8,51 -8,5,5~8,8,5 -9,6,295~9,7,295 -8,2,85~8,4,85 -0,2,268~0,5,268 -3,3,173~5,3,173 -8,3,285~8,5,285 -5,9,175~7,9,175 -3,7,194~5,7,194 -9,3,256~9,5,256 -9,1,80~9,4,80 -6,1,100~6,3,100 -6,6,88~8,6,88 -2,7,15~5,7,15 -2,2,180~2,5,180 -0,8,70~0,9,70 -0,2,221~0,3,221 -7,7,16~9,7,16 -3,1,101~5,1,101 -8,8,29~9,8,29 -3,0,80~5,0,80 -2,3,291~4,3,291 -4,6,243~7,6,243 -1,0,118~4,0,118 -4,2,78~4,5,78 -5,9,67~7,9,67 -1,8,192~4,8,192 -5,3,259~5,5,259 -6,4,5~8,4,5 -5,4,132~5,5,132 -0,7,85~0,9,85 -1,9,201~4,9,201 -8,6,24~8,7,24 -2,1,249~3,1,249 -0,5,209~0,8,209 -7,4,317~7,6,317 -0,5,37~2,5,37 -3,5,185~5,5,185 -7,5,292~7,7,292 -6,2,266~6,3,266 -1,3,42~1,3,44 -4,6,245~4,8,245 -1,3,45~2,3,45 -7,5,167~7,6,167 -4,8,3~4,8,3 -5,4,205~7,4,205 -4,5,308~7,5,308 -2,0,77~5,0,77 -5,1,47~5,3,47 -9,2,193~9,4,193 -1,9,194~4,9,194 -4,7,12~4,9,12 -3,2,211~3,5,211 -4,7,182~6,7,182 -7,1,14~9,1,14 -0,6,99~0,7,99 -8,0,273~8,1,273 -2,4,268~4,4,268 -5,2,28~5,2,28 -6,9,19~8,9,19 -1,3,55~1,5,55 -6,1,245~6,4,245 -4,8,214~4,8,216 -3,2,188~3,2,190 -5,9,17~7,9,17 -1,8,284~1,9,284 -9,7,269~9,9,269 -4,7,200~4,9,200 -0,4,184~0,7,184 -5,2,50~5,4,50 -9,6,108~9,9,108 -4,0,277~4,1,277 -6,6,220~6,8,220 -6,3,251~6,5,251 -1,0,240~1,4,240 -0,0,199~0,4,199 -4,1,139~5,1,139 -2,4,291~4,4,291 -2,4,294~2,6,294 -5,6,73~8,6,73 -0,6,62~0,8,62 -5,6,167~5,8,167 -5,5,135~5,5,138 -0,8,282~0,9,282 -7,4,274~7,6,274 -7,2,185~9,2,185 -4,3,269~5,3,269 -6,4,262~6,4,265 -0,9,104~0,9,106 -3,5,128~3,5,129 -5,5,205~8,5,205 -8,3,147~8,5,147 -2,5,168~2,6,168 -6,4,126~6,4,128 -4,0,311~8,0,311 -6,0,211~6,3,211 -6,1,185~6,2,185 -6,3,290~7,3,290 -6,9,233~6,9,234 -5,1,244~5,1,247 -4,2,249~4,3,249 -0,0,123~2,0,123 -1,2,182~1,3,182 -7,0,140~7,2,140 -8,8,85~8,9,85 -6,0,14~6,3,14 -0,4,181~0,7,181 -1,4,197~1,7,197 -3,0,76~3,2,76 -7,5,131~8,5,131 -7,4,77~7,7,77 -0,7,283~1,7,283 -5,0,205~8,0,205 -3,6,155~3,8,155 -8,6,68~8,6,70 -6,0,254~7,0,254 -7,3,126~9,3,126 -1,7,94~4,7,94 -8,3,11~8,6,11 -5,6,45~5,8,45 -8,4,86~8,7,86 -7,8,292~9,8,292 -2,9,227~5,9,227 -1,7,108~4,7,108 -7,0,253~7,2,253 -2,4,167~2,7,167 -3,6,135~6,6,135 -3,7,287~6,7,287 -4,2,291~5,2,291 -5,5,269~6,5,269 -7,2,141~7,4,141 -4,9,21~6,9,21 -1,5,22~1,5,25 -3,8,296~3,8,298 -1,7,111~1,8,111 -0,9,217~1,9,217 -7,4,79~9,4,79 -0,6,207~0,8,207 -3,4,209~3,5,209 -3,4,152~3,6,152 -2,5,20~2,7,20 -7,0,187~7,3,187 -5,4,129~5,6,129 -8,1,254~8,1,257 -2,0,106~3,0,106 -6,5,248~8,5,248 -5,8,92~7,8,92 -9,6,274~9,8,274 -6,2,121~6,4,121 -4,0,112~4,2,112 -3,0,63~3,2,63 -1,5,239~1,6,239 -0,6,7~0,8,7 -6,7,135~8,7,135 -6,7,67~9,7,67 -1,2,83~1,5,83 -6,7,240~7,7,240 -7,5,8~9,5,8 -4,1,23~4,4,23 -3,2,277~3,2,279 -4,0,219~4,2,219 -4,1,237~6,1,237 -1,6,280~1,7,280 -2,4,197~2,5,197 -6,9,237~9,9,237 -7,8,70~8,8,70 -0,4,180~1,4,180 -4,6,180~5,6,180 -0,5,259~4,5,259 -5,2,236~7,2,236 -7,9,98~8,9,98 -0,8,88~1,8,88 -1,0,80~2,0,80 -9,2,129~9,3,129 -6,5,282~8,5,282 -9,5,282~9,5,285 -6,6,223~8,6,223 -6,6,268~6,8,268 -7,9,65~9,9,65 -6,0,150~6,0,152 -5,3,231~6,3,231 -2,1,99~4,1,99 -7,0,298~7,3,298 -2,8,198~2,8,199 -5,1,95~5,3,95 -8,4,13~8,4,15 -2,0,195~3,0,195 -5,8,2~8,8,2 -7,2,1~7,4,1 -1,6,101~3,6,101 -9,3,235~9,5,235 -9,5,105~9,8,105 -1,5,126~3,5,126 -4,7,279~7,7,279 -6,2,252~6,3,252 -7,4,32~7,6,32 -2,8,114~4,8,114 -4,2,309~4,4,309 -8,2,50~8,2,50 -0,0,64~3,0,64 -2,0,213~2,1,213 -7,5,79~7,7,79 -9,3,9~9,3,12 -9,6,42~9,7,42 -0,3,82~2,3,82 -7,5,313~7,6,313 -4,3,60~4,5,60 -0,8,203~2,8,203 -6,1,1~8,1,1 -6,1,52~8,1,52 -3,2,87~3,5,87 -6,7,282~8,7,282 -1,2,88~3,2,88 -3,7,264~3,8,264 -1,0,217~1,2,217 -5,7,284~7,7,284 -7,2,269~7,2,271 -7,4,278~9,4,278 -0,9,2~2,9,2 -2,2,272~2,4,272 -2,2,260~5,2,260 -1,6,278~1,8,278 -1,3,48~1,4,48 -2,2,52~4,2,52 -5,6,300~6,6,300 -6,7,33~8,7,33 -2,5,75~4,5,75 -1,8,277~1,9,277 -1,5,270~1,6,270 -7,3,60~7,4,60 -7,8,203~7,9,203 -5,7,208~5,9,208 -3,1,240~4,1,240 -4,7,86~4,7,90 -8,2,49~8,4,49 -9,3,127~9,4,127 -1,0,216~4,0,216 -5,1,311~7,1,311 -4,1,243~6,1,243 -9,2,55~9,4,55 -5,0,143~8,0,143 -0,3,212~0,4,212 -5,6,239~5,6,241 -0,4,135~2,4,135 -1,7,251~3,7,251 -0,0,218~0,2,218 -5,8,271~6,8,271 -1,5,199~3,5,199 -9,1,195~9,2,195 -3,0,11~3,0,13 -2,3,171~4,3,171 -2,7,5~4,7,5 -7,7,289~7,8,289 -6,6,235~6,7,235 -6,4,57~9,4,57 -2,3,124~2,5,124 -0,7,100~3,7,100 -2,9,34~5,9,34 -5,2,256~5,2,258 -0,6,203~3,6,203 -5,1,208~5,4,208 -0,3,271~0,4,271 -6,0,310~6,3,310 -2,2,109~4,2,109 -3,4,192~3,4,192 -9,0,215~9,2,215 -4,0,136~4,3,136 -4,4,41~6,4,41 -4,7,83~7,7,83 -2,3,22~4,3,22 -5,7,175~7,7,175 -6,6,170~6,9,170 -3,5,46~3,7,46 -7,4,48~7,6,48 -9,0,286~9,1,286 -2,2,278~2,2,280 -4,2,125~4,4,125 -5,3,301~5,6,301 -0,8,67~2,8,67 -3,1,72~3,1,74 -0,3,174~2,3,174 -8,0,146~9,0,146 -7,0,189~7,2,189 -5,2,209~7,2,209 -6,6,84~6,8,84 -2,6,190~2,9,190 -4,7,99~4,9,99 -1,7,43~3,7,43 -8,5,267~8,6,267 -5,7,281~8,7,281 -5,0,210~5,2,210 -3,9,268~3,9,270 -8,5,134~8,5,136 -6,1,214~8,1,214 -8,1,70~8,3,70 -2,1,21~2,4,21 -8,8,4~8,9,4 -8,5,249~9,5,249 -3,0,208~3,2,208 -4,7,41~4,9,41 -5,3,97~6,3,97 -8,3,312~8,5,312 -2,0,33~2,0,36 -7,3,192~7,4,192 -5,5,66~5,5,67 -9,1,211~9,2,211 -5,4,294~5,4,296 -9,3,279~9,5,279 -8,3,82~8,5,82 -5,3,65~5,5,65 -4,4,11~4,6,11 -0,1,66~2,1,66 -4,6,186~4,6,186 -2,2,183~2,2,185 -4,5,294~5,5,294 -4,0,105~7,0,105 -4,0,270~4,1,270 -6,5,77~6,8,77 -8,6,264~8,7,264 -1,0,115~4,0,115 -7,2,194~7,2,196 -3,5,77~3,5,77 -4,9,265~6,9,265 -5,7,263~5,9,263 -6,1,216~6,4,216 -6,8,49~8,8,49 -6,5,297~6,7,297 -6,7,178~9,7,178 -1,4,26~1,6,26 -5,6,60~8,6,60 -5,2,103~6,2,103 -5,6,170~5,6,173 -8,4,270~8,6,270 -4,2,26~7,2,26 -4,7,167~4,7,169 -4,5,59~5,5,59 -6,4,45~9,4,45 -6,0,51~6,2,51 -0,7,89~3,7,89 -3,3,28~3,4,28 -0,0,128~0,0,128 -1,6,231~4,6,231 -6,3,284~9,3,284 -6,4,202~6,6,202 -7,5,113~7,6,113 -0,4,54~1,4,54 -1,0,228~2,0,228 -2,4,156~4,4,156 -6,2,2~6,4,2 -8,4,141~8,5,141 -2,8,86~4,8,86 -0,7,9~0,9,9 -6,2,223~8,2,223 -3,5,253~5,5,253 -1,4,235~3,4,235 -6,9,198~6,9,201 -1,6,241~3,6,241 -5,5,101~5,7,101 -2,8,14~6,8,14 -4,3,124~6,3,124 -7,4,144~7,4,147 -8,6,138~8,8,138 -1,2,210~1,4,210 -6,3,190~8,3,190 -3,6,92~3,7,92 -1,3,93~2,3,93 -5,9,230~7,9,230 -2,7,42~3,7,42 -4,9,230~4,9,231 -5,8,274~5,9,274 -6,5,179~6,7,179 -0,8,281~2,8,281 -1,4,199~1,4,199 -8,1,313~8,4,313 -0,0,1~0,2,1 -5,7,205~7,7,205 -1,7,198~1,7,201 -4,3,260~4,5,260 -2,6,111~2,8,111 -3,6,291~5,6,291 -4,1,89~4,2,89 -3,1,86~3,3,86 -0,5,57~0,8,57 -3,1,62~4,1,62 -9,1,5~9,3,5 -8,4,47~8,6,47 -4,7,206~5,7,206 -5,6,236~5,8,236 -0,5,186~0,7,186 -7,2,193~8,2,193 -7,5,286~7,7,286 -4,5,58~4,6,58 -3,5,22~4,5,22 -0,3,36~2,3,36 -0,0,125~1,0,125 -5,1,70~5,2,70 -3,2,54~3,5,54 -0,5,1~0,6,1 -7,2,227~7,4,227 -7,5,5~7,8,5 -2,0,226~3,0,226 -5,0,246~7,0,246 -3,1,43~3,2,43 -0,5,206~0,7,206 -2,0,225~2,2,225 -3,4,233~3,6,233 -4,4,36~4,7,36 -3,2,275~3,4,275 -9,1,63~9,4,63 -0,3,88~0,5,88 -3,1,225~3,3,225 -6,4,291~9,4,291 -6,5,226~6,7,226 -1,4,296~2,4,296 -3,1,96~6,1,96 -0,8,198~1,8,198 -1,8,230~1,9,230 -7,0,220~7,1,220 -4,4,304~5,4,304 -0,1,282~0,3,282 -3,3,149~3,4,149 -3,1,34~5,1,34 -4,1,207~4,3,207 -0,1,124~3,1,124 -0,3,208~1,3,208 -6,6,75~8,6,75 -7,6,62~7,9,62 -1,4,237~1,6,237 -6,2,239~8,2,239 -5,2,310~5,4,310 -7,2,114~7,3,114 -5,7,18~6,7,18 -7,5,250~7,8,250 -5,1,3~5,4,3 -3,3,155~6,3,155 -8,4,277~8,7,277 -4,3,132~4,3,134 -4,3,263~4,3,263 -2,1,315~5,1,315 -8,8,28~9,8,28 -3,9,100~5,9,100 -1,0,105~3,0,105 -7,7,64~7,8,64 -0,2,40~3,2,40 -0,0,104~2,0,104 -8,0,207~8,2,207 -4,1,133~6,1,133 -3,2,183~7,2,183 -3,7,2~3,7,2 -4,7,70~7,7,70 -7,6,252~8,6,252 -8,5,165~8,6,165 -1,9,236~3,9,236 -4,0,50~4,3,50 -9,3,215~9,4,215 -4,8,37~7,8,37 -8,1,10~8,2,10 -6,7,183~6,8,183 -2,2,114~5,2,114 -6,5,104~9,5,104 -5,4,51~5,6,51 -4,5,165~4,8,165 -6,1,264~6,3,264 -7,1,255~7,1,257 -9,0,7~9,4,7 -5,9,94~7,9,94 -4,3,262~7,3,262 -5,1,201~7,1,201 -4,8,238~5,8,238 -4,7,267~6,7,267 -4,1,55~4,3,55 -3,3,154~3,5,154 -9,6,213~9,9,213 -6,1,167~6,4,167 -8,6,209~8,8,209 -3,4,25~4,4,25 -5,2,225~8,2,225 -2,7,248~4,7,248 -4,4,72~4,6,72 -8,0,289~9,0,289 -0,3,257~3,3,257 -5,2,62~6,2,62 -9,4,86~9,4,88 -0,5,257~2,5,257 -5,5,211~6,5,211 -5,9,231~6,9,231 -0,9,213~0,9,216 -9,0,218~9,0,219 -0,6,52~0,8,52 -5,3,289~5,6,289 -1,6,43~3,6,43 -6,7,237~6,8,237 -8,7,80~8,9,80 -2,2,222~4,2,222 -4,6,7~4,8,7 -8,0,264~8,0,265 -2,0,101~2,2,101 -1,5,79~3,5,79 -5,5,262~6,5,262 -3,3,73~3,4,73 -8,6,63~8,8,63 -2,3,19~5,3,19 -4,3,286~6,3,286 -4,4,161~4,7,161 -2,6,225~6,6,225 -0,7,212~0,9,212 -4,9,197~6,9,197 -6,9,71~6,9,75 -6,4,52~6,6,52 -5,2,294~6,2,294 -5,3,165~5,5,165 -8,6,116~8,8,116 -5,2,253~5,4,253 -4,6,136~5,6,136 -6,0,203~6,3,203 -4,6,233~7,6,233 -9,1,212~9,2,212 -6,1,247~9,1,247 -7,7,277~7,9,277 -7,6,255~7,7,255 -1,4,179~3,4,179 -1,1,222~3,1,222 -0,0,201~0,2,201 -8,3,36~8,6,36 -0,7,272~0,9,272 -4,0,56~6,0,56 -4,5,45~4,6,45 -2,6,270~2,8,270 -3,5,43~5,5,43 -9,3,316~9,6,316 -5,6,164~5,9,164 -3,4,228~3,6,228 -8,9,239~9,9,239 -6,5,4~6,7,4 -1,2,135~1,2,136 -6,2,13~6,3,13 -1,1,60~1,1,61 -3,0,187~3,2,187 -4,1,8~7,1,8 -9,2,282~9,4,282 -1,7,17~4,7,17 -8,8,64~9,8,64 -9,6,272~9,8,272 -1,3,297~1,5,297 -1,1,6~5,1,6 -7,0,240~7,2,240 -4,0,33~6,0,33 -2,7,25~2,7,27 -8,4,9~8,6,9 -0,7,96~0,9,96 -6,5,209~9,5,209 -3,3,307~5,3,307 -3,7,211~5,7,211 -4,2,87~4,4,87 -5,2,73~5,2,73 -4,6,241~4,8,241 -5,6,270~6,6,270 -3,5,23~3,5,25 -6,1,299~6,4,299 -6,0,4~8,0,4 -2,1,204~5,1,204 -4,1,75~6,1,75 -5,2,165~8,2,165 -2,0,229~2,0,231 -4,2,307~5,2,307 -7,0,97~9,0,97 -8,4,16~8,4,18 -4,0,272~4,0,275 -2,1,223~2,3,223 -1,8,274~1,9,274 -5,0,130~5,2,130 -1,8,195~2,8,195 -9,1,9~9,2,9 -7,2,7~7,4,7 -5,2,250~8,2,250 -6,4,285~6,4,287 -1,0,170~4,0,170 -3,3,309~3,6,309 -2,6,264~4,6,264 -3,7,109~5,7,109 -0,7,98~2,7,98 -5,7,239~5,9,239 -0,8,115~2,8,115 -4,4,222~6,4,222 -6,7,110~8,7,110 -4,5,237~4,8,237 -3,2,180~3,4,180 -3,1,312~3,3,312 -9,5,183~9,7,183 -4,7,72~4,8,72 -9,5,258~9,5,260 -2,4,159~5,4,159 -6,1,72~6,4,72 -0,1,261~0,4,261 -0,1,175~0,3,175 -1,2,46~1,5,46 -2,1,224~2,3,224 -2,6,273~2,7,273 -4,0,186~4,3,186 -0,4,51~1,4,51 -6,1,312~7,1,312 -3,7,266~3,9,266 -0,6,80~2,6,80 -3,7,262~5,7,262 -7,3,288~8,3,288 -2,8,200~3,8,200 -1,6,29~1,8,29 -8,1,297~8,2,297 -4,8,217~6,8,217 -5,5,35~8,5,35 -3,5,234~3,7,234 -5,5,3~5,7,3 -4,5,16~6,5,16 -8,3,293~8,5,293 -9,0,188~9,2,188 -2,2,206~2,5,206 -1,6,47~3,6,47 -1,5,1~1,8,1 -7,6,138~7,9,138 -6,9,14~9,9,14 -7,1,139~7,3,139 -1,9,118~1,9,121 -2,8,82~4,8,82 -0,4,197~0,6,197 -4,1,142~4,4,142 -3,7,295~3,9,295 -6,3,230~9,3,230 -3,4,261~3,5,261 -2,6,214~4,6,214 -7,2,230~7,2,233 -7,2,211~7,4,211 -5,6,5~5,7,5 -5,5,164~8,5,164 -2,4,183~5,4,183 -7,8,82~9,8,82 -3,0,90~5,0,90 -4,1,293~4,3,293 -7,7,85~7,9,85 -6,1,220~6,4,220 -6,7,276~8,7,276 -8,1,243~8,5,243 -6,3,101~6,5,101 -0,7,217~0,8,217 -6,0,110~9,0,110 -9,7,89~9,9,89 -3,1,2~3,2,2 -6,5,304~8,5,304 -7,2,28~7,4,28 -2,5,14~4,5,14 -9,1,238~9,3,238 -7,2,61~9,2,61 -8,2,210~9,2,210 -2,4,100~5,4,100 -7,0,78~7,2,78 -0,9,10~0,9,13 -3,8,193~5,8,193 -7,0,219~8,0,219 -9,7,296~9,7,297 -1,7,101~4,7,101 -1,7,39~4,7,39 -8,2,1~8,2,3 -8,1,86~8,3,86 -8,2,262~8,2,264 -6,3,196~6,5,196 -2,1,282~3,1,282 -2,1,277~2,3,277 -0,7,90~3,7,90 -1,5,92~1,5,94 -2,6,62~5,6,62 -5,4,284~8,4,284 -4,6,177~4,7,177 -5,1,136~7,1,136 -3,3,187~4,3,187 -6,7,27~9,7,27 -2,5,83~2,6,83 -9,4,46~9,4,49 -3,3,179~4,3,179 -7,0,130~9,0,130 -1,2,139~1,4,139 -0,4,185~0,6,185 -3,6,74~3,9,74 -1,8,233~1,8,235 -5,4,256~5,6,256 -9,7,86~9,7,86 -1,3,81~1,5,81 -9,3,233~9,4,233 -3,9,296~6,9,296 -7,6,30~7,8,30 -3,0,267~5,0,267 -0,3,44~0,6,44 -0,6,193~3,6,193 -5,6,19~5,7,19 -0,2,91~0,4,91 -3,9,230~3,9,233 -6,1,79~7,1,79 -1,2,130~3,2,130 -6,2,169~6,4,169 -7,6,97~7,9,97 -7,2,266~7,3,266 -7,8,141~9,8,141 -1,3,88~1,7,88 -0,6,95~0,8,95 -7,9,100~7,9,101 -9,1,2~9,1,4 -6,5,267~7,5,267 -6,5,37~6,6,37 -8,0,261~8,3,261 -5,8,3~6,8,3 -0,6,174~2,6,174 -3,7,24~3,8,24 -4,8,223~6,8,223 -5,0,275~6,0,275 -6,4,44~7,4,44 -1,1,206~3,1,206 -5,2,21~5,3,21 -3,6,93~3,6,95 -0,6,38~4,6,38 -8,1,253~8,4,253 -9,4,133~9,6,133 -0,6,195~3,6,195 -6,8,168~8,8,168 -6,2,296~8,2,296 -4,6,131~7,6,131 -4,8,10~6,8,10 -3,3,189~3,3,191 -9,1,258~9,2,258 -3,0,197~3,0,200 -4,0,223~6,0,223 -3,2,197~3,4,197 -1,2,89~2,2,89 -3,8,272~4,8,272 -7,2,264~7,3,264 -0,1,4~3,1,4 -2,2,261~2,5,261 -8,1,5~8,3,5 -3,2,66~3,2,66 -4,2,289~4,4,289 -3,0,186~3,2,186 -2,6,215~2,8,215 -4,1,61~4,3,61 -7,3,123~9,3,123 -6,2,117~8,2,117 -9,3,251~9,6,251 -2,8,206~3,8,206 -8,4,306~8,7,306 -7,5,25~7,7,25 -9,1,84~9,4,84 -1,5,20~1,8,20 -7,0,50~7,4,50 -2,1,52~5,1,52 -7,7,47~9,7,47 -0,4,59~0,6,59 -7,7,42~8,7,42 -4,3,130~5,3,130 -2,5,196~2,6,196 -6,5,64~6,5,65 -0,1,279~2,1,279 -6,7,116~7,7,116 -0,6,64~1,6,64 -0,0,121~2,0,121 -3,8,65~4,8,65 -0,2,142~2,2,142 -3,9,13~6,9,13 -0,8,216~3,8,216 -7,5,208~9,5,208 -3,8,44~3,9,44 -4,6,69~4,7,69 -8,2,259~8,5,259 -0,2,260~0,6,260 -2,6,37~4,6,37 -8,4,65~8,6,65 -9,4,108~9,5,108 -7,6,93~8,6,93 -5,9,92~7,9,92 -6,5,62~6,6,62 -5,1,239~5,2,239 -4,8,81~4,9,81 -8,0,128~8,2,128 -4,3,107~4,3,109 -6,5,19~6,6,19 -4,7,67~4,8,67 -9,5,83~9,8,83 -7,4,193~7,4,196 -9,4,129~9,4,131 -1,3,203~4,3,203 -9,1,81~9,2,81 -9,5,1~9,5,3 -3,5,236~3,5,239 -3,6,261~3,8,261 -4,1,10~6,1,10 -5,1,266~5,3,266 -1,0,126~1,0,128 -4,6,80~4,9,80 -5,8,12~7,8,12 -0,6,263~1,6,263 -4,2,91~4,5,91 -7,8,210~9,8,210 -7,8,291~7,9,291 -9,2,130~9,3,130 -9,1,285~9,2,285 -2,1,54~2,4,54 -0,1,83~0,3,83 -5,5,110~8,5,110 -5,0,96~7,0,96 -8,1,246~9,1,246 -5,6,59~7,6,59 -6,8,275~6,8,275 -6,0,148~9,0,148 -2,6,258~5,6,258 -1,2,133~1,5,133 -0,6,271~0,8,271 -9,2,18~9,5,18 -9,5,185~9,6,185 -5,5,311~8,5,311 -9,7,271~9,9,271 -3,3,305~5,3,305 -4,5,266~6,5,266 -9,6,215~9,6,216 -4,2,65~4,3,65 -1,7,46~1,9,46 -2,0,43~2,2,43 -5,9,269~6,9,269 -3,7,292~5,7,292 -3,4,278~3,6,278 -2,4,208~4,4,208 -6,5,139~8,5,139 -5,2,304~5,3,304 -1,8,66~3,8,66 -6,6,245~8,6,245 -4,4,145~4,5,145 -7,8,88~7,9,88 -5,6,184~7,6,184 -5,2,127~5,4,127 -6,2,201~6,3,201 -8,1,7~8,4,7 -4,2,46~6,2,46 -3,2,5~3,2,6 -5,4,261~6,4,261 -0,3,46~0,6,46 -3,1,57~3,2,57 -5,9,205~5,9,206 -1,1,39~1,4,39 -1,0,242~1,1,242 -8,1,16~8,1,19 -6,1,188~6,1,190 -2,4,92~4,4,92 -6,6,51~7,6,51 -4,2,48~4,4,48 -5,3,219~7,3,219 -8,9,182~8,9,182 -1,1,40~2,1,40 -9,3,91~9,4,91 -4,0,104~4,3,104 -5,2,10~7,2,10 -2,1,275~2,3,275 -5,3,99~5,6,99 -0,4,85~0,5,85 -5,9,36~7,9,36 -4,0,279~4,1,279 -1,0,10~3,0,10 -2,1,207~3,1,207 -4,3,234~4,6,234 -2,0,71~5,0,71 -8,6,78~8,7,78 -4,9,102~4,9,105 -2,6,73~4,6,73 -3,6,162~6,6,162 -6,1,199~6,4,199 -4,7,226~4,8,226 -8,0,217~8,2,217 -4,5,265~4,8,265 -6,2,110~8,2,110 -2,5,179~2,7,179 -6,8,173~8,8,173 -3,0,36~5,0,36 -7,5,271~7,7,271 -6,6,114~6,9,114 -1,0,67~3,0,67 -1,0,86~1,3,86 -5,0,140~5,2,140 -5,0,265~5,2,265 -5,2,87~5,3,87 -6,7,250~6,9,250 -4,4,37~4,4,38 -8,7,227~8,8,227 -2,1,210~2,3,210 -8,1,220~8,1,222 -1,9,228~3,9,228 -5,7,16~5,8,16 -0,0,8~0,1,8 -0,3,200~3,3,200 -8,3,89~9,3,89 -3,8,37~3,8,39 -1,4,136~1,5,136 -5,1,277~5,3,277 -6,4,246~6,5,246 -5,9,15~8,9,15 -8,5,261~8,7,261 -8,2,127~8,3,127 -2,1,3~2,4,3 -8,2,144~8,4,144 -7,4,53~9,4,53 -3,3,138~6,3,138 -6,9,63~8,9,63 -3,6,204~5,6,204 -3,5,179~3,6,179