summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Sangdahl <[email protected]>2024-12-01 22:32:01 -0700
committerJack Sangdahl <[email protected]>2024-12-01 22:32:01 -0700
commitbec8e9016904fbdd139bb04ee656e7611e455f48 (patch)
tree5e83264cbafdc5d8f62a132d5d3b5eb6b8a4104f
parentccc7e85662bedd9e1c006e6b4dd9dd497d42570c (diff)
downloadaoc-bec8e9016904fbdd139bb04ee656e7611e455f48.tar.gz
aoc-bec8e9016904fbdd139bb04ee656e7611e455f48.zip
Day 2 2024
-rw-r--r--2_2024.py30
-rw-r--r--data/2_2024.txt1001
2 files changed, 1031 insertions, 0 deletions
diff --git a/2_2024.py b/2_2024.py
new file mode 100644
index 0000000..d32ed34
--- /dev/null
+++ b/2_2024.py
@@ -0,0 +1,30 @@
+input = "data/2_2024.txt"
+data = open(input).read().strip()
+lines = data.split("\n")
+p1, p2 = 0, 0
+
+
+def is_good(xs):
+ inc_dec = xs == sorted(xs) or xs == sorted(xs, reverse=True)
+ ok = True
+ for i in range(len(xs) - 1):
+ diff = abs(xs[i] - xs[i + 1])
+ if not 1 <= diff <= 3:
+ ok = False
+ return inc_dec and ok
+
+
+for i in lines:
+ xs1 = list(map(int, i.split()))
+ if is_good(xs1):
+ p1 += 1
+ good = False
+ for j in range(len(xs1)):
+ xs = xs1[:j] + xs1[j + 1 :]
+ if is_good(xs):
+ good = True
+ if good:
+ p2 += 1
+
+print(p1)
+print(p2)
diff --git a/data/2_2024.txt b/data/2_2024.txt
new file mode 100644
index 0000000..011c082
--- /dev/null
+++ b/data/2_2024.txt
@@ -0,0 +1,1001 @@
+16 18 20 22 23 22
+9 10 12 13 13
+64 67 69 70 74
+55 57 59 61 62 65 68 75
+8 11 9 11 14
+78 81 78 80 81 83 85 83
+67 69 66 67 67
+60 61 62 60 64
+63 65 68 70 72 75 72 79
+44 47 47 49 50 53 55
+80 81 81 84 81
+85 88 88 90 92 94 94
+66 69 72 74 76 76 78 82
+65 66 69 72 73 73 79
+78 80 84 86 87 89 91
+26 27 29 33 30
+53 54 56 60 62 62
+85 87 88 91 95 99
+63 64 68 70 75
+11 12 13 16 17 24 27 29
+82 85 86 92 94 92
+16 17 22 23 25 25
+56 58 61 64 69 71 72 76
+30 32 35 37 39 45 46 53
+48 46 47 49 51 54 56
+33 31 33 35 32
+75 72 73 74 74
+54 52 53 55 56 57 61
+92 91 92 93 99
+14 12 15 13 16
+59 56 58 60 61 58 55
+60 57 59 61 62 63 61 61
+88 87 90 87 90 94
+47 45 43 44 51
+59 56 57 58 58 60 61
+14 13 13 14 16 17 15
+60 59 62 62 62
+65 63 63 66 67 71
+3 2 5 5 6 12
+38 37 41 44 45 47 49 50
+83 82 86 87 86
+61 59 61 62 64 65 69 69
+61 60 61 62 66 68 69 73
+24 22 25 27 28 32 38
+83 81 83 84 86 93 95 97
+56 53 55 56 57 58 64 62
+8 7 10 17 17
+23 22 24 31 34 38
+7 4 9 12 19
+5 5 7 8 9 12
+53 53 55 57 58 60 59
+73 73 74 75 77 79 80 80
+14 14 17 19 23
+45 45 48 51 54 57 59 64
+86 86 85 88 89
+35 35 37 35 33
+36 36 38 36 36
+65 65 68 71 73 70 74
+66 66 68 69 68 71 78
+10 10 11 14 15 15 18
+86 86 88 90 90 88
+37 37 40 42 42 44 44
+50 50 50 53 55 59
+41 41 44 44 45 48 50 57
+19 19 22 23 24 28 31 33
+30 30 31 35 36 39 38
+50 50 54 57 59 59
+71 71 75 78 79 83
+34 34 38 41 42 45 51
+2 2 9 11 13
+34 34 35 38 41 48 45
+63 63 66 73 76 78 81 81
+64 64 66 72 75 79
+26 26 32 34 39
+17 21 23 24 26 27 29
+54 58 61 63 66 64
+49 53 54 55 56 59 59
+58 62 64 67 71
+35 39 42 44 45 47 52
+69 73 70 73 75 78 81 82
+39 43 46 45 47 49 51 49
+43 47 48 45 46 46
+54 58 59 60 57 61
+32 36 37 36 42
+4 8 11 12 14 14 17 20
+57 61 62 62 63 64 61
+85 89 92 92 92
+40 44 44 45 48 52
+57 61 63 65 68 71 71 78
+27 31 33 37 39 42 45 47
+11 15 19 21 22 19
+69 73 77 79 80 82 83 83
+2 6 10 11 13 14 18
+36 40 44 47 53
+16 20 26 27 29 32 34
+39 43 45 46 51 54 55 52
+71 75 76 77 82 84 87 87
+13 17 20 23 28 32
+55 59 62 65 70 71 77
+26 31 32 34 37 39
+84 89 91 94 95 94
+69 76 79 81 81
+63 70 71 73 77
+10 17 19 20 26
+67 72 74 76 75 77 78
+48 55 56 59 61 58 56
+32 38 36 37 38 39 42 42
+42 48 47 48 49 50 53 57
+74 79 77 79 80 83 85 90
+53 59 61 61 62
+6 12 12 14 16 19 17
+38 43 46 46 48 51 51
+6 13 16 19 19 22 23 27
+63 69 70 72 72 79
+37 42 46 49 51
+61 66 70 71 72 71
+47 54 55 59 61 61
+1 8 10 11 14 18 22
+14 21 24 27 31 37
+55 61 67 70 73 74
+42 49 51 57 60 57
+12 18 19 22 25 32 34 34
+5 10 17 20 21 25
+28 33 34 37 40 46 48 55
+70 67 66 65 63 61 60 63
+58 56 53 50 47 47
+98 96 93 92 91 88 84
+21 18 15 12 11 9 8 1
+93 92 91 89 90 88
+68 67 66 64 67 64 67
+88 85 83 86 84 84
+86 83 81 78 79 78 75 71
+88 87 85 88 82
+19 17 15 15 14 12 11 9
+79 77 75 73 72 72 69 71
+84 82 80 80 79 76 76
+30 29 26 23 23 21 17
+77 76 76 75 74 71 65
+37 35 31 28 25
+34 33 31 27 28
+94 91 88 87 86 82 80 80
+80 79 76 75 71 67
+73 70 68 66 62 56
+88 87 81 79 76 74
+51 50 43 41 42
+24 23 21 19 14 12 12
+92 89 87 81 80 76
+61 58 57 52 51 49 48 43
+16 17 15 12 10 9 8
+46 49 46 45 46
+59 60 58 56 54 53 51 51
+46 47 44 43 42 38
+74 76 73 70 67 66 60
+79 80 77 75 78 75 72 70
+63 65 63 65 66
+55 58 56 53 54 52 49 49
+12 14 13 15 11
+87 90 87 88 87 82
+36 39 39 38 36
+14 15 12 9 9 10
+38 39 38 37 34 34 33 33
+61 63 61 61 57
+45 46 46 43 41 36
+55 56 53 52 48 46
+26 28 25 21 24
+11 14 11 7 7
+61 63 62 58 54
+65 66 65 63 62 59 55 48
+26 29 28 23 22 21
+28 31 30 29 22 21 23
+47 48 47 40 40
+50 51 48 45 44 38 34
+39 41 40 35 32 29 28 22
+25 25 22 21 19 16 15
+69 69 68 66 63 61 58 59
+90 90 87 84 81 80 80
+31 31 28 25 21
+93 93 90 87 86 85 82 77
+15 15 12 10 7 9 6 4
+94 94 92 94 93 91 89 92
+21 21 18 21 21
+44 44 46 44 43 42 41 37
+27 27 28 25 18
+71 71 70 70 69 68 65
+60 60 60 59 57 60
+76 76 75 75 72 72
+36 36 33 33 29
+59 59 56 54 52 52 45
+47 47 46 44 40 37 36 33
+98 98 95 93 89 91
+42 42 38 37 35 34 32 32
+61 61 60 58 54 50
+91 91 87 85 80
+92 92 87 85 84 81 80
+78 78 77 76 71 70 68 70
+81 81 74 73 70 67 67
+66 66 63 60 57 55 49 45
+70 70 68 62 55
+56 52 49 48 47 45
+30 26 25 22 19 22
+91 87 86 84 83 83
+38 34 31 28 25 23 22 18
+57 53 51 48 41
+28 24 25 24 23 20
+99 95 92 89 88 87 88 90
+44 40 37 34 36 34 34
+26 22 24 22 19 15
+41 37 36 39 33
+85 81 81 78 77
+26 22 20 20 18 20
+88 84 84 82 79 79
+85 81 80 78 78 76 72
+73 69 68 68 61
+71 67 64 60 57
+80 76 72 71 73
+32 28 24 22 22
+18 14 11 7 5 1
+21 17 14 11 7 1
+48 44 37 35 33 31
+29 25 22 19 13 15
+63 59 56 53 46 46
+72 68 65 64 61 54 50
+31 27 26 23 16 10
+40 35 34 33 31 29
+16 11 8 6 4 7
+95 88 86 84 81 80 77 77
+91 86 83 81 77
+67 60 58 57 51
+24 18 17 16 17 14
+30 24 25 24 21 23
+15 8 5 3 5 5
+29 24 21 19 16 15 16 12
+23 18 16 15 18 16 11
+67 62 62 61 58 55 54
+56 51 48 48 46 45 42 44
+18 12 9 9 7 6 5 5
+61 55 54 52 52 48
+94 87 87 86 84 83 81 76
+87 81 80 76 75 72 71
+94 87 84 80 78 79
+22 16 13 10 6 5 3 3
+71 64 63 62 59 55 51
+28 23 20 16 15 14 8
+99 93 91 85 83
+58 51 45 43 40 41
+63 57 54 48 48
+48 42 39 32 28
+41 36 30 28 26 24 17
+76 79 76 72 71 70
+54 58 59 63 65 68 69 66
+63 62 60 57 54 50 48 50
+78 73 71 68 63 59
+39 44 46 49 52 56 58 59
+32 32 30 29 27 25 22 17
+49 43 41 41 41
+11 11 14 17 15 14
+71 69 67 62 60 59 60
+51 47 46 48 48
+11 11 11 10 8 8
+30 26 26 23 22 20 19 19
+80 81 87 89 94
+9 12 9 7 3 3
+43 40 37 34 32 30 27 20
+62 62 60 61 57
+7 6 8 8 9 12 15 16
+11 4 2 4 1 1
+66 66 69 73 77
+22 22 19 19 22
+90 84 83 82 78 77 74 69
+15 14 12 13 17
+8 11 11 9 7 1
+37 30 27 23 22
+84 87 89 93 95 97
+39 35 32 30 28 22 21 18
+79 84 89 92 93 96
+43 42 41 35 33 30 30
+49 45 43 40 38 38
+44 46 44 41 38 36 35 35
+17 17 19 20 21 21 21
+61 65 65 67 67
+42 38 36 33 30 25 26
+93 90 88 87 86 88
+98 99 97 99 98 97 94
+79 76 70 69 66 64
+81 83 79 78 77 70
+82 81 81 80 82
+47 47 47 50 53 57
+43 36 34 31 28 28
+27 27 28 31 32 38
+98 93 92 88 85 82 78
+92 94 92 89 88 85 83 76
+29 25 21 20 22
+17 19 20 23 24 28 29 29
+66 59 59 56 59
+7 6 8 10 13 17 21
+60 54 56 54 50
+91 88 87 89 96
+17 17 23 24 26 29 29
+5 9 10 13 16 16 20
+68 64 58 56 53 49
+37 34 36 39 42 44 50 54
+86 82 79 79 78
+67 67 66 66 65 62 61 57
+66 65 64 58 55 50
+17 21 27 28 29 30 32 33
+63 63 61 62 60 54
+83 88 89 91 95
+32 28 27 25 23 21 21 22
+54 51 53 56 59 60 57 57
+77 80 86 89 90
+27 23 20 17 14 12 9 5
+53 57 58 61 68 75
+27 27 24 21 19 18 17 16
+53 57 61 63 66 68 71 75
+6 10 11 15 15
+23 24 21 19 20 17 14 16
+66 72 75 81 84 81
+45 41 40 36 35 34 31
+85 88 85 83 83 82 84
+36 40 42 43 43 45 46 51
+87 87 85 84 82 83
+89 89 87 88 88
+89 89 89 90 93
+46 43 46 45 46 48 50 53
+83 83 84 90 94
+68 62 60 58 53 52 49 52
+25 25 21 20 18 16 19
+21 17 17 14 12 7
+15 12 11 9 6 3 3
+72 72 75 76 77 80 79
+27 26 24 20 16
+93 95 92 91 90 89
+57 58 57 56 54 49 47
+31 30 29 26 25 22 25 21
+45 45 42 42 40 35
+35 33 35 37 39 39
+12 13 17 18 23
+79 83 84 85 88 89 92 96
+13 9 7 10 6
+77 75 73 71 71 70 68 64
+7 6 8 11 15 14
+60 56 52 49 46 42
+31 38 37 38 40 43 44 44
+44 49 49 51 54 60
+46 46 42 41 39 35
+40 41 43 47 48 50 52 56
+18 18 17 15 10 9 5
+69 72 72 70 69
+48 52 53 55 56 54 61
+58 65 68 68 68
+63 66 65 58 57 54 50
+35 34 31 24 20
+53 56 57 62 62
+52 53 54 56 59 61 65 63
+48 43 41 40 33
+22 20 22 23 25 28 29 35
+8 12 11 12 12
+79 76 73 72 70 69 65
+73 73 72 68 68
+49 53 56 56 57 58 59 62
+23 18 16 12 13
+31 34 37 38 38 40 40
+79 81 80 77 79 75
+66 64 65 70 73 79
+14 11 13 19 21
+61 56 51 49 48 48
+26 27 32 35 36 39 40 39
+95 91 90 86 85 85
+76 77 75 74 70 73
+88 90 89 88 86 88
+57 56 54 50 44
+62 62 61 55 54 53
+42 38 37 32 29 26 19
+19 24 28 29 30 33 40
+73 69 68 66 63 62
+63 70 73 76 78 78 82
+74 69 65 63 61 59 59
+73 79 76 78 81 82 85 88
+91 90 89 91 90 88 87 84
+36 36 35 37 39 43
+88 88 91 95 95
+76 76 82 83 85 88
+73 77 84 85 87 84
+9 7 9 7 10 13 12
+75 79 79 80 83 85 86 85
+53 54 57 58 59 61 65
+47 51 54 55 62
+84 86 84 82 78 75 71
+60 64 70 71 74 77 77
+85 85 89 90 91
+75 78 76 70 69 68 69
+4 5 3 4 7 10 11 17
+46 46 39 36 37
+48 55 58 59 62 63 63
+60 62 63 64 65
+45 48 51 53 55 58
+64 66 67 68 69
+36 35 32 29 27 25 24
+28 27 25 23 21 18 15 14
+47 49 52 54 57
+91 90 88 86 85 82
+86 87 90 91 94 95 98
+79 78 75 74 73 71
+35 36 38 40 42 44 45
+21 22 24 27 30 33 34
+47 49 50 51 53 54 55
+59 58 56 54 52
+21 22 24 26 27
+71 72 75 77 80
+55 56 57 60 62 65 68 70
+29 30 33 36 37 39 40 43
+81 84 85 87 90 92
+78 75 72 69 68 66
+20 19 18 16 14 11 9 6
+52 49 48 46 45
+54 56 57 58 59
+41 44 45 47 50
+72 70 67 64 62 61 60
+53 56 59 62 63 65
+37 38 39 40 41 44 47 50
+90 89 86 83 82 80
+72 74 75 76 77
+60 59 57 55 53 50 48
+22 20 18 15 12 10 9
+13 11 9 7 4 2
+39 37 35 33 32 30 27
+82 84 87 88 90 92 94
+58 56 55 54 51 49 48
+66 67 70 72 74
+84 81 78 75 74 73
+84 82 80 78 77 74 72 70
+59 57 56 53 51
+61 59 56 53 50 47 46
+61 58 56 54 52 51 48
+45 47 50 51 54 55
+5 8 9 10 13 15 16 19
+51 53 56 58 61
+68 66 63 60 57
+63 65 67 69 71 72 73 75
+31 34 36 39 40 41 43
+20 17 15 12 11
+24 25 28 31 34 37 38
+33 36 39 42 43 46 47
+47 48 51 54 55
+45 48 50 51 52
+37 35 33 30 28 26 24 21
+17 14 13 11 10 7 4
+37 39 40 43 46 47 48 49
+87 88 89 91 92 94 97
+17 18 19 22 24 27
+51 54 57 59 61 64 65 67
+80 78 77 74 73 72 70
+38 40 42 44 46 48 49 50
+80 77 74 71 70 67 64 63
+77 74 73 71 68 66
+88 91 92 94 96 97 99
+72 71 70 67 64 61
+31 29 26 23 22 19
+38 36 33 31 29 28 27 26
+94 91 89 88 85 83 80 78
+98 95 92 89 86 84
+17 16 14 13 12 9 8
+33 34 35 37 39
+90 88 87 86 84 83 81 79
+94 92 89 88 87 85 84 81
+1 2 5 7 9
+8 9 10 13 15 18 20
+83 81 78 77 74 72 71
+75 77 78 79 80 83 86 87
+35 34 32 31 29 27 25 22
+16 13 12 11 8 7 6 3
+1 2 3 5 6 9 11 13
+71 72 73 74 76 77 78
+10 7 5 4 1
+87 90 92 93 94
+54 51 50 47 46 43 41 40
+90 91 93 94 96 99
+66 63 61 58 55 54 53
+36 35 33 31 28 25 22
+32 34 37 39 41 44 45 46
+43 42 41 40 38 35 32 30
+46 43 40 37 34 32 29 27
+76 78 81 84 85 88 91
+40 42 45 46 49 51 54 57
+83 80 78 75 73 70 67 64
+85 82 79 76 74 73 71 70
+75 72 69 66 65 64 61 58
+56 53 50 49 48 45 43 40
+52 50 49 46 44 41 38 35
+50 47 44 42 40
+69 68 66 64 61 60 57 55
+6 8 10 12 14
+88 90 92 95 97 98 99
+70 68 65 64 62
+59 60 63 65 67 69 72
+44 43 41 39 38
+78 81 83 85 88
+11 10 7 4 2
+43 46 48 50 52 54
+12 14 15 16 17 18 19 21
+17 20 21 24 26 27 29 30
+73 70 67 64 62 59
+21 19 17 15 14 11 9
+29 30 33 34 36 37
+53 50 48 46 44 43
+24 21 20 17 16
+62 59 56 53 50 47
+26 23 20 17 15 13 10
+71 74 76 79 81 84 85
+36 38 41 42 43
+28 27 25 23 22 20 19
+61 62 64 66 69
+48 46 45 44 43 41 39
+97 94 91 90 87 85 83 81
+22 21 18 16 14
+87 84 81 79 77 76 75 73
+87 88 91 93 95 96
+29 31 34 35 37 38 39 40
+7 10 12 15 17 20 21
+54 57 60 63 64 65 66 69
+48 51 53 56 57
+42 40 38 35 32 29 26
+38 40 43 46 47 49
+9 11 12 15 18
+38 35 34 31 30
+87 85 83 82 81
+93 92 90 88 87 84 81 78
+65 68 71 74 75
+67 70 73 74 75
+50 51 53 54 56
+69 71 72 73 74 75 78
+29 26 24 23 21 19 17 14
+47 48 49 52 53 55
+18 20 22 23 24 25
+81 79 76 73 70 68
+37 34 31 28 26
+45 43 42 39 38 36 33 32
+71 74 77 80 82
+3 5 7 9 12
+55 58 59 62 63 65 66 68
+2 5 8 9 12 15 18
+28 27 25 23 22 20 17
+77 78 80 82 83 85
+82 84 85 88 89 91 94
+34 36 37 38 39 41
+65 62 61 59 56 54 53
+24 26 29 31 32 35 37 40
+22 24 27 28 31 33 35
+78 79 82 84 87 88 90
+25 22 21 19 18
+62 63 64 66 67 70
+66 69 70 71 74 76 79
+82 85 86 89 91 93 95
+77 74 72 71 70
+62 64 66 68 70 72
+80 78 75 72 69
+28 31 33 35 37 38 40
+72 74 77 80 83
+67 68 71 74 75 77 78 80
+19 18 17 14 11
+55 53 51 50 49 47
+83 82 79 78 77 74 73 70
+91 89 87 85 82 79
+30 33 34 35 37 38 39
+73 72 69 68 67 66
+15 13 12 9 6 4 2
+15 13 12 10 7 4 1
+54 51 49 46 44 43 41 38
+69 66 63 60 57 56 55
+40 39 36 34 31 29 26
+58 55 54 52 51 48
+19 17 15 14 13
+31 30 29 28 27 24 23 21
+37 40 43 44 47 49 51 53
+45 47 48 50 53 55 56 58
+80 82 83 86 88
+39 40 42 43 44
+48 50 53 56 58
+71 74 75 77 79
+44 42 41 40 38 36 34 33
+7 9 11 14 17 20
+14 16 18 19 20
+66 63 60 58 55 54
+83 80 78 75 73 71
+18 20 23 24 25 27 28
+22 20 19 16 15 12 11
+36 39 41 42 43
+31 33 34 37 39 42 43
+34 31 29 26 23 20 17 15
+72 71 68 66 65
+48 46 45 42 41
+79 82 85 87 89 90 91 93
+38 37 35 33 31
+9 10 13 16 18 20 22
+94 91 90 88 86
+99 96 95 93 91 88 85
+25 23 21 18 15
+84 81 80 79 77 75
+33 31 29 27 26 24 23
+8 11 13 15 18 21
+37 39 41 43 45
+28 25 24 22 21 18 17
+65 63 60 59 58 56 54 51
+3 6 9 11 13 15 16
+63 65 68 69 70 71
+20 17 14 12 9 7
+11 12 13 16 19 22 24
+39 36 35 33 31 28
+15 17 19 22 23 25 26 28
+67 64 62 61 59 56 55
+38 35 33 32 29
+74 72 69 66 64 62
+26 25 22 21 20 19
+41 39 38 36 33 31 28
+51 49 48 46 45
+55 52 49 47 44 43 41 39
+54 55 56 57 60 61 63
+65 66 69 71 72 74 75
+43 40 37 36 34 31 30
+99 97 96 94 92 90 87 85
+28 31 32 35 38 39 41 44
+35 33 32 30 29 28
+65 63 61 59 58 56 54
+28 30 33 34 36 37 39
+11 14 15 17 18
+16 13 12 10 9 6 4 1
+82 85 86 89 92 93
+20 22 23 25 28 31 32 34
+3 5 6 7 8 9 11
+41 44 46 47 48
+52 49 47 46 43
+24 21 19 16 15 14 12 9
+30 29 26 23 22 20 18 15
+74 77 80 82 83 86 88
+38 39 42 43 44
+96 95 92 89 87 86 85 82
+81 79 77 74 71
+41 42 45 48 51 52 55
+42 39 37 35 34
+67 68 69 70 71 73 75
+78 81 84 87 90 91
+39 41 44 47 48 50
+81 83 84 85 88
+78 77 74 71 69 68 65
+18 21 22 25 28 30 32 35
+77 79 80 81 82 85 86 87
+79 76 73 70 68
+31 32 34 37 40
+61 59 56 55 54 51
+84 87 89 92 93 96
+39 38 36 34 32 30
+75 74 71 69 68 67 65 62
+39 40 42 45 48
+34 33 30 27 26 24 22
+37 35 34 31 28 25
+64 61 58 56 55 53 52 49
+85 82 81 80 79 78
+24 22 21 19 17
+48 47 46 44 41
+43 42 41 40 38 37 34 32
+93 92 89 87 84 82 81 79
+15 14 12 10 9
+28 25 24 21 20 17 15
+10 11 12 15 16 18 19 21
+32 33 34 36 37 40 43
+52 51 48 45 43
+64 66 69 72 75 78 81
+16 14 12 11 10 7 4 1
+36 35 33 32 31
+57 56 53 50 49 47
+19 17 16 15 12 10 8 6
+16 14 11 8 5
+72 69 68 65 64 62 60
+27 24 23 22 20 17 16 15
+59 57 54 51 50 47
+95 94 93 90 87 86 83 81
+51 49 48 45 44
+17 20 21 24 27
+17 18 20 23 26 29 30
+82 85 87 89 90
+47 46 43 41 40
+32 29 28 27 26
+46 49 51 53 56
+22 21 20 18 15
+97 94 92 90 88 85 82
+48 51 52 55 58 59 60
+19 21 24 26 28 31 34
+38 37 35 32 29 28
+83 82 81 79 77 75
+47 50 52 54 55 56 58 61
+6 9 10 13 15
+74 75 77 79 81 82
+61 59 58 55 52
+14 15 16 17 20 23
+24 21 19 17 15 13 12
+46 45 42 40 38 37 35 32
+37 39 41 43 46 49 52
+64 62 59 58 56 54
+92 91 88 86 83 82
+94 93 91 89 88
+59 58 56 54 53 51
+41 42 45 46 47 50 53 56
+28 30 33 36 39 40
+65 62 60 57 54 52 49
+72 73 76 79 82
+26 27 28 30 32 33 36
+86 85 82 81 80
+70 71 74 75 78
+93 94 96 98 99
+68 71 74 75 78 79
+38 41 44 47 48 50 52 55
+38 36 34 33 30
+18 20 22 24 25 28 29
+53 56 59 62 64 65
+28 27 24 22 21 18 17
+35 32 29 26 23 22 21 20
+35 37 38 40 43
+17 16 14 12 11
+32 31 30 28 25
+94 93 90 89 88
+83 80 79 76 73 72 71 70
+24 22 20 19 16 15 13
+55 52 51 49 46
+42 40 39 37 34 32 31 30
+16 14 11 8 6 4 1
+30 31 34 35 38 40 42 45
+11 8 7 6 5
+44 47 48 49 51
+42 39 37 34 31 30 29
+63 65 67 70 71 74 76 79
+82 81 78 75 73
+34 32 30 27 26 24 23
+72 75 77 79 82 83 84
+53 51 49 47 44 43 42 39
+87 88 89 90 91 92
+79 77 74 72 70 67 65
+57 56 55 52 49 47 45
+97 94 91 89 88 86 85 82
+22 21 19 18 15 13 10
+57 56 55 54 52
+14 12 9 6 4 3 2
+45 48 51 54 55 56 58 59
+51 52 55 58 59 60 62
+77 79 82 84 87 89 90
+58 61 64 65 66 69 70 73
+84 87 88 89 90 91 94 97
+1 3 6 8 11 14
+34 36 39 42 45 47 49
+15 16 17 20 22 25 28
+34 35 38 39 40 41 43
+22 25 26 27 28 30 33 35
+73 70 69 68 65 63 60 57
+26 23 21 19 16 14 12
+63 60 57 54 53
+70 69 67 64 63 61
+86 84 83 81 78 76 75
+97 94 93 91 90 87 86
+34 33 32 29 28 25 22 19
+93 92 91 88 85 84 82
+15 12 11 10 8
+94 91 89 87 85 82 79
+4 7 9 10 11 12 15 16
+46 44 42 41 40 39
+64 66 69 72 75 78 79
+47 46 43 40 39
+52 55 58 60 61 64 67
+55 56 57 59 62 64
+80 77 76 74 72 69 67 66
+37 38 40 42 45 48
+79 82 83 85 88 90 91
+64 61 58 55 52 51 48
+79 76 74 73 71 70 67 66
+78 79 82 84 85
+73 70 69 67 66 63
+48 46 43 40 37 35
+38 37 36 34 31
+75 72 71 68 67 64
+39 42 45 48 49 50
+87 84 83 82 79
+15 13 11 10 8 7 4
+62 61 60 59 58 56 53 50
+79 76 75 73 72 69
+26 24 23 22 19
+94 91 88 86 84
+35 33 30 29 28
+26 23 20 19 16 13 11
+31 30 27 25 22 20 17
+44 42 39 37 34 33 32
+23 22 19 16 15 14
+91 89 88 87 84 83 81 80
+75 76 77 79 82 84 85 86
+12 14 16 18 21
+66 64 61 58 56 53
+33 36 37 39 40 41
+33 30 29 27 24
+57 54 53 52 51
+35 36 39 41 42 44 46 49
+77 74 73 72 70 68 66 63
+29 32 33 34 36
+60 59 58 57 55 52
+7 8 10 12 13 14 17 19
+27 28 29 30 31 33 34
+77 80 81 83 85 88 90
+5 7 9 10 11 12 15
+57 55 54 51 48 46 45 44
+41 39 38 36 34 33 31
+71 69 66 64 62 61 58 56
+21 20 19 18 17 15 12 9
+76 77 80 82 84 87
+88 89 90 93 95 96 98 99
+38 40 41 43 44
+70 69 68 67 66 64 63 62
+75 74 71 69 68 66 64 63
+25 24 21 18 17 14
+84 83 82 80 77
+96 95 93 90 88
+18 20 22 25 26 29 31
+77 79 82 85 88 89
+49 51 52 53 54 57
+28 29 30 32 33 34 37
+28 29 31 33 34 36 38
+58 60 63 65 67
+33 36 37 38 39 41 42 43
+74 73 72 70 69 67 65 63
+37 35 33 32 30 27 24 22
+10 13 14 17 18 20 22
+69 72 73 75 77 80
+90 91 92 93 95 97
+14 13 12 10 7 5 4
+5 6 8 11 13
+77 79 81 83 85 88 90
+8 7 5 2 1
+78 75 73 70 68 65
+58 60 63 66 68 69 70 72
+56 53 52 50 47
+50 51 54 56 58 60
+32 29 27 26 24 22 20 18
+4 7 8 11 13 16
+23 26 28 29 31 33
+66 65 64 61 59
+65 63 62 61 58 55 52
+29 30 32 34 36 39 41
+44 42 41 40 39 38 36
+62 63 64 67 70 73 74
+85 82 81 80 77 76 75
+2 3 4 5 6 8 10
+28 30 32 33 34 36 39 42
+34 36 39 42 45 48
+14 12 11 9 6
+25 28 31 34 37 39 42
+43 41 38 35 32 30 28
+59 62 65 68 71 73
+49 52 55 56 58 59
+78 77 76 75 74 71 70 68
+84 87 90 93 95 97
+74 76 77 79 80 81 84 86
+40 39 36 35 32 31 29 26
+11 12 14 16 17 20 23
+8 11 13 15 17 18 21
+41 44 47 50 51
+83 82 79 77 76 75 74
+45 46 48 51 53
+34 32 29 28 27
+80 78 76 75 73
+63 62 61 59 57 55 53 52
+29 27 25 22 19 17 15 13
+82 80 77 76 75
+57 58 61 64 66 67 68
+13 10 7 6 5 3 2
+46 43 42 39 38
+40 42 44 46 49 52 55
+56 57 59 62 64
+13 12 11 9 7 4
+22 23 26 28 29 32 34 36
+43 41 38 37 35 33 31 28
+56 53 52 51 50 49 46 43
+53 55 58 61 62 63 65
+29 26 24 22 20
+20 21 22 25 26 28 31 32
+15 16 19 20 23 25 26
+33 36 37 40 42
+87 88 89 92 94 95 97
+92 89 87 84 83
+5 6 9 11 12 13
+47 44 43 41 39 38 36 33
+43 46 49 51 53
+41 42 45 46 49 52 53
+34 33 30 28 25 22 20
+15 16 17 19 21 22
+35 38 41 43 45 46 47 49
+62 65 68 69 70 73 74 76
+12 10 9 8 5
+84 85 88 90 91 94
+65 64 63 62 61 60 58 55
+31 32 34 36 37 40
+15 17 19 20 23 25 27 28
+66 67 69 72 75 77 80 83
+79 80 82 84 87
+27 25 24 23 20 17 14
+24 26 27 29 30 32
+58 59 62 64 65 67 70 73
+38 41 44 46 47 49 51 53
+82 79 76 75 73 72 70 68
+61 63 65 67 68 71
+35 38 40 42 44
+89 87 86 83 81 80 77 76
+79 80 82 84 85 86
+78 79 82 83 86 87 90
+27 25 23 21 19 16
+33 36 38 41 42
+61 63 64 66 68 71
+41 42 44 47 48 49 51
+56 55 52 50 49 48 45 43
+19 20 23 26 29 30 32
+67 70 71 74 75 77 80 82
+2 4 6 9 11
+21 22 23 26 28 31 33 35
+59 58 55 53 50 49 48
+71 69 66 63 60
+59 62 64 65 66 69
+74 72 69 68 67
+52 54 55 58 60 63 64
+14 16 17 20 23 24
+48 45 43 41 39
+65 67 70 71 73 76
+67 68 70 72 75 78 80
+89 87 84 82 80
+79 82 83 86 88 89 91 93
+35 36 37 39 42 45 46
+9 10 13 14 16 18 21 22
+78 81 82 84 87
+25 24 21 20 18
+48 45 42 41 40 38 35 33
+99 97 94 92 89 87 84 82
+70 68 66 65 63 60 57
+80 77 75 73 72 71 70
+10 12 14 17 18 19
+36 37 39 42 44
+63 64 66 67 69 72 75
+53 52 50 49 47 44 41 39
+44 47 49 52 55 57 60
+83 84 87 90 93
+18 16 14 11 10 7 6 3
+69 67 64 61 58 56 53 52
+92 93 94 97 99
+81 78 76 74 72 70 69
+53 51 49 47 45 44 43
+79 80 82 84 85 86 88
+80 78 75 73 70 67
+50 47 44 41 39 37
+66 63 60 57 55 53 52
+96 93 92 89 86 84 83 82
+77 79 80 83 86
+20 18 17 15 12 11
+27 30 31 34 37
+61 58 57 56 54 51
+34 36 39 42 44 47 50
+33 30 29 26 24 22 21
+19 16 14 11 10 9 6 5
+31 32 35 38 39 42 45
+49 50 51 54 56 59
+24 26 27 30 31 32 34
+51 50 48 45 42
+51 52 55 57 60 63
+39 36 34 31 28
+38 37 34 31 30 27
+59 60 61 62 65 66 68
+24 25 27 29 30 32 35
+10 11 12 13 14 15
+85 88 90 93 94 95
+55 53 50 49 48 45
+50 47 45 43 41 38
+21 20 19 18 17 15 14
+34 31 28 27 24 21
+82 84 87 89 92 95 97
+46 44 43 40 39 37 35 33
+30 32 34 36 37 39 42
+15 12 9 6 3
+20 21 23 26 27 28
+66 67 69 70 71 72 74
+2 3 6 8 10
+42 40 39 37 34 31
+21 20 18 16 13
+87 85 84 81 78
+51 50 49 47 45 42 40
+61 59 58 56 54 52 50 47
+97 96 93 92 90
+87 84 81 78 76
+19 21 23 24 27 29 32 34
+76 79 82 84 87 88 89 92
+81 79 78 76 75 74 71 70
+23 26 29 32 33 35 38
+82 80 79 76 73 70 67 66
+52 55 56 59 61 64
+68 71 74 76 78
+66 65 63 60 58 55 53 50
+68 70 71 73 75 78 80
+61 58 57 54 52 49 47 46
+31 33 34 37 38
+87 85 83 82 79
+