From f342df95c5b3635c0a2febd17804ebabf521c7a4 Mon Sep 17 00:00:00 2001 From: Tobias Radloff Date: Sun, 14 Dec 2025 00:11:19 +0100 Subject: [PATCH] Day 12 --- day12.py | 80 ++++ day12input.txt | 1030 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 1110 insertions(+) create mode 100644 day12.py create mode 100644 day12input.txt diff --git a/day12.py b/day12.py new file mode 100644 index 0000000..1ebcb7d --- /dev/null +++ b/day12.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python + +# https://adventofcode.com/2025/day/12 + +import re + + +def prep_data(filename): + shape_re = re.compile(r"\d:") + region_re = re.compile(r"\d+x\d+:") + shapes, regions, quantities = {}, [], [] + + f = open(filename, "r") + lines = [l.rstrip("\n") for l in f.readlines()] + f.close() + + while lines != []: + line = lines.pop(0) + + # shape + if shape_re.match(line): + tmp = [] + # read shape lines + while True: + l = lines.pop(0) + if l == "": + break + else: + tmp.append(l) + + # parse shape + shape = [] + for i in range(len(tmp)): + for j in range(len(tmp[0])): + if tmp[i][j] == "#": + shape.append((i, j)) + shapes["shape-" + line[:-1]] = shape + + # region & quantities + elif region_re.match(line): + tmp = line.split(" ") + regions.append(list(map(int, tmp.pop(0)[:-1].split("x")))) + quantities.append(list(map(int, tmp))) + + return shapes, regions, quantities + + +def solve_part_1() -> int: + shapes, regions, quantities = prep_data("day12input.txt") + areas = [len(shape) for shape in shapes] + + solvable, unsolvable, dont_know = 0, 0, 0 + + # loop over problems + for i in range(len(regions)): + board = regions[i] + quantity = quantities[i] + + # simple solvability check + if board[0] * board[1] < sum(list(map(lambda a, q: a * q, areas, quantity))): + print(f"Problem {i} is unsolvable") + unsolvable += 1 + + # check if a tileset of 3x3 squares would fit in theory + elif (board[0] // 3) * (board[1] // 3) >= sum(quantity): + print(f"Problem {i} is solvable") + solvable += 1 + + else: + print(f"don't know about problem {i}") + dont_know += 1 + + print(f"{solvable=}") + print(f"{unsolvable=}") + print(f"{dont_know=}") + return solvable + + +# solve part 1 +print(solve_part_1()) diff --git a/day12input.txt b/day12input.txt new file mode 100644 index 0000000..3565f43 --- /dev/null +++ b/day12input.txt @@ -0,0 +1,1030 @@ +0: +.## +##. +#.. + +1: +#.# +### +#.# + +2: +### +.## +..# + +3: +#.# +### +##. + +4: +### +##. +##. + +5: +### +#.# +#.# + +36x46: 46 47 43 46 36 38 +36x50: 34 33 29 32 25 39 +40x38: 20 25 27 28 24 32 +46x49: 46 31 34 34 42 52 +38x41: 44 46 38 35 38 40 +41x47: 41 53 46 54 52 48 +48x47: 44 56 70 54 66 55 +35x41: 38 35 41 36 35 37 +39x47: 36 24 37 33 23 41 +41x46: 50 45 57 48 53 39 +47x45: 55 58 47 50 59 56 +49x39: 48 53 56 47 43 48 +42x43: 34 51 49 51 52 38 +48x35: 23 31 42 20 31 29 +40x41: 46 34 37 40 38 58 +46x36: 50 35 41 53 33 45 +47x47: 48 35 29 37 36 40 +40x37: 40 43 26 38 38 42 +35x35: 21 20 15 22 28 15 +46x41: 25 38 34 28 41 29 +50x40: 36 39 33 32 37 31 +37x49: 33 35 22 36 39 26 +48x35: 45 39 41 46 40 48 +42x50: 36 36 30 41 41 40 +47x50: 43 29 37 41 44 46 +38x50: 45 38 59 40 53 58 +45x38: 35 32 28 29 31 24 +35x42: 22 24 26 21 34 27 +37x47: 56 39 36 45 46 48 +35x49: 41 38 50 45 42 48 +47x43: 40 30 28 42 35 35 +41x43: 31 24 37 29 32 28 +45x46: 61 57 54 60 38 51 +48x44: 34 55 65 60 49 58 +45x48: 47 48 61 64 55 56 +43x46: 43 58 49 52 57 43 +45x46: 51 58 53 50 53 53 +35x36: 22 28 39 28 35 40 +45x36: 27 30 35 30 25 33 +36x48: 41 47 29 58 48 40 +42x45: 31 33 30 47 32 36 +39x36: 28 28 26 20 25 29 +41x38: 31 28 27 25 18 26 +47x36: 32 33 30 26 29 30 +43x41: 44 40 57 43 47 42 +45x49: 47 67 65 59 50 50 +48x38: 49 31 24 34 20 33 +37x35: 24 18 15 32 20 22 +46x49: 52 53 70 57 51 64 +35x46: 39 30 52 46 36 46 +45x43: 43 57 42 53 46 54 +37x43: 26 29 24 27 27 35 +39x47: 36 28 34 25 34 37 +46x38: 37 32 51 44 49 55 +47x42: 58 51 44 58 50 44 +49x50: 62 59 71 59 56 71 +35x40: 36 35 37 40 34 34 +40x41: 53 34 45 53 41 30 +39x43: 50 36 56 44 50 26 +48x38: 31 59 50 45 44 48 +38x41: 28 28 24 30 23 22 +40x44: 30 25 26 30 37 33 +49x38: 53 56 60 29 44 48 +40x46: 31 34 40 41 30 19 +38x39: 30 29 30 23 19 25 +50x37: 32 31 26 37 32 34 +44x41: 46 37 54 42 46 54 +40x48: 62 47 40 60 44 45 +47x50: 68 55 67 59 71 45 +46x49: 64 46 45 68 63 61 +41x38: 24 22 27 27 28 27 +39x44: 49 46 45 36 47 43 +45x49: 38 29 52 45 33 43 +44x46: 36 36 36 48 29 25 +36x37: 30 23 48 37 32 36 +38x46: 29 33 38 25 28 27 +48x48: 49 34 35 36 60 42 +44x43: 33 35 32 31 36 28 +38x35: 22 18 20 27 24 21 +50x42: 43 33 28 36 43 40 +47x49: 27 40 47 34 38 53 +44x47: 56 43 44 67 61 47 +46x45: 47 49 59 63 44 56 +41x36: 24 28 22 21 30 30 +44x50: 35 39 43 36 31 40 +40x38: 48 36 42 35 32 44 +46x42: 28 29 38 38 45 32 +42x42: 30 44 29 37 27 29 +48x41: 39 44 34 26 32 32 +40x50: 29 40 32 34 32 41 +41x44: 46 60 47 39 43 43 +42x38: 15 38 35 29 23 27 +38x37: 45 39 42 38 28 28 +44x44: 46 59 50 45 55 42 +40x35: 40 38 37 32 38 32 +46x48: 43 34 34 49 41 39 +41x39: 33 22 35 37 19 22 +46x37: 28 28 28 30 36 30 +49x44: 49 55 68 55 53 52 +38x35: 38 40 35 30 34 29 +50x49: 50 59 80 64 71 52 +40x36: 30 26 18 29 28 25 +39x37: 33 29 42 36 46 36 +47x50: 42 47 40 33 45 33 +48x49: 47 43 41 39 45 41 +43x47: 58 45 46 61 59 43 +43x50: 32 49 30 31 42 39 +38x37: 29 33 32 37 40 43 +40x39: 23 27 32 27 27 33 +38x37: 41 31 42 37 22 46 +36x35: 25 28 17 25 19 17 +38x42: 47 58 29 37 35 40 +40x40: 19 36 32 29 30 23 +39x37: 39 31 39 45 31 38 +38x45: 42 32 25 37 22 21 +48x35: 36 47 39 39 49 46 +41x36: 28 22 22 33 22 28 +35x40: 34 31 50 36 29 37 +50x36: 47 48 44 51 39 48 +50x46: 41 34 44 46 38 37 +43x35: 32 35 39 40 45 39 +40x43: 48 45 38 39 49 46 +42x44: 40 57 50 46 47 43 +40x43: 39 39 42 45 48 50 +38x37: 29 51 31 26 45 32 +47x35: 41 40 49 42 37 45 +45x43: 33 36 37 29 38 37 +42x42: 37 35 27 36 28 32 +45x37: 51 35 43 47 40 43 +46x44: 44 33 33 36 29 34 +39x45: 48 38 45 49 46 45 +39x45: 36 45 32 29 25 28 +45x36: 43 29 30 28 27 22 +50x49: 37 42 35 55 49 37 +40x50: 51 57 44 47 47 61 +39x37: 37 32 28 46 38 40 +37x49: 29 27 36 27 30 42 +35x36: 26 39 37 27 32 32 +35x46: 42 39 40 35 47 45 +42x50: 34 44 38 39 37 32 +44x46: 31 39 33 38 37 32 +49x50: 59 73 69 61 60 55 +43x40: 48 42 44 37 51 44 +37x41: 20 34 36 20 19 27 +50x45: 45 38 40 33 42 41 +46x48: 60 50 58 64 58 51 +35x50: 21 32 35 14 30 44 +50x41: 68 48 53 42 58 51 +42x35: 39 39 45 30 34 41 +39x38: 23 32 27 23 27 23 +49x35: 36 57 51 44 28 47 +42x49: 52 54 61 62 43 46 +35x45: 34 30 49 46 41 42 +44x39: 30 29 40 21 23 38 +43x48: 42 35 44 42 32 29 +45x45: 59 40 45 55 57 57 +44x41: 34 32 24 34 31 27 +42x37: 29 34 24 28 27 26 +43x36: 21 21 19 31 34 41 +46x42: 35 35 27 54 31 28 +47x50: 68 67 54 49 65 60 +36x40: 28 27 22 36 18 24 +41x42: 33 32 28 30 29 29 +48x44: 25 40 38 45 38 38 +46x38: 30 32 25 35 27 30 +42x36: 32 28 25 29 24 29 +40x48: 50 50 43 55 38 59 +48x48: 71 53 44 60 57 71 +39x49: 50 56 39 36 53 59 +49x42: 34 41 31 39 45 34 +36x50: 43 35 50 54 48 47 +39x38: 26 27 25 15 34 29 +36x46: 43 44 33 37 50 47 +36x44: 38 35 38 48 38 46 +45x37: 45 48 36 40 43 44 +49x45: 61 60 52 47 55 65 +44x40: 37 53 40 40 57 41 +49x43: 61 48 58 52 55 53 +36x50: 49 48 47 48 44 42 +41x43: 38 47 42 47 49 46 +46x39: 37 33 31 35 23 35 +43x36: 29 25 31 24 32 27 +35x49: 40 43 51 35 54 41 +46x35: 25 32 31 25 25 26 +39x38: 24 31 28 16 31 25 +43x39: 30 39 20 32 34 27 +47x36: 30 28 29 33 29 31 +38x35: 19 17 37 18 19 22 +36x38: 14 30 30 23 19 27 +49x47: 55 51 56 74 57 60 +42x43: 40 41 45 42 51 57 +46x41: 27 36 25 29 34 44 +39x47: 34 26 36 38 34 27 +37x41: 29 44 34 47 39 37 +44x36: 28 28 29 28 26 29 +38x44: 40 34 44 45 49 45 +37x42: 32 31 18 38 30 18 +37x39: 42 38 39 31 43 31 +38x42: 26 40 43 44 49 40 +40x40: 38 45 44 40 41 38 +40x47: 28 33 37 33 39 24 +35x36: 33 15 24 23 19 18 +45x50: 45 63 53 57 62 62 +38x35: 32 25 38 37 34 39 +39x44: 48 46 41 44 46 40 +38x42: 43 42 38 40 40 43 +43x45: 41 32 54 62 58 49 +37x46: 35 37 31 21 34 21 +37x47: 48 42 47 50 40 42 +37x36: 17 36 18 24 18 31 +44x44: 30 34 34 39 27 32 +37x41: 29 25 23 23 28 28 +49x50: 37 44 57 38 33 46 +47x41: 29 33 27 36 33 36 +49x38: 36 28 32 33 31 32 +42x41: 30 36 35 24 32 24 +43x47: 60 51 61 38 57 48 +44x49: 43 37 35 35 35 38 +50x41: 60 51 47 58 43 58 +36x39: 22 25 25 32 24 27 +36x39: 45 40 36 26 35 37 +36x47: 47 47 45 38 46 39 +38x48: 21 37 38 26 41 28 +50x35: 43 54 45 51 31 45 +49x47: 57 69 53 64 58 52 +40x46: 47 46 37 48 43 61 +36x50: 28 41 32 36 30 25 +49x37: 49 48 47 47 43 46 +43x46: 43 57 56 51 52 44 +41x50: 65 56 45 45 53 54 +43x49: 55 50 49 54 56 60 +44x48: 45 52 56 63 56 51 +46x38: 34 32 36 32 21 24 +49x36: 29 39 42 31 29 21 +44x42: 42 50 54 41 48 49 +43x44: 47 40 49 55 51 49 +48x40: 41 32 40 29 31 35 +38x43: 33 28 25 23 32 27 +47x44: 64 50 71 34 45 60 +45x50: 40 46 40 38 33 42 +35x49: 45 43 40 38 51 47 +36x45: 30 26 33 32 25 33 +48x44: 32 42 34 37 38 40 +38x41: 38 47 52 36 41 27 +39x43: 44 43 52 40 37 44 +49x36: 40 41 57 40 43 51 +36x42: 37 42 43 32 44 35 +50x41: 45 55 50 59 51 53 +41x47: 38 37 29 30 33 27 +36x50: 41 49 49 37 51 49 +42x37: 49 45 41 38 41 28 +37x44: 41 40 38 47 48 36 +47x39: 26 34 32 34 38 31 +50x46: 70 64 58 62 57 46 +47x44: 52 63 52 43 63 45 +37x35: 27 21 13 15 25 30 +45x48: 38 48 34 44 37 39 +46x49: 42 41 36 37 47 36 +46x46: 40 38 32 43 29 43 +35x49: 52 41 40 50 42 41 +42x46: 50 38 58 52 51 50 +39x49: 32 42 35 31 35 33 +41x40: 31 28 33 21 28 28 +50x39: 42 51 57 50 52 47 +48x40: 35 34 39 32 36 31 +43x47: 41 30 44 31 31 32 +49x47: 76 55 49 55 46 77 +49x45: 51 60 58 64 59 46 +36x41: 32 42 25 46 45 34 +47x45: 43 40 40 40 31 30 +42x43: 38 30 32 35 28 33 +47x41: 52 55 46 47 56 41 +35x46: 29 26 19 25 34 31 +49x47: 73 64 61 52 53 56 +36x49: 54 48 52 35 40 46 +47x49: 63 56 48 67 61 59 +45x41: 47 32 30 23 31 31 +50x36: 45 46 46 50 43 47 +41x47: 33 36 42 36 25 22 +37x50: 31 38 32 27 36 28 +47x35: 33 26 20 23 34 28 +46x39: 51 45 56 43 39 45 +50x46: 52 32 43 32 33 48 +35x36: 38 34 35 28 25 36 +43x43: 30 41 28 32 39 25 +50x50: 37 42 45 35 43 53 +49x41: 53 48 47 51 68 42 +39x40: 37 30 23 24 28 26 +47x43: 42 57 43 57 47 61 +45x36: 23 38 30 27 33 28 +47x50: 51 57 58 67 59 67 +37x37: 55 44 39 33 23 23 +39x38: 38 34 30 42 40 43 +35x43: 41 38 29 41 41 41 +43x50: 64 57 45 53 57 56 +37x46: 32 24 29 37 28 29 +43x36: 28 32 19 31 27 31 +39x48: 44 30 33 34 31 35 +38x46: 30 28 25 30 34 33 +44x50: 50 50 51 70 63 52 +41x47: 65 50 41 54 44 46 +41x39: 26 31 27 26 30 28 +41x43: 32 42 53 44 50 48 +47x50: 58 59 46 64 64 68 +36x37: 28 31 44 35 35 32 +39x35: 24 20 28 22 24 24 +37x39: 30 21 29 27 26 23 +37x37: 28 29 16 30 20 20 +49x44: 55 53 43 65 58 56 +42x36: 36 47 38 40 33 38 +47x44: 28 32 37 37 42 34 +42x40: 34 53 43 40 44 42 +47x47: 55 52 46 64 56 65 +39x38: 23 23 31 26 33 20 +44x49: 52 57 56 65 55 46 +49x36: 45 46 47 47 47 40 +38x43: 28 30 28 36 24 22 +46x46: 57 53 50 62 48 56 +46x37: 33 49 50 49 37 42 +44x44: 31 29 26 35 36 39 +44x45: 29 29 34 47 38 33 +44x38: 44 50 37 36 45 45 +35x44: 24 25 27 20 27 30 +47x45: 53 51 51 56 59 55 +47x37: 37 48 47 46 49 39 +49x41: 49 60 54 56 54 36 +46x50: 34 40 41 46 43 35 +41x38: 35 43 43 44 35 39 +45x39: 29 36 26 29 34 40 +42x50: 62 44 35 65 52 65 +50x45: 58 50 61 70 48 60 +50x38: 31 38 30 32 39 21 +38x47: 33 33 29 23 33 29 +43x43: 65 39 50 52 41 43 +49x42: 59 48 56 46 53 57 +36x39: 21 28 34 22 21 30 +49x48: 42 54 36 37 47 39 +46x50: 72 60 67 45 58 57 +45x49: 34 39 38 38 43 48 +44x49: 33 40 35 47 32 37 +40x38: 42 38 38 43 33 41 +43x50: 31 42 27 37 46 41 +47x43: 30 34 26 42 40 38 +35x44: 38 25 18 28 18 26 +43x44: 36 45 42 62 46 56 +44x47: 39 29 29 34 38 40 +43x40: 31 22 31 34 35 28 +39x35: 31 19 29 26 20 17 +43x44: 56 56 32 46 55 46 +36x45: 25 32 30 41 20 32 +43x50: 60 50 52 49 54 67 +35x49: 45 47 42 44 45 41 +39x40: 37 36 36 51 42 37 +40x47: 32 37 32 32 30 31 +39x45: 49 38 56 40 45 45 +35x45: 24 34 26 23 30 27 +43x45: 49 47 57 47 53 46 +37x41: 29 25 29 29 22 22 +42x49: 57 56 51 49 57 48 +49x44: 49 60 46 52 57 65 +45x45: 51 31 36 31 34 41 +41x49: 32 39 29 35 36 37 +43x47: 30 52 28 36 34 29 +41x39: 35 21 28 27 25 32 +36x35: 22 20 23 18 25 24 +50x45: 73 49 59 52 64 54 +44x50: 58 60 54 61 52 54 +47x37: 38 45 46 39 43 55 +48x41: 44 45 55 56 49 53 +42x42: 39 33 33 35 39 17 +44x38: 44 50 44 38 40 42 +50x42: 32 33 40 38 44 36 +48x37: 30 31 33 25 31 42 +42x41: 56 43 47 39 41 43 +42x44: 32 27 38 35 27 36 +36x44: 37 23 30 25 28 25 +47x35: 27 25 28 26 30 28 +38x39: 39 34 34 31 43 47 +49x45: 40 44 37 44 42 32 +42x48: 44 53 49 53 48 61 +43x38: 36 43 42 40 46 43 +37x36: 35 36 24 47 29 33 +41x49: 55 38 50 55 55 57 +42x48: 44 31 35 45 37 31 +48x48: 38 38 43 41 43 52 +38x45: 22 34 32 30 34 28 +50x38: 34 49 52 47 49 58 +47x50: 62 62 65 65 48 61 +39x39: 24 27 31 33 33 21 +46x37: 39 50 37 47 36 51 +40x48: 32 33 43 31 32 36 +36x48: 32 39 47 43 48 54 +48x50: 43 36 56 36 40 44 +35x40: 41 29 43 38 35 32 +50x37: 29 35 29 32 40 26 +45x35: 33 43 43 39 40 43 +35x40: 16 24 21 22 36 23 +50x41: 33 22 43 38 34 37 +44x38: 29 27 32 27 30 23 +45x37: 48 41 42 36 40 51 +40x45: 32 34 30 35 32 31 +47x39: 39 49 48 52 49 43 +46x35: 28 23 28 31 32 23 +42x50: 31 30 49 37 46 30 +44x50: 49 64 44 56 53 69 +41x40: 27 27 27 30 25 32 +50x46: 60 64 50 53 56 70 +42x46: 48 49 50 58 46 46 +38x50: 56 47 36 57 48 49 +40x42: 39 49 47 38 39 46 +38x35: 31 33 40 39 28 34 +48x45: 44 45 31 28 49 42 +40x38: 27 25 34 23 18 29 +37x38: 28 19 26 22 26 23 +37x35: 36 32 32 32 31 37 +40x48: 35 25 37 49 28 34 +43x38: 35 30 27 25 28 22 +38x43: 51 46 41 41 36 39 +39x37: 30 44 41 40 31 35 +44x39: 46 42 53 45 39 41 +46x42: 61 61 44 37 53 44 +48x48: 51 41 36 38 45 45 +49x39: 48 42 62 50 42 52 +49x38: 46 40 47 49 46 58 +41x36: 26 30 30 26 20 23 +40x50: 38 36 39 28 34 32 +44x39: 27 30 33 26 31 35 +44x37: 28 20 31 31 31 26 +48x45: 37 35 45 44 41 37 +35x38: 24 16 19 22 23 28 +48x46: 45 59 65 66 63 40 +47x40: 56 31 57 52 46 51 +37x48: 58 51 45 41 45 37 +42x40: 26 27 35 28 34 31 +45x45: 31 39 46 30 32 46 +40x44: 49 47 45 56 33 42 +37x47: 32 34 26 28 29 30 +35x35: 26 29 29 37 34 32 +43x44: 47 41 56 55 42 51 +41x48: 38 24 34 34 34 43 +35x48: 52 44 48 43 40 35 +36x44: 54 33 42 38 42 39 +47x48: 47 40 36 49 29 38 +44x45: 45 41 36 29 29 30 +48x44: 39 42 44 26 35 37 +39x40: 30 22 28 24 36 29 +49x38: 35 27 38 37 30 24 +43x40: 27 22 38 36 32 26 +50x41: 36 31 28 37 37 39 +42x44: 39 47 54 51 48 44 +43x39: 23 28 37 33 32 28 +39x36: 41 29 38 37 38 35 +45x47: 56 41 60 55 54 61 +42x46: 32 23 38 45 36 35 +35x37: 22 21 18 27 26 17 +50x50: 65 57 64 74 70 55 +36x37: 24 26 23 24 20 27 +50x45: 42 47 35 39 36 40 +46x49: 35 40 40 52 42 30 +50x38: 34 32 23 29 34 40 +48x41: 48 53 55 40 57 50 +45x39: 32 45 36 31 23 28 +49x47: 42 69 61 64 60 54 +50x48: 44 43 43 40 37 49 +50x42: 46 44 68 50 57 58 +42x36: 44 35 35 44 39 37 +40x41: 38 42 33 46 50 41 +35x44: 22 34 30 27 23 17 +49x37: 52 59 49 44 32 45 +36x45: 54 45 54 35 33 34 +38x38: 45 29 33 45 30 42 +50x48: 65 64 52 52 62 74 +44x49: 58 54 57 50 68 46 +46x39: 50 53 35 34 51 53 +45x47: 33 34 37 48 34 39 +47x47: 44 40 35 34 35 36 +39x46: 52 48 39 38 40 60 +35x48: 26 29 36 23 32 29 +38x35: 33 39 36 34 30 33 +39x35: 16 20 20 23 30 33 +46x36: 26 26 23 45 30 30 +39x49: 45 59 54 42 44 50 +41x35: 26 25 28 30 15 18 +44x47: 31 37 37 35 35 35 +45x45: 42 60 51 56 41 59 +41x42: 30 28 23 28 36 37 +44x40: 58 38 54 42 43 41 +40x36: 20 26 32 26 21 31 +38x36: 35 40 36 30 42 28 +39x42: 35 33 36 22 27 28 +36x46: 30 38 27 34 22 28 +43x41: 40 43 39 48 42 57 +39x50: 39 54 49 60 54 41 +38x44: 46 42 39 41 50 40 +38x41: 33 37 46 33 51 39 +50x46: 42 41 40 51 29 36 +35x35: 30 45 29 26 30 28 +49x47: 40 36 47 37 42 38 +43x36: 36 21 30 28 36 17 +46x35: 29 28 30 19 37 21 +46x50: 40 50 33 41 43 32 +36x38: 41 34 32 33 37 35 +36x37: 34 39 34 35 32 31 +41x40: 24 27 39 27 27 25 +42x47: 66 37 47 56 49 53 +45x50: 57 54 55 54 72 54 +38x39: 27 29 28 25 23 24 +47x43: 36 43 28 35 31 37 +35x39: 36 27 38 40 33 37 +47x45: 54 52 51 64 55 49 +47x39: 45 46 49 46 33 63 +46x43: 39 36 31 41 29 34 +50x50: 43 45 40 43 46 39 +35x39: 20 19 27 22 29 25 +37x38: 24 22 22 20 35 21 +39x45: 35 28 32 40 34 26 +40x46: 30 26 32 40 38 29 +41x46: 44 51 46 48 49 51 +45x46: 67 53 49 56 45 52 +49x48: 51 36 53 36 34 46 +36x46: 26 39 27 43 29 16 +46x37: 33 31 26 29 32 29 +45x49: 43 37 29 45 39 46 +37x43: 26 26 36 30 32 17 +47x41: 50 52 57 52 46 41 +49x40: 39 27 28 41 24 48 +40x46: 35 39 26 38 28 29 +40x40: 39 32 49 39 45 43 +44x36: 35 40 31 45 47 43 +49x47: 62 58 57 60 58 60 +43x35: 36 33 37 48 34 43 +44x48: 62 49 52 53 52 59 +40x40: 38 41 38 44 50 34 +48x39: 32 32 39 30 36 38 +37x42: 32 22 25 26 31 31 +40x47: 56 45 43 44 55 48 +35x50: 42 53 41 48 46 38 +50x46: 35 38 38 52 39 38 +38x37: 17 24 12 23 31 37 +47x46: 35 30 40 33 39 47 +38x38: 30 36 34 33 41 46 +35x45: 40 39 31 50 45 36 +36x42: 61 40 43 40 23 33 +36x44: 17 25 38 27 30 31 +47x48: 52 60 60 57 65 52 +44x49: 29 44 41 33 37 40 +42x47: 59 48 56 48 53 43 +37x41: 26 26 26 27 19 31 +40x48: 49 45 53 56 44 49 +39x42: 29 32 31 22 30 37 +50x42: 32 37 38 44 37 35 +41x45: 54 46 40 49 49 47 +35x46: 37 45 42 34 43 46 +44x50: 45 59 60 61 53 58 +50x37: 34 30 29 41 24 34 +36x37: 32 40 29 40 35 28 +40x39: 32 24 30 26 31 25 +42x43: 35 28 37 36 34 26 +50x50: 64 58 73 60 57 74 +42x37: 37 44 29 44 48 35 +38x50: 29 40 37 36 26 23 +46x39: 45 53 45 39 47 47 +41x42: 31 24 26 39 35 26 +43x37: 37 43 47 45 38 35 +37x37: 24 31 21 28 24 15 +46x48: 66 68 46 62 56 43 +50x49: 37 42 51 39 45 41 +44x48: 39 26 46 36 35 41 +42x42: 43 33 29 19 29 42 +49x46: 68 57 52 55 56 61 +41x47: 47 53 41 52 51 51 +50x38: 40 24 28 35 28 36 +46x40: 59 43 49 48 47 41 +37x40: 44 39 34 39 36 37 +39x42: 36 20 29 40 27 29 +37x40: 26 34 30 20 24 22 +48x39: 36 44 40 30 22 35 +39x45: 28 32 32 30 35 38 +43x50: 56 59 46 54 54 61 +44x38: 38 27 20 23 26 34 +42x44: 29 29 31 30 42 34 +44x45: 48 57 44 48 50 56 +36x41: 21 29 28 26 25 26 +50x43: 39 41 30 40 32 42 +36x48: 43 39 46 43 46 49 +50x43: 49 58 52 58 52 60 +43x38: 31 21 27 23 33 32 +49x42: 62 48 57 57 46 50 +46x38: 34 26 30 37 21 31 +36x42: 36 38 44 34 35 46 +47x41: 45 59 53 47 43 49 +48x42: 57 46 51 48 54 56 +42x41: 27 29 32 28 39 26 +46x40: 49 45 42 59 51 37 +35x35: 20 35 29 39 31 31 +39x46: 33 31 36 27 36 32 +39x36: 30 26 18 30 24 28 +48x49: 39 38 48 43 45 43 +49x47: 59 63 63 47 68 55 +50x46: 43 47 30 37 37 45 +48x44: 49 51 63 63 35 64 +35x36: 29 21 13 23 18 27 +40x39: 20 36 30 27 27 29 +40x48: 38 32 42 36 28 31 +44x48: 45 50 63 68 54 44 +50x40: 64 47 46 41 55 58 +35x40: 32 19 19 23 24 26 +42x46: 35 37 37 29 31 41 +42x45: 40 25 41 28 33 42 +44x39: 26 37 31 20 33 34 +39x48: 31 43 26 38 45 25 +48x39: 39 39 35 32 44 18 +41x50: 37 26 39 35 34 37 +45x41: 45 46 44 43 52 53 +45x35: 30 30 26 28 24 27 +38x38: 34 39 32 33 46 37 +40x36: 48 32 31 33 42 38 +38x48: 53 46 48 46 48 42 +49x50: 76 63 62 58 58 64 +41x41: 32 30 11 40 31 24 +42x43: 46 42 60 44 50 38 +46x45: 58 47 52 45 69 49 +48x44: 51 58 51 59 57 48 +49x36: 46 42 33 40 57 52 +43x47: 57 48 60 50 51 48 +48x40: 49 53 45 40 57 51 +41x45: 42 28 30 32 40 23 +50x47: 43 36 28 44 44 45 +41x41: 32 31 34 26 23 22 +41x37: 47 41 38 43 35 32 +41x37: 52 29 35 38 34 49 +49x44: 64 57 53 54 55 51 +48x48: 42 47 39 47 36 44 +43x44: 35 58 37 53 57 46 +44x41: 34 20 33 30 37 27 +35x50: 45 41 47 45 44 48 +38x46: 23 31 24 33 37 31 +36x41: 40 41 37 34 39 37 +44x45: 58 50 44 52 65 37 +44x49: 34 36 32 40 45 37 +36x36: 33 24 43 26 32 43 +38x47: 45 49 39 53 41 47 +50x36: 30 39 26 36 30 30 +44x46: 48 43 62 54 61 44 +36x47: 34 32 33 22 30 28 +40x41: 38 42 40 34 46 51 +45x42: 50 46 38 60 51 45 +48x35: 39 46 45 42 40 46 +37x45: 44 43 51 35 36 49 +44x50: 46 36 38 44 30 30 +42x37: 34 33 25 24 24 28 +43x49: 49 67 61 51 48 48 +42x46: 29 27 34 42 41 37 +50x45: 42 29 42 42 41 43 +43x38: 47 38 40 35 40 53 +49x47: 40 42 41 40 39 38 +50x40: 35 35 38 33 37 29 +38x40: 34 17 27 33 26 19 +41x36: 37 35 36 44 39 36 +44x49: 54 58 57 57 54 52 +50x37: 49 52 46 46 47 45 +38x43: 42 32 44 40 52 42 +41x42: 49 38 61 44 29 48 +41x49: 37 32 47 25 33 34 +45x48: 44 42 40 23 33 57 +40x48: 34 46 37 34 33 23 +42x49: 29 40 38 50 30 37 +45x35: 30 31 25 28 28 22 +46x37: 35 28 28 37 28 23 +48x47: 38 35 46 46 42 32 +39x48: 36 36 32 33 41 30 +46x40: 43 30 37 31 26 27 +36x44: 21 29 28 21 35 33 +46x44: 58 47 42 52 48 65 +41x44: 25 36 23 36 30 31 +42x44: 54 43 44 51 54 40 +39x45: 32 28 28 42 29 36 +46x40: 30 34 36 26 31 37 +36x45: 27 29 35 29 33 26 +42x47: 48 52 50 43 56 54 +42x49: 47 50 44 59 54 60 +38x36: 37 29 34 37 33 41 +41x40: 34 26 22 23 37 27 +36x47: 31 52 29 44 52 47 +50x41: 50 48 54 53 47 63 +38x39: 40 37 38 39 35 40 +45x46: 55 58 51 56 40 59 +35x42: 30 25 20 23 27 29 +45x43: 47 54 34 43 63 54 +46x41: 40 27 31 32 41 23 +49x40: 46 47 52 54 61 41 +39x35: 45 32 35 33 32 36 +41x42: 34 29 26 27 40 25 +38x35: 18 15 24 24 32 19 +44x50: 28 57 33 28 45 32 +45x50: 52 28 46 38 41 34 +40x35: 29 21 20 26 22 24 +45x35: 42 35 46 40 36 45 +45x45: 48 35 54 60 64 50 +42x37: 45 43 33 36 39 44 +40x50: 31 35 37 34 34 37 +46x49: 46 37 44 44 37 32 +41x49: 28 42 33 30 33 42 +35x42: 23 31 29 15 34 22 +45x43: 39 28 32 41 34 36 +35x38: 28 40 34 36 30 35 +35x44: 40 44 44 27 37 46 +46x35: 22 27 39 28 28 20 +40x47: 58 43 52 44 47 49 +44x35: 37 42 36 49 37 35 +41x46: 45 47 44 55 55 43 +36x36: 36 33 45 34 24 30 +45x44: 53 63 48 45 46 50 +46x48: 63 55 51 56 69 47 +42x42: 43 40 53 46 48 42 +46x47: 39 35 29 39 38 45 +47x40: 29 34 26 41 29 36 +44x35: 24 25 36 24 23 22 +36x48: 55 39 42 41 43 49 +36x42: 23 32 28 25 38 21 +42x47: 50 37 67 59 46 47 +35x39: 36 32 37 35 37 34 +43x48: 36 26 39 48 40 34 +48x35: 36 24 29 29 21 36 +49x42: 45 29 45 41 33 30 +39x42: 27 32 40 27 35 20 +50x35: 40 34 24 29 29 19 +47x38: 41 52 40 43 50 47 +41x42: 29 31 23 32 37 29 +42x50: 33 48 31 44 26 42 +46x36: 50 45 42 42 42 36 +48x45: 58 63 46 54 62 49 +43x36: 18 34 32 35 28 20 +40x36: 48 33 37 36 29 42 +38x46: 32 27 23 40 27 30 +37x45: 26 34 33 34 25 27 +40x37: 40 41 35 31 42 39 +42x46: 50 51 37 43 66 49 +47x47: 57 53 62 60 50 59 +42x48: 42 29 39 36 32 45 +41x49: 32 30 41 40 34 30 +49x48: 51 63 70 55 66 56 +40x50: 54 52 46 56 50 50 +43x41: 38 43 56 45 46 43 +44x49: 30 37 33 37 47 40 +45x35: 22 22 27 32 34 27 +46x41: 32 38 31 26 37 30 +50x43: 36 35 49 26 43 35 +42x38: 32 45 53 39 33 43 +48x44: 48 30 33 30 43 39 +41x50: 54 65 53 44 48 52 +37x36: 30 45 26 28 41 33 +40x38: 29 40 43 45 34 41 +37x50: 35 31 33 39 30 24 +42x42: 44 55 50 30 52 41 +50x40: 46 49 47 64 49 51 +40x42: 29 31 29 30 23 40 +44x43: 53 44 51 36 51 58 +43x47: 54 60 45 61 52 39 +47x35: 34 19 26 34 22 29 +42x50: 48 66 56 56 42 54 +47x47: 67 61 57 53 48 57 +40x42: 39 37 40 54 40 47 +47x48: 54 65 57 51 56 63 +48x36: 35 33 46 19 27 31 +39x46: 33 24 28 33 43 34 +37x44: 29 28 28 30 30 22 +42x49: 50 56 46 54 60 49 +36x35: 36 31 30 34 32 32 +43x37: 46 38 43 27 47 46 +48x43: 37 66 52 66 42 50 +36x50: 38 46 53 48 38 53 +39x36: 32 44 35 33 39 32 +39x49: 47 57 38 43 55 52 +44x43: 23 33 42 33 26 38 +39x41: 33 28 38 23 23 23 +42x42: 41 30 30 23 32 39 +49x36: 29 41 35 28 29 29 +42x39: 35 46 46 48 40 36 +44x40: 41 46 47 41 51 44 +38x42: 25 21 31 36 27 28 +49x48: 76 64 56 50 52 68 +37x49: 50 37 30 61 47 53 +48x40: 31 29 41 33 37 37 +43x42: 44 49 44 46 55 39 +38x44: 30 45 50 37 43 50 +47x39: 40 47 65 47 37 47 +35x46: 32 23 20 36 21 32 +44x49: 32 34 37 33 50 38 +50x42: 59 48 49 69 53 46 +42x44: 48 59 43 40 42 52 +45x46: 49 55 50 53 56 54 +40x35: 27 27 27 21 20 20 +48x40: 43 39 37 30 27 32 +42x49: 54 60 52 55 42 54 +42x40: 37 42 42 43 51 42 +35x36: 15 22 20 23 18 34 +47x40: 28 34 35 36 25 36 +42x46: 35 37 36 43 25 33 +38x43: 35 46 45 41 37 46 +48x36: 25 33 29 39 35 31 +49x39: 38 39 44 31 23 33 +49x46: 37 31 45 50 48 29 +44x48: 52 55 58 57 56 47 +43x47: 36 30 32 35 29 48 +39x45: 38 32 25 36 30 33 +37x39: 28 36 46 36 37 38 +40x49: 25 32 41 25 40 44 +45x46: 42 40 41 40 36 25 +43x45: 38 25 43 35 26 42 +48x47: 61 64 48 50 62 62 +50x42: 47 54 50 59 55 56 +39x37: 41 36 34 32 40 40 +44x41: 32 28 35 31 25 31 +47x49: 51 58 64 61 65 54 +43x38: 56 47 38 37 39 38 +37x47: 26 32 26 30 30 35 +39x45: 33 35 26 38 26 36 +50x35: 29 25 26 27 29 39 +48x45: 34 46 38 40 35 47 +50x38: 50 50 56 47 44 47 +37x44: 41 46 31 41 47 43 +37x41: 43 49 47 27 34 36 +44x38: 28 23 32 35 27 23 +37x41: 39 39 33 39 41 42 +39x43: 27 36 33 31 32 23 +39x41: 39 38 44 38 49 38 +48x45: 61 70 54 43 52 54 +45x50: 38 46 33 37 41 44 +41x37: 25 35 22 23 21 29 +49x41: 45 32 41 35 31 24 +45x35: 38 39 34 42 46 42 +41x45: 26 31 38 30 33 36 +39x35: 20 26 16 31 26 24 +46x37: 27 31 28 29 30 35 +38x36: 27 33 24 19 24 17 +35x41: 19 19 29 29 28 19 +47x46: 51 59 57 64 49 52 +41x46: 41 53 52 40 58 45 +40x48: 33 30 45 37 30 32 +38x39: 16 22 24 34 23 36 +43x43: 29 23 29 40 36 39 +36x38: 23 19 29 24 37 12 +39x40: 35 37 42 44 44 37 +39x44: 39 37 45 51 42 49 +37x38: 31 26 43 53 29 34 +44x50: 46 64 51 62 57 55 +50x45: 48 33 50 37 33 39 +45x43: 37 56 48 49 47 57 +39x41: 25 32 25 27 26 34 +44x38: 37 52 44 40 48 35 +39x48: 34 34 34 33 34 38 +37x49: 53 47 46 50 47 38 +40x37: 37 38 32 40 40 40 +45x42: 45 55 55 50 44 42 +49x40: 56 61 48 49 36 53 +36x39: 40 38 34 35 39 31 +46x49: 44 38 35 40 37 46 +37x40: 43 37 34 43 32 40 +44x38: 42 30 48 38 49 51 +48x44: 41 56 57 55 61 52 +39x35: 30 19 24 22 24 23 +44x40: 52 44 45 50 41 41 +49x47: 45 42 42 39 35 37 +48x45: 36 48 40 47 30 38 +48x43: 50 56 46 65 49 50 +44x38: 40 43 32 41 47 52 +46x37: 22 49 23 33 25 28 +42x42: 51 45 51 38 41 48 +46x36: 32 41 35 44 48 51 +49x41: 45 50 40 48 69 54 +44x37: 36 41 49 42 37 45 +48x42: 32 42 34 48 34 33 +49x46: 38 42 38 40 43 39 +38x40: 39 44 32 40 48 30 +46x42: 39 43 36 22 37 33 +43x47: 34 34 35 25 41 40 +37x35: 25 25 12 27 30 13 +36x39: 32 48 41 27 34 34 +36x41: 17 28 19 31 28 33 +38x40: 30 58 36 33 39 35 +42x43: 38 45 55 54 38 47 +44x42: 46 46 45 52 41 54 +41x50: 47 51 52 56 53 55 +48x50: 68 67 59 51 68 58 +42x35: 31 34 40 39 38 43 +49x47: 62 53 63 58 71 49 +37x41: 25 33 19 23 27 29 +46x46: 34 27 37 47 38 41 +47x42: 47 49 57 49 49 53 +43x39: 34 31 23 29 33 32 +48x50: 59 56 55 72 63 63 +35x46: 33 29 27 27 24 25 +43x43: 35 35 28 33 38 27 +43x39: 37 42 54 33 45 47 +35x48: 34 40 48 47 41 47 +50x41: 32 38 32 40 41 24 +38x40: 24 26 23 37 19 26 +49x41: 32 36 24 43 42 31 +48x42: 30 29 38 48 47 31 +43x50: 57 60 59 48 59 49 +35x35: 49 31 26 35 27 25 +45x41: 31 29 36 35 34 29 +41x49: 53 64 60 45 52 37 +41x38: 32 37 36 43 51 38 +37x50: 58 37 55 54 44 41 +49x50: 53 65 67 58 61 71 +46x35: 37 42 36 32 42 57 +43x47: 42 60 64 42 51 51 +37x45: 28 31 29 34 29 29 +48x35: 52 42 41 52 31 43 +38x43: 51 46 39 40 39 39 +36x42: 33 48 29 43 40 37 +49x46: 64 66 53 60 46 59 +37x45: 32 44 29 23 24 27 +50x37: 24 36 31 28 35 38 +41x50: 35 30 35 36 35 36 +48x50: 51 48 38 40 41 37 +35x42: 21 33 14 28 23 34 +35x46: 32 24 29 19 28 32 +40x38: 50 32 37 42 40 36 +42x35: 28 24 26 26 19 30 +37x35: 35 36 34 27 27 41 +37x46: 48 49 33 49 44 39 +44x49: 36 43 33 42 36 33 +43x42: 39 30 30 29 31 36 +40x44: 52 32 44 48 47 50 +47x38: 27 36 23 27 34 32 +46x44: 39 34 35 39 31 31 +49x39: 28 32 27 46 35 40 +48x48: 48 71 41 69 61 59 +44x48: 31 38 35 37 36 47 +50x43: 38 31 34 46 32 42 +35x36: 26 32 30 41 35 28 +49x35: 31 30 31 27 27 30 +46x48: 73 55 53 50 58 55 +39x46: 36 28 30 35 39 26 +49x37: 30 41 40 28 28 24 +46x45: 35 35 47 35 35 37 +47x35: 50 54 45 33 36 38 +37x43: 24 30 33 26 32 23 +50x36: 25 22 38 38 44 24 +44x39: 24 36 27 39 30 26 +38x42: 31 27 28 33 18 30 +43x49: 57 51 58 64 46 50 +35x37: 16 30 23 18 23 21 +50x40: 30 35 49 28 29 37 +43x44: 31 36 34 24 32 38 +35x45: 31 46 55 43 35 32 +39x46: 44 46 49 54 36 47 +40x43: 29 34 33 23 29 33 +38x48: 59 42 45 50 43 45 +43x35: 30 43 43 45 36 33 +44x44: 46 61 48 49 45 48 +36x46: 24 29 32 23 43 28 +47x50: 53 57 63 62 69 56 +47x39: 18 26 43 31 41 36 +48x48: 43 37 48 36 49 42 +42x39: 42 32 39 51 38 50 +48x37: 31 34 32 31 32 32 +37x45: 52 44 50 40 34 40 +43x43: 65 43 41 43 50 47 +41x40: 42 35 44 37 38 57 +44x47: 34 39 33 31 38 34 +36x48: 56 47 33 42 45 45 +41x39: 40 40 42 42 44 38 +50x37: 60 43 44 36 48 57 +43x45: 49 47 51 57 56 38 +46x41: 31 30 29 28 38 39 +41x40: 33 32 30 23 20 30 +42x35: 26 25 12 18 38 34 +36x47: 53 49 47 44 32 39 +37x36: 20 22 32 25 22 22 +41x39: 42 31 20 21 28 27 +36x38: 30 42 41 40 30 27 +44x47: 38 35 41 36 32 27 +40x47: 33 34 31 22 40 34 +50x46: 55 58 52 61 66 60 +46x39: 26 39 37 24 41 27 +48x39: 41 46 53 38 61 48 +46x44: 43 45 65 48 51 59 +38x39: 34 22 27 22 30 20 +46x46: 59 54 52 48 64 50 +39x45: 31 35 36 37 26 29 +39x37: 20 23 29 24 30 30 +44x35: 31 25 25 28 24 21 +49x44: 55 51 62 61 51 53 +41x39: 40 32 40 50 44 40 +42x35: 30 27 19 30 19 29 +35x37: 25 20 31 42 35 44 +48x44: 39 39 42 36 23 45 +43x39: 29 23 23 28 36 42 +37x39: 40 37 36 34 36 40 +46x47: 57 46 40 55 58 75 +44x47: 34 32 36 27 44 37 +45x38: 47 31 41 43 53 49 +45x36: 44 45 41 44 48 28 +35x40: 33 32 31 31 45 42 +39x40: 27 39 26 23 28 25 +35x50: 25 34 30 30 33 24