aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarvin Borner2022-12-21 09:50:39 +0100
committerMarvin Borner2022-12-21 09:50:39 +0100
commit551d0b6018c054f891ffb3c3fb92a65e839c2d51 (patch)
tree8e5c14bb53c564edc74712a652b66aff257a8b1d
parentda36b579a724833d166f1076f906adee817b2527 (diff)
whoo
-rw-r--r--2022/18/input2742
-rw-r--r--2022/18/solve.py34
-rw-r--r--2022/19/input30
-rw-r--r--2022/19/solve.py69
-rw-r--r--2022/20/input5000
-rw-r--r--2022/20/solve.py32
-rw-r--r--2022/21/input2401
-rw-r--r--2022/21/solve.js32
8 files changed, 10340 insertions, 0 deletions
diff --git a/2022/18/input b/2022/18/input
new file mode 100644
index 0000000..563efca
--- /dev/null
+++ b/2022/18/input
@@ -0,0 +1,2742 @@
+13,6,3
+13,5,16
+11,2,10
+7,6,15
+8,11,3
+5,6,15
+6,11,3
+5,14,15
+11,18,8
+9,16,7
+2,10,11
+8,3,11
+5,7,6
+18,14,15
+10,5,5
+17,6,14
+6,4,7
+9,2,14
+3,11,16
+7,18,14
+14,12,4
+7,14,3
+12,16,4
+16,5,7
+14,7,3
+9,3,14
+14,14,16
+4,17,12
+17,16,14
+8,10,20
+16,10,17
+10,5,4
+11,5,4
+13,16,4
+12,2,12
+3,8,14
+8,5,14
+17,14,7
+16,7,3
+7,7,3
+15,15,7
+6,3,9
+5,6,5
+8,3,13
+16,14,4
+19,9,11
+5,8,5
+13,15,17
+15,7,16
+18,9,9
+4,6,8
+11,4,8
+9,19,12
+17,8,4
+13,4,16
+13,20,12
+9,17,12
+17,12,8
+14,11,2
+12,4,16
+3,7,8
+12,9,3
+14,16,4
+14,3,14
+4,16,9
+7,2,10
+12,5,5
+19,9,8
+17,11,3
+14,17,17
+13,12,19
+14,17,5
+11,13,20
+6,18,10
+12,1,10
+6,5,7
+2,8,8
+13,4,14
+5,3,13
+14,16,5
+12,17,7
+6,14,4
+5,10,17
+9,8,2
+13,4,5
+13,7,18
+5,19,8
+18,11,14
+1,10,9
+16,16,7
+5,5,8
+3,5,10
+6,3,8
+5,16,7
+6,9,4
+10,16,3
+18,7,13
+5,4,10
+9,14,18
+18,13,12
+19,11,15
+14,17,8
+15,6,13
+16,15,6
+3,15,10
+17,14,9
+14,15,16
+10,14,1
+10,2,15
+9,18,13
+2,10,9
+5,17,8
+14,9,3
+3,14,15
+12,3,13
+4,16,13
+7,6,17
+4,4,8
+13,3,10
+4,4,12
+11,19,14
+9,10,4
+14,10,16
+6,18,13
+9,4,4
+20,9,11
+3,11,5
+5,13,15
+2,14,11
+5,12,17
+10,20,12
+10,2,6
+14,5,15
+14,11,19
+9,20,13
+10,2,11
+17,16,12
+17,7,16
+3,8,10
+3,15,12
+4,7,14
+3,13,12
+19,12,12
+10,20,9
+10,1,12
+12,2,9
+17,16,15
+14,20,11
+6,17,6
+5,16,11
+6,19,9
+11,15,2
+11,8,2
+3,11,10
+10,4,5
+10,15,16
+7,4,7
+3,5,13
+2,13,8
+18,6,7
+19,8,12
+15,15,5
+17,12,5
+6,15,16
+7,12,18
+13,17,15
+15,4,7
+12,18,11
+18,12,14
+6,16,7
+13,12,4
+1,11,10
+10,14,3
+8,6,18
+14,4,9
+18,10,5
+5,16,14
+13,3,14
+5,6,6
+10,7,4
+7,7,16
+19,12,13
+11,4,15
+10,14,16
+18,8,13
+10,8,18
+3,13,10
+4,7,16
+15,3,14
+12,14,19
+6,7,4
+11,3,4
+18,9,12
+3,5,12
+9,3,6
+19,13,13
+4,7,13
+7,19,10
+2,11,6
+5,5,10
+8,16,17
+5,4,14
+18,7,15
+5,7,13
+9,11,2
+3,16,13
+16,4,8
+15,17,6
+10,4,4
+6,4,11
+2,13,14
+13,6,17
+7,3,12
+13,19,12
+10,19,16
+16,11,4
+12,15,18
+17,11,5
+4,12,13
+3,16,9
+12,3,10
+8,1,12
+18,12,15
+6,2,14
+16,6,14
+17,15,9
+14,13,3
+13,1,9
+16,13,17
+15,18,13
+7,13,18
+4,13,16
+6,4,13
+9,4,13
+11,19,10
+7,4,4
+9,7,18
+18,16,11
+3,12,12
+12,2,14
+7,10,18
+17,16,11
+11,13,2
+11,3,5
+11,3,14
+3,10,15
+16,18,11
+4,15,7
+11,11,20
+4,14,17
+8,12,19
+4,15,10
+10,16,7
+10,6,17
+19,12,11
+16,5,10
+10,4,6
+17,5,10
+16,10,4
+8,11,19
+7,5,17
+14,18,14
+12,2,10
+9,4,6
+6,9,3
+7,15,11
+6,4,10
+15,8,2
+3,7,13
+4,4,7
+14,19,14
+11,8,20
+14,8,3
+16,16,12
+18,13,8
+5,17,10
+17,14,15
+15,8,18
+7,3,8
+8,7,3
+15,11,4
+8,4,14
+19,11,10
+6,11,5
+10,9,1
+4,14,15
+11,1,12
+13,16,8
+4,10,17
+11,14,18
+8,10,3
+6,14,16
+4,6,11
+5,16,10
+7,17,12
+12,17,16
+16,10,3
+12,2,8
+3,11,7
+2,12,11
+17,17,13
+17,9,14
+17,18,13
+7,17,16
+9,17,15
+5,18,9
+11,4,17
+5,8,16
+14,11,3
+14,6,17
+17,8,11
+12,9,2
+9,18,7
+10,3,13
+8,6,19
+12,16,5
+18,5,9
+1,11,8
+12,7,2
+9,19,8
+11,3,7
+6,8,15
+6,13,18
+14,13,16
+6,8,4
+16,3,14
+6,17,12
+17,12,17
+11,11,19
+12,14,2
+11,3,13
+15,17,7
+15,14,3
+13,17,17
+9,10,3
+13,7,19
+16,6,5
+6,1,11
+17,8,14
+2,14,6
+15,4,14
+12,5,15
+17,4,7
+18,10,7
+9,14,3
+13,18,7
+15,8,4
+6,5,5
+7,17,6
+7,8,18
+4,17,10
+16,7,12
+10,18,11
+8,6,17
+8,13,1
+12,18,8
+4,14,7
+17,7,7
+10,7,18
+3,12,13
+10,2,12
+16,13,4
+10,2,8
+15,10,4
+18,12,5
+15,19,10
+8,7,2
+17,11,6
+7,4,9
+14,3,16
+14,9,18
+11,6,18
+4,8,10
+15,3,11
+17,17,10
+19,10,13
+6,16,16
+16,13,3
+10,1,10
+15,15,4
+18,9,5
+3,15,9
+9,19,9
+14,14,4
+11,4,16
+4,11,14
+13,18,16
+12,18,13
+15,4,11
+20,12,11
+6,3,6
+8,18,15
+10,3,11
+12,14,3
+13,18,5
+10,15,4
+10,5,17
+11,12,20
+4,8,5
+6,2,12
+7,4,5
+16,6,17
+6,12,3
+10,4,14
+18,11,15
+19,13,12
+3,11,15
+17,6,9
+16,6,7
+14,8,17
+1,9,10
+1,10,10
+15,8,16
+4,9,16
+8,11,2
+14,19,11
+12,20,13
+5,11,16
+4,12,16
+9,3,5
+15,13,18
+10,18,15
+3,15,11
+10,3,5
+11,12,2
+10,13,19
+20,9,10
+16,8,16
+7,14,16
+3,13,15
+8,7,5
+2,15,9
+6,10,3
+20,11,11
+7,12,19
+8,15,17
+15,9,20
+5,14,4
+7,11,2
+11,10,2
+5,17,13
+14,3,8
+4,6,6
+13,10,19
+12,17,3
+9,10,19
+3,9,8
+6,16,8
+9,13,2
+8,19,15
+16,8,11
+10,9,18
+17,4,10
+17,8,13
+9,10,20
+5,4,12
+19,13,14
+8,5,8
+14,3,10
+9,19,10
+4,12,15
+12,2,13
+9,16,3
+15,2,12
+13,10,2
+9,2,9
+11,12,19
+14,10,3
+8,8,2
+12,7,16
+16,12,16
+8,14,19
+5,13,3
+17,5,8
+11,17,4
+19,11,6
+7,19,12
+15,5,17
+17,6,15
+12,5,16
+5,6,8
+5,5,6
+2,13,12
+8,19,10
+3,14,8
+15,16,7
+13,12,18
+10,9,2
+6,4,6
+3,8,11
+10,18,13
+17,4,8
+18,15,9
+5,9,16
+10,19,9
+3,9,6
+17,3,11
+6,10,4
+12,5,17
+5,6,9
+6,5,13
+19,11,11
+18,11,7
+16,4,14
+15,5,4
+14,4,7
+12,8,4
+6,3,7
+5,4,7
+16,11,17
+2,9,8
+13,20,11
+5,10,15
+15,5,15
+10,12,18
+7,5,6
+5,14,6
+8,7,15
+19,13,8
+18,12,11
+10,3,16
+13,8,18
+17,7,5
+8,14,17
+6,15,7
+7,10,19
+15,2,11
+11,11,2
+14,5,4
+14,15,15
+12,16,16
+7,5,16
+9,9,1
+14,13,17
+17,16,10
+10,17,5
+18,14,8
+3,8,6
+3,11,6
+9,16,17
+3,7,9
+6,4,8
+5,12,18
+6,16,17
+16,14,16
+20,11,7
+14,18,9
+15,13,17
+13,16,17
+4,3,7
+1,12,13
+5,17,15
+13,19,9
+12,3,14
+9,15,4
+18,12,13
+3,14,12
+13,9,2
+16,14,6
+10,4,11
+6,17,8
+5,11,17
+7,5,4
+2,9,9
+8,3,15
+2,11,11
+6,17,11
+7,3,13
+15,3,7
+6,14,5
+16,16,11
+12,9,19
+18,16,10
+11,14,4
+2,14,9
+4,6,9
+12,4,4
+18,5,15
+8,9,19
+3,10,17
+8,1,11
+8,16,15
+10,12,4
+15,14,17
+1,13,7
+8,12,3
+7,7,17
+9,7,3
+10,15,17
+17,12,15
+14,4,15
+12,14,17
+19,14,9
+17,10,5
+8,13,2
+15,8,3
+4,16,14
+17,14,12
+2,11,9
+15,6,7
+18,13,15
+5,10,3
+9,14,16
+18,15,15
+10,1,7
+13,2,12
+11,13,19
+11,5,3
+13,15,3
+6,14,6
+14,19,8
+18,17,13
+10,7,3
+12,4,14
+10,2,5
+4,7,6
+10,17,7
+13,5,3
+8,14,4
+8,3,5
+15,18,9
+4,14,5
+14,17,15
+4,14,4
+15,13,3
+12,10,19
+1,9,9
+18,5,8
+12,12,17
+8,6,3
+15,7,18
+18,12,16
+17,13,8
+4,12,6
+11,18,13
+18,10,8
+16,8,6
+6,5,15
+6,15,4
+8,19,11
+12,19,11
+12,12,3
+12,16,18
+15,6,18
+14,11,1
+10,6,20
+3,6,7
+9,5,18
+15,12,3
+5,9,8
+9,1,11
+6,7,5
+7,10,17
+13,6,16
+15,16,10
+4,12,5
+5,13,19
+12,4,6
+8,6,4
+7,16,3
+7,4,14
+10,6,15
+8,14,2
+15,11,19
+6,5,10
+18,8,14
+3,4,13
+16,16,15
+5,5,16
+13,5,15
+15,18,11
+16,8,13
+11,10,18
+18,7,8
+6,17,14
+4,13,17
+16,10,18
+6,5,6
+2,8,10
+13,16,2
+15,18,10
+6,16,13
+17,5,14
+17,6,13
+20,7,10
+19,7,13
+9,16,4
+5,18,10
+11,6,4
+15,14,4
+14,12,3
+11,10,3
+19,11,7
+7,3,11
+4,8,6
+10,10,20
+18,8,18
+4,15,13
+12,14,18
+18,9,13
+16,3,10
+15,6,4
+12,5,3
+7,13,16
+12,11,20
+4,4,11
+14,17,16
+19,10,15
+15,3,12
+5,4,9
+6,16,5
+15,17,10
+13,10,5
+18,9,11
+12,19,10
+10,4,16
+9,14,4
+11,5,18
+7,5,7
+9,3,13
+7,8,4
+19,12,8
+15,6,17
+16,9,4
+6,18,8
+13,14,17
+3,12,6
+18,16,12
+9,4,12
+14,4,4
+11,17,14
+16,16,6
+5,6,16
+11,3,6
+4,6,10
+13,4,18
+12,19,9
+10,3,8
+2,13,9
+9,18,10
+2,13,10
+8,2,11
+6,15,6
+16,16,14
+17,15,12
+10,3,14
+3,13,14
+18,16,9
+8,14,5
+9,9,17
+5,17,6
+5,18,14
+18,8,11
+10,5,13
+11,19,11
+14,5,16
+8,7,18
+18,5,10
+4,17,5
+18,15,14
+6,4,9
+8,8,19
+4,11,6
+14,5,6
+11,6,2
+20,12,12
+8,10,2
+3,7,10
+13,4,15
+14,7,18
+10,16,16
+2,11,16
+18,8,15
+8,5,17
+20,12,7
+6,17,16
+6,10,17
+12,4,8
+10,17,17
+10,16,5
+3,10,8
+14,2,10
+9,9,18
+19,13,10
+8,9,2
+4,11,8
+15,11,17
+16,12,6
+16,15,14
+16,16,16
+15,4,15
+7,9,3
+18,10,14
+11,14,3
+17,6,10
+9,8,4
+2,10,17
+7,9,4
+4,9,5
+17,11,15
+4,6,13
+7,16,17
+5,5,14
+9,19,15
+10,5,19
+5,5,15
+4,15,16
+19,9,9
+3,14,7
+14,14,17
+17,14,4
+19,5,11
+17,16,8
+8,19,13
+11,18,9
+6,18,14
+15,17,9
+15,9,4
+18,6,9
+18,14,7
+13,2,13
+4,8,7
+19,10,11
+14,4,14
+9,18,6
+8,15,18
+5,12,5
+8,17,9
+17,8,8
+17,6,5
+2,6,9
+2,8,11
+8,9,6
+17,9,8
+6,6,14
+17,4,9
+10,18,7
+19,7,9
+16,14,5
+4,13,4
+11,6,3
+17,4,14
+14,16,17
+5,7,4
+18,11,12
+12,15,5
+3,9,11
+5,11,4
+12,18,9
+7,16,5
+5,5,5
+11,1,13
+14,14,3
+5,17,7
+17,9,5
+9,2,15
+10,11,2
+6,11,14
+7,2,9
+14,2,8
+8,18,7
+11,19,13
+6,3,11
+13,5,18
+15,14,5
+6,3,15
+7,9,19
+16,5,8
+8,2,12
+14,9,4
+13,19,7
+14,13,18
+14,7,17
+7,8,19
+6,9,16
+12,10,3
+6,15,17
+12,18,14
+4,14,16
+6,13,2
+18,11,8
+4,11,13
+18,13,9
+18,17,11
+17,5,13
+2,8,13
+1,14,8
+7,12,3
+9,6,3
+17,15,6
+9,20,9
+15,5,12
+6,6,5
+11,16,4
+7,3,5
+16,17,14
+4,17,8
+5,5,7
+6,18,12
+11,7,3
+15,4,8
+20,10,12
+7,18,10
+17,8,5
+2,11,12
+3,6,10
+15,6,16
+15,10,17
+2,7,6
+18,15,7
+14,9,2
+2,12,7
+10,3,17
+14,12,2
+13,12,20
+20,11,13
+7,10,2
+1,9,11
+17,9,16
+3,9,4
+16,5,5
+14,9,19
+7,3,9
+7,13,3
+17,6,6
+15,11,18
+16,4,12
+10,12,3
+5,16,5
+18,7,11
+11,16,16
+2,6,8
+10,16,15
+16,9,5
+5,15,15
+10,8,19
+3,8,15
+13,15,4
+11,19,12
+15,12,18
+12,19,12
+12,15,19
+19,9,12
+3,10,14
+15,3,8
+4,5,5
+16,5,13
+5,13,17
+14,6,5
+11,19,15
+15,17,16
+3,14,9
+10,2,13
+9,4,16
+10,18,14
+9,3,15
+14,11,18
+13,13,3
+18,15,5
+18,7,6
+10,15,2
+9,18,11
+10,2,14
+13,11,1
+19,8,11
+11,10,19
+2,6,11
+8,8,4
+16,12,4
+14,15,13
+19,16,10
+10,2,9
+9,18,12
+7,4,15
+5,7,8
+12,9,18
+15,6,15
+4,14,6
+11,8,19
+14,18,8
+14,17,13
+6,13,3
+8,17,15
+8,2,14
+13,14,19
+3,5,9
+13,18,6
+18,7,7
+13,12,2
+5,9,3
+13,11,19
+5,4,11
+11,3,17
+3,5,8
+8,16,6
+13,10,20
+13,18,14
+7,17,15
+14,16,12
+8,12,2
+17,4,13
+10,11,20
+12,10,2
+11,2,8
+9,2,10
+12,1,9
+8,5,16
+12,8,3
+20,15,9
+6,8,16
+10,17,16
+16,14,8
+12,17,5
+4,8,16
+7,15,18
+9,5,14
+13,16,5
+10,8,1
+11,20,12
+17,7,8
+7,2,12
+14,19,12
+10,10,19
+7,17,8
+15,7,6
+9,11,3
+14,6,15
+5,9,5
+20,14,11
+6,17,10
+17,11,16
+8,19,9
+17,13,16
+18,14,14
+3,12,9
+16,17,12
+14,7,5
+14,17,9
+19,9,14
+10,2,10
+16,15,4
+15,10,2
+11,2,14
+8,7,6
+8,19,6
+12,2,7
+16,3,12
+14,6,4
+4,8,4
+8,4,10
+14,15,4
+12,19,13
+10,6,18
+18,6,8
+2,9,10
+11,15,3
+16,13,16
+8,9,3
+10,18,8
+11,17,15
+17,13,5
+7,2,11
+17,13,15
+8,4,9
+18,7,14
+6,17,9
+12,12,18
+4,13,12
+19,7,10
+11,10,20
+13,19,13
+15,6,11
+4,5,15
+8,11,1
+12,7,18
+13,5,5
+6,7,16
+4,6,7
+15,16,9
+6,3,14
+18,15,13
+12,13,19
+17,17,8
+12,19,7
+15,5,5
+5,6,13
+19,6,11
+14,12,5
+2,12,9
+9,4,5
+15,5,11
+3,17,10
+16,17,11
+14,13,2
+20,9,8
+17,10,16
+2,9,15
+14,4,10
+7,4,16
+13,13,17
+12,9,16
+10,7,2
+9,8,19
+13,3,6
+11,7,18
+4,8,9
+17,10,18
+10,3,7
+16,8,4
+7,6,5
+1,7,11
+5,13,18
+3,6,11
+8,11,18
+17,12,6
+8,8,3
+18,14,13
+11,9,18
+5,13,13
+15,6,6
+7,14,19
+7,12,4
+9,7,2
+13,3,13
+15,17,11
+10,17,4
+8,17,18
+12,19,14
+19,8,9
+6,16,12
+8,7,4
+4,7,7
+13,3,15
+10,20,11
+7,14,4
+18,10,9
+17,14,8
+16,7,7
+15,4,13
+18,11,5
+4,8,15
+2,9,11
+1,13,12
+2,8,9
+6,19,10
+14,8,18
+11,18,12
+16,7,4
+4,10,16
+10,18,17
+3,11,8
+12,15,17
+17,5,11
+19,9,10
+19,8,16
+2,11,13
+20,9,12
+14,4,16
+5,13,9
+15,4,9
+18,10,11
+3,12,7
+4,9,12
+4,13,5
+11,15,18
+7,13,2
+12,1,12
+5,9,11
+2,8,12
+17,7,15
+14,5,12
+12,5,18
+3,14,11
+5,13,4
+17,8,7
+15,5,6
+19,8,7
+13,16,16
+5,11,15
+3,10,11
+8,6,16
+19,8,15
+6,18,7
+18,7,10
+14,3,9
+10,16,4
+15,19,13
+8,16,16
+17,14,17
+3,13,8
+4,5,11
+9,18,3
+5,17,14
+7,9,18
+6,16,6
+9,6,18
+6,9,19
+6,7,3
+9,19,13
+16,15,5
+14,16,7
+12,17,17
+18,9,17
+12,11,19
+16,7,17
+13,4,6
+3,6,12
+13,17,5
+8,18,14
+5,14,5
+15,18,12
+13,2,10
+5,5,9
+18,6,10
+9,13,18
+3,10,9
+6,6,18
+17,15,7
+4,9,7
+3,11,17
+15,6,8
+4,7,15
+11,12,1
+12,7,17
+6,14,3
+15,15,15
+17,14,11
+6,6,7
+13,20,13
+15,9,2
+12,2,11
+5,6,7
+13,8,3
+2,7,10
+19,10,12
+6,10,16
+16,17,6
+13,8,17
+17,13,4
+7,2,7
+11,9,3
+12,11,2
+13,8,16
+5,10,2
+10,19,7
+8,4,6
+17,5,9
+13,1,10
+16,4,13
+13,6,1
+6,11,4
+18,14,6
+12,13,17
+17,15,10
+7,12,1
+6,4,12
+4,7,9
+16,7,15
+6,9,6
+5,12,3
+4,14,14
+14,13,20
+15,18,15
+19,14,11
+16,18,12
+10,15,15
+6,6,17
+9,5,6
+14,18,11
+13,2,11
+7,19,8
+19,14,8
+18,11,11
+13,6,4
+1,10,8
+9,14,17
+16,17,13
+4,7,17
+10,1,11
+9,2,13
+4,10,7
+4,8,13
+8,15,3
+13,10,3
+10,9,20
+19,12,6
+3,14,10
+1,12,10
+7,9,2
+9,17,16
+9,1,12
+18,8,6
+6,5,4
+6,14,7
+12,19,8
+14,10,19
+17,6,7
+8,5,15
+11,19,7
+13,18,9
+18,6,13
+8,17,16
+10,7,14
+18,11,4
+15,17,8
+1,7,10
+10,19,12
+16,5,6
+9,11,18
+17,16,7
+6,7,8
+5,9,4
+6,4,14
+16,9,16
+13,4,13
+11,3,9
+12,13,2
+11,3,16
+5,6,17
+13,3,7
+9,4,7
+5,15,9
+16,10,5
+15,13,14
+15,11,3
+7,17,11
+11,5,5
+7,3,15
+4,16,10
+11,9,19
+15,12,2
+16,6,16
+19,11,14
+13,3,8
+15,17,14
+1,8,9
+19,13,9
+10,11,18
+7,1,10
+13,4,7
+12,1,16
+5,6,10
+13,18,11
+10,10,1
+5,11,2
+19,9,13
+4,17,13
+19,14,10
+15,16,6
+7,12,2
+10,11,1
+8,17,4
+10,15,1
+7,16,4
+3,15,14
+11,9,2
+19,8,14
+4,11,4
+10,13,20
+3,15,13
+15,16,18
+16,18,13
+14,13,4
+1,10,12
+11,20,13
+12,6,4
+5,12,4
+17,4,12
+4,10,3
+5,9,6
+5,15,12
+16,11,16
+5,7,10
+15,6,14
+3,10,10
+5,16,17
+18,10,16
+11,4,13
+9,5,16
+11,2,9
+12,5,8
+3,14,14
+6,11,6
+15,6,3
+8,11,20
+9,15,3
+12,4,3
+17,12,4
+6,9,18
+7,11,18
+4,18,10
+6,5,8
+3,13,6
+14,2,11
+7,11,19
+1,10,13
+4,15,14
+8,16,3
+16,7,6
+13,8,19
+15,17,5
+5,8,8
+17,10,7
+15,7,5
+14,5,3
+16,15,12
+1,9,13
+2,9,13
+11,1,9
+16,5,14
+2,12,13
+3,6,16
+5,16,8
+10,3,12
+3,14,16
+12,2,15
+5,12,6
+12,3,16
+8,3,7
+16,4,11
+5,8,17
+11,2,11
+13,17,13
+11,4,18
+3,16,10
+3,12,8
+2,10,13
+18,15,11
+18,5,12
+2,7,11
+14,3,6
+15,6,5
+14,10,2
+2,12,14
+6,13,4
+15,16,16
+8,19,12
+2,10,8
+15,9,19
+14,6,6
+15,4,10
+17,14,16
+2,11,14
+9,16,5
+8,18,9
+10,7,1
+16,5,9
+18,6,16
+15,13,16
+5,15,7
+16,4,15
+15,16,14
+6,8,6
+14,5,10
+16,5,15
+9,5,15
+6,3,13
+8,16,18
+16,3,11
+7,3,7
+9,13,19
+16,14,13
+12,3,8
+9,9,3
+2,11,10
+17,14,13
+14,16,6
+20,12,14
+10,5,16
+13,9,4
+12,5,4
+1,13,8
+17,17,14
+3,10,7
+10,13,2
+15,9,17
+14,19,10
+4,5,12
+7,10,3
+13,16,6
+16,7,9
+3,16,12
+4,9,4
+16,8,18
+2,11,5
+13,17,6
+7,17,5
+6,19,14
+5,16,6
+10,17,13
+3,8,13
+3,7,15
+12,4,7
+4,6,4
+11,14,19
+9,18,16
+8,3,6
+9,2,12
+13,2,7
+8,4,13
+8,17,14
+19,10,10
+10,15,5
+15,15,6
+18,15,10
+5,9,18
+10,20,13
+12,17,14
+19,7,12
+6,8,18
+16,2,10
+2,7,12
+7,13,4
+17,15,14
+8,15,5
+12,17,6
+18,9,8
+16,12,3
+11,9,1
+10,18,16
+16,10,16
+12,5,7
+15,19,11
+12,8,20
+10,9,3
+6,12,17
+1,14,9
+8,7,17
+13,5,4
+13,14,1
+9,13,4
+7,16,10
+9,17,18
+15,16,4
+5,8,15
+3,6,13
+7,11,3
+19,11,12
+10,11,3
+4,9,3
+12,7,4
+10,19,11
+17,8,3
+10,17,3
+6,12,2
+9,17,9
+6,7,15
+8,14,7
+15,10,18
+4,8,14
+19,14,7
+13,1,8
+18,14,12
+14,14,18
+13,15,15
+6,5,14
+10,15,18
+14,2,9
+12,13,3
+7,15,7
+14,4,5
+11,1,8
+16,14,15
+18,10,13
+4,16,12
+5,5,13
+4,15,5
+17,9,7
+14,5,17
+6,10,14
+11,17,5
+20,8,10
+14,17,7
+11,13,4
+9,3,8
+9,16,18
+2,7,14
+5,3,9
+6,11,18
+14,5,11
+8,2,7
+7,14,5
+7,3,6
+6,2,13
+9,18,9
+1,11,15
+3,7,4
+4,12,18
+16,9,18
+9,18,14
+3,7,14
+7,18,11
+19,7,8
+5,11,3
+6,12,4
+17,12,7
+13,5,7
+16,18,10
+7,18,12
+5,8,7
+9,2,5
+9,2,11
+10,2,7
+13,19,8
+12,19,16
+3,6,14
+16,7,14
+16,15,16
+18,8,9
+5,13,14
+5,7,17
+3,10,13
+6,2,11
+3,9,5
+6,13,19
+16,16,5
+9,9,19
+10,16,17
+15,17,15
+11,2,5
+11,19,9
+8,5,18
+5,16,15
+15,8,5
+19,11,13
+20,12,10
+9,13,20
+14,18,16
+12,17,12
+13,15,14
+6,6,4
+14,8,6
+18,12,8
+6,6,6
+16,4,9
+11,20,11
+9,3,10
+5,9,17
+18,11,9
+4,10,5
+4,13,9
+17,8,16
+9,17,17
+7,13,19
+19,13,11
+14,8,5
+7,18,6
+9,12,18
+4,16,7
+2,10,12
+17,9,15
+12,12,20
+17,12,14
+2,13,7
+5,15,5
+5,15,17
+11,3,10
+16,3,6
+12,16,17
+4,7,10
+11,2,12
+16,4,10
+17,6,11
+9,4,17
+8,4,15
+15,10,19
+15,17,12
+9,3,7
+15,15,3
+9,16,16
+11,11,18
+16,5,4
+14,16,15
+2,15,7
+9,7,19
+2,9,12
+14,11,4
+16,13,15
+10,6,4
+20,13,9
+5,2,10
+19,9,7
+3,8,16
+2,13,11
+7,18,8
+16,18,14
+12,3,17
+5,7,11
+10,19,6
+7,6,18
+4,5,6
+19,8,8
+5,6,4
+7,18,5
+19,17,10
+4,5,14
+17,10,3
+16,13,14
+13,9,3
+10,6,2
+11,19,6
+9,6,19
+7,19,9
+18,9,4
+14,7,6
+8,18,10
+15,6,12
+11,18,6
+11,17,18
+18,9,14
+19,15,10
+14,5,5
+7,19,11
+3,7,11
+9,16,14
+4,5,7
+4,18,13
+17,7,12
+15,8,6
+17,17,11
+3,8,5
+11,5,17
+8,10,18
+10,8,2
+16,2,12
+5,10,16
+17,8,12
+16,11,5
+4,12,7
+15,10,3
+8,4,4
+14,1,12
+8,3,8
+10,7,19
+16,7,5
+4,13,13
+8,4,16
+6,13,17
+18,9,7
+15,7,4
+8,14,18
+9,7,14
+16,12,17
+1,8,11
+1,14,12
+14,5,8
+16,15,13
+18,6,11
+3,13,9
+10,4,15
+19,6,13
+6,6,8
+15,16,5
+9,15,18
+7,4,6
+8,5,10
+8,2,13
+5,11,5
+6,13,15
+13,3,12
+17,9,10
+6,5,11
+11,18,5
+6,6,16
+14,5,18
+17,10,17
+11,12,3
+11,4,4
+11,18,10
+16,16,13
+11,17,7
+10,19,10
+2,10,15
+7,4,17
+8,10,19
+11,17,9
+15,18,6
+2,15,8
+18,13,4
+3,7,7
+2,12,15
+6,6,9
+7,16,16
+5,5,4
+15,14,18
+8,20,13
+7,11,4
+18,10,17
+17,9,9
+14,3,15
+5,14,3
+14,3,7
+6,8,17
+4,15,12
+17,15,11
+13,11,17
+4,9,15
+15,4,5
+8,17,10
+18,14,11
+7,18,13
+15,12,4
+14,4,11
+16,5,12
+2,10,7
+15,9,5
+2,14,16
+16,15,9
+8,4,5
+19,12,10
+8,6,7
+7,1,9
+10,12,2
+17,9,3
+5,3,14
+6,11,16
+7,4,13
+14,15,5
+11,7,2
+12,4,5
+5,13,5
+4,10,9
+16,7,13
+4,10,8
+7,8,3
+4,10,14
+8,3,18
+3,14,13
+6,17,5
+3,8,7
+16,7,16
+4,6,15
+15,17,13
+6,4,4
+12,3,6
+8,4,17
+6,3,10
+15,8,17
+19,10,9
+7,4,8
+19,15,11
+18,4,9
+10,3,15
+13,19,14
+4,15,9
+9,19,11
+9,2,8
+17,6,8
+18,9,6
+17,8,6
+4,13,8
+16,17,10
+9,2,7
+7,10,16
+18,12,6
+9,8,18
+7,17,13
+14,5,9
+10,19,14
+17,12,16
+8,17,8
+16,15,8
+11,16,5
+8,18,12
+10,13,1
+15,18,7
+15,13,4
+8,3,14
+17,15,15
+5,17,9
+18,9,15
+4,3,11
+8,17,6
+5,3,10
+18,8,12
+18,8,16
+17,7,9
+4,4,14
+9,12,19
+13,5,14
+5,18,12
+8,2,10
+12,3,11
+11,12,4
+11,8,17
+13,14,4
+10,18,12
+17,13,10
+17,15,16
+2,7,8
+12,6,16
+5,7,14
+7,16,15
+13,13,4
+13,5,17
+13,17,9
+17,13,13
+10,3,18
+13,18,15
+8,19,14
+9,3,12
+4,12,4
+17,10,15
+11,7,17
+7,17,7
+17,10,14
+13,6,6
+2,9,7
+13,7,4
+7,7,14
+4,12,14
+8,14,16
+13,14,3
+17,16,16
+5,16,12
+18,16,13
+13,13,18
+4,16,8
+9,10,1
+5,3,11
+12,18,12
+3,12,15
+14,10,18
+4,5,13
+6,5,16
+7,16,14
+17,16,6
+11,18,11
+16,6,12
+14,6,16
+8,4,7
+5,12,8
+15,19,14
+15,15,17
+13,16,7
+15,14,6
+5,14,7
+8,15,2
+13,8,2
+15,2,10
+18,10,6
+5,15,3
+9,4,15
+12,11,4
+9,17,4
+20,10,15
+11,2,7
+20,8,13
+9,17,5
+9,5,17
+11,18,7
+11,1,10
+10,14,17
+17,3,7
+9,1,8
+14,5,13
+13,9,1
+10,20,7
+17,13,6
+13,2,9
+10,19,8
+12,17,11
+12,13,4
+4,15,15
+10,13,16
+13,11,18
+15,5,13
+5,10,5
+11,15,6
+5,18,11
+14,7,4
+5,17,11
+7,7,20
+6,16,14
+7,8,17
+12,3,5
+13,19,6
+3,13,7
+9,10,16
+12,16,3
+12,9,1
+6,15,14
+12,3,12
+15,3,13
+7,15,16
+4,11,17
+2,7,9
+8,19,5
+2,12,8
+16,11,2
+14,3,11
+4,14,9
+15,15,16
+4,16,15
+9,5,5
+3,13,5
+10,6,5
+15,10,14
+16,4,16
+18,12,7
+8,18,13
+7,19,13
+14,19,9
+10,14,2
+13,16,3
+12,4,17
+12,17,15
+19,11,5
+8,6,5
+10,10,3
+11,20,10
+17,7,14
+13,17,16
+13,20,10
+8,18,5
+7,5,3
+2,14,10
+3,8,9
+14,6,18
+6,10,2
+14,16,8
+9,20,14
+18,5,11
+9,4,14
+5,17,12
+7,18,15
+7,5,13
+17,7,13
+9,5,4
+18,13,16
+7,18,9
+7,15,6
+3,10,6
+12,17,4
+12,12,19
+13,17,8
+12,3,3
+5,15,13
+4,10,6
+16,3,9
+6,16,4
+7,19,14
+3,11,13
+10,10,18
+4,5,8
+11,15,4
+14,12,19
+17,16,9
+9,11,17
+18,11,16
+10,16,19
+10,1,13
+13,8,1
+19,12,7
+5,14,16
+10,14,5
+7,2,8
+15,15,10
+12,8,2
+7,15,17
+8,12,17
+2,16,8
+10,16,6
+7,6,7
+5,17,5
+7,8,16
+11,17,6
+5,6,14
+4,4,9
+11,20,9
+2,13,13
+18,3,10
+11,5,15
+18,7,12
+12,12,2
+4,16,11
+19,12,9
+14,18,13
+19,12,14
+8,20,8
+9,3,16
+8,19,8
+11,13,18
+15,16,3
+13,12,3
+2,6,10
+8,18,6
+15,4,6
+5,14,17
+6,14,17
+2,14,12
+11,6,19
+20,8,12
+1,9,14
+18,10,4
+13,6,15
+7,14,2
+3,15,8
+13,7,2
+4,13,6
+10,17,8
+5,5,11
+10,0,10
+10,9,19
+18,13,6
+13,7,15
+13,7,17
+7,15,3
+7,16,6
+14,15,7
+9,10,2
+10,10,17
+3,8,17
+15,13,2
+9,18,17
+9,13,1
+12,3,15
+12,6,18
+17,12,11
+7,3,10
+4,4,10
+16,14,18
+15,16,17
+10,18,9
+17,7,17
+1,8,12
+7,6,16
+13,1,11
+15,16,15
+17,13,7
+10,17,15
+19,9,16
+2,14,14
+14,16,16
+6,15,5
+3,4,9
+12,16,20
+3,12,16
+1,9,12
+11,16,17
+19,5,12
+14,17,14
+13,6,5
+8,4,12
+5,7,5
+12,7,3
+16,12,18
+6,19,11
+11,19,8
+8,17,17
+15,2,13
+15,16,8
+19,11,9
+13,9,17
+5,13,16
+4,10,4
+4,4,13
+4,6,5
+15,9,16
+14,14,19
+19,9,5
+4,7,5
+13,19,15
+12,12,1
+12,1,13
+9,12,20
+9,11,19
+11,13,3
+13,17,10
+6,19,12
+16,6,13
+2,13,6
+18,5,13
+20,9,9
+3,6,9
+9,20,12
+5,6,12
+15,16,11
+19,10,6
+10,13,3
+16,12,15
+18,11,17
+1,12,11
+6,18,9
+5,12,14
+5,14,18
+6,7,18
+9,6,4
+12,1,11
+11,3,12
+13,4,4
+13,7,3
+18,9,16
+3,17,13
+18,13,11
+14,6,3
+16,15,15
+12,14,16
+11,1,14
+9,12,2
+1,11,12
+4,7,8
+10,18,6
+11,3,8
+8,17,5
+9,9,20
+11,7,4
+2,15,10
+11,4,14
+7,16,9
+3,4,7
+4,18,9
+13,10,17
+17,5,12
+12,8,18
+13,9,19
+14,6,7
+12,13,20
+6,12,19
+13,8,20
+17,11,17
+8,13,20
+16,17,7
+14,17,6
+16,16,8
+15,4,12
+4,11,16
+11,12,18
+15,19,7
+16,5,11
+2,7,13
+15,7,17
+13,19,11
+18,10,10
+15,9,3
+7,7,4
+11,18,14
+5,12,13
+11,13,16
+12,10,1
+5,12,2
+2,10,14
+19,8,10
+6,9,17
+15,3,15
+10,15,3
+3,5,14
+2,11,7
+12,4,10
+13,10,18
+10,12,19
+8,9,20
+6,12,18
+14,12,18
+18,15,6
+13,20,14
+7,16,18
+13,4,10
+16,11,10
+8,2,8
+4,12,17
+5,7,12
+11,14,17
+7,8,20
+18,6,6
+16,8,17
+4,12,8
+11,1,11
+15,12,16
+14,4,17
+11,6,17
+9,3,11
+19,9,6
+13,18,12
+12,3,4
+14,4,6
+16,17,8
+4,13,15
+3,8,8
+1,12,8
+16,4,7
+12,6,19
+13,6,18
+12,8,1
+3,4,8
+4,5,10
+12,18,7
+14,18,10
+18,4,12
+15,7,15
+16,7,11
+17,15,5
+16,14,14
+17,13,14
+11,11,1
+5,11,18
+16,11,3
+20,10,6
+15,10,16
+17,13,11
+6,19,7
+9,8,3
+4,13,7
+14,11,17
+10,1,8
+15,18,14
+3,5,7
+14,7,16
+3,15,7
+7,8,2
+13,14,5
+2,14,8
+15,5,7
+3,12,14
+14,13,5
+10,8,3
+8,15,4
+12,7,19
+4,14,10
+2,12,10
+13,11,4
+18,12,17
+14,15,17
+17,6,12
+14,19,7
+6,9,2
+17,11,8
+15,3,9
+13,13,19
+9,9,2
+18,5,14
+18,10,15
+18,9,10
+17,14,5
+4,9,14
+5,7,16
+4,6,14
+14,2,12
+7,4,11
+6,17,7
+14,9,17
+14,15,8
+16,9,7
+10,6,19
+19,13,7
+4,10,15
+4,15,4
+7,17,4
+3,10,5
+4,17,11
+6,17,15
+7,14,18
+3,9,12
+10,18,5
+9,15,19
+10,16,2
+14,4,12
+16,9,17
+15,4,16
+19,16,12
+17,8,17
+5,6,11
+14,18,7
+1,10,11
+12,14,4
+17,8,10
+5,10,18
+7,4,10
+8,13,4
+17,12,12
+6,11,19
+18,12,9
+3,12,11
+3,7,12
+16,13,12
+16,11,18
+5,4,13
+13,1,13
+6,14,20
+18,15,8
+17,9,11
+16,8,3
+5,4,8
+5,13,8
+20,10,7
+11,13,1
+4,11,7
+14,15,18
+12,20,14
+12,7,5
+6,6,15
+11,1,7
+5,8,3
+13,4,17
+14,8,2
+11,3,15
+8,15,15
+4,9,6
+16,9,15
+15,19,12
+6,2,9
+12,18,10
+5,18,7
+8,1,8
+14,3,5
+8,5,2
+18,13,13
+10,17,6
+10,6,3
+14,6,2
+6,7,17
+12,19,15
+10,18,10
+13,18,13
+9,10,18
+16,14,7
+3,9,17
+20,11,8
+19,6,9
+9,6,14
+7,13,17
+11,0,11
+9,18,8
+15,11,16
+18,7,9
+11,15,19
+16,17,16
+18,8,8
+18,13,14
+11,18,15
+5,8,12
+5,19,11
+8,7,19
+6,16,10
+6,15,15
+4,15,8
+14,17,4
+3,13,16
+12,10,4
+19,7,14
+2,14,7
+14,18,12
+21,10,10
+20,10,10
+8,18,4
+10,16,14
+5,15,10
+10,20,10
+16,4,6
+17,15,4
+7,2,15
+7,17,9
+4,13,14
+12,6,3
+8,9,18
+4,5,9
+13,17,7
+18,14,5
+8,13,19
+19,9,15
+2,8,15
+17,10,4
+12,16,6
+19,8,13
+8,18,16
+10,19,15
+6,12,5
+5,4,6
+7,14,17
+4,8,17
+20,13,10
+11,18,4
+11,8,1
+7,19,6
+12,7,8
+10,8,20
+17,11,4
+9,20,7
+4,14,11
+11,7,19
+12,4,15
+19,14,12
+13,19,10
+11,14,2
+2,9,6
+18,8,10
+9,17,11
+16,14,3
+7,11,17
+13,16,10
+13,18,8
+6,15,3
+12,20,10
+15,14,16
+13,11,2
+8,16,5
+8,13,18
+17,15,13
+3,11,12
+17,7,6
+6,12,16
+3,3,12
+16,3,15
+3,9,15
+6,18,11
+9,3,9
+4,7,11
+14,12,17
+7,15,4
+14,10,17
+5,19,12
+6,6,3
+7,7,18
+10,16,18
+13,17,11
+12,8,17
+9,19,6
+15,17,17
+13,11,3
+5,12,15
+2,14,13
+9,18,4
+3,8,12
+17,14,14
+2,8,7
+19,10,8
+6,5,9
+12,17,18
+18,12,10
+8,4,8
+17,11,10
+3,12,10
+7,9,16
+13,3,9
+5,8,18
+3,11,9
+7,17,10
+11,15,16
+2,10,10
+16,9,3
+9,14,19
+2,11,15
+14,15,3
+11,14,5
+5,10,14
+18,15,12
+8,3,4
+9,19,7
+8,20,12
+10,5,18
+5,12,16
+9,11,4
+20,10,8
+5,15,11
+19,6,10
+18,6,14
+11,20,8
+15,8,13
+8,5,4
+5,18,8
+19,8,6
+15,12,17
+14,8,19
+14,8,20
+10,14,19
+13,15,18
+9,16,19
+17,6,17
+11,18,16
+12,11,1
+19,12,15
+4,14,13
+17,18,11
+3,4,10
+11,5,19
+13,2,15
+8,8,17
+4,12,3
+16,8,5
+3,7,5
+16,12,5
+5,15,14
+4,12,9
+18,13,7
+10,6,6
+10,14,18
+5,8,6
+1,11,13
+8,7,16
+2,16,11
+10,3,9
+8,3,9
+18,16,6
+16,6,15
+15,5,8
+12,5,6
+9,16,8
+7,17,17
+2,12,12
+9,6,2
+10,5,3
+10,14,20
+17,18,10
+13,6,2
+9,17,6
+6,15,8
+16,9,6
+3,6,8
+17,12,18
+3,10,16
+10,17,14
+7,6,11
+15,9,18
+10,16,13
+13,1,12
+15,15,19
+17,16,13
+13,17,4
+14,17,12
+7,7,5
+20,10,9
+10,13,18
+10,19,5
+3,15,15
+10,6,16
+14,1,7
+7,7,19
+19,15,12
+13,1,7
+1,12,14
+3,7,6
+6,13,16
+2,9,16
+3,14,6
+13,13,2
+11,17,17
+5,16,16
+13,15,5
+5,7,15
+2,10,6
+11,15,17
+3,16,14
+18,13,10
+17,10,6
+13,20,9
+13,3,5
+4,3,10
+10,4,18
+1,10,14
+12,13,18
+7,14,14
+18,8,7
+8,5,3
+11,17,16
+15,7,2
+4,5,16
+3,12,5
+11,19,16
+14,4,8
+5,3,12
+18,14,9
+16,13,13
+15,13,5
+12,11,18
+14,4,13
+8,10,1
+2,8,6
+16,7,18
+3,5,11
+18,13,17
+14,15,6
+8,11,4
+3,9,9
+15,8,15
+16,6,8
+13,14,2
+15,7,14
+17,9,6
+18,13,5
+15,18,8
+11,6,20
+15,11,2
+18,16,7
+8,20,9
+2,11,8
+14,11,6
+9,17,13
+17,16,5
+12,3,9
+7,10,5
+13,3,11
+1,8,10
+17,9,18
+4,17,15
+2,9,14
+9,8,17
+11,9,20
+4,15,6
+16,11,15
+17,13,9
+12,4,13
+18,12,12
+9,14,2
+8,11,16
+9,7,4
+5,3,7
+10,18,4
+5,15,4
+6,14,18
+17,7,4
+8,18,11
+14,18,6
+16,15,10
+18,17,12
+4,14,8
+12,15,3
+6,3,12
+10,11,4
+9,5,7
+5,5,17
+5,2,11
+15,5,14
+10,4,13
+10,5,14
+6,5,17
+5,16,13
+13,9,18
+14,5,14
+17,15,8
+1,13,10
+12,6,15
+1,12,12
+14,17,10
+10,4,17
+6,18,6
+12,19,6
+14,2,13
+19,15,9
+15,7,3
+17,17,15
+14,9,5
+14,14,2
diff --git a/2022/18/solve.py b/2022/18/solve.py
new file mode 100644
index 0000000..540640e
--- /dev/null
+++ b/2022/18/solve.py
@@ -0,0 +1,34 @@
+import numpy as np
+
+cubes = set(
+ [
+ tuple(int(c) for c in dat.split(","))
+ for dat in open("input").readlines()
+ if dat != ""
+ ]
+)
+
+
+def sides(cube):
+ i = np.identity(3, dtype=int)
+ return set([tuple(cube + m) for m in np.vstack([i, -i])])
+
+
+def part1():
+ return sum(len(sides(cube) - cubes) for cube in cubes)
+
+
+def part2():
+ visited = set()
+ q = [(0, 0, 0)]
+ high = max(max(np.array(cubes).max(axis=0))) + 1
+ while q:
+ current = q.pop()
+ sub = sides(current) - cubes - visited
+ q += [side for side in sub if all(-1 <= val <= high for val in side)]
+ visited.add(current)
+ return sum((side in visited) for cube in cubes for side in sides(cube))
+
+
+print(f"Part 1: {part1()}")
+print(f"Part 2: {part2()}")
diff --git a/2022/19/input b/2022/19/input
new file mode 100644
index 0000000..17ddb86
--- /dev/null
+++ b/2022/19/input
@@ -0,0 +1,30 @@
+Blueprint 1: Each ore robot costs 2 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 17 clay. Each geode robot costs 3 ore and 11 obsidian.
+Blueprint 2: Each ore robot costs 3 ore. Each clay robot costs 3 ore. Each obsidian robot costs 3 ore and 20 clay. Each geode robot costs 2 ore and 12 obsidian.
+Blueprint 3: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 12 clay. Each geode robot costs 3 ore and 8 obsidian.
+Blueprint 4: Each ore robot costs 3 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 8 clay. Each geode robot costs 2 ore and 10 obsidian.
+Blueprint 5: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 2 ore and 12 clay. Each geode robot costs 3 ore and 15 obsidian.
+Blueprint 6: Each ore robot costs 3 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 5 clay. Each geode robot costs 4 ore and 8 obsidian.
+Blueprint 7: Each ore robot costs 2 ore. Each clay robot costs 3 ore. Each obsidian robot costs 3 ore and 8 clay. Each geode robot costs 3 ore and 20 obsidian.
+Blueprint 8: Each ore robot costs 4 ore. Each clay robot costs 3 ore. Each obsidian robot costs 2 ore and 13 clay. Each geode robot costs 2 ore and 9 obsidian.
+Blueprint 9: Each ore robot costs 4 ore. Each clay robot costs 3 ore. Each obsidian robot costs 3 ore and 15 clay. Each geode robot costs 2 ore and 13 obsidian.
+Blueprint 10: Each ore robot costs 3 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 18 clay. Each geode robot costs 3 ore and 8 obsidian.
+Blueprint 11: Each ore robot costs 3 ore. Each clay robot costs 3 ore. Each obsidian robot costs 3 ore and 8 clay. Each geode robot costs 2 ore and 12 obsidian.
+Blueprint 12: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 2 ore and 17 clay. Each geode robot costs 3 ore and 11 obsidian.
+Blueprint 13: Each ore robot costs 2 ore. Each clay robot costs 4 ore. Each obsidian robot costs 3 ore and 19 clay. Each geode robot costs 4 ore and 13 obsidian.
+Blueprint 14: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 2 ore and 15 clay. Each geode robot costs 3 ore and 16 obsidian.
+Blueprint 15: Each ore robot costs 3 ore. Each clay robot costs 4 ore. Each obsidian robot costs 3 ore and 12 clay. Each geode robot costs 3 ore and 17 obsidian.
+Blueprint 16: Each ore robot costs 3 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 18 clay. Each geode robot costs 2 ore and 11 obsidian.
+Blueprint 17: Each ore robot costs 2 ore. Each clay robot costs 4 ore. Each obsidian robot costs 2 ore and 15 clay. Each geode robot costs 3 ore and 16 obsidian.
+Blueprint 18: Each ore robot costs 3 ore. Each clay robot costs 4 ore. Each obsidian robot costs 2 ore and 19 clay. Each geode robot costs 2 ore and 12 obsidian.
+Blueprint 19: Each ore robot costs 3 ore. Each clay robot costs 3 ore. Each obsidian robot costs 2 ore and 16 clay. Each geode robot costs 2 ore and 18 obsidian.
+Blueprint 20: Each ore robot costs 3 ore. Each clay robot costs 3 ore. Each obsidian robot costs 3 ore and 19 clay. Each geode robot costs 3 ore and 17 obsidian.
+Blueprint 21: Each ore robot costs 3 ore. Each clay robot costs 4 ore. Each obsidian robot costs 4 ore and 20 clay. Each geode robot costs 4 ore and 16 obsidian.
+Blueprint 22: Each ore robot costs 3 ore. Each clay robot costs 3 ore. Each obsidian robot costs 3 ore and 16 clay. Each geode robot costs 3 ore and 20 obsidian.
+Blueprint 23: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 3 ore and 5 clay. Each geode robot costs 4 ore and 11 obsidian.
+Blueprint 24: Each ore robot costs 2 ore. Each clay robot costs 4 ore. Each obsidian robot costs 2 ore and 16 clay. Each geode robot costs 4 ore and 12 obsidian.
+Blueprint 25: Each ore robot costs 2 ore. Each clay robot costs 4 ore. Each obsidian robot costs 3 ore and 20 clay. Each geode robot costs 2 ore and 17 obsidian.
+Blueprint 26: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 2 ore and 11 clay. Each geode robot costs 2 ore and 7 obsidian.
+Blueprint 27: Each ore robot costs 4 ore. Each clay robot costs 3 ore. Each obsidian robot costs 2 ore and 19 clay. Each geode robot costs 3 ore and 10 obsidian.
+Blueprint 28: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 3 ore and 14 clay. Each geode robot costs 4 ore and 8 obsidian.
+Blueprint 29: Each ore robot costs 4 ore. Each clay robot costs 3 ore. Each obsidian robot costs 3 ore and 10 clay. Each geode robot costs 3 ore and 10 obsidian.
+Blueprint 30: Each ore robot costs 4 ore. Each clay robot costs 4 ore. Each obsidian robot costs 3 ore and 7 clay. Each geode robot costs 4 ore and 11 obsidian.
diff --git a/2022/19/solve.py b/2022/19/solve.py
new file mode 100644
index 0000000..58310b5
--- /dev/null
+++ b/2022/19/solve.py
@@ -0,0 +1,69 @@
+import re
+from math import prod
+import functools
+
+all_costs = [
+ [(s[1], 0, 0, 0), (s[2], 0, 0, 0), (s[3], s[4], 0, 0), (s[5], 0, s[6], 0)]
+ for s in [
+ [int(x) for x in re.findall(r"\d+", dat)]
+ for dat in open("input").readlines()
+ if dat != ""
+ ]
+]
+
+
+def weight(state): # from reddit, better than previously..
+ mined = state[-1][-1]
+ return 1000 * mined[3] + 100 * mined[2] + 10 * mined[1] + mined[0]
+
+
+@functools.lru_cache
+def bfs(current, bots, time_left, top):
+ costs = all_costs[current]
+ q = [(0, (bots, (0, 0, 0, 0), (0, 0, 0, 0)))]
+ res = 0
+ depth = 0
+ while q:
+ time, (bots, has, mined) = q.pop(0)
+
+ if time == time_left:
+ res = max(res, mined[3])
+ continue
+
+ if time > depth:
+ q.sort(key=weight, reverse=True)
+ q = q[:top]
+ depth = time
+
+ new_has = tuple(has[i] + bots[i] for i in range(4))
+ new_mined = tuple(mined[i] + bots[i] for i in range(4))
+
+ q.append((time + 1, (bots, new_has, new_mined)))
+
+ for i in range(4):
+ if any([has[j] < costs[i][j] for j in range(4)]):
+ continue
+
+ new_bots = bots[:i] + (bots[i] + 1,) + bots[(i + 1) :]
+ new_has_state = tuple(new_has[j] - costs[i][j] for j in range(4))
+ q.append((time + 1, (new_bots, new_has_state, new_mined)))
+ return res
+
+
+def part1():
+ return sum(
+ [
+ bfs(i, (1, 0, 0, 0), 24, 1000) * (i + 1)
+ for i in range(len(all_costs))
+ ]
+ )
+
+
+def part2():
+ return prod(
+ [bfs(i, (1, 0, 0, 0), 32, 10000) for i in range(len(all_costs[:3]))]
+ )
+
+
+print(f"Part 1: {part1()}")
+print(f"Part 2: {part2()}")
diff --git a/2022/20/input b/2022/20/input
new file mode 100644
index 0000000..9a8138a
--- /dev/null
+++ b/2022/20/input
@@ -0,0 +1,5000 @@
+698
+5116
+8155
+-9039
+3858
+6218
+1451
+-740
+3403
+4144
+8600
+6568
+-5125
+-2582
+-3724
+-9818
+3791
+-4764
+109
+8938
+-6537
+7939
+-9729
+284
+1044
+1409
+8079
+9109
+-4382
+-3346
+-2753
+-2701
+-1386
+8138
+8677
+-3273
+-7531
+4959
+-3399
+6558
+-1628
+-8413
+2251
+742
+8269
+3423
+-1630
+-2129
+1451
+-2186
+5470
+9601
+7727
+86
+7958
+-1777
+7806
+3926
+7837
+1593
+5494
+-7872
+9726
+396
+3181
+-4411
+8470
+-5529
+2496
+1141
+3445
+7213
+5404
+4715
+-7710
+5754
+8848
+-2715
+-165
+4209
+7582
+6905
+3140
+-1327
+-5856
+-4706
+3553
+8826
+8873
+4368
+-6482
+9955
+-6642
+4246
+8624
+-4211
+-5303
+-7764
+-4521
+-453
+-681
+6303
+-130
+1734
+-6654
+4415
+-9477
+-674
+9069
+1798
+-7077
+5624
+-1389
+-6443
+-498
+-2199
+-7805
+-4032
+-731
+6566
+1911
+-8098
+6175
+-3002
+-411
+5713
+-6791
+6573
+4886
+4056
+-5593
+-6593
+-9981
+782
+8842
+7040
+507
+8908
+5453
+3431
+6449
+1585
+2301
+-9504
+-3637
+-151
+-2808
+-7266
+-2403
+-5518
+-2700
+-5880
+-6078
+6326
+7523
+2750
+730
+-539
+-7785
+-6620
+-148
+1674
+8726
+-9379
+1282
+1590
+1166
+-1688
+9495
+8337
+4143
+-2418
+2205
+6198
+-4709
+-7681
+-2878
+-8956
+7939
+-9516
+-502
+601
+-7575
+9185
+-4483
+-6086
+8601
+-3384
+1776
+3719
+-6290
+-882
+-5026
+3714
+-6664
+2594
+1487
+-6459
+-7320
+-1936
+4788
+-8080
+6174
+7301
+-8757
+-4963
+-7550
+716
+-1389
+-6630
+-6072
+1435
+-3466
+1661
+1508
+4563
+3682
+7768
+9436
+5390
+-5214
+-4003
+7192
+9736
+7218
+720
+-5329
+3849
+95
+6403
+7199
+2446
+-2294
+7418
+7368
+-691
+-9802
+-4499
+73
+8624
+9088
+9601
+7601
+-6624
+-1283
+7337
+-2367
+-8452
+4629
+2160
+-6933
+8957
+4024
+8261
+6842
+136
+2493
+-5797
+-8248
+3462
+-5363
+-2833
+6326
+-4839
+-2118
+7234
+3869
+5729
+103
+79
+9866
+6804
+8335
+5822
+6012
+2744
+-7030
+-4689
+-9279
+1406
+2060
+9349
+2190
+-4261
+-3940
+-118
+3268
+9592
+-9990
+8261
+-8243
+7749
+8393
+-7611
+7757
+4473
+5166
+-3689
+-3665
+9276
+3978
+-6517
+-2120
+-2861
+4215
+5694
+1480
+-5670
+271
+-3369
+-2945
+8560
+-5737
+-2093
+5780
+-397
+-4808
+-516
+3229
+-4394
+6886
+5983
+4026
+5129
+-9989
+819
+1731
+-3960
+-7823
+5213
+3359
+-6735
+-6562
+-8878
+5161
+-6918
+-7452
+1768
+-6015
+-7945
+-8785
+4862
+8974
+-5283
+7661
+-8264
+382
+-9411
+-5606
+-5688
+-6285
+-5516
+1920
+-871
+9822
+9756
+8061
+5334
+6393
+-4288
+-8913
+1411
+-480
+-9897
+1772
+4275
+-8357
+3372
+940
+1496
+-6333
+-7702
+3576
+8697
+-2779
+-420
+-1578
+-8351
+-1478
+-4798
+-2946
+-8123
+8177
+4512
+-8607
+-7379
+-4879
+5925
+6872
+2853
+-3608
+-1630
+358
+6414
+-413
+-2372
+-8893
+-6509
+-3080
+-621
+-263
+-1445
+86
+-4716
+2546
+1120
+-1303
+-5356
+-7872
+289
+1126
+809
+-2748
+5257
+-1042
+9161
+2792
+-8865
+-3104
+-1691
+4962
+1048
+-3458
+2091
+5202
+-6960
+-9749
+8611
+8547
+-3312
+2979
+2029
+709
+560
+7068
+-3807
+3750
+-5748
+-6005
+3493
+-4741
+-43
+-796
+3393
+8887
+-8644
+-7322
+7751
+2748
+-7872
+7557
+281
+-2510
+-2783
+-8873
+597
+2624
+6707
+-8620
+6859
+-4936
+-5207
+5267
+-2832
+-3856
+-5568
+4662
+-4381
+-6886
+-2089
+3823
+8525
+-4501
+65
+9347
+-6409
+-1468
+2233
+-4951
+9118
+-7023
+1054
+7063
+-9248
+800
+-2151
+4068
+2626
+3897
+1564
+1577
+4281
+6771
+5289
+-705
+-4771
+-8601
+-1526
+-7430
+6142
+-1805
+-7587
+3436
+8253
+2589
+-1756
+1938
+5994
+-9802
+7877
+-1746
+7534
+-3456
+-2837
+-6630
+-2686
+-7043
+-1478
+8207
+-8852
+-4894
+-8842
+7801
+4008
+2652
+4382
+-1478
+-9233
+-6743
+7349
+8981
+8308
+-2424
+3870
+-894
+-2029
+9882
+-2108
+1673
+4614
+5133
+9075
+-7613
+-7266
+1866
+2192
+8220
+-4176
+1793
+8942
+-2392
+8533
+-3955
+-3869
+-4168
+1516
+8392
+-7395
+-2011
+7449
+-4567
+6801
+2019
+-4537
+2595
+-4833
+3757
+3446
+-5360
+-6989
+6621
+424
+-761
+5429
+7489
+8174
+1900
+2328
+-9349
+5111
+-5775
+-4261
+4470
+5743
+2056
+5992
+5527
+-7641
+7314
+-4985
+2882
+-3970
+8688
+2718
+5963
+7861
+-2481
+3198
+7906
+-1907
+-6163
+-7599
+-4902
+1481
+-9910
+-9578
+2492
+-6899
+-6072
+6968
+-1420
+-3283
+-9311
+-8826
+9454
+-322
+-503
+2467
+-9202
+-8851
+-2686
+-7787
+7730
+1994
+-5543
+-5020
+4832
+-6863
+1765
+-9386
+-8718
+-9989
+1153
+7597
+6189
+7634
+7839
+185
+914
+6768
+-9601
+-7267
+5148
+-9804
+-4113
+-3620
+-4495
+-2007
+5611
+-4528
+-4446
+-5988
+-6058
+185
+-6495
+-6268
+-8694
+8281
+-1886
+8740
+7396
+-264
+203
+6061
+-5203
+716
+8553
+8743
+-8222
+3653
+-6785
+9658
+-9971
+8461
+-761
+-155
+-9899
+-7750
+-2628
+-2221
+-44
+9124
+6671
+3629
+-4672
+7013
+3779
+-1298
+5920
+-855
+-2224
+-2201
+-8243
+9999
+-9524
+9157
+1588
+-1307
+4197
+598
+-3449
+167
+8908
+-8680
+-6232
+-152
+445
+1213
+-973
+-7231
+7756
+3912
+-6856
+-6571
+-2645
+8949
+-4119
+-9234
+9800
+-7859
+-8107
+6382
+4731
+8188
+3446
+-7849
+-9732
+5345
+-4534
+-7053
+-3
+-7373
+-3142
+5919
+-4284
+8242
+5913
+-8105
+2315
+1443
+9478
+-1625
+8684
+-5379
+-8493
+-1840
+1053
+3283
+9215
+3805
+494
+972
+2949
+866
+693
+7427
+-4362
+1129
+-7726
+6034
+4862
+271
+4224
+597
+-473
+-2338
+-5925
+6854
+1819
+3966
+9218
+8566
+-4018
+247
+9626
+515
+5566
+-3181
+-814
+8319
+7342
+5332
+-3497
+-9031
+-3550
+4532
+-35
+1191
+-9339
+-1866
+4909
+-5211
+4740
+-7817
+-7274
+6807
+-8993
+-5245
+1849
+707
+1842
+-8385
+8968
+73
+-4963
+-8264
+-7360
+-9995
+4286
+2744
+-2008
+-1193
+-6606
+3144
+4818
+7860
+4337
+-4152
+-4029
+5339
+-5868
+4755
+8500
+9601
+-5190
+314
+8552
+-5803
+-526
+7349
+-5320
+8791
+-4020
+-949
+1932
+-2352
+-1470
+-3772
+5390
+-3002
+4358
+1644
+2299
+1588
+2116
+-9194
+5992
+7293
+-7786
+1486
+-550
+-695
+-1762
+-9250
+2077
+8105
+4757
+9978
+-6010
+-1658
+2997
+-2753
+4894
+3007
+-650
+58
+8216
+-6015
+159
+-6743
+4257
+-5173
+-4711
+-8246
+5453
+1562
+-7896
+-6587
+7868
+7306
+-4113
+-4499
+2801
+5429
+-545
+-1146
+404
+7980
+514
+3638
+-1045
+5315
+6547
+9878
+8783
+-4995
+6424
+-1034
+9515
+2742
+-1046
+-2833
+1345
+2303
+3557
+-2728
+3493
+5495
+2652
+4820
+1769
+2373
+-1562
+-1528
+9515
+3018
+8842
+-4845
+-4864
+-2833
+9721
+-5109
+7373
+1928
+-4537
+9459
+7179
+-9343
+-7177
+7156
+-8416
+-958
+-3148
+722
+8644
+8684
+5689
+1579
+3086
+-8688
+-5722
+-7087
+-8259
+6665
+-2549
+9168
+6192
+2173
+7702
+-8350
+-4665
+-9230
+-1528
+6024
+9940
+7150
+-7353
+3465
+-3960
+240
+6255
+-7098
+5866
+4613
+-925
+4437
+7045
+-3844
+-9102
+6817
+8459
+3042
+1469
+3311
+-290
+1729
+-7215
+-7889
+-8905
+-2297
+7173
+-4113
+3493
+1411
+3918
+-6927
+-9142
+-1777
+7022
+-1029
+901
+-2700
+3878
+8932
+-9161
+9105
+3297
+4727
+3043
+-5609
+96
+5334
+2547
+4977
+-1644
+2970
+-8976
+5262
+2436
+6060
+2037
+-6735
+-2221
+7052
+-5730
+-1569
+791
+1331
+-6786
+-5047
+-5435
+-9482
+2845
+-590
+1182
+9657
+-3710
+-8829
+8562
+-8006
+3433
+7511
+-2977
+-781
+-2703
+-6307
+-1141
+7336
+-8769
+6845
+4
+6145
+2638
+-5184
+-9405
+-4047
+-7560
+7387
+9076
+-6845
+-2291
+-2838
+-8399
+2496
+-8956
+9160
+9443
+-1034
+-4673
+-4981
+-4137
+-912
+7237
+-1036
+7632
+-2110
+-189
+-571
+-9039
+2853
+2456
+-7821
+4926
+8773
+-4257
+-6213
+-4764
+-4426
+6284
+9845
+-1551
+9660
+-3053
+3921
+5217
+7533
+6622
+5960
+9806
+-8737
+-5779
+-5997
+-9672
+2306
+-6719
+-6190
+514
+8233
+-8107
+2687
+-2719
+-4116
+-1389
+1618
+-6438
+5728
+-3785
+8268
+-6537
+454
+6144
+359
+-9823
+-6642
+2687
+3413
+-9528
+-3078
+4939
+2141
+-8015
+7583
+-9135
+1823
+8690
+-1172
+-6610
+3535
+-353
+6725
+1420
+6445
+-2223
+-5074
+7774
+-6567
+8968
+2065
+9942
+-3578
+-4059
+5549
+9662
+-8597
+4833
+6849
+5617
+-6009
+8798
+5718
+-9016
+-670
+7192
+7885
+723
+8742
+6303
+-7092
+-8556
+-2395
+-8900
+6198
+5800
+8729
+-4400
+-7440
+-9010
+494
+8296
+-2340
+6846
+-1712
+-4424
+-6505
+7206
+-9606
+1411
+4248
+-9405
+-4763
+4106
+2860
+3908
+3297
+1567
+6835
+-9349
+-5347
+8942
+9579
+-8928
+358
+-4887
+-209
+638
+1126
+2446
+8489
+-1936
+73
+-7242
+8708
+-8407
+7383
+-5748
+2576
+-8597
+-6515
+3042
+-7945
+-6031
+-9758
+1819
+3662
+-9570
+-1757
+-5748
+-4653
+7917
+5129
+-3061
+834
+4358
+-5104
+-2222
+-5966
+918
+-5497
+-5736
+-7364
+4519
+-6716
+8811
+8707
+6133
+3517
+-4625
+-6511
+5535
+-8873
+103
+-2778
+-8246
+-5856
+-2263
+-1430
+-4908
+249
+-1242
+-554
+672
+-9823
+-7177
+6150
+2297
+-2272
+-2667
+-8280
+-6618
+-7283
+-1325
+-3385
+4808
+-5596
+-7956
+4176
+3120
+-8078
+7914
+-4845
+-701
+-4617
+-5268
+-3260
+8772
+-4853
+-8221
+-3655
+-3260
+2297
+4405
+6900
+2590
+-698
+-4374
+-1973
+-8361
+7939
+3414
+-4595
+-555
+8279
+-5668
+-1122
+-5162
+6587
+8308
+8656
+2118
+-2698
+-9706
+4596
+-3466
+-4539
+1866
+-5999
+-1755
+1051
+4266
+4740
+-7225
+636
+-2653
+1759
+8806
+-8551
+1056
+8177
+8208
+5814
+6273
+-1223
+5179
+-1098
+7570
+-5585
+-5259
+-902
+-4472
+1631
+-3078
+88
+4891
+5266
+8566
+-3628
+-6698
+-2099
+8241
+8328
+4927
+3010
+-6913
+-427
+3240
+-6125
+-2723
+-9706
+7279
+-4579
+8279
+-7871
+-1944
+-2977
+-8227
+-9785
+-216
+-6087
+6968
+-6554
+4805
+1955
+8103
+-9103
+2216
+-7479
+-3216
+-4926
+8391
+-772
+8570
+1330
+1977
+-2502
+-1842
+-2377
+2065
+2865
+-5913
+-4288
+-9919
+5556
+1361
+-3125
+3576
+5531
+2344
+-1045
+8457
+8792
+-9212
+1816
+-873
+-487
+1952
+2633
+-9795
+3507
+-5913
+-5240
+-2828
+-7747
+3956
+5406
+-5882
+4589
+5652
+-2323
+6273
+7659
+4248
+3419
+7813
+-4168
+-5210
+-7710
+-937
+7977
+5445
+2824
+-6894
+1900
+8998
+3095
+1908
+5129
+5589
+5229
+-371
+-8104
+-8962
+9789
+-8087
+-5395
+-8107
+9309
+7619
+-1893
+-5537
+897
+-6830
+-5423
+-4421
+1190
+-9786
+7825
+-1300
+7213
+5904
+-7308
+5140
+-7964
+1898
+-9141
+-4553
+-4195
+7567
+7131
+6512
+-8037
+4465
+-1220
+6946
+-968
+-1406
+6590
+-1431
+-3956
+-5750
+9249
+9697
+-2115
+9206
+-2896
+-3929
+8348
+-2392
+-411
+9172
+8839
+720
+-353
+-539
+958
+-2340
+8498
+211
+-582
+-1728
+-189
+6217
+5632
+3490
+2317
+4715
+-2700
+990
+9001
+1148
+9821
+-2500
+1352
+-5253
+4291
+4617
+244
+-3677
+4973
+-4054
+-7125
+-5198
+-9349
+-5985
+-5497
+2276
+-9989
+-6342
+9531
+-7572
+-7430
+-8544
+2902
+-1669
+1190
+3504
+67
+-9019
+-5155
+6888
+-8867
+5569
+-8011
+6767
+-9582
+1823
+2393
+-8800
+8114
+-2700
+-4793
+8562
+-9653
+-9063
+-9015
+9205
+-88
+-2662
+9806
+1140
+998
+-9693
+-9931
+6682
+4536
+-6751
+9099
+-4983
+1182
+3915
+1787
+-1359
+-9569
+-4959
+9067
+-8714
+6471
+5418
+5596
+6590
+194
+-7255
+-4825
+-412
+-335
+2569
+-5748
+-9020
+3990
+6768
+-9332
+-1112
+-2992
+-4905
+411
+-8393
+1884
+5129
+-5732
+-5565
+514
+1636
+8190
+-150
+-6488
+-7469
+3051
+6619
+7071
+-9786
+-4741
+1420
+-2555
+9382
+-3779
+-6263
+-1660
+4823
+-7664
+-7952
+-3980
+-741
+-5859
+9023
+-2114
+-3841
+988
+-2118
+-5362
+6446
+1545
+6317
+-3281
+9772
+4675
+-4046
+5912
+-6219
+8414
+-2001
+-1697
+-4296
+6507
+5202
+-7214
+6495
+-9817
+7561
+-2036
+2988
+5036
+4384
+-6624
+-5203
+7703
+-1110
+5229
+-2039
+-5826
+3487
+-3897
+6860
+2999
+-7872
+4173
+-6766
+-7723
+2029
+5925
+1234
+2875
+2759
+-7593
+-6511
+-5140
+-4470
+-8186
+-7266
+8343
+-5465
+-486
+-7450
+-1852
+8582
+-2151
+833
+-1033
+-6302
+-6871
+9023
+-9587
+833
+-1665
+-2440
+-9992
+-4623
+-595
+1746
+3551
+5600
+-8468
+-730
+8669
+2074
+-3228
+-8843
+-7455
+5129
+-2500
+-7071
+-4578
+-7916
+9794
+-9365
+5730
+277
+549
+-8046
+3378
+-6159
+-1948
+-6308
+-8940
+9877
+-4404
+1663
+2535
+-9673
+-5323
+5429
+-5478
+-6331
+-3548
+-9899
+-4398
+-259
+-5835
+9757
+-2621
+-917
+-6243
+5566
+9787
+-437
+-7650
+-6570
+8677
+-4734
+-6731
+2861
+-4603
+3405
+9001
+3635
+-4764
+2080
+-4988
+2390
+1048
+-2081
+-680
+-2263
+-4045
+-9982
+9703
+6164
+8848
+-7308
+-4382
+2575
+3377
+-3068
+8001
+4018
+6941
+-6644
+-4725
+-7882
+-5027
+4517
+-8915
+-6388
+-9349
+-4022
+-2955
+-2686
+8234
+7940
+-898
+3640
+990
+3042
+4552
+9686
+-1303
+8295
+-2485
+-3914
+-9477
+-1133
+1379
+-4867
+1663
+4820
+8001
+1545
+3127
+3846
+2870
+543
+-4567
+4175
+-2808
+4180
+-6490
+6846
+9920
+-2999
+-9150
+-1112
+3284
+2276
+-7505
+-9517
+-5095
+593
+-5795
+-6655
+8032
+-8865
+-5590
+-405
+3719
+-2917
+5847
+8864
+-4424
+6936
+-9816
+8889
+1605
+-579
+351
+-7570
+-6881
+3769
+-9171
+-4036
+-9517
+1163
+6446
+-8574
+-8729
+7903
+-8416
+-1050
+9096
+3187
+-473
+2043
+4977
+5
+-4662
+2297
+7826
+5992
+9866
+-1135
+8799
+-2769
+8842
+6861
+-579
+-3311
+-8984
+4706
+-7872
+-2480
+-3335
+-1098
+-8604
+-9250
+-6617
+907
+-2627
+9312
+2619
+-9552
+3108
+4353
+-3534
+370
+-683
+2955
+-8087
+5008
+4940
+-4256
+-4510
+1426
+-4588
+-6186
+7749
+-2460
+2899
+-7285
+-5809
+4173
+974
+-2067
+-5722
+1250
+-8505
+8214
+5407
+5814
+8889
+-6459
+2011
+2979
+3107
+9654
+830
+6150
+-7800
+514
+-6109
+2853
+-4998
+9712
+-6130
+-2092
+-7411
+-215
+-5835
+2089
+5585
+-3511
+8377
+6002
+-1798
+-6012
+9384
+4171
+1510
+-5393
+-7560
+9375
+8209
+5181
+2545
+8755
+2361
+-4296
+-1454
+3883
+-3312
+8600
+-3492
+5345
+9502
+-2045
+-3419
+4147
+-957
+-5197
+-4651
+-9142
+-1307
+2906
+-5970
+838
+7354
+487
+3577
+7527
+-6031
+-6785
+-5763
+-1714
+3751
+2953
+-2462
+-2416
+-4113
+-9320
+-6218
+-3909
+-7474
+3668
+-7043
+-7751
+5718
+-1430
+1044
+-8272
+-7162
+-8712
+-2110
+3711
+8875
+-1107
+-7457
+4745
+-9245
+-9919
+-9295
+1150
+-1081
+4704
+8563
+-5055
+-4183
+-4617
+-3677
+2133
+-3880
+4288
+-5767
+104
+-7614
+-6994
+-951
+-2908
+-2706
+-9960
+-3369
+-7023
+-3166
+8610
+-5624
+4917
+-8796
+6111
+6219
+-9195
+-1667
+3714
+5484
+-5763
+3259
+-7768
+-3847
+-2371
+-549
+5572
+-8612
+-7952
+8657
+5652
+-583
+-6204
+-9885
+1406
+-5815
+-1122
+1909
+3491
+-4394
+-7419
+3653
+-2
+6495
+-3905
+-6052
+445
+9684
+-2221
+-9982
+8908
+-4445
+4606
+2808
+4959
+5982
+-2489
+-5601
+3181
+79
+1421
+7411
+-6091
+-5781
+-4128
+5538
+-7218
+-9451
+249
+-2371
+2392
+-6318
+-9460
+8958
+3194
+-2516
+7679
+5148
+-5437
+-670
+4754
+3925
+-3796
+-3659
+46
+-1329
+8515
+7130
+-4494
+-4263
+-7975
+-5997
+-7259
+6029
+-7896
+-9960
+-5848
+3463
+-5842
+5318
+1285
+9871
+3437
+2228
+-1223
+-1628
+1590
+-5951
+5638
+-9971
+9565
+5339
+4057
+-2121
+-5259
+-4493
+-6869
+-7661
+2045
+64
+7153
+3846
+2628
+5104
+-7196
+-5797
+7669
+-2505
+-4336
+6537
+3713
+5406
+4506
+4238
+3249
+-5399
+7279
+-9292
+-9365
+8519
+-2667
+-2438
+-9474
+-7106
+870
+-2946
+6864
+-8674
+-4846
+8396
+7269
+-9752
+9064
+5585
+3574
+-3849
+-3722
+2063
+-56
+7314
+-5335
+1914
+8565
+3410
+2228
+-5732
+8151
+2278
+-5559
+1632
+-2998
+-1109
+-2913
+-4676
+-6814
+1766
+1883
+-6795
+5601
+-1050
+-4401
+8408
+-8482
+8660
+-5944
+8745
+-6869
+4911
+5609
+-8729
+8660
+-6752
+2632
+-4569
+-6315
+-2523
+-480
+9321
+2703
+7323
+6658
+6658
+3428
+1659
+1141
+7191
+6257
+-5226
+9382
+-5208
+-4388
+-3895
+1030
+-660
+7829
+-7560
+1768
+7939
+-7817
+5747
+7882
+4180
+4759
+361
+9240
+5799
+-2272
+2074
+8707
+-8301
+6883
+-2998
+-2284
+4613
+8496
+5175
+-6802
+-853
+2799
+-7910
+4245
+-4178
+-8907
+-6791
+-246
+791
+3487
+-8617
+-996
+-1242
+-9178
+-8896
+-3605
+-498
+4345
+-5825
+1840
+-2596
+1050
+1600
+-316
+-3062
+5428
+-1296
+7534
+9806
+9239
+9049
+758
+-5379
+4985
+-2153
+-133
+9223
+3486
+-5950
+-6438
+9966
+-1728
+-6072
+-2177
+-3270
+5913
+1747
+-918
+2458
+1707
+5301
+-9528
+3941
+6164
+5913
+-915
+-8537
+3393
+-7076
+3156
+-1441
+-1832
+-4964
+2589
+6519
+8108
+-323
+4971
+-9690
+5161
+-1454
+-2878
+-5231
+-2792
+9575
+-7916
+892
+-1283
+5273
+950
+-8982
+3638
+3463
+-8961
+-536
+-6103
+6519
+9299
+-9907
+7004
+4164
+8078
+2892
+-3529
+9657
+1911
+6566
+-9482
+-4771
+2870
+-2
+-6407
+-5895
+8593
+-2703
+3446
+-4775
+9068
+8677
+-6758
+1559
+382
+8643
+-718
+8642
+-3655
+-3515
+-7275
+7905
+6502
+-2882
+7153
+-5668
+-3088
+6992
+-1526
+-6994
+-4411
+1680
+4787
+3841
+5445
+-4007
+7203
+-8895
+601
+6060
+812
+3921
+6761
+104
+3015
+-2118
+9101
+4101
+-3802
+2706
+6558
+-6712
+-4746
+-9436
+2489
+-8024
+7385
+-1830
+-4059
+-2741
+8887
+3281
+-5208
+-6337
+5814
+-1783
+-2597
+-4128
+-4951
+-1809
+-5215
+1619
+-3852
+167
+-8371
+-2500
+-1630
+4891
+-3355
+7556
+1952
+-5825
+-9995
+-5850
+5464
+-7770
+299
+5662
+-4857
+-1483
+-6804
+-5879
+-2338
+1621
+-427
+-5848
+9206
+6945
+6403
+950
+5922
+-9124
+3137
+3613
+-3997
+-1283
+2767
+3348
+4898
+4511
+-6386
+2300
+7785
+8974
+866
+8123
+2029
+-3014
+-2758
+1488
+8573
+6878
+3619
+6096
+-7440
+1812
+136
+4979
+-1577
+-8684
+5349
+6654
+-6160
+7648
+-7672
+3757
+1659
+-1555
+-9138
+7677
+-767
+5074
+-4760
+-4870
+-5966
+-1669
+-6802
+-7440
+1886
+6376
+9845
+-8684
+-7554
+-4894
+-8396
+-6918
+4164
+7148
+6002
+-9182
+7549
+-5364
+6012
+1043
+-5791
+-4017
+9662
+-8750
+3120
+-135
+-7306
+-4426
+-5346
+-5587
+-3239
+-3677
+7822
+2141
+3823
+-3228
+1608
+-6511
+4823
+-2443
+-9026
+1250
+4879
+4833
+-8785
+3687
+-3738
+5872
+7237
+1190
+-2523
+-6960
+-5614
+-539
+8209
+-9169
+-2699
+-3789
+8582
+-9343
+-2662
+-8413
+-2532
+-1123
+-1746
+3885
+7763
+-3388
+272
+2132
+-3761
+-4968
+844
+5036
+1371
+720
+-6894
+1502
+-4502
+-1046
+-7245
+-9757
+8882
+-7875
+3222
+8143
+7063
+5638
+-483
+-6978
+1800
+-1107
+-1574
+2592
+6403
+-9564
+5099
+1051
+-1026
+-2224
+-1496
+3645
+-1892
+1585
+8203
+-3105
+-8751
+-9580
+-4866
+4107
+7207
+9942
+-2424
+-8730
+7052
+-3151
+-8087
+-6347
+-535
+1592
+7512
+7208
+594
+-3526
+4506
+-8861
+-1440
+-5383
+-4794
+-8033
+3447
+-3779
+-2596
+5266
+8949
+4968
+-7956
+-4409
+-1661
+-4424
+-3825
+6701
+707
+4475
+-751
+7502
+7072
+9120
+-260
+-6965
+-3454
+593
+-9238
+-6409
+7643
+-4926
+-9233
+611
+5992
+-7997
+-5233
+-1065
+-5835
+4705
+-28
+1461
+-3851
+-5232
+-5894
+-1478
+7631
+588
+-9329
+9092
+7703
+-3273
+8742
+8839
+6215
+3303
+6754
+-5744
+3675
+-5073
+213
+2240
+-4464
+-1863
+8165
+-8822
+4114
+-6451
+-2364
+-4018
+-3620
+5873
+1508
+2768
+2522
+-7639
+6665
+2145
+-798
+-3237
+-3181
+-2611
+-8634
+-5538
+-2221
+1383
+-7706
+6334
+-2567
+-1711
+-6457
+8468
+-1882
+-7832
+3638
+-3384
+-46
+1560
+3430
+-4655
+2975
+135
+-7245
+3304
+-1934
+-2582
+-8788
+-3105
+-2903
+-8421
+-549
+2866
+9657
+-9508
+7913
+-7225
+3291
+4979
+-2460
+-6920
+-9026
+1200
+-3684
+2390
+9720
+3907
+-1098
+6768
+-3469
+-4958
+-8680
+-5612
+3613
+-5318
+-8617
+5265
+6976
+8493
+9951
+-2732
+-2780
+-3540
+-6642
+-5980
+2983
+-4551
+-9758
+8734
+-8310
+-5593
+-5699
+-9349
+4120
+-1205
+8143
+9870
+8820
+-2224
+1593
+9978
+9141
+-3503
+8193
+-9349
+7806
+5723
+-1283
+-8275
+9966
+5533
+6275
+-1866
+5406
+5814
+-857
+-2991
+6403
+-2769
+6346
+-3920
+8450
+6272
+7813
+-6481
+-6892
+3791
+7088
+6358
+6395
+-7898
+3326
+-9451
+6714
+-9540
+-9545
+-676
+-2160
+-1257
+-2913
+239
+4009
+698
+-3179
+3757
+5955
+-2842
+-3441
+5622
+2575
+-60
+-4168
+-2992
+-6035
+2173
+-6671
+-9339
+-2130
+7958
+8603
+-6992
+3416
+2493
+-8111
+-6276
+-1922
+-2619
+-3769
+-5651
+7170
+2482
+-9482
+-7169
+7730
+3892
+112
+9523
+2970
+5626
+-9274
+493
+-4288
+-6928
+8562
+-9673
+203
+6855
+7555
+-3101
+8632
+-2681
+-7918
+2524
+1346
+3732
+3633
+3193
+9362
+9756
+-9215
+2971
+7423
+-631
+6554
+3021
+-5894
+6334
+2401
+-6923
+-8763
+-3262
+-9024
+6255
+3640
+-2416
+-8900
+-7235
+7513
+3613
+-7531
+6439
+2451
+5968
+-8184
+6227
+3309
+-3098
+-4936
+3140
+-5393
+8075
+7613
+-5644
+-7833
+-8421
+7901
+-4498
+-9238
+7088
+6667
+3383
+6834
+8299
+-2003
+1263
+2761
+8033
+2160
+-6724
+367
+-7330
+9790
+6914
+1244
+-462
+942
+-543
+8230
+9309
+2099
+-5508
+-4655
+-9320
+8585
+757
+-8236
+-750
+9486
+-6451
+-619
+-1067
+-6626
+3424
+-1499
+-8916
+1569
+5599
+9954
+2963
+-4920
+5345
+-1794
+5456
+2465
+-2865
+544
+4323
+-5150
+-5435
+7979
+-7389
+7241
+742
+9432
+-480
+7892
+-9161
+-4061
+-3739
+1688
+3209
+2446
+9215
+-6633
+4199
+3960
+4715
+-8563
+-1959
+4858
+-6413
+7035
+-2415
+9601
+-4345
+-5665
+-5420
+8105
+6573
+-6830
+7434
+-7225
+3310
+7756
+6761
+2671
+-814
+5427
+9482
+9296
+-3597
+-3474
+5585
+-8595
+8566
+9707
+-6653
+2801
+9128
+-6563
+-3580
+-44
+-8685
+7194
+9574
+9206
+-9844
+2665
+9609
+-6230
+-4985
+-7025
+-9590
+8238
+5032
+3463
+-6285
+4976
+5229
+-5342
+4619
+5023
+8338
+1332
+9793
+7220
+9215
+3679
+-3710
+2411
+1661
+-3909
+-4951
+7311
+-9056
+-8659
+3729
+8582
+5925
+5755
+-7469
+-567
+9312
+6824
+5758
+4996
+2999
+-2511
+6522
+-4594
+4307
+-9233
+446
+-8034
+73
+-4915
+7140
+5810
+6801
+-2965
+9203
+-9981
+-7633
+-4363
+4299
+-6162
+-9958
+7714
+-6883
+6395
+4217
+-7493
+-621
+-2070
+4450
+-4490
+-7506
+-9220
+3054
+4773
+3656
+-6890
+2377
+-6407
+7045
+8061
+7368
+5594
+4544
+-7787
+-1598
+-1398
+-8288
+2742
+8979
+888
+-1043
+-7695
+4473
+5280
+2535
+-4499
+58
+1406
+-9038
+-928
+-251
+597
+-7242
+-3146
+3638
+-4987
+5205
+3140
+-7152
+9618
+7935
+-5588
+-996
+3882
+3304
+2539
+1374
+-8182
+-4411
+-8157
+-8247
+-5516
+-9146
+9656
+-1615
+-6745
+-6867
+-9649
+4475
+-516
+-4713
+4301
+-9649
+9362
+-2792
+-1108
+3393
+8258
+-2230
+-8468
+3303
+1563
+7059
+-1122
+-923
+31
+376
+-2918
+3522
+-2511
+7126
+-962
+9995
+4858
+3414
+5964
+-7650
+645
+-2878
+79
+-2678
+4189
+6077
+2809
+4078
+-2814
+-2323
+4846
+-6509
+-7126
+4286
+4584
+7619
+-2424
+-6318
+3507
+8562
+6214
+5004
+5484
+1147
+8002
+4619
+-6097
+6145
+6619
+-8482
+1528
+2057
+3619
+-4932
+2512
+-1974
+-8537
+7813
+9299
+8547
+8737
+-8275
+-3789
+-9981
+5099
+-3548
+8050
+-6109
+3707
+-1767
+9901
+8387
+2197
+6725
+5173
+-4553
+8195
+507
+358
+2608
+-2987
+9249
+-1046
+-3827
+-871
+4874
+7590
+7513
+-2230
+3009
+-2753
+7398
+2814
+287
+-240
+-1055
+3956
+-4516
+-2807
+2096
+9985
+2228
+7369
+2200
+2972
+-7815
+-9291
+1361
+-6450
+1458
+-5241
+-3053
+9021
+2496
+-3562
+-6953
+-568
+-6625
+-1043
+-3681
+-2865
+-186
+3405
+-1036
+1689
+8195
+-4623
+-9748
+415
+3297
+8178
+-1863
+-7628
+6761
+-1388
+1284
+5728
+321
+58
+8547
+-5100
+7127
+73
+-9948
+-9592
+-4451
+140
+5485
+-2633
+-6707
+4977
+3397
+7964
+5008
+-6769
+4528
+-389
+1411
+-5511
+7588
+2749
+-8783
+5407
+-1823
+8195
+-2647
+-7572
+-7290
+367
+-4914
+8455
+1305
+-5891
+-2780
+-2065
+-9928
+-9328
+-8125
+4539
+-8637
+682
+-7413
+-4088
+-4045
+3729
+-2120
+-6593
+6682
+2590
+-6434
+2403
+-9271
+-9077
+5859
+800
+-7496
+-1229
+2443
+6147
+5274
+5952
+-3827
+-5631
+-1762
+-7311
+3444
+-531
+-9516
+1591
+6681
+-6027
+4388
+-8300
+-1019
+-1339
+9279
+241
+6779
+6159
+5460
+8839
+-4763
+-8597
+5982
+-7458
+-3982
+7368
+-9486
+-6933
+6055
+3304
+8575
+-1557
+-1499
+-8416
+-4591
+9756
+-8937
+-8243
+-1712
+-5614
+-4100
+9320
+1616
+-6806
+-9746
+3590
+-5026
+2712
+8870
+445
+-6075
+2173
+9519
+-8984
+4397
+-3940
+5064
+-343
+-8393
+8870
+-5924
+611
+-8833
+4619
+9535
+6343
+-1108
+-4948
+-6240
+-6582
+4451
+6895
+39
+2133
+-3990
+-2918
+818
+-917
+7456
+9178
+-6593
+-8034
+-2750
+2679
+-514
+1464
+5913
+-155
+1801
+-2498
+-112
+-5925
+-7320
+-6933
+5468
+7449
+-381
+1156
+6258
+-3909
+4099
+7858
+2015
+-2053
+-8852
+-6970
+-1081
+-8426
+-7373
+6133
+-5538
+6590
+2647
+6429
+-5026
+-1938
+-3655
+-3053
+4385
+-8677
+7293
+-6762
+-8798
+1000
+-3841
+-1409
+-5826
+-4594
+-5860
+-2584
+-579
+6233
+1554
+3989
+8498
+-2297
+8946
+-2555
+2590
+3507
+1557
+8093
+-7644
+5123
+510
+2029
+-6688
+3686
+9557
+653
+-203
+3372
+4164
+58
+2228
+2442
+3259
+8060
+3540
+-9018
+1371
+2102
+-6044
+-9539
+3463
+-8377
+4517
+1726
+-9322
+758
+7939
+4112
+-2371
+4917
+-5161
+6055
+5204
+8105
+-9671
+9075
+637
+-3841
+7368
+3143
+4889
+-2008
+5999
+-5374
+-5045
+-1283
+8328
+-6766
+191
+4497
+6059
+6681
+-867
+-1398
+-3418
+-1442
+-8928
+7785
+4357
+2816
+-9734
+-3400
+-1780
+-7768
+-3628
+9069
+6981
+8227
+3869
+-967
+-5360
+-1531
+3564
+-8684
+-516
+-205
+-7369
+-5590
+-1991
+-9539
+5098
+2224
+2496
+3883
+-158
+7032
+187
+-9634
+-7971
+-3717
+-2224
+8203
+7958
+9204
+-8575
+9413
+9777
+7053
+-2459
+1974
+3091
+-6624
+5337
+-9108
+2200
+-740
+-9106
+-9896
+9523
+-487
+4701
+6832
+1516
+8455
+8582
+-5722
+4983
+194
+6629
+-4313
+958
+3261
+6414
+958
+8764
+1564
+3638
+-7159
+-6230
+8892
+-4845
+-6795
+7756
+-958
+6726
+6604
+-6063
+4541
+-5051
+-2257
+-1941
+-4230
+9070
+7726
+6904
+-6172
+-4481
+-5769
+-6039
+-1194
+9910
+4823
+-3440
+2970
+-209
+3087
+8515
+6466
+8072
+6301
+9804
+-8836
+9115
+9029
+-9841
+6866
+1702
+-6124
+-7448
+-7435
+707
+-4012
+4080
+-1842
+838
+6400
+2005
+9574
+-5999
+-8300
+-3078
+-7710
+8193
+-2272
+2048
+1324
+-5699
+-4473
+4787
+6303
+7063
+7167
+8178
+-8882
+-7946
+-5320
+5625
+8143
+-8620
+-5116
+8958
+-9677
+200
+-5860
+9826
+-6465
+8525
+3441
+4138
+-2915
+8557
+-9454
+-1089
+-4219
+4032
+9910
+5926
+-1098
+5394
+973
+6701
+-2317
+2743
+-5026
+-1547
+-6671
+2975
+5448
+-8351
+-5738
+-8526
+6619
+8562
+597
+8656
+-4981
+1487
+-6400
+-7850
+-8917
+-2151
+9532
+-3454
+7598
+6179
+7001
+-1549
+8728
+7233
+6366
+4617
+1594
+-1325
+1383
+-996
+-9798
+3960
+-9831
+-3346
+-6126
+-9943
+-4184
+-6624
+-6863
+8127
+7657
+8470
+6590
+3978
+9347
+9523
+874
+-7440
+-5744
+-6127
+-6427
+-3181
+9129
+9052
+6209
+-513
+-2029
+-2305
+-3529
+5625
+-9843
+9591
+1804
+-9995
+-9146
+1488
+2211
+-4749
+3218
+-2792
+2875
+5266
+1220
+9099
+6791
+-7991
+1143
+-8278
+3686
+-8512
+-408
+7249
+4276
+5123
+4229
+-5161
+-7912
+-2878
+-6055
+2483
+-1203
+-731
+2910
+7481
+3015
+-1148
+-3461
+4215
+-8014
+-43
+64
+-2500
+146
+-4593
+9432
+-8769
+-9234
+9298
+3676
+-1572
+5293
+-5868
+-6191
+-9843
+9170
+2744
+6557
+-2344
+9979
+-7283
+-1702
+9384
+-5412
+-532
+4781
+9633
+1281
+-4172
+4838
+-8385
+-7896
+-2989
+-1042
+-5469
+-1757
+2979
+-2392
+-760
+3126
+5148
+-4260
+-413
+-2644
+-6091
+-9456
+7884
+-2616
+-9073
+-9604
+-1879
+7756
+-41
+108
+-2543
+-9868
+9408
+-3562
+-1659
+6583
+-9117
+-4617
+707
+-7344
+-3672
+33
+9520
+536
+-483
+907
+5535
+-2876
+3021
+482
+1593
+-1466
+-3166
+-7916
+5009
+-5074
+4823
+-6367
+-7702
+-2039
+9172
+2649
+-3848
+1046
+7349
+7185
+9813
+-5826
+9300
+-1478
+9657
+-4071
+-4354
+-5227
+-2987
+-6941
+2752
+-492
+-9436
+-9499
+2198
+-1305
+-8221
+-106
+7482
+-1250
+-3334
+-5125
+-5204
+6848
+-8939
+-6134
+4610
+-3104
+-335
+-7156
+5834
+-7896
+-3181
+9800
+9348
+-8222
+-7889
+8494
+9239
+-539
+5106
+5578
+188
+3676
+-1697
+8976
+494
+1765
+-4931
+-2808
+9863
+-7214
+-3708
+-674
+-4196
+6899
+-2792
+2513
+6914
+1812
+4278
+647
+9601
+5099
+-1668
+-5690
+-6052
+7149
+-1550
+-1919
+6863
+5270
+-9649
+6628
+-5710
+7016
+5814
+8601
+-5946
+874
+4331
+-26
+4144
+926
+-2505
+-1017
+7346
+-1381
+-7809
+5072
+-6613
+3419
+812
+-1753
+-1403
+44
+5782
+-8917
+3009
+-6160
+-290
+-1515
+-9888
+-6721
+-4232
+544
+-6856
+-7126
+-7683
+798
+8533
+-2826
+909
+9329
+8533
+-8515
+3635
+8105
+3637
+-4959
+1181
+1226
+-4622
+-9970
+850
+-239
+1971
+5905
+-8637
+9239
+-9612
+-7085
+3297
+3823
+-1135
+-4617
+8819
+-5482
+4283
+-6326
+9618
+-9446
+9300
+65
+7016
+-2758
+6695
+-6574
+-4288
+2689
+8601
+-6055
+3460
+5983
+3194
+5440
+8889
+1173
+3120
+-5318
+9107
+-4682
+5035
+1143
+7032
+-1046
+4572
+4544
+4888
+-516
+9160
+-5788
+-4022
+-3113
+5742
+3974
+-6027
+-1764
+-8921
+-8774
+8278
+-3848
+5638
+-7394
+9134
+-6436
+6128
+-7518
+1445
+-6569
+-6509
+-3580
+7855
+5825
+-1010
+-7531
+2174
+9744
+3925
+-8418
+4059
+-7218
+7873
+4158
+4170
+-1505
+-3272
+1516
+-4371
+5036
+9910
+-1936
+-8385
+-9128
+7700
+2141
+-2561
+8794
+5275
+-4223
+-4877
+3463
+7757
+-2500
+3416
+-5401
+-4700
+4401
+-8873
+-38
+3496
+1855
+-220
+-6308
+-3268
+-8624
+-2205
+-467
+-9040
+-4367
+-8521
+-6622
+-6446
+-2008
+7213
+-4077
+-7771
+8820
+-6346
+1970
+8027
+3522
+6408
+-3941
+-840
+2089
+-8823
+-7910
+7506
+-9002
+191
+879
+-5983
+-5026
+8734
+-4799
+1308
+7966
+-1335
+-4819
+9300
+9484
+-5127
+-6463
+4732
+-4749
+7969
+-6562
+866
+2733
+-2515
+-5819
+904
+-830
+4435
+3366
+-3987
+2669
+-6050
+4572
+-4156
+-5458
+3869
+-5752
+-5875
+-20
+71
+-9409
+-5309
+1682
+-1034
+-9905
+3990
+-7666
+-1043
+-2451
+8677
+2174
+-2297
+-8718
+-4394
+9720
+1027
+-5856
+-4137
+-630
+8480
+6148
+-2776
+9285
+1332
+-574
+-5484
+-3108
+4008
+4722
+9347
+-6446
+7226
+-5982
+-4499
+-5401
+-3663
+5402
+296
+-9355
+-4992
+2171
+32
+-1112
+8873
+-7908
+9535
+-1436
+-6993
+-5173
+5599
+-4771
+3379
+7813
+4773
+-5211
+1690
+-3486
+-8674
+8633
+-1577
+-8678
+1605
+-3198
+-6448
+-7572
+-1704
+4142
+-6073
+-1743
+9550
+-7085
+2370
+-7008
+6912
+-4673
+5638
+2943
+-9903
+4358
+8764
+9720
+6963
+-8309
+5468
+-1296
+-2616
+-7527
+162
+-8845
+-2014
+5850
+7963
+3576
+9790
+6343
+6959
+8299
+3253
+-6291
+-2867
+6590
+-2089
+9584
+-6203
+7990
+2886
+4652
+-4071
+8839
+6089
+2937
+-1728
+6060
+4499
+-5512
+1573
+-3812
+5362
+-6465
+469
+-8920
+-4012
+3775
+2318
+-4036
+-6409
+1823
+-29
+-1925
+2188
+7282
+-4418
+3990
+8165
+-9907
+7823
+-7676
+1026
+1379
+-1010
+-8243
+-5737
+9205
+-1578
+-6390
+4968
+-9277
+3042
+9789
+4576
+2276
+7573
+4099
+-5794
+2442
+3629
+9218
+6087
+-7106
+6653
+-3357
+-7946
+-1369
+-6211
+3883
+2787
+-7709
+-867
+4034
+5617
+9749
+5920
+-4350
+-8444
+-5211
+-2417
+-723
+-7899
+-5876
+9643
+-1289
+-5903
+-8504
+-7786
+4646
+-1744
+6163
+6972
+1781
+58
+-1628
+6771
+-9264
+9663
+-8924
+3805
+247
+-9454
+2436
+-9477
+-8180
+-8216
+7114
+-6570
+-6103
+-9597
+5980
+-5668
+4128
+-7439
+121
+4368
+8998
+-2796
+1480
+-8692
+-4001
+-100
+-546
+-3253
+1765
+-5104
+-2387
+4216
+-8669
+4412
+-2505
+2088
+-2338
+8875
+7686
+1388
+4176
+-5161
+-7396
+7767
+-9295
+7702
+-8281
+1557
+1631
+0
+-814
+-5848
+88
+-3192
+1817
+-3071
+-6815
+9546
+2935
+8834
+-8345
+-1406
+-4902
+-4653
+779
+-1370
+-8684
+7431
+-631
+6854
+-4012
+6044
+-5418
+1938
+-3912
+7837
+-1350
+-7245
+2442
+8234
+4059
+827
+8033
+4171
+-6965
+-3928
+5456
+-9518
+9067
+-4088
+321
+1837
+-9928
+5974
+-7182
+-5392
+2595
+8196
+-4990
+-7126
+8279
+-5095
+-2303
+-4858
+5089
+2077
+8151
+6682
+5286
+-8300
+2670
+-5600
+-3386
+4589
+8108
+901
+7209
+-385
+-8367
+928
+8960
+1800
+8432
+6583
+8454
+-3785
+-1637
+5974
+5172
+2540
+4059
+4906
+7237
+-6568
+-1106
+-8047
+-7504
+-9706
+7736
+5098
+5617
+-9395
+-8395
+-8107
+2328
+1593
+2616
+-60
+5992
+-951
+-7076
+241
+-704
+446
+3784
+-9512
+-2306
+1485
+-3376
+-3080
+-6502
+1281
+-9844
+-7428
+-2665
+3901
+9656
+-3452
+3265
+-6562
+-1828
+-1905
+7246
+-7025
+3550
+7067
+8883
+-5605
+-481
+1608
+-8852
+-8337
+-5243
+-583
+2853
+284
+5120
+2792
+-5637
+6389
+411
+-4814
+8783
+-6219
+-2323
+9785
+4029
+-720
+-2191
+1388
+8304
+-3241
+-1925
+2084
+-1572
+-6272
+-7946
+-8037
+6256
+6256
+-9516
+-2236
+-2505
+7218
+-9546
+-6006
+-9617
+-7786
+2343
+8661
+-9231
+-1430
+707
+-9312
+7889
+-2431
+-4709
+3372
+3555
+3043
+2115
+-2102
+-2645
+-7552
+-3856
+-1220
+7246
+3629
+-9995
+-9706
+-962
+-8647
+-7795
+6619
+-5881
+-5654
+-2275
+5877
+-6272
+-1190
+5961
+980
+-8570
+8220
+2191
+3441
+231
+1621
+-5418
+4630
+6125
+7114
+5601
+8061
+-8712
+4435
+6815
+4572
+-4261
+3164
+-7244
+954
+-406
+1199
+-2631
+-1991
+1827
+-6688
+4941
+7073
+6240
+7784
+-5995
+-7426
+9065
+4027
+8174
+-2627
+-2987
+9995
+4212
+6452
+-5228
+-9051
+2039
+5626
+-5999
+2687
+-4545
+7423
+6301
+1682
+8674
+-8474
+8669
+6253
+329
+-7476
+593
+6655
+7388
+55
+-9
+4635
+-1753
+-2523
+-7064
+-5996
+-807
+-3272
+7400
+-2211
+-9454
+6187
+-7412
+-2381
+1555
+-2758
+1339
+5402
+8105
+-2245
+-4618
+5631
+-3548
+-8157
+-8686
+6834
+-4707
+8566
+7385
+-9286
+-2381
+-7493
+382
+-3199
+2766
+-2792
+8684
+-6398
+-4764
+-2307
+1494
+6518
+2036
+-5788
+-5351
+4962
+5337
+1807
+6920
+-6538
+3553
+8613
+5563
+-8048
+-3566
+-8222
+-1517
+5800
+-2700
+3048
+-4022
+-8373
+1618
+-7432
+-6191
+926
+9877
+3323
+-549
+-4684
+-1222
+2761
+-251
+9109
+-9853
+3883
+-2046
+1466
+6150
+-8953
+4539
+6791
+7583
+-6920
+345
+1605
+-8892
+-4644
+-1914
+7140
+6854
+2883
+-3540
+-2194
+1167
+-1311
+-898
+-2346
+1061
+9001
+3897
+9903
+2325
+-5644
+-5761
+-629
+5608
+-7656
+3687
+-6226
+-5182
+-5182
+4646
+-5466
+4068
+5921
+-7432
+-9889
+-4570
+9174
+-386
+1636
+-5859
+7927
+-7324
+-8125
+-5243
+4289
+-9721
+-7419
+-442
+-6574
+7169
+-5722
+-9596
+1577
+-2091
+-545
+5755
+6806
+-9756
+-7694
+-4575
+-4898
+-6091
+-6556
+5506
+-2700
+9382
+-9133
+-7575
+-1754
+8619
+5183
+-2575
+2682
+-912
+67
+-8045
+-7647
+-6090
+-134
+-8712
+-6509
+-1387
+-2343
+2173
+-6409
+-4913
+6651
+9669
+-5596
+-1930
+4034
+-1289
+6873
+9124
+-2248
+5300
+3823
+-1370
+-6347
+9951
+-9465
+-1393
+9001
+8195
+2706
+7516
+9518
+-3559
+-549
+6842
+-3049
+9515
+-7640
+-5690
+1153
+3090
+86
+564
+1375
+4865
+8789
+-3268
+9697
+3493
+-159
+3447
+-6438
+5105
+5764
+7379
+-5093
+-7871
+2913
+8299
+-5162
+1729
+-7442
+4298
+890
+2497
+-2812
+-9292
+8673
+-9240
+663
+-3672
+-9831
+-3975
+9754
+-9903
+-8575
+-415
+-7680
+-2890
+3719
+8312
+4117
+-8534
+454
+6218
+1083
+-8512
+1757
+6428
+8298
+1199
+8806
+-740
+-8418
+7686
+-3776
+-97
+-1325
+5181
+-525
+-569
+7619
+7868
+7842
+-4041
+-6385
+7155
+-3549
+-8540
+-7106
+2139
+-997
+-8015
+707
+-4741
+-1401
+-6871
+859
+9792
+5020
+-1916
+-6693
+2955
+-7671
+-3827
+6061
+-7841
+-7537
+-5925
+9273
diff --git a/2022/20/solve.py b/2022/20/solve.py
new file mode 100644
index 0000000..6a0a74f
--- /dev/null
+++ b/2022/20/solve.py
@@ -0,0 +1,32 @@
+import numpy as np
+
+data = [
+ (i, int(dat))
+ for i, dat in enumerate(open("input").readlines())
+ if dat != ""
+]
+size = len(data)
+
+
+def solve(arr, mult):
+ for coord in arr[:] * mult:
+ i = arr.index(coord)
+ arr.pop(i)
+ arr.insert((i + coord[1]) % (size - 1), coord)
+ zero = [coord[1] for coord in arr].index(0)
+ locs = [1000, 2000, 3000]
+ return sum(arr[(zero + p) % size][1] for p in locs)
+
+
+def part1():
+ copied = data[:] # don't overwrite because part2
+ return solve(copied, 1)
+
+
+def part2():
+ applied = [(i, dat * 811589153) for i, dat in data]
+ return solve(applied, 10)
+
+
+print(f"Part 1: {part1()}")
+print(f"Part 2: {part2()}")
diff --git a/2022/21/input b/2022/21/input
new file mode 100644
index 0000000..f3eba58
--- /dev/null
+++ b/2022/21/input
@@ -0,0 +1,2401 @@
+lzvm: ptgl * wvjc
+jlbw: 5
+vgzr: 2
+scpf: 3
+lgtp: 2
+srsp: vdmg * fqbh
+hcmw: 7
+cnpc: 9
+scvq: wzpm - cnwd
+nvml: 3
+rlvv: 7
+ffrw: lscf + jcht
+lprr: 2
+srpn: 2
+hspb: gdhj + fbbc
+bhsc: 4
+hdtw: qfmd * wntp
+sjhs: mfjc - nwcz
+wtgh: 17
+rjvw: hzjt * lnlw
+cwpc: 2
+wtqw: 3
+tnhb: 2
+dvrh: 3
+znnv: wthv / qczc
+qpln: wspn * jpnc
+phbj: wnzd + cnpc
+lhln: mwcz * dvln
+grqn: 3
+crdg: jfzb * pwpj
+lsjd: 4
+tzwh: shgc - bqzv
+rldp: 3
+pjzm: 5
+pwbn: 2
+ljgc: nsbn + jwwz
+vhjj: gjzm + qrzs
+wmfj: dnbb * nbfq
+bjgq: vcdj * sfhl
+rpfm: 9
+bqlm: sdpl * nqdr
+gmjg: nzwv * ljsq
+lptd: humn - mrjt
+rlts: nlnf / wmmj
+nfdl: sbgc * rdwl
+stpr: 3
+fqgm: rvgf * jsvv
+cgrz: 4
+dvfw: vdzq + tfzd
+bwwv: 10
+dfcw: 8
+psrq: hcvr * lvdd
+lltb: qrtt * qpnn
+tlgs: wrqq * wvhs
+whll: 2
+tmfd: 5
+crvv: 2
+thhz: 3
+fhpw: 13
+qwqb: 3
+lfhp: 3
+vszc: 8
+cfgn: 5
+jcjb: rtvp + mpcm
+hwlg: 5
+vqhg: whpc + sgmj
+lhll: qwqb + svtq
+cvjc: zjmz * hcmw
+rszs: wmqd * flhp
+hqbs: lzrr * jfvt
+dpwb: bsmg * vsjs
+dfzj: 10
+zqhb: cvzg * zrpj
+qtwr: vhbm * flrs
+fbtc: bqnw * hzgg
+pdfm: 5
+bllh: 10
+vzhq: 2
+bszl: 2
+cvzg: zbpr + vvfg
+cczs: slws + dvfw
+wvrq: 6
+vrhf: 2
+tphn: tllc + lwhq
+gbmt: qfln * pflg
+nqtb: phjv + dqwf
+qpst: 2
+fsrp: vfgn + ghsm
+fffv: zfvq * lsts
+cvln: psrq / bgcl
+bqvm: 19
+shff: 2
+cjnh: 7
+wrhb: 3
+gpsl: npmt * gcgb
+tmgv: cnzs + sfvt
+hlql: nllh + gnlr
+bsrc: jmvn * fdpt
+fnbp: 19
+ptrl: gpmg * wmjv
+ddsh: cztw + mgpq
+zmtf: nqlj * gmjt
+ctsj: 2
+qnpm: 2
+zhgr: jcpz * msvz
+mfbg: tzcs * qfmj
+hllz: wnhv + twsh
+bbwz: fpcq * nncm
+tlzb: 7
+jjzf: wssz + gbpr
+cqgb: fffv + jtpl
+sgqn: smns + mgws
+tzjc: 9
+dslw: 6
+cdls: 2
+bdqm: mfdc * jpgb
+nzpp: ddrh + bvfb
+mzcl: lcpb / sgqn
+wfcn: msgg / fqcz
+mtvg: 3
+mtpd: 2
+tllc: flzq + pfqz
+wfgh: qpbz * mscj
+zvvw: 15
+zspw: rspv * lgdh
+qwqg: nvqr * vblw
+whpv: vpcb * pzvb
+dtsr: 5
+plpc: fgsc * vnjb
+spln: 13
+fnfm: 1
+jlbv: 2
+blwt: nhfd + nslf
+sgnb: 4
+ntfc: 12
+znhg: 2
+tlvl: 2
+wqrw: 3
+mtvq: wmfj + fldv
+qpnn: rvbm - jnmf
+zcbm: 5
+qmzr: 2
+gqfd: 2
+jgjf: 9
+wrsf: 1
+mgfq: bqgf * qpff
+pjff: tqbl * bfzm
+sfng: qzhl * cslr
+jwqs: 1
+tbzw: 3
+jzmj: cfgn + wfdv
+rznc: 1
+rmhb: 4
+nlmq: jqcr + mwbl
+nsgd: 3
+fdvl: glcn + tvfb
+spfj: bqlm + cmgr
+rcnn: 7
+qdss: hpdr + ntdv
+twhn: gsgv * gcfs
+mwrw: 17
+tghw: wccd - czcj
+dsnv: 3
+mbhp: rrgz * ntld
+plrn: 3
+jcht: 4
+cfqf: 2
+rddd: ctsj + jvwn
+bngj: 3
+hdph: 2
+gqtd: fzjn * chnw
+rzfw: wmfd - tpcz
+qbgv: pvmv * rnqm
+mhjl: qgpq * nbwq
+snzv: qlsw * bgqs
+bwsj: vcgm + jszc
+chhf: vzbv * lmpw
+sgjh: vzws + msgd
+rpsm: 3
+gpdq: dvwl + sgvt
+nghg: hllc + zcmt
+wdqz: 4
+bbfl: 2
+djzd: 6
+cszl: 12
+jdmz: 1
+rcsw: tpnv * bswq
+wrvm: 10
+sdcs: gccn * lprr
+hplm: zwsg + ctvv
+gljv: 4
+mwsb: qlmv * tbqw
+zpzs: 4
+pcdm: rdws * hmlb
+hhgr: 3
+svgd: 5
+wtzw: nlmq * dvms
+ndwq: nrwc + jzjw
+zdhd: gbtd * qbng
+srtn: fcbs * pjgr
+cnwd: rjgc * bngj
+lbws: dhrw + bndv
+gjzm: 15
+wpsc: gdwq * csvt
+wbls: 7
+bnns: 5
+qqnl: 2
+vqgh: 5
+mqtd: lzcq + msvq
+rdql: 5
+vrwp: 11
+dlqn: 3
+bvdn: 3
+cpsq: zbhn * zsld
+zbhv: pdbq + ndhf
+lflz: crpc * njzw
+grdq: 11
+jgzh: 5
+nllh: 6
+sqmg: qjzv * lgnb
+cjlz: dqhs * djtr
+sfhm: thbq * tvql
+ncfn: zdnq + vdzv
+rpgr: ghct * stld
+mrpm: 2
+wpgc: hvtb * rcpd
+nbjl: tjrz * nnfl
+bnsw: ffsv * qmcs
+hrqb: 2
+phjv: 4
+smzg: znhz * fdtg
+jqtw: 3
+zsct: 11
+fsqj: 6
+wrmj: vpvl * nlvn
+rrnt: 3
+qjzv: rrsw / fwtb
+pjwv: 7
+wrjh: 4
+grnw: hlgb / wtdm
+fnhs: 5
+lnhr: 2
+pwss: 8
+ddzd: wbzn * fnbp
+vpcb: 2
+zcdd: 2
+chmz: 2
+mmfs: 1
+tfvp: nqrw * mmvq
+pccl: 1
+dzvb: 3
+pbpp: 11
+jnmf: djnw * lbqj
+qdgb: pwww * lmzt
+rjvj: pfwl / lgtp
+vwsc: vjps + gszw
+rdfb: 14
+thbq: 2
+qhhn: 3
+jjss: 4
+qbng: gbdf + vzzh
+ttnz: zwhw - llcv
+lrgz: 20
+dhrw: 1
+dnqd: tghw * cpdj
+wswz: 3
+hdqn: 4
+vmbp: mrqw / qhjc
+hvvw: 3
+jcvr: tnhb * ncrp
+lbcd: 2
+bjsz: tgvd + pgbc
+gtgn: mdhr + ncwv
+pfgp: 4
+lsgl: dcpw * tvbn
+nqrw: cjqn / lpqt
+chzz: rngm + rptd
+wfdv: 2
+lldr: bgpm - vswd
+jcpz: 5
+lqcb: 7
+fwvg: zdbb * pqms
+jjfb: 1
+sdjw: 8
+zfhw: fcrs * qbnd
+gdsb: chqs * rcnn
+znhz: 2
+mgbh: bzwm * qdnc
+wvjc: 3
+scfn: 2
+bjhp: 2
+ccrm: nsvf * mtpj
+psmd: vdvf * frqg
+pzvh: 2
+dgvb: zlrz * qdss
+hqsl: 2
+lzcq: 8
+qbnd: 15
+mclf: lszg - fmrl
+rrsw: hmbb * ffsh
+mscj: dncs / cfqf
+hwbr: 2
+nhjl: 7
+ldgp: 3
+hthg: hlvm + fdpw
+pbnt: 3
+tcch: 3
+gdjw: qrnp * stfz
+gqjj: 2
+ctwc: dfhc * qlgd
+lzlr: qntm * dqzt
+tvfb: 3
+mrbr: 3
+tppb: 5
+mqrf: qrqv * qjcn
+mzpl: tbsn + sbwn
+pzgg: qdnt / lllq
+lhvt: pwqz * bbwl
+vlbr: lhhb * bjps
+glzz: 2
+psqz: hggq + ncgg
+bdrw: 3
+bmvf: nqvp + tnmw
+jpwg: 2
+rtnq: vdvr - zfqh
+srwf: vtdd + vqhz
+zmgg: snfb * mfbn
+lpbn: dvrh * phwr
+rhlg: 3
+gpmg: 5
+mctq: lhll - rhlg
+mnfl: 8
+pgcs: 7
+wvdq: 6
+tbsn: 10
+fpjw: rtvs * zbhv
+bftt: 3
+nqhq: gjpl * zdbf
+qpzf: hthg + znhd
+gbpr: gbhv * fqsm
+nwfb: nnvt * ldgp
+lbqj: 3
+zlzg: twvj + sbnj
+zwhm: qntz * pmzp
+wzbq: 2
+zhzw: 4
+lzcg: jmrn - bqwv
+hdnq: hnvr * mfbg
+vswd: 1
+qqpc: bsff * nfsq
+snfv: fhnd / sdrt
+qjvh: pdfm * nwfb
+vbhj: 3
+nsvh: 1
+gdvj: 1
+jplg: 4
+dcpw: hwgv + nljn
+pcvd: 3
+mrqw: wgbm * wzgq
+jjlp: 3
+hzgg: bqrf - pzdz
+rdvw: qsbl / tcch
+cvlw: rlvv * lsgg
+rgwm: bdbf * hhcv
+bcpf: 2
+dzql: wtdw - zhgr
+qmss: 8
+vlzr: 2
+hrdq: lhmb - tswg
+mwbl: qrsg + bgpc
+vdql: whsm + crbv
+vdml: nfbd * mbhp
+fhnd: wbfz + jbpq
+lbpc: 3
+gqpf: swbd + dlqr
+dgqz: jlwh + dqwh
+mmqs: vbsd + sdhf
+cpdj: 2
+qfsq: ppvw * wggh
+dffn: thrp * wgrs
+wzpn: gpsl / shff
+zhdr: jczd + qtqr
+fdsq: cdls + vspg
+fgsq: qpzf - bhqz
+jpvs: swzp + crgj
+dmgc: nwsl * pgcs
+dwfh: 2
+mjhg: hhpq * lvrz
+bcpz: 20
+vhrl: 8
+tvql: 5
+npmt: 5
+blth: wmmg * wjjt
+wjvn: smzg + cfsp
+rwfv: hhgr + wpgm
+vdvf: 3
+vhcf: zcrq + hvnl
+nttt: gdrc * wlcd
+hpfl: 2
+mfjg: jpnr + tvgm
+tdrb: 5
+vjpz: 4
+jftw: 4
+rcjw: rtwq * qqgn
+zcfr: 3
+zqjp: wllr + mnsw
+bgcl: 2
+mfwz: 4
+dsgc: 17
+jhpm: 7
+hgpb: 10
+bdrs: sdvg * zjnb
+hcvr: 14
+ffpw: mmbz + nsrl
+rdmw: 4
+pvbm: fhsr + hfdq
+mwvv: vlgw + lgvw
+slfv: 10
+qtqr: grdb * ngrh
+qrsh: 15
+whcc: htfn * ptzp
+bjjd: ljjv * pfnv
+qhbz: bnsw - bhgv
+qbzr: nfsl + bbmd
+hbbt: 3
+jhml: 5
+sjsq: lqdz * mzpl
+mqqz: 14
+cbqg: 17
+vnzn: bqbz * btdr
+msgg: dqrb * srcw
+qcbt: 2
+pwpj: 2
+dfhc: 2
+nhlv: 5
+lspg: fmqf * pgrl
+qdzh: 2
+bnrb: gnvn + phpt
+jnhv: 1
+gpzc: cpdm * nvqt
+mdjt: 2
+rpgb: 10
+cmbv: gmsc * zmct
+mmvq: jspg / dwfh
+vcvv: 13
+pbjw: 7
+cjdd: 5
+mlzt: scmm * ntsh
+prpz: zcfj + hnlw
+zhlb: gmhz * hwjt
+psct: snzz + svfv
+fvvt: hnwq * zlzg
+wbts: rrnt * bsjr
+vfsz: dgnn * bchq
+hwpl: bvls * bmfp
+fqcz: 3
+jjlr: 3
+wjvt: zspw + grjb
+lmvn: nrhz + wvrq
+lszg: nbgh + wqth
+zsld: 3
+trjq: 19
+sbht: 2
+mtmn: 2
+rwwn: 2
+cslf: 1
+blzg: 18
+bcnf: snqd * bbfl
+nbth: 4
+vtfs: 5
+drwb: 5
+dnmp: 15
+wnzd: nzgj * vtfs
+wzct: bghw + ctgd
+tbrw: npqm * nppj
+vjrq: 8
+pzdz: jjlr * fbcq
+qgfm: pbnt * hjrm
+vmmb: nmmj + cvls
+mtjp: 4
+szds: rlts * rvjq
+lwhq: 18
+ccpw: vpcg + mlcg
+bhsj: nzjv + lqgh
+cmbm: psct + wwjb
+bggd: 2
+mzqr: jtvw + mdzh
+dhqd: 4
+pjfm: 14
+lwsq: cpfr * wbgm
+nftd: gcqm * cjdd
+zgtj: ppfz + djcq
+jslf: 2
+dhmq: nsft + npdl
+vwwc: zvsf * hbbg
+gmwv: blgr - tnfh
+bhrc: wfcn - jszw
+cvzz: 12
+hghn: wbts * vrtq
+pdhs: 4
+cfvj: 2
+hsgn: lbcc / zqjp
+rvcs: 2
+hsfl: 4
+dgbl: 4
+rcpf: 2
+whsm: thbn + spfj
+ghnt: 12
+vdzv: nrpt * ljlg
+zrds: 5
+nwjz: 3
+zdss: fpdj + qrnt
+wsvj: 2
+fstv: tpvt * jhgb
+nvzh: 2
+zgtg: wgfl * rmpf
+vpch: wfgh * rjfj
+mdbj: 2
+pdmz: gcqw / fntt
+mbtl: jzhz * hzjs
+szfw: 12
+mnsw: 6
+hjrm: qvdl * qjfr
+wpqs: nhrt * zptt
+gtss: 5
+hcql: mlzt + tnjz
+tczm: 3
+gjpl: 4
+jhzp: tmtb / bcjw
+mlnp: hdtj + sswp
+pzhl: 2
+lnpw: 2
+bcpt: zwgt * whcc
+bglj: qsnt + rcsw
+cbvv: 4
+zhcj: jghv * wsbp
+wtwj: 6
+fsrz: tlds * zmdw
+zjfc: ldhj + bvrp
+vhbg: fwvn * jnst
+cvqw: 4
+lfqv: rtrm + pzbg
+tbqh: fvnm + qnlq
+zlrd: 2
+dprv: hgfd - cslf
+mrdr: mhjl + bfgj
+nzwv: zzmh + nbth
+nnfl: fbrs * svgd
+qvtp: fwqf / chmz
+hzjt: mzjw - hlff
+tdsb: tqmd * thnv
+pwfc: 7
+phpt: vzsg * rdwn
+mchl: 2
+wthv: gljv * vgzj
+fbrs: ldqf + qrvc
+gwdh: 16
+ndhf: wngv / ffdg
+lgdh: bhwj - nrjj
+dzgf: 2
+dtwv: rdbj * qgfm
+jzhz: 2
+rvps: dhfl * lvjp
+flrs: 3
+tqmv: 2
+bfzm: 3
+tdgd: rdmp * cwpc
+dwbg: 2
+pwww: nrqc + tfvp
+nqmd: 2
+jzgd: 5
+jwbf: 20
+cjdh: gtgn + rght
+nsrl: fhjd + jmjb
+crpd: 6
+dmgj: hjzn * mqtv
+gqrw: nmjj * ljdb
+hjnf: 3
+gsdz: fvbn * hwbb
+jmqn: lgzt + vvrz
+ndmz: wzzd * dlzl
+nfvn: rmrl * fpwt
+tvzh: 19
+cfsp: gpbm * mnmj
+dfsh: 7
+nzlf: bglj + grqn
+gdwq: 5
+vnzr: 2
+ngrh: 3
+svcf: srms * zvvt
+pjzb: 9
+spqb: mjpz * ndpl
+ntsh: 3
+hqtz: vzmc + zdzr
+nsft: pwfc * gsnr
+qbsq: 2
+qdnt: hwnz - fgsq
+spnd: mjhg + wsvj
+vpvb: 1
+lnpp: 3
+csdb: 2
+sdnn: 5
+srdb: zwwp - npzs
+hnrs: nlwp + cbtb
+rbwb: hwrw + gbgh
+qfzb: 13
+fjch: 2
+hmlb: 11
+zqmq: dpwb + qvrv
+cpfr: 3
+spzw: lzvm + ltbv
+bmwg: 4
+hfjw: 2
+fcbs: pjzb + qwmw
+nlvn: wgrr + tnrr
+mhwb: pccl + dslw
+wtdw: bwqg * mfsb
+gsnr: hplm * cdhc
+dsmv: 2
+nmls: wrvm * ppcf
+nnmf: 5
+hsmp: tvtg + pbbh
+fdpw: ntjw + hrmm
+qhnl: mqrc + jwlz
+sswp: 6
+jrcw: clcw * hqsl
+fwcp: 3
+hhbf: 6
+mcgv: cwqn + wptt
+dpnj: hnmd + bbhm
+vdsh: cfhz * nscd
+cczt: zqnn + mbvt
+zftd: 2
+wqzc: 9
+nmrh: dprv * njtd
+hggq: pstr + zqdc
+mnmj: ddrr + qrps
+hfdq: 2
+wwzt: pjzm * zsct
+qqqp: 2
+qfpm: 5
+szbq: chgc - flql
+jblv: mnfl - qzmr
+dfzr: jzgd + mfgq
+mbvt: zrjh + qvpc
+ptzp: 3
+zgvl: ndvm + zfdc
+npqm: jqng + fdcb
+lnnr: 13
+pzvb: 17
+qwrb: 4
+zcmt: 3
+nrjh: 17
+mlnh: wvqh + prcw
+rgfq: lmsf * gnnl
+qpff: 2
+fvnm: ljmh * hzzl
+jwdl: vsnn + prnh
+fvtz: dmgc + pljv
+znbg: 7
+pgzw: 2
+cdvg: 2
+fjrh: phbq * wfwc
+vjps: qtwr + nhth
+bsjr: 3
+gmrs: tghv * lftw
+rvzl: hnbm + zqhw
+vqmb: jggh * pdbp
+fvvh: 1
+rdlh: 2
+hvtb: 13
+jgfb: 3
+wzrc: nrtv + cpgt
+lcpb: lqwr + ggcw
+zwjr: sfhm * hlql
+qwmw: cbjp + nqsr
+fwtb: 2
+zfqh: bdrs + zslz
+llvp: gmbl + bpvt
+bfnr: rddd * cbmm
+lfdj: dcjj * zmrd
+hlgb: lspg + gnsn
+svrr: 2
+jrps: srct + twml
+rtvs: 2
+rdws: 3
+ntlc: pgsz / gqpl
+qlrn: 14
+rdvt: 3
+root: cwtl + wqpn
+qbmt: nwjz + bhfh
+ldzl: 2
+cdnp: ssjm + dsrh
+hrmq: mqqz - hmnq
+qzmr: 1
+rrgz: 3
+jgfc: bndp * mjsd
+trsc: rpfm - pzvh
+lqdz: 2
+hmbv: 7
+qntm: llvp * rwjh
+sgsh: jqzb + gqtd
+sglb: ngfd * hhgl
+fvbn: 5
+cstd: gqbp / lqcb
+lrsb: 3
+zpnl: llsv * tsvw
+fbrp: 5
+bqbz: fgfw * qmzr
+tbqw: 3
+wfch: cjzm * dmbm
+gcfs: 2
+tsfb: jgfc + vcdt
+jjcv: zphw + cvlw
+qztz: 5
+fvlw: jrtf * bsmr
+lgvw: dbmb / mgns
+pqms: 2
+hvgr: 2
+gnqc: 6
+cjdb: hgpw + hnsn
+gdfn: stgr + zftd
+mfjc: jhdb + vsbp
+qgwz: 5
+hqpr: 3
+qhgl: 5
+bqzv: 6
+sgmj: 1
+rnqm: vvhw * bwzc
+tvpc: 7
+nmfm: 2
+dtlf: 2
+btdr: ngpb + nbcp
+sdjv: 6
+nlmd: 8
+ctjw: qgwz + wtdc
+thrp: ghhf + mhwg
+rdnt: rmzn + jcmb
+stlj: rcgn * csdb
+sjtp: tpqf * wspw
+qrsg: qtlv * gzfg
+gpfd: 3
+nscd: 2
+tjpr: qjfl + gfsm
+hnvr: 4
+qrgg: lqwh * fdnb
+rzlm: 19
+jtvw: 1
+cwqh: 5
+dbjs: vcrs / gphc
+hcsg: hjlh * ccnm
+nzjm: 19
+ctzf: 12
+ltsm: chhf - rmbd
+sfsh: 4
+vlmp: 2
+clwl: zgdm + vjrq
+fthz: 14
+pflg: 5
+hwgv: tndq + bszl
+hncv: 3
+cdgn: pzqs + vfgd
+llsv: qwlc + pwmv
+dvlr: 3
+dhgd: 1
+rfbh: 5
+tnvq: 3
+rqzf: 3
+bwvh: 2
+mjsd: mdtd + qfsq
+nhrt: 13
+mzbh: 2
+mpcm: 8
+rght: wzpn + fsrz
+crpc: 5
+flzq: pbmz * lfhj
+lwgc: qbmt * mzbh
+dhjr: 5
+mcvl: fmrd * tbfd
+rrbn: 2
+zzmh: 13
+gmvh: 2
+swfb: gtss * srss
+lgwl: mfbs + zvrh
+rfsp: 8
+wssz: jcdj + mtph
+qrtt: 15
+fjbn: 2
+hpfj: grbh + mbtl
+gshm: 5
+gprl: 2
+zqnn: lrgz + mgfq
+dqhs: 2
+dqrs: 2
+wbrs: zvbp + wvfc
+qntj: 4
+gsvm: 2
+nmfn: 13
+wsqq: 14
+ddqj: 3
+tswg: 5
+wspw: 4
+wqth: dmpn * bcrj
+wngb: wtzw * bwvh
+fhbb: 3
+mtph: dfzj * fqph
+clwr: srdb + hfqn
+tpvt: 5
+lfsn: hgql * hsmp
+zjnb: hfcn * jcjb
+tpnv: 2
+wllr: 1
+rngm: bmvf + bfrt
+pbfb: mzzc + jmpp
+pfpz: 10
+hhtp: jsqp * gwcq
+mcht: gmvh * bsjb
+vdqm: 12
+tbnq: pwss * zvvw
+nqsr: 1
+ljmh: 4
+nwcz: gnqc * sfsh
+zmdw: wdpf - rzfw
+rdrz: 6
+nlzl: 17
+gzzs: 12
+sgbt: 17
+pqsd: 4
+ngnz: snfs * qqdf
+zgcq: ndwq + rnnt
+gfdf: 1
+rlcr: zgcq * dsmv
+sphm: srqw * qghp
+vndq: jdmz + zwrg
+dvcm: 16
+qwrv: trgs * ctjw
+pgrl: fhpw * njws
+ltbf: 3
+zwgt: 4
+cdsv: gmjg + mwvv
+rcwb: rmwq * dntt
+fmrd: 2
+hjzn: hlnq + pvpd
+ctjj: 4
+znwn: 5
+crgj: 1
+rfbp: 12
+jpnr: 5
+mlwg: grdq * clwl
+dbff: ccwm * vhrl
+ldww: 11
+qqcb: 2
+tfzd: fcsb + scvq
+vspg: tdrb * hhgm
+snhf: qnqw * rjvw
+hcnl: 3
+crdd: 2
+wspn: gsbb * lpvn
+szhd: bgvs * rnfh
+jhgb: jjqr * hpfl
+sgtf: 6
+hnlw: 1
+pssr: cpqr + mqtd
+vfgd: 2
+whpp: dndw * fjbn
+jznl: gqrw - vjbb
+qzlb: dpzq * lldr
+crbv: ptvr * qcbt
+wtgf: 2
+bdzj: tvpc + tmfz
+lqwr: wpgp * spnd
+bfgj: spln * dsnv
+nppj: 5
+vnjb: 3
+jggh: tqmz + prsp
+nfjw: qzrj + wvjz
+mfvj: 4
+wnwn: zgtj * svfw
+jsvv: 2
+rfwf: 2
+ntdv: 2
+ndsb: vrwp * zrds
+scml: 3
+gzwl: vdqm / ptch
+ggtm: 4
+ptgl: gwmq - crpd
+mbvl: lfsn / dhbz
+mhpg: hfpd * jmqm
+tdsq: ztjm * zwms
+ljdb: vztc + ztdj
+tzhm: btdv + hllz
+dbqs: 3
+nlwp: dpqt * hvgr
+nnmt: 3
+hhpr: tzlr + rdcv
+pdrj: 2
+wgqg: snzv + tmqq
+nzwt: 7
+nbcp: jvhd * dmfq
+gmsc: lhln - vpvb
+jvjr: 3
+wjjt: 4
+bbwl: 11
+ltvf: tnhf - qblw
+pnjs: nnrv / wvdq
+gbtd: 4
+stgr: 5
+gwfs: 5
+fzcl: zwlg + phbj
+srcw: zpnf + scpn
+nrzs: 6
+mrqc: mwsb * hrnj
+pfqz: 19
+zbnc: 1
+fdnb: 2
+qjfl: qqnl * zbwm
+ctdn: 4
+zvbp: qmss * mdjt
+tdgc: 2
+tvbn: 5
+tmqq: pfzs + rzsh
+tpqf: mvth * phlh
+nflf: chtn + dvzz
+cggg: 4
+tnfh: 3
+wmmg: 2
+hfqn: fvvt - hjpp
+chgm: vbzg * gpnz
+vzvc: 2
+fwsg: smwp + hbcm
+njgq: 2
+qvcf: 9
+gsht: 2
+nhfd: 1
+pnfn: pwrl * hfsq
+hmcv: 9
+smtz: zdss + pjqd
+srms: 8
+wgfl: 3
+snzm: mmjl * tdqj
+jghv: 17
+pbmz: 2
+wpgm: 11
+dmqn: 3
+drrz: whgq * jwdl
+gnnl: 2
+wzlh: cwqh * pflt
+tpcz: 2
+nzsn: 4
+hgqm: 3
+qczc: 2
+svfv: 2
+bpvt: gtpl + mlnp
+bqgf: fbmb + qztz
+chqs: gqtq + qdzh
+jjrb: 11
+ppvw: clwr - nllr
+qbpl: tbnq + sjhs
+hwwj: wwvz + crhc
+vrtq: 2
+lvrs: 2
+bhsg: 12
+pwzg: 2
+fldv: bncd * zhcj
+vcgz: nzjm + pvqg
+zphw: sbqg / sqjc
+frqg: gdrq + rfbp
+cpzq: jbnp * bbsc
+cnzs: bbwq * cfvj
+gbgh: 2
+jhcw: rqzf + hsfl
+rvbm: mhpg + zbnc
+wmqd: 2
+fbbc: sgbt * cscj
+lhhb: 3
+wqbh: tdvn * gwnl
+mzlb: 3
+vbsd: cndv + ggtm
+npdl: nftd * sfzl
+rvww: ljqs * qgqt
+pvfl: 2
+hvnl: sdcs * mfvj
+shgc: hqtz + vtbr
+zgcz: 2
+chpv: 13
+mjsr: 5
+prnh: 2
+nnvg: 2
+lgnv: wtrq * tdjw
+dbmb: fhjf * jrtg
+dqrd: qdvp + sjpj
+dldm: 3
+rjgc: 3
+lgpn: 5
+bghw: nvml * grpp
+tszz: 8
+mfdc: qffz + vhpb
+cmjz: wwzt + qslw
+vbnt: 2
+jtzt: wwjt + mrdr
+cpdm: 5
+ptcr: 2
+gsbb: wmbn + jtdn
+sbgm: 7
+tnmw: 3
+vvdq: 6
+jtdn: 12
+crdr: 4
+gqdf: 1
+qvrv: nqvw * ccpw
+nmqh: 20
+qvfp: dgwp * srrn
+cbjp: bfzz / qvfr
+jpgb: 2
+qzcf: 2
+qmcs: 3
+mfbn: 16
+lftq: zpzs * snsq
+sftc: 15
+hbbg: vdsh + stfr
+fpzl: hspb + nbjl
+zszf: tnrj * ndmt
+dvzz: 3
+zwhw: rlwz - sdjw
+wwvh: 11
+djnw: 3
+wtft: 11
+qjww: jjrb * bhrc
+pstr: hpfj * nflb
+nqdr: 17
+vbwg: 3
+qntz: 2
+pqgl: 20
+wdcs: pcjl * wncv
+wqzh: 6
+jpdl: 2
+fwvn: lfqv * vmsm
+fdpn: rqbl * hprr
+rpjh: jhcw + vfsz
+cqjf: wrmj + nqtb
+wbzn: 2
+mfbp: 5
+ccpp: 15
+bwqg: brrc * wswz
+fgpl: srjb + pfrz
+ghsm: fstv / bggd
+nrnc: 3
+lsts: 2
+nbfq: qzgb + rvps
+mvth: 2
+bmlr: 2
+dpqt: 11
+dsnf: mtmn * pbvb
+bswq: mlwb + gstn
+vrnw: vszh + nmvh
+wctc: hmhm + hpgl
+qfng: sphb + dmgj
+zpvn: 3
+zwwp: bjjd + wnch
+mlfp: 17
+dqzt: mpqd + qrfp
+msgd: mmfs + sgtf
+wvzz: 1
+nfbd: 2
+cscj: dcwd * cmws
+hlvm: qjdg * hrqb
+gcqm: 5
+bvpb: gpzc * znhg
+bqwv: 1
+gdhj: hnrs + ndld
+mjpz: 3
+mdtd: hgrg * bpsw
+nrqc: rhpz * djzj
+bqhb: 5
+fwqf: vljb * tmqs
+vddp: ddsh + nvrn
+jdjf: 12
+ntld: wrqv + fvlw
+jhdb: psmd + dwbd
+vmsm: 2
+pbjg: bmlr * jgcr
+vbzg: 3
+pjgr: 19
+ztmz: cvfs + cjrt
+fqnj: qdgb / srpn
+lqgh: dtlf * vbsq
+qrzs: bjhp * drcq
+rpnn: fftj + rnpp
+vlrp: 13
+dqwf: 3
+llzm: 3
+bnrc: rjqf * hmbv
+sqjc: 2
+vszq: 6
+bvvr: 2
+qchw: jjhj * qhjw
+mcwf: zbjz * mdbj
+bchq: 8
+pjqd: hnft * hwpl
+chnw: 4
+zvsf: 3
+rfbf: vlrp * jvnz
+ptfl: 6
+fgfw: 5
+hjvp: 5
+pfzs: qlhn * ngnz
+ncwv: wdzl + gzzs
+wqhr: nzwt * dgmq
+srrn: dzql + wvvf
+htct: 4
+qzhr: 2
+spsb: 7
+vjmp: 3
+tghv: bwlr + rdvt
+lcwc: dcwc + mwhd
+wgzr: 4
+tncv: 8
+hwbb: 3
+czcj: rtnq - wpgc
+jmpp: 11
+nnpd: dddg + ldlh
+rdcv: 8
+bswt: fjdj - bmjp
+glqd: 3
+pfnv: zmrh - rcjw
+pmzp: wsqq + wfch
+mhcl: 8
+tlcr: 2
+smnj: 2
+phwr: 3
+gstn: 1
+hlnq: 8
+pfsl: 3
+pvqm: mbvc * vcqg
+gfgf: vgvf + vzzg
+ffsh: 17
+bcsb: 4
+zdnq: vzjg * nqhq
+frml: 15
+lpqt: 2
+hmbb: 2
+ggcw: nhww * hhtp
+jnvg: zllp * zpsg
+jjhj: 2
+swbd: httg * tvzh
+dnst: qdgq + trpn
+nvrn: 2
+wscd: lltb / bfbq
+lncq: 7
+wqsf: gcgj * wtft
+rjqf: 3
+bmjp: 6
+vvtc: whpv + vqpl
+pflt: 2
+lglf: 3
+bqmq: 2
+jzjw: 8
+vcdt: dgvb * jmfh
+nrtv: ltvf + cttw
+whgq: jmpm + rdvw
+jqzb: gqbd - cbtf
+tjzf: 3
+njgm: 2
+ljjv: dgqz + gdhl
+qhjc: 5
+tjvd: 2
+dpgf: lhlm + rtsd
+nnzw: rwfv / mhzc
+bqsp: 2
+sgrg: frcf / wtbh
+bvcw: ghzl * zjfc
+blzs: 2
+zptt: 3
+vbcw: 2
+pcbw: dvql * jjlp
+fhsr: htlf * ptcr
+lqmz: 5
+pcjl: 3
+whnr: qbgv - jhzp
+dhwp: 5
+wdbb: dgfb * pwqt
+spst: dmzh * gpdq
+qfln: 15
+qdgq: qbbv * lbws
+dmbm: 3
+rdmp: chgm - qpln
+tbjc: 7
+qdjg: 5
+qwhs: wqrw * wrhb
+mhlg: pfmm * rjtt
+lhlm: bdmv * vvdq
+rhpz: 5
+tdgg: pcwf * wbrs
+sdpl: 2
+hpbs: wsvh + nmls
+clzr: mtvq + lgnv
+bqjb: 2
+ndvm: 8
+jbnp: bjsz + cvln
+trgs: 2
+hmtq: 5
+nrhz: 1
+fmqz: mbzb * ccpp
+rptd: llvn * pbpp
+bdmn: wrjf * pqgl
+lfhj: 5
+jspg: plrn * qrgg
+fcsb: hpbs * lmvn
+rmzn: sfzp + mgbh
+tjbd: 7
+sfcl: jhpm + fnfj
+pjbv: 3
+tgvd: rcqr + rfbf
+ghct: vhcf + nqcg
+nstm: zhlb + jznl
+dntt: 2
+qzrj: bdmn / jpwg
+hfpd: 4
+hjgw: fgpl / thhz
+whwn: 5
+fvjj: cbbb + rfct
+qgmf: pvqm + dhgd
+lfmj: grwc + pglf
+tgsv: 3
+bsmr: 3
+jlbz: wvzz + nbbt
+vlgw: mcvl * btzm
+bhgv: 11
+jwlz: 2
+gpzr: 2
+lmbw: bjwm + fllr
+chzq: wjvt / fjfz
+snqd: 3
+wzlt: sqnl + pqrl
+vdjs: hcsc * qhff
+dmzh: 4
+fjtf: fnnv + fmhs
+pffl: 2
+mqrc: vhvn + hvvw
+rqbl: chzz * llzm
+dzqf: 20
+wqjt: 2
+bhqz: pcbp * mmgq
+wmmj: 2
+qnqw: 2
+wggh: pdlg * crlm
+prcw: jvjr + mfwz
+slzn: trtg + dnmp
+vszh: 12
+ljzg: 6
+tmqs: 2
+zbpr: vnch * wnjm
+hgrg: whwm + wngb
+mgrs: ddqj * lrhn
+crqr: hfjw * hmcv
+tnjz: mchl * szds
+rtwq: szsg + trjq
+lvch: 2
+mdhr: bzmq * nbnp
+mflf: qllh + zjcb
+qctf: cdsv + tzwh
+mwbs: qjvh + prtn
+chgc: jqlz * lzsf
+bpsw: hgpb + mhbp
+wccd: dqbg / fnhs
+qwzw: sbgm + dqrd
+jhdp: plhb / bfzs
+sfwr: tfbv + dddc
+ztjm: 5
+zrpj: nhqm + mflf
+fhjf: 3
+dbpj: fnfm + lnhv
+zvzt: jwbf + znnv
+gcqw: hrjr - hcql
+ptlp: 2
+vjqq: 3
+pmbd: qvfp + bcpt
+bvfb: 5
+cmnl: 6
+tsgd: 3
+hdtj: 4
+zcmz: pqwm + tdsb
+frcf: qssg * gdfn
+nllr: wdbb / gshm
+wmlf: 2
+pmmz: rpsm * czfc
+lmpw: 4
+qvmp: 3
+dvms: 2
+jscb: lvsl * lnnr
+cztw: qtjw + ctcj
+snfb: 2
+qzgb: crdr + srwf
+cgtq: gjpj * fdvl
+srpf: dqsj + nnvg
+wngv: ntlc - tdgg
+gbdf: 5
+psfj: lgzj * mrzg
+scpn: lrtq * rdql
+cslr: tbrw + vnzr
+tvtg: 3
+wvqh: nvzh * pvbm
+pvqg: zhzq * jqqc
+nvgn: grnh + gdjw
+wtrq: zczj * mmlj
+bwzn: 1
+hvld: 3
+dmpn: hhfj - qbnt
+dnbb: 5
+plhb: psqz * rfsp
+rmrl: 3
+sdrt: 2
+zdzq: 10
+prtn: zclm + nvqd
+fjfz: 4
+hnbm: tmgv + ldgr
+qsfc: dqgd * dhwp
+ccbn: 5
+pdbp: wzlh + chpv
+fhjd: fdpn + gbmt
+cnsf: hjvp + cszl
+qvwc: nrtl * rnrv
+vfjq: 2
+rfct: qzlb + vvnr
+pdzg: 2
+llqd: bvcw + cnsf
+jmrn: rszz * hgln
+nznc: 5
+ccwm: pnwc * wvwh
+dncs: dhdd + sjsq
+wsbp: 3
+nhth: 1
+dcbh: 3
+nbgh: dbwd * wzlt
+msvq: scpf * ggrh
+rfbl: fzcl / jplg
+phlh: zntc + qzsc
+lqsc: wrsf + djzd
+rlfd: 17
+hgpw: rpjh + ghvb
+bgpc: nfdl - smtz
+tcdz: 3
+hrbb: qzcf * ldww
+dlzl: 2
+pmvn: 5
+frzt: 3
+zbhg: dbff - mhlg
+zvrh: 14
+mljl: 3
+prcb: 3
+rtvp: 5
+lpvn: 2
+vzzh: 2
+gwnl: 8
+grbh: 5
+mfsb: 3
+gcbm: cjdb + dgbf
+nhjz: 4
+szdm: 13
+bfzz: qwrv - bjgq
+sqwr: lthz / pvcj
+grdb: 2
+ghvb: gdsb + qwhs
+zbwm: 7
+jcff: dhmq - cczs
+zsfh: 13
+htfn: nlzl + fthz
+bhjr: mcgv + sgrg
+nsvf: 3
+pmlv: nttt + jjjv
+ffdg: 2
+hnqg: 12
+jcdj: wvqr + nlrg
+wrqv: 2
+sbgc: nflf + pqsm
+tzlr: 9
+wwjt: 15
+vvfg: jhfw + nlvp
+lrtq: lzvv - hvql
+jvnz: 2
+sphb: swfb - hlrd
+dcsf: jnvg - mcwf
+mznv: 12
+lsgg: jhpf * fvjj
+wjtg: 7
+rltj: 3
+jdmn: 7
+nnrv: hqpr * qzbh
+lftw: clbj + nwtz
+gmjt: nttg / rcpf
+sdhf: 12
+tndq: shgf * dvlr
+dcwd: 3
+ggmn: 4
+qblw: 2
+wwnn: 2
+dcwc: 20
+vsjs: tzhm + sgsh
+qvdl: 5
+bbgf: 5
+drbd: 3
+lgnb: 3
+vgjg: wvzm * wqzh
+bbmw: bcnf + bwzn
+gbth: rfsc * jhjt
+gcws: hptp + nfvn
+hwnz: dcsf / mrpm
+qfmd: 3
+bzmq: 11
+ptvr: sbht * qfzb
+wncv: 3
+bftb: 3
+qjjg: bnns * hwlg
+zvvt: 4
+zfdc: tqmv * fwcp
+mmbz: rdlh * pssr
+ldqf: jgjf + vmrt
+fspz: pbjw * whcr
+jszc: sbqh + pfpz
+srjb: frml * mbvl
+bvhj: 2
+wzvl: bftb * dpnj
+jhwf: 6
+bwhj: 4
+trpn: sgjh * plpc
+dvtz: htct * sgnb
+nqpw: 2
+wnrb: 3
+ccnm: nnpd * pjbv
+llvn: hrgr + pzzs
+hrgr: 2
+fvtv: 2
+hmhm: tjbd * qgpr
+gnvn: ptfp + cjdq
+rtsd: 3
+gpzm: 3
+vzsg: 3
+nvqd: zgfl * cwpd
+hvlz: 2
+rmbd: 1
+rcqr: thfd * cggg
+qgpq: jjss + jwlq
+nqcg: rvzl * zcfr
+mmgq: dqst + pjff
+zgqn: 2
+qjcn: fbtc + rgfq
+vhbm: 8
+nbbc: 8
+hcsc: 3
+gqsw: 1
+snfs: 4
+wclz: 2
+pfwl: jmqn + sqmg
+gqbp: bzrp * bbmw
+snsq: mhwb * bcpf
+jfzb: 3
+dsrh: ctzf + tjzf
+gnsn: lfnd * vbcw
+ltbv: bnrb + gdvj
+zbzv: 2
+srqw: 5
+lzhc: 3
+fbbt: tpmm - jcsc
+lgzj: 7
+jlwh: stlj + rpwp
+ljlg: hjvv + fspz
+sfzl: mnds - zcfc
+rfsc: 2
+gphc: 2
+nmjj: 2
+ggrh: 7
+hptc: 5
+lmnz: 17
+jmjb: rcwb / cvqw
+rcgn: spsb + ctjj
+ncgg: fbpf * bhjr
+cmlg: vtvw * zvfn
+dhdd: jsnr + lsgl
+jcvs: 3
+tndh: 2
+jczd: 1
+nntd: 5
+qdvp: 7
+tnqq: 2
+drpm: 9
+fjnf: mdfs + mbnf
+pqhs: jhml * wpfz
+ztsr: 2
+ldgr: 12
+ndlh: dhjd * lclm
+hfcn: 2
+fcdf: hjgw - spzw
+gjjz: jpnd * wtqw
+dwbd: 10
+hgql: jjzf + qhbz
+sqwc: vrhf * vdql
+lsmb: qwzw + rrlr
+qdnc: zhzw * wlqc
+vzmc: 5
+vjsj: 2
+tdjw: 4
+jtjc: dtqn + szhd
+dvwl: lfhp * scfn
+phbq: 2
+twhm: 18
+mmlj: 5
+zwqm: 5
+wzzd: nznh / njzv
+hptp: tbjg * rshd
+wqpn: zcdv * hdtw
+jqcq: 9
+hprr: 2
+lvsl: 17
+rzsh: wrsw + qrsh
+cwrl: ddzd * wjhh
+clbj: 11
+srss: 4
+tnhf: pmvn + hbbt
+mczd: wsbb * srtn
+mhwg: 7
+zdgc: fzbb * nscz
+jnst: ppmm * mrbr
+bvvc: rdfb / wtgf
+zpsg: 8
+qlsw: pwbn * fhbb
+cqcl: 5
+cwvn: jwqs + fjtf
+jpnd: whll * srpf
+zcfj: dfsh * nfhz
+jhjt: pmlv + pgff
+djzj: 5
+lvrz: 3
+tcvc: hhbf * rwwn
+ctdz: hsnj + ztmz
+tgvq: 5
+wtgn: wnlv * cjnh
+qbjl: 13
+gqpl: 3
+jhpf: 3
+jqqc: 2
+znhm: 12
+msvz: 2
+fbcq: 3
+nrjj: pqpl * ndsb
+zzjg: 3
+vmrt: 7
+tpht: 4
+dqwh: 3
+qssg: 2
+cvls: zcjf + vgzr
+qrqv: 2
+qlgd: fbft * fwsg
+gcdm: bvvr * zcmz
+pgbc: 16
+ldrm: dnst + sjtp
+tdrg: 2
+qrnt: snbp * jlbv
+ppcf: 3
+jqcr: bgvb + vpch
+gwmq: dsgc + gpzr
+hmpd: wqqd * nqwj
+fsdc: nvth * hmtq
+hpgl: cqgb + ldrm
+pljn: 1
+fqjn: wrjh + mfhw
+blgr: hptc * zbzv
+dgfb: lgwl * gwfs
+hhgm: blzs + cqcl
+nscz: zgqn + sftc
+bzwm: 6
+rnfh: 8
+mbnf: mczd + jhdp
+vcrg: mrqc + jscb
+rwfb: 19
+mpqd: 5
+dsjl: 5
+ldhj: dhjr + cbcf
+psvh: 1
+wvjz: bzdb * qctf
+gszw: 4
+cvfs: ffpb * rpmf
+bjjq: rbnf * rdrz
+dtqn: dmjf + hnsh
+thnv: 15
+qnbz: pcbw * fjnf
+nbnp: 5
+lzrr: 2
+hrjr: mtjf * wctc
+ddrh: 12
+htlf: 5
+nnvt: 2
+bchr: 3
+jghr: fbrp * gdrd
+hrmm: vnzn - mwrj
+wgrs: 2
+lzhd: trsc * pjwv
+nfsq: 3
+crlm: 5
+ltqm: pnjs * qjjg
+zmct: 5
+flws: 3
+qtlv: cbvv * fqnj
+bndp: qsfc + qpnw
+jpnc: 2
+lbcc: httq + lwzd
+sqnl: lvch + ccbn
+cdgh: 4
+qrmn: 2
+gsdr: 5
+dqrb: 3
+pgsz: fjrh + cpqm
+mlbd: 2
+ctcj: pdzg * dhqd
+httq: lbtm - mclf
+jglz: nnzw * zcdd
+dhsj: lmwb / hfnn
+tbmd: 2
+tmtb: gtgz + fpjw
+wnch: pntq * crdg
+nwtz: bwhj + blth
+dftd: gjjz + twhm
+rdwl: wgzr * gfgf
+clcw: 4
+bfbq: 4
+mhbp: vjpz + qvcf
+wfwc: lflz - zwbt
+pbbh: 3
+vjbb: vjqq * fhnj
+bdbf: cstd * lglf
+qvpc: lqmz * lmnz
+gjdv: 2
+tqmz: 1
+hfrg: qfpm * njgm
+mgws: 3
+bhwj: nstm / pcvd
+snbp: smnj * bqvm
+wnrr: wpsc * bgjv
+cfhz: 3
+wsbb: gjdv * fdsq
+gdrq: hdnq + rznc
+lnhv: fpbl * nnmf
+bqnw: 7
+hbdm: 10
+vtbr: lzgl * brlr
+cpqm: sdbf + mlwg
+jsnr: 19
+cjrt: 3
+tzcs: 12
+jcsj: 2
+rwjh: 2
+njrb: hqlp * lwsq
+fntt: 3
+nncm: 2
+jhfw: jpvs * mlsj
+trtg: 8
+mgpq: vlsj * nswg
+tqbl: 2
+vgqg: 8
+hwjt: njrb + vfzp
+ssjm: tgnd * tnqq
+zbjz: ndsj + tncv
+qhtc: 1
+wmbl: 2
+bgvs: 12
+gbmc: 2
+wvpv: rzps * gsdr
+hwrw: wqzc * wnrb
+mtpj: ndmz - vdjs
+fjdj: wdcs + lzvf
+svtq: 6
+wvqr: dbpj * ncqc
+gpbm: 2
+qhjw: grwq + vgjg
+gtpl: cdnp * vjsj
+jqlz: nmrh + lhvt
+swzp: wmbl * tsgd
+zvjn: llqd + sglb
+hgln: 3
+cwpd: 5
+zdbb: dncl / wbls
+jtpl: fvpb * sppp
+mhzc: 2
+dzhc: 11
+nqvw: 5
+btvn: 1
+nsbn: 1
+tpmm: hvgw * rfhf
+rrbd: 1
+sfvt: 11
+gdhc: 19
+mfgq: 2
+zfvq: cmbv + chrm
+qrnp: 2
+mnrq: 2
+cmhq: 6
+fjbt: 2
+smwp: 9
+fzjn: 5
+rrlr: 5
+lscf: 4
+cttw: 16
+wtdm: 2
+slws: dfzr * wvpv
+nlvp: 10
+brrc: lvnw + jjfb
+bzrp: jhnv + wtgn
+mczs: 2
+pgff: cpsq * sfcl
+zcrq: dgwg * vfjq
+frmf: tphn * lmbw
+vcrs: gcdm * cgrz
+nrtl: 11
+njtd: nsvh + wszg
+mfgw: 16
+nrwc: 3
+thbn: wqbh / mhcl
+dvln: 2
+wpfz: 19
+rpmf: 3
+zlnq: 3
+hfgw: rgwm + frmf
+qnlq: zbhg * pqsd
+vlqt: mmqs * gqjj
+qwqw: 2
+stld: 2
+vzws: 4
+rdwn: 3
+rggr: gqfd * dpgf
+scmm: nnqw + wdqz
+wqqd: 4
+ljsq: 5
+cbcf: 8
+fbmb: 14
+wzpm: dvtz * qqqp
+bgjv: 2
+jzwf: wbqv + bhgh
+dddc: fwvg + zgtg
+cjqn: 14
+wggv: 5
+qrfp: 2
+nznh: bdzj * qnpm
+cjzm: 5
+tvfs: 9
+hmnl: 5
+fdtn: 2
+vlsj: svrr * dcbh
+lmwb: pbjg + bhsg
+fpcq: ggmn * pwzg
+vmjq: 10
+cbtf: 6
+bdmv: 6
+qctm: mtvg + crqr
+hvql: 2
+wgrr: 1
+fvpb: 14
+gnbz: qbsq * pmbd
+mfhw: btvn + ntfc
+gcgb: qbjl * pffl
+qghp: sdjv + zcbm
+zqdc: rctp * qvtp
+hpdr: vmbp / lhpr
+nwsl: 3
+dddg: 3
+lvlv: fvtz + lcwc
+vblw: 13
+vbsq: rrbd + fsqj
+rszz: 6
+gfsm: znhm * hdph
+zslz: zwjr + lnpp
+rlwz: rlcr / wwnn
+qfmj: 2
+pvpd: bnrc + dfcw
+mrjt: fmqz * blzg
+humn: 831
+zcjf: 5
+rfhf: mwpv * wmlf
+vvrz: lzhd + bhsj
+bgqs: jcsj * pmmz
+dvql: 3
+ppmm: fjbt * bvdn
+zvzq: 3
+htjw: vqgh * dtsr
+grnh: wzct / jrmg
+ggtv: qsvl / wqrj
+fpdj: slfv + bchr
+wrtr: mzqr + bwwv
+rmpf: 13
+vvtm: rfbh + nlpb
+lhpr: 2
+ndmt: 2
+qpbz: pljn + njpn
+nqlj: 2
+qmns: 4
+rjdr: hrmq * dldm
+pzsw: 6
+ppfz: 4
+flhp: wscd + lftq
+zwhr: vvtc * spvs
+rcpd: 7
+dgbf: zvdr * ptfl
+gwcq: 3
+dgmq: 2
+jvhd: 2
+bsjg: lgfh * frzt
+nfhz: 3
+grpp: 11
+wcsc: 2
+njzv: 2
+zrjh: rzlm * nmfm
+cdhc: dgbl + zlnq
+zwbt: tvfs * mgrs
+cbmm: 5
+bwzc: wgqg + nvbw
+vdvr: wrtr * wpqs
+ctvv: tbzw + gscq
+fqph: 5
+hzzl: drrz + jrps
+fnfj: wclz * jdjf
+mwpv: jglz + ttln
+sbcr: tjng * tmfd
+fpwt: 7
+mvwr: vddp * hfgw
+pqrl: zjhr * vjmp
+bjps: 2
+vsbp: fbbt - lncq
+fmqr: 5
+gnlb: 2
+nlrg: 7
+nswg: 2
+jrtg: dwbg + ngtr
+gmhz: 5
+ghzl: 16
+gngz: 2
+lvdd: 12
+njzw: pttb - lmgb
+mlcg: 1
+zntc: 5
+qqdf: 2
+fdtg: 14
+bfrt: zmvc + tlzb
+wnlv: dftd + jtzt
+wnhv: fvtv * ztsg
+zvfn: 5
+nmvh: 5
+lhmb: vwsc * hmpd
+dgnn: 2
+sbnj: bthl + cjdh
+httg: 7
+lnlw: 17
+hlff: 5
+pljv: vqhg * znwn
+pcbp: 2
+tnrj: 3
+bbhm: 20
+jfln: 6
+nqvp: hblc * grcq
+qffz: 3
+mmjl: 16
+cttf: spqb + zdzw
+nbwq: 2
+wrsw: 10
+njpn: 10
+bfgs: 7
+vgzj: gsjp * hbdm
+lmwf: rwfb * wqjt
+ffpb: 3
+zcfc: 4
+flsg: 2
+bvrp: 2
+hnsn: rggr + rldp
+jjjv: mfgw * bqhb
+vcqg: 3
+fftj: vwfc * vcvv
+vcgm: 12
+gbhv: pdrj * glqd
+btzm: 4
+jmpm: wcgj * gsdz
+bbwq: 4
+vcdj: 2
+lhtl: mzlb * mtdz
+ztsg: vmmb + zszf
+gsjp: 2
+dlqr: 18
+rspv: 2
+ndpl: 2
+ffsv: 11
+ltcz: 4
+wjhh: 12
+zwwd: 5
+wmjv: 10
+qbbv: qntj * ltcz
+hnmd: 1
+qsnt: 3
+nbbt: rmhb * zdzq
+bvwm: bwsj + cvjc
+wntp: tsfb - vhbg
+fqln: nzpp * hvld
+gdrc: 2
+dqst: 5
+pght: wbmd * qnzs
+pvcj: 2
+pwrl: fqgm + qctm
+zgfl: 7
+vzzg: 8
+fzls: wwvh + dffn
+tfbv: bbgf * pzsw
+vdzq: sdnn * mznv
+bntb: swfp * gcws
+dcjj: 9
+jmqm: zrtt - nnmt
+czfc: 3
+wtbh: 2
+pcwf: flws + tbdf
+rpwp: 3
+grwq: hrbb + vwwc
+spvs: 2
+nggf: wqhr - rltj
+jrmg: 2
+jsbj: 3
+tjng: 2
+tbjg: 20
+jzcp: 11
+gdrd: 5
+nzjv: 5
+bzbg: 2
+hzvq: tpht * stpr
+hhgl: cmhq * rvcs
+jvwn: 5
+lthz: jslf * cmjz
+sbqg: pdmz - wqsf
+fqsm: qvmp * mnrq
+mrzg: 3
+rgnf: 9
+rzps: 3
+dqgd: 4
+sjpj: 3
+gmbl: mljl + bcpz
+qqgn: 2
+tmjp: 4
+nvqt: 3
+gqbd: 18
+vhpb: hfrg + bllh
+fdpt: 3
+rqcz: 5
+rmwq: jlbz * crvv
+qsbl: rbwb + dhzq
+pzbg: wccj * rvww
+nhww: hwbr * tpdq
+zdzw: qhgl * ljzg
+vvhw: 13
+rvjq: 2
+ngpb: 3
+qnzs: 3
+wtdc: pzhl * bcsb
+gqwr: 2
+pnwc: 2
+mrll: 2
+bhfh: btjm * hqbs
+jwcb: 2
+jrtf: 3
+rfph: 2
+wmbn: rjdr + rpnn
+glcn: 8
+lrhn: jcvr + jzmj
+wbfz: gcbm / lrsb
+qjfr: 3
+lwgr: gnbm + tcdc
+btqn: lzlr + qfng
+nljn: 15
+dqsj: pdhs + bvvc
+hjvv: bvpb * cwvn
+nnqw: tdsq * hdll
+nhqm: 3
+zdzr: 4
+mtjf: 2
+zllp: hsgn + gmrs
+wlqc: 2
+lvnw: 6
+vdmg: fpzl * ptlp
+qlhn: 2
+gcgj: mbff + wnrr
+wnjm: lsjd * jgzh
+nvth: gpzm + tszz
+csvt: 5
+lgzt: 5
+jfvt: 4
+pzqs: 10
+fzbb: 2
+thdn: lqwp * szdm
+ftvr: 11
+ldlh: 8
+npzs: pqhs * gwgz
+hcwm: 2
+qtjw: qgmf * nrnc
+gscq: cdgh + ctwq
+ptfp: zvzq * zhdr
+chrm: lsmb * mtpd
+cwtl: gprl * whnr
+whpc: nqpw * jgfb
+qzbh: btqn + fsdc
+tdqj: 2
+swfp: 2
+mtdz: 7
+lbtm: vtbj * qdjg
+qpnw: 3
+vzjg: pcdm + hcwm
+fmqf: snzm / vzvc
+bcrj: 2
+hhft: 2
+wvwh: gnbz / fpgb
+gtgz: gbmc * dsnf
+rshd: 2
+fpbl: 2
+whcr: hrdq + glzz
+tjrz: 5
+zczj: 5
+gsgv: gqsw + hcsg
+pdcg: 2
+wzgq: 5
+tpdq: 9
+qzhl: vlmp * jcvs
+vtbj: dbjs + vcmw
+pdlg: 4
+ljqs: tdgd / dzgf
+hjlh: tnvq * vlzr
+qgpd: 2
+pqrd: tlvl * jlbw
+tlcg: 2
+mgns: 3
+dgwg: zrtn * dmqn
+pntq: dmtb + zqhb
+lclm: 2
+bncd: 2
+vtdd: hzvq * pgzw
+lvjp: 15
+jcmb: lptd * cvzz
+qvfr: 2
+whwm: qjww * cmlg
+tjqh: 3
+tmfz: gqdf + htbb
+ctwq: qlrn + drpm
+bthf: 2
+gcls: jrsl + dsjl
+wvvf: 8
+wwvz: 1
+wgbm: wzvl + sphm
+dmtb: jcff + ffpw
+bzdb: nvgn + vssj
+hhfj: lnpw * ctwc
+hfsq: 2
+wbmd: qbzr + lvlv
+fcrs: nhjl + gzwl
+vwfc: 3
+qrvc: rpgb - ltbf
+hvgw: 3
+njws: 3
+lqwh: 4
+dpzq: 2
+bqrf: lvrs * nmqh
+szsg: ghnt * wtgh
+dmfq: 14
+brlr: vmjq + psvh
+hdll: 3
+grjb: pqrd * zwhm
+bbmd: 15
+pfgr: zwqm * hdqn
+zwms: 5
+jshn: mfjg * dwjd
+pjhn: dtwv / tppb
+dncl: rfph * jvrn
+gdgj: drwb * jsbj
+zmcw: 4
+tqmd: 4
+nqwj: 2
+bsff: 11
+vzbv: 2
+nhwg: htjw - cmnl
+vcmw: rdnt / fjch
+hqlp: 3
+cpgt: wtwj * crdd
+rjtt: tgvq * lqsc
+bfzs: 8
+lgfh: 3
+bhgh: dvcm - qhtc
+zmrh: bswt * tqch
+rctp: vndq + npph
+sgvt: 1
+rbmp: 3
+wvzm: 3
+htbb: bfgs + pfgp
+gqtq: 5
+bbsc: 3
+wptt: 10
+djcq: lwgc / njgq
+pwqt: qpst * gbth
+fbpf: bqmq * njnq
+mbff: 11
+lllq: 2
+zjcb: 5
+jwlq: 3
+ttln: whwn * nsgd
+ntvs: szbq + grnw
+pwmv: qwrb * mzcl
+pljt: wjtg * dmwf
+cjdq: 20
+jcsc: dfpc * nphq
+ncqc: 2
+cslt: vqmb * ccrm
+jjqr: 11
+hlrd: 2
+qgqt: 3
+wdzl: fmqr * qqcb
+zqhw: 6
+lqwp: 5
+mwcz: 4
+tbdd: 17
+mzjw: qqpc + bsjg
+dmjf: zlrd * qwqg
+dmwf: 3
+npgz: 5
+vvnr: 3
+zjhr: lpbn * tlcr
+pzzs: ffrw + bftt
+tnrr: 18
+zvdr: chzq - mwbs
+mqtv: zgvl / tdrg
+gjpj: 13
+npph: qmnt * lbpc
+dhzq: vcgz * nhjz
+ndsj: ltsm + tmjp
+fpgb: 2
+lzgl: 2
+pvmv: ncfn * ctdz
+wsrr: 3
+hfnn: 2
+tsvw: 3
+chtn: wfmt - jrcw
+lmgb: sbcr * ptrl
+zwrg: 6
+pdnf: pjsc * gqwr
+pdmj: 5
+ptch: 2
+sdvg: 3
+njnq: zvjn * hhft
+tqsl: wsrr * prcb
+bmfp: 3
+jvrn: mwrw * jblv
+jmfh: gqpf * zmtf
+zwsg: nhwg + bhsc
+pjsc: jwcb * dhsj
+pbvb: mlnh * tjvd
+jsqp: 3
+pfrz: vcrg + nzjf
+smns: 4
+mfbs: gmwv + jftw
+ghhf: 4
+fcwl: 19
+qslw: bzbg * pjfm
+qjdg: nggf + flsg
+btdv: tdgc + npgz
+zrtt: jdmn + gpfd
+zbhn: 3
+vvtw: nhlv * tndh
+hzjs: vlqt * sdgr
+wqrj: 2
+cbbb: ghdg / mlbd
+twvj: rszs * zmcw
+sdbf: tcvc * rbcv
+rvgf: 5
+sfzp: hhpr * bqjb
+hnwq: gdgj + lmwf
+vbrv: 2
+grcq: 5
+wrjf: zfhw + twhn
+bndv: 6
+hbcm: 10
+jszw: 14
+wlcd: rdmw * dlqn
+fmrl: cwrl / nrzs
+pqsm: 9
+mbzb: 3
+pglf: hcnl * jjcv
+vljb: szfw + tbdd
+wmfd: cmwr + tqsl
+wszg: rgnf - hmln
+qtft: 2
+hmln: 3
+nlpb: 2
+gnlr: 1
+zmrd: 2
+prcl: 2
+hblc: 4
+zgdm: vdml / wcsc
+rnrv: 3
+dhbz: dzvb * vbnt
+nttg: mjsr * bmwg
+dbwd: 4
+rnpp: gwdh + cqjf
+wdpf: bfnr + bbwz
+qhff: 3
+wmgp: vvtm * dbqs
+mwhd: 3
+gnbm: 1
+ndld: wmgp + nzlf
+bsjb: rjvj / qtft
+sdgr: 2
+jbjc: 2
+vwpq: 2
+fqbh: 2
+vfgn: nznc * cmbm
+zcdv: sqwc * qbpl
+ztdj: cpzq / lnhr
+dqbg: rpgr + lfmj
+cmgr: 18
+wsvh: ljgc + gngz
+bsmg: 2
+hhcv: 2
+vtvw: 5
+gccn: dzhc + cqms
+ghdg: hvlz * pfgr
+hsnj: vdws + zdhd
+vfzp: zgcz * htzh
+qgpr: snfv - clzr
+wwjb: 3
+twml: lhtl * bvwm
+ctgd: blwt + gdhc
+wcgj: 2
+hgfd: tgsv + pdmj
+cfhh: 10
+ddrr: 9
+dhfl: 2
+fnnv: tczm * tjqh
+cmws: 5
+tqch: wmzg * hmnl
+wrqq: fdtn + nntd
+srct: snhf - cgtq
+qsvl: qtmv * pbgm
+jgcr: zvzt + gfdf
+lzsf: lwgr * qgpd
+wbgm: 3
+drcq: gcls * prcl
+dwjd: zpvn * jzcp
+lzvv: 13
+jrsl: 8
+vhvn: cdvg * nmfn
+rdbj: jqtw * pbfb
+qbnt: 3
+snzz: jlzq * qvwc
+rnnt: vvtw * vbhj
+vpvl: 2
+mnds: qwqw * mlfp
+shgf: nzsn * gsht
+wccj: 2
+svfw: lzhc * gsvm
+jqng: 1
+mbvc: 2
+zpnf: 12
+fdcb: 5
+tdvn: wjvn / vzhq
+mwrj: bdqm * ldzl
+zhzq: 12
+nphq: 2
+hrnj: 5
+pqpl: 2
+nslf: cfhh - jnhv
+cbtb: tbjc * tlcg
+fmhs: 1
+jlzq: 2
+lmzt: 2
+fllr: rlfd * qzhr
+hnft: nlmd * qmns
+tgnd: 4
+btjm: 4
+nzjf: lbcd * sqwr
+qmnt: 2
+gzfg: 2
+tvgm: bqsp + whpp
+qlmv: 3
+cplb: 3
+zclm: drbd * vhjj
+qtmv: 2
+pfmm: bjjq - ttnz
+dfpc: ggtv - tzjc
+nfsl: zqmq / vgqg
+jhnv: qhnl * wggv
+rtrm: tbqh + mvwr
+wvhs: 3
+nzgj: vzdw * tjpr
+cndv: 3
+bcjw: 2
+lwzd: fqln + mqrf
+fstd: 3
+llcv: 2
+lzvf: cjlz * vbrv
+pqwm: cttf + lzcg
+jwwz: rfwf + hghn
+djtr: 5
+nrpt: ftvr * pqnh
+sbqh: 1
+dgwp: 5
+pqnh: cczt * fcwl
+sbwn: jghr - vszc
+wssq: dqrs * cbqg
+prsp: bdrw * mtjp
+ngtr: 9
+zmvc: hncv * vwpq
+hnsh: 1
+htzh: hwwj * jpdl
+vssj: llfn * cplb
+zjmz: 2
+znhd: wnwn + sfng
+thfd: 17
+qllh: tcdz * qrmn
+crhc: jfln + wzrc
+nlnf: dzqf + pnfn
+ntjw: sfwr + ndlh
+wvfc: 1
+bjwm: rbmp * dcsb
+dhjd: pljt + svcf
+zrtn: prpz / mczs
+pbgm: zmgg + mctq
+jbpq: bntb * jbjc
+vqhz: 15
+bgvb: pdcg * srsp
+pwqz: 2
+grwc: zpnl - jtjc
+rbnf: 19
+bgpm: 8
+cqms: 6
+ngfd: 2
+pdbq: jqcq * hnqg
+llfn: mcht / tbmd
+mppm: 5
+vdws: 13
+hhpq: 3
+rjfj: 2
+vgvf: mppm * fstd
+bwlr: 14
+pttb: ntvs / vbwg
+cwqn: 12
+vztc: dhzf * qnvs
+mzzc: nbbc + qhhn
+vpcg: zdgc / pvfl
+nflb: 2
+mdzh: 6
+sppp: cdgn * rrbn
+qzsc: 2
+rbcv: ctdn + fqjn
+qsjm: slzn + spst
+wmzg: 15
+qrps: 4
+tbfd: 3
+mtbg: ltqm * rqcz
+cpqr: lfdj * qsjm
+sfhl: 4
+zdbf: qnbz + nfjw
+zlrz: jshn - jzwf
+nvqr: 3
+dhzf: pzgg + fcdf
+bthl: fsrp / hhgz
+stfz: zsfh * bvhj
+hllc: 4
+ndfj: 3
+hjpp: thdn * pdnf
+hmnq: 1
+vqpl: 3
+mlsj: 3
+hhgz: 2
+lfnd: dnqd - bsrc
+wpgp: 5
+mlwb: 6
+dndw: 3
+lmsf: psfj + mrll
+nmmj: 16
+twsh: nqmd * pfsl
+tlds: 2
+gpnz: rfbl * vrnw
+vsnn: 15
+dcsb: scml * nghg
+fgsc: 3
+fhnj: qchw / wzbq
+cmwr: 6
+fbft: 2
+tcdc: 6
+tbdf: nrjh * gnlb
+jmvn: pght / hjnf
+vzdw: 2
+bvls: vlbr + fvvh
+wbqv: jhwf + znbg
+vnch: 2
+ncrp: 9
+wfmt: mfbp * lgpn
+qnvs: 2
+stfr: 1
+gwgz: zwwd * fzls
+flql: pjhn / bthf
+gdhl: ndfj * zzjg
+mdfs: mtbg - cslt
+zwlg: tlgs + ztsr
+qwlc: hgqm * zwhr
+nvbw: wssq * vszq
diff --git a/2022/21/solve.js b/2022/21/solve.js
new file mode 100644
index 0000000..818e463
--- /dev/null
+++ b/2022/21/solve.js
@@ -0,0 +1,32 @@
+d=require("fs").readFileSync("input", "utf8").trimEnd().split("\n").map(s=>s.split(": ")).reduce((a,s)=>({...a,[s[0]]:s[1].split(/ ([+|\-|*|/]) /)}),{})
+
+r=m=>isNaN(d[m])?eval(r(d[m][0])+d[m][1]+r(d[m][2])):d[m]
+
+function part1()
+{
+ return r("root")
+}
+
+function part2()
+{
+ // small binary search
+ // i'm sure there are better ways.. but it works
+ d["root"][1] = "-"
+ low = 1e2
+ high = 1e20
+ while (low != high) {
+ mid = (low + high)/2
+ d["humn"][0] = `${mid}`
+ score = 0 - r("root")
+ if (score < 0) low = mid
+ else if (score == 0) return mid
+ else high = mid
+ }
+ return 0
+}
+
+const tic = performance.now();
+console.log(part1());
+console.log(part2());
+const toc = performance.now();
+console.log("TIME: " + ((toc - tic) / 1000).toFixed(6) + " seconds");