diff --git a/2022/day14.py b/2022/day14.py new file mode 100644 index 0000000..8777232 --- /dev/null +++ b/2022/day14.py @@ -0,0 +1,66 @@ +from helpers import * +lines = read_day(day).split('\n') +sample_lines = ''' +498,4 -> 498,6 -> 496,6 +503,4 -> 502,4 -> 502,9 -> 494,9'''.strip().split('\n') + +AIR = ord('.') +ROCK = ord('#') +SAND_SOURCE = ord('+') +SAND_REST = ord('o') +SAND_ORIGIN = (500, 0) +FALL_DIRS = np.array([[0,1], [-1,1], [1,1]], dtype=dtype) + +def apply_sand_fall(map: ArrayLike) -> bool: + falling_sand_pos = np.array(SAND_ORIGIN, dtype=dtype) + MAX_Y = map.shape[1] - 1 + while falling_sand_pos[1] < MAX_Y: + for dir in FALL_DIRS: + if map[*(falling_sand_pos + dir)] == AIR: + falling_sand_pos += dir + break + else: + if falling_sand_pos[1] == 0: + return False + # resting place + # print('Resting at', falling_sand_pos) + map[*falling_sand_pos] = SAND_REST + return True + return False + +def sim(lines: list[str], solid_floor=False) -> ArrayLike: + nums = [[int(x) for x in numbers_pattern.findall(line)] for line in lines] + max_x = max([max(n[::2]) for n in nums]) + max_y = max([max(n[1::2]) for n in nums]) + print(f'Max X: {max_x}, Max Y: {max_y}') + dim_x = max_x + max_y # assume it can pile out diagonally all the way + map = np.full((dim_x,max_y+4), AIR, dtype=np.uint8) + for n in nums: + for x0,y0,x1,y1 in zip(n[::2], n[1::2], n[2::2], n[3::2]): + map[min(x0,x1):max(x0,x1)+1, min(y0,y1):max(y0,y1)+1] = ROCK + if solid_floor: + map[:,max_y+2] = ROCK + map[SAND_ORIGIN] = SAND_SOURCE + while apply_sand_fall(map): + pass + return map + +def visualize_map(map: ArrayLike): + X, Y = np.nonzero(map == SAND_REST) + x0 = max(min(X) - 2, 0) + x1 = min(max(X) + 3, map.shape[0]) + y0 = max(min(Y) - 2, 0) + y1 = min(max(Y) + 3, map.shape[1]) + for row in map[x0:x1, y0:y1].T: + print(''.join((chr(x) for x in row))) + + +map_1 = sim(lines) # 885 +map_2 = sim(lines, True) # 28690 (+1) +print(f'Part 1: {(map_1==SAND_REST).sum()}') +print(f'Part 2: {(map_2==SAND_REST).sum()+(map_2==SAND_SOURCE).sum()}') +if input('Print Part 1 visualization? [y/N]: ').lower() == 'y': + visualize_map(map_1) + print() +if input('Print Part 2 visualization? [y/N]: ').lower() == 'y': + visualize_map(map_2) diff --git a/2022/input/14 b/2022/input/14 new file mode 100644 index 0000000..20b8c10 --- /dev/null +++ b/2022/input/14 @@ -0,0 +1,163 @@ +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +533,137 -> 533,135 -> 533,137 -> 535,137 -> 535,131 -> 535,137 -> 537,137 -> 537,128 -> 537,137 -> 539,137 -> 539,130 -> 539,137 -> 541,137 -> 541,135 -> 541,137 -> 543,137 -> 543,135 -> 543,137 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +533,137 -> 533,135 -> 533,137 -> 535,137 -> 535,131 -> 535,137 -> 537,137 -> 537,128 -> 537,137 -> 539,137 -> 539,130 -> 539,137 -> 541,137 -> 541,135 -> 541,137 -> 543,137 -> 543,135 -> 543,137 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +491,32 -> 495,32 +502,89 -> 502,79 -> 502,89 -> 504,89 -> 504,84 -> 504,89 -> 506,89 -> 506,85 -> 506,89 -> 508,89 -> 508,86 -> 508,89 -> 510,89 -> 510,88 -> 510,89 -> 512,89 -> 512,85 -> 512,89 +515,103 -> 515,107 -> 512,107 -> 512,115 -> 523,115 -> 523,107 -> 520,107 -> 520,103 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +556,167 -> 556,168 -> 566,168 -> 566,167 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +483,23 -> 498,23 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +485,38 -> 489,38 +502,89 -> 502,79 -> 502,89 -> 504,89 -> 504,84 -> 504,89 -> 506,89 -> 506,85 -> 506,89 -> 508,89 -> 508,86 -> 508,89 -> 510,89 -> 510,88 -> 510,89 -> 512,89 -> 512,85 -> 512,89 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +557,171 -> 557,172 -> 573,172 -> 573,171 +480,47 -> 480,50 -> 472,50 -> 472,56 -> 489,56 -> 489,50 -> 483,50 -> 483,47 +500,74 -> 504,74 +533,137 -> 533,135 -> 533,137 -> 535,137 -> 535,131 -> 535,137 -> 537,137 -> 537,128 -> 537,137 -> 539,137 -> 539,130 -> 539,137 -> 541,137 -> 541,135 -> 541,137 -> 543,137 -> 543,135 -> 543,137 +497,26 -> 501,26 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +497,76 -> 501,76 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +491,76 -> 495,76 +502,89 -> 502,79 -> 502,89 -> 504,89 -> 504,84 -> 504,89 -> 506,89 -> 506,85 -> 506,89 -> 508,89 -> 508,86 -> 508,89 -> 510,89 -> 510,88 -> 510,89 -> 512,89 -> 512,85 -> 512,89 +502,89 -> 502,79 -> 502,89 -> 504,89 -> 504,84 -> 504,89 -> 506,89 -> 506,85 -> 506,89 -> 508,89 -> 508,86 -> 508,89 -> 510,89 -> 510,88 -> 510,89 -> 512,89 -> 512,85 -> 512,89 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +533,137 -> 533,135 -> 533,137 -> 535,137 -> 535,131 -> 535,137 -> 537,137 -> 537,128 -> 537,137 -> 539,137 -> 539,130 -> 539,137 -> 541,137 -> 541,135 -> 541,137 -> 543,137 -> 543,135 -> 543,137 +515,103 -> 515,107 -> 512,107 -> 512,115 -> 523,115 -> 523,107 -> 520,107 -> 520,103 +556,167 -> 556,168 -> 566,168 -> 566,167 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +502,89 -> 502,79 -> 502,89 -> 504,89 -> 504,84 -> 504,89 -> 506,89 -> 506,85 -> 506,89 -> 508,89 -> 508,86 -> 508,89 -> 510,89 -> 510,88 -> 510,89 -> 512,89 -> 512,85 -> 512,89 +494,35 -> 498,35 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +497,38 -> 501,38 +533,137 -> 533,135 -> 533,137 -> 535,137 -> 535,131 -> 535,137 -> 537,137 -> 537,128 -> 537,137 -> 539,137 -> 539,130 -> 539,137 -> 541,137 -> 541,135 -> 541,137 -> 543,137 -> 543,135 -> 543,137 +488,35 -> 492,35 +502,89 -> 502,79 -> 502,89 -> 504,89 -> 504,84 -> 504,89 -> 506,89 -> 506,85 -> 506,89 -> 508,89 -> 508,86 -> 508,89 -> 510,89 -> 510,88 -> 510,89 -> 512,89 -> 512,85 -> 512,89 +522,122 -> 527,122 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +480,47 -> 480,50 -> 472,50 -> 472,56 -> 489,56 -> 489,50 -> 483,50 -> 483,47 +533,137 -> 533,135 -> 533,137 -> 535,137 -> 535,131 -> 535,137 -> 537,137 -> 537,128 -> 537,137 -> 539,137 -> 539,130 -> 539,137 -> 541,137 -> 541,135 -> 541,137 -> 543,137 -> 543,135 -> 543,137 +503,76 -> 507,76 +511,92 -> 511,95 -> 507,95 -> 507,100 -> 517,100 -> 517,95 -> 514,95 -> 514,92 +502,89 -> 502,79 -> 502,89 -> 504,89 -> 504,84 -> 504,89 -> 506,89 -> 506,85 -> 506,89 -> 508,89 -> 508,86 -> 508,89 -> 510,89 -> 510,88 -> 510,89 -> 512,89 -> 512,85 -> 512,89 +515,103 -> 515,107 -> 512,107 -> 512,115 -> 523,115 -> 523,107 -> 520,107 -> 520,103 +533,137 -> 533,135 -> 533,137 -> 535,137 -> 535,131 -> 535,137 -> 537,137 -> 537,128 -> 537,137 -> 539,137 -> 539,130 -> 539,137 -> 541,137 -> 541,135 -> 541,137 -> 543,137 -> 543,135 -> 543,137 +488,59 -> 488,61 -> 485,61 -> 485,69 -> 498,69 -> 498,61 -> 493,61 -> 493,59 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +519,124 -> 524,124 +502,89 -> 502,79 -> 502,89 -> 504,89 -> 504,84 -> 504,89 -> 506,89 -> 506,85 -> 506,89 -> 508,89 -> 508,86 -> 508,89 -> 510,89 -> 510,88 -> 510,89 -> 512,89 -> 512,85 -> 512,89 +502,89 -> 502,79 -> 502,89 -> 504,89 -> 504,84 -> 504,89 -> 506,89 -> 506,85 -> 506,89 -> 508,89 -> 508,86 -> 508,89 -> 510,89 -> 510,88 -> 510,89 -> 512,89 -> 512,85 -> 512,89 +494,74 -> 498,74 +525,120 -> 530,120 +480,47 -> 480,50 -> 472,50 -> 472,56 -> 489,56 -> 489,50 -> 483,50 -> 483,47 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +502,89 -> 502,79 -> 502,89 -> 504,89 -> 504,84 -> 504,89 -> 506,89 -> 506,85 -> 506,89 -> 508,89 -> 508,86 -> 508,89 -> 510,89 -> 510,88 -> 510,89 -> 512,89 -> 512,85 -> 512,89 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +480,47 -> 480,50 -> 472,50 -> 472,56 -> 489,56 -> 489,50 -> 483,50 -> 483,47 +502,89 -> 502,79 -> 502,89 -> 504,89 -> 504,84 -> 504,89 -> 506,89 -> 506,85 -> 506,89 -> 508,89 -> 508,86 -> 508,89 -> 510,89 -> 510,88 -> 510,89 -> 512,89 -> 512,85 -> 512,89 +509,38 -> 513,38 +533,124 -> 538,124 +488,59 -> 488,61 -> 485,61 -> 485,69 -> 498,69 -> 498,61 -> 493,61 -> 493,59 +480,47 -> 480,50 -> 472,50 -> 472,56 -> 489,56 -> 489,50 -> 483,50 -> 483,47 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +533,137 -> 533,135 -> 533,137 -> 535,137 -> 535,131 -> 535,137 -> 537,137 -> 537,128 -> 537,137 -> 539,137 -> 539,130 -> 539,137 -> 541,137 -> 541,135 -> 541,137 -> 543,137 -> 543,135 -> 543,137 +533,137 -> 533,135 -> 533,137 -> 535,137 -> 535,131 -> 535,137 -> 537,137 -> 537,128 -> 537,137 -> 539,137 -> 539,130 -> 539,137 -> 541,137 -> 541,135 -> 541,137 -> 543,137 -> 543,135 -> 543,137 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +488,59 -> 488,61 -> 485,61 -> 485,69 -> 498,69 -> 498,61 -> 493,61 -> 493,59 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +494,29 -> 498,29 +482,43 -> 482,44 -> 487,44 +515,103 -> 515,107 -> 512,107 -> 512,115 -> 523,115 -> 523,107 -> 520,107 -> 520,103 +533,137 -> 533,135 -> 533,137 -> 535,137 -> 535,131 -> 535,137 -> 537,137 -> 537,128 -> 537,137 -> 539,137 -> 539,130 -> 539,137 -> 541,137 -> 541,135 -> 541,137 -> 543,137 -> 543,135 -> 543,137 +521,118 -> 526,118 +502,89 -> 502,79 -> 502,89 -> 504,89 -> 504,84 -> 504,89 -> 506,89 -> 506,85 -> 506,89 -> 508,89 -> 508,86 -> 508,89 -> 510,89 -> 510,88 -> 510,89 -> 512,89 -> 512,85 -> 512,89 +502,89 -> 502,79 -> 502,89 -> 504,89 -> 504,84 -> 504,89 -> 506,89 -> 506,85 -> 506,89 -> 508,89 -> 508,86 -> 508,89 -> 510,89 -> 510,88 -> 510,89 -> 512,89 -> 512,85 -> 512,89 +515,103 -> 515,107 -> 512,107 -> 512,115 -> 523,115 -> 523,107 -> 520,107 -> 520,103 +515,122 -> 520,122 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +502,89 -> 502,79 -> 502,89 -> 504,89 -> 504,84 -> 504,89 -> 506,89 -> 506,85 -> 506,89 -> 508,89 -> 508,86 -> 508,89 -> 510,89 -> 510,88 -> 510,89 -> 512,89 -> 512,85 -> 512,89 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +533,137 -> 533,135 -> 533,137 -> 535,137 -> 535,131 -> 535,137 -> 537,137 -> 537,128 -> 537,137 -> 539,137 -> 539,130 -> 539,137 -> 541,137 -> 541,135 -> 541,137 -> 543,137 -> 543,135 -> 543,137 +557,171 -> 557,172 -> 573,172 -> 573,171 +533,137 -> 533,135 -> 533,137 -> 535,137 -> 535,131 -> 535,137 -> 537,137 -> 537,128 -> 537,137 -> 539,137 -> 539,130 -> 539,137 -> 541,137 -> 541,135 -> 541,137 -> 543,137 -> 543,135 -> 543,137 +488,59 -> 488,61 -> 485,61 -> 485,69 -> 498,69 -> 498,61 -> 493,61 -> 493,59 +511,92 -> 511,95 -> 507,95 -> 507,100 -> 517,100 -> 517,95 -> 514,95 -> 514,92 +480,47 -> 480,50 -> 472,50 -> 472,56 -> 489,56 -> 489,50 -> 483,50 -> 483,47 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +518,120 -> 523,120 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +488,59 -> 488,61 -> 485,61 -> 485,69 -> 498,69 -> 498,61 -> 493,61 -> 493,59 +533,137 -> 533,135 -> 533,137 -> 535,137 -> 535,131 -> 535,137 -> 537,137 -> 537,128 -> 537,137 -> 539,137 -> 539,130 -> 539,137 -> 541,137 -> 541,135 -> 541,137 -> 543,137 -> 543,135 -> 543,137 +533,137 -> 533,135 -> 533,137 -> 535,137 -> 535,131 -> 535,137 -> 537,137 -> 537,128 -> 537,137 -> 539,137 -> 539,130 -> 539,137 -> 541,137 -> 541,135 -> 541,137 -> 543,137 -> 543,135 -> 543,137 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +498,19 -> 502,19 +501,16 -> 505,16 +511,92 -> 511,95 -> 507,95 -> 507,100 -> 517,100 -> 517,95 -> 514,95 -> 514,92 +488,59 -> 488,61 -> 485,61 -> 485,69 -> 498,69 -> 498,61 -> 493,61 -> 493,59 +515,103 -> 515,107 -> 512,107 -> 512,115 -> 523,115 -> 523,107 -> 520,107 -> 520,103 +482,43 -> 482,44 -> 487,44 +502,89 -> 502,79 -> 502,89 -> 504,89 -> 504,84 -> 504,89 -> 506,89 -> 506,85 -> 506,89 -> 508,89 -> 508,86 -> 508,89 -> 510,89 -> 510,88 -> 510,89 -> 512,89 -> 512,85 -> 512,89 +480,47 -> 480,50 -> 472,50 -> 472,56 -> 489,56 -> 489,50 -> 483,50 -> 483,47 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +503,38 -> 507,38 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +506,35 -> 510,35 +556,167 -> 556,168 -> 566,168 -> 566,167 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +504,19 -> 508,19 +492,19 -> 496,19 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +500,35 -> 504,35 +495,16 -> 499,16 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +502,89 -> 502,79 -> 502,89 -> 504,89 -> 504,84 -> 504,89 -> 506,89 -> 506,85 -> 506,89 -> 508,89 -> 508,86 -> 508,89 -> 510,89 -> 510,88 -> 510,89 -> 512,89 -> 512,85 -> 512,89 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +500,29 -> 504,29 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +511,92 -> 511,95 -> 507,95 -> 507,100 -> 517,100 -> 517,95 -> 514,95 -> 514,92 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +511,92 -> 511,95 -> 507,95 -> 507,100 -> 517,100 -> 517,95 -> 514,95 -> 514,92 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +512,124 -> 517,124 +557,171 -> 557,172 -> 573,172 -> 573,171 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +511,92 -> 511,95 -> 507,95 -> 507,100 -> 517,100 -> 517,95 -> 514,95 -> 514,92 +529,122 -> 534,122 +533,137 -> 533,135 -> 533,137 -> 535,137 -> 535,131 -> 535,137 -> 537,137 -> 537,128 -> 537,137 -> 539,137 -> 539,130 -> 539,137 -> 541,137 -> 541,135 -> 541,137 -> 543,137 -> 543,135 -> 543,137 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +503,32 -> 507,32 +491,38 -> 495,38 +497,32 -> 501,32 +526,124 -> 531,124 +515,103 -> 515,107 -> 512,107 -> 512,115 -> 523,115 -> 523,107 -> 520,107 -> 520,103 +533,137 -> 533,135 -> 533,137 -> 535,137 -> 535,131 -> 535,137 -> 537,137 -> 537,128 -> 537,137 -> 539,137 -> 539,130 -> 539,137 -> 541,137 -> 541,135 -> 541,137 -> 543,137 -> 543,135 -> 543,137 +511,92 -> 511,95 -> 507,95 -> 507,100 -> 517,100 -> 517,95 -> 514,95 -> 514,92 +544,163 -> 544,161 -> 544,163 -> 546,163 -> 546,153 -> 546,163 -> 548,163 -> 548,158 -> 548,163 -> 550,163 -> 550,159 -> 550,163 -> 552,163 -> 552,161 -> 552,163 -> 554,163 -> 554,159 -> 554,163 -> 556,163 -> 556,158 -> 556,163 -> 558,163 -> 558,156 -> 558,163 -> 560,163 -> 560,156 -> 560,163 +534,150 -> 534,145 -> 534,150 -> 536,150 -> 536,147 -> 536,150 -> 538,150 -> 538,146 -> 538,150 -> 540,150 -> 540,146 -> 540,150 -> 542,150 -> 542,146 -> 542,150 -> 544,150 -> 544,144 -> 544,150 -> 546,150 -> 546,141 -> 546,150 -> 548,150 -> 548,143 -> 548,150 -> 550,150 -> 550,143 -> 550,150 -> 552,150 -> 552,141 -> 552,150 +497,72 -> 501,72 +498,13 -> 502,13 +533,137 -> 533,135 -> 533,137 -> 535,137 -> 535,131 -> 535,137 -> 537,137 -> 537,128 -> 537,137 -> 539,137 -> 539,130 -> 539,137 -> 541,137 -> 541,135 -> 541,137 -> 543,137 -> 543,135 -> 543,137 +488,59 -> 488,61 -> 485,61 -> 485,69 -> 498,69 -> 498,61 -> 493,61 -> 493,59 +502,89 -> 502,79 -> 502,89 -> 504,89 -> 504,84 -> 504,89 -> 506,89 -> 506,85 -> 506,89 -> 508,89 -> 508,86 -> 508,89 -> 510,89 -> 510,88 -> 510,89 -> 512,89 -> 512,85 -> 512,89