diff --git a/day12/1.py b/day12/1.py new file mode 100644 index 0000000..2a66d9f --- /dev/null +++ b/day12/1.py @@ -0,0 +1,64 @@ +import numpy as np + +with open(r'day12/input.txt', 'r') as input: + lines = input.read().split('\n')[:-1] + +def array_in(arr,lst): + for oth in lst: + if np.array_equal(arr,oth): return True + return False + +def is_compat(grid,tile,x,y): + return (not 2 in (grid[x-1:x+2,y-1:y+2]+tile)) + +def add(grid,tile,x,y): + grid[x-1:x+2,y-1:y+2]+=tile + +def find_solution(grid,reqs,x0 = 1,y0 = 1): + dim = np.shape(grid) + if reqs == []: + return True + for tile in tiles[reqs[0]]: + for x in range(x0, dim[0]-1): + for y in range(y0 if x == x0 else 1, dim[1]-1): + if is_compat(grid,tile,x,y): + add(grid,tile,x,y) + if find_solution(grid, reqs[1:]): return True + add(grid,-tile,x,y) + return False + + + + +tiles = [] +areas = [] + +i = -1 +for line in lines: + if 'x' in line: + dim,reqs = line.split(':') + dim = list(map(int,dim.split('x'))) + reqs = list(map(int,reqs.strip().split(' '))) + areas.append((dim,reqs)) + elif ':' in line: + i+=1 + tiles.append([]) + elif line != '': + tiles[i].append(list(map(lambda x: 1 if x=='#' else 0,list(line)))) + +for i,tile in enumerate(tiles.copy()): + base = np.array(tile) + flips_n_rots = [base] + for rot in [base,np.rot90(base),np.rot90(np.rot90(base)),np.rot90(np.rot90(np.rot90(base)))]: + for flip in [rot,np.flipud(rot)]: + if not array_in(flip, flips_n_rots) : flips_n_rots.append(flip) + tiles[i] = flips_n_rots + +for dim,reqs in areas: + area = np.zeros(dim) + reqs_list = [] + for i in range(len(reqs)): + for _ in range(reqs[i]): + reqs_list.append(i) + print(dim,reqs_list) + print(find_solution(area,reqs_list)) diff --git a/day12/1bad.py b/day12/1bad.py new file mode 100644 index 0000000..fd08455 --- /dev/null +++ b/day12/1bad.py @@ -0,0 +1,24 @@ +import numpy as np + +with open(r'day12/input.txt', 'r') as input: + lines = input.read().split('\n')[:-1] +tiles = [] +areas = [] + +i = -1 +for line in lines: + if 'x' in line: + dim,reqs = line.split(':') + dim = list(map(int,dim.split('x'))) + reqs = list(map(int,reqs.strip().split(' '))) + areas.append((dim,reqs)) + elif ':' in line: + i+=1 + tiles.append([]) + elif line != '': + tiles[i].append(list(map(lambda x: 1 if x=='#' else 0,list(line)))) + +count = 0 +for dim,reqs in areas: + count += 1 if dim[0]*dim[1] >= sum(reqs)*9 else 0 +print(count) diff --git a/day12/input.txt b/day12/input.txt new file mode 100644 index 0000000..363f956 --- /dev/null +++ b/day12/input.txt @@ -0,0 +1,1030 @@ +0: +.## +##. +### + +1: +..# +.## +### + +2: +### +### +#.. + +3: +### +.#. +### + +4: +.## +##. +#.. + +5: +### +#.. +### + +38x47: 30 28 36 34 25 27 +47x38: 42 45 49 50 43 45 +41x40: 53 37 45 43 39 34 +43x43: 44 51 43 48 50 50 +36x36: 10 17 29 26 31 30 +40x36: 35 37 41 46 38 25 +48x40: 47 56 41 54 50 49 +42x44: 31 27 36 44 30 28 +40x50: 47 51 55 55 52 48 +47x48: 32 45 37 44 36 46 +38x49: 36 29 43 16 36 32 +36x43: 49 43 29 41 40 37 +42x49: 42 30 32 42 45 33 +36x39: 40 34 41 35 33 32 +35x41: 22 23 21 23 30 24 +46x42: 54 40 51 49 53 50 +49x35: 47 48 41 42 41 45 +37x48: 49 44 46 41 44 49 +50x35: 28 24 36 29 29 30 +41x39: 36 46 50 44 27 40 +48x50: 36 41 39 37 44 58 +46x37: 48 36 45 47 40 44 +35x47: 51 40 39 40 28 51 +38x45: 34 34 28 28 26 29 +45x42: 40 37 30 38 33 31 +41x36: 46 25 42 34 47 34 +40x37: 44 45 27 42 27 41 +43x36: 50 39 46 44 39 20 +38x47: 45 55 45 40 48 44 +50x45: 62 51 60 49 70 57 +37x50: 41 26 29 30 35 31 +44x44: 20 42 32 41 20 41 +45x48: 46 41 39 40 38 36 +44x39: 45 41 45 45 48 41 +46x48: 54 60 54 51 55 66 +36x40: 38 31 42 39 34 36 +47x46: 34 38 46 36 28 42 +45x50: 41 36 42 42 35 44 +47x49: 31 36 42 49 47 34 +47x37: 46 50 42 35 56 43 +42x45: 47 51 54 47 54 40 +44x38: 45 48 52 44 32 34 +44x42: 42 37 27 30 29 30 +41x43: 33 28 31 29 23 37 +40x42: 34 29 30 31 21 37 +46x42: 49 41 39 58 62 51 +45x40: 37 49 46 48 47 51 +45x47: 57 60 48 57 42 59 +48x35: 37 34 31 21 24 29 +38x44: 50 55 36 40 38 39 +38x46: 41 55 41 57 43 33 +41x40: 21 35 30 26 29 28 +49x46: 32 42 39 40 38 49 +46x50: 58 61 58 60 50 65 +39x44: 33 21 37 27 31 33 +40x47: 32 35 32 29 31 36 +38x46: 25 35 30 27 33 29 +48x37: 34 27 26 35 31 39 +37x37: 27 25 20 21 29 21 +45x41: 36 31 37 29 29 33 +46x41: 32 31 36 37 31 28 +43x41: 48 44 48 45 48 39 +44x42: 49 66 53 38 40 39 +42x43: 32 39 37 26 33 28 +43x40: 36 46 42 43 50 50 +43x46: 43 39 53 54 40 71 +49x47: 41 36 44 40 43 36 +44x42: 34 35 34 23 33 37 +48x45: 57 64 59 65 46 40 +49x40: 35 26 34 41 33 39 +41x45: 44 52 66 43 38 39 +44x40: 47 47 49 43 41 43 +47x41: 29 27 38 33 33 35 +46x35: 22 36 26 22 22 36 +37x45: 22 32 35 29 31 30 +46x41: 34 32 27 37 28 36 +48x38: 33 34 44 26 28 26 +46x38: 55 41 42 51 36 41 +49x46: 55 67 55 57 57 57 +48x36: 32 36 34 31 28 30 +47x39: 25 35 30 33 31 41 +44x45: 35 37 29 37 34 37 +44x36: 44 38 36 36 52 41 +41x49: 31 43 28 34 31 40 +43x42: 37 33 33 30 26 37 +49x48: 64 67 47 61 60 64 +35x38: 20 24 28 22 15 23 +48x36: 49 43 46 46 41 40 +48x36: 46 44 48 41 51 38 +37x50: 42 39 49 48 48 58 +46x45: 47 49 68 50 53 51 +43x45: 43 27 33 39 35 33 +46x38: 34 29 29 28 28 31 +35x49: 41 49 40 46 48 42 +36x44: 31 41 21 20 19 36 +40x43: 32 31 37 20 32 30 +36x46: 33 35 40 41 53 55 +47x36: 36 39 36 51 43 55 +43x44: 39 35 35 22 25 40 +41x36: 36 44 37 31 47 36 +40x35: 26 20 20 29 23 25 +43x41: 46 45 53 44 43 40 +41x41: 51 52 37 42 49 31 +37x46: 44 44 40 45 40 48 +39x48: 46 54 51 51 48 39 +38x41: 25 30 23 25 24 29 +47x42: 32 32 28 50 29 38 +39x42: 42 39 39 41 50 43 +38x42: 54 39 39 37 36 39 +45x50: 65 56 46 59 64 58 +35x39: 43 32 27 38 39 32 +41x48: 31 30 32 35 46 34 +38x35: 27 18 24 26 14 23 +35x37: 24 36 29 33 34 44 +38x48: 36 29 36 25 31 35 +43x47: 54 47 52 53 54 51 +48x48: 59 53 66 66 63 48 +47x46: 49 54 64 44 63 61 +48x44: 65 47 58 55 54 45 +40x35: 29 23 30 21 22 18 +38x50: 45 44 49 58 56 42 +39x37: 44 35 37 30 44 34 +47x40: 34 33 25 29 38 35 +40x38: 39 43 47 39 26 37 +48x47: 47 57 58 61 60 65 +49x40: 34 32 34 37 42 29 +42x40: 32 27 30 31 30 31 +38x46: 31 41 41 51 50 56 +45x39: 34 44 47 45 38 60 +48x45: 53 47 53 55 71 57 +44x41: 62 40 32 36 53 56 +38x45: 24 23 41 29 32 31 +45x38: 22 35 25 36 32 29 +45x37: 32 44 45 38 47 52 +39x49: 37 40 40 22 38 30 +44x36: 25 25 33 25 22 37 +37x45: 41 38 48 51 40 37 +48x42: 55 69 41 56 35 52 +39x47: 22 34 34 36 37 31 +35x36: 24 21 25 22 17 23 +41x43: 28 26 34 27 22 44 +36x46: 38 35 53 40 46 43 +47x37: 53 45 41 47 38 42 +40x41: 31 25 19 26 33 34 +48x39: 47 48 49 52 44 47 +48x39: 46 60 45 44 58 40 +46x39: 50 43 48 41 47 47 +50x40: 63 46 43 54 47 53 +37x37: 39 37 39 35 20 37 +41x43: 41 43 36 55 48 49 +47x42: 57 44 61 54 47 39 +41x49: 56 68 49 47 46 44 +42x38: 27 33 27 31 19 31 +49x37: 40 31 28 38 21 33 +45x38: 48 47 36 47 58 32 +50x39: 54 45 44 54 41 59 +47x35: 31 26 22 31 31 24 +35x45: 23 23 28 31 26 34 +46x47: 58 56 51 56 62 52 +48x35: 29 47 43 47 45 49 +43x40: 48 43 42 43 41 47 +50x50: 53 72 66 69 61 64 +44x48: 49 57 53 66 42 55 +35x43: 26 18 27 28 26 28 +47x42: 52 22 38 32 31 35 +36x36: 22 26 19 23 27 27 +36x42: 32 35 21 22 29 28 +35x39: 19 20 20 35 28 21 +39x37: 32 30 55 33 33 37 +36x39: 36 39 38 34 33 36 +39x43: 49 51 36 35 52 39 +44x50: 37 40 24 42 41 40 +49x48: 39 44 43 38 46 45 +37x40: 35 14 24 25 31 27 +50x39: 51 48 54 45 54 49 +43x47: 40 54 63 54 47 52 +46x40: 37 46 53 52 47 48 +49x35: 26 33 30 30 26 30 +36x36: 39 27 35 45 24 26 +43x40: 44 38 30 24 27 19 +46x39: 44 29 30 24 40 28 +38x46: 32 28 24 30 32 33 +35x35: 34 34 37 33 20 28 +37x36: 28 32 38 35 35 37 +46x42: 25 33 28 50 35 39 +48x47: 39 48 37 46 35 34 +43x50: 39 31 42 42 42 27 +36x48: 45 57 44 47 38 35 +37x36: 19 19 28 30 22 25 +38x36: 29 28 18 18 29 21 +39x50: 35 42 44 29 28 30 +38x40: 31 21 25 22 35 21 +39x43: 35 42 54 45 35 45 +41x37: 37 30 40 54 30 39 +41x42: 43 50 52 40 41 39 +36x44: 31 25 33 25 33 21 +41x46: 47 52 47 55 45 44 +47x47: 38 38 36 39 40 34 +43x40: 22 36 29 37 20 37 +49x42: 41 42 42 33 34 31 +48x38: 38 56 34 57 49 49 +45x35: 30 53 44 35 53 33 +43x48: 46 33 38 35 42 30 +37x36: 35 35 26 35 44 33 +49x38: 30 34 39 23 37 29 +49x37: 27 26 44 37 27 30 +42x43: 43 47 45 38 46 59 +49x48: 54 40 37 49 36 39 +50x35: 42 34 49 48 41 53 +47x48: 60 60 42 64 56 65 +44x47: 26 31 27 42 39 45 +37x36: 19 26 29 16 25 29 +39x47: 42 41 48 53 59 42 +48x44: 40 63 63 60 59 43 +37x39: 38 34 34 40 37 39 +42x44: 43 60 46 52 43 41 +46x39: 34 38 42 18 29 34 +40x42: 51 49 43 40 44 33 +40x45: 37 37 50 53 54 47 +43x42: 39 31 29 36 31 30 +49x43: 35 40 37 31 42 38 +47x45: 41 36 38 43 34 33 +39x44: 35 47 52 31 52 50 +40x41: 46 35 45 47 37 40 +40x36: 34 53 36 31 33 36 +42x43: 21 34 28 32 33 47 +35x48: 29 27 41 28 20 31 +38x43: 23 29 31 25 28 32 +43x42: 31 30 26 31 38 40 +50x49: 55 64 63 62 61 72 +41x46: 52 54 48 43 55 41 +39x37: 45 34 34 38 34 36 +35x41: 32 31 36 46 40 36 +37x36: 20 32 24 20 22 25 +43x48: 54 50 54 53 44 60 +38x41: 44 41 36 35 40 44 +35x50: 43 44 43 46 50 45 +35x49: 50 40 36 51 46 41 +41x50: 62 41 53 50 53 55 +36x46: 43 40 47 38 36 49 +50x49: 49 44 44 40 39 40 +40x41: 43 49 57 30 30 41 +41x37: 30 27 44 45 42 45 +42x40: 38 37 51 39 44 49 +48x44: 34 45 40 41 31 32 +35x35: 23 17 18 24 21 18 +36x42: 33 39 51 40 35 34 +50x43: 33 41 39 31 44 35 +47x44: 43 37 34 40 27 29 +47x41: 53 56 51 46 51 41 +42x36: 42 38 44 38 36 34 +44x44: 25 34 33 40 33 31 +38x40: 25 28 29 22 24 28 +36x38: 14 30 23 17 32 27 +35x48: 20 23 34 36 33 29 +42x43: 24 37 35 28 37 34 +48x38: 44 53 53 47 44 40 +42x42: 32 34 31 31 34 33 +35x47: 34 49 36 52 34 47 +49x46: 62 45 62 55 61 61 +44x45: 49 54 52 54 42 52 +38x46: 46 44 45 41 45 48 +41x37: 43 29 40 40 42 39 +44x47: 53 45 40 66 52 61 +37x35: 33 35 24 34 34 40 +35x50: 26 33 22 31 31 32 +44x38: 53 42 31 42 49 42 +35x45: 29 33 23 32 25 23 +36x41: 30 34 46 46 32 37 +43x47: 43 48 54 61 53 52 +43x36: 32 27 27 20 30 31 +37x47: 42 43 55 39 46 43 +45x40: 32 32 41 32 26 31 +40x45: 38 34 46 45 73 47 +44x50: 26 47 33 43 34 41 +41x39: 17 26 27 28 39 32 +46x38: 47 45 39 58 41 38 +41x50: 38 28 31 35 41 35 +48x45: 43 56 58 61 60 56 +43x46: 41 38 30 33 38 29 +37x41: 44 42 41 44 35 27 +44x48: 61 52 52 56 48 54 +37x45: 40 55 43 38 38 43 +44x37: 50 43 42 27 46 44 +47x40: 43 44 48 48 49 57 +46x44: 48 51 60 52 57 45 +37x38: 27 27 22 19 22 27 +49x42: 49 54 45 57 66 50 +37x50: 46 43 54 44 50 48 +37x48: 31 42 26 33 36 24 +36x35: 23 24 21 17 29 17 +50x44: 62 55 58 51 51 60 +40x45: 41 52 41 55 43 45 +46x38: 48 43 43 43 45 47 +46x38: 50 40 48 42 53 38 +38x36: 19 24 26 23 28 23 +39x46: 25 30 35 37 38 29 +40x39: 31 32 41 47 46 44 +43x38: 43 50 36 39 42 43 +40x50: 54 48 48 49 50 58 +47x49: 55 55 74 62 48 57 +42x41: 39 18 28 39 35 23 +43x50: 49 60 55 53 59 57 +45x38: 38 51 48 47 35 43 +36x36: 22 24 19 27 28 24 +42x39: 46 33 31 53 42 46 +43x38: 26 26 33 38 23 22 +46x43: 32 34 49 31 29 35 +43x46: 30 36 37 46 31 30 +49x45: 63 55 59 61 59 43 +38x49: 47 50 42 48 51 50 +47x49: 53 64 56 50 58 74 +41x47: 47 60 54 40 45 51 +37x46: 39 31 30 28 33 19 +49x44: 51 29 34 26 38 46 +44x50: 42 35 41 28 39 39 +43x44: 35 38 39 31 22 31 +47x43: 49 43 64 38 66 54 +43x43: 26 33 37 31 32 36 +39x41: 29 24 32 22 28 34 +50x44: 37 36 40 40 29 41 +44x36: 39 50 34 42 43 38 +43x38: 45 42 34 46 46 40 +36x49: 24 25 29 35 38 40 +46x36: 44 45 38 37 44 48 +36x42: 20 35 25 34 31 23 +39x41: 45 41 36 40 44 41 +39x47: 40 40 55 47 57 45 +45x46: 53 43 56 57 49 58 +44x35: 41 32 34 50 43 37 +49x40: 53 52 42 47 46 61 +39x44: 33 30 31 25 33 29 +35x40: 27 28 20 23 21 23 +41x42: 27 42 33 25 27 28 +49x36: 29 27 44 38 27 27 +46x46: 41 46 26 37 37 37 +43x44: 58 38 47 54 42 49 +45x42: 33 44 26 21 37 48 +46x43: 28 37 39 45 31 29 +50x36: 21 38 38 43 27 24 +48x45: 52 50 50 66 60 55 +35x48: 28 34 29 29 28 27 +43x50: 63 53 53 49 53 59 +37x42: 41 45 36 35 40 43 +47x37: 51 48 30 48 47 45 +47x45: 36 37 38 45 31 38 +47x47: 56 59 56 58 66 48 +50x39: 31 33 38 35 28 43 +40x41: 30 20 35 22 32 30 +37x37: 31 36 35 32 39 39 +43x41: 35 26 30 25 34 32 +44x45: 40 34 39 30 33 33 +44x37: 34 50 44 38 49 39 +35x39: 28 30 26 21 20 17 +43x47: 34 30 35 33 34 43 +42x43: 31 42 29 39 28 26 +35x49: 52 44 47 41 47 34 +50x35: 27 29 27 28 32 33 +44x40: 49 52 42 47 49 34 +45x47: 45 42 34 40 33 31 +38x41: 37 48 51 33 32 38 +46x43: 59 52 47 45 59 45 +39x35: 26 36 36 37 34 41 +50x37: 37 50 56 51 43 47 +46x38: 53 40 40 47 43 45 +37x50: 48 51 47 52 39 46 +45x36: 27 24 32 42 22 33 +38x48: 36 35 36 23 28 33 +42x45: 43 48 44 53 52 52 +47x37: 45 38 43 47 52 44 +49x35: 48 38 37 42 60 43 +44x47: 36 35 41 30 33 35 +43x42: 43 46 35 56 50 49 +36x38: 19 23 30 24 23 25 +38x49: 29 28 31 40 28 36 +37x42: 27 29 23 25 36 27 +35x38: 21 19 29 14 24 24 +35x37: 18 19 22 22 24 26 +49x45: 72 51 58 51 50 55 +37x42: 27 32 32 23 23 30 +43x48: 55 71 52 50 44 46 +37x45: 32 22 32 31 31 31 +36x44: 27 33 28 32 19 28 +41x48: 32 41 35 41 33 25 +47x44: 33 34 26 42 33 42 +39x42: 39 50 36 39 44 46 +36x45: 35 45 40 43 41 46 +36x44: 26 24 30 25 31 31 +47x36: 49 43 42 35 42 49 +45x50: 45 38 48 35 39 35 +38x40: 48 39 30 39 46 34 +44x37: 41 38 36 44 44 48 +45x35: 21 20 29 37 34 23 +36x44: 48 47 34 34 31 48 +43x50: 32 35 33 33 49 41 +37x47: 52 41 48 41 44 41 +42x47: 48 50 57 48 44 55 +47x50: 69 60 67 51 65 51 +42x41: 33 36 27 28 30 28 +50x47: 65 67 50 56 47 74 +43x48: 31 34 42 38 30 48 +40x39: 32 29 33 29 19 26 +35x39: 40 33 35 34 25 40 +48x49: 42 49 34 43 43 44 +37x39: 27 30 20 20 31 27 +44x43: 48 45 50 47 45 55 +36x38: 19 30 25 27 19 23 +40x42: 29 32 32 23 34 32 +36x50: 34 27 35 24 33 38 +36x47: 26 29 39 27 30 29 +45x42: 27 39 42 36 31 35 +43x35: 40 43 39 41 30 37 +42x46: 40 30 30 39 34 37 +37x41: 32 37 41 46 31 44 +39x38: 36 38 36 36 41 42 +42x49: 35 34 41 47 31 35 +46x41: 35 32 36 30 31 30 +45x39: 32 47 45 57 40 48 +37x45: 26 25 36 37 31 25 +37x45: 30 31 26 29 26 37 +36x48: 39 54 37 56 39 41 +49x47: 38 46 47 40 32 36 +39x50: 51 50 49 44 53 54 +39x47: 31 35 29 36 25 38 +38x43: 32 28 27 26 24 30 +45x37: 35 39 27 23 29 27 +37x49: 43 43 45 45 51 53 +40x36: 32 18 19 23 36 28 +50x46: 38 38 41 40 39 44 +44x49: 51 28 34 36 36 39 +43x38: 30 24 32 16 40 26 +45x50: 45 34 35 43 43 40 +42x38: 34 43 40 47 48 36 +45x40: 42 53 43 50 45 45 +40x40: 27 35 32 22 27 25 +39x39: 28 56 42 38 33 38 +47x44: 35 40 43 29 23 39 +46x35: 24 24 35 22 27 32 +47x43: 54 47 59 52 47 50 +45x39: 24 30 34 31 30 45 +41x39: 24 31 32 25 18 39 +41x40: 42 47 30 49 51 37 +47x42: 42 31 41 32 29 34 +36x48: 32 26 34 32 31 37 +36x45: 41 41 43 36 47 43 +44x43: 31 33 29 30 30 42 +36x39: 32 33 41 32 37 41 +47x35: 34 28 24 26 24 28 +39x46: 45 42 51 52 36 47 +46x48: 55 50 58 68 53 54 +38x36: 25 27 21 25 28 18 +46x42: 39 41 29 26 42 32 +44x41: 57 38 43 42 48 49 +43x36: 26 22 28 28 38 26 +47x45: 62 54 42 53 56 59 +48x44: 37 38 48 36 29 35 +41x43: 28 27 42 32 30 23 +48x43: 42 24 40 37 38 43 +35x50: 43 38 50 47 53 40 +47x43: 27 31 32 37 41 41 +41x49: 41 32 38 39 33 25 +41x47: 57 57 43 46 53 43 +48x38: 44 45 41 56 51 45 +43x35: 24 24 26 29 26 25 +36x50: 43 44 55 44 54 39 +39x50: 47 54 51 55 47 46 +40x50: 51 50 56 55 59 39 +38x49: 33 35 24 31 35 34 +50x40: 31 38 35 27 39 37 +40x46: 50 45 48 51 33 52 +45x42: 58 54 43 47 45 44 +48x38: 56 36 48 39 46 54 +44x47: 46 67 45 50 45 65 +49x46: 41 34 38 41 45 40 +45x37: 31 30 21 33 36 28 +38x40: 29 26 29 22 19 30 +42x40: 23 33 40 27 25 33 +35x35: 24 28 37 32 38 31 +41x40: 32 20 26 33 25 32 +46x40: 48 42 47 50 41 53 +37x48: 53 58 33 52 48 32 +49x41: 34 33 36 31 41 32 +36x50: 46 45 51 44 42 48 +47x37: 30 30 31 29 40 19 +36x37: 32 39 33 29 34 39 +35x50: 39 43 56 57 27 42 +44x46: 32 29 28 34 52 35 +44x50: 73 66 50 49 53 48 +43x46: 47 54 41 53 51 59 +38x47: 30 17 26 36 29 42 +42x44: 56 51 38 50 44 45 +50x37: 45 49 47 41 58 48 +43x44: 46 46 56 37 49 57 +44x50: 31 38 32 42 36 44 +36x48: 44 37 47 50 44 43 +39x47: 55 50 41 46 52 40 +37x36: 38 32 38 32 41 26 +36x39: 30 21 20 25 25 35 +38x38: 26 35 14 21 18 30 +47x48: 39 34 55 39 40 33 +49x50: 66 66 61 58 57 68 +48x37: 22 30 26 34 31 48 +43x42: 52 41 54 38 38 52 +41x40: 29 26 27 26 28 32 +40x50: 52 49 50 52 59 48 +39x45: 45 39 45 44 43 53 +35x38: 20 23 17 22 20 29 +36x41: 27 27 34 29 23 16 +50x50: 43 42 48 40 46 36 +46x48: 51 66 50 58 59 58 +47x36: 41 45 41 39 51 46 +47x48: 58 55 62 49 58 65 +37x36: 19 20 22 24 32 26 +45x41: 29 30 38 38 34 26 +49x39: 31 31 28 40 35 42 +48x45: 49 44 42 43 32 29 +42x48: 49 48 56 52 66 43 +35x48: 36 43 45 44 47 45 +43x45: 28 45 29 35 32 40 +37x40: 37 42 40 40 32 36 +35x46: 33 35 49 40 51 42 +39x35: 23 26 27 20 27 19 +44x50: 36 30 40 35 45 37 +48x40: 53 44 53 50 36 55 +47x50: 33 44 39 42 47 35 +41x48: 40 66 48 53 42 54 +37x38: 28 22 26 24 29 14 +45x43: 51 45 42 53 49 57 +43x46: 51 50 52 43 53 56 +40x38: 42 37 38 41 36 39 +48x46: 57 60 54 66 48 53 +41x38: 41 36 35 44 45 40 +47x37: 40 30 25 34 22 29 +44x37: 40 56 36 31 42 48 +47x35: 34 22 25 20 25 38 +49x45: 49 66 59 51 57 59 +47x35: 26 22 29 33 27 28 +46x41: 33 34 26 35 34 33 +46x36: 41 53 31 37 47 49 +50x39: 27 34 34 35 40 38 +45x43: 47 46 47 49 45 62 +45x45: 36 28 37 38 41 44 +49x36: 29 35 32 31 32 32 +41x35: 21 22 26 21 25 27 +46x43: 34 42 76 57 50 44 +49x47: 36 37 39 41 46 40 +37x45: 51 44 34 55 37 34 +43x49: 67 39 56 49 57 55 +37x47: 48 45 44 38 42 50 +36x41: 28 29 26 25 26 21 +48x47: 34 29 39 44 48 46 +37x40: 44 32 39 37 41 35 +37x45: 22 33 38 31 23 33 +46x47: 37 30 38 33 39 48 +35x46: 43 36 41 45 41 41 +39x41: 38 32 40 44 48 45 +46x44: 35 41 39 23 35 36 +40x49: 47 42 49 59 48 55 +48x47: 51 57 61 60 53 64 +44x40: 41 52 46 41 52 42 +35x38: 24 31 41 42 33 33 +46x47: 45 41 37 25 40 37 +41x41: 41 44 50 34 36 52 +41x37: 33 37 46 29 37 51 +46x35: 27 17 35 27 27 31 +47x49: 55 55 59 60 69 59 +47x42: 49 45 62 46 54 48 +46x39: 53 48 46 47 41 40 +39x39: 33 31 23 15 34 32 +48x49: 47 48 34 44 43 39 +50x41: 59 46 49 60 57 45 +43x47: 54 58 46 52 48 53 +41x42: 35 56 47 37 52 42 +47x46: 60 52 53 58 57 53 +46x40: 39 29 34 39 32 22 +37x38: 17 23 29 25 16 34 +41x39: 36 21 27 29 32 24 +40x37: 21 29 18 26 26 35 +48x42: 55 46 54 55 50 49 +42x36: 31 30 29 27 25 26 +41x36: 35 39 41 34 33 44 +38x35: 28 32 46 25 35 39 +43x50: 54 55 39 69 52 61 +41x40: 29 27 25 36 24 27 +38x47: 26 40 26 36 27 25 +42x46: 53 62 50 44 41 47 +47x40: 58 56 36 46 42 51 +43x40: 44 48 45 47 46 36 +36x44: 41 36 43 53 26 40 +40x44: 33 31 35 27 27 28 +35x37: 36 16 11 22 22 24 +39x36: 34 40 32 47 30 32 +47x46: 53 64 55 53 52 56 +45x38: 30 32 23 29 35 30 +50x42: 35 43 42 37 41 25 +37x36: 24 23 24 23 27 22 +50x36: 36 38 23 33 32 30 +44x46: 56 44 46 43 47 73 +42x47: 36 34 29 31 39 41 +40x46: 30 33 36 34 33 29 +47x37: 42 50 50 47 43 36 +48x43: 56 40 55 57 42 63 +40x48: 46 63 47 45 61 39 +43x35: 37 36 45 51 30 30 +35x48: 31 32 27 35 27 24 +45x36: 38 43 38 45 43 43 +45x43: 49 56 47 47 57 45 +37x36: 22 31 29 20 22 20 +46x37: 37 24 38 30 29 21 +48x35: 25 25 26 31 31 37 +39x39: 46 37 33 38 39 41 +41x37: 25 23 32 22 27 27 +35x38: 26 35 42 29 37 37 +49x50: 54 53 78 66 60 64 +39x49: 33 34 34 27 43 36 +45x38: 47 35 53 51 43 33 +46x45: 57 56 51 46 56 54 +50x39: 34 26 34 40 34 39 +40x44: 42 55 48 46 37 42 +48x40: 29 38 33 25 43 39 +39x46: 34 39 31 33 34 23 +47x38: 37 47 47 38 49 58 +50x43: 26 34 47 42 40 35 +48x50: 63 56 48 71 63 68 +46x50: 38 37 39 39 48 38 +47x47: 47 41 60 64 53 72 +50x50: 67 71 65 60 57 64 +46x45: 57 55 61 38 53 55 +48x43: 46 54 56 59 57 47 +47x42: 44 53 52 53 50 52 +38x40: 46 40 37 45 35 30 +48x43: 51 48 57 49 60 54 +48x41: 33 27 35 32 41 40 +41x47: 43 39 31 24 23 35 +37x37: 38 34 36 31 32 39 +41x50: 51 52 51 57 51 53 +40x46: 32 31 34 34 25 38 +41x47: 24 36 30 35 28 41 +45x48: 56 64 48 50 60 57 +37x38: 29 45 47 27 36 34 +42x50: 33 36 32 37 42 43 +47x41: 40 38 24 31 28 33 +36x48: 41 28 34 33 23 32 +45x50: 38 34 43 39 40 45 +50x35: 31 26 35 30 25 28 +43x46: 45 55 49 46 53 58 +41x46: 52 45 44 49 45 54 +48x37: 29 27 36 36 29 34 +49x44: 51 54 54 51 59 64 +39x41: 47 45 37 40 41 37 +44x39: 50 45 41 48 36 42 +46x39: 33 30 38 32 40 22 +40x43: 37 29 21 31 34 29 +39x41: 15 20 27 29 43 34 +35x37: 24 18 19 19 28 24 +45x49: 56 50 49 66 62 57 +49x41: 32 36 34 35 36 35 +41x42: 52 36 46 36 54 43 +41x36: 23 20 24 34 24 30 +47x46: 71 58 53 47 61 45 +38x40: 51 25 32 34 38 52 +35x46: 31 24 26 29 20 34 +42x43: 37 56 51 47 52 38 +46x36: 29 31 39 24 30 26 +50x43: 61 54 49 53 55 59 +36x42: 31 43 44 37 33 44 +37x49: 50 47 49 37 49 48 +47x41: 52 52 47 44 60 45 +49x40: 56 42 54 40 51 58 +50x49: 69 64 61 60 65 59 +46x37: 35 53 43 48 46 39 +39x45: 29 32 23 32 40 38 +50x36: 43 45 43 43 53 52 +41x47: 50 57 50 46 46 48 +46x41: 29 35 30 37 29 35 +46x41: 45 56 54 54 53 31 +37x49: 35 27 38 38 29 25 +40x45: 22 33 41 40 34 25 +35x39: 25 20 30 19 18 30 +44x41: 27 26 34 34 28 32 +36x48: 34 34 34 23 29 37 +46x47: 47 39 41 30 31 36 +38x42: 25 34 16 32 28 33 +42x36: 26 28 25 28 37 24 +41x38: 33 20 33 25 27 17 +37x48: 22 35 40 33 31 30 +40x46: 26 26 38 37 35 32 +46x40: 28 36 23 35 42 31 +46x49: 34 54 43 27 48 34 +40x41: 43 40 38 36 38 56 +40x35: 35 33 40 27 46 37 +48x49: 40 43 35 44 36 57 +42x39: 29 33 33 32 25 29 +43x40: 42 48 46 46 35 46 +36x35: 25 20 22 23 17 24 +46x48: 37 36 42 35 44 46 +35x40: 20 23 26 25 30 19 +42x47: 42 37 41 31 30 29 +35x46: 26 20 27 29 37 26 +48x36: 32 27 35 32 39 26 +35x45: 38 40 32 44 42 47 +48x45: 34 38 39 37 37 55 +46x49: 43 40 39 32 52 33 +50x49: 66 71 53 45 72 74 +36x40: 25 22 28 33 23 24 +36x41: 29 19 28 25 27 28 +44x40: 53 52 36 46 42 42 +50x50: 40 47 41 46 47 35 +37x44: 37 40 42 49 40 42 +35x49: 48 39 38 48 46 45 +45x44: 48 55 51 48 53 51 +44x46: 47 57 53 57 54 45 +44x40: 30 35 33 36 26 22 +39x45: 32 33 36 32 24 38 +40x38: 35 22 31 24 22 21 +42x45: 26 48 38 31 38 28 +38x43: 24 21 27 33 28 34 +40x49: 49 55 55 49 45 48 +37x38: 21 25 21 30 21 25 +37x43: 48 37 49 34 49 30 +46x35: 38 39 45 42 42 42 +44x48: 38 46 35 32 41 31 +35x44: 26 32 21 26 26 22 +39x40: 21 27 33 25 27 35 +38x45: 37 45 37 49 52 46 +50x39: 49 51 39 63 49 49 +49x49: 59 70 63 50 73 59 +45x49: 46 39 39 36 34 46 +41x35: 35 34 47 34 34 36 +46x49: 62 53 66 58 64 45 +42x35: 41 37 31 39 43 37 +43x44: 41 32 36 30 29 28 +40x47: 26 31 40 30 34 34 +39x38: 42 42 41 35 31 36 +41x37: 41 40 41 37 36 38 +43x35: 38 31 39 39 36 47 +49x36: 24 29 29 35 40 34 +45x35: 23 34 30 26 35 17 +44x45: 28 44 29 35 53 21 +36x38: 41 33 32 32 34 38 +38x36: 25 19 30 24 28 18 +44x42: 50 51 50 42 44 47 +44x49: 63 55 58 56 49 49 +50x48: 60 73 73 56 50 56 +48x50: 75 51 66 66 55 53 +39x42: 48 37 43 36 51 39 +35x35: 35 32 18 38 32 34 +46x48: 45 34 36 39 46 39 +49x36: 37 29 25 43 39 18 +48x40: 51 52 45 45 46 56 +47x46: 53 50 50 64 59 57 +43x41: 32 29 31 35 28 26 +41x44: 31 43 23 25 36 24 +50x40: 45 46 63 55 50 48 +39x37: 40 43 37 43 19 36 +39x43: 50 46 46 36 30 47 +41x46: 24 41 35 23 32 39 +47x39: 41 57 64 40 37 42 +50x40: 57 41 61 50 50 47 +38x36: 16 25 25 23 22 32 +41x44: 25 24 31 30 48 24 +46x44: 51 56 45 54 54 53 +49x43: 52 46 61 55 56 54 +36x41: 44 39 38 33 40 34 +35x43: 37 47 36 33 46 36 +37x38: 42 36 34 28 38 39 +49x35: 40 44 46 38 44 52 +50x35: 26 33 38 24 31 23 +48x42: 46 50 49 49 62 57 +39x39: 25 27 21 32 28 36 +41x50: 50 59 37 63 51 56 +45x41: 37 30 41 31 29 27 +38x49: 30 36 39 22 26 39 +49x41: 53 54 54 48 39 58 +42x43: 34 34 41 26 35 26 +50x36: 49 55 48 37 37 50 +50x37: 51 45 41 50 49 49 +42x49: 42 36 33 31 46 35 +38x44: 42 54 39 39 36 47 +46x41: 39 32 24 37 26 36 +48x38: 34 21 31 39 34 33 +46x46: 42 35 38 40 29 40 +40x39: 37 47 43 45 35 33 +37x40: 28 25 22 25 33 22 +46x38: 42 47 49 38 46 48 +47x41: 46 26 36 29 32 25 +43x47: 49 44 58 56 52 51 +41x42: 44 20 32 28 25 33 +36x36: 18 23 18 30 28 26 +50x38: 49 52 48 52 41 49 +47x47: 37 42 40 35 40 30 +50x43: 40 62 61 56 65 51 +42x40: 33 29 35 30 28 26 +45x45: 35 53 30 31 38 37 +37x48: 49 43 42 37 56 49 +41x43: 29 29 21 30 32 40 +47x49: 38 48 49 39 38 27 +49x42: 61 59 44 47 46 59 +46x50: 64 41 60 63 60 64 +42x49: 36 42 28 39 35 43 +37x36: 22 17 25 21 31 28 +49x43: 38 43 38 36 33 35 +43x50: 32 43 38 49 31 30 +38x37: 23 34 20 25 18 23 +35x40: 31 35 31 38 37 44 +48x44: 35 47 38 36 33 34 +35x45: 34 20 24 24 39 23 +36x37: 42 26 33 38 34 31 +38x40: 30 15 24 31 25 31 +42x42: 37 22 38 34 40 25 +41x39: 52 37 42 41 35 37 +50x40: 35 43 32 39 31 27 +39x37: 32 24 22 32 22 24 +39x48: 37 48 44 54 50 56 +41x44: 51 45 50 39 41 50 +38x48: 30 36 32 41 24 28 +37x44: 42 48 43 41 32 43 +39x50: 52 53 53 53 40 47 +47x47: 57 72 62 55 48 46 +40x46: 33 26 40 17 44 34 +48x45: 37 39 42 32 45 45 +35x44: 40 35 41 36 48 39 +50x47: 23 40 50 34 47 45 +47x43: 62 60 46 48 51 45 +41x47: 26 34 30 32 33 39 +50x45: 42 36 47 38 36 40 +50x41: 46 45 61 55 50 57 +37x49: 37 48 54 37 38 63 +49x43: 51 63 59 54 52 46 +44x46: 49 47 61 55 49 49 +45x49: 57 34 34 40 35 40 +43x38: 48 43 44 32 50 37 +37x40: 36 33 48 39 30 39 +45x39: 38 55 44 41 56 41 +48x44: 31 35 38 41 43 36 +47x41: 52 54 47 52 48 44 +43x42: 34 47 26 32 28 29 +45x36: 42 26 29 35 23 24 +37x41: 43 33 45 35 36 40 +45x35: 46 19 23 23 23 31 +48x35: 45 39 45 46 43 40 +37x42: 40 35 40 46 34 42 +35x48: 39 40 47 35 49 50 +44x45: 53 48 44 52 59 51 +36x49: 42 41 36 50 49 54 +35x45: 38 43 38 43 44 38 +42x46: 34 39 38 32 36 31 +50x45: 45 30 42 29 47 46 +46x35: 44 39 35 42 49 41 +44x42: 31 31 31 28 42 33 +50x45: 52 38 42 32 32 44 +38x38: 26 26 22 24 19 27 +42x49: 60 50 53 56 55 43 +35x47: 20 39 32 16 27 30 +43x40: 24 30 37 32 28 30 +47x42: 51 46 54 48 57 49 +36x37: 23 22 18 32 29 19 +36x39: 21 25 21 33 33 23 +38x36: 32 31 33 40 35 39 +36x49: 25 43 36 26 30 32 +43x46: 51 48 57 48 47 52 +36x46: 47 47 40 43 37 40 +49x43: 41 48 28 39 33 35 +43x40: 23 35 32 28 36 28 +35x39: 35 41 26 32 45 35 +44x35: 24 23 18 30 35 23 +37x44: 33 22 29 26 30 28 +43x40: 35 31 32 29 22 33 +42x50: 38 47 38 35 28 38 +35x43: 26 29 21 31 27 20 +44x38: 20 32 21 34 35 25 +36x42: 35 27 25 34 24 22 +39x48: 54 52 43 46 49 45 +48x47: 62 60 63 62 52 47 +35x36: 31 30 34 27 37 36 +36x37: 29 23 37 37 36 42 +49x49: 66 58 67 63 58 56 +38x49: 30 35 31 37 28 31 +44x42: 38 22 38 35 30 33 +47x43: 38 37 31 29 40 35 +41x45: 45 45 52 47 41 52 +41x37: 36 32 48 34 43 41 +49x48: 51 75 61 68 46 59 +48x42: 40 27 46 38 34 39 +48x48: 55 45 41 46 28 41 +47x49: 58 57 53 58 65 65 +45x48: 38 41 35 42 49 34 +44x39: 51 44 45 43 40 40 +36x48: 50 38 36 50 47 45 +37x40: 28 43 35 40 50 36 +36x42: 35 28 17 33 28 26 +50x36: 35 37 24 30 34 31 +41x41: 38 43 53 48 43 34 +47x46: 40 31 31 43 40 40 +48x45: 47 63 60 66 50 46 +46x44: 53 55 45 70 37 48 +39x42: 29 45 49 41 46 44 +40x46: 43 37 30 22 30 32 +46x50: 32 33 36 33 58 47 +45x37: 45 50 38 40 48 38 +35x43: 34 45 36 47 40 31 +45x48: 58 63 52 47 64 52 +36x41: 21 26 34 23 26 26 +45x48: 58 61 55 50 50 58 +48x48: 41 40 46 44 37 48 +37x37: 25 32 20 24 19 24 +45x41: 36 38 33 31 28 29 +45x43: 29 48 43 30 32 27 +48x35: 31 33 28 22 33 29 +45x47: 28 38 36 48 36 38 +37x35: 32 34 32 40 34 28 +46x35: 43 46 31 38 43 48 +40x36: 36 40 35 40 40 32 +37x41: 25 26 22 24 27 31 +44x44: 52 51 57 44 48 46 +45x40: 57 36 49 33 50 52 +49x39: 50 42 49 53 48 51 +50x39: 32 54 45 59 65 50 +41x49: 26 38 27 44 37 36 +41x44: 51 44 43 41 44 54 +38x38: 40 37 31 41 36 37 +48x39: 50 41 47 53 40 54 +36x36: 24 24 33 18 22 23 +48x42: 36 48 36 35 37 32 +43x38: 44 47 33 33 47 50 +47x37: 37 39 42 48 45 56 +41x45: 56 41 51 54 33 44 +42x45: 51 61 43 49 53 37 +40x42: 44 48 42 47 35 41 +43x48: 50 59 52 56 47 53 +38x41: 28 25 28 20 27 27 +49x37: 28 26 38 28 31 40 +43x41: 28 36 40 23 27 27 +35x36: 37 25 37 40 22 29 +46x43: 33 41 39 36 35 25 +41x39: 27 25 35 28 26 28 +48x42: 56 54 45 59 39 54 +39x47: 36 33 28 27 33 37 +42x46: 35 27 32 40 33 42 +38x37: 40 38 37 35 30 35 +39x47: 39 40 56 45 46 55 +47x46: 73 57 53 47 55 48 +35x42: 45 31 44 38 36 31 +41x39: 29 30 30 22 33 25 +44x37: 36 42 29 48 43 53 +41x37: 31 44 40 33 44 44 +49x35: 35 31 21 32 25 31 +36x37: 22 25 25 20 25 26 +50x35: 43 44 61 44 29 44 +36x46: 32 35 31 32 16 34 +44x37: 22 28 24 32 29 32 +37x44: 32 31 24 28 28 24 +42x42: 35 29 39 27 30 36 +37x41: 29 25 25 29 24 23 +46x40: 30 35 36 33 25 35 +41x36: 23 22 32 25 19 35 +49x42: 53 62 60 54 42 44 +41x45: 32 36 29 38 27 32 +47x49: 42 41 36 39 43 39 +39x44: 37 40 51 41 42 52 +40x43: 55 49 42 37 38 43 +46x38: 29 27 38 23 30 33 +36x42: 44 42 29 40 34 43 +43x40: 29 32 20 30 42 29 +41x36: 24 19 25 27 34 27 +40x43: 26 33 37 31 31 23 +49x38: 52 62 34 46 42 51 +46x35: 23 33 25 33 26 25 +37x43: 31 32 24 29 26 25 +44x46: 49 48 53 57 45 57 +45x47: 44 55 62 51 58 57 +47x41: 30 35 29 29 33 38 +40x42: 48 42 48 41 41 38 +35x41: 40 33 34 40 28 43 +35x37: 31 28 35 46 38 22 +45x37: 37 53 46 36 47 40 +37x46: 39 51 45 43 39 45 +44x45: 47 51 51 56 48 51 +43x40: 61 45 30 44 40 44 +38x48: 28 23 30 30 42 39 +48x39: 35 40 29 31 41 32 +37x49: 38 39 25 29 33 28 +49x39: 54 50 46 47 47 50 +43x35: 53 41 40 32 42 25 +48x36: 52 43 34 37 44 56 +50x41: 29 31 37 44 34 32 +50x48: 59 51 49 66 82 67 +42x44: 50 51 37 52 50 46 +44x39: 36 31 23 31 27 34 +40x49: 36 41 34 30 23 44 +40x38: 20 26 24 30 27 29 +42x49: 35 48 36 26 42 37 +41x41: 45 34 39 49 55 39 +38x37: 22 31 14 16 33 28 +35x42: 29 20 28 26 24 26 +45x42: 47 30 36 39 28 30 +36x40: 33 31 42 40 40 36 +40x39: 24 25 37 23 32 27 +47x42: 34 59 67 42 47 55 +40x43: 53 40 40 49 39 42