summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--2017/Cargo.toml10
-rw-r--r--2017/LICENSE21
-rw-r--r--2017/inputs/day_1.txt1
-rw-r--r--2017/inputs/day_10.txt1
-rw-r--r--2017/inputs/day_11.txt1
-rw-r--r--2017/inputs/day_12.txt2000
-rw-r--r--2017/inputs/day_13.txt43
-rw-r--r--2017/inputs/day_13_example.txt5
-rw-r--r--2017/inputs/day_14.txt2
-rw-r--r--2017/inputs/day_14_example.txt1
-rw-r--r--2017/inputs/day_15.txt2
-rw-r--r--2017/inputs/day_16.txt1
-rw-r--r--2017/inputs/day_17.txt1
-rw-r--r--2017/inputs/day_18.txt41
-rw-r--r--2017/inputs/day_19.txt201
-rw-r--r--2017/inputs/day_2.txt16
-rw-r--r--2017/inputs/day_20.txt1000
-rw-r--r--2017/inputs/day_21.txt108
-rw-r--r--2017/inputs/day_21_example.txt2
-rw-r--r--2017/inputs/day_22.txt25
-rw-r--r--2017/inputs/day_22_example.txt3
-rw-r--r--2017/inputs/day_23.txt32
-rw-r--r--2017/inputs/day_24.txt57
-rw-r--r--2017/inputs/day_25.txt62
-rw-r--r--2017/inputs/day_3.txt1
-rw-r--r--2017/inputs/day_4.txt512
-rw-r--r--2017/inputs/day_5.txt1070
-rw-r--r--2017/inputs/day_6.txt1
-rw-r--r--2017/inputs/day_7.txt1091
-rw-r--r--2017/inputs/day_8.txt1000
-rw-r--r--2017/inputs/day_9.txt1
-rw-r--r--2017/src/bin/day_1.rs24
-rw-r--r--2017/src/bin/day_10.rs63
-rw-r--r--2017/src/bin/day_11.rs57
-rw-r--r--2017/src/bin/day_12.rs52
-rw-r--r--2017/src/bin/day_13.rs46
-rw-r--r--2017/src/bin/day_14.rs52
-rw-r--r--2017/src/bin/day_15.rs40
-rw-r--r--2017/src/bin/day_16.rs87
-rw-r--r--2017/src/bin/day_17.rs47
-rw-r--r--2017/src/bin/day_18.rs207
-rw-r--r--2017/src/bin/day_19.rs78
-rw-r--r--2017/src/bin/day_2.rs26
-rw-r--r--2017/src/bin/day_20.rs89
-rw-r--r--2017/src/bin/day_21.rs200
-rw-r--r--2017/src/bin/day_22.rs73
-rw-r--r--2017/src/bin/day_23.rs168
-rw-r--r--2017/src/bin/day_24.rs60
-rw-r--r--2017/src/bin/day_25.rs125
-rw-r--r--2017/src/bin/day_3.rs62
-rw-r--r--2017/src/bin/day_4.rs37
-rw-r--r--2017/src/bin/day_5.rs25
-rw-r--r--2017/src/bin/day_6.rs61
-rw-r--r--2017/src/bin/day_7.rs62
-rw-r--r--2017/src/bin/day_8.rs99
-rw-r--r--2017/src/bin/day_9.rs42
-rw-r--r--2017/src/lib.rs225
58 files changed, 9422 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..6aa1064
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+/target/
+**/*.rs.bk
+Cargo.lock
diff --git a/2017/Cargo.toml b/2017/Cargo.toml
new file mode 100644
index 0000000..d84b5bd
--- /dev/null
+++ b/2017/Cargo.toml
@@ -0,0 +1,10 @@
+[package]
+name = "advent_of_code_2017"
+version = "0.1.0"
+authors = ["Justin Worthe <justin@worthe-it.co.za>"]
+
+[dependencies]
+regex = "0.2.3"
+lazy_static = "1.0.0"
+structopt = "0.1.6"
+structopt-derive = "0.1.6" \ No newline at end of file
diff --git a/2017/LICENSE b/2017/LICENSE
new file mode 100644
index 0000000..026d0f3
--- /dev/null
+++ b/2017/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 Justin Worthe
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/2017/inputs/day_1.txt b/2017/inputs/day_1.txt
new file mode 100644
index 0000000..7a4debd
--- /dev/null
+++ b/2017/inputs/day_1.txt
@@ -0,0 +1 @@
+21752342814933766938172121674976879111362417653261522357855816893656462449168377359285244818489723869987861247912289729579296691684761143544956991583942215236568961875851755854977946147178746464675227699149925227227137557479769948569788884399379821111382536722699575759474473273939756348992714667963596189765734743169489599125771443348193383566159843593541134749392569865481578359825844394454173219857919349341442148282229689541561169341622222354651397342928678496478671339383923769856425795211323673389723181967933933832711545885653952861879231537976292517866354812943192728263269524735698423336673735158993853556148833861327959262254756647827739145283577793481526768156921138428318939361859721778556264519643435871835744859243167227889562738712953651128317624673985213525897522378259178625416722152155728615936587369515254936828668564857283226439881266871945998796488472249182538883354186573925183152663862683995449671663285775397453876262722567452435914777363522817594741946638986571793655889466419895996924122915777224499481496837343194149123735355268151941712871245863553836953349887831949788869852929147849489265325843934669999391846286319268686789372513976522282587526866148166337215961493536262851512218794139272361292811529888161198799297966893366553115353639298256788819385272471187213579185523521341651117947676785341146235441411441813242514813227821843819424619974979886871646621918865274574538951761567855845681272364646138584716333599843835167373525248547542442942583122624534494442516259616973235858469131159773167334953658673271599748942956981954699444528689628848694446818825465485122869742839711471129862632128635779658365756362863627135983617613332849756371986376967117549251566281992964573929655589313871976556784849231916513831538254812347116253949818633527185174221565279775766742262687713114114344843534958833372634182176866315441583887177759222598853735114191874277711434653854816841589229914164681364497429324463193669337827467661773833517841763711156376147664749175267212562321567728575765844893232718971471289841171642868948852136818661741238178676857381583155547755219837116125995361896562498721571413742
diff --git a/2017/inputs/day_10.txt b/2017/inputs/day_10.txt
new file mode 100644
index 0000000..6544f8c
--- /dev/null
+++ b/2017/inputs/day_10.txt
@@ -0,0 +1 @@
+187,254,0,81,169,219,1,190,19,102,255,56,46,32,2,216
diff --git a/2017/inputs/day_11.txt b/2017/inputs/day_11.txt
new file mode 100644
index 0000000..c31c097
--- /dev/null
+++ b/2017/inputs/day_11.txt
@@ -0,0 +1 @@
+s,s,sw,se,s,nw,nw,ne,n,ne,n,n,n,n,n,n,n,ne,n,ne,ne,se,ne,n,ne,n,n,ne,se,sw,se,s,se,se,se,se,s,se,se,s,se,se,nw,se,se,se,s,s,nw,s,s,se,nw,s,n,s,nw,s,s,s,s,s,s,s,s,s,s,s,sw,s,s,s,s,s,sw,sw,s,sw,s,nw,sw,sw,s,sw,ne,sw,sw,s,se,sw,sw,sw,sw,sw,sw,sw,nw,sw,sw,sw,se,sw,nw,nw,sw,sw,sw,s,sw,nw,se,nw,se,nw,sw,nw,nw,se,n,sw,s,s,s,nw,sw,sw,nw,se,nw,sw,sw,sw,nw,sw,sw,nw,nw,nw,nw,ne,n,nw,nw,ne,nw,nw,nw,nw,nw,se,nw,nw,n,nw,nw,nw,sw,n,nw,nw,nw,nw,n,s,nw,ne,nw,s,nw,nw,nw,n,nw,nw,nw,nw,nw,nw,s,sw,n,n,nw,nw,n,n,nw,nw,n,nw,n,n,nw,n,s,n,nw,ne,n,nw,n,nw,n,n,n,n,se,s,n,s,n,s,n,n,n,nw,n,s,n,n,n,n,n,ne,n,n,n,n,s,n,n,n,n,sw,n,n,n,nw,n,n,n,n,nw,se,n,ne,n,n,ne,n,ne,ne,n,n,n,n,ne,n,n,nw,n,n,n,n,ne,se,se,ne,ne,ne,n,ne,n,ne,ne,nw,ne,ne,n,n,n,ne,ne,ne,n,ne,nw,n,s,ne,ne,ne,ne,ne,n,s,ne,ne,ne,n,ne,ne,ne,sw,ne,ne,ne,s,n,ne,ne,n,ne,ne,ne,ne,ne,se,ne,ne,se,ne,ne,ne,ne,se,ne,se,ne,nw,nw,sw,s,n,ne,ne,ne,ne,ne,sw,ne,ne,ne,sw,ne,ne,ne,ne,sw,se,ne,ne,ne,ne,se,s,se,s,nw,ne,ne,n,se,ne,ne,ne,sw,ne,s,s,nw,se,nw,ne,s,ne,se,ne,n,ne,n,s,n,ne,ne,s,ne,se,se,ne,sw,nw,s,n,nw,n,se,ne,se,se,sw,ne,ne,sw,se,se,se,se,sw,ne,se,s,ne,ne,n,se,ne,sw,ne,ne,se,se,nw,se,ne,ne,nw,sw,se,s,s,se,se,se,s,se,nw,se,ne,se,se,se,se,se,se,se,sw,nw,se,se,se,se,se,se,sw,se,sw,ne,se,se,se,se,se,se,se,se,s,se,se,se,se,se,se,ne,se,se,s,sw,s,se,se,se,se,se,se,se,s,se,sw,se,se,n,s,se,s,ne,se,se,se,s,se,s,se,se,ne,se,se,sw,s,se,se,se,se,nw,se,n,ne,s,s,nw,se,se,s,se,n,se,se,s,se,se,s,se,se,ne,se,se,se,s,s,sw,s,s,se,s,se,s,se,s,se,se,se,s,se,s,nw,s,s,se,se,se,se,sw,sw,s,se,s,se,se,s,n,se,se,se,se,s,se,se,s,se,se,se,sw,s,s,s,se,se,s,s,se,s,s,se,s,s,n,s,nw,s,n,s,sw,s,nw,s,s,se,se,sw,s,s,s,sw,se,s,n,s,se,n,s,se,se,se,s,s,s,se,ne,s,se,n,se,s,se,se,s,ne,sw,se,s,s,se,s,s,s,s,s,s,s,s,se,s,nw,s,s,s,s,s,s,s,s,s,s,s,ne,ne,s,s,s,s,s,s,s,s,s,ne,ne,s,s,s,s,s,s,s,s,nw,s,s,se,sw,s,sw,s,s,nw,s,s,s,s,s,s,s,s,s,n,ne,se,s,s,s,s,n,se,s,sw,s,sw,sw,sw,s,s,sw,s,s,s,nw,sw,s,s,s,s,s,ne,sw,s,s,sw,s,s,s,s,s,s,sw,s,s,se,s,s,sw,n,sw,s,s,sw,s,s,s,s,s,sw,s,ne,s,s,s,s,sw,ne,s,ne,n,sw,s,s,s,sw,s,sw,nw,s,s,ne,sw,sw,nw,s,s,sw,sw,s,ne,s,s,sw,se,s,s,sw,s,s,sw,s,sw,sw,s,s,s,s,sw,sw,sw,s,n,ne,s,ne,s,sw,s,se,s,sw,sw,s,sw,sw,sw,sw,s,s,s,s,se,s,sw,sw,sw,sw,n,s,sw,s,s,sw,sw,s,s,n,sw,s,sw,sw,ne,sw,sw,s,sw,sw,sw,sw,sw,s,s,sw,se,sw,sw,sw,sw,s,s,sw,s,sw,sw,nw,sw,sw,se,sw,s,s,nw,nw,s,s,sw,sw,s,n,s,sw,sw,se,s,sw,sw,ne,sw,sw,sw,sw,sw,ne,sw,s,sw,sw,n,sw,sw,sw,sw,s,sw,sw,sw,sw,sw,n,nw,s,sw,s,s,n,ne,sw,sw,sw,sw,n,sw,se,sw,sw,s,se,sw,sw,sw,sw,sw,sw,s,ne,ne,ne,sw,sw,sw,ne,s,sw,sw,sw,sw,nw,s,sw,sw,s,s,sw,sw,n,nw,nw,sw,sw,sw,se,nw,nw,sw,s,sw,sw,sw,sw,sw,sw,sw,sw,sw,n,sw,sw,sw,nw,nw,se,sw,sw,sw,sw,sw,ne,sw,nw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,nw,s,sw,sw,se,sw,s,sw,sw,nw,nw,nw,sw,sw,nw,sw,se,ne,sw,sw,sw,sw,ne,sw,sw,nw,sw,se,nw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,n,nw,sw,sw,sw,s,sw,sw,nw,n,s,sw,n,nw,nw,sw,sw,nw,sw,sw,se,sw,sw,nw,sw,sw,s,sw,nw,sw,nw,sw,nw,nw,nw,sw,nw,sw,sw,sw,sw,sw,sw,sw,sw,sw,s,sw,nw,nw,ne,n,nw,sw,sw,nw,sw,sw,nw,nw,nw,sw,sw,sw,ne,s,sw,nw,nw,sw,nw,sw,s,nw,n,nw,sw,sw,nw,nw,sw,nw,nw,n,sw,nw,sw,nw,sw,n,sw,nw,sw,sw,sw,sw,n,sw,n,nw,nw,s,sw,se,sw,sw,nw,n,sw,sw,sw,n,sw,nw,sw,ne,nw,sw,sw,s,n,nw,sw,nw,nw,nw,sw,sw,sw,nw,nw,ne,sw,s,sw,nw,n,sw,sw,sw,nw,ne,ne,sw,nw,nw,sw,s,s,sw,sw,nw,ne,sw,nw,sw,nw,nw,sw,sw,sw,sw,nw,nw,s,se,nw,sw,nw,ne,s,nw,nw,ne,sw,nw,nw,n,nw,nw,sw,sw,sw,nw,nw,nw,sw,nw,nw,n,sw,sw,nw,s,n,sw,nw,nw,sw,nw,n,nw,nw,nw,nw,nw,nw,sw,sw,n,n,sw,sw,nw,nw,nw,nw,ne,nw,nw,nw,sw,nw,nw,nw,nw,ne,nw,nw,nw,nw,n,nw,nw,nw,s,nw,nw,sw,nw,s,nw,ne,ne,nw,nw,sw,nw,nw,nw,nw,sw,nw,se,sw,nw,sw,nw,nw,ne,nw,n,nw,nw,sw,nw,nw,nw,sw,nw,ne,s,nw,nw,sw,s,nw,sw,sw,nw,nw,nw,sw,s,nw,nw,nw,nw,se,nw,s,nw,nw,nw,se,ne,ne,nw,nw,nw,nw,nw,sw,nw,ne,ne,nw,nw,nw,nw,nw,nw,nw,nw,nw,sw,nw,nw,nw,ne,nw,nw,s,nw,nw,ne,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,sw,nw,nw,nw,nw,nw,nw,nw,ne,nw,n,nw,nw,ne,n,nw,sw,nw,n,nw,n,sw,nw,ne,s,se,n,ne,se,nw,ne,nw,ne,nw,ne,nw,nw,nw,n,nw,nw,nw,nw,nw,nw,nw,ne,nw,s,se,nw,n,n,nw,ne,nw,nw,nw,nw,ne,nw,nw,s,nw,nw,nw,nw,nw,n,nw,nw,nw,nw,nw,n,nw,nw,s,nw,nw,nw,nw,nw,sw,nw,nw,nw,nw,nw,n,nw,nw,nw,nw,nw,sw,n,nw,nw,nw,nw,nw,nw,nw,s,nw,se,n,n,n,nw,se,nw,nw,s,s,nw,nw,n,nw,nw,s,nw,nw,nw,se,nw,nw,nw,se,nw,nw,nw,nw,se,nw,nw,nw,nw,nw,n,nw,n,ne,nw,nw,nw,se,ne,nw,nw,nw,n,nw,nw,ne,n,n,nw,nw,sw,nw,nw,nw,nw,se,nw,n,s,nw,nw,n,n,nw,se,n,nw,nw,nw,n,nw,nw,nw,n,nw,se,n,se,sw,s,n,s,nw,nw,nw,nw,n,n,s,nw,nw,se,nw,nw,se,nw,n,n,nw,n,se,nw,n,n,nw,n,nw,n,nw,nw,n,nw,n,s,nw,nw,nw,nw,ne,ne,se,sw,nw,n,n,nw,s,n,nw,nw,n,n,nw,n,nw,nw,nw,nw,nw,n,nw,n,n,sw,n,se,nw,n,n,nw,n,nw,nw,n,s,sw,nw,ne,nw,n,sw,nw,nw,n,nw,sw,s,nw,n,n,nw,se,n,nw,n,ne,n,nw,nw,n,nw,nw,n,nw,n,nw,nw,nw,n,se,sw,nw,nw,nw,sw,nw,nw,nw,nw,se,n,n,ne,n,nw,nw,n,nw,nw,n,sw,n,se,nw,nw,n,n,n,nw,n,nw,n,nw,n,ne,n,n,nw,n,n,n,nw,se,sw,n,sw,n,nw,nw,n,n,n,se,nw,sw,ne,n,se,nw,nw,n,n,n,n,n,n,nw,n,n,nw,sw,nw,n,sw,n,n,se,sw,n,n,n,nw,sw,nw,n,n,n,n,nw,n,n,nw,n,s,n,n,sw,n,nw,ne,s,nw,ne,n,n,n,ne,s,n,n,n,n,n,n,se,nw,nw,n,n,nw,n,n,s,se,n,nw,n,n,n,n,n,n,nw,n,n,n,nw,nw,nw,n,n,n,nw,nw,sw,n,se,n,s,n,n,n,n,n,n,ne,n,se,n,n,n,se,n,nw,n,nw,n,n,n,n,n,n,n,nw,n,n,n,n,n,n,ne,n,n,nw,n,n,sw,n,nw,n,n,sw,n,n,n,nw,se,n,n,n,nw,n,s,n,n,n,n,n,n,n,s,n,n,n,n,nw,n,n,sw,sw,nw,n,nw,nw,sw,n,n,n,n,n,n,n,n,n,n,n,s,n,n,n,n,nw,n,n,n,n,n,n,n,s,n,nw,n,sw,nw,ne,n,nw,n,sw,n,n,n,n,n,ne,n,nw,n,n,n,n,n,n,n,ne,n,n,n,n,ne,n,n,n,n,ne,n,n,n,n,ne,n,n,s,n,n,se,n,n,n,n,n,n,n,nw,n,ne,nw,sw,ne,nw,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,ne,n,n,se,n,ne,n,ne,n,n,n,n,ne,n,ne,se,s,ne,nw,se,n,n,n,n,se,n,n,ne,s,n,nw,n,nw,nw,n,n,n,n,n,n,n,n,n,s,n,n,n,s,n,nw,n,n,n,n,n,n,n,n,n,n,n,n,ne,ne,n,sw,n,se,n,n,n,n,n,n,n,se,n,ne,n,ne,n,n,n,n,n,sw,n,n,s,nw,n,n,n,ne,ne,n,n,n,ne,n,n,se,n,n,n,n,ne,n,n,n,s,n,se,ne,n,n,n,n,n,n,n,n,s,ne,s,nw,n,ne,s,ne,n,n,n,n,ne,n,n,n,n,n,n,n,n,n,ne,n,se,ne,n,ne,ne,ne,ne,se,n,n,ne,n,n,n,n,nw,ne,sw,ne,n,n,ne,se,n,n,n,n,se,n,n,n,ne,n,se,ne,ne,n,s,nw,n,ne,n,n,nw,n,n,ne,n,ne,n,sw,n,se,n,ne,nw,ne,ne,n,n,n,ne,n,ne,nw,n,s,n,n,n,n,ne,n,n,ne,n,nw,n,n,n,ne,n,s,n,n,n,n,n,ne,ne,n,sw,n,ne,n,n,sw,ne,n,ne,ne,n,n,ne,ne,ne,n,ne,ne,ne,n,ne,sw,n,n,ne,ne,ne,se,n,ne,ne,ne,n,nw,n,ne,n,n,n,ne,n,n,n,n,n,ne,ne,n,ne,s,nw,ne,n,ne,ne,ne,n,n,n,n,nw,n,n,ne,ne,ne,n,ne,n,ne,ne,n,ne,ne,nw,ne,nw,n,n,ne,se,ne,se,ne,n,nw,n,n,s,n,se,ne,ne,n,ne,n,ne,s,n,n,sw,ne,ne,se,n,ne,n,n,n,n,sw,ne,ne,nw,n,n,ne,ne,ne,n,ne,n,sw,ne,ne,ne,ne,n,ne,se,ne,sw,n,n,n,ne,ne,sw,ne,ne,ne,n,ne,ne,n,ne,se,ne,s,nw,n,sw,n,ne,n,n,n,n,ne,n,sw,ne,ne,nw,n,ne,se,ne,ne,ne,ne,n,ne,ne,n,ne,n,ne,ne,ne,n,s,s,ne,ne,ne,s,ne,ne,ne,sw,n,n,ne,n,s,ne,n,n,nw,n,se,sw,ne,ne,ne,s,n,n,ne,ne,n,ne,ne,nw,ne,ne,ne,s,se,ne,ne,ne,n,ne,nw,n,ne,ne,sw,n,n,ne,ne,ne,n,ne,ne,se,ne,ne,n,ne,ne,ne,sw,s,n,n,n,se,n,s,ne,ne,ne,sw,ne,ne,se,ne,ne,ne,ne,ne,n,s,se,ne,ne,ne,n,ne,sw,se,s,ne,n,ne,ne,n,n,n,ne,n,ne,ne,se,ne,ne,n,ne,ne,ne,ne,ne,s,ne,ne,ne,nw,ne,ne,ne,ne,ne,n,ne,s,ne,ne,ne,n,ne,sw,n,n,n,ne,ne,n,ne,s,n,n,n,ne,ne,n,ne,ne,ne,sw,se,sw,ne,ne,s,ne,nw,ne,nw,se,nw,n,ne,se,n,ne,ne,ne,ne,ne,s,ne,ne,ne,ne,ne,n,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,se,ne,ne,ne,sw,ne,ne,ne,ne,n,ne,s,ne,s,ne,ne,n,ne,se,ne,ne,nw,n,ne,ne,ne,s,ne,sw,ne,n,ne,ne,n,ne,ne,ne,ne,ne,ne,n,ne,ne,ne,ne,ne,se,n,ne,ne,ne,ne,sw,ne,n,ne,se,ne,ne,ne,se,se,ne,sw,n,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,sw,ne,ne,ne,sw,n,n,ne,ne,n,ne,ne,ne,sw,ne,n,ne,ne,ne,se,ne,ne,nw,nw,sw,ne,ne,ne,ne,sw,ne,se,ne,n,ne,ne,ne,nw,ne,ne,ne,ne,ne,ne,sw,ne,ne,nw,ne,ne,ne,ne,ne,ne,ne,ne,sw,ne,ne,s,sw,ne,ne,s,sw,sw,ne,ne,ne,nw,ne,n,se,ne,ne,ne,ne,n,ne,nw,ne,ne,n,se,ne,ne,ne,ne,sw,ne,ne,s,ne,s,ne,ne,ne,ne,ne,ne,ne,nw,ne,ne,ne,se,ne,ne,ne,ne,se,ne,ne,sw,ne,s,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,sw,n,ne,ne,nw,se,ne,ne,ne,ne,se,ne,sw,ne,ne,n,se,ne,ne,se,ne,sw,nw,ne,ne,ne,ne,ne,ne,s,ne,se,sw,ne,s,ne,se,se,se,ne,ne,s,ne,ne,s,ne,se,ne,nw,s,ne,se,ne,ne,ne,sw,ne,se,ne,ne,ne,sw,ne,ne,ne,ne,nw,ne,ne,nw,ne,ne,s,ne,ne,se,ne,ne,nw,ne,ne,se,se,se,ne,se,ne,se,se,ne,ne,s,ne,ne,ne,ne,ne,ne,ne,ne,ne,n,ne,ne,ne,ne,ne,ne,ne,s,se,ne,sw,ne,ne,se,ne,ne,ne,ne,s,ne,se,ne,ne,se,n,n,ne,se,s,ne,s,ne,se,nw,ne,se,ne,ne,se,ne,se,se,ne,ne,se,ne,ne,ne,n,se,ne,ne,ne,ne,s,se,se,n,ne,se,se,ne,ne,se,ne,se,se,ne,ne,sw,ne,ne,ne,ne,ne,ne,nw,se,ne,se,ne,se,ne,s,ne,ne,sw,ne,ne,ne,ne,ne,s,se,ne,ne,s,se,ne,ne,ne,nw,ne,ne,ne,se,ne,ne,ne,ne,se,ne,ne,ne,se,ne,ne,se,n,s,ne,ne,ne,se,s,n,se,se,ne,sw,ne,ne,n,ne,se,n,se,n,s,n,s,ne,se,ne,ne,ne,ne,n,ne,se,sw,se,ne,se,nw,ne,ne,ne,se,se,ne,ne,ne,ne,ne,ne,ne,ne,nw,ne,n,s,ne,ne,ne,ne,ne,se,se,se,se,sw,s,n,ne,s,ne,ne,sw,se,se,ne,ne,ne,ne,ne,ne,se,se,s,ne,se,ne,nw,n,ne,se,se,ne,se,ne,ne,se,se,se,ne,ne,sw,se,nw,se,nw,se,se,se,se,ne,n,n,ne,se,se,ne,ne,se,ne,ne,se,ne,sw,ne,se,ne,n,se,nw,sw,ne,ne,se,ne,se,ne,ne,se,ne,se,ne,ne,ne,se,ne,se,se,n,nw,ne,ne,ne,ne,sw,n,ne,ne,ne,nw,ne,se,se,ne,ne,s,nw,n,ne,ne,ne,ne,ne,ne,ne,se,ne,sw,se,ne,s,n,ne,ne,se,ne,se,se,ne,se,ne,se,se,ne,se,se,se,ne,ne,ne,ne,se,ne,ne,nw,ne,ne,se,ne,s,se,ne,se,ne,ne,ne,ne,n,se,ne,se,se,ne,ne,ne,nw,ne,se,se,nw,ne,se,se,ne,sw,ne,ne,ne,n,ne,ne,ne,n,se,ne,se,ne,n,n,se,ne,se,se,se,ne,se,se,sw,se,ne,se,ne,sw,sw,ne,ne,ne,s,n,ne,ne,nw,ne,n,se,se,se,se,ne,nw,ne,ne,ne,se,ne,se,n,n,se,n,se,se,se,se,se,ne,sw,ne,se,ne,se,se,se,ne,sw,se,s,se,se,ne,se,se,se,n,ne,se,se,ne,ne,ne,ne,se,se,ne,se,se,ne,se,ne,ne,se,se,nw,se,se,ne,se,sw,se,ne,n,ne,se,se,se,nw,se,se,se,ne,se,ne,se,se,ne,se,se,ne,ne,se,se,sw,ne,se,se,sw,se,se,s,ne,ne,se,ne,s,ne,se,se,ne,se,nw,n,se,se,s,se,ne,se,ne,ne,sw,ne,ne,n,se,s,n,ne,se,se,ne,nw,ne,ne,se,se,ne,sw,ne,ne,ne,se,sw,ne,se,se,ne,n,ne,se,nw,se,se,se,ne,se,ne,ne,ne,s,ne,nw,ne,ne,ne,se,se,se,nw,se,ne,se,se,se,ne,se,ne,se,se,se,ne,se,se,se,n,se,ne,ne,se,se,se,se,sw,ne,se,se,se,ne,se,nw,n,ne,ne,ne,sw,n,se,n,se,se,n,ne,se,se,ne,se,ne,se,nw,se,se,se,s,sw,ne,se,sw,se,se,se,ne,ne,se,ne,se,se,se,se,ne,se,se,ne,se,se,ne,se,ne,se,se,se,ne,se,ne,ne,se,s,ne,ne,nw,se,ne,n,ne,se,se,ne,se,n,ne,ne,se,ne,se,se,se,ne,se,se,ne,ne,nw,ne,s,se,se,se,se,se,sw,nw,n,se,se,s,se,se,se,nw,se,n,nw,se,ne,ne,se,nw,se,se,se,se,se,se,ne,se,se,se,se,ne,se,se,ne,se,se,se,se,ne,se,se,se,se,ne,ne,nw,se,se,se,se,se,se,s,se,se,se,n,se,ne,ne,ne,se,se,se,se,ne,se,se,ne,se,se,se,se,se,se,se,sw,se,ne,ne,s,se,se,ne,se,se,se,ne,ne,se,se,se,se,se,se,se,s,sw,se,ne,se,se,se,se,se,se,se,n,se,sw,se,se,se,ne,se,se,se,se,se,s,ne,nw,se,se,se,se,se,sw,se,ne,sw,se,ne,se,se,ne,se,ne,n,ne,se,se,ne,se,ne,nw,nw,se,se,se,se,se,se,se,se,se,se,sw,se,se,se,se,se,nw,se,n,se,se,ne,se,se,nw,se,se,se,se,se,ne,nw,nw,se,se,se,se,ne,se,se,se,ne,ne,se,se,se,se,se,se,se,se,se,se,se,sw,s,se,se,ne,nw,se,se,se,se,se,se,sw,sw,se,ne,sw,nw,se,se,se,se,se,n,se,se,ne,se,se,se,nw,se,ne,se,se,se,s,se,se,n,se,se,ne,se,s,se,ne,se,se,se,nw,se,se,n,se,s,n,se,se,se,nw,se,s,sw,se,ne,se,se,se,nw,se,sw,se,se,sw,s,se,n,ne,sw,se,n,nw,se,ne,se,se,se,se,se,ne,se,se,se,se,se,se,se,se,n,se,se,se,ne,se,se,se,sw,se,nw,se,se,ne,se,se,se,se,n,ne,se,se,se,n,se,se,se,se,se,se,se,s,s,se,se,se,s,ne,se,se,se,se,se,se,se,se,se,se,se,se,se,n,n,se,se,se,se,se,se,se,se,se,s,sw,se,se,se,n,nw,se,se,se,se,ne,ne,se,n,se,se,sw,ne,sw,se,se,ne,se,se,se,se,se,se,se,se,se,n,se,nw,se,se,se,sw,s,se,se,se,se,se,se,se,se,ne,s,se,se,se,nw,s,se,n,se,se,se,s,sw,se,se,se,se,nw,ne,se,se,se,ne,s,se,sw,se,se,se,se,se,se,s,se,s,se,sw,se,ne,s,se,se,nw,se,se,nw,n,se,se,se,nw,nw,se,se,se,se,se,nw,s,se,se,ne,se,se,se,se,se,se,se,sw,se,se,se,se,se,se,nw,se,se,s,se,se,se,se,s,s,se,se,se,s,se,se,se,s,s,n,se,se,se,se,n,n,se,sw,nw,se,s,se,nw,se,s,nw,nw,se,s,se,se,se,se,se,se,sw,nw,se,se,s,se,se,se,se,se,se,n,n,ne,se,s,s,se,se,se,se,se,se,s,se,se,s,se,se,n,se,se,s,se,s,se,s,se,sw,se,se,sw,se,ne,se,sw,se,se,se,s,nw,se,ne,n,se,se,nw,se,ne,se,se,se,s,se,se,nw,se,s,se,se,se,nw,se,se,sw,s,se,s,se,se,nw,s,se,se,s,se,se,s,se,se,se,se,se,sw,s,se,se,s,sw,nw,ne,nw,se,nw,se,s,se,se,se,se,se,s,se,se,se,se,sw,s,sw,se,se,se,s,sw,sw,s,n,se,s,se,nw,se,se,se,ne,se,se,se,se,s,se,se,s,nw,s,se,s,nw,se,se,se,se,se,n,s,se,ne,n,se,se,nw,se,s,se,n,se,nw,s,s,s,se,nw,s,s,se,s,se,se,nw,s,se,s,se,se,se,se,n,se,se,s,se,se,se,se,s,s,se,s,se,se,s,se,s,n,se,n,se,se,s,se,s,se,se,s,s,se,se,s,se,se,se,se,s,s,s,se,s,nw,s,se,se,se,ne,nw,se,se,se,se,se,se,n,se,se,se,se,se,se,nw,se,se,se,s,s,nw,se,ne,se,s,se,ne,se,se,nw,se,se,se,sw,n,se,sw,se,se,nw,ne,s,se,sw,se,s,s,s,se,s,se,n,sw,sw,se,se,se,ne,se,s,se,sw,n,se,se,se,s,s,se,s,se,n,s,ne,se,se,s,se,se,s,sw,s,se,se,ne,s,n,se,se,se,s,s,s,se,se,s,s,ne,se,s,se,nw,se,s,se,se,s,s,s,se,n,se,se,ne,se,se,s,sw,se,s,ne,se,se,se,s,s,se,se,se,se,se,se,se,s,ne,se,s,se,s,s,nw,nw,s,s,nw,s,se,se,ne,se,se,se,n,s,s,s,s,se,se,s,s,s,nw,sw,se,s,s,n,se,s,s,s,s,n,s,se,s,s,se,sw,nw,nw,se,se,se,s,sw,se,se,se,s,se,se,s,s,s,se,ne,s,se,s,s,se,s,ne,se,se,se,se,se,se,ne,se,ne,s,se,se,se,se,se,s,s,s,n,se,nw,nw,s,se,sw,se,se,s,se,se,nw,s,s,s,ne,nw,se,se,se,n,ne,se,s,se,ne,se,ne,sw,ne,se,s,sw,se,se,se,s,s,ne,s,se,se,sw,s,s,s,s,se,se,s,s,se,s,se,s,s,nw,s,s,s,s,nw,nw,se,s,s,sw,s,se,nw,s,se,s,se,s,se,n,sw,n,ne,s,s,s,se,se,nw,s,n,se,s,s,s,se,s,s,s,sw,se,se,se,se,se,se,sw,s,nw,se,n,s,se,sw,nw,se,se,se,se,s,ne,se,ne,s,s,se,se,se,s,s,s,s,n,se,sw,n,s,nw,s,se,s,se,se,se,s,se,n,s,se,nw,se,s,s,se,se,se,s,s,n,s,se,s,s,s,se,se,se,s,s,s,s,se,se,s,se,s,s,s,s,s,s,s,s,nw,nw,se,n,sw,s,s,ne,s,nw,s,se,s,s,sw,s,se,nw,se,s,s,s,s,s,s,s,se,se,s,se,ne,s,se,se,se,s,s,s,se,ne,s,ne,s,s,se,s,s,ne,s,s,se,s,s,s,s,s,se,n,sw,n,s,se,se,s,s,nw,s,sw,se,n,s,se,s,s,sw,s,s,s,s,s,nw,s,nw,se,se,s,s,nw,se,s,s,sw,sw,s,se,se,s,s,s,se,s,se,s,s,s,se,s,ne,s,s,se,s,s,se,se,s,s,s,n,s,s,s,s,se,s,s,se,s,s,se,s,s,s,nw,se,s,s,se,se,se,nw,s,se,ne,s,se,s,n,nw,se,sw,se,se,s,se,s,se,s,sw,s,se,se,se,nw,s,s,s,s,sw,s,s,s,n,s,sw,s,s,se,se,se,s,se,s,s,s,se,s,se,se,nw,s,s,se,ne,s,se,s,se,se,se,s,s,s,s,se,s,s,s,s,se,s,s,s,s,se,se,se,sw,s,se,s,s,nw,s,s,se,s,se,s,se,s,sw,s,ne,s,s,ne,s,sw,s,s,ne,n,s,se,se,s,s,s,s,se,se,s,s,se,se,s,nw,s,s,n,s,ne,se,n,s,s,s,s,s,sw,s,n,n,s,s,sw,s,sw,n,se,s,s,s,s,nw,se,s,s,s,s,s,s,se,s,s,sw,s,s,s,se,se,ne,s,s,s,ne,se,se,s,s,se,n,n,se,n,sw,s,sw,se,nw,n,s,n,s,nw,sw,s,se,se,s,s,s,s,s,s,se,s,s,se,s,s,s,s,s,sw,se,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,nw,se,s,se,s,s,s,s,s,s,s,s,se,nw,se,s,s,s,se,nw,s,s,ne,s,s,se,se,sw,s,ne,n,s,s,se,n,ne,se,s,s,s,s,nw,s,ne,s,s,n,s,s,s,s,s,se,s,s,s,s,se,s,s,s,s,n,s,se,s,n,s,s,sw,s,s,s,s,s,se,s,ne,s,sw,n,s,n,se,nw,nw,s,sw,ne,n,sw,n,sw,s,n,s,se,s,se,s,s,s,s,nw,se,s,s,s,se,sw,s,se,s,s,s,s,s,s,s,s,s,s,se,ne,nw,s,s,s,s,s,se,s,ne,sw,se,se,sw,sw,s,se,ne,s,nw,ne,n,s,s,s,s,s,ne,s,s,s,s,se,s,se,s,s,s,sw,s,s,se,s,s,s,s,n,se,s,ne,s,s,s,s,se,sw,se,s,s,s,s,s,se,s,n,n,s,s,sw,s,s,s,s,ne,s,sw,s,s,s,s,s,sw,s,s,n,s,n,s,s,s,n,se,s,s,s,s,s,s,s,s,s,s,s,s,ne,sw,s,s,ne,nw,se,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,sw,s,s,s,nw,s,s,se,se,s,n,s,se,s,s,s,se,s,nw,s,s,s,s,se,s,s,s,ne,s,s,s,se,s,s,s,s,s,s,s,n,s,s,s,s,s,ne,s,s,s,s,sw,s,s,s,s,s,s,s,s,s,s,ne,se,sw,s,sw,s,s,s,se,s,s,s,s,se,s,s,ne,s,s,s,s,se,ne,se,n,n,n,n,n,n,nw,nw,sw,sw,nw,ne,sw,ne,sw,nw,sw,ne,s,sw,sw,sw,sw,s,sw,sw,sw,sw,nw,s,s,s,nw,s,s,s,se,s,se,s,se,n,se,s,se,s,nw,sw,se,se,s,se,se,se,se,se,se,se,se,nw,se,se,se,se,se,ne,se,ne,s,se,se,se,se,se,ne,ne,ne,ne,ne,ne,se,ne,ne,ne,ne,ne,ne,s,ne,nw,ne,sw,ne,ne,ne,ne,ne,ne,ne,se,n,ne,ne,se,ne,ne,n,se,ne,ne,sw,ne,ne,n,ne,n,ne,n,n,n,sw,n,ne,n,ne,ne,se,ne,n,n,ne,n,n,s,n,n,ne,n,s,n,n,n,s,n,ne,n,n,n,n,n,se,nw,nw,n,n,nw,n,se,n,sw,s,n,nw,nw,se,nw,nw,nw,nw,n,n,se,n,n,n,nw,nw,n,nw,ne,n,nw,n,nw,sw,nw,n,n,n,ne,se,nw,n,nw,n,n,nw,n,nw,n,nw,n,nw,nw,nw,nw,nw,nw,sw,nw,nw,nw,nw,se,sw,sw,nw,se,nw,s,nw,nw,nw,nw,nw,nw,nw,s,n,nw,nw,nw,sw,nw,se,nw,nw,nw,nw,sw,sw,nw,s,sw,nw,s,nw,nw,sw,nw,sw,sw,nw,sw,se,nw,nw,nw,nw,nw,sw,sw,nw,se,sw,sw,nw,sw,nw,se,sw,nw,nw,nw,n,nw,sw,nw,ne,nw,nw,s,nw,nw,nw,sw,nw,sw,nw,sw,sw,sw,sw,n,sw,nw,s,sw,nw,ne,sw,n,s,sw,sw,sw,sw,ne,sw,sw,sw,nw,sw,s,sw,sw,nw,sw,sw,sw,sw,sw,sw,sw,sw,sw,se,n,sw,s,sw,sw,n,sw,sw,s,s,sw,sw,sw,sw,sw,sw,sw,s,s,sw,sw,sw,ne,sw,sw,s,sw,s,nw,sw,sw,se,se,sw,sw,sw,s,s,s,sw,nw,sw,nw,s,sw,sw,sw,sw,sw,sw,s,sw,s,sw,sw,sw,s,sw,s,sw,s,sw,s,sw,s,sw,s,sw,sw,s,s,s,sw,n,sw,s,n,s,s,s,sw,s,n,s,sw,sw,sw,sw,s,s,s,s,s,s,s,s,sw,sw,s,sw,se,s,s,s,sw,s,s,sw,s,ne,s,s,s,s,s,s,s,s,s,n,se,s,s,nw,s,s,s,se,s,s,s,s,s,s,s,s,s,s,nw,se,s,s,s,sw,s,s,s,s,s,s,s,ne,n,s,se,s,s,s,s,s,s,se,se,nw,nw,s,s,s,s,s,se,sw,s,s,se,s,s,s,s,s,s,s,s,s,n,s,s,s,se,s,s,s,s,s,s,se,s,s,n,s,s,se,s,s,s,se,s,s,nw,s,s,s,n,s,s,se,s,se,s,n,ne,s,s,s,s,se,ne,n,s,se,s,se,s,s,se,s,s,s,s,s,se,s,sw,s,se,se,s,se,s,s,ne,s,ne,ne,se,s,ne,se,s,ne,s,se,ne,se,se,se,sw,s,se,se,se,se,se,n,s,s,se,s,se,s,s,se,se,s,s,se,se,nw,se,ne,s,s,se,se,se,se,se,s,se,ne,se,se,s,ne,se,sw,se,se,se,se,se,nw,se,se,se,se,se,se,se,s,ne,n,sw,ne,se,se,se,se,se,ne,se,se,se,se,se,se,se,se,se,n,se,s,s,se,se,sw,nw,s,se,se,ne,se,se,ne,s,se,se,se,se,se,se,se,se,n,se,se,se,se,se,se,ne,se,ne,nw,se,se,ne,nw,nw,se,se,se,se,sw,se,se,sw,n,se,se,sw,se,se,se,se,nw,se,se,se,se,se,nw,sw,ne,ne,ne,se,ne,ne,nw,se,se,nw,se,se,se,se,se,ne,se,s,se,se,s,ne,se,ne,se,se,se,ne,s,se,ne,ne,ne,ne,se,n,se,se,se,se,ne,se,n,ne,se,se,se,ne,sw,nw,nw,ne,se,ne,se,se,se,n,se,ne,se,se,se,se,ne,se,ne,n,se,se,ne,nw,ne,ne,se,se,n,se,se,s,se,sw,ne,ne,ne,se,se,se,ne,ne,se,n,ne,ne,se,ne,ne,ne,se,ne,sw,n,ne,s,se,se,se,sw,ne,se,se,se,sw,ne,se,ne,ne,ne,sw,ne,ne,s,ne,s,ne,se,ne,ne,se,se,se,nw,ne,ne,ne,se,ne,se,se,ne,ne,ne,se,sw,ne,ne,ne,ne,se,ne,sw,ne,sw,ne,n,nw,sw,ne,ne,ne,sw,ne,se,sw,n,ne,ne,se,n,se,ne,n,ne,se,ne,nw,ne,ne,s,n,se,ne,nw,ne,se,ne,ne,ne,se,ne,se,se,ne,ne,ne,se,se,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,se,se,nw,ne,ne,ne,ne,ne,ne,ne,se,se,ne,ne,ne,se,ne,ne,ne,ne,ne,ne,ne,ne,nw,n,n,ne,nw,ne,ne,sw,se,ne,s,ne,nw,ne,nw,ne,ne,ne,ne,ne,ne,ne,n,n,ne,n,ne,ne,s,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,se,n,n,ne,s,ne,ne,ne,nw,se,ne,nw,nw,ne,n,n,ne,ne,nw,ne,n,ne,sw,n,ne,ne,ne,ne,ne,ne,ne,ne,ne,n,n,ne,ne,ne,ne,ne,n,n,ne,ne,se,sw,ne,n,ne,n,ne,ne,sw,ne,ne,n,ne,ne,se,sw,ne,ne,ne,s,n,n,s,ne,n,se,ne,ne,sw,s,ne,nw,n,n,ne,nw,ne,n,n,s,s,n,ne,ne,n,n,nw,ne,n,ne,ne,ne,ne,n,s,n,se,sw,se,ne,ne,ne,n,ne,ne,ne,n,nw,ne,n,n,ne,nw,ne,ne,sw,n,n,se,ne,n,ne,nw,se,ne,ne,ne,n,ne,ne,n,ne,ne,ne,ne,n,ne,ne,s,n,s,nw,n,n,nw,ne,ne,ne,s,n,s,ne,ne,ne,n,se,ne,ne,nw,n,n,n,ne,s,sw,n,ne,n,n,sw,n,ne,n,ne,n,sw,ne,ne,ne,sw,n,ne,ne,sw,ne,ne,n,n,se,ne,ne,s,ne,ne,n,nw,s,n,n,ne,nw,sw,ne,n,ne,ne,n,ne,n,se,n,ne,sw,sw,n,n,n,ne,ne,n,ne,n,s,ne,se,ne,nw,n,n,n,n,se,nw,ne,n,n,n,n,nw,nw,ne,n,se,ne,n,n,n,ne,n,ne,ne,ne,sw,n,s,n,n,n,ne,se,n,n,ne,ne,ne,sw,ne,ne,n,n,n,n,n,n,ne,ne,n,s,n,n,n,n,ne,ne,ne,n,n,se,nw,n,n,n,n,s,n,ne,n,n,n,n,n,n,n,n,sw,n,n,ne,n,n,n,s,ne,nw,n,nw,sw,n,n,n,n,s,n,n,ne,n,n,n,n,n,n,n,s,s,n,n,n,ne,n,s,ne,n,se,n,n,n,sw,n,n,n,ne,n,n,n,n,sw,se,n,sw,n,n,n,sw,ne,s,n,n,sw,s,se,n,n,n,n,ne,n,n,n,n,se,n,n,n,n,n,n,se,n,sw,n,n,n,nw,s,sw,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,sw,n,n,se,n,nw,se,n,sw,n,n,n,n,n,n,nw,n,n,n,n,n,n,n,n,n,sw,n,nw,ne,n,n,n,n,n,n,n,nw,n,n,sw,n,n,n,n,n,n,n,n,ne,n,s,n,n,n,n,ne,n,s,ne,n,n,n,nw,n,n,n,n,n,se,nw,n,nw,sw,n,n,ne,n,n,n,n,nw,n,n,n,nw,n,n,nw,n,n,n,sw,ne,n,n,s,n,n,n,nw,n,ne,n,nw,n,n,nw,nw,n,nw,nw,n,n,n,nw,sw,n,n,nw,sw,sw,n,nw,n,s,nw,n,s,nw,nw,nw,nw,n,se,n,n,nw,sw,nw,n,nw,n,ne,n,n,nw,nw,n,n,nw,nw,ne,nw,se,nw,nw,sw,n,n,n,sw,sw,n,n,n,n,nw,n,nw,nw,n,nw,n,nw,s,n,n,nw,nw,n,n,nw,n,sw,nw,nw,n,n,nw,nw,s,n,n,n,n,s,nw,n,n,n,n,n,nw,n,n,nw,n,nw,n,n,n,nw,n,n,nw,ne,nw,nw,n,nw,nw,n,n,nw,n,nw,ne,n,nw,n,n,nw,nw,nw,ne,nw,nw,n,n,n,se,ne,n,nw,n,n,n,n,nw,nw,n,nw,n,n,s,n,n,n,n,nw,n,nw,nw,se,n,nw,n,n,nw,nw,nw,nw,n,n,n,s,nw,nw,nw,ne,s,nw,nw,nw,n,nw,nw,sw,nw,n,nw,nw,n,nw,nw,n,nw,sw,n,n,n,n,nw,nw,nw,n,n,n,n,nw,n,n,ne,n,nw,nw,nw,ne,ne,n,n,nw,nw,ne,n,nw,nw,nw,nw,n,n,n,nw,nw,n,n,n,ne,nw,nw,nw,se,n,n,nw,n,nw,n,nw,nw,n,s,nw,n,nw,nw,nw,nw,nw,ne,nw,nw,n,nw,n,n,n,nw,n,n,ne,nw,n,n,nw,sw,nw,nw,nw,nw,nw,nw,nw,nw,s,nw,se,n,nw,nw,nw,nw,nw,nw,s,nw,n,nw,n,nw,nw,nw,nw,nw,se,s,nw,se,nw,n,ne,nw,nw,nw,n,nw,nw,nw,nw,nw,nw,n,ne,nw,se,n,nw,nw,nw,nw,sw,n,nw,nw,n,nw,n,nw,nw,ne,n,nw,n,ne,se,n,sw,nw,ne,nw,sw,nw,ne,n,nw,ne,se,nw,nw,nw,nw,nw,ne,nw,n,nw,s,nw,nw,nw,ne,nw,nw,nw,nw,s,nw,n,sw,s,nw,se,nw,ne,nw,n,nw,sw,nw,n,nw,nw,sw,nw,nw,nw,nw,n,nw,nw,nw,nw,nw,nw,nw,nw,se,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,n,s,s,nw,nw,nw,se,nw,nw,nw,nw,sw,nw,nw,n,nw,n,sw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,n,nw,s,nw,nw,nw,nw,nw,nw,nw,nw,n,nw,sw,nw,nw,nw,nw,nw,s,nw,sw,nw,nw,nw,se,nw,nw,sw,nw,nw,nw,nw,nw,nw,n,nw,nw,nw,n,nw,sw,n,nw,nw,se,nw,sw,se,sw,nw,sw,n,nw,nw,nw,ne,nw,nw,nw,se,nw,ne,ne,nw,nw,nw,nw,nw,s,nw,ne,n,nw,ne,nw,sw,nw,nw,sw,nw,se,nw,nw,ne,nw,ne,nw,sw,sw,nw,nw,nw,nw,nw,sw,nw,nw,nw,se,sw,sw,nw,s,sw,nw,nw,nw,nw,ne,nw,ne,nw,nw,sw,nw,nw,nw,sw,nw,nw,nw,ne,sw,s,nw,ne,nw,nw,se,se,n,nw,nw,sw,nw,nw,nw,nw,nw,sw,nw,nw,nw,nw,n,nw,sw,nw,s,nw,sw,nw,nw,nw,sw,nw,nw,se,nw,n,nw,nw,ne,sw,nw,ne,nw,se,s,nw,nw,n,n,nw,nw,nw,nw,ne,se,sw,nw,nw,nw,nw,se,nw,nw,nw,sw,nw,nw,s,nw,nw,nw,nw,nw,sw,nw,nw,nw,nw,sw,nw,sw,nw,nw,nw,ne,nw,sw,nw,sw,nw,sw,nw,nw,nw,sw,ne,sw,nw,sw,nw,se,nw,se,nw,nw,n,sw,nw,nw,nw,nw,sw,sw,nw,sw,nw,nw,nw,nw,nw,sw,sw,nw,nw,nw,sw,nw,nw,nw,nw,ne,nw,n,nw,sw,sw,nw,nw,nw,nw,nw,sw,nw,sw,nw,sw,sw,nw,nw,sw,sw,nw,nw,nw,ne,sw,ne,sw,sw,nw,nw,nw,nw,nw,nw,nw,sw,se,nw,nw,sw,sw,nw,nw,s,nw,nw,sw,nw,nw,nw,n,sw,nw,sw,sw,n,nw,nw,nw,sw,sw,nw,s,nw,nw,nw,sw,nw,n,nw,nw,nw,nw,n,nw,nw,nw,sw,nw,nw,nw,se,nw,sw,nw,sw,sw,sw,nw,ne,s,sw,ne,nw,nw,s,nw,sw,nw,s,nw,sw,sw,sw,s,nw,se,nw,nw,nw,sw,sw,sw,n,nw,sw,nw,nw,nw,nw,nw,nw,sw,n,nw,nw,nw,s,nw,nw,nw,nw,sw,sw,sw,nw,nw,sw,sw,nw,nw,sw,nw,sw,nw,sw,sw,sw,sw,sw,nw,sw,s,nw,nw,sw,sw,sw,sw,nw,sw,sw,nw,sw,ne,nw,sw,nw,nw,sw,nw,se,nw,n,sw,nw,s,nw,ne,nw,se,sw,sw,sw,n,ne,sw,nw,sw,nw,sw,se,s,sw,sw,nw,sw,sw,nw,nw,sw,nw,sw,nw,sw,nw,sw,sw,sw,ne,sw,nw,sw,nw,nw,sw,nw,n,nw,sw,n,nw,nw,sw,sw,se,nw,nw,sw,nw,sw,sw,sw,sw,nw,se,sw,sw,nw,nw,sw,sw,sw,nw,sw,nw,nw,nw,sw,n,nw,sw,n,nw,s,nw,nw,sw,s,sw,sw,nw,sw,sw,sw,nw,ne,sw,ne,sw,s,sw,sw,nw,sw,nw,sw,sw,nw,nw,nw,sw,sw,ne,sw,n,sw,sw,sw,n,sw,sw,nw,sw,n,n,sw,sw,sw,nw,s,sw,sw,sw,sw,nw,nw,sw,nw,sw,sw,s,sw,nw,sw,sw,sw,s,sw,sw,n,nw,sw,n,sw,sw,s,nw,se,sw,sw,sw,sw,sw,nw,sw,sw,sw,sw,sw,nw,sw,sw,sw,sw,sw,sw,sw,sw,sw,nw,nw,sw,sw,sw,s,ne,se,nw,sw,sw,sw,nw,s,nw,nw,sw,sw,s,sw,sw,se,sw,sw,sw,sw,sw,sw,sw,sw,sw,nw,sw,nw,nw,nw,nw,nw,nw,s,nw,sw,sw,sw,sw,sw,n,sw,se,sw,sw,s,sw,sw,sw,sw,sw,s,s,sw,s,ne,sw,sw,s,sw,sw,nw,sw,sw,sw,sw,ne,se,sw,sw,sw,sw,n,sw,sw,sw,sw,s,nw,se,nw,nw,sw,sw,nw,se,nw,se,sw,sw,sw,nw,s,sw,sw,sw,sw,sw,sw,sw,sw,sw,ne,se,nw,nw,sw,sw,sw,n,s,sw,nw,nw,se,sw,ne,sw,n,s,sw,sw,nw,sw,sw,sw,sw,sw,ne,sw,sw,se,sw,sw,sw,sw,nw,sw,sw,ne,sw,nw,sw,s,sw,sw,sw,sw,sw,sw,sw,sw,se,sw,se,sw,sw,sw,sw,sw,nw,sw,sw,sw,sw,sw,se,sw,sw,se,sw,sw,ne
diff --git a/2017/inputs/day_12.txt b/2017/inputs/day_12.txt
new file mode 100644
index 0000000..80e4ce6
--- /dev/null
+++ b/2017/inputs/day_12.txt
@@ -0,0 +1,2000 @@
+0 <-> 199, 1774
+1 <-> 350, 1328, 1920
+2 <-> 477, 984, 1419
+3 <-> 1465, 1568
+4 <-> 359, 1047, 1215, 1580, 1969
+5 <-> 613
+6 <-> 49, 617, 1213
+7 <-> 1263
+8 <-> 410
+9 <-> 1224
+10 <-> 1157
+11 <-> 304, 1168, 1875
+12 <-> 868, 891, 1369, 1712
+13 <-> 958, 1371
+14 <-> 1814
+15 <-> 261, 556
+16 <-> 830, 1646, 1901, 1933
+17 <-> 962, 1778
+18 <-> 109, 1229
+19 <-> 239, 1070, 1886, 1930
+20 <-> 327, 1307, 1801, 1905
+21 <-> 943, 1950
+22 <-> 1310
+23 <-> 659, 917
+24 <-> 373
+25 <-> 369
+26 <-> 947, 1023
+27 <-> 338, 1901
+28 <-> 1691
+29 <-> 132, 1219, 1699, 1962
+30 <-> 424, 822, 1419
+31 <-> 1444, 1464
+32 <-> 702, 1517
+33 <-> 1639
+34 <-> 909
+35 <-> 690, 1655
+36 <-> 988, 1149, 1166
+37 <-> 649, 1300, 1441, 1699
+38 <-> 1848
+39 <-> 382
+40 <-> 827, 1203, 1510
+41 <-> 714, 1056, 1184
+42 <-> 1018, 1873
+43 <-> 214
+44 <-> 670, 957
+45 <-> 45
+46 <-> 1195
+47 <-> 559, 1504
+48 <-> 1958
+49 <-> 6
+50 <-> 50, 1248
+51 <-> 1151
+52 <-> 52, 521, 1791
+53 <-> 304
+54 <-> 601
+55 <-> 1328
+56 <-> 939
+57 <-> 1583, 1995
+58 <-> 1422, 1694
+59 <-> 395, 1233
+60 <-> 862, 1811
+61 <-> 345, 1694
+62 <-> 62, 276
+63 <-> 280
+64 <-> 199
+65 <-> 117, 930
+66 <-> 364, 697
+67 <-> 1043
+68 <-> 287, 504, 1554
+69 <-> 498, 706
+70 <-> 77, 333, 713, 972, 1299
+71 <-> 1643
+72 <-> 694
+73 <-> 1381
+74 <-> 955, 1790
+75 <-> 1691, 1743
+76 <-> 76, 638, 1429
+77 <-> 70
+78 <-> 1513
+79 <-> 1397, 1716
+80 <-> 897
+81 <-> 968, 1841
+82 <-> 649
+83 <-> 522
+84 <-> 84, 125, 399, 498
+85 <-> 880, 1554, 1888
+86 <-> 86
+87 <-> 579, 1947
+88 <-> 470, 1451, 1750
+89 <-> 805, 1434
+90 <-> 453
+91 <-> 1208
+92 <-> 688, 1358, 1746
+93 <-> 357, 647
+94 <-> 234, 1270, 1520
+95 <-> 620, 1454
+96 <-> 390, 869, 919
+97 <-> 693, 1783
+98 <-> 259, 529, 782, 1018
+99 <-> 678
+100 <-> 1215
+101 <-> 459, 887
+102 <-> 888, 1135
+103 <-> 1006
+104 <-> 1375, 1422
+105 <-> 1657, 1730
+106 <-> 216, 1434
+107 <-> 333
+108 <-> 468, 1654
+109 <-> 18, 1791
+110 <-> 372
+111 <-> 111, 861, 1383
+112 <-> 1359, 1937
+113 <-> 414, 736, 1446
+114 <-> 426, 1457
+115 <-> 1605, 1672
+116 <-> 116, 713, 1584, 1602
+117 <-> 65
+118 <-> 1611, 1897
+119 <-> 541, 1569
+120 <-> 412, 787
+121 <-> 1344
+122 <-> 698, 752, 1693
+123 <-> 1173, 1576, 1634, 1802
+124 <-> 735
+125 <-> 84, 1032
+126 <-> 126, 225, 332
+127 <-> 1350
+128 <-> 128, 319, 327, 1582
+129 <-> 129, 654, 1260
+130 <-> 1080, 1296, 1350
+131 <-> 131
+132 <-> 29, 856, 1064
+133 <-> 659, 1367, 1776
+134 <-> 648, 1147, 1450, 1910
+135 <-> 411
+136 <-> 353, 935, 1590
+137 <-> 228
+138 <-> 194, 452, 1746, 1794
+139 <-> 139, 494, 1635
+140 <-> 681
+141 <-> 1507
+142 <-> 1288
+143 <-> 845
+144 <-> 1516
+145 <-> 502, 1146, 1155, 1809
+146 <-> 146, 750
+147 <-> 1600
+148 <-> 1206
+149 <-> 829, 1457
+150 <-> 675, 915
+151 <-> 651, 1678
+152 <-> 888, 1503
+153 <-> 498, 960, 1515
+154 <-> 1468
+155 <-> 751
+156 <-> 528, 803, 1655
+157 <-> 1486, 1937
+158 <-> 590, 1876
+159 <-> 159, 185, 1287, 1550, 1588
+160 <-> 160, 548
+161 <-> 1303, 1364
+162 <-> 1855
+163 <-> 1181
+164 <-> 442
+165 <-> 490
+166 <-> 1105
+167 <-> 1121
+168 <-> 760, 1129
+169 <-> 747
+170 <-> 1890
+171 <-> 1644
+172 <-> 593, 665
+173 <-> 1092, 1869
+174 <-> 705
+175 <-> 1345, 1999
+176 <-> 234, 606
+177 <-> 557, 688
+178 <-> 373
+179 <-> 1376
+180 <-> 638
+181 <-> 1996
+182 <-> 1094, 1206, 1748
+183 <-> 931
+184 <-> 880
+185 <-> 159, 1058, 1704
+186 <-> 765, 1178, 1877
+187 <-> 732
+188 <-> 188
+189 <-> 189, 1871
+190 <-> 395, 1639
+191 <-> 441
+192 <-> 192, 1034
+193 <-> 494
+194 <-> 138, 995, 1308
+195 <-> 1024
+196 <-> 226, 1632, 1919
+197 <-> 786
+198 <-> 286, 758, 1852
+199 <-> 0, 64, 1646
+200 <-> 314
+201 <-> 459, 658
+202 <-> 321, 492, 599, 1081, 1460
+203 <-> 225
+204 <-> 331, 462, 600
+205 <-> 898
+206 <-> 734, 1321
+207 <-> 558, 991
+208 <-> 397
+209 <-> 1145, 1886
+210 <-> 1343, 1925
+211 <-> 840, 1409
+212 <-> 1308
+213 <-> 1813
+214 <-> 43, 282
+215 <-> 1270
+216 <-> 106, 836, 1275, 1507
+217 <-> 312
+218 <-> 290, 386, 639, 1920
+219 <-> 784, 1001
+220 <-> 220, 322
+221 <-> 1681
+222 <-> 1616, 1653
+223 <-> 436, 1272, 1625
+224 <-> 1398, 1696
+225 <-> 126, 203, 1182
+226 <-> 196, 1655
+227 <-> 623
+228 <-> 137, 923
+229 <-> 253, 1387
+230 <-> 1374
+231 <-> 389, 1499
+232 <-> 442
+233 <-> 473, 1406
+234 <-> 94, 176
+235 <-> 235
+236 <-> 607, 838, 1487, 1856
+237 <-> 818
+238 <-> 387, 628
+239 <-> 19
+240 <-> 818
+241 <-> 1027, 1524
+242 <-> 1085, 1971
+243 <-> 1942
+244 <-> 299, 390, 916
+245 <-> 906
+246 <-> 246, 534, 763, 1427
+247 <-> 531, 1675
+248 <-> 336, 1832
+249 <-> 1497
+250 <-> 1836
+251 <-> 1309
+252 <-> 581, 1104
+253 <-> 229, 877, 1743
+254 <-> 254, 621
+255 <-> 831, 866, 874
+256 <-> 1942
+257 <-> 906
+258 <-> 1224
+259 <-> 98, 316, 419, 718, 1519
+260 <-> 1223, 1516, 1547, 1845, 1944
+261 <-> 15, 278, 1607, 1808
+262 <-> 1112, 1172
+263 <-> 424
+264 <-> 680
+265 <-> 1968
+266 <-> 804, 1252
+267 <-> 1739
+268 <-> 538, 546
+269 <-> 1265
+270 <-> 270
+271 <-> 1150
+272 <-> 272
+273 <-> 1208, 1537
+274 <-> 1427
+275 <-> 1349, 1829
+276 <-> 62, 906
+277 <-> 461, 634, 1887
+278 <-> 261, 1224, 1904
+279 <-> 303, 537
+280 <-> 63, 280, 926, 931
+281 <-> 862, 1041, 1119, 1863
+282 <-> 214, 488, 644
+283 <-> 646, 1124
+284 <-> 860, 1759
+285 <-> 746
+286 <-> 198
+287 <-> 68, 1045
+288 <-> 332, 1133, 1277, 1628, 1744, 1770, 1934
+289 <-> 1578, 1766
+290 <-> 218, 439, 1661
+291 <-> 596, 1377, 1620
+292 <-> 700, 848, 1099
+293 <-> 293, 1592, 1938
+294 <-> 653, 1948
+295 <-> 1505, 1936
+296 <-> 625, 925
+297 <-> 1105, 1185
+298 <-> 298, 544, 1444
+299 <-> 244, 933, 1012
+300 <-> 300, 1461, 1883
+301 <-> 880, 1698
+302 <-> 1221
+303 <-> 279, 375
+304 <-> 11, 53, 967, 1362
+305 <-> 777
+306 <-> 344
+307 <-> 582, 770
+308 <-> 792, 1895
+309 <-> 539
+310 <-> 390, 1482
+311 <-> 441, 1294
+312 <-> 217, 743
+313 <-> 1522
+314 <-> 200, 502, 835, 1084, 1134
+315 <-> 1970
+316 <-> 259
+317 <-> 1302, 1437
+318 <-> 365
+319 <-> 128, 976
+320 <-> 1056, 1466, 1778
+321 <-> 202
+322 <-> 220, 1431
+323 <-> 838, 1465, 1895
+324 <-> 443
+325 <-> 1056
+326 <-> 463, 1741, 1761
+327 <-> 20, 128, 681, 1797
+328 <-> 328, 348
+329 <-> 378, 1738
+330 <-> 459
+331 <-> 204, 331
+332 <-> 126, 288
+333 <-> 70, 107, 1747
+334 <-> 517, 614
+335 <-> 1259
+336 <-> 248, 550, 1485
+337 <-> 337
+338 <-> 27, 1212, 1264
+339 <-> 430, 963
+340 <-> 769
+341 <-> 341
+342 <-> 593, 718, 895
+343 <-> 569
+344 <-> 306, 1440, 1650, 1742
+345 <-> 61, 1006, 1664
+346 <-> 448, 1928
+347 <-> 1022, 1052
+348 <-> 328, 1232
+349 <-> 1232
+350 <-> 1, 526, 1086, 1821
+351 <-> 584
+352 <-> 518, 686, 1324, 1437
+353 <-> 136, 936
+354 <-> 1470
+355 <-> 1173, 1814
+356 <-> 698
+357 <-> 93
+358 <-> 737, 986, 1169
+359 <-> 4
+360 <-> 363
+361 <-> 417, 841
+362 <-> 928
+363 <-> 360, 1751
+364 <-> 66, 364, 1596
+365 <-> 318, 1766
+366 <-> 366
+367 <-> 367
+368 <-> 1897
+369 <-> 25, 369, 1460
+370 <-> 370
+371 <-> 1568
+372 <-> 110, 582
+373 <-> 24, 178, 1924
+374 <-> 374
+375 <-> 303
+376 <-> 1331, 1990
+377 <-> 388, 601, 837
+378 <-> 329
+379 <-> 623
+380 <-> 671
+381 <-> 938
+382 <-> 39, 1458
+383 <-> 383, 1490, 1763, 1844
+384 <-> 832
+385 <-> 745, 1673
+386 <-> 218, 779
+387 <-> 238
+388 <-> 377, 1817
+389 <-> 231, 656, 1038, 1960
+390 <-> 96, 244, 310, 721, 1094, 1501
+391 <-> 438, 819, 1870
+392 <-> 697
+393 <-> 443, 1275, 1463
+394 <-> 480
+395 <-> 59, 190, 1117, 1997
+396 <-> 595
+397 <-> 208, 397, 1727
+398 <-> 1153
+399 <-> 84
+400 <-> 825, 1693
+401 <-> 812
+402 <-> 1191
+403 <-> 1446, 1820
+404 <-> 442, 871, 1637
+405 <-> 426, 1067
+406 <-> 460, 1290
+407 <-> 1951
+408 <-> 1335, 1391, 1897
+409 <-> 984, 1217
+410 <-> 8, 1607
+411 <-> 135, 411, 454, 1393
+412 <-> 120
+413 <-> 1208
+414 <-> 113
+415 <-> 415, 1803
+416 <-> 428
+417 <-> 361
+418 <-> 1129
+419 <-> 259
+420 <-> 628
+421 <-> 1485
+422 <-> 1110, 1785
+423 <-> 1418
+424 <-> 30, 263
+425 <-> 1497
+426 <-> 114, 405, 780
+427 <-> 427
+428 <-> 416, 782
+429 <-> 429
+430 <-> 339, 1513
+431 <-> 886, 1408
+432 <-> 586, 1725
+433 <-> 889, 1753, 1881
+434 <-> 1078, 1120
+435 <-> 660, 1194, 1662
+436 <-> 223, 1332
+437 <-> 1487
+438 <-> 391
+439 <-> 290
+440 <-> 1828
+441 <-> 191, 311, 1003, 1561, 1702
+442 <-> 164, 232, 404
+443 <-> 324, 393
+444 <-> 1215, 1251
+445 <-> 792
+446 <-> 1015, 1392
+447 <-> 777
+448 <-> 346, 1097
+449 <-> 1117
+450 <-> 1395
+451 <-> 1414, 1845
+452 <-> 138
+453 <-> 90, 453
+454 <-> 411
+455 <-> 1801
+456 <-> 456, 791, 902, 1111
+457 <-> 457, 1075, 1384
+458 <-> 770, 1600
+459 <-> 101, 201, 330, 1108
+460 <-> 406, 1529
+461 <-> 277, 839, 1552
+462 <-> 204
+463 <-> 326, 1899
+464 <-> 1098
+465 <-> 764, 1630, 1779
+466 <-> 627
+467 <-> 904
+468 <-> 108, 1849
+469 <-> 469, 603, 780
+470 <-> 88, 1276, 1533
+471 <-> 1492
+472 <-> 472, 1048, 1409, 1518, 1758
+473 <-> 233, 1413, 1826
+474 <-> 780
+475 <-> 1005, 1968
+476 <-> 809
+477 <-> 2
+478 <-> 753
+479 <-> 479, 1296, 1615
+480 <-> 394, 775, 1623
+481 <-> 774, 1604
+482 <-> 763
+483 <-> 522, 591, 1344
+484 <-> 894, 1219
+485 <-> 507, 1114, 1250, 1351
+486 <-> 1099, 1879
+487 <-> 487
+488 <-> 282, 1164, 1189
+489 <-> 900, 1889
+490 <-> 165, 918, 1007
+491 <-> 1800
+492 <-> 202
+493 <-> 615, 899, 1200, 1326
+494 <-> 139, 193
+495 <-> 704, 1988
+496 <-> 496
+497 <-> 1149, 1216
+498 <-> 69, 84, 153
+499 <-> 1125, 1149
+500 <-> 642
+501 <-> 524, 1176
+502 <-> 145, 314
+503 <-> 1330, 1626
+504 <-> 68, 699
+505 <-> 672
+506 <-> 1083
+507 <-> 485, 1743
+508 <-> 520, 1236, 1296
+509 <-> 1676
+510 <-> 875, 1066
+511 <-> 511
+512 <-> 512, 1240
+513 <-> 705, 812
+514 <-> 1758
+515 <-> 1165, 1168
+516 <-> 811
+517 <-> 334, 1132, 1339
+518 <-> 352, 1674
+519 <-> 824, 1396, 1659
+520 <-> 508
+521 <-> 52, 915
+522 <-> 83, 483, 1637
+523 <-> 1317
+524 <-> 501
+525 <-> 525
+526 <-> 350, 850, 930
+527 <-> 527, 1338, 1449
+528 <-> 156
+529 <-> 98
+530 <-> 691, 1175, 1505
+531 <-> 247, 785, 1389, 1623
+532 <-> 1159
+533 <-> 1152, 1297
+534 <-> 246
+535 <-> 1144, 1491, 1622, 1935
+536 <-> 708
+537 <-> 279, 1656
+538 <-> 268, 538, 1756
+539 <-> 309, 802
+540 <-> 1239
+541 <-> 119, 1679, 1741
+542 <-> 1204
+543 <-> 642, 1926
+544 <-> 298
+545 <-> 1971
+546 <-> 268
+547 <-> 1465, 1613, 1614
+548 <-> 160
+549 <-> 820
+550 <-> 336
+551 <-> 1733
+552 <-> 552, 1563
+553 <-> 1654
+554 <-> 554, 1641, 1665
+555 <-> 555
+556 <-> 15
+557 <-> 177, 1204
+558 <-> 207, 1004
+559 <-> 47, 1297
+560 <-> 1189, 1709
+561 <-> 1013, 1709
+562 <-> 762, 912
+563 <-> 563
+564 <-> 585
+565 <-> 1333, 1494
+566 <-> 566, 938
+567 <-> 894
+568 <-> 586, 1397
+569 <-> 343, 1572
+570 <-> 704, 1220, 1459
+571 <-> 1451
+572 <-> 651, 846, 909
+573 <-> 1881
+574 <-> 1866
+575 <-> 1379
+576 <-> 1060, 1210
+577 <-> 1837
+578 <-> 1346
+579 <-> 87
+580 <-> 1509
+581 <-> 252, 1548
+582 <-> 307, 372
+583 <-> 624, 1599, 1753, 1908
+584 <-> 351, 774
+585 <-> 564, 977
+586 <-> 432, 568, 773, 1789
+587 <-> 826
+588 <-> 1854
+589 <-> 719, 845, 1214
+590 <-> 158, 1259
+591 <-> 483
+592 <-> 743, 898
+593 <-> 172, 342, 852, 943, 1053
+594 <-> 594
+595 <-> 396, 928
+596 <-> 291, 596
+597 <-> 597
+598 <-> 1980
+599 <-> 202, 1764
+600 <-> 204
+601 <-> 54, 377, 1340
+602 <-> 1718, 1866
+603 <-> 469, 789
+604 <-> 1006, 1033, 1626
+605 <-> 1535
+606 <-> 176
+607 <-> 236, 911, 1218
+608 <-> 1193, 1825
+609 <-> 1657
+610 <-> 733, 841
+611 <-> 747, 1892
+612 <-> 1098, 1196, 1267
+613 <-> 5, 1372
+614 <-> 334, 1492
+615 <-> 493, 798
+616 <-> 1025, 1940
+617 <-> 6, 666, 1155
+618 <-> 762, 1621, 1895
+619 <-> 1187
+620 <-> 95, 1761
+621 <-> 254
+622 <-> 784, 1476
+623 <-> 227, 379, 1081
+624 <-> 583
+625 <-> 296, 1222, 1882
+626 <-> 905
+627 <-> 466, 1692
+628 <-> 238, 420, 1004, 1412
+629 <-> 1532
+630 <-> 630
+631 <-> 977, 1092, 1458, 1713
+632 <-> 777, 1049, 1404
+633 <-> 994
+634 <-> 277
+635 <-> 635
+636 <-> 703, 1756
+637 <-> 840, 1585
+638 <-> 76, 180, 1373
+639 <-> 218, 639, 1835
+640 <-> 1559
+641 <-> 1800
+642 <-> 500, 543
+643 <-> 1808
+644 <-> 282
+645 <-> 1253, 1475
+646 <-> 283, 646, 864
+647 <-> 93, 1508
+648 <-> 134, 956, 1762
+649 <-> 37, 82
+650 <-> 1480, 1916
+651 <-> 151, 572, 1357
+652 <-> 1261
+653 <-> 294, 653
+654 <-> 129, 1139, 1176
+655 <-> 1251, 1656
+656 <-> 389
+657 <-> 1604
+658 <-> 201, 1208
+659 <-> 23, 133, 1868
+660 <-> 435
+661 <-> 1634
+662 <-> 1667, 1701
+663 <-> 974
+664 <-> 664, 1167
+665 <-> 172, 1370
+666 <-> 617
+667 <-> 1824
+668 <-> 952, 1605
+669 <-> 1822
+670 <-> 44, 670
+671 <-> 380, 1145, 1693, 1906
+672 <-> 505, 693
+673 <-> 1610
+674 <-> 1249, 1302
+675 <-> 150, 777
+676 <-> 1675
+677 <-> 910, 1282
+678 <-> 99, 1004
+679 <-> 679
+680 <-> 264, 917, 1137, 1687
+681 <-> 140, 327, 746
+682 <-> 682
+683 <-> 794, 1315
+684 <-> 1000, 1342
+685 <-> 1111, 1348, 1523, 1932
+686 <-> 352
+687 <-> 979, 1667
+688 <-> 92, 177
+689 <-> 937, 1939
+690 <-> 35, 1608
+691 <-> 530, 691
+692 <-> 1871
+693 <-> 97, 672
+694 <-> 72, 694
+695 <-> 1076
+696 <-> 1954
+697 <-> 66, 392, 1892
+698 <-> 122, 356, 698
+699 <-> 504, 1470
+700 <-> 292, 1407
+701 <-> 1231, 1327
+702 <-> 32
+703 <-> 636, 1083, 1210
+704 <-> 495, 570
+705 <-> 174, 513, 1332
+706 <-> 69, 1088
+707 <-> 1036, 1867
+708 <-> 536, 805, 1958
+709 <-> 709
+710 <-> 915, 1578
+711 <-> 711, 1478
+712 <-> 813, 927
+713 <-> 70, 116, 1469, 1539
+714 <-> 41
+715 <-> 840, 1473, 1562, 1705
+716 <-> 716
+717 <-> 949, 1864
+718 <-> 259, 342, 1557, 1853
+719 <-> 589, 781, 802
+720 <-> 1125
+721 <-> 390, 878
+722 <-> 1026
+723 <-> 1039, 1467
+724 <-> 1535
+725 <-> 883
+726 <-> 1832, 1917
+727 <-> 1245
+728 <-> 1291
+729 <-> 1203
+730 <-> 824
+731 <-> 1984
+732 <-> 187, 1214
+733 <-> 610, 1079, 1198
+734 <-> 206, 872, 1479, 1855
+735 <-> 124, 1371
+736 <-> 113, 736
+737 <-> 358, 1426
+738 <-> 974, 1024, 1717, 1842
+739 <-> 1489
+740 <-> 1634
+741 <-> 873, 1695
+742 <-> 1700
+743 <-> 312, 592, 1493
+744 <-> 948, 1306, 1400
+745 <-> 385, 1029, 1315, 1474
+746 <-> 285, 681, 793
+747 <-> 169, 611, 814, 1548
+748 <-> 748
+749 <-> 1134, 1498
+750 <-> 146
+751 <-> 155, 783, 1856
+752 <-> 122, 1417
+753 <-> 478, 1505
+754 <-> 810, 1742, 1955
+755 <-> 1735, 1847
+756 <-> 978, 1095
+757 <-> 1153, 1730
+758 <-> 198, 1476
+759 <-> 759
+760 <-> 168
+761 <-> 1496
+762 <-> 562, 618
+763 <-> 246, 482, 1258
+764 <-> 465
+765 <-> 186
+766 <-> 1448
+767 <-> 893, 896, 1019
+768 <-> 1730
+769 <-> 340, 1043, 1065
+770 <-> 307, 458, 1453
+771 <-> 1168
+772 <-> 911
+773 <-> 586
+774 <-> 481, 584, 774, 1148
+775 <-> 480, 1485, 1894
+776 <-> 926
+777 <-> 305, 447, 632, 675
+778 <-> 1690
+779 <-> 386
+780 <-> 426, 469, 474
+781 <-> 719, 1543
+782 <-> 98, 428, 903
+783 <-> 751, 1558
+784 <-> 219, 622
+785 <-> 531
+786 <-> 197, 911, 1312
+787 <-> 120, 880
+788 <-> 1089, 1487
+789 <-> 603, 844, 1681, 1731
+790 <-> 790, 1126
+791 <-> 456, 1363
+792 <-> 308, 445
+793 <-> 746
+794 <-> 683, 951
+795 <-> 1732, 1986
+796 <-> 1210, 1878
+797 <-> 804
+798 <-> 615
+799 <-> 1651
+800 <-> 851, 860, 1907
+801 <-> 1110, 1537, 1773
+802 <-> 539, 719
+803 <-> 156, 1528
+804 <-> 266, 797, 1549
+805 <-> 89, 708, 962
+806 <-> 1429
+807 <-> 1800
+808 <-> 873, 1421
+809 <-> 476, 809
+810 <-> 754
+811 <-> 516, 965
+812 <-> 401, 513
+813 <-> 712, 1023
+814 <-> 747
+815 <-> 1145
+816 <-> 1413
+817 <-> 1235
+818 <-> 237, 240, 1506
+819 <-> 391, 857
+820 <-> 549, 1162
+821 <-> 1410, 1607
+822 <-> 30, 1485
+823 <-> 1445, 1454
+824 <-> 519, 730, 1824
+825 <-> 400, 1381, 1472
+826 <-> 587, 1040, 1198, 1618
+827 <-> 40
+828 <-> 1870
+829 <-> 149
+830 <-> 16
+831 <-> 255
+832 <-> 384, 1890, 1913
+833 <-> 1529
+834 <-> 834
+835 <-> 314
+836 <-> 216, 1166
+837 <-> 377, 988
+838 <-> 236, 323
+839 <-> 461, 1825
+840 <-> 211, 637, 715, 1710
+841 <-> 361, 610, 841, 1815
+842 <-> 1669
+843 <-> 874, 1468
+844 <-> 789
+845 <-> 143, 589, 1053
+846 <-> 572
+847 <-> 1285
+848 <-> 292
+849 <-> 849
+850 <-> 526
+851 <-> 800, 1368, 1497
+852 <-> 593, 1798
+853 <-> 1339, 1593, 1749
+854 <-> 1445, 1787
+855 <-> 1026, 1356
+856 <-> 132
+857 <-> 819
+858 <-> 1511
+859 <-> 1191
+860 <-> 284, 800, 1619
+861 <-> 111, 1266
+862 <-> 60, 281
+863 <-> 1605
+864 <-> 646
+865 <-> 873
+866 <-> 255, 924
+867 <-> 871, 1707
+868 <-> 12
+869 <-> 96, 1278
+870 <-> 1307
+871 <-> 404, 867, 1482
+872 <-> 734, 1200
+873 <-> 741, 808, 865, 873
+874 <-> 255, 843, 1201
+875 <-> 510, 1325, 1797
+876 <-> 1504, 1825
+877 <-> 253
+878 <-> 721
+879 <-> 948, 1291, 1847
+880 <-> 85, 184, 301, 787, 1503, 1617
+881 <-> 1688
+882 <-> 882
+883 <-> 725, 1582, 1874
+884 <-> 1352
+885 <-> 885, 1974
+886 <-> 431, 1650
+887 <-> 101
+888 <-> 102, 152
+889 <-> 433, 1016
+890 <-> 890
+891 <-> 12
+892 <-> 1402, 1923
+893 <-> 767
+894 <-> 484, 567
+895 <-> 342, 1123, 1158, 1648
+896 <-> 767
+897 <-> 80, 986, 1418
+898 <-> 205, 592, 1019
+899 <-> 493, 1053
+900 <-> 489
+901 <-> 901
+902 <-> 456
+903 <-> 782
+904 <-> 467, 904, 1924
+905 <-> 626, 1881
+906 <-> 245, 257, 276
+907 <-> 907, 1101, 1826
+908 <-> 908, 1230
+909 <-> 34, 572, 1186
+910 <-> 677, 961
+911 <-> 607, 772, 786, 1196, 1405
+912 <-> 562
+913 <-> 1636
+914 <-> 1892, 1963
+915 <-> 150, 521, 710
+916 <-> 244
+917 <-> 23, 680, 1336
+918 <-> 490, 1483
+919 <-> 96
+920 <-> 1880
+921 <-> 921
+922 <-> 975, 1255
+923 <-> 228, 1202, 1452
+924 <-> 866
+925 <-> 296, 1270
+926 <-> 280, 776, 1170, 1788, 1970
+927 <-> 712
+928 <-> 362, 595, 1103
+929 <-> 929
+930 <-> 65, 526, 1256, 1500, 1722
+931 <-> 183, 280, 1484
+932 <-> 1737
+933 <-> 299
+934 <-> 1387, 1851
+935 <-> 136, 935, 1537, 1775
+936 <-> 353
+937 <-> 689, 1347
+938 <-> 381, 566
+939 <-> 56, 1762
+940 <-> 1559, 1860
+941 <-> 1504, 1671, 1723, 1724
+942 <-> 1293
+943 <-> 21, 593
+944 <-> 1335
+945 <-> 1650
+946 <-> 1556
+947 <-> 26
+948 <-> 744, 879
+949 <-> 717, 1604
+950 <-> 1201, 1322
+951 <-> 794
+952 <-> 668, 1371
+953 <-> 1272
+954 <-> 954
+955 <-> 74
+956 <-> 648, 1870
+957 <-> 44, 1769
+958 <-> 13, 1388, 1660
+959 <-> 959
+960 <-> 153
+961 <-> 910
+962 <-> 17, 805
+963 <-> 339, 1783
+964 <-> 1100
+965 <-> 811, 1677
+966 <-> 966
+967 <-> 304, 1029, 1269, 1910
+968 <-> 81, 1091
+969 <-> 1379, 1693
+970 <-> 1289
+971 <-> 971
+972 <-> 70
+973 <-> 973
+974 <-> 663, 738, 1005
+975 <-> 922
+976 <-> 319
+977 <-> 585, 631
+978 <-> 756, 1628
+979 <-> 687, 979
+980 <-> 1151, 1317
+981 <-> 1199, 1902
+982 <-> 1223
+983 <-> 1931
+984 <-> 2, 409
+985 <-> 985
+986 <-> 358, 897, 1564
+987 <-> 987, 1644
+988 <-> 36, 837
+989 <-> 1275
+990 <-> 990, 1295
+991 <-> 207, 1415
+992 <-> 1242, 1397, 1467, 1579
+993 <-> 1042, 1767
+994 <-> 633, 1595, 1813
+995 <-> 194
+996 <-> 1096, 1369
+997 <-> 1231, 1973
+998 <-> 1367
+999 <-> 999
+1000 <-> 684, 1078
+1001 <-> 219
+1002 <-> 1442
+1003 <-> 441
+1004 <-> 558, 628, 678
+1005 <-> 475, 974
+1006 <-> 103, 345, 604
+1007 <-> 490, 1274
+1008 <-> 1708, 1819
+1009 <-> 1009, 1118
+1010 <-> 1223, 1803
+1011 <-> 1867
+1012 <-> 299, 1923
+1013 <-> 561, 1187, 1477, 1926
+1014 <-> 1861
+1015 <-> 446, 1015, 1858
+1016 <-> 889
+1017 <-> 1435
+1018 <-> 42, 98
+1019 <-> 767, 898, 1764
+1020 <-> 1020
+1021 <-> 1666
+1022 <-> 347, 1022, 1310
+1023 <-> 26, 813, 1109, 1538, 1988
+1024 <-> 195, 738
+1025 <-> 616
+1026 <-> 722, 855, 1337, 1415
+1027 <-> 241, 1309
+1028 <-> 1028
+1029 <-> 745, 967
+1030 <-> 1577, 1689
+1031 <-> 1031
+1032 <-> 125
+1033 <-> 604, 1127, 1194
+1034 <-> 192
+1035 <-> 1992
+1036 <-> 707, 1509
+1037 <-> 1347
+1038 <-> 389
+1039 <-> 723, 1535
+1040 <-> 826, 1245, 1918
+1041 <-> 281
+1042 <-> 993
+1043 <-> 67, 769, 1142
+1044 <-> 1690
+1045 <-> 287
+1046 <-> 1561
+1047 <-> 4
+1048 <-> 472, 1703
+1049 <-> 632, 1816
+1050 <-> 1157, 1899
+1051 <-> 1818
+1052 <-> 347, 1904
+1053 <-> 593, 845, 899
+1054 <-> 1983
+1055 <-> 1599
+1056 <-> 41, 320, 325, 1567
+1057 <-> 1372, 1569
+1058 <-> 185
+1059 <-> 1112, 1939
+1060 <-> 576, 1314, 1557, 1751, 1752
+1061 <-> 1285
+1062 <-> 1162, 1338, 1739
+1063 <-> 1291
+1064 <-> 132
+1065 <-> 769, 1317
+1066 <-> 510
+1067 <-> 405, 1452, 1953
+1068 <-> 1200
+1069 <-> 1069
+1070 <-> 19
+1071 <-> 1361, 1382
+1072 <-> 1307, 1534
+1073 <-> 1282
+1074 <-> 1323, 1653
+1075 <-> 457
+1076 <-> 695, 1703
+1077 <-> 1180
+1078 <-> 434, 1000
+1079 <-> 733
+1080 <-> 130, 1757
+1081 <-> 202, 623
+1082 <-> 1082
+1083 <-> 506, 703, 1279
+1084 <-> 314, 1812
+1085 <-> 242
+1086 <-> 350
+1087 <-> 1524
+1088 <-> 706, 1900
+1089 <-> 788
+1090 <-> 1260
+1091 <-> 968, 1522
+1092 <-> 173, 631, 1850
+1093 <-> 1093, 1390
+1094 <-> 182, 390
+1095 <-> 756
+1096 <-> 996
+1097 <-> 448
+1098 <-> 464, 612
+1099 <-> 292, 486
+1100 <-> 964, 1326
+1101 <-> 907, 1799
+1102 <-> 1927
+1103 <-> 928, 1103
+1104 <-> 252
+1105 <-> 166, 297
+1106 <-> 1106, 1896
+1107 <-> 1107
+1108 <-> 459
+1109 <-> 1023
+1110 <-> 422, 801
+1111 <-> 456, 685
+1112 <-> 262, 1059
+1113 <-> 1267
+1114 <-> 485
+1115 <-> 1115, 1827
+1116 <-> 1596
+1117 <-> 395, 449, 1382
+1118 <-> 1009
+1119 <-> 281, 1670
+1120 <-> 434, 1165
+1121 <-> 167, 1121
+1122 <-> 1809
+1123 <-> 895
+1124 <-> 283
+1125 <-> 499, 720, 1308
+1126 <-> 790, 1526
+1127 <-> 1033
+1128 <-> 1500
+1129 <-> 168, 418, 1642, 1947
+1130 <-> 1454
+1131 <-> 1683
+1132 <-> 517, 1784
+1133 <-> 288
+1134 <-> 314, 749, 1586
+1135 <-> 102
+1136 <-> 1136
+1137 <-> 680
+1138 <-> 1755
+1139 <-> 654
+1140 <-> 1140
+1141 <-> 1141
+1142 <-> 1043, 1862
+1143 <-> 1550
+1144 <-> 535, 1144, 1849
+1145 <-> 209, 671, 815, 1268
+1146 <-> 145
+1147 <-> 134
+1148 <-> 774
+1149 <-> 36, 497, 499, 1652
+1150 <-> 271, 1150
+1151 <-> 51, 980, 1651
+1152 <-> 533
+1153 <-> 398, 757
+1154 <-> 1313
+1155 <-> 145, 617, 1336, 1721
+1156 <-> 1838
+1157 <-> 10, 1050
+1158 <-> 895
+1159 <-> 532, 1708
+1160 <-> 1357
+1161 <-> 1200, 1999
+1162 <-> 820, 1062
+1163 <-> 1821
+1164 <-> 488, 1572
+1165 <-> 515, 1120
+1166 <-> 36, 836
+1167 <-> 664
+1168 <-> 11, 515, 771, 1967
+1169 <-> 358
+1170 <-> 926
+1171 <-> 1666, 1827
+1172 <-> 262, 1439
+1173 <-> 123, 355, 1341
+1174 <-> 1204, 1525
+1175 <-> 530
+1176 <-> 501, 654
+1177 <-> 1311, 1796
+1178 <-> 186, 1536, 1551, 1853
+1179 <-> 1822, 1947
+1180 <-> 1077, 1264
+1181 <-> 163, 1181
+1182 <-> 225
+1183 <-> 1237, 1715, 1798
+1184 <-> 41
+1185 <-> 297, 1185
+1186 <-> 909
+1187 <-> 619, 1013
+1188 <-> 1698
+1189 <-> 488, 560
+1190 <-> 1834, 1933
+1191 <-> 402, 859, 1191
+1192 <-> 1839
+1193 <-> 608, 1438
+1194 <-> 435, 1033, 1754
+1195 <-> 46, 1828
+1196 <-> 612, 911, 1975
+1197 <-> 1503, 1854
+1198 <-> 733, 826
+1199 <-> 981
+1200 <-> 493, 872, 1068, 1161
+1201 <-> 874, 950
+1202 <-> 923
+1203 <-> 40, 729, 1719
+1204 <-> 542, 557, 1174
+1205 <-> 1332
+1206 <-> 148, 182
+1207 <-> 1207
+1208 <-> 91, 273, 413, 658, 1234
+1209 <-> 1995
+1210 <-> 576, 703, 796
+1211 <-> 1227, 1891
+1212 <-> 338, 1362
+1213 <-> 6
+1214 <-> 589, 732
+1215 <-> 4, 100, 444, 1842
+1216 <-> 497, 1745
+1217 <-> 409, 1354
+1218 <-> 607
+1219 <-> 29, 484, 1712
+1220 <-> 570
+1221 <-> 302, 1429
+1222 <-> 625, 1412
+1223 <-> 260, 982, 1010, 1591
+1224 <-> 9, 258, 278, 1506, 1893
+1225 <-> 1906
+1226 <-> 1226
+1227 <-> 1211
+1228 <-> 1773
+1229 <-> 18
+1230 <-> 908
+1231 <-> 701, 997
+1232 <-> 348, 349
+1233 <-> 59
+1234 <-> 1208
+1235 <-> 817, 1994
+1236 <-> 508
+1237 <-> 1183
+1238 <-> 1529
+1239 <-> 540, 1524, 1552
+1240 <-> 512
+1241 <-> 1241
+1242 <-> 992, 1685
+1243 <-> 1934
+1244 <-> 1574, 1839
+1245 <-> 727, 1040
+1246 <-> 1380
+1247 <-> 1506, 1923
+1248 <-> 50, 1610
+1249 <-> 674
+1250 <-> 485
+1251 <-> 444, 655, 1718
+1252 <-> 266, 1862
+1253 <-> 645, 1709
+1254 <-> 1254
+1255 <-> 922, 1255, 1341
+1256 <-> 930, 1346
+1257 <-> 1465, 1844
+1258 <-> 763
+1259 <-> 335, 590, 1259
+1260 <-> 129, 1090
+1261 <-> 652, 1261, 1838
+1262 <-> 1262, 1912
+1263 <-> 7, 1438, 1554
+1264 <-> 338, 1180
+1265 <-> 269, 1265
+1266 <-> 861, 1281, 1423
+1267 <-> 612, 1113, 1289
+1268 <-> 1145
+1269 <-> 967
+1270 <-> 94, 215, 925, 1860
+1271 <-> 1376
+1272 <-> 223, 953
+1273 <-> 1301
+1274 <-> 1007, 1860
+1275 <-> 216, 393, 989, 1275
+1276 <-> 470
+1277 <-> 288
+1278 <-> 869
+1279 <-> 1083, 1755
+1280 <-> 1588
+1281 <-> 1266
+1282 <-> 677, 1073, 1575, 1625
+1283 <-> 1571
+1284 <-> 1828
+1285 <-> 847, 1061, 1641
+1286 <-> 1494, 1649, 1889
+1287 <-> 159
+1288 <-> 142, 1288
+1289 <-> 970, 1267, 1668
+1290 <-> 406
+1291 <-> 728, 879, 1063, 1885
+1292 <-> 1407
+1293 <-> 942, 1318, 1459
+1294 <-> 311, 1754
+1295 <-> 990, 1512
+1296 <-> 130, 479, 508
+1297 <-> 533, 559
+1298 <-> 1839
+1299 <-> 70
+1300 <-> 37, 1886, 1998
+1301 <-> 1273, 1340
+1302 <-> 317, 674, 1485
+1303 <-> 161, 1624
+1304 <-> 1304
+1305 <-> 1410
+1306 <-> 744
+1307 <-> 20, 870, 1072
+1308 <-> 194, 212, 1125
+1309 <-> 251, 1027
+1310 <-> 22, 1022, 1777
+1311 <-> 1177
+1312 <-> 786
+1313 <-> 1154, 1706
+1314 <-> 1060
+1315 <-> 683, 745
+1316 <-> 1793, 1898
+1317 <-> 523, 980, 1065, 1787
+1318 <-> 1293
+1319 <-> 1319
+1320 <-> 1320
+1321 <-> 206
+1322 <-> 950, 1957
+1323 <-> 1074, 1823
+1324 <-> 352
+1325 <-> 875, 1740
+1326 <-> 493, 1100
+1327 <-> 701, 1633
+1328 <-> 1, 55
+1329 <-> 1633
+1330 <-> 503, 1687, 1782
+1331 <-> 376, 1531, 1766
+1332 <-> 436, 705, 1205
+1333 <-> 565
+1334 <-> 1805
+1335 <-> 408, 944
+1336 <-> 917, 1155
+1337 <-> 1026
+1338 <-> 527, 1062
+1339 <-> 517, 853
+1340 <-> 601, 1301, 1708
+1341 <-> 1173, 1255
+1342 <-> 684
+1343 <-> 210
+1344 <-> 121, 483
+1345 <-> 175
+1346 <-> 578, 1256
+1347 <-> 937, 1037, 1735
+1348 <-> 685
+1349 <-> 275, 1594
+1350 <-> 127, 130
+1351 <-> 485
+1352 <-> 884, 1352
+1353 <-> 1604, 1800
+1354 <-> 1217
+1355 <-> 1355, 1985
+1356 <-> 855, 1840
+1357 <-> 651, 1160, 1388
+1358 <-> 92
+1359 <-> 112
+1360 <-> 1455
+1361 <-> 1071, 1909
+1362 <-> 304, 1212
+1363 <-> 791
+1364 <-> 161, 1426
+1365 <-> 1365
+1366 <-> 1366, 1433
+1367 <-> 133, 998
+1368 <-> 851
+1369 <-> 12, 996, 1425
+1370 <-> 665
+1371 <-> 13, 735, 952, 1371, 1857
+1372 <-> 613, 1057
+1373 <-> 638, 1511
+1374 <-> 230, 1593
+1375 <-> 104
+1376 <-> 179, 1271, 1639
+1377 <-> 291
+1378 <-> 1919
+1379 <-> 575, 969
+1380 <-> 1246, 1501, 1903
+1381 <-> 73, 825, 1922
+1382 <-> 1071, 1117, 1541, 1810
+1383 <-> 111
+1384 <-> 457
+1385 <-> 1878, 1966
+1386 <-> 1396
+1387 <-> 229, 934, 1853
+1388 <-> 958, 1357, 1424
+1389 <-> 531
+1390 <-> 1093, 1603
+1391 <-> 408
+1392 <-> 446
+1393 <-> 411
+1394 <-> 1866
+1395 <-> 450, 1851
+1396 <-> 519, 1386
+1397 <-> 79, 568, 992
+1398 <-> 224
+1399 <-> 1443, 1799, 1915
+1400 <-> 744
+1401 <-> 1685
+1402 <-> 892
+1403 <-> 1714
+1404 <-> 632
+1405 <-> 911, 1532
+1406 <-> 233, 1606
+1407 <-> 700, 1292
+1408 <-> 431, 1408, 1416
+1409 <-> 211, 472
+1410 <-> 821, 1305
+1411 <-> 1653, 1993
+1412 <-> 628, 1222
+1413 <-> 473, 816
+1414 <-> 451
+1415 <-> 991, 1026
+1416 <-> 1408
+1417 <-> 752
+1418 <-> 423, 897
+1419 <-> 2, 30
+1420 <-> 1420
+1421 <-> 808
+1422 <-> 58, 104
+1423 <-> 1266
+1424 <-> 1388
+1425 <-> 1369
+1426 <-> 737, 1364, 1847, 1913
+1427 <-> 246, 274
+1428 <-> 1964
+1429 <-> 76, 806, 1221
+1430 <-> 1430
+1431 <-> 322
+1432 <-> 1719
+1433 <-> 1366, 1988
+1434 <-> 89, 106
+1435 <-> 1017, 1730
+1436 <-> 1997
+1437 <-> 317, 352
+1438 <-> 1193, 1263
+1439 <-> 1172
+1440 <-> 344
+1441 <-> 37
+1442 <-> 1002, 1860
+1443 <-> 1399
+1444 <-> 31, 298
+1445 <-> 823, 854
+1446 <-> 113, 403
+1447 <-> 1508, 1720
+1448 <-> 766, 1791
+1449 <-> 527
+1450 <-> 134
+1451 <-> 88, 571
+1452 <-> 923, 1067
+1453 <-> 770
+1454 <-> 95, 823, 1130, 1454
+1455 <-> 1360, 1533
+1456 <-> 1456, 1489, 1529
+1457 <-> 114, 149, 1956
+1458 <-> 382, 631, 1458
+1459 <-> 570, 1293
+1460 <-> 202, 369
+1461 <-> 300
+1462 <-> 1636
+1463 <-> 393, 1659, 1939
+1464 <-> 31
+1465 <-> 3, 323, 547, 1257, 1732
+1466 <-> 320
+1467 <-> 723, 992, 1706
+1468 <-> 154, 843
+1469 <-> 713
+1470 <-> 354, 699
+1471 <-> 1471
+1472 <-> 825
+1473 <-> 715
+1474 <-> 745
+1475 <-> 645
+1476 <-> 622, 758
+1477 <-> 1013, 1645, 1669
+1478 <-> 711
+1479 <-> 734
+1480 <-> 650
+1481 <-> 1481
+1482 <-> 310, 871
+1483 <-> 918, 1504
+1484 <-> 931
+1485 <-> 336, 421, 775, 822, 1302
+1486 <-> 157, 1631
+1487 <-> 236, 437, 788, 1980
+1488 <-> 1560
+1489 <-> 739, 1456
+1490 <-> 383
+1491 <-> 535
+1492 <-> 471, 614
+1493 <-> 743
+1494 <-> 565, 1286
+1495 <-> 1627
+1496 <-> 761, 1496
+1497 <-> 249, 425, 851
+1498 <-> 749
+1499 <-> 231
+1500 <-> 930, 1128
+1501 <-> 390, 1380
+1502 <-> 1713
+1503 <-> 152, 880, 1197
+1504 <-> 47, 876, 941, 1483, 1945
+1505 <-> 295, 530, 753
+1506 <-> 818, 1224, 1247
+1507 <-> 141, 216, 1565, 1726
+1508 <-> 647, 1447, 1521, 1590
+1509 <-> 580, 1036, 1605, 1609
+1510 <-> 40, 1885
+1511 <-> 858, 1373
+1512 <-> 1295
+1513 <-> 78, 430
+1514 <-> 1772
+1515 <-> 153
+1516 <-> 144, 260, 1818
+1517 <-> 32, 1616, 1806
+1518 <-> 472
+1519 <-> 259
+1520 <-> 94, 1542
+1521 <-> 1508
+1522 <-> 313, 1091, 1631
+1523 <-> 685
+1524 <-> 241, 1087, 1239
+1525 <-> 1174
+1526 <-> 1126
+1527 <-> 1835
+1528 <-> 803
+1529 <-> 460, 833, 1238, 1456
+1530 <-> 1784
+1531 <-> 1331
+1532 <-> 629, 1405
+1533 <-> 470, 1455, 1533, 1796
+1534 <-> 1072
+1535 <-> 605, 724, 1039
+1536 <-> 1178
+1537 <-> 273, 801, 935
+1538 <-> 1023, 1734
+1539 <-> 713
+1540 <-> 1748
+1541 <-> 1382, 1683
+1542 <-> 1520
+1543 <-> 781
+1544 <-> 1631
+1545 <-> 1910
+1546 <-> 1942
+1547 <-> 260
+1548 <-> 581, 747
+1549 <-> 804
+1550 <-> 159, 1143
+1551 <-> 1178
+1552 <-> 461, 1239, 1846
+1553 <-> 1553, 1982
+1554 <-> 68, 85, 1263, 1597
+1555 <-> 1713, 1931
+1556 <-> 946, 1556
+1557 <-> 718, 1060
+1558 <-> 783
+1559 <-> 640, 940
+1560 <-> 1488, 1806, 1898, 1949
+1561 <-> 441, 1046
+1562 <-> 715, 1889
+1563 <-> 552
+1564 <-> 986
+1565 <-> 1507, 1689
+1566 <-> 1570
+1567 <-> 1056
+1568 <-> 3, 371
+1569 <-> 119, 1057, 1852
+1570 <-> 1566, 1570
+1571 <-> 1283, 1736
+1572 <-> 569, 1164, 1995
+1573 <-> 1573, 1784, 1987
+1574 <-> 1244, 1574
+1575 <-> 1282, 1575, 1866
+1576 <-> 123
+1577 <-> 1030
+1578 <-> 289, 710
+1579 <-> 992, 1684
+1580 <-> 4
+1581 <-> 1581
+1582 <-> 128, 883
+1583 <-> 57
+1584 <-> 116
+1585 <-> 637
+1586 <-> 1134
+1587 <-> 1587
+1588 <-> 159, 1280
+1589 <-> 1915
+1590 <-> 136, 1508
+1591 <-> 1223
+1592 <-> 293, 1891
+1593 <-> 853, 1374
+1594 <-> 1349, 1886
+1595 <-> 994, 1595
+1596 <-> 364, 1116
+1597 <-> 1554
+1598 <-> 1729
+1599 <-> 583, 1055
+1600 <-> 147, 458, 1600
+1601 <-> 1894
+1602 <-> 116
+1603 <-> 1390
+1604 <-> 481, 657, 949, 1353, 1983
+1605 <-> 115, 668, 863, 1509
+1606 <-> 1406
+1607 <-> 261, 410, 821
+1608 <-> 690
+1609 <-> 1509
+1610 <-> 673, 1248
+1611 <-> 118, 1788
+1612 <-> 1854
+1613 <-> 547
+1614 <-> 547, 1807
+1615 <-> 479
+1616 <-> 222, 1517
+1617 <-> 880, 1989
+1618 <-> 826
+1619 <-> 860, 1807
+1620 <-> 291
+1621 <-> 618, 1957
+1622 <-> 535
+1623 <-> 480, 531
+1624 <-> 1303
+1625 <-> 223, 1282
+1626 <-> 503, 604
+1627 <-> 1495, 1933
+1628 <-> 288, 978
+1629 <-> 1629
+1630 <-> 465, 1872
+1631 <-> 1486, 1522, 1544
+1632 <-> 196
+1633 <-> 1327, 1329
+1634 <-> 123, 661, 740
+1635 <-> 139
+1636 <-> 913, 1462, 1752
+1637 <-> 404, 522
+1638 <-> 1779, 1813
+1639 <-> 33, 190, 1376, 1639
+1640 <-> 1816
+1641 <-> 554, 1285
+1642 <-> 1129
+1643 <-> 71, 1844
+1644 <-> 171, 987
+1645 <-> 1477
+1646 <-> 16, 199
+1647 <-> 1702
+1648 <-> 895
+1649 <-> 1286
+1650 <-> 344, 886, 945
+1651 <-> 799, 1151
+1652 <-> 1149, 1961, 1984
+1653 <-> 222, 1074, 1411
+1654 <-> 108, 553
+1655 <-> 35, 156, 226, 1992
+1656 <-> 537, 655
+1657 <-> 105, 609
+1658 <-> 1658
+1659 <-> 519, 1463
+1660 <-> 958
+1661 <-> 290, 1929
+1662 <-> 435
+1663 <-> 1855
+1664 <-> 345
+1665 <-> 554
+1666 <-> 1021, 1171
+1667 <-> 662, 687
+1668 <-> 1289
+1669 <-> 842, 1477, 1795, 1975
+1670 <-> 1119, 1921
+1671 <-> 941
+1672 <-> 115
+1673 <-> 385
+1674 <-> 518
+1675 <-> 247, 676
+1676 <-> 509, 1987
+1677 <-> 965, 1677
+1678 <-> 151, 1692
+1679 <-> 541
+1680 <-> 1680
+1681 <-> 221, 789
+1682 <-> 1736, 1767, 1947
+1683 <-> 1131, 1541
+1684 <-> 1579
+1685 <-> 1242, 1401
+1686 <-> 1736
+1687 <-> 680, 1330
+1688 <-> 881, 1829
+1689 <-> 1030, 1565
+1690 <-> 778, 1044, 1900
+1691 <-> 28, 75
+1692 <-> 627, 1678
+1693 <-> 122, 400, 671, 969
+1694 <-> 58, 61
+1695 <-> 741
+1696 <-> 224, 1958
+1697 <-> 1935
+1698 <-> 301, 1188
+1699 <-> 29, 37
+1700 <-> 742, 1883
+1701 <-> 662
+1702 <-> 441, 1647
+1703 <-> 1048, 1076
+1704 <-> 185
+1705 <-> 715
+1706 <-> 1313, 1467
+1707 <-> 867
+1708 <-> 1008, 1159, 1340
+1709 <-> 560, 561, 1253, 1976
+1710 <-> 840
+1711 <-> 1711
+1712 <-> 12, 1219
+1713 <-> 631, 1502, 1555
+1714 <-> 1403, 1714, 1902
+1715 <-> 1183
+1716 <-> 79
+1717 <-> 738
+1718 <-> 602, 1251
+1719 <-> 1203, 1432
+1720 <-> 1447
+1721 <-> 1155
+1722 <-> 930
+1723 <-> 941
+1724 <-> 941
+1725 <-> 432
+1726 <-> 1507
+1727 <-> 397
+1728 <-> 1728, 1937
+1729 <-> 1598, 1913
+1730 <-> 105, 757, 768, 1435, 1730
+1731 <-> 789
+1732 <-> 795, 1465
+1733 <-> 551, 1765, 1835
+1734 <-> 1538
+1735 <-> 755, 1347
+1736 <-> 1571, 1682, 1686
+1737 <-> 932, 1795
+1738 <-> 329, 1738
+1739 <-> 267, 1062, 1848
+1740 <-> 1325
+1741 <-> 326, 541, 1952
+1742 <-> 344, 754
+1743 <-> 75, 253, 507
+1744 <-> 288
+1745 <-> 1216
+1746 <-> 92, 138
+1747 <-> 333
+1748 <-> 182, 1540
+1749 <-> 853
+1750 <-> 88
+1751 <-> 363, 1060
+1752 <-> 1060, 1636
+1753 <-> 433, 583, 1873
+1754 <-> 1194, 1294
+1755 <-> 1138, 1279
+1756 <-> 538, 636
+1757 <-> 1080
+1758 <-> 472, 514
+1759 <-> 284
+1760 <-> 1760
+1761 <-> 326, 620
+1762 <-> 648, 939, 1989
+1763 <-> 383
+1764 <-> 599, 1019, 1941
+1765 <-> 1733
+1766 <-> 289, 365, 1331
+1767 <-> 993, 1682, 1767
+1768 <-> 1768, 1859
+1769 <-> 957
+1770 <-> 288
+1771 <-> 1875
+1772 <-> 1514, 1772
+1773 <-> 801, 1228
+1774 <-> 0
+1775 <-> 935
+1776 <-> 133
+1777 <-> 1310
+1778 <-> 17, 320
+1779 <-> 465, 1638
+1780 <-> 1906
+1781 <-> 1969
+1782 <-> 1330
+1783 <-> 97, 963, 1960, 1983
+1784 <-> 1132, 1530, 1573
+1785 <-> 422
+1786 <-> 1786
+1787 <-> 854, 1317
+1788 <-> 926, 1611
+1789 <-> 586, 1829
+1790 <-> 74, 1790
+1791 <-> 52, 109, 1448
+1792 <-> 1860
+1793 <-> 1316, 1981
+1794 <-> 138
+1795 <-> 1669, 1737, 1861
+1796 <-> 1177, 1533
+1797 <-> 327, 875
+1798 <-> 852, 1183
+1799 <-> 1101, 1399, 1964
+1800 <-> 491, 641, 807, 1353
+1801 <-> 20, 455
+1802 <-> 123
+1803 <-> 415, 1010
+1804 <-> 1804
+1805 <-> 1334, 1926
+1806 <-> 1517, 1560
+1807 <-> 1614, 1619
+1808 <-> 261, 643
+1809 <-> 145, 1122
+1810 <-> 1382
+1811 <-> 60
+1812 <-> 1084
+1813 <-> 213, 994, 1638
+1814 <-> 14, 355
+1815 <-> 841, 1996
+1816 <-> 1049, 1640
+1817 <-> 388
+1818 <-> 1051, 1516
+1819 <-> 1008
+1820 <-> 403
+1821 <-> 350, 1163
+1822 <-> 669, 1179, 1927
+1823 <-> 1323
+1824 <-> 667, 824, 1879
+1825 <-> 608, 839, 876, 1965
+1826 <-> 473, 907
+1827 <-> 1115, 1171
+1828 <-> 440, 1195, 1284, 1913
+1829 <-> 275, 1688, 1789
+1830 <-> 1830
+1831 <-> 1831
+1832 <-> 248, 726
+1833 <-> 1833
+1834 <-> 1190
+1835 <-> 639, 1527, 1733
+1836 <-> 250, 1836
+1837 <-> 577, 1970
+1838 <-> 1156, 1261
+1839 <-> 1192, 1244, 1298
+1840 <-> 1356
+1841 <-> 81
+1842 <-> 738, 1215
+1843 <-> 1843
+1844 <-> 383, 1257, 1643
+1845 <-> 260, 451
+1846 <-> 1552
+1847 <-> 755, 879, 1426
+1848 <-> 38, 1739
+1849 <-> 468, 1144
+1850 <-> 1092
+1851 <-> 934, 1395
+1852 <-> 198, 1569
+1853 <-> 718, 1178, 1387
+1854 <-> 588, 1197, 1612
+1855 <-> 162, 734, 1663
+1856 <-> 236, 751
+1857 <-> 1371
+1858 <-> 1015
+1859 <-> 1768
+1860 <-> 940, 1270, 1274, 1442, 1792
+1861 <-> 1014, 1795
+1862 <-> 1142, 1252
+1863 <-> 281
+1864 <-> 717
+1865 <-> 1865
+1866 <-> 574, 602, 1394, 1575
+1867 <-> 707, 1011
+1868 <-> 659, 1868
+1869 <-> 173, 1991
+1870 <-> 391, 828, 956, 1880
+1871 <-> 189, 692
+1872 <-> 1630
+1873 <-> 42, 1753
+1874 <-> 883
+1875 <-> 11, 1771
+1876 <-> 158
+1877 <-> 186
+1878 <-> 796, 1385
+1879 <-> 486, 1824
+1880 <-> 920, 1870
+1881 <-> 433, 573, 905
+1882 <-> 625, 1954
+1883 <-> 300, 1700
+1884 <-> 1884
+1885 <-> 1291, 1510
+1886 <-> 19, 209, 1300, 1594
+1887 <-> 277
+1888 <-> 85
+1889 <-> 489, 1286, 1562
+1890 <-> 170, 832
+1891 <-> 1211, 1592, 1973
+1892 <-> 611, 697, 914
+1893 <-> 1224
+1894 <-> 775, 1601
+1895 <-> 308, 323, 618
+1896 <-> 1106
+1897 <-> 118, 368, 408
+1898 <-> 1316, 1560, 1944
+1899 <-> 463, 1050
+1900 <-> 1088, 1690, 1951
+1901 <-> 16, 27
+1902 <-> 981, 1714
+1903 <-> 1380
+1904 <-> 278, 1052
+1905 <-> 20
+1906 <-> 671, 1225, 1780
+1907 <-> 800
+1908 <-> 583
+1909 <-> 1361, 1940
+1910 <-> 134, 967, 1545
+1911 <-> 1973
+1912 <-> 1262
+1913 <-> 832, 1426, 1729, 1828
+1914 <-> 1914
+1915 <-> 1399, 1589
+1916 <-> 650, 1916
+1917 <-> 726, 1917
+1918 <-> 1040
+1919 <-> 196, 1378, 1919
+1920 <-> 1, 218
+1921 <-> 1670, 1952
+1922 <-> 1381
+1923 <-> 892, 1012, 1247
+1924 <-> 373, 904
+1925 <-> 210, 1935
+1926 <-> 543, 1013, 1805
+1927 <-> 1102, 1822
+1928 <-> 346, 1928
+1929 <-> 1661
+1930 <-> 19
+1931 <-> 983, 1555
+1932 <-> 685
+1933 <-> 16, 1190, 1627, 1933
+1934 <-> 288, 1243
+1935 <-> 535, 1697, 1925
+1936 <-> 295
+1937 <-> 112, 157, 1728
+1938 <-> 293
+1939 <-> 689, 1059, 1463
+1940 <-> 616, 1909
+1941 <-> 1764
+1942 <-> 243, 256, 1546
+1943 <-> 1950
+1944 <-> 260, 1898
+1945 <-> 1504
+1946 <-> 1946
+1947 <-> 87, 1129, 1179, 1682
+1948 <-> 294
+1949 <-> 1560
+1950 <-> 21, 1943
+1951 <-> 407, 1900
+1952 <-> 1741, 1921
+1953 <-> 1067
+1954 <-> 696, 1882
+1955 <-> 754
+1956 <-> 1457
+1957 <-> 1322, 1621
+1958 <-> 48, 708, 1696
+1959 <-> 1959
+1960 <-> 389, 1783
+1961 <-> 1652
+1962 <-> 29
+1963 <-> 914
+1964 <-> 1428, 1799
+1965 <-> 1825
+1966 <-> 1385
+1967 <-> 1168
+1968 <-> 265, 475
+1969 <-> 4, 1781
+1970 <-> 315, 926, 1837
+1971 <-> 242, 545, 1971
+1972 <-> 1972
+1973 <-> 997, 1891, 1911
+1974 <-> 885
+1975 <-> 1196, 1669
+1976 <-> 1709
+1977 <-> 1977
+1978 <-> 1978
+1979 <-> 1979
+1980 <-> 598, 1487
+1981 <-> 1793
+1982 <-> 1553
+1983 <-> 1054, 1604, 1783
+1984 <-> 731, 1652
+1985 <-> 1355
+1986 <-> 795
+1987 <-> 1573, 1676
+1988 <-> 495, 1023, 1433
+1989 <-> 1617, 1762
+1990 <-> 376
+1991 <-> 1869
+1992 <-> 1035, 1655
+1993 <-> 1411
+1994 <-> 1235, 1994
+1995 <-> 57, 1209, 1572
+1996 <-> 181, 1815
+1997 <-> 395, 1436
+1998 <-> 1300
+1999 <-> 175, 1161
diff --git a/2017/inputs/day_13.txt b/2017/inputs/day_13.txt
new file mode 100644
index 0000000..87bfdb7
--- /dev/null
+++ b/2017/inputs/day_13.txt
@@ -0,0 +1,43 @@
+0: 3
+1: 2
+2: 4
+4: 4
+6: 5
+8: 6
+10: 6
+12: 6
+14: 6
+16: 8
+18: 8
+20: 8
+22: 8
+24: 10
+26: 8
+28: 8
+30: 12
+32: 14
+34: 12
+36: 10
+38: 12
+40: 12
+42: 9
+44: 12
+46: 12
+48: 12
+50: 12
+52: 14
+54: 14
+56: 14
+58: 12
+60: 14
+62: 14
+64: 12
+66: 14
+70: 14
+72: 14
+74: 14
+76: 14
+80: 18
+88: 20
+90: 14
+98: 17
diff --git a/2017/inputs/day_13_example.txt b/2017/inputs/day_13_example.txt
new file mode 100644
index 0000000..0de4bec
--- /dev/null
+++ b/2017/inputs/day_13_example.txt
@@ -0,0 +1,5 @@
+0: 3
+1: 2
+4: 4
+6: 4
+
diff --git a/2017/inputs/day_14.txt b/2017/inputs/day_14.txt
new file mode 100644
index 0000000..1155654
--- /dev/null
+++ b/2017/inputs/day_14.txt
@@ -0,0 +1,2 @@
+uugsqrei
+
diff --git a/2017/inputs/day_14_example.txt b/2017/inputs/day_14_example.txt
new file mode 100644
index 0000000..e0ffae2
--- /dev/null
+++ b/2017/inputs/day_14_example.txt
@@ -0,0 +1 @@
+flqrgnkx
diff --git a/2017/inputs/day_15.txt b/2017/inputs/day_15.txt
new file mode 100644
index 0000000..ffb6d14
--- /dev/null
+++ b/2017/inputs/day_15.txt
@@ -0,0 +1,2 @@
+Generator A starts with 591
+Generator B starts with 393
diff --git a/2017/inputs/day_16.txt b/2017/inputs/day_16.txt
new file mode 100644
index 0000000..8e74751
--- /dev/null
+++ b/2017/inputs/day_16.txt
@@ -0,0 +1 @@
+x3/4,pm/e,x15/7,pp/l,x5/8,s15,x2/6,s9,x0/4,s7,x8/12,pc/b,x2/14,pe/d,x10/11,pg/o,x9/14,ph/n,x15/8,s13,pe/i,x3/7,s2,pd/b,x4/15,s11,x0/14,s10,x7/3,s8,x2/1,pj/i,s8,x10/14,s5,x4/1,pa/h,s11,x12/6,s1,x1/14,s11,x5/12,s4,pn/b,x7/9,pj/l,x1/8,pd/e,s6,pp/g,x10/2,pi/o,x15/5,pp/l,x6/13,s3,x5/12,pk/f,x1/8,s4,x11/10,s10,x4/15,pe/n,x1/5,s14,x7/2,pc/i,x4/10,pj/p,x6/15,s12,x5/0,pa/n,x8/12,s14,x3/5,pb/d,x4/12,s3,x9/6,pg/h,x3/1,s5,x4/10,pm/f,x12/2,s11,x15/13,pa/g,x0/2,s13,pj/i,s13,x6/10,pn/a,x2/1,pm/f,x10/12,s4,pi/c,x14/13,s4,x15/0,s7,x14/8,s5,x5/2,pe/d,x3/9,s14,x7/0,s10,x6/14,s8,x3/15,pn/j,x2/1,pf/a,x13/10,pe/m,x8/0,s2,x4/7,pc/l,s4,x2/0,s4,x3/4,s12,x11/2,s3,x5/8,s2,x4/6,pn/f,x15/5,s15,x4/12,s11,x1/13,pm/b,s13,pj/h,s15,x9/3,pd/l,x14/15,po/i,x10/7,pd/g,x11/13,s5,x9/14,s6,x1/0,s7,x5/8,s7,x0/11,s10,x7/12,s2,x8/9,s7,pb/j,x3/2,s10,x6/0,pe/l,x4/8,pf/p,x6/0,po/i,x7/2,s10,x10/3,pb/n,x2/13,s3,x15/3,ph/c,s14,x1/8,s10,x13/10,s5,x14/7,s7,x1/5,pk/f,x7/0,s11,x13/2,pc/d,x8/10,pi/h,x5/1,pe/f,s8,pa/j,x13/10,pc/f,s12,x9/12,pa/h,x7/0,s15,x8/13,s8,x15/11,pl/d,x2/8,s8,x3/14,s1,pa/e,x4/8,pp/n,x0/14,s3,x10/12,pg/c,x14/9,s2,x0/10,s11,x9/3,pn/a,x5/4,s15,x12/1,s6,x14/6,pf/c,s7,x15/5,s1,x12/13,s13,x9/4,s13,pb/p,x10/5,pe/c,x6/15,s7,x2/14,s15,x7/6,s13,x5/10,pb/l,x9/7,s14,x1/3,s12,x9/10,pn/h,x7/12,pc/k,x9/4,s2,x5/15,s10,x9/0,s2,x11/4,pg/e,x8/1,pm/h,x3/4,s14,x12/2,pi/d,x1/4,s15,x11/15,s14,x13/10,pb/o,x9/12,s5,x6/2,s13,x7/4,ph/m,s4,x8/12,pi/n,s15,x2/5,pj/p,x10/0,s4,x15/9,pn/m,x14/13,pd/b,x10/9,s5,x1/5,s2,x15/3,pe/j,s7,x0/6,s2,x8/9,s3,x2/3,s9,x5/12,pp/b,x6/3,pf/l,x9/0,s15,x3/2,s12,pb/m,x14/6,s12,x3/15,ph/f,x5/1,s13,x0/15,s8,x1/9,pa/p,s9,x15/13,s7,pf/b,x2/8,ph/g,x10/3,pi/o,x13/5,s1,x4/3,s7,x7/8,s13,x0/13,pn/h,x12/15,s14,x2/6,pc/d,x8/12,s5,x5/3,s10,x10/9,pb/p,x4/11,pm/k,x14/3,s12,po/h,x6/1,s14,x15/3,s13,x7/5,pe/i,x12/6,s8,x8/13,s2,x12/15,s15,x2/4,s13,x10/7,s11,x15/1,s4,x5/11,s8,x1/15,s15,x8/13,s8,x1/15,s5,pb/c,x11/10,s13,pm/p,x0/8,s12,x2/5,pj/i,x14/3,pl/o,x2/11,pe/j,x13/1,pa/l,x3/10,s11,x7/4,pj/m,x5/10,ph/g,x13/9,s5,x3/4,s1,x15/8,s4,x0/1,s5,pd/j,x9/12,s6,pk/g,x4/6,s4,x1/3,ph/n,s9,x4/10,pf/i,s10,pk/j,x3/1,s11,pe/h,x12/4,s6,x10/5,s12,x12/13,s15,x7/5,pn/l,x12/15,s9,x14/11,s8,x5/10,s2,x12/8,pc/b,x3/10,po/n,s14,x6/14,pl/j,x3/10,s4,x1/13,pe/c,x15/0,pa/b,x8/4,s4,pk/c,x5/12,s2,pi/g,x11/7,pe/l,x14/12,s5,x8/4,pg/f,x1/7,s8,x4/13,s12,x10/14,pc/h,x13/2,s1,x15/11,s3,x3/14,s5,pb/g,x2/7,s13,x9/3,s9,x13/1,s9,x3/14,s6,x5/0,s6,x8/14,s3,x11/13,s9,x1/5,s12,x4/2,pf/m,x6/5,pi/o,x15/2,s5,x12/5,pc/b,s2,x9/8,s9,x14/0,s6,x6/1,pe/n,x8/9,po/k,x15/4,pl/f,x11/14,s3,x7/15,s14,x14/12,pe/o,x15/7,s15,x6/1,s13,x13/12,pg/h,x5/0,pe/b,x1/9,s1,x8/2,s2,x3/1,pl/k,x9/0,s5,x8/2,pi/c,s1,x6/14,ph/p,x11/15,s4,x4/14,pn/i,x0/3,ph/p,x4/5,s6,x3/7,s3,pj/g,x0/4,po/k,x3/13,s14,x12/2,s8,x15/5,s11,x1/10,pj/e,x6/9,s14,x0/3,s12,x8/5,s10,x4/15,s13,x11/2,pi/m,x13/1,s13,x8/10,s9,x0/13,s14,x5/10,pd/a,x12/8,pg/h,s12,x9/0,s2,x5/2,pi/m,x6/0,s8,x15/13,s10,x6/2,pc/b,x10/4,s12,x15/1,s2,x12/5,pe/d,x10/8,pc/f,s10,x14/1,s9,x6/10,s2,x5/1,s2,x10/0,pp/l,x3/7,s8,x8/2,s13,x13/12,s11,x7/14,pc/k,x0/5,s15,x11/12,pa/g,x13/8,s11,x4/2,s14,x11/5,s8,x0/7,s15,x4/2,pj/n,x11/8,s10,pg/a,x6/10,s9,x2/11,po/h,x8/3,s12,pf/l,x0/1,s12,x10/9,pg/m,x5/2,pl/e,x12/6,s9,x1/14,s12,x10/5,pa/k,x6/12,pe/g,x10/7,pj/d,x13/0,s8,pm/k,x5/12,ph/a,x15/3,po/l,x9/6,pk/g,x7/3,s14,x4/14,s7,x10/11,pp/m,x8/14,s11,x15/0,s1,pe/d,x13/12,pa/k,x8/14,s5,x9/7,pm/g,x8/12,pd/j,x1/13,s9,x10/6,s2,x14/5,pf/e,s1,x4/2,s8,x3/13,pi/k,x11/10,pn/j,x3/7,s3,x1/12,s10,x14/2,s13,x0/10,s4,x12/8,pp/e,x6/7,s13,x5/13,s13,x3/10,s4,x9/12,s12,po/b,x5/4,s6,x0/10,s4,x12/5,pf/c,s10,x10/15,pe/l,x4/9,s14,x6/5,s1,x2/9,pb/m,s1,x4/8,s7,x1/12,s13,x0/14,pa/o,x12/7,pk/m,x1/10,s11,x15/13,s10,x9/0,s8,x1/7,s11,x9/12,s1,x10/13,s3,x11/14,s3,x12/2,s3,x13/7,s11,x11/0,pf/l,x8/10,s10,x12/7,s8,x8/5,s5,x15/1,pj/n,s9,pp/i,x6/12,s15,x0/1,pg/a,x10/15,s1,x1/0,s7,x12/14,pm/d,s15,x6/11,s1,x7/12,pa/h,x3/9,s12,x8/5,pm/b,x9/1,pp/j,x8/7,pb/k,x1/5,s12,x10/9,pa/i,x1/4,s15,x2/0,s3,x15/10,s14,x11/9,s14,x6/14,s11,x13/2,pl/g,x7/11,s10,x4/15,s15,x12/0,s8,x3/6,pa/f,x11/2,s6,x13/6,s10,pk/d,x10/9,po/m,x13/12,pc/b,x8/4,s13,x1/11,pn/o,x8/13,s14,x15/0,s8,x13/9,s15,pa/i,x6/2,s8,x15/1,pc/m,x10/9,s6,x6/5,s3,pg/l,x8/3,s13,pa/m,x2/13,s15,x0/12,s12,x5/11,s3,po/k,x1/15,pa/f,x14/6,s15,x1/15,s3,x14/4,s4,x15/9,s15,pm/n,x1/5,s15,x3/2,pp/h,x13/5,s13,pm/e,x7/10,s5,x15/9,s10,pn/g,x10/6,pb/l,x0/8,s9,x13/1,s14,x5/8,s7,x15/11,s2,x13/4,s14,x12/3,s15,pe/n,x4/0,pk/i,x13/9,s14,x5/15,s11,x3/11,pa/e,x4/5,s13,x3/10,pf/d,x14/0,s14,x10/12,pk/e,s1,x0/1,pm/o,x3/8,s13,x15/9,s7,x11/10,pg/n,s6,ph/p,s12,x12/15,pi/a,x9/0,pe/m,x4/13,pi/p,x11/5,pj/k,x7/6,s7,x3/12,s7,x0/9,pa/d,x15/10,s9,x2/11,s4,x6/1,s4,x13/9,pb/c,x0/11,po/n,x13/6,s7,x5/1,pj/e,x4/10,pp/h,x13/11,pc/d,x3/8,s12,x4/9,s5,pg/m,x13/14,pa/f,x15/3,pi/k,x9/5,pb/e,x3/12,s8,x5/10,s8,po/j,x7/2,s10,x10/11,pg/m,x8/4,s14,x9/11,s5,x2/3,s6,x1/14,pf/h,x2/3,s11,pc/b,s1,x5/6,s11,x13/10,ph/j,s8,x14/9,s5,x4/1,pf/n,x6/13,pc/h,s1,x12/2,pa/j,x1/4,s8,x12/5,ph/o,x6/11,s4,x7/2,pl/b,x9/6,s14,x8/10,pk/h,x0/4,s1,x2/10,pd/o,x4/13,s5,x0/14,s11,x4/10,pl/b,s6,x14/7,pf/o,x6/15,s12,x4/1,s4,x12/13,s6,x8/10,pd/h,s9,x11/0,pb/a,x12/5,pg/h,x15/11,s4,x8/12,s11,x7/14,s15,x8/3,s2,x12/4,po/e,x6/15,s10,x8/10,pi/d,x6/4,pk/g,x5/12,pa/i,x2/9,s13,x15/12,pc/g,x11/9,s11,x2/12,s5,x1/5,pj/p,x15/8,s9,x12/1,s1,x0/2,pf/l,s3,x11/6,s8,x0/10,s9,x5/1,pn/i,x9/2,pd/k,x4/1,pp/l,x10/5,s10,x8/3,s2,x6/9,pg/e,x8/4,s13,x9/2,s8,x14/0,pb/m,x15/3,pi/g,x13/11,s2,x4/14,pj/o,x7/12,s10,x5/2,pm/d,x6/14,pj/b,x10/4,s15,x9/14,s1,x13/3,s7,x8/9,s5,x11/10,pc/a,s12,x9/6,s5,x13/8,s9,x15/12,s5,x0/6,s13,x15/1,s2,x6/3,pd/g,s3,x1/14,s13,x15/7,s6,x12/11,ph/n,x13/2,s12,pm/d,x12/15,pc/p,s12,x14/3,s6,x7/12,pl/h,x6/2,s1,x7/0,pn/c,x13/15,pe/b,x6/11,s1,x2/8,s6,x6/9,s7,x14/1,ph/i,s15,x13/3,s14,x5/6,pm/p,x10/3,s7,pn/d,x12/14,s10,x4/7,s5,x9/2,s9,x10/5,s13,x12/13,ph/k,x15/6,pg/c,x11/4,s1,x9/7,s1,x4/15,pf/m,s10,x6/10,pi/o,x12/2,s8,x4/8,pn/h,x9/6,pd/g,x0/3,s9,x1/7,pj/h,x6/12,pk/f,x7/10,pi/n,x12/0,pb/k,x14/3,pc/g,x7/1,po/n,x4/10,s11,x3/8,s9,x12/6,s13,x7/10,pb/k,x13/5,pc/a,x7/15,s2,x9/12,s14,x11/2,s10,pb/j,x14/5,s14,x4/10,s12,x6/14,s3,x3/13,po/n,x14/7,pb/m,x9/2,pa/k,x14/8,pc/l,x6/10,pj/m,s9,x13/12,pn/a,x15/1,s14,x5/8,pm/c,s1,x11/0,pn/d,x5/14,pc/b,x9/1,s14,x2/8,pi/l,x13/15,s14,x11/2,po/b,s11,x12/10,s12,x7/4,s7,x14/13,pd/n,x6/12,ph/m,x3/10,pp/f,x0/2,pl/g,x5/6,s3,x2/12,s11,x6/5,s11,x13/2,s8,x10/1,s7,pp/d,x11/14,s3,x9/13,pk/o,x2/12,s11,x4/7,s7,x15/2,pl/j,x1/12,s1,x5/9,s12,x12/15,s15,x3/7,s2,x5/8,s14,x2/10,po/m,s9,x5/7,s13,x11/9,pk/g,x3/14,pb/m,x5/2,pk/p,x4/11,s7,x3/6,s4,pe/h,x5/10,pn/j,x0/13,pg/k,x3/11,s11,x4/8,s13,x2/7,po/p,x5/9,pi/f,x8/4,s3,pn/j,x3/13,s2,x12/14,s5,x1/5,s8,x11/15,pf/c,x14/10,s10,x12/0,pa/d,x15/8,s8,x3/0,s15,x1/10,s11,x2/14,pb/n,x5/10,ph/j,x2/12,s12,x8/0,pa/d,s1,x9/15,pm/g,x14/4,s5,x11/9,s14,x14/0,pj/f,x15/6,s14,x9/13,s14,x7/4,s3,x12/10,s4,x9/13,pd/l,x10/6,pe/f,x0/13,pm/h,x6/1,s1,x12/9,pf/p,x2/14,s11,x8/7,ph/l,x15/3,s15,x11/5,pf/p,x15/2,pm/g,x0/10,pe/n,s11,x5/8,pl/o,x0/7,pa/e,x14/10,s11,x15/5,s13,x9/6,pl/o,x14/7,s5,x8/13,pp/m,x0/3,s12,x1/10,pd/l,x15/11,pj/f,x14/10,s5,x1/3,pl/p,x4/7,s8,x12/9,pe/m,x8/14,pa/n,x3/12,ph/o,s10,pi/e,x5/0,pm/g,x3/14,s8,x12/8,s13,x3/13,pc/j,x1/14,s2,x10/6,pe/f,x7/4,s13,x15/12,s7,x2/7,s1,x11/0,s6,x10/7,pd/n,s5,x4/0,s2,x12/10,s13,x9/2,s8,x14/13,s2,x12/0,pk/m,s14,x1/10,pj/c,x9/15,pm/p,x5/14,s5,x0/13,s11,x12/15,s7,x0/13,pl/i,x4/5,pn/o,x8/6,s5,x5/1,pp/b,x14/15,pc/m,x4/3,s3,x5/7,pb/f,x6/8,pi/l,x11/0,pb/a,x6/14,s4,x8/13,s9,x9/7,s9,pc/o,x2/14,s9,x15/10,pl/i,x2/1,s15,pp/b,x8/13,pk/n,x3/11,s11,x6/4,s1,x15/13,pd/i,x5/7,s8,x15/14,s4,x12/3,s4,x13/2,s4,x10/3,s10,x1/14,s14,x9/0,s1,x8/14,pp/o,x0/11,pd/c,x12/9,s3,x14/6,s13,x4/11,s2,x9/12,pn/e,x0/6,pk/l,x11/4,s9,pd/c,x7/9,po/a,s14,x14/4,s10,pd/j,x6/15,s4,x4/11,pl/h,x1/8,pj/k,x2/10,s14,x14/1,pl/o,x11/0,s4,x13/10,ph/e,x1/6,s8,pm/j,x0/8,pc/o,x15/10,pf/m,x7/3,s10,x15/0,s1,x6/1,pe/l,x13/7,s10,x8/1,s12,x4/6,s11,x5/15,s15,x14/7,pb/g,x0/12,pf/o,x1/9,s8,x0/7,s10,x1/11,s7,x4/15,pl/j,x3/9,s9,x14/15,s12,x9/1,s7,x5/8,pm/n,x6/13,pk/b,x0/7,s8,x11/10,s3,x13/12,pn/h,x10/4,pa/p,x13/15,s12,x4/14,s13,x2/1,s5,x15/10,s10,x9/3,po/m,x15/11,s11,x8/6,s1,x11/9,s7,pb/l,s8,x8/0,s15,x15/5,s14,x8/10,s5,x15/14,pf/h,x10/13,s14,x5/9,pm/c,x14/8,s9,x9/7,pg/a,x1/11,s14,x8/3,pm/n,x9/4,s4,x2/6,s3,x3/5,pf/a,x9/0,pp/k,x13/14,s1,ph/e,x1/5,s13,x3/15,s5,x12/9,s3,x7/11,s1,x6/12,pm/b,x10/11,s7,x4/1,pn/l,x6/5,s6,x12/7,ph/o,x0/8,pg/f,x12/6,s5,x0/2,s1,x10/9,pa/c,x6/1,s12,pl/j,x4/15,pi/o,x3/11,s6,x6/9,s7,x2/8,ph/j,x9/12,s14,x6/4,s6,pm/k,x13/15,s10,x9/11,pp/c,x7/6,s2,x11/10,s15,x14/8,pl/i,x4/5,ph/c,x13/12,pl/g,x8/11,pd/p,x4/9,ph/e,x12/6,s5,x13/10,pn/c,x3/5,s5,x1/8,pk/d,x14/6,s10,x4/3,s10,x12/11,s2,x5/2,pi/j,s14,x11/15,s9,x1/9,pm/k,x10/15,pp/f,x5/4,s4,x2/7,s5,x10/13,pn/o,x1/11,s10,x0/12,pe/b,x5/4,s15,x12/14,pc/i,s2,x13/4,s14,x14/1,s1,x2/4,ph/m,x14/1,s15,x3/13,pc/b,x14/9,s4,x6/8,s9,x12/14,s5,x10/9,pa/k,x14/13,s3,x5/7,s4,pj/i,x6/4,s1,pe/a,x8/5,s14,x12/9,s9,x13/14,s11,x3/15,s3,x13/11,s6,x12/7,pc/m,x8/11,s11,x10/1,s10,x15/12,pp/g,x3/4,pm/c,x15/13,s12,x10/8,s8,x5/12,pj/h,x13/4,s7,x11/9,s15,x10/12,s7,x2/11,pf/m,s13,x15/4,s4,x5/3,s4,ph/p,x4/8,s6,x9/14,pa/b,x5/4,s11,x11/8,pf/m,x15/7,s7,x4/2,s4,x15/9,pp/g,x5/7,s1,x13/11,pd/m,x5/0,s6,x3/8,pb/e,x12/2,s3,x3/6,s15,x13/2,pg/o,x5/1,s9,x10/13,s1,x2/14,s5,x10/6,s9,x5/1,pj/h,x10/3,pc/b,x2/8,pd/j,x12/1,s9,x13/8,s12,x15/12,s5,x8/9,s15,x13/0,s9,x2/11,pm/i,x8/10,s3,x14/0,s10,x10/8,s12,x2/5,s8,x1/14,pa/d,x2/0,s3,x14/9,s15,x1/0,s8,x13/7,pi/g,x0/1,s10,x10/13,pl/d,s7,x2/8,s10,x0/15,s12,x4/3,pi/k,x11/5,s3,x7/2,s15,pg/f,x4/0,pp/c,x10/15,s10,pj/a,x4/2,pg/o,s13,x9/8,pi/f,x5/7,s12,x12/9,pe/m,x2/6,s5,x11/0,s8,x6/12,pd/a,x0/2,s7,x9/7,ph/e,x14/11,pl/c,x4/3,s11,x7/0,pd/b,x8/2,s7,x15/13,pf/p,x9/11,s9,x0/10,pd/g,x2/4,pa/j,x3/8,s5,x12/1,s12,x15/5,pb/e,x9/10,pj/p,x6/5,pm/k,x11/7,pd/h,x4/0,pf/b,x10/5,pn/a,x14/11,s14,pj/l,x7/1,s9,x5/13,pg/h,x1/11,po/c,s11,x7/12,s12,x2/14,s2,x15/10,pb/d,x8/13,po/h,x12/6,pl/e,x9/11,s6,x14/15,s13,x12/13,ph/d,x9/7,s5,x11/10,pj/b,x5/13,s12,x2/11,s3,x5/6,s11,x10/4,s2,x13/11,s15,x0/2,pa/n,x12/13,pb/h,x14/3,pf/e,x9/6,s8,pj/l,x12/13,pd/k,x15/0,s5,pg/m,x14/10,pe/k,x4/3,s14,x1/9,s1,x15/0,s5,x3/8,s10,x2/1,pn/i,x0/4,s10,pj/p,x7/5,s15,x3/14,s15,x7/5,s4,x15/6,s10,x7/3,s2,x8/12,s13,x10/14,s15,x3/12,pg/i,x1/9,s6,x4/3,ph/b,x0/5,s5,pa/c,s7,x15/8,s8,x0/10,s9,x9/12,s6,x11/7,s2,x15/1,pm/p,x8/2,s15,x3/4,s3,x6/5,pa/f,x14/8,pm/b,x15/11,s2,x0/3,s6,x12/9,pi/e,x15/7,pp/n,x4/2,s15,x15/0,pf/g,x13/14,pj/m,x1/0,pe/i,x10/11,pp/d,x15/6,s2,x10/13,pj/o,x12/9,ph/e,x14/10,pm/a,x3/0,s4,x15/4,s11,x14/8,pp/n,x6/0,s3,x10/3,s3,x13/0,s7,x5/2,s2,x1/13,pk/j,x9/10,pn/a,s14,x13/8,pc/k,x6/10,pi/j,x3/12,s2,x9/8,s7,x3/1,pl/e,x12/15,po/m,x5/1,s1,x2/7,pk/l,x3/15,s10,pi/c,x11/10,s15,x12/0,pj/g,x8/7,pi/k,x11/15,s6,x1/13,s11,x14/8,s11,x13/5,s2,x15/4,s9,x1/9,pm/p,x3/11,pb/g,s13,x9/0,pl/k,x6/2,pb/f,x11/4,s14,x8/3,s6,x4/6,s10,x13/15,s9,x9/6,s6,x14/4,pd/i,x10/12,pl/h,x11/13,po/n,x6/9,pg/p,x14/7,s1,x0/11,s13,x9/3,pi/j,x14/1,s8,x8/13,s12,x4/11,s8,x13/3,pd/e,x6/7,s10,x2/5,s11,x9/14,pl/g,x15/1,pn/a,x14/12,s8,x1/15,s11,x6/9,s8,x3/7,pd/g,x11/0,pj/b,s10,x8/1,pa/m,x4/10,pe/d,x2/6,pg/b,x13/0,s14,x3/12,s11,x9/15,s6,x14/10,pk/p,x6/3,s7,x13/15,s10,x10/3,pa/e,x4/0,s13,x3/7,pl/n,s5,x5/15,pj/b,x0/1,s10,x12/13,s2,x0/6,pl/g,x3/12,pm/c,x5/1,pn/p,x4/6,pk/d,x8/2,s6,x14/12,pi/l,x3/9,s12,x6/5,s1,x2/10,s12,x12/3,pe/n,x15/4,pf/l,x12/14,pb/d,s13,x7/9,s4,x11/3,pe/f,x6/13,po/j,s8,pe/h,s12,x11/12,s15,x1/3,pl/g,s12,x10/13,s9,x5/8,s6,x0/6,s4,x5/3,pj/m,x10/2,s13,x15/7,pe/g,x5/3,s12,x1/9,s12,x2/14,s4,x11/0,s11,x2/7,pi/k,x11/9,po/b,x14/13,s11,x2/12,s10,x6/5,s11,x8/11,s14,x3/4,s3,x12/8,s2,x11/6,s8,x7/5,s9,x3/9,s13,x10/14,s2,x2/0,s8,x5/7,s5,x14/2,s1,x4/13,s5,x14/8,s2,pp/m,s15,x13/1,s5,x6/7,s4,x11/12,s5,x14/3,s2,x8/10,s7,pb/f,s1,x7/6,s7,x15/9,s13,x13/12,pg/h,x3/4,s13,x13/9,s5,x12/6,pk/c,s10,x8/1,s11,x14/0,pm/p,s12,x2/1,pb/h,x0/4,pm/l,x13/6,s3,x5/14,s14,x10/3,po/j,x0/9,s12,x1/5,s9,x8/4,s1,x12/6,ph/g,x10/11,s5,x12/9,pd/n,x1/14,s6,x11/4,pi/e,x2/1,pn/f,x11/13,s1,x5/0,s2,x6/9,pa/e,x0/10,pg/f,x13/15,s9,x5/11,po/c,x15/13,s15,x1/7,pp/l,x6/15,pg/k,x12/14,s7,x10/1,s12,pf/i,x2/7,s9,x13/4,pl/d,x14/10,s10,pm/k,x15/1,pd/e,s1,x11/12,s2,pg/o,x6/9,s14,x14/2,s4,x8/10,s4,x4/14,s15,pa/k,x3/11,s14,x14/15,pl/c,x8/3,s13,x5/1,s14,x14/8,s13,x3/7,pf/p,x13/8,pg/l,x7/6,s2,x11/9,ph/o,x0/2,pd/e,x4/6,s5,x7/2,s2,pj/i,s5,x5/12,s13,x0/10,s5,x7/8,s1,x4/1,s6,x7/9,s10,x3/15,pd/p,x2/11,s9,x0/10,pa/f,x15/4,s1,x6/10,pb/p,x4/14,s7,x2/13,pg/c,x12/10,s1,x13/4,s1,x1/7,s4,x4/5,pn/k,x11/10,pj/i,x1/0,s7,x14/6,s9,x11/5,s10,x4/13,s7,x1/12,s9,x3/14,s13,x0/1,pc/d,x11/10,s7,x8/2,s2,x5/11,s8,x15/6,pf/j,x10/0,s5,pm/d,s5,x7/5,s6,pg/a,x1/9,s4,x3/14,s14,pj/k,x12/10,s4,x15/3,pn/p,x6/11,pa/d,x10/8,s15,x9/11,s2,x2/3,po/g,x12/15,s15,x0/13,pj/p,x4/9,s6,x15/11,pk/g,x5/12,s3,x9/4,pj/a,s6,x0/14,s12,x12/7,pm/k,x2/0,s7,x6/1,pa/l,x14/5,s12,x1/4,s10,pn/g,x14/10,s8,x6/8,po/p,s8,x1/10,pc/a,x9/2,pg/h,s15,x10/11,pc/m,x14/4,s8,x11/7,s13,x9/12,s1,x6/2,pj/b,x1/12,s1,x10/6,ph/i,x3/13,s10,x2/7,s9,x14/4,s8,x3/5,s7,x7/8,pk/m,x12/15,s14,x0/9,s6,x5/4,s13,x0/11,s15,x15/14,pa/h,x4/9,s10,x5/0,s1,x13/14,s8,x12/15,s6,x2/4,pp/l,x5/6,pk/o,x13/3,s3,x8/10,s5,x11/12,ph/a,x5/0,s2,x6/13,pp/m,x5/2,pe/d,x6/13,po/n,x7/9,s13,x14/8,pm/f,x1/11,s6,pj/i,x2/9,s10,x15/5,pf/l,x14/9,s6,x15/1,s2,x4/8,pm/o,x15/13,s10,x8/1,pc/b,s6,x3/7,s1,x13/2,s4,x4/1,s4,x2/11,pe/m,x14/4,s10,x7/9,pd/k,x2/13,po/c,x3/9,s10,x13/8,s14,x4/7,s5,x2/0,pb/f,x12/6,pe/p,x11/9,s9,x12/7,pm/i,x4/3,s6,x2/13,pg/j,x12/0,s3,pl/b,x11/13,s10,x15/8,s2,x9/5,s4,x6/10,s2,x5/13,s13,x7/11,s15,x4/2,s8,x0/11,ph/p,x5/2,pm/n,x4/0,pe/l,x13/8,s13,x10/6,pp/b,x7/9,s14,x1/0,po/i,x3/13,s5,x8/12,pm/e,s10,x9/0,pp/k,x4/13,s8,x5/10,s5,pc/d,x14/4,s5,x12/10,pj/l,x13/11,s2,x8/1,s11,x3/12,s6,x10/2,s6,x0/12,s15,x9/7,pb/p,s7,x2/3,s11,x8/1,pk/m,x5/15,pf/d,x11/6,s10,x1/8,s11,x10/9,pm/p,x7/11,pn/b,s5,x13/6,s2,x8/9,s5,x7/13,s13,x4/1,s12,x3/9,pd/f,x13/14,s8,x2/0,s10,x10/14,pb/h,x11/1,s2,x15/3,s5,x10/6,s11,x8/1,pm/g,x11/12,pa/b,x5/4,s12,x7/12,pg/o,x1/15,pn/d,x13/9,s7,x2/4,s4,x12/14,pm/i,s5,x8/11,pb/g,x9/0,s6,x1/14,s3,x4/9,pd/i,x2/6,s14,x3/7,s4,x8/13,pf/k,x6/9,s7,x10/14,s3,x8/9,s8,x0/15,s1,x8/9,pl/n,x11/12,s12,x3/9,pc/a,x11/4,s2,x1/12,s12,x4/10,pb/l,x3/8,s3,x0/1,s1,x10/8,s6,x7/6,pn/e,s6,x9/8,s12,x7/5,pm/k,x14/0,pb/i,x12/5,s1,x15/3,s14,x6/10,s15,x15/11,pa/f,s7,x3/4,pj/h,s9,x8/2,pb/g,x4/3,s15,x2/11,s9,x1/4,s2,x0/12,pf/c,x13/10,s11,x5/14,s8,x9/0,s9,x11/8,pj/n,x2/15,s8,pf/k,s10,pb/j,x10/6,s13,x13/2,pg/n,x11/10,pi/j,x6/0,s12,x10/9,s10,x12/2,s11,x7/13,pa/d,x3/15,s2,x11/12,s11,x10/5,s6,x8/12,s8,x5/15,s15,x13/6,s3,po/i,x11/12,s9,x15/1,pb/f,s2,x12/6,s9,x13/4,s5,pp/d,x5/2,s6,x0/6,s9,x9/11,s14,pa/o,x15/3,s8,x9/1,s8,x11/12,pe/i,x6/3,s8,x0/4,po/f,x7/11,pm/n,x15/8,pg/o,x12/3,s8,x14/8,pk/b,x12/1,s8,x9/4,s7,x10/12,s12,x4/6,pe/d,x10/2,pb/c,s15,x4/12,s10,x9/1,po/n,s8,x3/2,pm/g,x4/1,pi/p,s11,x13/15,pk/a,x9/0,pe/m,x15/14,s4,x6/7,pl/k,x10/13,s14,x7/3,pg/e,x11/1,ph/k,s9,x15/7,s11,x14/9,pc/i,x6/15,pn/f,s6,x9/3,pk/c,x1/8,s2,x9/4,s8,x7/13,s3,pa/o,s11,x14/15,pm/e,x11/8,s1,x6/0,pb/k,x11/15,s14,x12/6,s4,x1/8,pa/h,s9,x5/0,s4,x10/9,s3,x0/4,s1,x12/7,s8,x5/15,s3,x11/0,s1,x5/12,s7,x0/6,s14,pd/c,x3/7,pa/n,s5,x12/4,s2,x3/13,pg/e,x2/15,s10,x4/1,s12,x8/15,pn/l,x3/14,s4,x1/15,pe/j,x5/4,s6,x14/7,s2,x12/13,pc/g,x2/3,pn/b,x0/6,s9,x10/2,pc/a,x15/8,pf/g,x10/11,s1,x8/13,pe/h,x4/6,pj/g,s15,x9/12,pm/l,x15/10,s8,x7/12,s8,x6/9,pn/i,x4/0,pd/a,x3/1,s7,x2/4,s1,x10/0,s4,x9/11,pe/k,x12/15,s13,pf/i,x14/11,s2,x0/15,s11,x12/13,po/k,x1/7,pi/j,x5/2,pk/m,x0/10,s2,x5/4,pp/d,s6,x8/12,pe/c,x0/14,s6,x11/6,s9,x9/7,s7,x6/0,s10,x5/2,s5,x14/11,s12,x0/4,pp/a,x9/12,pm/d,x14/6,s2,x15/4,pl/c,x11/12,s4,x7/5,po/j,x14/1,s12,pn/e,x10/4,pm/a,x2/13,s10,x12/6,s2,x9/2,s4,x3/6,s6,x2/0,s15,x11/14,pn/c,x15/13,s4,x14/0,s4,x11/9,s13,x2/6,pm/b,s8,x15/1,po/n,x9/10,s10,x5/0,pg/j,x2/8,s13,x0/15,s7,x9/1,s3,x8/6,s9,x4/0,po/l,x14/5,pd/h,x8/4,pa/l,x13/11,s7,x15/14,pb/n,x10/8,pj/f,x15/13,s13,x6/5,s15,x1/11,pd/o,x3/9,s4,x14/11,pb/m,x5/15,pa/h,s6,x1/11,pj/b,x5/14,s15,x15/3,s11,x5/12,pa/m,x9/11,s1,x10/1,s5,x12/11,pc/i,x4/1,s6,x11/13,pl/f,x1/6,s11,x15/11,pi/h,x7/10,s14,x2/9,pd/m,x8/1,s13,x0/3,s3,x7/12,pj/e,x2/14,s7,x9/12,s4,x1/10,pp/g,x9/13,s14,x12/0,s13,x1/3,pi/o,x5/9,s5,x4/12,pf/m,s15,x11/3,s11,x13/4,po/k,x5/0,s11,x7/13,pl/d,x15/11,s14,x13/6,s14,pe/o,s11,x12/14,s14,pc/j,x5/7,pa/g,x6/15,s1,x14/3,pd/j,s15,x1/8,s14,x2/6,s3,x1/0,pb/n,x14/6,pg/e,x4/13,s4,x7/0,pf/n,s10,x6/12,pj/o,x9/14,s10,x11/1,pi/m,x7/8,pf/d,x11/14,s10,pm/b,x4/5,s9,x9/7,po/j,x4/15,pi/b,s4,x8/2,s1,x3/13,s12,x15/1,s11,pm/d,x11/8,s1,x12/6,pf/g,x1/7,pm/p,x15/5,s11,x8/14,pl/h,x0/1,pe/a,x4/10,pm/p,x6/12,po/f,x7/2,pp/m,x14/3,s4,x10/15,pa/f,x0/14,pc/b,x7/11,s1,x15/9,pa/o,x3/5,pd/e,x11/6,po/m,x15/12,s5,x10/6,pb/h,x2/12,s5,x10/4,pg/i,x14/12,s4,x8/1,s13,x3/13,pj/b,x5/0,s3,x6/14,pg/m,x7/3,s4,x10/1,pb/l,s12,x8/15,s6,pm/f,x6/9,s14,x14/3,pg/k,x5/12,pd/n,x6/14,pj/f,x10/12,s1,x14/1,pc/g,x10/7,s11,x4/14,s9,x3/15,s12,x12/11,s8,x5/1,s6,x2/13,s5,x6/8,pm/k,x14/5,pf/p,x0/11,s12,x7/13,s3,x3/14,pj/h,x6/2,pe/k,x4/7,po/h,x3/8,s5,x14/10,s12,x12/4,s7,x13/14,pm/i,x4/0,po/d,x12/7,pp/b,x15/10,s7,x8/5,pl/a,x6/10,s7,x13/15,s6,x3/8,s11,x13/12,s13,x14/6,pb/m,x13/9,pe/j,x15/11,pb/f,x5/13,s3,x4/1,s3,x12/7,s5,pk/c,x15/10,s11,x1/13,s15,x9/5,s1,x14/3,pn/p,s10,x7/15,s2,pl/d,x0/2,pa/m,s7,x1/13,s10,ph/e,x6/12,pn/a,x3/15,pg/i,x10/8,pd/o,x7/13,pc/a,x10/0,pi/b,x3/12,pc/h,x15/1,s1,x0/11,pe/f,x3/15,pm/k,x8/4,pf/b,x7/10,s3,x2/13,po/k,x6/1,pl/h,x7/3,s6,pf/o,x8/1,s10,x14/13,pl/p,x4/8,s5,x14/5,pb/o,x13/2,pf/c,x9/1,pk/o,x6/11,s4,x7/0,s6,x3/11,s3,pc/b,x2/5,s15,x4/15,pm/o,s11,x7/5,pb/n,x12/10,s11,x13/15,pp/c,x8/14,s12,x3/1,s1,pe/g,x4/14,s6,x3/13,pc/p,x10/8,pn/e,s11,x4/11,s1,x7/10,s4,x5/14,pd/g,x2/12,s5,x3/13,s14,pp/b,x14/4,pk/n,x3/1,pd/g,x11/10,pe/p,s6,x9/8,s10,x11/3,s1,x5/10,s13,x8/15,s2,x12/9,s1,x0/10,pa/i,x1/9,pd/o,x5/12,s13,x2/0,s10,x13/9,s14,pb/p,x0/10,pa/h,x9/5,s3,pm/k,x4/8,s10,x6/10,s4,x11/3,s12,x4/7,s13,x9/6,s5,pd/i,x7/10,po/l,x4/14,s1,x0/2,s6,x1/5,s9,pm/c,x14/4,pp/n,x2/5,pl/k,x15/4,s2,x1/14,s9,x0/13,s14,pm/i,s1,x8/2,s10,x12/13,s1,x8/2,s3,x6/1,pb/e,x4/3,s2,x2/12,s6,x0/5,po/j,x8/4,pi/a,x10/2,pp/f,s5,x4/8,pl/g,x1/0,s8,x12/3,s3,x5/15,s4,x3/0,pm/n,x11/6,s5,x14/13,s14,x6/3,s7,x2/1,s15,x7/6,s14,x5/9,s9,x1/15,s9,x6/0,s12,x7/9,s13,x13/12,s14,x14/9,s15,x8/13,s5,x5/14,s8,x11/13,pj/b,x2/3,pn/o,x15/5,s4,x6/13,s6,pd/l,x9/8,s1,x0/14,s10,x6/5,s2,pp/i,x12/9,s7,x14/2,ph/f,s4,pi/l,x15/11,s12,x13/2,pn/h,s6,x4/10,s15,x13/6,s15,x15/8,s5,x4/14,pf/i,x3/7,po/g,x2/4,s5,x14/8,s10,x9/3,s4,x2/13,pf/a,x15/11,pd/c,x12/13,s1,x10/11,s12,x1/7,s10,x14/15,s10,x6/3,s12,x9/15,s14,x3/10,s11,pa/b,x14/2,s12,x5/13,s5,x9/2,pn/k,x7/1,s7,x4/5,s13,x13/6,s5,x15/3,s4,x13/1,pa/h,s8,x3/4,pm/e,x5/10,pb/g,x3/15,pe/i,s7,x4/5,s2,x2/15,s1,pm/a,x6/0,s5,x13/11,pp/b,x5/9,s6,x2/10,pk/o,x1/13,s3,x10/14,s1,x6/5,s11,x2/7,pg/i,s12,x13/9,s8,x2/10,s11,pm/a,x5/14,pg/o,x11/4,s11,x6/13,pd/p,x4/5,s1,x10/13,s15,x0/2,s1,x3/10,s4,x5/9,s11,x3/13,s13,x5/9,s1,x11/8,s14,x14/4,s9,x12/6,pm/f,s15,x7/2,pc/k,x5/6,s14,x13/1,pa/i,s10,x4/9,ph/c,x6/5,s1,x11/14,s1,x9/13,s14,pa/j,x7/14,pi/b,x12/10,pd/a,x0/11,s15,x12/7,pb/i,s12,x9/15,pe/f,x5/3,s7,x10/4,pg/i,s2,x1/6,s15,x8/14,po/j,s10,x9/11,pe/d,x2/3,s11,x14/10,s5,x13/3,pm/l,x7/15,pn/e,x12/6,s12,x8/5,s1,x1/14,s5,x6/7,s2,x3/12,s3,x5/15,s4,x13/3,s2,x11/2,pd/b,x7/0,s10,x13/8,s6,x6/5,s13,x7/8,pg/l,s10,x11/9,pn/a,x8/1,pm/f,s14,x15/14,s14,x2/9,s12,x13/11,s8,x5/2,pk/o,x7/11,pf/j,x15/13,pi/m,x1/7,s15,x13/14,s3,x12/0,s4,x6/1,s9,ph/l,x8/2,s4,x12/10,pm/n,x11/1,pl/j,x2/6,s7,x8/5,s7,x15/13,s6,x8/7,s2,x2/3,pk/p,x0/9,s9,x6/10,po/e,x3/14,pa/p,x8/15,s6,x3/7,s12,x14/9,s13,x2/8,pi/c,x13/15,s6,x1/3,pp/j,x5/10,s8,x15/1,po/f,x13/6,s13,x10/12,pp/j,x2/7,s14,x5/4,pe/a,x3/11,s9,x13/9,s10,x5/11,pg/n,x9/7,pa/l,x1/14,s6,x9/10,s14,x13/3,pn/o,x15/9,s3,x11/10,s7,x13/3,s7,x12/10,s1,x7/14,s4,x9/15,s8,x8/7,s3,x5/14,s7,x11/13,pc/g,x4/9,pi/n,x2/3,s11,x11/10,s13,x5/12,pf/e,x3/2,s4,x10/1,s12,po/m,x9/0,s6,x2/14,pl/f,x12/3,s6,x9/2,s10,x15/6,pi/c,x2/7,s7,x14/0,pl/m,x13/1,pe/p,x9/2,pb/j,x8/1,s11,x3/11,s4,x15/12,s7,x14/9,pg/l,x3/0,pa/p,x13/4,s5,x1/8,s10,x10/3,s6,x6/12,s8,x10/7,s1,x9/13,pk/h,x2/7,s15,pi/b,s5,pe/j,x12/6,pn/k,s14,x4/5,pi/b,x14/15,s15,x7/1,pc/a,x8/10,s6,x0/1,s4,x7/9,s10,x13/1,ph/l,x15/11,pg/a,x7/3,s4,x15/1,s1,x14/7,s13,x6/15,s8,x0/10,pm/o,x4/6,s8,x3/13,s2,x9/6,pg/p,x3/11,pi/k,x6/14,s7,x7/10,pe/l,x8/15,s9,pg/c,x7/11,pf/d,x2/8,s12,x15/11,s6,x5/9,pk/i,s5,x7/10,pa/g,x12/8,s5,x7/15,s6,x13/1,pf/b,x3/7,ph/n,x15/13,s4,x9/4,pc/g,x3/2,s12,x11/12,pm/o,x14/6,s6,pj/i,x3/4,s7,x12/0,pk/b,s11,x15/1,s14,pn/d,x11/0,pg/m,x12/1,s4,x5/7,s8,x9/15,s3,pj/h,x0/1,s10,x2/4,pd/m,x13/14,s11,pb/p,x3/10,s5,x15/8,pm/c,x4/14,s4,x5/8,s2,pa/h,x14/2,pe/i,x15/10,pp/b,x14/5,s15,x13/7,s12,x5/6,pa/c,x11/12,s9,x10/5,s7,x0/13,ph/f,s10,x3/12,s8,x15/2,pp/a,x5/0,s14,x13/11,s2,pn/e,x15/0,s11,x4/13,po/c,x2/5,s13,x11/1,s5,x12/2,s15,x15/13,s14,x9/5,s10,x13/12,pn/e,x10/8,pk/i,x0/9,s8,x2/10,s1,x8/0,po/c,x10/14,pb/h,x0/5,pn/i,x14/10,s2,x3/6,s8,x1/10,s15,x2/0,s13,x15/8,pc/h,x2/3,s15,x5/9,s11,pb/a,x14/4,s10,x13/7,s11,x6/2,s1,x5/4,pj/e,x9/3,ph/l,x15/4,s3,x5/0,s4,x10/3,s4,x4/14,pm/d,x13/9,s3,x15/7,s6,x9/14,s8,x2/10,s7,x0/4,s4,x11/6,pp/a,x13/4,s4,x0/12,s9,x14/8,pc/n,x4/2,s14,x11/9,pj/k,s14,x15/10,pd/g,x6/7,s8,x8/15,s8,pm/j,x11/1,pg/a,x5/8,pk/i,x10/2,s13,x5/14,s15,x1/15,pl/m,x5/14,s3,x10/3,pj/g,x13/9,ph/p,x5/2,pi/o,x15/12,s11,x6/10,pg/l,x8/5,s8,x4/13,pe/k,x3/0,pn/j,x2/5,s3,x10/8,pd/m,s10,x2/12,s14,x0/7,s10,x15/3,s15,x6/13,s14,x4/0,s15,x11/6,s2,x3/13,s8,x4/14,ph/k,s2,x15/6,pe/o,x3/14,s11,x1/7,s7,x2/11,pa/l,x3/0,pf/o,x4/7,s10,x11/6,pg/i,s6,pj/n,s14,x9/4,ph/d,x2/12,s13,x13/0,s13,x3/8,po/p,x14/11,s1,x0/10,pj/m,x12/1,s10,x15/11,pn/a,x2/14,ph/j,s3,x10/11,s12,x6/15,s3,x11/14,pp/c,x5/6,s4,x14/12,s8,x7/15,s2,x10/2,pl/m,x0/12,po/n,x8/5,s3,x4/14,pi/a,s13,x12/5,pd/j,x15/2,s13,x14/7,s5,x5/3,s13,x11/6,pa/c,x4/12,pp/e,x14/0,s13,x8/11,s6,x14/13,s10,x2/11,pk/i,s9,ph/f,x5/9,s5,x7/12,pk/a,x11/8,pb/n,x15/0,s3,x6/4,pl/m,x12/11,s10,x4/15,s15,x13/10,pj/p,x8/14,pg/m,x4/3,s10,x0/2,s15,x6/4,s14,pd/f,x3/12,s3,x14/9,pp/l,x3/15,s10,x4/14,pi/d,x12/1,s1,x4/11,s3,x14/3,s2,x5/8,s12,pj/p,x2/10,s3,x3/12,s14,x11/1,s1,x13/3,s5,x6/0,pl/g,x4/2,s6,x14/10,s11,x0/11,ph/j,x14/2,s13,x3/11,s5,x10/7,s8,x15/12,s8,x4/5,s10,x13/14,s11,x5/8,pg/p,x1/7,s13,x11/8,s8,x1/4,pf/h,s5,x9/12,po/k,x1/4,s10,x3/7,s8,x9/8,s13,x5/1,s11,x13/14,s2,x8/10,pf/e,s1,x12/9,po/k,s10,x11/15,s6,x7/1,s6,x8/9,pe/p,s13,x10/3,s2,x8/9,pb/c,x2/15,s11,x7/11,s3,x9/10,s15,x6/7,s5,x10/13,pa/e,x7/11,s10,x12/10,pm/l,x8/13,s9,pj/n,x15/11,pf/i,s11,x7/2,s14,x0/10,s15,x1/5,s7,x8/3,s8,x5/11,s15,pl/h,x4/2,s10,x6/8,s8,pb/g,x12/2,s11,x6/11,s6,pc/j,x14/12,s5,x6/8,s9,x11/9,s13,x12/5,s5,x3/14,s12,x1/0,pd/b,x4/5,s3,x0/6,s5,x14/15,pa/e,x7/1,s6,x11/15,s13,x14/1,s15,x10/6,pm/i,x13/2,pl/n,x6/15,pj/i,x5/7,s3,x0/8,s4,x2/9,s11,x1/3,pg/c,x11/15,pf/k,x0/9,s11,x10/7,pl/d,s11,x14/1,s1,x0/7,s12,pp/e,x10/6,pf/d,x9/4,pj/c,x7/0,s12,x14/3,s1,x9/12,s2,x15/11,s2,x12/14,s12,x4/5,pp/d,x15/12,po/h,x13/9,s4,x3/6,pa/g,x8/10,po/d,x12/14,s7,x13/9,s4,x7/12,s7,x1/6,pg/m,x2/4,s11,x5/9,s7,pc/i,x13/2,s4,x6/15,pg/o,x8/11,s15,x4/6,s5,x10/12,pe/b,x9/14,pc/a,x4/6,s10,pg/f,s5,x12/9,s9,x13/15,s9,x0/5,s10,x8/10,s1,x6/5,s9,x2/0,ph/e,x4/14,s12,x2/11,pd/k,x13/9,s4,x7/4,ph/n,s11,x8/13,pp/i,x6/11,s2,x5/15,s4,pl/c,x12/3,s10,x1/15,pg/n,s9,x11/4,s3,x9/8,s7,x11/15,s10,po/f,x5/0,s15,pa/g,x14/3,ph/m,x15/12,s8,x8/2,s3,x1/6,s1,pf/b,x7/3,s12,x11/12,po/g,x13/4,s4,pi/n,x6/9,s4,x5/13,pj/f,x6/10,s7,x3/11,s3,pg/p,x1/15,po/k,x6/0,s11,x13/2,pe/m,x0/5,s15,x1/14,s7,x2/6,pf/l,s6,x15/9,s15,x8/12,pg/o,x10/1,s8,x7/9,pa/e,s9,x0/13,pj/d,x15/9,s5,x11/4,s4,x5/7,s15,x12/1,s14,x11/15,s3,x10/0,s13,x9/14,s11,pb/h,x8/12,pn/f,x0/14,pp/l,x8/13,s10,x2/1,s11,po/f,x14/8,pn/j,x2/5,pc/h,x7/10,pn/e,x8/15,s15,x12/11,pd/l,x13/3,s9,x1/11,s3,x12/13,pb/k,x2/9,pd/m,x7/5,pf/g,x13/11,s12,x14/2,s10,x3/13,pj/e,x7/15,s2,x9/10,pc/d,x6/8,s10,x7/9,pm/e,x12/6,s10,x7/8,pp/a,x0/9,s2,pj/i,x8/1,s15,x7/10,s10,x0/3,po/g,x13/14,s4,x15/3,s11,x4/8,s2,pp/d,x7/11,s1,x9/8,s3,x15/5,s15,x3/12,s12,x9/14,pa/j,x8/0,s7,x4/5,pk/o,x7/3,s9,x6/0,s10,x4/7,pe/i,s8,x13/8,s4,x9/0,pd/k,x5/13,s8,x10/15,pf/a,x11/9,s5,x6/7,s3,x5/11,s3,x15/1,pb/d,s11,x2/8,s15,x3/15,pg/c,x2/8,pl/k,x0/9,s9,pg/h,x7/4,pa/f,s3,x13/3,pd/i,x6/12,s2,x13/9,pa/n,x0/5,s5,x3/12,s15,pl/k,x7/6,s1,x2/11,s14,x3/4,s9,x14/12,s15,pj/i,x4/3,pg/p,x15/0,po/a,x7/3,pp/n,x15/4,pd/o,s4,x5/13,ph/c,s3,x1/3,pj/i,x7/11,pd/g,x9/10,po/i,x11/5,pk/h,x8/2,s4,x0/12,pf/l,x9/5,pa/g,s2,x13/3,pk/c,x11/0,s10,x3/8,s10,x10/1,pg/o,x3/11,s11,x9/12,s4,pm/n,x3/14,s5,x15/0,s4,x10/12,ph/b,x15/0,pj/o,x2/1,s6,x9/10,s11,x7/12,pm/l,x1/8,pi/e,x2/12,pb/f,x1/10,pm/j,x14/4,pf/h,x2/3,pc/d,x13/1,s4,x4/7,pk/g,x3/6,s9,x0/14,s6,x6/11,s1,x10/1,s5,x11/12,pp/o,x14/3,s13,x7/5,s8,x11/4,s12,pk/e,x6/5,po/m,x1/15,s3,x8/4,s15,x1/5,s4,x4/15,s9,x13/3,pg/d,s2,x7/5,s9,x13/2,pk/n,s3,x9/4,s1,x0/6,s15,pb/i,x14/10,pl/j,x1/12,pp/i,x14/15,s14,pn/m,s9,pj/b,x6/3,s12,pe/k,x1/10,po/b,x13/6,ph/l,x5/8,pk/e,x6/15,pn/b,x13/7,pe/f,x10/15,s14,x8/5,ph/b,x15/2,pj/k,x9/5,s12,pi/o,x0/2,s13,x4/12,pe/c,x9/5,pg/h,x3/2,pa/m,x0/10,s10,x12/9,pc/g,x1/5,s15,x6/12,pl/m,x1/8,s4,x11/10,pb/k,x12/14,pg/i,x0/7,pj/e,s1,x12/8,s12,x7/11,pm/p,x14/8,pl/e,s14,x9/2,pk/d,x8/10,s9,x6/4,s5,x2/1,pn/j,x5/7,s2,x9/10,s12,x8/12,s7,x3/10,s2,pp/l,x7/11,pf/a,x14/8,s15,x15/4,po/k,x14/2,s7,x11/5,pc/b,x1/9,s1,x8/11,s13,x1/15,pj/p,x9/7,pe/a,x11/0,pg/i,x9/15,s13,x4/8,pa/l,x13/14,pg/d,x15/1,s10,x7/11,s3,x4/3,s9,x7/14,pi/k,x15/9,s3,x8/6,s6,x14/5,pa/m,x8/9,pc/f,s5,x5/6,s11,pi/l,x11/4,s13,x8/7,pm/c,x12/15,pl/g,x0/2,s3,x11/8,ph/m,s3,x3/14,s3,pn/j,x10/4,s5,x6/5,s9,x9/10,pm/i,x0/7,s5,x8/6,pg/e,x11/12,s7,x14/4,s7,x1/8,pn/d,x12/3,pl/f,x5/10,s12,x0/11,s8,x7/3,pg/j,x0/13,s15,x14/9,s2,x8/4,po/p,x13/10,pn/f,x15/9,s8,x5/2,s2,pg/o,x9/11,s7,x12/0,pl/c,x13/11,s11,x7/9,po/j,x5/13,s4,x9/6,s9,x11/5,s1,x1/2,s15,x3/5,s8,x10/15,pb/n,x2/1,s7,x10/4,s1,x3/5,pd/p,x12/1,s1,x11/8,s1,x6/10,s3,x15/1,pf/k,x5/2,pn/h,x3/12,pp/o,x11/5,s11,x3/10,s3,x8/0,s13,pc/d,x15/11,po/a,x13/2,ph/l,s8,pb/i,x1/12,pe/o,x13/5,ph/n,s6,x2/3,s7,x14/1,s13,x8/15,s5,x4/13,pi/b,x8/2,s10,x10/9,ph/k,x6/14,pc/n,x9/12,ph/a,x7/8,s4,x11/1,s10,x12/2,s1,x0/5,po/l,s11,pa/d,x1/14,s13,x10/13,pg/e,s4,x1/7,s5,x4/13,pf/h,x2/6,pi/p,x10/3,s13,x0/5,pg/l,x10/8,s4,x15/2,s15,x13/4,pk/c,x3/14,s5,x4/11,s13,x8/6,s7,x5/2,pi/g,x14/13,s8,x11/5,s9,x10/15,pc/b,x8/2,s15,x5/0,pm/p,x13/4,s11,x5/9,pe/c,x11/0,po/d,x7/9,s6,x11/0,s5,x13/12,ph/k,x3/15,s6,x2/6,s13,x1/10,s14,x9/5,s9,x10/7,s1,x15/6,s7,x4/11,s7,x7/6,pa/j,x0/14,pe/g,x9/6,s7,x10/3,pi/l,x15/12,pk/g,x6/13,s15,x15/1,s3,x11/8,s8,pa/n,x7/15,s10,pi/p,s15,x1/13,s13,pc/a,x8/12,s9,x11/4,pl/m,x14/8,s10,x9/15,pj/p,x7/3,s4,x9/15,pn/b,x6/8,s4,x11/1,pa/g,s9,pk/i,x4/12,s8,x0/13,pn/j,x14/10,s2,x15/7,s5,x9/8,s15,x5/1,s15,x4/11,s6,x8/15,s12,x10/14,s14,x6/1,po/m,x10/3,s6,pe/i,x1/13,pc/l,x4/9,s2,pg/p,x2/13,s9,x3/6,s13,x10/13,s11,x0/8,pe/m,s5,x2/9,pi/c,x13/6,pm/h,s14,x5/4,pa/e,x15/7,s12,x13/2,s6,x1/4,s4,x11/5,s5,x9/14,pn/f,x12/5,s12,x9/0,s3,x15/3,s4,x10/9,po/j,x7/4,s12,x14/5,pb/h,x10/11,po/j,x14/4,s4,x11/5,s12,x12/15,pb/n,x5/13,pl/e,x14/12,pj/m,x3/6,s2,x4/12,s3,x9/5,ph/o,x1/4,s7,x6/5,s2,x0/8,pc/m,x12/4,s13,x7/1,s14,x9/4,s13,ph/k,x10/3,pe/d,x5/7,pb/n,x1/11,s7,x14/12,s4,x5/8,s15,x9/2,s2,x8/10,s15,x4/1,pd/a,x8/3,pk/b,x2/11,pg/o,x15/5,s2,x1/6,pp/n,x0/5,pf/g,s1,x14/12,s11,x2/6,pj/l,x3/7,s1,x4/15,ph/a,x3/6,s14,x2/12,pi/p,x15/13,pd/m,x3/2,pg/l,x5/13,s9,x4/14,pj/c,x5/13,s6,x0/7,s10,x8/10,pm/i,x12/4,s13,x10/0,s2,x5/6,s4,x3/7,pl/j,x12/10,s6,x9/6,s5,x14/8,s2,x1/2,s12,x6/12,pn/m,x11/7,s3,x0/12,s11,pb/p,s15,x10/8,s12,x4/1,s6,x15/5,pi/a,x9/1,s14,x15/5,s11,x8/12,po/g,x4/9,s3,pn/m,s14,pl/f,x3/2,pa/p,x14/4,s9,pe/n,x11/2,pc/b,x13/10,s14,x3/11,s3,pp/d,x14/15,s13,x11/9,s14,x0/12,s7,x6/14,s2,x8/9,s2,x2/10,s13,x14/11,pe/n,x9/6,s5,x5/0,s9,x11/14,ph/d,x1/12,s3,x9/0,pb/c,x6/1,pl/m,x7/0,s5,x2/8,pc/e,x9/11,pk/m,x0/4,pi/p,x7/9,s3,x11/4,s5,x9/15,s10,x7/14,ph/n,s8,x9/5,s14,x8/12,s3,x5/7,s7,x12/3,s7,x13/7,pi/d,x8/2,s15,x3/13,s11,x8/15,s2,x12/7,s13,x3/4,s11,x15/0,pl/o,x4/2,s10,pb/d,x7/8,s12,x10/3,s3,x5/0,pl/k,x9/2,s11,x10/7,s11,pi/h,x13/0,pm/j,x11/14,s8,x7/13,pk/c,s2,x6/14,pn/i,x5/1,s5,x10/8,s11,x9/13,s1,pb/c,x8/2,s13,pd/j,x15/5,s2,x3/2,s8,x11/7,s8,x2/1,s5,x9/10,s6,x4/7,s14,x11/15,s3,x1/14,s7,x7/9,s1,x8/13,pb/e,x6/11,pp/i,x2/5,s13,pa/n,x12/13,s2,x11/7,pi/k,x1/5,s3,x11/9,s2,x2/6,pc/l,x12/9,s6,x2/15,pi/a,x6/10,pn/d,x0/1,s11,x15/6,s13,x4/11,pg/f,s7,x6/9,s14,x1/11,po/m,x14/9,s9,x15/6,s10,x5/0,s12,x3/8,s12,x10/4,s13,pb/d,x11/9,pf/e,x8/6,s10,x9/14,s10,x1/10,s5,pl/n,x12/4,pp/f,x15/8,s5,x0/4,s11,x10/12,s13,x11/1,s6,pm/l,x5/2,s9,pf/a,x10/12,s5,x0/13,pk/p,x10/7,s8,x14/11,pj/f,x0/8,pl/b,x3/9,pe/n,x8/5,pm/d,x15/6,s13,x2/13,pp/n,x6/4,s4,x7/13,s1,x2/11,s3,x14/7,pi/a,x4/3,s3,x15/7,s1,x14/4,s6,x7/5,s13,x0/12,s10,ph/b,x3/10,pn/d,x2/1,pk/f,x3/5,pd/e,s3,x11/7,s8,x14/3,s3,x7/8,s2,x4/1,pm/f,x6/11,s4,x10/7,s9,x11/0,pj/i,s5,x3/1,s6,x5/0,pc/d,x11/13,s14,pf/j,x4/12,s6,x14/0,pm/n,x3/5,po/i,x13/12,pk/b,x0/15,s9,x2/5,s9,pa/j,s6,x3/12,s12,x8/2,pe/m,x13/5,s13,x7/4,s2,x2/15,po/h,x8/0,s15,pj/g,x9/12,s10,x13/6,s13,pl/n,x2/10,s6,x5/12,pe/p,x4/11,s13,x2/14,s14,x10/4,pj/h,x2/11,pi/p,x13/5,s12,x9/0,s14,x2/11,s8,x12/15,s7,x8/10,pe/j,x6/11,s12,pp/m,x5/4,pn/k,x7/6,s13,x12/5,s10,x10/0,s11,x1/6,pm/h,x13/9,pa/d,x10/3,s15,x0/13,s11,x6/1,s2,x0/7,s2,x13/14,pp/h,x0/5,pj/d,x7/9,pb/i,s2,x0/14,s4,x4/5,s11,x11/10,s14,x7/12,s8,x5/6,s12,x8/3,pg/m,x2/13,s12,x9/5,pc/o,x3/6,pe/b,x14/2,s4,x0/1,s14,x13/4,s2,x11/9,pa/k,x12/14,s4,x13/4,pg/p,x5/11,pb/d,x8/7,pa/n,x13/6,pd/g,x10/0,s8,pm/n,x13/4,pk/d,s9,x3/5,s6,x1/4,s15,x9/12,pm/b,x5/11,pl/a,x3/8,s2,x2/1,s11,x7/10,s8,po/c,x12/5,s4,x6/9,pl/p,x1/11,s8,x14/12,pa/i,x10/8,pl/e,x7/13,s14,x10/0,s9,x6/4,s14,x10/11,ph/g,x0/9,s4,x6/2,s10,x3/7,s14,x6/5,pj/k,s2,x3/10,s3,x5/8,pp/d,x9/3,s11,x12/6,s11,x8/10,s6,x5/6,ph/n,x4/1,s13,x2/8,pl/p,s7,x6/5,s5,x3/4,s4,x7/11,s15,x13/14,pb/g,x9/8,po/n,s14,x2/15,s13,x12/3,s15,x9/13,pa/f,x3/6,s13,x1/4,pn/b,x7/0,pl/f,x1/10,pa/c,x2/7,s5,x15/14,pj/g,s13,x3/0,s7,pc/d,x12/6,pa/p,x15/8,s13,x0/9,pm/l,x4/12,pk/a,x0/3,pg/i,x2/12,s13,x4/1,pe/p,x6/0,pm/a,x15/2,pe/l,x0/6,po/f,x11/10,s5,x6/0,s9,x11/15,s5,x1/7,s8,x9/3,pg/i,s4,pb/e,x11/6,pl/k,s3,x2/3,pf/b,x1/13,pk/h,x2/5,s6,x3/6,pn/f,x5/1,pe/h,x14/12,pn/j,x10/2,s3,x1/15,s12,x13/3,s12,x1/6,pm/k,x8/15,s5,x10/14,pg/c,s6,x8/2,s14,x4/12,pj/i,x8/0,s14,x13/15,po/e,s15,x7/1,s11,pj/h,x3/5,pb/n,x11/1,s13,x8/9,s10,x0/14,s8,x9/7,s7,x4/12,s6,pc/m,x13/0,s1,x8/15,s1,x0/2,s6,x10/3,s5,x7/12,s4,x1/2,s12,x13/4,s14,x12/2,pe/n,x0/9,s5,x5/15,s8,x3/0,s4,x5/1,pg/k,x4/6,s9,x13/3,s15,x10/7,s6,x9/15,pp/n,x6/11,pd/j,s10,x1/7,s10,x13/10,s15,x4/1,s6,x2/9,pp/h,x11/14,s6,x4/0,s1,x1/5,pn/c,x8/11,s6,pp/f,x0/13,pe/m,x3/8,s9,x2/6,s12,x8/7,s14,x12/1,s1,x13/3,s1,x4/11,s9,x7/2,pn/j,x15/6,s9,x13/9,s9,x3/0,pk/c,x14/10,pf/e,x13/3,s7,x7/4,pk/p,s8,x14/2,s9,x15/3,s13,x5/6,pd/l,x8/2,s5,pm/c,x11/3,pe/g,x6/5,s4,x15/0,s10,x14/9,pc/l,x7/12,pf/i,x14/2,s2,x11/6,s10,x15/12,pg/l,x3/14,pp/h,x9/8,pl/a,x0/14,pi/m,x7/9,s8,pg/c,x2/0,pe/l,s7,x5/6,s15,x9/0,s12,pf/d,x4/11,s12,x15/1,pi/e,x4/14,pb/k,x3/0,s4,x2/14,s9,x1/6,s7,x11/7,s12,x1/10,pp/n,x15/6,ph/k,x4/11,s11,x7/0,po/g,x15/8,s3,x12/14,pl/j,x11/5,pe/d,x6/13,ph/k,s8,x10/4,s7,x14/11,pn/b,x7/1,s3,x10/3,pj/k,x11/4,s4,x13/5,s14,x1/9,s12,x0/6,s8,x15/11,s1,x5/4,po/c,x14/0,pe/k,x5/8,pb/j,x15/14,s2,x0/10,s9,x11/9,s7,x3/0,s12,x5/14,s11,pc/p,x7/2,s3,x12/1,s5,x6/0,s13,x11/5,pm/b,x14/13,pd/j,x7/1,s10,x11/14,s5,x4/13,s12,x10/8,s14,x5/12,s6,x9/4,pm/c,x10/15,s6,x3/0,pk/o,x6/13,s11,x4/11,ph/e,x1/13,s6,x2/0,s13,x3/13,s7,x14/12,s10,pk/p,x8/9,s11,x10/2,s2,x7/6,pa/l,x14/13,s11,x3/15,s3,x12/11,s10,pb/c,x0/6,pe/n,x10/4,pf/c,x2/5,pj/e,x14/13,s12,x7/3,pd/n,x10/1,pc/b,x4/3,ph/k,x9/13,s2,x14/6,s2,x5/9,s5,x2/14,s7,pa/m,x11/0,s13,x7/3,s2,x4/1,pd/l,x7/13,pp/b,x8/4,s6,x10/5,pe/g,s14,x1/12,s12,x11/6,s6,x5/8,s5,x11/15,ph/c,x6/0,po/m,x4/10,s2,pe/d,s15,x11/15,ph/c,x1/9,s6,x3/8,pf/b,x10/11,pp/n,x5/13,pj/g,s4,x12/9,s14,x4/15,s6,x1/9,s1,pp/f,s4,x15/11,pa/g,x14/2,pn/o,s9,x8/3,s12,x6/13,pa/j,x1/10,pc/h,x3/12,s14,x2/5,pk/l,x12/7,pg/i,x2/15,pk/f,x14/5,pd/g,x4/6,pj/n,x10/13,s1,x15/3,s11,x4/8,s5,x15/12,s14,x9/10,pf/b,x8/3,s2,x0/15,s14,x14/7,po/d,x5/0,s5,x8/14,s2,x3/4,s4,x0/2,s2,x5/4,s9,pb/j,x15/9,pe/p,x0/5,s12,x2/12,s15,x13/0,s15,x10/9,s8,x4/6,po/g,x11/15,pc/f,x10/2,s11,x5/11,s12,x2/1,pd/j,s14,x12/5,s14,x11/6,pi/l,x7/5,s9,x6/2,s3,x7/15,s14,x3/2,s10,x0/10,pp/f,x11/14,s9,x10/13,s3,x9/2,po/e,x12/10,s2,x7/6,s10,x8/3,s11,x11/10,pf/j,x1/5,s9,x15/4,pb/g,x11/0,pk/f,x12/14,s10,x8/2,s5,x6/10,pi/n,s12,x0/8,pm/g,x4/13,s3,x6/3,pn/p,x8/9,s15,x3/4,s1,x5/9,pm/a,x1/4,pe/b,x8/13,s7,x6/7,pk/j,s11,x3/1,s4,x2/9,s14,x6/4,s14,pb/l,s13,x0/3,pf/j,x1/10,s8,x12/11,s12,pe/h,x14/15,s10,x13/3,s11,x6/12,s10,x5/0,s7,x10/14,s11,x4/3,pk/j,x13/0,s8,x14/9,s12,x3/13,pi/m,s11,x9/11,s9,x4/3,s9,x12/7,s3,x0/11,s14,x2/8,pl/h,x5/14,s12,x11/7,s13,x12/2,po/c,x11/8,s3,pm/n,s15,x15/10,pl/c,x8/0,s6,x1/6,pb/p,x4/0,s1,x5/3,pd/i,x2/1,pl/k,x4/13,s8,x3/1,s2,ph/p,x11/4,s5,x9/10,s13,x15/14,pl/f,x2/6,pi/e,x10/0,s3,pn/k,x15/5,s6,x10/9,s8,x8/0,pi/l,x7/1,pg/a,x9/8,pb/p,x7/5,pj/h,x10/0,s9,x11/1,s8,x15/8,s8,x3/9,pd/a,x14/2,pf/c,x10/3,s5,x6/5,s8,x0/10,pd/j,x15/2,s4,pn/o,s13,pj/i,x0/9,pl/b,s12,x11/1,po/g,x13/9,pe/k,x0/15,pl/m,x9/14,po/i,s7,x6/13,s8,x8/1,s3,x12/11,s15,x3/13,s12,x5/0,pk/c,s7,x10/9,pf/m,x3/8,s3,x9/7,s8,x0/4,s7,x14/3,s1,x1/9,pg/a,s3,x5/15,pe/f,x6/13,pb/k,x4/3,po/n,x8/14,pg/i,x11/15,pd/c,s14,x1/0,s13,x15/14,s4,x12/5,s5,x15/7,ph/e,s2,x5/13,s4,pg/k,x2/3,pa/n,x15/5,ph/l,s9,x13/9,s13,x0/8,pb/p,x13/2,s9,x11/4,pk/j,x6/5,s7,x7/1,s5,x5/2,pm/p,x9/14,s11,x2/10,pg/c,x8/9,s5,x4/11,s13,pn/a,x9/0,s13,x5/8,s1,x9/0,s2,pi/p,x4/8,s13,x12/0,pb/m,x4/3,s6,pk/i,x7/12,s11,x11/9,pc/e,x15/14,pn/m,x4/8,pc/e,x9/11,pi/a,x14/6,pl/o,x0/12,pa/g,x9/7,s1,x6/5,s1,x9/3,ph/k,x7/5,s10,x11/1,s4,x5/13,s13,x7/9,pb/c,x5/13,pd/a,s5,x1/6,s5,x13/5,s8,x0/12,pj/g,x13/2,s12,po/e,x5/4,pk/d,x9/13,pp/a,x10/5,pg/n,x0/7,s4,x12/2,pi/k,x5/15,pb/e,s13,po/g,x7/11,pd/a,x12/9,ph/e,x8/2,po/n,x12/7,pg/k,x6/5,s5,x12/4,s2,x10/5,pf/e,s4,x8/2,s5,x5/14,s10,x7/15,s5,x2/9,s8,x3/6,s11,x0/8,s8,pm/a,x3/13,pb/l,x8/4,pa/j,x11/6,s6,pn/k,x7/15,s14,x6/8,pj/a,x14/0,s3,x13/8,ph/i,s13,x3/1,pj/d,x10/14,s10,x7/4,pm/h,x13/10,pp/j,x14/9,pa/h,x2/15,s7,x6/1,s4,x0/4,s6,pj/p,x7/9,s13,x6/4,ph/b,x12/11,pd/f,x4/10,pb/h,x13/7,s8,x11/15,pn/d,x14/3,s11,x12/15,s2,x2/6,s5,x15/3,pk/l,x5/12,s2,x14/8,pc/g,x6/7,pf/p,x8/3,s12,x10/11,pm/o,x7/6,s10,x2/1,pp/j,x15/10,pa/n,x1/0,s9,x8/13,pg/e,x0/4,pd/m,x15/14,pc/j,x1/7,s4,x0/6,pb/o,x9/15,s15,x10/13,s2,pj/d,s9,x12/6,s5,x11/15,s7,x1/0,s6,x4/6,s2,x11/5,ph/n,x6/12,s14,x4/5,s6,x15/6,s8,x12/2,pb/i,x6/9,s15,x8/13,s2,x5/1,s6,x0/10,pe/d,x7/8,s10,x14/1,s13,x8/4,s12,x11/5,pb/m,x7/9,s2,x11/6,s11,x12/9,po/k,x11/4,pc/m,x1/8,pf/o,x3/13,s8,x10/9,s3,x13/12,pb/g,s8,x7/9,s9,x11/4,s4,x10/8,pi/m,x13/3,pa/d,x0/15,s6,x11/10,s14,x8/4,s13,x5/15,ph/n,x10/8,s4,x0/12,s1,x11/14,s5,x6/0,pa/b,s12,x1/11,s7,x3/9,pf/e,x13/15,pm/l,s1,x8/5,ph/f,x6/0,pe/m,x7/14,s1,x5/1,s11,x14/12,po/j,x13/15,pk/f,x4/11,ph/j,x5/8,s11,x15/1,s14,x2/13,s5,x14/1,pl/g,x11/2,s9,x8/7,pb/c,x2/14,s9,x9/12,s3,x4/3,s3,x10/11,s6,x1/15,pl/f,s13,x7/11,pm/n,x3/6,pl/p,x10/4,s10,x7/6,s6,x3/11,s8,x5/2,s1,x15/8,pj/g,x10/0,pa/e,x4/2,pp/c,x12/13,s3,x8/15,s5,x4/2,pf/l,x14/5,s1,x12/10,s4,pi/a,x3/2,po/e,x8/7,pi/c,x5/6,s11,x9/7,s3,x13/12,s15,x10/3,s3,x0/7,s7,x6/8,pj/l,x15/11,s14,x9/7,pp/a,s4,pk/g,x1/2,s7,x14/6,ph/i,x0/9,pp/f,s8,x5/3,s15,pc/b,x10/2,s15,x1/3,s6,x15/12,s6,x9/1,pm/f,x12/11,s3,x10/15,pj/k,x3/5,s5,x4/6,s15,x12/1,s11,x14/2,s14,x1/15,pb/d,x2/10,s4,x14/4,s5,x2/7,s15,pk/l,x10/14,pd/b,x0/1,s11,x14/7,pi/l,s3,x1/11,pb/m,x5/7,s12,x4/1,pk/c,s8,x11/2,s8,x1/13,s11,x3/14,pp/m,s15,x8/10,pk/b,x6/7,pf/j,x14/8,s7,x12/7,s6,x4/11,pe/n,s5,x1/3,s13,x5/14,pm/d,s9,x11/12,s8,x2/1,s2,x0/12,pg/p,x15/13,s14,x3/12,s8,x14/6,pe/j,x0/11,s10,x3/4,pp/b,x6/12,s6,x5/2,pc/h,x8/4,pp/k,x14/5,s14,x7/13,s3,x2/10,s3,x11/1,s4,pl/b,s9,x0/12,ph/i,x15/8,s12,pl/p,x5/0,s1,x2/9,s4,x15/4,s14,po/m,x2/14,s1,x4/7,s14,x8/6,s13,x5/10,s4,x3/11,s5,x9/2,s6,x5/10,pd/a,s11,x8/0,s6,x7/13,s4,pg/i,x11/3,s15,x15/13,pk/d,x7/8,pi/l,x1/2,pk/a,x9/13,s2,x12/14,s8,x13/9,s2,x0/15,pg/f,x11/4,pi/o,x0/7,s7,x6/4,pk/n,x14/5,s10,x13/12,pf/l,x3/14,s13,x8/11,pg/n,x1/9,s12,x5/14,s8,x7/3,s11,pf/j,x10/12,pd/e,x13/11,s13,x1/4,pc/n,x7/8,s9,pa/k,s9,x9/1,s9,x7/11,s10,x9/2,s7,x10/15,ph/d,x7/6,pl/m,x3/2,ph/f,x5/10,pp/g,s13,x12/6,pj/c,x10/8,s3,x6/11,pk/o,x12/15,s12,x10/0,pf/l,x6/1,pc/g,x0/4,s1,x15/7,s10,x9/12,pj/n,s12,x4/5,s7,x9/6,s10,x15/10,s10,x4/9,s10,x0/8,s6,x7/3,pm/g,x15/1,s13,x2/7,s12,x6/15,s2,x5/2,s3,x15/14,s5,x4/3,pc/l,x10/9,pa/e,x3/11,s4,x0/13,s2,x15/10,s8,x0/4,pp/j,x14/13,pl/d,s6,x1/6,pe/o,x14/13,ph/c,x0/6,s3,x1/2,pb/e,x4/5,s11,x1/3,pc/o,x2/9,s14,x12/11,pm/j,x1/7,s11,pi/l,x5/6,s12,x15/8,pj/f,x5/1,s9,x11/12,s3,pb/n,x10/2,s10,x1/4,s11,x12/0,s7,x13/7,s14,x0/3,s9,x8/15,pi/j,x0/11,s5,x13/15,s11,x7/11,ph/f,x8/10,pm/n,x13/12,ph/j,x8/10,s6,x7/5,s7,x4/3,pa/o,x8/15,s4,x3/1,s8,x6/10,s9,ph/c,s6,x12/14,s12,pp/i,s8,x4/9,s1,x8/12,s3,x2/6,s14,x4/11,s2,x8/5,s10,x7/4,s14,x8/12,s4,x5/2,s1,x8/9,s5,x7/12,pb/a,x11/3,s14,x13/12,s4,x9/6,pi/l,x15/2,pk/c,x12/7,pa/d,x9/4,s14,x1/14,pm/e,x6/9,s3,x7/8,s7,x6/14,s12,x3/7,s15,ph/d,s9,x6/12,pc/a,x7/11,s6,x8/12,s1,x3/5,s1,pm/p,x8/15,s14,x0/2,pn/d,x14/8,ph/c,x13/12,pg/i,s5,x8/14,pk/m,x15/2,pp/l,x0/12,s5,x2/7,pk/e,x1/13,pi/h,x6/9,s1,x2/12,s13,x7/10,s12,x12/14,po/k,x11/4,s1,x3/8,s1,x10/2,s9,x5/4,pj/h,x13/10,s8,x8/2,pd/p,x6/3,pi/n,s9,x4/12,pj/e,s5,x8/0,s9,x4/5,s12,x10/7,pm/d,x6/8,pe/i,x0/4,pb/j,s11,x3/13,s8,pg/c,x4/11,s9,x14/5,pl/n,x10/11,s6,x5/0,pk/b,x1/3,s13,x13/4,ph/n,x2/8,s10,x11/3,s6,x7/10,po/c,x3/14,pa/k,s1,x11/8,pb/n,x0/12,s4,x5/9,s6,x2/1,s6,x6/8,s3,x5/13,ph/f,x10/1,pb/l,s9,x12/11,s15,x5/15,s8,x3/1,pd/p,x11/0,s7,x9/15,s5,x0/7,pc/n,x12/10,ph/j,x14/9,s2,x15/0,s1,x7/10,pa/n,x2/15,s1,x11/4,s14,x2/6,pj/i,x13/11,s7,x14/10,pb/f,x8/6,s11,x7/12,pm/i,x13/14,pk/o,x7/12,s12,x3/8,pj/g,x13/7,s15,x1/4,ph/n,x0/15,pl/g,x12/5,s15,pd/h,s11,x9/3,pa/n,s2,x12/6,pk/j,x10/0,s7,x3/8,s13,x0/7,pa/i,x12/11,pj/f,x5/1,s11,x13/12,s9,x15/3,pp/m,x9/5,s8,x8/2,pd/e,s8,pm/n,x10/13,s7,pd/h,x4/9,pj/c,x3/7,s10,pa/l,x12/1,s3,x2/3,pi/o,x10/5,s7,x14/0,pl/m,x2/13,s1,x5/7,s7,x14/1,pi/e,s6,x2/15,s12,x9/3,pf/n,s2,x12/13,s2,x8/1,pa/k,x7/14,pe/p,x11/6,s8,x0/9,s6,x2/15,s13,x7/9,s3,x2/10,pc/o,x3/11,s15,x15/9,pp/k,x4/12,s14,x9/11,pl/i,s13,x6/0,s9,x2/14,pc/g,x9/11,s9,x2/12,s2,x0/3,pd/j,s5,pg/p,x9/6,s8,x10/12,s9,x7/5,s8,x14/13,s13,x8/11,pa/l,x1/0,s8,x11/5,pm/n,x3/10,s2,pc/g,x2/4,pj/d,x15/7,pc/b,s5,x10/12,s8,x15/14,pj/i,x4/11,s8,x1/7,s2,x13/3,pe/p,x15/2,ph/i,x7/10,s12,x13/11,s15,x14/1,s9,x6/11,s12,x1/12,s11,x4/9,s2,x12/8,pd/p,x5/3,po/f,s3,x14/1,s1,x0/3,s9,x8/9,s14,x4/0,s5,x2/6,s2,x0/14,s2,x3/12,s2,x15/9,s6,x6/3,s3,x4/7,pd/g,x2/3,s2,x7/0,s7,x11/6,s10,x9/15,s10,x5/3,s6,x9/2,pf/p,s9,pl/c,s14,x7/11,s3,x5/15,s1,x9/11,s6,x0/13,ph/g,x12/14,s12,x7/4,pm/k,x12/11,s4,x3/7,pl/h,x10/14,s2,pj/g,x0/11,s10,x9/15,s7,x1/7,s14,x3/10,s8,x12/1,s12,x2/5,pp/i,x4/6,s9,x8/2,s14,x0/4,s11,x11/9,s11,x13/6,s8,x0/1,pb/e,x10/5,s3,x2/13,s7,x7/15,s6,x6/8,pn/d,x10/14,s7,x13/5,pf/m,x7/0,pg/l,x8/2,s4,x9/0,pa/m,x2/7,s8,x10/0,pb/f,x15/1,s3,x9/10,pk/d,x14/0,s7,x12/1,pf/h,x9/7,s9,x4/11,pi/n,x0/14,s3,x5/2,s8,x11/0,s11,x15/5,pg/a,x4/6,pk/m,s4,x2/11,s4,x3/8,pi/o,x13/4,s6,x14/9,s14,x3/15,pl/j,x0/9,s12,x2/12,s8,x13/8,ph/n,x10/9,s9,x0/1,s1,x12/5,s3,x3/15,s14,x10/2,pi/p,x1/12,pd/b,s3,x11/2,s13,x10/15,s6,x12/3,s10,x6/15,s3,x10/3,s1,x4/13,s6,x14/5,po/m,x7/0,s6,x5/2,s11,x3/13,pb/d,x7/12,s15,x4/15,pp/c,x5/1,pg/n,x14/15,s13,x12/4,s3,x5/7,s15,x11/4,s3,x13/7,pl/k,x4/0,s3,x1/3,s3,x10/12,s7,pe/i,x11/6,s6,x0/15,s7,x14/12,s9,x10/3,pf/p,x1/11,po/c,s10,x3/15,s10,pi/k,x6/4,pm/g,s11,x1/10,s8,x6/13,s7,x2/14,s11,x15/13,s14,x5/2,pf/b,x13/0,pm/i,s7,x1/2,s13,x11/7,s9,x5/9,s10,x11/15,pb/o,x13/10,s11,x2/6,s4,x8/12,s3,x10/13,pc/n,s14,x7/9,pf/m,x6/8,pi/g,x13/9,s1,x15/3,pl/m,x1/5,s5,x3/4,pd/j,x14/9,s15,pe/f,x6/5,s11,x10/11,s11,x7/15,pp/a,s9,x11/14,po/c,s13,x8/13,s7,x7/11,pi/f,x14/6,s6,x10/15,pj/a,x13/6,s14,x7/1,pl/b,x2/14,s10,x3/15,s2,x9/8,po/d,x12/15,pn/h,x4/1,s5,x2/15,pp/f,s6,x10/7,s8,x3/1,s13,x11/5,s5,x2/1,pb/h,x15/0,s12,x10/4,s13,x9/6,s4,x3/4,s9,x9/8,s15,pj/e,s13,x12/11,s1,x8/14,s7,x12/11,po/g,x4/14,pa/e,s12,x6/2,pp/o,x7/10,s1,x11/5,ph/m,x7/1,pn/o,x5/15,pm/i,s12,x9/0,s3,x5/7,pa/n,x10/11,pk/b,s2,x6/14,pi/f,s2,x9/4,s4,x12/2,s6,x13/14,s13,x10/1,pk/e,s10,x6/3,s5,pd/n,x4/5,s10,pe/i,x1/14,s5,x12/10,pj/f,x0/9,pc/d,x13/14,s11,x3/5,pn/l,x6/2,s10,x1/3,s15,x2/14,s1,x4/10,s13,x7/13,s5,x3/1,s8,x7/2,pi/a,s15,x9/14,s14,x11/0,s5,x1/5,pj/c,x10/6,pp/k,x3/13,s5,x11/12,s13,x15/0,pl/c,x4/11,s2,x10/5,po/b,x8/2,pa/m,x0/11,s14,x6/15,s14,x5/12,pg/j,s5,x9/4,s4,x3/12,po/n,x15/11,ph/m,x4/13,pi/e,s12,x3/6,s13,pd/n,x8/11,s11,x3/0,s12,pc/b,x12/1,pf/d,x3/6,s4,x5/13,s2,x2/4,s2,x15/10,po/g,x14/6,s5,x12/8,s12,x3/7,s7,x14/8,pf/j,s5,x15/11,s8,x3/7,s12,x0/8,po/g,x3/10,pe/m,s13,x15/9,s7,x10/8,s8,x14/15,s13,pl/a,x6/2,s9,x7/9,pe/b,x2/15,s14,x3/13,s7,x14/7,s13,x0/4,s14,x13/9,pk/l,x15/6,s4,x13/4,po/c,x2/1,pa/p,x4/9,s14,x15/10,ph/c,x14/12,pj/g,s8,x2/6,s9,x0/1,s9,x7/11,s10,x5/15,pm/e,x9/14,pb/c,x3/15,s9,x6/7,pk/f,s8,x9/4,pg/b,x0/7,pn/j,x11/15,pf/e,x5/13,pb/m,x12/0,s6,x2/9,s7,x5/6,ph/l,s5,x1/0,pg/f,x8/6,pn/d,x0/14,po/a,x2/15,pb/c,s10,x13/4,po/l,x6/1,pc/h,s10,x2/3,pe/b,x12/7,s15,x9/0,s5,x13/8,s1,x5/6,pk/c,x13/11,s10,x7/14,s2,x10/1,s13,x5/14,pe/l,x8/13,po/b,x11/7,s10,x2/0,s4,x9/13,s13,x3/14,s13,x4/10,s14,x14/2,pj/g,x3/1,s15,x11/6,s3,x13/4,s1,x6/1,s14,x4/14,s6,pk/a,x12/11,s11,x9/15,s6,x12/2,ph/j,x0/1,pe/b,x14/6,s10,x13/7,pi/f,x14/2,s14,x12/0,s7,x1/9,pj/h,x14/13,pg/d,x6/12,s15,x1/7,s5,x9/0,s10,x1/7,pc/e,x15/14,s5,x13/0,s10,x15/7,pj/i,s3,x4/0,s14,x7/3,s15,x14/5,pf/m,x2/1,pb/a,x3/6,pe/n,x9/2,pk/i,x10/15,s2,x4/7,s13,x15/13,s11,x2/6,pp/j,x15/11,s15,x14/5,pn/i,x4/12,s13,x2/6,pg/p,x0/3,pd/a,x15/8,pk/b,x9/14,pf/n,s11,x10/12,pl/a,x2/1,s8,x11/8,pf/h,x12/2,pc/e,x11/5,s6,po/m,x13/9,s5,x0/6,s1,x5/14,s5,x2/8,s11,pj/n,x11/15,s2,x2/3,pe/f,x4/15,s15,x3/6,s14,x0/1,s15,x12/11,pa/c,x5/1,s2,x14/9,pn/p,x0/7,s5,x14/5,s7,pd/c,x11/9,s15,x2/8,pi/b,x15/9,pk/g,x7/3,s15,x2/1,ph/o,x14/6,s7,x12/2,s7,x6/3,s4,x2/8,s3,x4/11,s3,x6/8,s5,x14/15,pe/p,x4/10,s3,x2/6,s2,x15/7,pg/o,x8/11,pc/a,x12/15,s14,x7/13,s4,x14/8,pl/h,s14,pb/p,x12/5,pe/a,x4/7,ph/c,x10/2,pj/m,x6/7,pd/b,s6,x4/9,s12,x10/12,pl/p,x3/8,s13,x10/6,pj/b,x14/15,pn/a,x1/8,s13,x14/6,po/h,x12/9,s7,x5/2,s3,x8/12,s14,x5/14,pe/a,x0/1,s1,x12/3,pl/p,s9,x9/2,s13,x11/1,pg/d,x12/2,ph/f,s10,x11/3,s9,x4/2,pd/e,x14/9,pn/l,x13/6,pi/k,x15/1,s14,x6/12,s6,x15/0,s4,x8/11,pp/j,x9/0,pd/e,x11/4,s15,x8/9,pj/i,x15/10,s3,x5/2,pl/h,x15/8,pe/p,x12/4,s9,x8/2,s5,x10/6,s14,x0/9,s14,x5/3,pm/c,x11/1,pd/o,x9/15,s10,x4/8,s14,x6/7,s12,x14/5,s9,x12/11,s2,x10/13,pi/m,s15,x15/5,s7,x10/2,s6,pk/l,x12/6,pd/h,x11/10,s9,x1/14,s3,x7/12,pf/e,s14,x3/2,s5,x0/12,s8,pc/b,x1/8,s5,x6/9,s3,x10/8,po/m,x14/9,s4,x13/15,pn/f,x3/8,s6,x15/0,ph/d,x13/3,pi/l,s13,pa/p,x12/8,pb/j,x5/13,s2,x3/15,s5,ph/p,x4/1,pj/k,x11/2,s1,pl/o,x7/1,s4,x15/12,s3,x10/4,s10,x0/2,s7,x5/4,s10,x10/1,pb/c,s8,x13/8,s3,pd/p,x6/15,s1,x13/4,s3,x0/7,s8,x8/6,s4,x2/3,s5,x9/4,s4,x3/14,s15,x15/1,s12,x2/5,pg/i,x11/9,pc/d,x3/2,s14,x15/10,pj/p,x7/13,pg/f,x12/15,po/n,x5/1,s14,x6/3,s6,x5/4,s13,x0/7,s1,x1/5,s15,x3/8,s1,x14/11,s11,x5/3,s1,x11/4,s10,x14/9,s4,x13/11,s12,x12/10,s2,x9/2,s6,x12/6,s1,x9/1,pd/f,x10/4,pe/p,x12/3,s9,x2/11,s12,x1/12,s3,x3/4,s1,x9/12,pj/n,x11/10,s3,x6/14,s2,x4/8,s7,x11/14,s3,x9/1,s7,x5/13,po/d,x9/10,pj/e,x1/6,s5,x13/3,pc/d,s8,x4/1,pp/n,x10/11,pd/o,x5/13,s4,x10/8,s13,x12/1,s14,x9/2,s9,x4/0,s6,x11/10,s12,x15/5,s9,x12/6,s7,x15/1,s6,x9/8,s1,x5/15,pm/c,x6/14,s1,x1/10,s2,x11/5,s5,x0/3,s6,x14/1,pl/o,x8/10,s1,x2/14,s6,x15/5,pg/i,x3/8,s1,x0/6,s10,x1/14,s10,x13/2,s7,x6/10,s3,x2/15,s14,x11/0,pk/h,x10/12,s3,x1/6,s8,x10/9,pp/m,x5/7,s14,x8/15,s14,x0/9,pa/l,x13/15,pc/g,s13,x1/14,s5,x15/7,s7,x12/3,s5,x15/4,s8,x13/11,pk/d,x2/15,pp/l,x14/1,s4,x8/5,pm/i,x9/11,po/g,x1/7,s15,x9/13,s12,x3/6,s15,pa/n,x7/1,s14,x15/11,pm/p,x14/6,ph/b,x15/2,s3,x4/9,s4,x5/7,s5,x3/13,s6,x11/14,s8,x2/8,s6,x6/0,s5,x1/10,s6,x14/13,s1,x7/8,pm/e,x1/3,pb/j,x15/4,s10,x6/12,s9,x0/10,s15,pk/p,x5/4,s2,x3/9,pb/l,x10/13,s8,x2/15,pa/f,s14,x12/1,pe/k,x4/14,ph/j,x1/3,pd/l,x0/4,pb/k,x7/11,s12,x4/12,s4,x0/14,s8,x1/15,s9,x13/9,s2,x6/7,s3,x12/13,pg/e,x4/6,pf/c,x0/1,s10,x12/13,s2,x9/10,pe/g,x6/2,pl/f,x7/12,s2,x6/10,pj/g,s11,x3/2,s11,x11/0,po/a,x14/9,pg/l,x4/12,s7,x5/11,pm/b,s11,x12/10,po/a,x5/3,s3,x0/9,s6,x15/4,s3,x6/11,s1,x9/2,s9,x10/6,pe/g,s7,x9/2,s8,x10/13,s11,x6/15,s14,x12/11,pm/a,x7/14,po/c,x9/3,s13,x2/5,pd/f,x13/12,s10,pe/n,x4/9,pk/c,x2/5,s3,x8/10,s1,x1/7,s9,x6/14,s6,x8/4,pf/n,x0/9,s13,x14/2,pl/c,x11/8,pd/a,x2/9,s9,x7/5,pm/b,x1/11,s8,x0/4,pc/f,x12/13,s12,x11/6,s4,x4/3,ph/i,x15/1,pm/g,x4/3,s3,x2/8,s13,x14/0,pj/b,x7/2,pg/i,x11/13,pa/f,x15/7,s11,pn/i,x11/6,pd/g,x9/3,s14,x1/4,s6,x6/11,s10,x15/2,s11,x11/1,s10,x6/4,s6,x14/7,s9,ph/n,x5/11,s8,pj/e,x7/9,s6,x6/11,s2,pc/h,x10/7,s14,x9/1,s7,x15/5,pk/o,s3,x14/7,s7,x0/2,s12,x1/14,pp/a,s8,pk/m,x12/8,s12,x9/13,s6,pj/i,x10/6,s12,x4/15,pp/g,x7/5,s7,x14/15,s6,x5/13,s4,x9/8,pe/a,x0/11,s14,x15/2,pm/o,x11/7,s10,pi/g,x8/5,po/m,x3/12,s5,pg/c,x1/8,pd/o,x11/10,s2,x6/5,ph/p,x14/11,po/b,x9/2,s15,pj/i,s15,x12/14,s10,x11/7,pm/p,s5,x10/3,s10,x7/8,s15,x11/5,po/b,s5,x15/14,s10,x3/6,pd/f,x2/10,pm/e,x4/14,s12,x5/11,s8,x12/8,s11,x10/5,s12,x0/8,s3,x5/2,s10,x11/14,s4,x4/7,pl/n,s10,x14/8,s13,pm/k,x10/15,pi/f,s1,x0/14,s11,x2/13,pc/o,x10/4,pi/g,s1,x13/14,pa/j,x9/5,s1,x4/7,s5,x1/13,s4,x5/9,pi/b,x8/11,pj/a,x2/10,pe/f,x4/12,s10,x0/3,s5,x7/12,s11,x11/6,pi/k,x5/1,s1,x0/2,pl/f,x5/15,pp/c,x14/10,pa/k,s14,x7/11,ph/b,x0/5,pe/a,x14/7,ph/i,x0/13,s9,pb/j,x1/9,pc/k,x3/8,ph/n,x10/6,pi/o,x15/7,s15,x0/14,pj/f,s1,x4/5,s11,x12/11,s4,x3/6,s5,x1/12,pp/l,x2/4,s15,x8/3,s7,x7/12,pj/o,x4/13,pe/d,s2,x6/3,s15,x5/8,s14,x3/9,s1,x7/0,s11,x2/8,pp/i,x12/13,s15,x9/11,s4,x3/4,po/n,s12,x2/11,s14,x7/6,s4,x9/14,pm/a,x2/13,s12,x9/14,s14,x5/3,pp/j,x15/7,pd/k,x0/6,s9,x12/11,pn/i,s8,x5/14,s11,x4/10,s7,x11/6,s7,x5/2,s6,x11/7,s2,x0/9,ph/d,x1/2,s7,x3/8,s11,x6/9,po/e,x0/2,s9,x8/7,s12,x4/0,pb/n,x5/11,s4,x8/1,pm/p,x12/5,s6,x2/7,s9,x6/13,pk/f,x15/3,s15,x0/5,pi/j,x11/14,pl/e,x8/4,s10,x12/9,s3,x6/1,s3,x8/9,pg/k,x6/10,s3,x15/3,s1,x8/0,s1,x6/13,pa/h,x8/7,s4,pb/f,x9/2,s10,pi/a,x1/0,pl/j,x14/3,pf/d,x9/1,pe/i,x8/4,pa/f,x7/12,pc/h,x1/10,s13,x9/15,pb/f,x5/1,ph/j,x14/12,s10,pf/p,x8/1,s4,x6/2,pa/b,x3/7,pp/k,x5/11,ph/f,x10/12,s3,x0/8,pk/d,x10/4,pb/c,x0/13,pg/o,x10/2,s14,pb/k,x5/1,s3,x10/9,ph/j,x4/8,s7,x9/7,s6,x1/5,s9,x14/13,s3,x11/6,s15,x13/9,s4,x5/7,pn/b,x10/12,s8,x1/8,s7,x3/0,s9,pj/f,x7/6,s4,x8/1,s7,x12/5,pe/b,s13,x9/13,pn/d,x14/8,pb/f,x4/7,s9,x9/14,s13,x2/11,s15,x6/4,pn/g,x3/9,s5,x8/14,pp/m,x11/7,s6,pi/e,x15/1,s9,x10/8,s1,x6/1,s6,ph/n,x4/8,pd/k,s10,x9/0,s8,pf/g,x4/8,pk/l,s4,x7/0,s2,x1/10,s9,x8/6,pf/b,x3/11,ph/j,x6/14,pk/l,x2/1,pp/m,x4/10,pa/k,x11/8,pg/j,x6/13,pe/k,x11/9,pg/o,s2,x13/6,s1,x14/4,s2,x3/9,s6,x11/13,s7,x14/15,pe/l,x11/6,pf/d,x9/15,pn/h,x2/4,s7,pg/m,x3/15,s10,x4/11,s1,x7/10,po/d,x12/11,s1,x10/9,s1,x8/7,s6,x1/2,s10,x8/5,s14,x13/9,s10,x2/1,pl/p,x7/4,s12,x0/3,pm/k,x8/1,pp/d,x14/15,s15,x6/11,s4,x9/4,s8,x1/12,pj/a,x8/9,s14,x13/5,pd/f,x8/4,s1,x0/15,pm/p,x4/7,pf/e,x3/5,pp/k,x12/10,s11,x4/14,pn/f,x11/13,s3,x8/2,pi/j,x14/13,s1,x12/15,pd/l,x14/4,po/b,x9/6,s4,x10/2,s2,x1/0,s9,x5/7,pk/g,s7,x14/15,s13,x9/4,s9,pa/m,x1/3,pf/e,x6/2,pd/l,x13/9,s5,pj/n,s11,x4/7,pi/f,x10/3,pb/l,x4/7,pj/g,x15/13,s5,x8/7,s4,pk/l,x9/12,s4,x2/0,s9,po/g,x6/4,pb/k,x5/0,s4,x13/4,pe/l,s11,x14/1,s4,x7/11,s11,x10/6,s10,pj/h,s14,x13/9,s15,x4/1,pe/c,x11/15,s15,x5/2,pd/i,x1/3,pb/a,x2/11,s6,x0/12,s9,pj/i,x1/3,pb/e,s13,x6/15,s7,x7/14,pp/h,s11,x3/15,s6,x7/12,s9,x1/14,pl/m,x6/8,pd/j,x2/11,s7,x15/1,s8,x3/6,s1,x15/9,pi/g,x7/1,pd/b,x6/5,s3,x13/4,s1,x0/2,pp/e,x9/15,pa/n,x8/2,s4,x1/7,s14,x11/6,pg/f,x3/1,pl/o,x6/15,pg/p,x1/12,s12,x0/6,pe/b,x15/10,s6,x3/2,s14,x14/1,s6,x9/12,s2,x14/2,s11,x3/5,ph/a,x10/2,s15,x12/13,pg/n,s2,pe/a,x4/11,s15,x15/7,s7,x14/0,s15,x10/9,pd/l,x12/4,s4,x15/5,pn/i,x10/1,pc/j,x5/12,s13,x2/9,s10,x15/10,s12,x11/9,s13,x13/14,pe/a,x15/8,s7,pj/h,x0/11,s3,x10/6,pe/m,x13/5,pc/k,x11/0,pf/j,x6/4,pe/o,x8/0,pj/c,x15/13,s7,x10/8,s10,x5/6,s1,x2/15,s6,x9/4,pb/h,x8/12,pe/o,x7/9,pp/k,s9,x0/2,s5,x8/14,s2,x0/3,pj/m,x4/12,pg/n,s8,x5/1,s7,x4/14,s15,x5/8,s5,x0/14,s9,x9/2,s4,x14/15,pj/l,x0/13,s4,x14/15,pn/k,x1/8,s15,x2/5,po/c,x6/7,ph/a,s6,x8/1,pm/b,s2,x7/13,s7,x6/5,s14,x0/7,s9,x2/1,s7,x15/14,po/e,x3/13,s8,x14/7,pk/c,x15/4,s14,x5/10,s6,pp/m,x11/6,s10,x5/9,s6,x10/11,s4,x13/14,pa/h,s2,x3/5,s10,x6/11,pm/e,s4,x8/3,s14,pj/l,x1/0,s9,pn/i,x11/3,pg/j,x4/10,pk/n,x0/8,pc/p,x3/15,pd/j,x9/7,pg/i,x12/1,s11,x3/8,pp/a,x0/14,pf/j,x12/13,s14,x8/9,pi/m,x13/3,s3,x7/6,pd/h,s2,x8/0,s5,pa/p,x4/12,s13,x1/2,s1,x8/5,pf/k,x11/1,s12,x10/7,s11,x13/1,s3,x2/6,pc/i,x15/8,s6,x14/7,s7,x11/1,pn/h,x13/5,s10,pj/c,x9/3,po/l,x14/0,pj/p,x8/3,s13,x0/7,s13,x1/14,pl/m,x11/10,s15,x4/2,s11,x13/7,s1,pd/j,x1/4,s4,x6/3,s13,x15/7,s9,x0/3,pi/n,x4/5,pm/e,x14/13,po/n,x5/12,pd/i,x7/3,s2,x8/11,ph/a,x3/14,s4,x5/4,pd/c,x12/3,s15,x10/7,s9,x8/11,pf/n,x5/15,s4,x7/10,pm/c,s14,x15/9,pg/o,x1/7,s6,x9/5,s15,x2/3,pp/d,x13/7,pb/c,x1/8,s5,x2/12,s13,x14/13,s10,x15/9,s10,x8/3,s1,x1/11,s10,x3/9,pi/l,x7/5,s10,x14/1,pn/p,s1,x0/4,s14,x12/11,s6,pg/h,x2/4,pc/a,x14/13,s3,x11/6,pl/k,x3/14,s9,x10/2,pm/o,x3/5,pd/k,x13/4,s7,x3/14,ph/i,x13/4,s6,x5/12,s15,x8/15,s11,x9/3,pc/g,x10/14,s9,x8/5,pe/m,s10,x15/11,pk/h,x4/10,pi/a,x0/11,s4,x3/9,ph/e,x11/8,pn/f,x10/1,pb/h,s12,x2/9,s7,x10/15,pp/d,x11/7,s12,x5/15,pk/h,x8/1,s1,x14/15,s7
diff --git a/2017/inputs/day_17.txt b/2017/inputs/day_17.txt
new file mode 100644
index 0000000..67bf40f
--- /dev/null
+++ b/2017/inputs/day_17.txt
@@ -0,0 +1 @@
+371
diff --git a/2017/inputs/day_18.txt b/2017/inputs/day_18.txt
new file mode 100644
index 0000000..8b74206
--- /dev/null
+++ b/2017/inputs/day_18.txt
@@ -0,0 +1,41 @@
+set i 31
+set a 1
+mul p 17
+jgz p p
+mul a 2
+add i -1
+jgz i -2
+add a -1
+set i 127
+set p 735
+mul p 8505
+mod p a
+mul p 129749
+add p 12345
+mod p a
+set b p
+mod b 10000
+snd b
+add i -1
+jgz i -9
+jgz a 3
+rcv b
+jgz b -1
+set f 0
+set i 126
+rcv a
+rcv b
+set p a
+mul p -1
+add p b
+jgz p 4
+snd a
+set a b
+jgz 1 3
+snd b
+set f 1
+add i -1
+jgz i -11
+snd a
+jgz f -16
+jgz a -19
diff --git a/2017/inputs/day_19.txt b/2017/inputs/day_19.txt
new file mode 100644
index 0000000..b4826aa
--- /dev/null
+++ b/2017/inputs/day_19.txt
@@ -0,0 +1,201 @@
+ |
+ +-----------------------+ +-------------------------------------------------------------------------------------------+
+ | | | | |
+ +-------------------|-----------------------|-----------------------+ +-----------------------------------------------------------------------|-----+ |
+ | | | | | | |
+ +-----------+ | +---------------------------------|-------------------------+ | | |
+ | | | | | | | | |
+ | +-----+ | | | | +---------------------|---------------------------------------+ | | |
+ | | | | | | | | | | | | |
+ | | | | +---|-------+ +---------------------------|---------------------------------------------------------------------|-----|-------------+
+ | | | | | | | | | | | | |
+ +-------|-------------------------------|-+ +-+ | | | +---------------------+ +-+ | +-----------------------+ +-------------+
+ | | | | | | | | | | | | | | | | | | | | |
+ | +---|---------|-----------------------|---|---|---|---------------|-----------------+ | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | |
+ | | | +-|-----+ | | | | | | | | +-------------------------------------|-----------------------------------------|-+
+ | | | | | | | | | | | | | | | | | | | | |
+ | +-------------|-----------------------|---|---|----Y------|-------|-----------------------------------------------------------+ | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | +-----------------------------------------------------------|-----|-------------------|-+ | |
+ | | | | | | | | | | | | | | | | | | | | | | |
+ | | +---------------------------|-----------|---------------|-------------------------------------------------------------------------------------|-----------------+ | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | +---------------------------+ | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +-+ | | | | | | | | | | | | +-+ +-------------------------------------|-----------------------------------|-----+ | +-----+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | +-|-|-------------------|-------------|-|---------|---+ | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | +---|-+ | | | | | | | +-----|-------------|-----------|---|-------------------------------------------------------------|-|-----|-----------|-------|-|---+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | +-|---|---+ | | | | | | | | +-------|-----|-|---------|-------|-|-----+ | | | | | | | | +-|---+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | +-|---+ | +---------|---|-----|-------------------------------|-----------------------|-----------+ +-|-------|-|---+ | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | +-|---------------|-------|-----|-------------|-----|---------+ | | +-|---+ | +-------------------+ | +-------------------|---------|-+ | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | +-------+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-------|---+ | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | +-|---|-|-------|-----------|-----|---------|-------|-------|-+ | | +-+ | | | | +-----------+ | | | +-+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | +-----------------|---|---|-|---+ | +-----------------------|-------+ +-+ | | +-|-|---|-|-------|-+ | | +-+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | +---|-----|-------------|---|-+ +-------|---------+ | | | | | | | | | | | | | | | | | | | | +-+ | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | +-|-|-----|---|-|-|-------------------------------------------|-----|-|-------+ | | | | +-----|---|---------+ | | +-----------|---------+ | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +-|---|-|-|-+ | +---|---|-------------------------+ | | | | | +---|-------|---|-+ +-|-|---|-|-----------|-----------|-----|-|-----|---|-|-----+ | +---|-----|---+ | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | +-----|-------------------+ | | | | +---|---------+ | | | | | | | | | | +-------|-|-----|-----|-------+ | | | +-+ | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | +---------------------|-+ | | | | | | +-----|---+ | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | +-|-|-----|---|---|-|-|-|-|-------------------+ | | | | | | | | | +-|-----+ | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | +-|---|---------------------------|-------------+ | +---+ | | | | | | | | | | | | | | +-----|-----------|-----|-------|---|---+ | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | +---------|-|-|-----------------------|-|-----------|---------------|-----|---|---------|---|-|---|-|-|-----|-----------|-------|---+ | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | E | | | | | | | | | | | | | | |
+ | | | | | | | | | | +-----|-----------|---|---------------------+ | | | | | | | | | | | | | | | | | | | | | | | | | | +-|---|-+ | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | +-|-------------|-|-|-----|----------U----|-|---|-------|-------------|-|-|---|---+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | +---------------|---------------------------|-----|---------|-----|-------------|-----------------+ | | | | | | | | | +-+ | +-|---|-----------------+ | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | +-|-----+ | +-|-+ +---------------|-|---+ | | | | | | | | | | | | | | | | | +-------|-----------------------|-|---|---|-|-----|---------|-|---------|---------+ T | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-------------+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | +-----------------------+ | | | | | +---+ | | +-|-----|---|-|-|-+ | | | | | +-------|---+ +-+ +-|-|-+ | | +---+ | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | +-----------|-----|-----------|-----|-----|-----------------|-|---|-------------|---|---|---|-----|---------|---------|-------|-----------+ | +---|-|-|-|-|---|---|-----+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | +---+ | | | | | +-|-----|-----|-------|---------|-+ | | | | | +---|-----|---------|---------|-------------+ | | | +-----------|---|-------|-----+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +---------|-----|-|-----|-------|-|-----------|-|-|-----|---|-------|-------|---|-|--D------|-|---|-------------|---------+ | +-------------|-|-----------------|-|---|-|-|-------|-------+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | +---------|---+ +-------|---|-------+ | | | | | | | | | | | | | | | +---|---------|---+ | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---------------|---|-|-----|-----+ | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-------+ +-+ | +-|-----|-----|-----|-|-|-------|-|-------|-|-|-|---+ | | | +-+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | +-|-------|-------|-----------------------------------|-+ | | | | | | | | | | | | | +---------------|---|-|-----|-|-|-------|-|-------+ | | | | +-|-|---|-+ +-+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | +---|-|---------|-|---------|-|---|-|-----|-----|-|-|-----+ +---------+ | | | | | | | | | +---|-|-|-|-+ | | | +-----+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | +-------------|-|-----------------|-----------|-|-----|-----|-----|-|-----+ | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | +-----|-|-----+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---------|---+ | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-|-+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | I | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | +-|---------|-----|---------------------------+ | | | | | | | | | | | | | | | +-|-------+ | | | | | | | | | | | | | | | | | | +-+ | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | +-|---|-------|---|-----|-|-----|---------------|-----|-----|-----------|---|-----------|-|-----|-----|---------------|---------|-|-|-+ | | | +-------|-------+ | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | +---|-|-+ +---------+ | | +-------|-----|-----|---------------------+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +-|-------|---+ | | | | | | | | +-----------------|-|---------------|---+ | | | | | | | +---|---|-----------|-|---+ | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | +---|---|-|-------------------------|-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +-|-------|---|-----|-----|-----------|-------------------------|---|-+ | | | | | | | | | | | | | | | | | | +-----|-----------|---|---|---+ | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +-------------|-|-|-------|-----|-------|---------|---------|-------------------|-|---------+ +-|---|-----+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +-|-------------|---------|---|-|-----|-|-------------------|-|-----|-----|---------+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | +-----------|---|---+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | +-----|---|-----------|-|-|---------|-----|-|-------------|---|-------+ | | | | | | | | | | | | | | | | | | | | +---------|-|-----------|---|-+ | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | +---------|-----|---|-|-----|-----|-----|-|-|-----|-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | +-|-|---|---|---|-------|-----------|-|-+ +-|-|-----+ | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | +-----|-|-+ | | | | | | | | +-----------|---|-----|-|-------|-|---|-|N|-|-----|-------|-|-----------|---|-|-----|-+ | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | +-|-|-------|-|---|-------+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----+ | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---|-------|---|-+ | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | +---|-----|-----------|-|-|-|-----|-|---|---|-+ | | | | | | | | | | +-|-|-|-+ | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | +---+ +---|-------|---------------|---|---|-------------------|-------------------|-|---|-|-|---|-|-------------------|-----|-----|-|---|---+ | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | +-----|---------------|-----------|---|-------|-----------------|-------|-------|-----------|-------|-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | +-|---|---|-------------------|-----|-----|-----|-|-|-|-----------+ | | | | | | | +-|-|---+ | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | +-----|---------------|-------|---|---+ | | | | | | | +-----|-|-----|-|---|---|---|-|-|---------|---------|---------|---------+ | +-----------+ | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-|---------------|---|---|---|-|---------|-|---+ | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | +-------|-|-|-------|-------|---|---------|-------|-----------+ +-|---+ | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | +-------|---------|-----|---------|---------------------|-----|-----------|-|-----------|-+ | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | X | | | | | | | | | | | |
+ | | | | | | | | | +-----|-----|-|-|---------+ | | +-----------+ | | | | | | | | | | | | | | | +-----------+ +-|---+ | +-|-------|-+ | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | +-----------------|-|---+ | | | +-------|-|-------------|-------------|-----+ | | | | +-|---|-----|-+ | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +---------|-----------|-----------------|---|---|-----|-+ | | | | | | | | +-----|-|-|---|-------|-----|---------------|-----|-----|-|---|-----------|-----|---------|-----+ | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | +---+ | | | | | +---------------------|-----|-----|-|-------------|-----|-----|-|-----------|-|-|-|-|---|-------------|---------|-----+ | +-----------|---------|---|-----|-----|-|---|-+ |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | +---|---|-----|---|-----|-------|-------|-----------|---------------------------|-|-|---------------------|-|-|---------------------|---+ | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | +-------|-----|-----------------+ | +-+ | | | | | | | | +-|-|---|-+ | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | +-|-----|---+ | | | | | | | | | | +-|-|-------------|-|-----|---------+ | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | +-|-----+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-+ |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +-----|-|-|-------|---|---------|-------|---------|---|-----|-|-------------------|-------|-------------|-----|-|---------|-|---------------|---|-----------------|-------|-|---|-----------|---------+
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +---------+ | | | | | | +-----|---|-----|-----|---|-|-------------------------|-|-|-----------|-|-----|---------|-----|-----------------|-----|-----|-|-------|-----------------|---------+
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | +---|-|-----------|-|-|-----|---------|-----|-----------|---|-|---+ | | | | | | | +-----------|-+ | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | A | | | | | | | | | | | | | | | | | | | | | | | | |
+ +-----|-----|-|---|-+ | | | +---+ +-----|---|-------------------------+ | | | | | +---------|---------------|-----------|-----|-+ | | | | | | +-|-------------|-|-|-|---|---+
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | +-----|-----------|-+ | | | | | | | | | | | +-+ | | | | | +---|---|---+ | | | | | +---+
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | +-|-----|-|-------|-----------+ | | | | | | | | | | | | | | | | | | | | | | | | | +-+ | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | +-----|-|-----------|-+ | | | | | | | +-------|-|-------------|-----|-----|-----|---------------------|-|-------|---|-|---|---|---|-----|-----|---+ |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | +---|---+ | | | | | | +-|-|---+ | | +-+ | | | | | | | | +---|---|-|---|-------|-+
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | +-------------|-+ | | +-|-----------------------------------+ | | | +---|-----+ | | | | | | | | | | | | +-|-----------+ | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +---|-|-------|-+ | | +---|-------+ | | | +---------------------------|-----------|---|-------|-----|-----|---------------------------------|-------------------+ | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | +-------|---+ +-------------+ +---+ +-|-|-------|-------------|-|---------------------------|-+ | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | +-------|---+ | | | | | | | | | | | +-+ +-------------------|-----+ +-+ +-----|-+ | +---+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | +-----|-------------------|---------|---|-------|-|---+ | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +-+ +---|-----------|-----------------------------------------------------------------------|-------|-----------|-----|-----------------------------------+ | +-------------------+ +-|-+
+ | | | | | | | | | | | | | | | | | | | | | | | | | P
+ | +-------|---------+ | | +-------------|-------------------------|---------|---|---------|-------------|-------------------------+ | +-----------------+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | +-----------------------------|-----+ | +-------|-------------|---+ | +-----|---+ | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | |
+ | +---+ | +-|-------------+ | | | +---------+ +-------+ +-------------+ +---+ | | +---+ |
+ | | | | | | | | | | | |
+ +-----+ +-----+ +-+ +-----+ +-----------------------------------------------------------------------------------+ +-----------------+
+
diff --git a/2017/inputs/day_2.txt b/2017/inputs/day_2.txt
new file mode 100644
index 0000000..f2f1f5e
--- /dev/null
+++ b/2017/inputs/day_2.txt
@@ -0,0 +1,16 @@
+493 458 321 120 49 432 433 92 54 452 41 461 388 409 263 58
+961 98 518 188 958 114 1044 881 948 590 972 398 115 116 451 492
+76 783 709 489 617 72 824 452 748 737 691 90 94 77 84 756
+204 217 90 335 220 127 302 205 242 202 259 110 118 111 200 112
+249 679 4015 106 3358 1642 228 4559 307 193 4407 3984 3546 2635 3858 924
+1151 1060 2002 168 3635 3515 3158 141 4009 3725 996 142 3672 153 134 1438
+95 600 1171 1896 174 1852 1616 928 79 1308 2016 88 80 1559 1183 107
+187 567 432 553 69 38 131 166 93 132 498 153 441 451 172 575
+216 599 480 208 224 240 349 593 516 450 385 188 482 461 635 220
+788 1263 1119 1391 1464 179 1200 621 1304 55 700 1275 226 57 43 51
+1571 58 1331 1253 60 1496 1261 1298 1500 1303 201 73 1023 582 69 339
+80 438 467 512 381 74 259 73 88 448 386 509 346 61 447 435
+215 679 117 645 137 426 195 619 268 223 792 200 720 260 303 603
+631 481 185 135 665 641 492 408 164 132 478 188 444 378 633 516
+1165 1119 194 280 223 1181 267 898 1108 124 618 1135 817 997 129 227
+404 1757 358 2293 2626 87 613 95 1658 147 75 930 2394 2349 86 385
diff --git a/2017/inputs/day_20.txt b/2017/inputs/day_20.txt
new file mode 100644
index 0000000..f249f9e
--- /dev/null
+++ b/2017/inputs/day_20.txt
@@ -0,0 +1,1000 @@
+p=<-317,1413,1507>, v=<19,-102,-108>, a=<1,-3,-3>
+p=<1639,477,-2519>, v=<-79,-102,130>, a=<-9,9,12>
+p=<613,-993,-305>, v=<-39,27,-48>, a=<-2,8,11>
+p=<1343,190,-1565>, v=<-82,31,31>, a=<1,-4,5>
+p=<735,-285,2387>, v=<-20,-64,-67>, a=<-2,8,-6>
+p=<963,456,-1888>, v=<-42,-73,88>, a=<-1,5,1>
+p=<-1659,1444,-463>, v=<-14,-25,-77>, a=<10,-5,10>
+p=<-443,-95,-1185>, v=<142,-14,81>, a=<-12,2,-2>
+p=<-2590,3249,-710>, v=<35,-30,36>, a=<10,-14,0>
+p=<-1602,-171,924>, v=<83,-50,-20>, a=<0,6,-3>
+p=<-633,2195,-458>, v=<31,-200,31>, a=<4,0,2>
+p=<-347,-49,-1976>, v=<-19,-50,151>, a=<8,9,5>
+p=<852,314,125>, v=<-56,-83,-22>, a=<-4,9,2>
+p=<-10088,3682,-5210>, v=<52,32,-38>, a=<14,-8,11>
+p=<-4019,1982,4446>, v=<-4,47,-7>, a=<7,-6,-7>
+p=<3444,-2319,-11041>, v=<-171,-89,81>, a=<4,9,14>
+p=<2390,792,2117>, v=<0,47,114>, a=<-4,-4,-10>
+p=<5661,-1318,-1666>, v=<-87,-44,-33>, a=<-5,5,5>
+p=<2856,-1912,743>, v=<-36,59,-174>, a=<-3,0,9>
+p=<4275,5447,-5461>, v=<6,-11,31>, a=<-8,-9,8>
+p=<1263,1223,980>, v=<-98,-69,-68>, a=<0,-3,-1>
+p=<1094,963,1253>, v=<-85,-105,-75>, a=<0,5,-3>
+p=<2641,-922,2124>, v=<-113,61,-142>, a=<-13,2,-3>
+p=<600,859,-398>, v=<-26,-97,-4>, a=<-3,5,5>
+p=<-128,-1533,330>, v=<-12,73,-88>, a=<3,7,9>
+p=<1419,-1507,-528>, v=<-159,29,-15>, a=<7,13,8>
+p=<574,-1299,-1100>, v=<-17,104,113>, a=<-4,0,-4>
+p=<-440,-1923,-8>, v=<-2,131,36>, a=<5,3,-5>
+p=<-1705,-1617,-226>, v=<45,42,123>, a=<0,0,-6>
+p=<708,36,4790>, v=<1,57,-48>, a=<-1,-3,-4>
+p=<2266,9745,3707>, v=<38,-101,-78>, a=<-5,-8,-1>
+p=<7320,-629,-2164>, v=<-134,-62,18>, a=<-3,4,2>
+p=<746,6097,-2544>, v=<-78,-44,-11>, a=<3,-6,4>
+p=<1563,-7678,5873>, v=<115,-13,-57>, a=<-8,11,-5>
+p=<-8146,-3232,-5147>, v=<156,-52,155>, a=<3,7,-1>
+p=<-3966,4235,1389>, v=<7,44,22>, a=<5,-8,-3>
+p=<2171,-5151,14708>, v=<21,-21,-75>, a=<-4,8,-16>
+p=<442,-1232,2730>, v=<9,-20,3>, a=<-2,5,-8>
+p=<-273,-1960,5408>, v=<-58,89,-100>, a=<5,-1,-8>
+p=<-624,-3559,247>, v=<50,137,31>, a=<-2,0,-3>
+p=<2106,-2688,1482>, v=<-82,144,-57>, a=<0,-3,0>
+p=<-2886,1147,2678>, v=<83,-44,-157>, a=<2,0,4>
+p=<1984,472,-191>, v=<-31,-3,63>, a=<-3,-1,-4>
+p=<3604,-6710,-2540>, v=<-21,123,-32>, a=<-8,9,9>
+p=<5305,1390,781>, v=<-182,103,-15>, a=<-1,-11,-1>
+p=<-527,256,-1055>, v=<-22,-107,39>, a=<3,7,0>
+p=<7708,1660,5803>, v=<-131,-19,-103>, a=<-11,-3,-8>
+p=<-5981,-2228,-6671>, v=<68,-15,23>, a=<11,7,16>
+p=<1356,-1869,-687>, v=<39,68,25>, a=<-6,0,0>
+p=<-1052,4725,937>, v=<38,-66,54>, a=<0,-7,-6>
+p=<-1668,10101,-631>, v=<2,-229,23>, a=<4,-9,0>
+p=<-1906,-4165,4255>, v=<-33,-24,37>, a=<7,12,-13>
+p=<-2760,-2373,-2325>, v=<-46,57,40>, a=<10,2,3>
+p=<516,-6601,-1625>, v=<69,63,44>, a=<-6,12,1>
+p=<1062,-6279,-4929>, v=<6,66,17>, a=<-3,11,11>
+p=<1636,-2387,-1205>, v=<-87,72,58>, a=<2,1,-1>
+p=<3099,3807,-117>, v=<-71,-169,77>, a=<-9,-3,-7>
+p=<1009,-3185,-991>, v=<-1,39,-47>, a=<-5,13,10>
+p=<-3228,368,1954>, v=<142,32,-62>, a=<3,-5,-4>
+p=<1180,1793,-896>, v=<-20,-173,-2>, a=<-4,8,5>
+p=<-1936,7,2790>, v=<24,1,-36>, a=<8,0,-11>
+p=<-1214,-2045,3474>, v=<116,9,-132>, a=<-5,10,-5>
+p=<4619,2971,-3480>, v=<-171,-75,104>, a=<-7,-8,8>
+p=<-2088,1166,3018>, v=<112,-40,-28>, a=<0,-2,-13>
+p=<211,653,2410>, v=<21,107,-46>, a=<-3,-14,-8>
+p=<2415,1926,-1580>, v=<-75,50,34>, a=<-5,-15,5>
+p=<1538,-908,976>, v=<-54,31,26>, a=<0,0,-4>
+p=<3539,7415,1788>, v=<-18,-151,-32>, a=<-7,-7,-2>
+p=<3249,4196,-1373>, v=<-23,-25,2>, a=<-6,-8,3>
+p=<2031,-4301,1701>, v=<-41,148,-29>, a=<-2,0,-2>
+p=<2002,11678,-2475>, v=<-25,-148,85>, a=<-3,-17,0>
+p=<2350,-560,-1315>, v=<-52,64,15>, a=<-2,-3,2>
+p=<11423,-875,9878>, v=<-163,-146,-174>, a=<-13,11,-9>
+p=<1751,-5773,2469>, v=<53,156,33>, a=<-7,2,-7>
+p=<-2155,4333,-7110>, v=<51,-122,38>, a=<1,-1,12>
+p=<-5906,7123,1229>, v=<92,-84,-39>, a=<6,-9,0>
+p=<4696,-2115,113>, v=<-106,-74,-35>, a=<-3,9,2>
+p=<-1132,-4533,1322>, v=<34,36,6>, a=<0,7,-3>
+p=<1658,519,-978>, v=<-72,-26,-46>, a=<-5,-1,14>
+p=<83,-426,732>, v=<25,-35,32>, a=<-4,8,-10>
+p=<278,-1926,-1653>, v=<-52,49,79>, a=<4,10,4>
+p=<-787,-6,-183>, v=<-21,57,61>, a=<9,-7,-6>
+p=<-487,1044,612>, v=<-65,-109,32>, a=<12,5,-9>
+p=<2603,-1521,-123>, v=<-135,86,105>, a=<-5,2,-12>
+p=<-562,1044,-1188>, v=<12,-5,160>, a=<3,-8,-10>
+p=<-1715,3425,5361>, v=<-30,-42,-103>, a=<5,-4,-4>
+p=<-2803,721,-5279>, v=<-95,92,48>, a=<11,-7,7>
+p=<957,-303,-5263>, v=<-97,-107,64>, a=<4,7,6>
+p=<829,-943,-7839>, v=<-93,12,62>, a=<4,1,11>
+p=<-2883,4417,-4703>, v=<56,-40,96>, a=<2,-6,3>
+p=<2557,-6319,3889>, v=<51,147,9>, a=<-8,3,-8>
+p=<-7939,-799,-4191>, v=<82,-9,-52>, a=<10,2,11>
+p=<-7470,-439,367>, v=<120,92,9>, a=<17,-6,-2>
+p=<-2134,-94,-898>, v=<20,-115,40>, a=<6,10,0>
+p=<-478,1930,2092>, v=<20,-35,-114>, a=<0,-4,2>
+p=<1040,-1727,551>, v=<-82,28,-59>, a=<3,4,3>
+p=<-2318,-324,2069>, v=<4,63,-77>, a=<8,-4,-1>
+p=<-2249,21,-1220>, v=<73,0,18>, a=<2,0,3>
+p=<2627,-3199,-2577>, v=<17,44,113>, a=<-11,8,0>
+p=<-2732,-1796,482>, v=<-2,103,-68>, a=<10,-2,4>
+p=<441,1243,20>, v=<43,-28,83>, a=<-10,-8,-11>
+p=<1029,-1151,-764>, v=<-104,68,94>, a=<4,2,-5>
+p=<-672,-2551,97>, v=<25,153,40>, a=<3,4,-6>
+p=<1027,1714,-804>, v=<-72,-122,60>, a=<-1,-2,1>
+p=<416,1506,-50>, v=<-32,-22,16>, a=<0,-14,-1>
+p=<-1131,1623,-1103>, v=<150,-108,20>, a=<-9,-3,10>
+p=<1001,-990,-1454>, v=<-63,37,75>, a=<-2,5,6>
+p=<-418,465,403>, v=<-35,5,45>, a=<12,-8,-14>
+p=<682,-734,73>, v=<-21,120,-75>, a=<-7,-9,11>
+p=<-2343,333,-1159>, v=<140,-79,25>, a=<12,8,13>
+p=<924,421,-587>, v=<-43,3,-75>, a=<-7,-7,21>
+p=<-693,-404,293>, v=<44,24,-5>, a=<3,2,-4>
+p=<363,355,183>, v=<-58,-33,-49>, a=<4,0,5>
+p=<-5454,-1885,-2432>, v=<116,-43,149>, a=<13,12,-3>
+p=<342,-793,-941>, v=<-17,15,23>, a=<0,2,2>
+p=<-456,1139,-920>, v=<21,-22,0>, a=<0,-3,4>
+p=<-101,-4352,13169>, v=<23,75,-150>, a=<-1,2,-10>
+p=<-3122,360,-2677>, v=<83,-49,-84>, a=<0,2,8>
+p=<-7093,-2072,800>, v=<51,-24,78>, a=<7,4,-5>
+p=<6397,1082,4505>, v=<8,88,-39>, a=<-9,-6,-4>
+p=<-63,1937,-1005>, v=<22,46,106>, a=<-1,-5,-4>
+p=<-595,1367,-910>, v=<-42,-56,45>, a=<3,1,-1>
+p=<2578,-11667,-1670>, v=<-28,-25,-52>, a=<-2,17,5>
+p=<-3425,-215,4501>, v=<138,8,41>, a=<-2,0,-11>
+p=<-4625,-135,-939>, v=<27,-77,13>, a=<7,5,1>
+p=<479,1913,2117>, v=<-17,-42,-66>, a=<0,-1,0>
+p=<-3015,2181,-3524>, v=<-9,-40,-70>, a=<7,-2,12>
+p=<-2280,-5424,436>, v=<137,74,108>, a=<-4,7,-8>
+p=<6240,-669,-2024>, v=<-54,-7,-89>, a=<-10,2,10>
+p=<-3885,-84,-8054>, v=<51,-11,50>, a=<5,1,14>
+p=<-3345,6336,2956>, v=<2,-8,-69>, a=<7,-13,-2>
+p=<-3465,-1449,-779>, v=<6,-43,-22>, a=<7,6,3>
+p=<-1170,-8754,-1094>, v=<162,92,-27>, a=<-8,13,4>
+p=<6195,2541,886>, v=<-68,10,-31>, a=<-9,-6,0>
+p=<5625,3321,-2279>, v=<-142,-78,90>, a=<-3,-2,-1>
+p=<146,1150,-504>, v=<-34,-42,20>, a=<4,-8,3>
+p=<-64,-2,1992>, v=<16,-63,-110>, a=<-1,10,-9>
+p=<-1138,334,-24>, v=<99,0,-7>, a=<0,-4,1>
+p=<2156,-146,354>, v=<-104,14,-19>, a=<-11,0,-2>
+p=<2224,501,-708>, v=<-92,-21,-46>, a=<0,0,6>
+p=<664,405,960>, v=<98,33,22>, a=<-10,-4,-5>
+p=<1144,2061,-2388>, v=<-47,-36,149>, a=<0,-4,-4>
+p=<-212,-2043,4500>, v=<-78,-65,-113>, a=<7,12,-6>
+p=<1084,4569,-4644>, v=<-57,-28,-32>, a=<1,-13,18>
+p=<-824,5649,-4296>, v=<60,-48,-34>, a=<-2,-15,17>
+p=<88,-591,-3132>, v=<22,-13,30>, a=<-2,3,8>
+p=<2836,1917,-696>, v=<-30,-105,116>, a=<-7,2,-7>
+p=<-4061,279,753>, v=<73,-63,7>, a=<7,4,-3>
+p=<4439,579,-422>, v=<-46,-23,-24>, a=<-10,0,3>
+p=<-2060,11364,-3131>, v=<-39,-107,-127>, a=<6,-14,13>
+p=<6751,672,-9962>, v=<-119,64,97>, a=<-5,-5,12>
+p=<-575,7206,-6068>, v=<-33,-100,13>, a=<3,-7,10>
+p=<2197,2553,-4418>, v=<2,-78,-71>, a=<-4,0,12>
+p=<4045,243,-5342>, v=<31,9,-26>, a=<-9,-1,11>
+p=<358,122,480>, v=<-55,-68,25>, a=<4,8,-8>
+p=<-1021,-158,1908>, v=<156,12,-122>, a=<-11,0,-2>
+p=<939,283,-283>, v=<1,33,-48>, a=<-9,-7,9>
+p=<519,-438,1425>, v=<31,107,-35>, a=<-9,-10,-9>
+p=<904,-641,-388>, v=<-139,54,12>, a=<10,-1,2>
+p=<6864,2454,-491>, v=<65,22,15>, a=<-17,-6,0>
+p=<-272,1750,-3947>, v=<57,11,-9>, a=<-3,-4,8>
+p=<1168,-6842,3589>, v=<78,164,36>, a=<-7,3,-9>
+p=<-2224,4070,-347>, v=<-80,21,-105>, a=<9,-9,7>
+p=<-1872,2102,-875>, v=<41,66,-39>, a=<1,-8,4>
+p=<-5120,-3610,1701>, v=<126,63,-4>, a=<2,3,-3>
+p=<-7936,774,-2043>, v=<115,-74,47>, a=<8,3,1>
+p=<-5770,1949,-1810>, v=<144,-4,67>, a=<16,-10,3>
+p=<1032,524,-993>, v=<66,-119,54>, a=<-12,9,0>
+p=<-241,904,-2703>, v=<23,-39,74>, a=<-1,-1,7>
+p=<1659,-2535,52>, v=<73,32,-11>, a=<-16,10,1>
+p=<-469,790,-214>, v=<-55,97,-77>, a=<8,-14,9>
+p=<-13,-179,356>, v=<31,18,-57>, a=<-3,-1,4>
+p=<899,-312,-2000>, v=<-27,-45,127>, a=<-2,6,-2>
+p=<1545,581,-727>, v=<-11,38,40>, a=<-7,-7,0>
+p=<-3167,1702,-43>, v=<147,49,4>, a=<2,-14,0>
+p=<-526,106,-3919>, v=<8,-17,38>, a=<2,1,17>
+p=<1381,-388,-404>, v=<-175,24,29>, a=<7,2,2>
+p=<-144,-1008,-374>, v=<5,163,59>, a=<2,-12,-4>
+p=<-4344,-3608,1616>, v=<45,54,-4>, a=<6,4,-3>
+p=<-1647,-787,4189>, v=<-10,-53,25>, a=<4,5,-10>
+p=<3965,7621,-1235>, v=<-35,-45,34>, a=<-4,-9,0>
+p=<-6925,-515,4255>, v=<27,33,-26>, a=<9,-1,-5>
+p=<-3361,-7715,-3737>, v=<76,48,122>, a=<1,9,-1>
+p=<4829,5857,-1217>, v=<-96,-107,15>, a=<-2,-3,1>
+p=<1877,-1469,-4079>, v=<-51,41,39>, a=<0,0,4>
+p=<4584,-3664,7121>, v=<124,69,-87>, a=<-17,3,-9>
+p=<4708,-719,1014>, v=<-8,54,-82>, a=<-9,-2,3>
+p=<-4530,3249,1665>, v=<-46,22,73>, a=<12,-8,-8>
+p=<361,-798,851>, v=<-116,55,25>, a=<10,-1,-8>
+p=<-2177,1209,-355>, v=<82,-66,16>, a=<4,0,0>
+p=<784,-573,1544>, v=<-54,52,-23>, a=<1,-2,-7>
+p=<1639,-879,-436>, v=<-73,-121,68>, a=<-2,18,-5>
+p=<1297,1317,-166>, v=<-54,-15,-4>, a=<-2,-6,1>
+p=<3466,1938,-2011>, v=<-70,-78,13>, a=<-13,-3,10>
+p=<-2096,1173,-1561>, v=<11,-83,121>, a=<11,2,-4>
+p=<-548,2163,1724>, v=<-75,-119,-109>, a=<11,0,1>
+p=<469,-2427,1067>, v=<11,3,-63>, a=<-4,14,0>
+p=<919,57,3083>, v=<-33,-78,-118>, a=<-2,8,-6>
+p=<947,-909,986>, v=<-77,0,-36>, a=<1,10,-6>
+p=<609,-857,-925>, v=<-79,73,20>, a=<5,-1,7>
+p=<-4448,-1323,-14360>, v=<54,34,149>, a=<3,0,11>
+p=<1636,4332,-3557>, v=<78,-71,-68>, a=<-6,-2,8>
+p=<-2420,-12321,6739>, v=<2,56,88>, a=<3,13,-13>
+p=<1636,6477,-944>, v=<-42,34,-35>, a=<0,-10,3>
+p=<8812,2148,-5273>, v=<-26,45,96>, a=<-10,-5,2>
+p=<-587,-3195,-14945>, v=<-85,22,84>, a=<5,3,15>
+p=<6394,-3429,3346>, v=<36,88,15>, a=<-10,0,-5>
+p=<-1958,2401,204>, v=<102,-119,-34>, a=<5,-7,3>
+p=<-1090,266,1569>, v=<55,-19,-109>, a=<3,0,0>
+p=<2574,-921,907>, v=<-139,58,-86>, a=<-6,1,3>
+p=<-2718,-298,501>, v=<59,6,-57>, a=<18,2,3>
+p=<-219,-1950,998>, v=<23,94,-40>, a=<-1,6,-4>
+p=<3407,-809,1474>, v=<-116,35,-89>, a=<-17,3,-2>
+p=<-541,-1670,-661>, v=<-14,29,41>, a=<7,12,1>
+p=<-485,451,1803>, v=<-18,-25,-75>, a=<7,-1,-7>
+p=<796,1109,1586>, v=<3,-132,-82>, a=<-8,7,-4>
+p=<5,-438,2104>, v=<22,76,-59>, a=<-3,-6,-12>
+p=<2770,724,137>, v=<-138,8,74>, a=<-8,-8,-11>
+p=<1335,-935,1586>, v=<-133,59,-52>, a=<5,1,-8>
+p=<-600,-494,17>, v=<0,26,-10>, a=<4,0,1>
+p=<-73,1376,-1547>, v=<-13,42,37>, a=<2,-14,6>
+p=<-2198,1750,-1088>, v=<85,-124,10>, a=<5,2,6>
+p=<-955,2741,1118>, v=<87,-214,-96>, a=<0,-6,-1>
+p=<79,398,260>, v=<-1,11,0>, a=<-1,-8,-4>
+p=<-394,112,-873>, v=<90,55,13>, a=<-9,-11,11>
+p=<750,-251,-1390>, v=<-2,-32,72>, a=<-11,9,9>
+p=<-933,-625,-1511>, v=<25,68,77>, a=<10,-2,10>
+p=<-812,673,-1159>, v=<38,-38,153>, a=<6,-4,-8>
+p=<-2490,1276,508>, v=<17,-16,112>, a=<5,-2,-9>
+p=<730,-1902,-4252>, v=<18,-62,21>, a=<-3,9,9>
+p=<-1678,6904,3168>, v=<17,-72,-41>, a=<3,-12,-5>
+p=<-40,-432,-3034>, v=<-56,132,50>, a=<4,-8,4>
+p=<2980,-2943,13263>, v=<-88,-2,-129>, a=<0,5,-15>
+p=<8216,3432,-5165>, v=<-67,-32,-42>, a=<-10,-4,11>
+p=<-2188,11252,-4927>, v=<64,-87,-49>, a=<0,-14,11>
+p=<-2513,-3249,3089>, v=<176,-8,-100>, a=<-6,7,0>
+p=<-5055,223,-4289>, v=<2,24,-22>, a=<10,-2,10>
+p=<-3722,1370,-2274>, v=<7,35,-7>, a=<7,-5,5>
+p=<9201,8581,1004>, v=<-55,-80,114>, a=<-9,-7,-7>
+p=<-315,469,-6640>, v=<-51,-52,-30>, a=<3,2,10>
+p=<5886,-19772,1433>, v=<-70,127,63>, a=<-4,19,-5>
+p=<4716,7333,-7264>, v=<120,12,26>, a=<-12,-10,8>
+p=<2571,4213,-7108>, v=<75,-108,42>, a=<-7,0,7>
+p=<2688,7060,-946>, v=<12,39,-36>, a=<-4,-11,3>
+p=<3195,-4523,-5548>, v=<-41,116,-38>, a=<-2,0,9>
+p=<16182,20203,8375>, v=<-134,-78,-175>, a=<-14,-22,-2>
+p=<-8583,4213,3851>, v=<41,-28,-99>, a=<9,-4,0>
+p=<-29,-291,-717>, v=<-1,26,133>, a=<1,0,-11>
+p=<-1487,-747,-663>, v=<140,90,44>, a=<-2,-4,2>
+p=<-77,-1047,129>, v=<29,63,-48>, a=<-3,4,6>
+p=<1,627,-9>, v=<-62,-5,-4>, a=<10,-7,1>
+p=<-689,225,1479>, v=<28,-4,-89>, a=<5,-2,-5>
+p=<3651,9977,-1851>, v=<-74,-16,28>, a=<-1,-12,1>
+p=<-2004,-10303,2127>, v=<-9,4,-54>, a=<3,13,0>
+p=<1389,4088,-3060>, v=<104,15,-1>, a=<-7,-6,4>
+p=<11256,-2971,-2007>, v=<-129,36,52>, a=<-8,2,0>
+p=<6147,-787,12696>, v=<-98,60,-145>, a=<-3,-2,-9>
+p=<8994,6467,10551>, v=<-51,-186,110>, a=<-9,1,-19>
+p=<2832,3035,2322>, v=<107,62,41>, a=<-9,-7,-5>
+p=<-11559,7286,-5244>, v=<116,-47,-45>, a=<9,-7,9>
+p=<5991,-8704,8679>, v=<-94,-17,-2>, a=<-3,12,-11>
+p=<4718,-4023,8441>, v=<-136,19,-128>, a=<-1,7,-9>
+p=<4625,-861,-1262>, v=<-69,77,73>, a=<-5,-3,-2>
+p=<589,3578,-416>, v=<58,-10,64>, a=<-7,-12,-4>
+p=<1141,-2678,1217>, v=<-50,34,29>, a=<0,7,-7>
+p=<3211,1600,2988>, v=<-44,4,-60>, a=<-8,-6,-6>
+p=<-2056,-33,-1727>, v=<5,51,13>, a=<7,-4,5>
+p=<-3476,6358,-3757>, v=<96,49,73>, a=<1,-16,3>
+p=<2476,-4275,-99>, v=<64,40,-29>, a=<-9,6,2>
+p=<9885,2111,1265>, v=<-47,-86,-41>, a=<-17,1,0>
+p=<-10544,1150,955>, v=<132,121,-31>, a=<13,-10,0>
+p=<-717,-338,-6640>, v=<-41,57,54>, a=<4,-3,10>
+p=<-1306,3785,-502>, v=<-22,-124,-32>, a=<4,0,3>
+p=<-3941,-2105,-5090>, v=<79,-62,-12>, a=<3,8,11>
+p=<-3352,4405,-4067>, v=<108,-32,67>, a=<0,-7,4>
+p=<403,-1972,-1042>, v=<-28,84,-34>, a=<1,-1,5>
+p=<2153,884,-496>, v=<11,69,-68>, a=<-6,-7,6>
+p=<-264,-3603,2640>, v=<26,104,-76>, a=<-1,0,0>
+p=<-754,4587,1100>, v=<22,-58,4>, a=<0,-4,-2>
+p=<4321,-3078,-6425>, v=<93,125,-33>, a=<-12,-2,12>
+p=<-1419,387,-8280>, v=<41,26,92>, a=<0,-2,8>
+p=<681,4902,3760>, v=<-55,-49,0>, a=<2,-5,-6>
+p=<1451,-7348,-10450>, v=<-59,-5,118>, a=<1,12,10>
+p=<4286,2802,-7265>, v=<-122,83,-45>, a=<0,-9,14>
+p=<1337,5510,-5238>, v=<7,-83,58>, a=<-3,-6,7>
+p=<6297,1232,8216>, v=<-89,-25,-184>, a=<-7,-1,-5>
+p=<787,3206,2183>, v=<42,-63,4>, a=<-5,-4,-6>
+p=<-941,3017,-3568>, v=<8,-112,147>, a=<2,0,-1>
+p=<4027,3557,-679>, v=<-134,-104,68>, a=<-1,-2,-3>
+p=<4864,-1438,-2137>, v=<31,67,-46>, a=<-15,-1,9>
+p=<325,164,754>, v=<-74,3,-4>, a=<7,-4,-13>
+p=<610,524,-201>, v=<-75,-22,20>, a=<2,-6,0>
+p=<-215,224,699>, v=<-9,-36,-15>, a=<5,2,-10>
+p=<-495,1334,-1331>, v=<30,-136,133>, a=<3,0,0>
+p=<-390,-6,-861>, v=<25,9,130>, a=<2,-2,-8>
+p=<-595,729,-116>, v=<-4,-59,6>, a=<11,-3,1>
+p=<1360,804,-56>, v=<-139,-72,0>, a=<0,-2,1>
+p=<90,359,-591>, v=<-78,11,92>, a=<12,-9,-6>
+p=<-620,-1566,-231>, v=<48,99,23>, a=<2,10,0>
+p=<-1355,1069,-1321>, v=<94,-126,110>, a=<7,3,4>
+p=<699,-1699,-4607>, v=<5,86,93>, a=<-3,-1,9>
+p=<2056,3131,-329>, v=<-90,8,-141>, a=<0,-12,13>
+p=<-3602,1291,407>, v=<36,-44,-53>, a=<10,-1,3>
+p=<-267,2717,-1870>, v=<83,-142,82>, a=<-6,2,0>
+p=<-704,1636,3903>, v=<6,-47,-109>, a=<2,-2,-5>
+p=<-1946,1429,1626>, v=<0,22,-70>, a=<7,-7,0>
+p=<156,4594,673>, v=<33,8,-18>, a=<-2,-7,0>
+p=<3116,1597,3966>, v=<-28,-6,-31>, a=<-3,-2,-4>
+p=<10812,5334,1672>, v=<-27,-126,-64>, a=<-14,-1,1>
+p=<1414,524,2190>, v=<75,23,131>, a=<-6,-2,-10>
+p=<5336,9663,-6357>, v=<26,-91,58>, a=<-9,-9,6>
+p=<4300,-438,-12758>, v=<73,-46,22>, a=<-10,3,17>
+p=<3967,-3546,-918>, v=<-70,0,44>, a=<-2,5,-1>
+p=<6224,10440,3670>, v=<-112,78,-23>, a=<-3,-19,-4>
+p=<7334,2707,1783>, v=<-66,-55,-48>, a=<-7,-1,0>
+p=<1007,10514,-3175>, v=<-47,-19,86>, a=<1,-14,0>
+p=<-2289,2879,3134>, v=<87,43,-47>, a=<-1,-8,-3>
+p=<1279,9407,-6930>, v=<157,-194,53>, a=<-12,-6,10>
+p=<943,-8481,-1938>, v=<-80,35,-4>, a=<3,14,4>
+p=<-7969,4127,-738>, v=<50,37,-58>, a=<12,-10,5>
+p=<2019,1112,5886>, v=<-99,-85,-7>, a=<2,3,-13>
+p=<4861,6767,-4438>, v=<-137,5,34>, a=<-2,-16,8>
+p=<6427,909,3218>, v=<-56,72,10>, a=<-11,-7,-8>
+p=<1758,2446,-4960>, v=<45,-146,112>, a=<-7,4,4>
+p=<4165,-1469,2000>, v=<-128,124,-128>, a=<-1,-5,4>
+p=<1113,-1854,63>, v=<-47,6,-29>, a=<-3,13,3>
+p=<-1495,-30,2031>, v=<65,28,-84>, a=<3,-3,-5>
+p=<-1055,-998,1583>, v=<-39,148,-56>, a=<12,-10,-5>
+p=<-2071,-654,2647>, v=<135,-1,-216>, a=<-1,5,6>
+p=<769,10,2767>, v=<-51,0,-11>, a=<0,0,-19>
+p=<-1047,3450,943>, v=<20,-45,-16>, a=<5,-20,-5>
+p=<-679,-814,1511>, v=<31,-59,-94>, a=<1,13,0>
+p=<17,-1334,-273>, v=<-4,-18,-42>, a=<0,12,7>
+p=<521,802,-1201>, v=<7,27,84>, a=<-5,-9,-1>
+p=<1041,-686,-737>, v=<-68,69,106>, a=<0,-3,-7>
+p=<5465,-618,2857>, v=<-66,17,-74>, a=<-4,0,0>
+p=<4344,-1207,-15402>, v=<-134,91,75>, a=<1,-3,17>
+p=<-1375,-181,-4002>, v=<-3,-14,87>, a=<2,1,1>
+p=<15288,-9263,3256>, v=<-71,69,-26>, a=<-17,9,-3>
+p=<-6733,-6755,2914>, v=<21,120,22>, a=<8,3,-5>
+p=<88,1567,8025>, v=<17,18,-54>, a=<-1,-3,-8>
+p=<2026,1168,-2577>, v=<-34,-30,30>, a=<-1,0,2>
+p=<-104,1351,-1305>, v=<59,-36,-21>, a=<-4,-1,5>
+p=<2137,1108,-738>, v=<-52,-55,28>, a=<-2,1,0>
+p=<3730,-2807,5013>, v=<29,90,-73>, a=<-12,1,-8>
+p=<2299,-971,1341>, v=<-86,78,-49>, a=<0,-3,0>
+p=<-939,-4363,2031>, v=<35,140,-73>, a=<0,1,0>
+p=<265,2329,5083>, v=<-66,-41,-95>, a=<4,-3,-6>
+p=<-1009,-261,8765>, v=<52,-21,-38>, a=<-1,2,-19>
+p=<2393,1125,2717>, v=<-84,-56,-83>, a=<0,1,-1>
+p=<1035,1125,-3989>, v=<8,2,84>, a=<-3,-3,4>
+p=<-85,4961,7253>, v=<-39,-164,-71>, a=<3,-1,-13>
+p=<6201,-3075,7757>, v=<-191,123,-60>, a=<-2,-1,-15>
+p=<300,-160,-566>, v=<-5,-6,-76>, a=<-2,2,15>
+p=<2281,-1672,-706>, v=<-124,42,84>, a=<-5,10,-5>
+p=<-2836,323,-251>, v=<159,-3,44>, a=<6,-3,-4>
+p=<2169,-573,-706>, v=<-71,31,54>, a=<-11,1,-1>
+p=<1511,-1259,1527>, v=<-9,95,-38>, a=<-13,-1,-10>
+p=<-330,-937,-2071>, v=<-50,-18,84>, a=<10,11,8>
+p=<13,386,1457>, v=<-7,15,-108>, a=<1,-6,0>
+p=<-953,1163,1331>, v=<-28,-33,-144>, a=<13,-7,6>
+p=<-799,-1490,246>, v=<126,149,1>, a=<-9,-6,-3>
+p=<90,-930,1177>, v=<10,64,-43>, a=<-2,0,-6>
+p=<-1763,-994,1921>, v=<95,80,12>, a=<0,-3,-11>
+p=<-1155,-709,-834>, v=<73,-25,67>, a=<-1,6,-2>
+p=<1429,-405,1959>, v=<-33,79,-90>, a=<-4,-6,-1>
+p=<4418,1330,2934>, v=<-78,-60,33>, a=<-4,1,-8>
+p=<-3239,4306,-1902>, v=<57,52,93>, a=<3,-12,-2>
+p=<-2929,-5149,4949>, v=<-65,-11,-160>, a=<10,11,0>
+p=<-511,-778,-6149>, v=<-47,40,22>, a=<4,-1,11>
+p=<5162,4306,-2677>, v=<-38,-188,38>, a=<-8,3,3>
+p=<-1631,-8674,2819>, v=<130,172,-108>, a=<-5,12,0>
+p=<-1761,3091,-1250>, v=<0,-105,8>, a=<5,-1,3>
+p=<-1631,-42,-7022>, v=<-32,110,122>, a=<7,-8,11>
+p=<150,-5333,3664>, v=<-33,3,8>, a=<2,15,-11>
+p=<6923,-3578,-418>, v=<-118,165,57>, a=<-11,-2,-3>
+p=<8873,5795,-5189>, v=<-166,-128,119>, a=<-13,-7,6>
+p=<-2125,2103,-2628>, v=<41,-40,115>, a=<3,-3,-1>
+p=<-2543,858,5229>, v=<21,-7,-67>, a=<3,-1,-5>
+p=<-4668,3476,-3917>, v=<-74,-84,132>, a=<12,-1,-1>
+p=<-8357,6332,-7793>, v=<17,-63,36>, a=<13,-7,11>
+p=<3125,665,3538>, v=<-65,-76,-2>, a=<-1,3,-5>
+p=<-6384,-14838,5203>, v=<59,58,-104>, a=<6,18,-2>
+p=<-908,3810,-1753>, v=<-51,67,8>, a=<4,-9,2>
+p=<-1722,-6180,-6082>, v=<-48,-43,49>, a=<5,11,6>
+p=<-3054,1368,-4565>, v=<83,-38,-49>, a=<0,0,9>
+p=<-2373,1080,365>, v=<-31,-24,53>, a=<12,-2,-6>
+p=<-4430,2169,-614>, v=<51,53,86>, a=<13,-13,-5>
+p=<-924,-3134,591>, v=<79,-14,-49>, a=<-3,18,2>
+p=<-1874,514,-3988>, v=<-1,-26,32>, a=<10,0,18>
+p=<-145,-1747,4486>, v=<8,43,-114>, a=<0,5,-12>
+p=<653,-2032,2320>, v=<-34,108,-70>, a=<0,0,-5>
+p=<881,2243,1294>, v=<-6,-37,-26>, a=<-4,-8,-4>
+p=<-2425,-1101,-1480>, v=<88,-11,70>, a=<4,7,1>
+p=<-2919,1578,1256>, v=<194,-32,46>, a=<-4,-5,-11>
+p=<-2634,856,2320>, v=<-1,-24,-50>, a=<14,-2,-7>
+p=<144,-1759,161>, v=<26,100,-4>, a=<-6,7,-2>
+p=<1464,-673,437>, v=<-32,55,-27>, a=<-14,0,-2>
+p=<72,1133,65>, v=<-20,-37,4>, a=<2,-9,-2>
+p=<-444,-943,-577>, v=<75,19,-53>, a=<-6,9,15>
+p=<-4278,-11885,3366>, v=<-11,163,56>, a=<7,9,-8>
+p=<3984,5233,8190>, v=<0,76,-4>, a=<-6,-12,-12>
+p=<5460,-4091,8892>, v=<-41,39,-5>, a=<-6,4,-13>
+p=<150,-2147,1692>, v=<-60,-52,-27>, a=<3,6,-1>
+p=<-2874,1183,-576>, v=<61,133,-75>, a=<1,-9,5>
+p=<-1956,-1103,1656>, v=<128,104,11>, a=<-4,-4,-3>
+p=<186,-3893,4752>, v=<50,15,-38>, a=<-3,5,-5>
+p=<-591,7845,4320>, v=<-13,-93,-43>, a=<2,-10,-6>
+p=<1889,-5082,-1012>, v=<-29,148,-63>, a=<-2,1,6>
+p=<1858,3040,-2283>, v=<100,-34,74>, a=<-10,-4,0>
+p=<-3691,1862,-299>, v=<103,132,-102>, a=<1,-12,7>
+p=<-6853,2141,1592>, v=<109,-53,13>, a=<7,-1,-4>
+p=<6663,1769,9497>, v=<-55,23,-146>, a=<-10,-5,-10>
+p=<-5309,-4880,2885>, v=<105,126,4>, a=<3,1,-5>
+p=<3021,-8416,6149>, v=<-70,125,-22>, a=<-1,7,-9>
+p=<3949,1547,1981>, v=<-5,21,84>, a=<-11,-6,-12>
+p=<5093,156,1487>, v=<-76,-47,22>, a=<-9,3,-6>
+p=<6094,2899,-5455>, v=<-74,-112,127>, a=<-12,0,6>
+p=<6523,-4615,395>, v=<-131,96,-17>, a=<-9,6,0>
+p=<-2486,1820,-2023>, v=<94,-84,130>, a=<0,1,-4>
+p=<-4028,1467,2219>, v=<128,-43,-17>, a=<10,-4,-11>
+p=<-1472,531,-5062>, v=<-14,9,150>, a=<10,-4,14>
+p=<-608,-954,-1948>, v=<-43,6,110>, a=<8,5,0>
+p=<-3921,1247,5039>, v=<-33,-106,51>, a=<9,4,-12>
+p=<-9267,1214,-175>, v=<61,14,-80>, a=<13,-3,5>
+p=<2646,4481,-6313>, v=<23,-34,-64>, a=<-6,-6,15>
+p=<996,-2548,-3145>, v=<-63,-93,61>, a=<2,10,2>
+p=<-786,-6277,-373>, v=<-26,-14,-40>, a=<3,12,3>
+p=<-2898,-8323,-2122>, v=<157,150,47>, a=<-4,6,1>
+p=<4098,9167,-2617>, v=<-89,-57,113>, a=<-2,-13,-2>
+p=<-225,1808,3752>, v=<42,13,-63>, a=<-2,-4,-3>
+p=<-4219,1852,5263>, v=<73,-68,-70>, a=<6,0,-9>
+p=<-4597,-119,6667>, v=<101,33,-80>, a=<5,-2,-12>
+p=<4637,-3521,2887>, v=<-157,-93,-108>, a=<-1,16,0>
+p=<1505,-4304,538>, v=<-41,62,7>, a=<-1,7,-2>
+p=<-4737,3953,180>, v=<127,-44,-8>, a=<9,-13,0>
+p=<-2154,-1066,-4440>, v=<81,-3,179>, a=<2,5,3>
+p=<2025,-457,4380>, v=<-8,-109,-87>, a=<-8,12,-11>
+p=<870,1916,1125>, v=<-118,-2,-31>, a=<7,-8,-2>
+p=<-33,1076,4338>, v=<-9,-94,-195>, a=<1,4,-1>
+p=<3726,1664,-1143>, v=<-122,43,-22>, a=<-5,-11,7>
+p=<-3855,-142,3645>, v=<85,-14,-19>, a=<9,2,-14>
+p=<-3330,-268,-975>, v=<137,-96,36>, a=<2,10,1>
+p=<3096,4079,2280>, v=<-4,-105,-20>, a=<-13,-8,-8>
+p=<738,943,775>, v=<-36,0,-63>, a=<-7,-16,-2>
+p=<-437,-727,-595>, v=<54,123,63>, a=<-2,-8,0>
+p=<633,-157,-1665>, v=<-86,-33,170>, a=<4,10,0>
+p=<-312,-262,-110>, v=<-8,49,-13>, a=<7,-3,5>
+p=<-897,1478,-1095>, v=<67,-92,113>, a=<4,-9,0>
+p=<548,-502,880>, v=<-61,73,-101>, a=<1,-3,3>
+p=<-957,-77,-260>, v=<18,3,-20>, a=<14,2,9>
+p=<23,-1767,370>, v=<-25,128,-50>, a=<4,10,3>
+p=<9335,-1502,-1376>, v=<-94,46,109>, a=<-12,0,-4>
+p=<-89,-8910,-1472>, v=<19,162,13>, a=<-1,7,2>
+p=<1431,402,7824>, v=<-45,-30,-30>, a=<0,1,-13>
+p=<3607,-1854,-3216>, v=<-80,90,-15>, a=<-2,-2,7>
+p=<-1431,-1856,4713>, v=<-152,52,-127>, a=<10,0,0>
+p=<1418,-8072,-4870>, v=<56,30,132>, a=<-5,10,0>
+p=<-5020,-6592,-2539>, v=<21,-67,12>, a=<6,13,3>
+p=<1418,6284,-4574>, v=<-20,-16,-85>, a=<-1,-8,11>
+p=<-1357,3879,-11493>, v=<36,30,-31>, a=<0,-7,18>
+p=<4779,-2196,-6490>, v=<34,-13,-96>, a=<-9,4,15>
+p=<405,8280,-820>, v=<63,-82,135>, a=<-4,-8,-6>
+p=<-4347,2178,890>, v=<84,-42,-153>, a=<2,-1,7>
+p=<7425,936,6740>, v=<-21,11,-1>, a=<-10,-2,-10>
+p=<2030,-6060,5989>, v=<-94,68,9>, a=<2,5,-9>
+p=<-3113,1562,-3557>, v=<121,-62,20>, a=<-2,1,4>
+p=<15387,8111,-3927>, v=<-132,-11,-27>, a=<-15,-11,7>
+p=<1105,-12905,-1522>, v=<-31,139,-16>, a=<0,11,3>
+p=<-13843,4300,957>, v=<50,-22,12>, a=<17,-5,-2>
+p=<1364,970,-338>, v=<-38,-46,-67>, a=<0,1,4>
+p=<328,-9020,11539>, v=<-67,-23,-160>, a=<3,14,-8>
+p=<1441,1858,-3933>, v=<-114,-33,72>, a=<4,-1,2>
+p=<-12401,-6674,-9819>, v=<67,19,69>, a=<15,9,11>
+p=<5095,6196,567>, v=<25,-24,-16>, a=<-9,-8,0>
+p=<-4751,-4964,10125>, v=<21,27,-152>, a=<6,6,-7>
+p=<-1546,-4772,-2286>, v=<41,141,-34>, a=<1,2,8>
+p=<6784,-1538,4434>, v=<-126,-76,-129>, a=<-8,9,-2>
+p=<-1896,4454,-2356>, v=<68,-58,70>, a=<0,-7,1>
+p=<4166,296,2040>, v=<-47,-11,0>, a=<-7,0,-5>
+p=<-7306,-125,-3525>, v=<148,-33,50>, a=<11,3,7>
+p=<-4356,-8500,-3550>, v=<69,68,168>, a=<8,21,-2>
+p=<1044,-225,-1950>, v=<-95,23,39>, a=<4,-1,3>
+p=<-617,666,-1168>, v=<-14,-32,45>, a=<4,0,1>
+p=<5515,5664,-1714>, v=<-141,-83,71>, a=<-11,-17,1>
+p=<1735,-1329,-1084>, v=<50,96,52>, a=<-12,-3,0>
+p=<1101,-5305,-338>, v=<-82,-26,-62>, a=<3,14,5>
+p=<6843,1974,-4137>, v=<5,-37,-51>, a=<-16,-2,13>
+p=<-206,-91,-1046>, v=<110,-61,68>, a=<-15,12,4>
+p=<520,877,175>, v=<8,-47,-49>, a=<-9,-5,5>
+p=<520,-795,65>, v=<-112,-9,-15>, a=<11,14,1>
+p=<597,-608,-1046>, v=<-101,10,86>, a=<8,8,1>
+p=<-1702,-190,230>, v=<138,2,54>, a=<3,3,-13>
+p=<465,-1136,-1321>, v=<-29,58,87>, a=<-2,8,5>
+p=<-1152,-487,-331>, v=<94,71,39>, a=<2,-4,-2>
+p=<-1733,-1423,-1483>, v=<-61,121,34>, a=<10,-5,2>
+p=<-3583,-148,-2933>, v=<78,-8,27>, a=<5,1,7>
+p=<1292,-548,1717>, v=<-39,125,-16>, a=<-1,-8,-4>
+p=<-333,2677,842>, v=<91,-4,-33>, a=<-6,-8,0>
+p=<1542,4377,1792>, v=<-114,32,20>, a=<4,-16,-7>
+p=<2192,402,-2183>, v=<16,22,36>, a=<-8,-3,4>
+p=<1792,102,3467>, v=<32,-57,-125>, a=<-8,4,-1>
+p=<17,2502,1642>, v=<25,29,-78>, a=<-2,-10,1>
+p=<158,-2993,164>, v=<-42,8,-3>, a=<2,4,0>
+p=<4820,-3011,2756>, v=<-5,-10,36>, a=<-7,5,-6>
+p=<-3151,-4516,-1216>, v=<118,172,1>, a=<3,4,5>
+p=<-1324,1385,-1867>, v=<-46,1,54>, a=<10,-6,3>
+p=<-4012,1028,-2329>, v=<93,40,54>, a=<9,-8,5>
+p=<524,-3697,1829>, v=<31,56,32>, a=<-5,11,-11>
+p=<-7847,-3949,10230>, v=<-49,45,-93>, a=<13,3,-9>
+p=<-969,-3322,-12874>, v=<-152,-69,203>, a=<9,8,7>
+p=<-4579,2131,-1113>, v=<-57,41,69>, a=<9,-5,-2>
+p=<-1140,-6286,-9758>, v=<67,126,121>, a=<-2,2,7>
+p=<399,-8775,5271>, v=<7,16,-99>, a=<-1,11,-2>
+p=<-1390,-740,258>, v=<152,-4,-23>, a=<-6,9,1>
+p=<2276,-2742,11>, v=<-172,213,59>, a=<0,0,-8>
+p=<1522,-714,63>, v=<-107,-62,-1>, a=<-1,17,0>
+p=<-948,1236,492>, v=<-36,-86,8>, a=<16,-1,-6>
+p=<-350,-1195,895>, v=<-68,24,5>, a=<14,10,-10>
+p=<-662,1392,-106>, v=<61,-14,-30>, a=<-1,-13,6>
+p=<2744,547,1090>, v=<-82,-82,-52>, a=<-18,6,-4>
+p=<-714,508,-886>, v=<44,-79,44>, a=<2,6,4>
+p=<91,79,957>, v=<-26,53,12>, a=<3,-10,-17>
+p=<-96,1014,-1573>, v=<3,-80,140>, a=<1,-2,0>
+p=<-393,827,55>, v=<48,-63,-8>, a=<-2,-2,0>
+p=<872,-559,583>, v=<-49,57,-8>, a=<-5,-1,-8>
+p=<-30,673,231>, v=<-57,-61,-60>, a=<10,0,6>
+p=<-613,-702,1793>, v=<2,88,-70>, a=<9,-4,-16>
+p=<663,596,-253>, v=<-48,-90,26>, a=<-2,6,-1>
+p=<-394,705,481>, v=<4,30,-34>, a=<3,-10,0>
+p=<61,-1297,-1430>, v=<84,38,50>, a=<-12,8,7>
+p=<-233,1909,-163>, v=<15,-131,-33>, a=<0,0,6>
+p=<-870,348,2105>, v=<83,-42,-45>, a=<-3,3,-14>
+p=<1664,285,1755>, v=<-113,45,-35>, a=<-1,-8,-12>
+p=<-1269,1545,-415>, v=<89,-60,-30>, a=<0,-6,8>
+p=<-534,-261,1293>, v=<-1,-21,-92>, a=<5,6,0>
+p=<-135,-121,-2557>, v=<-7,44,93>, a=<2,-4,12>
+p=<1223,-415,292>, v=<-74,35,-28>, a=<-2,0,1>
+p=<824,-1430,922>, v=<-68,115,-73>, a=<1,-1,1>
+p=<-640,2303,-1594>, v=<-90,328,-227>, a=<5,-25,15>
+p=<-1065,354,-3254>, v=<-152,47,-462>, a=<10,-3,31>
+p=<2462,751,1569>, v=<346,107,226>, a=<-22,-7,-14>
+p=<-106,-2052,-2044>, v=<-16,-295,-290>, a=<4,15,15>
+p=<-2837,147,1838>, v=<-406,22,262>, a=<24,-6,-22>
+p=<2592,-1392,-608>, v=<374,-198,-87>, a=<-23,12,7>
+p=<1813,1582,-1758>, v=<259,229,-248>, a=<-18,-17,14>
+p=<-1899,1420,658>, v=<-267,200,92>, a=<16,-16,-11>
+p=<1208,-1527,-1923>, v=<172,-215,-275>, a=<-16,10,16>
+p=<2156,-2278,169>, v=<307,-326,27>, a=<-21,22,-1>
+p=<1056,-798,-2596>, v=<147,-116,-372>, a=<-9,7,28>
+p=<-1199,620,2328>, v=<-171,88,326>, a=<14,1,-26>
+p=<-2396,-657,2316>, v=<-338,-95,329>, a=<24,6,-22>
+p=<-824,587,-2484>, v=<-121,82,-353>, a=<8,-2,28>
+p=<1659,739,-2320>, v=<235,105,-333>, a=<-18,-8,23>
+p=<-2673,-573,489>, v=<-379,-75,67>, a=<25,5,0>
+p=<-1570,-2486,60>, v=<-229,-357,7>, a=<14,29,-2>
+p=<-2626,179,257>, v=<-375,24,38>, a=<23,-1,-4>
+p=<849,-331,-2900>, v=<120,-49,-417>, a=<-8,0,31>
+p=<645,1229,2673>, v=<89,177,376>, a=<-6,-14,-28>
+p=<-1480,-2064,-361>, v=<-211,-295,-55>, a=<14,21,5>
+p=<-2665,43,1552>, v=<-381,6,223>, a=<30,3,-17>
+p=<-1459,51,2649>, v=<-202,7,371>, a=<13,-3,-21>
+p=<-1482,-2729,-452>, v=<-211,-391,-64>, a=<14,24,4>
+p=<1608,2630,144>, v=<228,371,14>, a=<-16,-26,4>
+p=<1165,499,2876>, v=<163,71,411>, a=<-12,-9,-30>
+p=<2642,-695,-895>, v=<383,-101,-127>, a=<-23,1,4>
+p=<-2614,-864,-1341>, v=<-370,-122,-187>, a=<26,8,10>
+p=<-1044,729,-2321>, v=<-151,103,-328>, a=<5,-7,22>
+p=<-1018,-916,-2755>, v=<-145,-129,-388>, a=<5,8,23>
+p=<-3177,847,960>, v=<-456,120,143>, a=<30,-8,-2>
+p=<1358,1463,-2332>, v=<194,215,-332>, a=<-15,-12,23>
+p=<-1230,-3445,-695>, v=<-178,-496,-100>, a=<9,34,8>
+p=<284,229,2992>, v=<41,34,427>, a=<-4,-2,-30>
+p=<-1398,-1284,-2531>, v=<-195,-185,-358>, a=<12,18,30>
+p=<280,1690,-1795>, v=<41,241,-252>, a=<-4,-16,19>
+p=<-1556,637,2590>, v=<-215,94,374>, a=<15,-3,-25>
+p=<1970,-1629,2345>, v=<282,-237,335>, a=<-14,13,-29>
+p=<624,-2660,-1245>, v=<92,-377,-177>, a=<-6,27,12>
+p=<2472,-1297,-1889>, v=<352,-187,-272>, a=<-21,11,21>
+p=<1475,-2024,-2192>, v=<216,-292,-316>, a=<-19,18,22>
+p=<2316,-1953,720>, v=<327,-284,103>, a=<-25,21,-5>
+p=<-1493,692,-3102>, v=<-213,100,-443>, a=<14,-7,27>
+p=<1825,1169,2010>, v=<263,164,287>, a=<-18,-10,-16>
+p=<132,-416,2718>, v=<18,-59,390>, a=<-2,7,-26>
+p=<-3328,-231,203>, v=<-477,-34,36>, a=<31,4,-4>
+p=<-1458,911,-2505>, v=<-208,128,-357>, a=<16,-9,26>
+p=<-232,2726,-1244>, v=<-34,389,-177>, a=<-3,-28,9>
+p=<-2076,-2126,878>, v=<-297,-304,128>, a=<21,23,-10>
+p=<3071,-1789,-978>, v=<444,-255,-139>, a=<-32,15,6>
+p=<470,1352,2371>, v=<69,192,338>, a=<-1,-14,-19>
+p=<-366,2757,334>, v=<-51,394,48>, a=<3,-23,-2>
+p=<142,3704,-779>, v=<23,528,-111>, a=<-4,-35,6>
+p=<-2560,678,-902>, v=<-365,96,-128>, a=<26,-4,10>
+p=<-799,-1439,1718>, v=<-115,-205,245>, a=<2,16,-16>
+p=<252,-205,2964>, v=<36,-31,420>, a=<-3,2,-29>
+p=<1111,-2850,-712>, v=<159,-409,-107>, a=<-10,28,8>
+p=<-460,2649,-1121>, v=<-67,382,-159>, a=<7,-32,15>
+p=<3050,-961,419>, v=<434,-142,58>, a=<-31,13,-4>
+p=<-690,583,3314>, v=<-98,86,474>, a=<8,-6,-34>
+p=<1533,1358,-2236>, v=<218,195,-319>, a=<-15,-12,23>
+p=<2116,1539,1334>, v=<296,223,196>, a=<-23,-12,-16>
+p=<-480,-2566,1780>, v=<-70,-372,250>, a=<5,19,-14>
+p=<-157,-2633,1171>, v=<-20,-380,163>, a=<0,30,-8>
+p=<-551,2588,-222>, v=<-81,366,-28>, a=<11,-23,-1>
+p=<-2411,917,589>, v=<-341,131,85>, a=<24,-8,-6>
+p=<-889,-2793,-844>, v=<-130,-400,-122>, a=<12,24,8>
+p=<1520,-2712,-490>, v=<219,-383,-68>, a=<-12,27,6>
+p=<-1591,-1155,1957>, v=<-228,-169,282>, a=<14,15,-18>
+p=<-2439,1395,-500>, v=<-347,199,-73>, a=<28,-12,5>
+p=<-1337,172,-2489>, v=<-187,23,-355>, a=<18,3,23>
+p=<316,-2188,1642>, v=<42,-313,230>, a=<-3,21,-17>
+p=<-165,1828,-2025>, v=<-19,258,-292>, a=<1,-16,18>
+p=<-1747,1095,1978>, v=<-244,154,284>, a=<18,-12,-25>
+p=<-2666,540,-1200>, v=<-379,80,-168>, a=<25,1,8>
+p=<1683,-834,-1770>, v=<240,-119,-252>, a=<-16,5,18>
+p=<-2653,450,-388>, v=<-382,65,-56>, a=<31,3,7>
+p=<2146,-2673,-252>, v=<307,-382,-35>, a=<-25,26,-1>
+p=<-496,-2646,1797>, v=<-73,-379,258>, a=<3,24,-16>
+p=<1530,360,-3009>, v=<217,48,-423>, a=<-15,-1,30>
+p=<-640,-802,-2660>, v=<-88,-114,-376>, a=<7,7,28>
+p=<-811,1540,-2260>, v=<-116,218,-322>, a=<1,-12,22>
+p=<-2796,1328,-710>, v=<-396,191,-100>, a=<27,-13,7>
+p=<129,472,2813>, v=<24,63,404>, a=<4,-2,-26>
+p=<-1420,-2470,-1046>, v=<-201,-355,-153>, a=<21,18,6>
+p=<2451,808,-944>, v=<347,115,-138>, a=<-24,-6,11>
+p=<-40,2324,-1830>, v=<-3,330,-266>, a=<-1,-17,18>
+p=<-82,3079,1442>, v=<-10,440,210>, a=<0,-26,-10>
+p=<2698,-1471,-783>, v=<379,-209,-112>, a=<-26,16,9>
+p=<2894,-1493,-387>, v=<412,-213,-57>, a=<-28,14,-3>
+p=<1417,2516,-12>, v=<198,358,2>, a=<-17,-23,-2>
+p=<747,2897,-1186>, v=<106,417,-165>, a=<-7,-33,15>
+p=<-4,2281,-2417>, v=<-4,328,-340>, a=<6,-23,31>
+p=<1737,-1461,2393>, v=<243,-202,335>, a=<-13,18,-30>
+p=<-902,1843,-2360>, v=<-130,264,-337>, a=<11,-15,25>
+p=<-1582,20,-1857>, v=<-227,-1,-263>, a=<14,-1,23>
+p=<-1830,629,-1964>, v=<-258,85,-278>, a=<10,-8,17>
+p=<-2085,1038,-866>, v=<-292,149,-127>, a=<21,-10,8>
+p=<-1186,2355,1683>, v=<-169,335,243>, a=<11,-23,-16>
+p=<-2259,248,-2209>, v=<-324,35,-314>, a=<22,0,21>
+p=<-1283,-2116,1398>, v=<-186,-301,202>, a=<7,19,-21>
+p=<-645,-3178,1278>, v=<-90,-449,181>, a=<6,26,-15>
+p=<-1736,-2087,-1254>, v=<-249,-297,-181>, a=<17,19,14>
+p=<183,-1786,-1791>, v=<26,-249,-259>, a=<-1,19,17>
+p=<2465,-1286,-188>, v=<355,-185,-26>, a=<-24,12,4>
+p=<234,-1280,-2961>, v=<29,-180,-419>, a=<-2,13,25>
+p=<1084,1772,-2323>, v=<151,254,-331>, a=<-10,-15,23>
+p=<-33,-757,2842>, v=<-7,-110,407>, a=<1,7,-27>
+p=<-62,223,-2854>, v=<-6,30,-407>, a=<4,-2,29>
+p=<-1939,-2234,-470>, v=<-276,-318,-65>, a=<18,23,6>
+p=<-1064,-2485,1011>, v=<-154,-357,141>, a=<10,28,-5>
+p=<-2793,-281,1074>, v=<-400,-36,156>, a=<25,2,-9>
+p=<-2153,1885,362>, v=<-301,274,50>, a=<19,-19,0>
+p=<-1097,2219,-1431>, v=<-157,314,-207>, a=<11,-22,12>
+p=<1795,-2653,694>, v=<256,-382,99>, a=<-18,29,-6>
+p=<-1706,2021,-841>, v=<-238,287,-120>, a=<17,-25,10>
+p=<-163,-1743,1795>, v=<-26,-252,258>, a=<1,17,-17>
+p=<1425,1729,977>, v=<202,243,138>, a=<-13,-17,-10>
+p=<648,2109,-994>, v=<90,303,-143>, a=<-3,-19,14>
+p=<-1738,468,1971>, v=<-249,65,278>, a=<18,0,-20>
+p=<1045,1218,2731>, v=<148,175,394>, a=<-8,-11,-27>
+p=<-540,1940,-2022>, v=<-77,280,-283>, a=<5,-21,17>
+p=<-2979,1549,-239>, v=<-430,222,-34>, a=<27,-21,0>
+p=<-2598,-2175,-183>, v=<-374,-314,-26>, a=<21,19,2>
+p=<-1391,2880,-1142>, v=<-195,410,-163>, a=<9,-28,12>
+p=<-1253,-1245,2513>, v=<-182,-173,362>, a=<12,13,-22>
+p=<771,75,2400>, v=<104,11,342>, a=<-7,4,-25>
+p=<468,988,-2854>, v=<67,143,-403>, a=<1,-13,25>
+p=<-1290,2001,1041>, v=<-180,286,148>, a=<12,-22,-8>
+p=<11,-1463,2584>, v=<-4,-215,375>, a=<0,13,-30>
+p=<1672,-2459,-1046>, v=<233,-348,-149>, a=<-21,24,15>
+p=<-1973,2358,-291>, v=<-279,338,-37>, a=<21,-23,1>
+p=<327,-2775,2079>, v=<49,-396,298>, a=<-4,32,-24>
+p=<-2260,400,-2962>, v=<-327,56,-422>, a=<22,-8,28>
+p=<-431,-282,3083>, v=<-61,-39,440>, a=<1,5,-24>
+p=<-2378,1821,-1219>, v=<-331,261,-174>, a=<14,-22,18>
+p=<187,2556,-1007>, v=<26,368,-146>, a=<-2,-24,10>
+p=<1417,-2451,289>, v=<199,-350,40>, a=<-19,25,-3>
+p=<-2105,292,2336>, v=<-295,42,329>, a=<22,-1,-23>
+p=<1397,2026,1405>, v=<200,289,200>, a=<-8,-19,-11>
+p=<2364,323,-382>, v=<341,49,-58>, a=<-21,-6,4>
+p=<-256,-3019,633>, v=<-36,-430,90>, a=<2,35,-5>
+p=<3025,-164,1078>, v=<429,-21,153>, a=<-29,1,-9>
+p=<2723,-2091,-29>, v=<388,-297,-3>, a=<-29,16,-2>
+p=<197,709,2512>, v=<30,108,362>, a=<-6,-5,-25>
+p=<-1843,874,1771>, v=<-261,131,253>, a=<17,-12,-17>
+p=<2707,-769,818>, v=<382,-107,112>, a=<-26,9,-4>
+p=<164,-239,3326>, v=<20,-36,474>, a=<-5,-2,-35>
+p=<-1484,-1867,1429>, v=<-211,-271,204>, a=<12,18,-16>
+p=<-1091,-1732,-2881>, v=<-154,-248,-411>, a=<8,15,29>
+p=<2142,1579,-1231>, v=<306,223,-177>, a=<-19,-18,6>
+p=<-2977,300,945>, v=<-425,44,133>, a=<30,3,-7>
+p=<1742,1775,-36>, v=<244,253,-7>, a=<-17,-17,5>
+p=<-1594,-2674,495>, v=<-230,-382,74>, a=<13,21,-1>
+p=<-1665,2225,-1776>, v=<-240,314,-250>, a=<17,-21,17>
+p=<142,2432,-376>, v=<18,351,-52>, a=<-2,-16,2>
+p=<-950,1633,1739>, v=<-139,229,248>, a=<9,-16,-17>
+p=<-2816,-480,-893>, v=<-404,-71,-131>, a=<31,6,8>
+p=<-455,932,2810>, v=<-69,135,403>, a=<3,-13,-27>
+p=<-3730,366,-606>, v=<-532,55,-86>, a=<37,-3,4>
+p=<252,-2577,-244>, v=<36,-367,-35>, a=<-6,26,3>
+p=<801,-2233,-1237>, v=<112,-315,-174>, a=<-8,27,13>
+p=<2442,-462,1909>, v=<350,-65,270>, a=<-22,5,-12>
+p=<-2324,1403,-1040>, v=<-332,203,-139>, a=<22,-13,12>
+p=<-2533,1295,-1541>, v=<-361,183,-221>, a=<25,-11,17>
+p=<-1512,-932,1936>, v=<-216,-134,276>, a=<18,9,-18>
+p=<2274,1583,-1494>, v=<319,227,-214>, a=<-21,-17,14>
+p=<-2158,-1734,-2643>, v=<-302,-242,-377>, a=<26,15,26>
+p=<687,954,2298>, v=<94,130,329>, a=<-12,-8,-28>
+p=<-2296,571,-1404>, v=<-334,81,-198>, a=<24,-5,13>
+p=<-431,2980,489>, v=<-55,424,64>, a=<4,-33,-4>
+p=<-2237,-2695,-582>, v=<-316,-385,-83>, a=<21,32,5>
+p=<-1619,759,-2656>, v=<-225,114,-380>, a=<19,-12,26>
+p=<945,447,3126>, v=<130,61,444>, a=<-12,-9,-31>
+p=<2412,-1076,1127>, v=<344,-158,158>, a=<-28,8,-7>
+p=<77,3074,-1824>, v=<14,438,-257>, a=<0,-30,21>
+p=<1306,1552,-1954>, v=<187,222,-281>, a=<-16,-13,18>
+p=<808,2843,1357>, v=<116,408,190>, a=<-9,-28,-10>
+p=<-105,-919,2898>, v=<-15,-129,418>, a=<1,13,-28>
+p=<994,1043,-1978>, v=<140,151,-279>, a=<-9,-9,20>
+p=<3077,70,482>, v=<442,10,68>, a=<-32,-1,-6>
+p=<-2772,1,-1392>, v=<-397,-2,-201>, a=<30,2,13>
+p=<1297,-2205,120>, v=<184,-321,17>, a=<-9,20,0>
+p=<-3102,-5,-1354>, v=<-444,3,-194>, a=<30,-1,12>
+p=<-1621,-2313,374>, v=<-235,-329,52>, a=<18,20,-3>
+p=<1902,-240,2425>, v=<266,-34,348>, a=<-19,1,-25>
+p=<-1803,-1696,-543>, v=<-257,-238,-74>, a=<21,18,4>
+p=<2854,-216,1608>, v=<404,-28,229>, a=<-30,6,-13>
+p=<1502,-1352,-2578>, v=<211,-192,-364>, a=<-15,19,16>
+p=<1559,-2311,-45>, v=<220,-328,-6>, a=<-17,22,5>
+p=<-402,2270,-796>, v=<-58,325,-110>, a=<7,-21,3>
+p=<-1370,-11,-2620>, v=<-196,3,-373>, a=<13,4,31>
+p=<-953,3009,1273>, v=<-138,429,181>, a=<8,-33,-15>
+p=<1782,-1172,-2352>, v=<255,-164,-337>, a=<-20,11,27>
+p=<2237,418,2402>, v=<322,59,341>, a=<-21,-8,-24>
+p=<2252,1657,1721>, v=<320,238,247>, a=<-20,-18,-15>
+p=<-1315,-2410,1308>, v=<-189,-340,189>, a=<10,26,-18>
+p=<48,244,-2745>, v=<2,35,-388>, a=<3,-3,29>
+p=<1665,2253,-689>, v=<237,317,-98>, a=<-17,-21,5>
+p=<1117,-1998,-2158>, v=<161,-285,-308>, a=<-9,21,22>
+p=<-1209,2307,-403>, v=<-172,324,-58>, a=<11,-24,2>
+p=<-2058,1700,1773>, v=<-291,243,254>, a=<20,-17,-18>
+p=<-995,-1138,-2951>, v=<-138,-163,-418>, a=<8,13,27>
+p=<785,-983,2672>, v=<116,-146,383>, a=<-7,10,-26>
+p=<-1923,-330,-1677>, v=<-271,-41,-241>, a=<16,4,16>
+p=<1401,1896,937>, v=<197,268,131>, a=<-16,-15,-10>
+p=<-572,2692,1022>, v=<-83,384,149>, a=<1,-24,-10>
+p=<1741,1338,-1868>, v=<253,193,-269>, a=<-17,-10,17>
+p=<1566,2188,350>, v=<225,312,48>, a=<-16,-21,-4>
+p=<-1734,-1324,-1866>, v=<-244,-188,-269>, a=<17,13,17>
+p=<3149,-129,-952>, v=<449,-16,-132>, a=<-32,-1,11>
+p=<2091,-1276,-782>, v=<293,-179,-108>, a=<-21,10,11>
+p=<1814,2072,315>, v=<260,295,47>, a=<-18,-21,-6>
+p=<-1036,-1282,1829>, v=<-147,-189,265>, a=<10,14,-18>
+p=<-2434,-333,-1071>, v=<-347,-45,-155>, a=<23,2,7>
+p=<2813,315,265>, v=<397,43,35>, a=<-29,-3,-2>
+p=<704,-541,-2684>, v=<100,-81,-383>, a=<-8,2,25>
+p=<180,-1863,-2277>, v=<28,-266,-326>, a=<-2,12,22>
+p=<-537,478,-3146>, v=<-73,72,-449>, a=<1,-3,29>
+p=<-2275,1286,1169>, v=<-326,182,165>, a=<21,-16,-13>
+p=<-3153,-167,839>, v=<-452,-22,117>, a=<31,5,-8>
+p=<-2659,-1005,-62>, v=<-379,-143,-11>, a=<33,14,0>
+p=<-2857,1552,-245>, v=<-403,219,-34>, a=<26,-15,-2>
+p=<-2420,1189,-1497>, v=<-348,165,-213>, a=<22,-10,13>
+p=<-996,-2088,1463>, v=<-141,-296,209>, a=<10,21,-13>
+p=<785,-2777,-89>, v=<111,-396,-11>, a=<-10,22,2>
+p=<-3064,52,457>, v=<-439,3,58>, a=<29,0,-1>
+p=<-2003,1537,-2027>, v=<-286,222,-283>, a=<18,-14,20>
+p=<-2744,192,516>, v=<-390,27,75>, a=<28,-1,-8>
+p=<2627,428,1268>, v=<377,62,183>, a=<-26,-4,-11>
+p=<2370,516,-2130>, v=<335,71,-306>, a=<-25,-4,20>
+p=<-167,2752,-190>, v=<-23,391,-27>, a=<1,-24,0>
+p=<-2333,-1758,399>, v=<-332,-254,59>, a=<23,10,-4>
+p=<115,1289,-2001>, v=<17,186,-285>, a=<0,-12,22>
+p=<-1645,320,-2350>, v=<-235,48,-336>, a=<15,1,23>
+p=<168,539,-2987>, v=<26,80,-429>, a=<4,-6,30>
+p=<550,109,2265>, v=<77,14,323>, a=<-1,-1,-15>
+p=<2314,-1485,1355>, v=<330,-206,194>, a=<-21,21,-13>
+p=<-2350,1553,904>, v=<-337,226,132>, a=<17,-17,-9>
+p=<-1292,2795,-539>, v=<-184,402,-74>, a=<12,-30,8>
+p=<-770,-1190,-2785>, v=<-108,-172,-397>, a=<7,9,30>
+p=<-2348,-1197,1425>, v=<-336,-172,211>, a=<23,14,-13>
+p=<1914,787,1936>, v=<275,112,273>, a=<-19,-8,-16>
+p=<-20,934,-2534>, v=<-2,133,-361>, a=<0,-9,24>
+p=<-1896,-1410,1509>, v=<-269,-201,214>, a=<14,14,-11>
+p=<-3039,-1083,-1197>, v=<-436,-151,-174>, a=<30,14,12>
+p=<-703,-1842,2083>, v=<-100,-263,297>, a=<8,21,-21>
+p=<-865,2968,-1508>, v=<-121,421,-215>, a=<8,-31,19>
+p=<3111,410,1160>, v=<442,62,161>, a=<-26,-4,-15>
+p=<-783,2409,-1292>, v=<-107,344,-184>, a=<7,-24,11>
+p=<3426,56,23>, v=<492,10,-1>, a=<-31,2,0>
+p=<-3055,796,570>, v=<-440,112,73>, a=<28,-6,-8>
+p=<-407,1576,2244>, v=<-62,226,323>, a=<3,-11,-22>
+p=<-1560,2842,919>, v=<-221,405,133>, a=<14,-26,-7>
+p=<2900,635,1073>, v=<411,92,158>, a=<-26,-3,-7>
+p=<-2028,-452,2148>, v=<-286,-59,306>, a=<22,4,-20>
+p=<-2567,1085,45>, v=<-371,157,1>, a=<32,-18,-1>
+p=<-991,1405,2370>, v=<-142,203,340>, a=<9,-14,-23>
+p=<142,-1409,-2144>, v=<15,-199,-308>, a=<0,8,26>
+p=<1497,303,-2973>, v=<213,42,-427>, a=<-13,-6,33>
+p=<-1158,221,2675>, v=<-167,32,380>, a=<9,5,-25>
+p=<-147,-400,3215>, v=<-21,-51,459>, a=<-1,0,-32>
+p=<-1828,-2033,567>, v=<-263,-290,82>, a=<19,26,-4>
+p=<-1953,1811,-2055>, v=<-278,255,-294>, a=<15,-18,14>
+p=<-838,-1721,-2258>, v=<-119,-250,-324>, a=<10,16,25>
+p=<598,-1963,-2331>, v=<84,-274,-335>, a=<-5,21,24>
+p=<-210,400,-2911>, v=<-29,61,-416>, a=<4,-9,31>
+p=<-1336,-1236,2422>, v=<-192,-175,348>, a=<9,11,-27>
+p=<2593,1842,156>, v=<366,258,23>, a=<-26,-22,3>
+p=<683,-2491,2131>, v=<94,-355,301>, a=<-5,26,-19>
+p=<-1754,-1837,-1551>, v=<-249,-262,-221>, a=<15,23,13>
+p=<1971,2423,440>, v=<278,345,64>, a=<-23,-24,-1>
+p=<-398,2348,1947>, v=<-56,333,281>, a=<-2,-23,-19>
+p=<2374,-1106,-1948>, v=<339,-158,-282>, a=<-24,13,22>
+p=<-989,-1488,-1769>, v=<-148,-214,-252>, a=<9,12,12>
+p=<2259,-943,-1333>, v=<318,-135,-185>, a=<-21,9,8>
+p=<2871,-44,150>, v=<412,-7,23>, a=<-26,2,-2>
+p=<876,-1583,-1974>, v=<131,-232,-281>, a=<-12,18,14>
+p=<-597,-2656,690>, v=<-82,-383,91>, a=<5,26,-8>
+p=<3218,-115,-141>, v=<455,-18,-18>, a=<-36,0,5>
+p=<1347,-17,-2874>, v=<195,-2,-410>, a=<-16,-4,28>
+p=<2607,646,1802>, v=<375,90,259>, a=<-30,-7,-18>
+p=<2246,-82,1413>, v=<316,-6,200>, a=<-21,-5,-11>
+p=<-1515,2402,-1329>, v=<-208,341,-188>, a=<16,-22,15>
+p=<-740,-2443,839>, v=<-106,-345,118>, a=<9,27,-9>
+p=<-370,-1496,2055>, v=<-57,-212,293>, a=<5,14,-19>
+p=<-1652,-1944,-1349>, v=<-236,-281,-184>, a=<9,16,13>
+p=<-2499,2057,-233>, v=<-355,294,-32>, a=<24,-21,2>
+p=<307,-2054,1512>, v=<38,-293,216>, a=<-4,19,-16>
+p=<-2617,-1535,-1691>, v=<-371,-221,-238>, a=<26,14,19>
+p=<1419,2503,374>, v=<205,362,55>, a=<-18,-25,-3>
+p=<2882,48,1837>, v=<407,3,267>, a=<-26,-4,-22>
+p=<-563,-3347,223>, v=<-79,-476,34>, a=<7,33,-2>
+p=<-814,-2302,-208>, v=<-116,-326,-29>, a=<7,21,2>
+p=<2886,-461,892>, v=<417,-72,127>, a=<-30,4,-11>
+p=<38,-829,2517>, v=<9,-117,361>, a=<0,6,-29>
+p=<1954,768,-1801>, v=<278,111,-257>, a=<-22,-7,22>
+p=<-1138,-848,2144>, v=<-161,-121,307>, a=<14,13,-20>
+p=<-2676,69,-662>, v=<-388,11,-94>, a=<26,0,6>
+p=<-1190,-2014,1742>, v=<-170,-287,249>, a=<11,21,-20>
+p=<-865,2859,-981>, v=<-126,407,-140>, a=<8,-31,12>
+p=<3060,1455,828>, v=<437,209,118>, a=<-25,-19,-6>
+p=<1292,-1828,-1200>, v=<181,-268,-168>, a=<-13,18,9>
+p=<-2351,-1092,557>, v=<-339,-155,81>, a=<23,13,-3>
+p=<1107,-2033,693>, v=<155,-290,100>, a=<-7,21,-10>
+p=<-962,323,3456>, v=<-140,48,493>, a=<11,-4,-30>
+p=<2434,637,-1784>, v=<348,96,-252>, a=<-24,-9,18>
+p=<2157,1618,59>, v=<308,226,8>, a=<-25,-20,-2>
+p=<849,-62,-2418>, v=<121,-8,-344>, a=<-7,-3,23>
+p=<2762,1436,-1383>, v=<394,207,-197>, a=<-23,-15,11>
+p=<-3036,419,878>, v=<-432,57,124>, a=<24,1,-10>
+p=<2503,1489,-756>, v=<356,217,-109>, a=<-25,-12,4>
+p=<-1397,-2563,-133>, v=<-199,-361,-19>, a=<12,23,1>
+p=<-288,1425,-3042>, v=<-41,207,-432>, a=<1,-13,29>
+p=<24,2975,447>, v=<2,428,63>, a=<-2,-37,-4>
+p=<285,-2013,-2331>, v=<34,-287,-329>, a=<5,25,26>
+p=<-634,-2885,-1380>, v=<-90,-410,-196>, a=<4,31,16>
+p=<-2550,-1613,1326>, v=<-369,-228,189>, a=<22,15,-12>
+p=<-260,-1885,1699>, v=<-40,-269,242>, a=<7,18,-16>
+p=<-632,1319,2283>, v=<-91,186,323>, a=<4,-18,-22>
+p=<-865,-2642,-279>, v=<-126,-373,-39>, a=<3,24,0>
+p=<2223,-1977,880>, v=<317,-281,130>, a=<-23,20,-8>
+p=<42,2810,-450>, v=<10,401,-65>, a=<0,-24,0>
+p=<-950,2330,2037>, v=<-134,332,291>, a=<4,-23,-18>
+p=<1044,286,3174>, v=<151,40,451>, a=<-8,-1,-30>
+p=<-932,2492,-342>, v=<-135,352,-53>, a=<9,-25,-1>
+p=<3318,808,-839>, v=<473,112,-125>, a=<-33,-7,8>
+p=<2190,802,1373>, v=<314,108,196>, a=<-21,-10,-13>
+p=<-110,2227,2514>, v=<-13,321,357>, a=<1,-26,-22>
+p=<-762,-2542,1571>, v=<-107,-363,219>, a=<7,27,-15>
+p=<-843,1461,-2501>, v=<-121,208,-360>, a=<6,-15,25>
+p=<1037,-2192,-1862>, v=<146,-314,-266>, a=<-9,21,16>
+p=<1428,-2502,783>, v=<208,-357,117>, a=<-12,24,-1>
+p=<-1519,802,-2626>, v=<-214,115,-375>, a=<12,-10,21>
+p=<-2483,1663,1263>, v=<-349,237,180>, a=<19,-18,-17>
+p=<1246,-500,2566>, v=<175,-69,366>, a=<-15,2,-25>
+p=<-2286,-1779,-461>, v=<-327,-255,-65>, a=<22,23,2>
+p=<350,3135,1064>, v=<50,449,152>, a=<-3,-31,-6>
+p=<-506,275,-2858>, v=<-70,47,-408>, a=<6,-1,29>
+p=<2283,2049,-751>, v=<328,292,-107>, a=<-18,-23,12>
+p=<-1926,-1360,-1240>, v=<-279,-194,-175>, a=<19,15,14>
+p=<1343,457,-2363>, v=<185,63,-333>, a=<-13,-2,23>
+p=<-1206,2687,-982>, v=<-173,379,-140>, a=<8,-22,15>
+p=<2187,30,2741>, v=<312,5,391>, a=<-21,2,-25>
+p=<2627,1354,-644>, v=<375,193,-92>, a=<-23,-13,-2>
+p=<2234,1551,-629>, v=<314,221,-87>, a=<-21,-15,6>
+p=<-2224,181,-1582>, v=<-317,28,-226>, a=<19,-2,18>
+p=<-1203,943,2568>, v=<-174,137,364>, a=<12,-2,-28>
+p=<1723,2089,584>, v=<247,300,80>, a=<-17,-19,-9>
+p=<1087,-867,2921>, v=<156,-126,421>, a=<-10,7,-29>
+p=<359,-2816,1809>, v=<51,-402,255>, a=<0,28,-19>
+p=<1010,1125,-2626>, v=<144,160,-377>, a=<-13,-17,27>
+p=<-2218,1407,-767>, v=<-321,206,-110>, a=<24,-16,1>
+p=<-3075,459,556>, v=<-436,65,76>, a=<28,-5,-5>
+p=<-711,3207,1693>, v=<-97,457,242>, a=<10,-35,-20>
+p=<2313,-442,-2190>, v=<330,-64,-315>, a=<-19,2,18>
+p=<-1225,2747,-653>, v=<-177,394,-93>, a=<8,-30,5>
+p=<1874,-2001,-949>, v=<267,-285,-133>, a=<-18,21,8>
+p=<1135,-2961,-1056>, v=<159,-420,-148>, a=<-9,25,9>
+p=<-992,1847,1999>, v=<-139,262,285>, a=<7,-22,-23>
+p=<355,2681,-983>, v=<50,383,-140>, a=<-4,-27,15>
+p=<-366,-2446,1278>, v=<-52,-353,183>, a=<4,27,-12>
+p=<1878,-2548,244>, v=<268,-365,33>, a=<-18,27,0>
+p=<2552,811,567>, v=<366,110,84>, a=<-25,-8,-8>
+p=<3105,498,303>, v=<444,68,45>, a=<-31,-5,-2>
+p=<167,-2030,-2095>, v=<20,-290,-300>, a=<2,16,26>
+p=<637,2069,1692>, v=<83,294,243>, a=<-9,-20,-18>
+p=<279,-2256,1998>, v=<45,-322,285>, a=<-6,21,-14>
+p=<1300,-1475,2240>, v=<185,-210,320>, a=<-13,10,-26>
+p=<-909,1932,1771>, v=<-128,280,256>, a=<4,-20,-20>
+p=<-2564,-1688,925>, v=<-368,-238,129>, a=<27,16,-11>
+p=<-1016,-2945,738>, v=<-147,-419,106>, a=<9,33,-5>
+p=<-53,-2665,-2270>, v=<-11,-379,-324>, a=<-2,28,19>
+p=<1575,642,2511>, v=<223,94,355>, a=<-17,-1,-16>
+p=<1038,2769,151>, v=<144,397,21>, a=<-12,-27,-3>
+p=<2607,805,-1130>, v=<372,115,-161>, a=<-27,-9,11>
+p=<2070,170,2504>, v=<298,21,356>, a=<-24,-4,-26>
+p=<-2063,152,-2561>, v=<-295,24,-365>, a=<16,-4,31>
+p=<2655,-493,-835>, v=<379,-69,-115>, a=<-26,8,7>
+p=<-2780,900,-676>, v=<-397,132,-100>, a=<29,-11,6>
+p=<252,2668,1762>, v=<39,379,250>, a=<-2,-29,-17>
+p=<-2790,-731,-1001>, v=<-395,-101,-140>, a=<26,6,13>
+p=<-1229,497,-2048>, v=<-171,72,-295>, a=<12,1,23>
+p=<2491,1388,1334>, v=<356,203,191>, a=<-29,-14,-12>
+p=<2321,-1287,2441>, v=<333,-179,351>, a=<-24,14,-23>
+p=<1460,2731,-68>, v=<209,390,-5>, a=<-15,-28,7>
+p=<1398,618,2852>, v=<202,87,407>, a=<-11,-1,-32>
+p=<47,1927,2446>, v=<9,271,348>, a=<-1,-25,-19>
+p=<757,2073,-2212>, v=<113,296,-317>, a=<-6,-25,21>
+p=<-1045,2707,-1885>, v=<-145,385,-264>, a=<5,-27,18>
+p=<-1495,-818,-1857>, v=<-215,-118,-262>, a=<14,9,12>
+p=<-2627,-718,-1764>, v=<-378,-101,-252>, a=<25,9,18>
+p=<2024,960,1742>, v=<293,135,254>, a=<-27,-9,-21>
+p=<1784,2855,-138>, v=<252,406,-15>, a=<-16,-32,1>
+p=<-2160,-710,-1609>, v=<-304,-103,-223>, a=<17,6,17>
+p=<-2478,-2089,95>, v=<-353,-299,15>, a=<28,23,1>
+p=<2435,527,2073>, v=<347,75,296>, a=<-27,-4,-20>
+p=<-1352,2955,791>, v=<-193,424,117>, a=<13,-31,-6>
+p=<3003,1189,678>, v=<424,169,100>, a=<-30,-9,-10>
+p=<604,-799,2066>, v=<89,-115,292>, a=<-10,10,-17>
+p=<-2506,-1768,406>, v=<-354,-247,58>, a=<30,16,-2>
+p=<-1310,-352,-1934>, v=<-188,-48,-276>, a=<13,6,19>
+p=<1378,-2170,834>, v=<196,-312,122>, a=<-13,22,-8>
+p=<-714,2923,-799>, v=<-107,414,-115>, a=<8,-30,7>
+p=<906,232,-2566>, v=<128,32,-362>, a=<-9,2,18>
+p=<-2288,-1476,1309>, v=<-327,-210,183>, a=<22,14,-13>
+p=<1697,1613,308>, v=<240,226,45>, a=<-16,-18,-4>
+p=<2453,773,-1994>, v=<353,111,-283>, a=<-25,-6,24>
+p=<2094,-2409,33>, v=<295,-347,4>, a=<-15,25,2>
+p=<526,-1113,2073>, v=<77,-157,294>, a=<-5,12,-21>
+p=<-2442,591,-1823>, v=<-349,83,-262>, a=<24,-1,17>
+p=<-335,-2835,592>, v=<-43,-406,86>, a=<4,28,-4>
+p=<-2785,-972,229>, v=<-394,-135,36>, a=<23,11,-1>
+p=<-1100,-1480,1796>, v=<-154,-210,257>, a=<10,17,-20>
+p=<2325,1914,-452>, v=<332,272,-60>, a=<-23,-21,2>
+p=<2180,1218,2887>, v=<313,177,412>, a=<-19,-12,-29>
+p=<2374,-881,-1454>, v=<334,-132,-207>, a=<-22,13,16>
+p=<-1748,2499,-1372>, v=<-248,359,-196>, a=<17,-23,16>
+p=<1727,-1109,1790>, v=<246,-160,255>, a=<-19,13,-19>
+p=<905,1527,-2078>, v=<121,218,-303>, a=<-5,-16,19>
+p=<2420,-59,2292>, v=<347,-12,329>, a=<-24,0,-16>
+p=<2287,-1783,1206>, v=<328,-257,170>, a=<-21,20,-14>
+p=<-2664,-152,-1382>, v=<-374,-23,-198>, a=<26,1,13>
+p=<-1081,1292,-2263>, v=<-158,184,-324>, a=<5,-11,24>
+p=<2446,-545,-2289>, v=<350,-75,-328>, a=<-25,7,22>
+p=<2235,-1381,-2054>, v=<322,-198,-298>, a=<-22,16,26>
+p=<-3257,-154,-718>, v=<-466,-23,-101>, a=<29,-2,7>
+p=<1673,1690,516>, v=<244,239,70>, a=<-19,-22,-6>
+p=<1385,-2456,418>, v=<196,-350,58>, a=<-17,25,-4>
+p=<2985,-884,-799>, v=<428,-119,-111>, a=<-33,5,7>
+p=<-1513,2311,-173>, v=<-212,328,-23>, a=<15,-20,-4>
+p=<-2074,-1496,-1222>, v=<-297,-214,-176>, a=<24,18,12>
+p=<-2057,-370,-2301>, v=<-294,-52,-326>, a=<21,6,23>
+p=<-2227,-2336,-145>, v=<-320,-339,-18>, a=<22,22,-3>
+p=<2914,1632,652>, v=<414,227,94>, a=<-28,-16,-6>
+p=<-1038,-2308,1378>, v=<-152,-333,198>, a=<13,31,-15>
+p=<643,-1788,-2511>, v=<94,-255,-361>, a=<-2,21,23>
+p=<902,2772,-1464>, v=<131,400,-212>, a=<-10,-23,17>
+p=<1063,-1453,2430>, v=<156,-209,349>, a=<-10,16,-22>
+p=<-224,3075,442>, v=<-29,439,67>, a=<-1,-31,1>
+p=<-1373,-2192,-921>, v=<-196,-313,-132>, a=<13,24,8>
+p=<-3353,295,495>, v=<-481,42,66>, a=<31,-1,-10>
+p=<-1853,809,2625>, v=<-260,110,375>, a=<17,-4,-26>
+p=<78,-1196,2121>, v=<9,-171,303>, a=<2,6,-18>
+p=<3114,913,1260>, v=<443,123,184>, a=<-28,-10,-8>
+p=<2387,-357,370>, v=<341,-48,51>, a=<-29,2,-3>
+p=<-2301,-1677,-546>, v=<-328,-241,-75>, a=<22,16,3>
+p=<1126,2571,-1330>, v=<157,367,-193>, a=<-13,-25,13>
+p=<1806,345,2195>, v=<258,46,317>, a=<-20,-3,-18>
+p=<1375,2815,-293>, v=<194,400,-43>, a=<-13,-28,0>
+p=<2393,-1081,1055>, v=<342,-154,156>, a=<-23,13,-10>
+p=<-74,1914,-2448>, v=<-14,273,-350>, a=<2,-17,23>
+p=<2018,-1928,814>, v=<287,-279,114>, a=<-23,12,-10>
+p=<-89,1458,2267>, v=<-14,213,322>, a=<-1,-16,-22>
+p=<-2310,1272,-1141>, v=<-328,178,-156>, a=<23,-12,10>
+p=<1157,2183,885>, v=<162,309,120>, a=<-11,-19,-5>
+p=<-2528,2520,163>, v=<-360,364,20>, a=<25,-29,4>
+p=<1873,1210,2281>, v=<268,176,327>, a=<-22,-10,-25>
+p=<-654,-2387,-1867>, v=<-91,-341,-267>, a=<1,22,17>
+p=<1619,-1540,-1714>, v=<226,-222,-247>, a=<-20,13,17>
+p=<-2781,1254,-451>, v=<-399,186,-64>, a=<26,-13,0>
diff --git a/2017/inputs/day_21.txt b/2017/inputs/day_21.txt
new file mode 100644
index 0000000..280e26d
--- /dev/null
+++ b/2017/inputs/day_21.txt
@@ -0,0 +1,108 @@
+../.. => ..#/#../.#.
+#./.. => #../#../...
+##/.. => ###/#.#/#..
+.#/#. => ###/##./.#.
+##/#. => .../.#./..#
+##/## => ##./#.#/###
+.../.../... => ##../.#../#.#./....
+#../.../... => ..../##.#/...#/##.#
+.#./.../... => ###./####/#.../#..#
+##./.../... => ###./.##./...#/..##
+#.#/.../... => .###/.##./#.../#.##
+###/.../... => ##.#/#..#/#.#./#.##
+.#./#../... => #.#./.###/#.../#.##
+##./#../... => #.../####/#.##/....
+..#/#../... => #.##/..#./...#/...#
+#.#/#../... => #.##/####/.#.#/#.#.
+.##/#../... => #.../##../##.#/.##.
+###/#../... => ..../#.#./.###/#...
+.../.#./... => .#.#/#..#/##../#.##
+#../.#./... => ###./.###/.#.#/..#.
+.#./.#./... => ..##/.##./..##/.#.#
+##./.#./... => ..#./##../###./...#
+#.#/.#./... => ..##/.##./.###/###.
+###/.#./... => ..#./.###/###./#.##
+.#./##./... => ###./..../.#../#...
+##./##./... => .#.#/##../##.#/...#
+..#/##./... => ##.#/.##./.###/..##
+#.#/##./... => .###/..#./#.##/####
+.##/##./... => ##.#/..#./..##/###.
+###/##./... => ..../.#.#/.#../#...
+.../#.#/... => ###./.#.#/.#../#.##
+#../#.#/... => ####/#..#/..../....
+.#./#.#/... => #.../..##/#.##/#.#.
+##./#.#/... => #.#./###./##../#.#.
+#.#/#.#/... => ...#/.##./.##./.#..
+###/#.#/... => ..../.##./####/#.#.
+.../###/... => .###/.#../.###/#.##
+#../###/... => ..##/..##/.##./##..
+.#./###/... => .#.#/..#./..##/##.#
+##./###/... => ...#/#.##/#.#./##.#
+#.#/###/... => #.##/.##./...#/###.
+###/###/... => ##../...#/..##/####
+..#/.../#.. => #.##/#.../.#../#.#.
+#.#/.../#.. => .##./.##./.#.#/.##.
+.##/.../#.. => .#.#/#.##/...#/##.#
+###/.../#.. => ##../..#./...#/##..
+.##/#../#.. => ##../..##/#..#/#..#
+###/#../#.. => ##../..#./#.#./....
+..#/.#./#.. => .##./##.#/##../####
+#.#/.#./#.. => ####/...#/.#.#/..#.
+.##/.#./#.. => .#.#/..#./##.#/.#..
+###/.#./#.. => #.../#.##/..../##.#
+.##/##./#.. => #.#./#.#./#.##/#.#.
+###/##./#.. => ...#/###./.##./.#.#
+#../..#/#.. => ####/####/..../.##.
+.#./..#/#.. => #.##/...#/..#./####
+##./..#/#.. => ..#./#.../..##/####
+#.#/..#/#.. => #.../#.##/#.##/..##
+.##/..#/#.. => ####/..../##../####
+###/..#/#.. => ..../##.#/.##./####
+#../#.#/#.. => ...#/..##/###./#..#
+.#./#.#/#.. => #..#/..#./.###/##.#
+##./#.#/#.. => ###./####/#.##/..#.
+..#/#.#/#.. => ##../##.#/..##/.##.
+#.#/#.#/#.. => .#.#/.##./#.../##.#
+.##/#.#/#.. => .#.#/#..#/.##./..#.
+###/#.#/#.. => ...#/.#../.##./##.#
+#../.##/#.. => ###./##../#.#./####
+.#./.##/#.. => .#../##../#.#./.#.#
+##./.##/#.. => ##.#/.#../.#.#/####
+#.#/.##/#.. => ####/.#.#/..../....
+.##/.##/#.. => ####/##../#..#/####
+###/.##/#.. => .###/##.#/.#../#.##
+#../###/#.. => #..#/###./####/.#.#
+.#./###/#.. => ..##/##../##.#/.#.#
+##./###/#.. => #..#/.#../####/...#
+..#/###/#.. => ##../##.#/...#/#..#
+#.#/###/#.. => ..#./.##./#..#/....
+.##/###/#.. => #..#/#.../..../.#..
+###/###/#.. => ..#./#.##/.##./#...
+.#./#.#/.#. => .#.#/.##./##.#/.##.
+##./#.#/.#. => #..#/.###/.#.#/.##.
+#.#/#.#/.#. => #.../##../#.../.###
+###/#.#/.#. => ###./.###/###./....
+.#./###/.#. => .#../####/...#/##..
+##./###/.#. => ####/###./..../....
+#.#/###/.#. => ...#/.###/..../####
+###/###/.#. => ..../#.../..#./.###
+#.#/..#/##. => #.#./#.../####/#.##
+###/..#/##. => .#.#/#..#/.###/#...
+.##/#.#/##. => ..##/..#./..../##..
+###/#.#/##. => #.#./##.#/####/#..#
+#.#/.##/##. => ..../.#../#.#./##.#
+###/.##/##. => ..../..../.#../##.#
+.##/###/##. => #.#./.###/#.#./#.##
+###/###/##. => ##.#/##.#/.###/..#.
+#.#/.../#.# => #..#/.#../#.../...#
+###/.../#.# => ##../.#../##.#/..#.
+###/#../#.# => ..##/#.#./####/.#..
+#.#/.#./#.# => ...#/...#/#..#/#.#.
+###/.#./#.# => ..../####/.##./.#.#
+###/##./#.# => #..#/.#.#/..##/####
+#.#/#.#/#.# => #.#./..#./...#/.#..
+###/#.#/#.# => ...#/##.#/.###/.#..
+#.#/###/#.# => .#.#/###./.#../.##.
+###/###/#.# => ...#/.###/.#.#/###.
+###/#.#/### => #.##/.#.#/...#/.#..
+###/###/### => ..##/.#../#.#./.#..
diff --git a/2017/inputs/day_21_example.txt b/2017/inputs/day_21_example.txt
new file mode 100644
index 0000000..f6d24df
--- /dev/null
+++ b/2017/inputs/day_21_example.txt
@@ -0,0 +1,2 @@
+../.# => ##./#../...
+.#./..#/### => #..#/..../..../#..#
diff --git a/2017/inputs/day_22.txt b/2017/inputs/day_22.txt
new file mode 100644
index 0000000..1343456
--- /dev/null
+++ b/2017/inputs/day_22.txt
@@ -0,0 +1,25 @@
+.##..#.#.##...#....#..###
+####.#...###.####..#.....
+#.#.#####....######.###.#
+#.#..###.#.#####....#..#.
+####.#.#...#.##.##..#.###
+#.####..#####.#.#....#.##
+.#.####.#....###..##....#
+..##.#..##.#.#.###.##.#..
+##....#....######.###.###
+.#.##.###.###.###.#..#.#.
+#.##.#.#..#.#.....###....
+####.....#..###..##..##..
+##....#.#...####...#.#.#.
+...#.##..###..##..#......
+#....#..##.##.#..#.###..#
+...#...##.##.##...#.#.#..
+.##....#.####.#..##.#...#
+#.######......#.#...#.##.
+#.##....###...###.###....
+#..#.#.#.#.#..#.#.....#..
+...##..##.###....#.###...
+.######.#...###.###.#.#.#
+####..###.####...#..#####
+.##.#.##...##..##...#.#.#
+###...##..#..##.##..#..#.
diff --git a/2017/inputs/day_22_example.txt b/2017/inputs/day_22_example.txt
new file mode 100644
index 0000000..3105a0b
--- /dev/null
+++ b/2017/inputs/day_22_example.txt
@@ -0,0 +1,3 @@
+..#
+#..
+...
diff --git a/2017/inputs/day_23.txt b/2017/inputs/day_23.txt
new file mode 100644
index 0000000..9d29443
--- /dev/null
+++ b/2017/inputs/day_23.txt
@@ -0,0 +1,32 @@
+set b 99
+set c b
+jnz a 2
+jnz 1 5
+mul b 100
+sub b -100000
+set c b
+sub c -17000
+set f 1
+set d 2
+set e 2
+set g d
+mul g e
+sub g b
+jnz g 2
+set f 0
+sub e -1
+set g e
+sub g b
+jnz g -8
+sub d -1
+set g d
+sub g b
+jnz g -13
+jnz f 2
+sub h -1
+set g b
+sub g c
+jnz g 2
+jnz 1 3
+sub b -17
+jnz 1 -23
diff --git a/2017/inputs/day_24.txt b/2017/inputs/day_24.txt
new file mode 100644
index 0000000..1fbfe25
--- /dev/null
+++ b/2017/inputs/day_24.txt
@@ -0,0 +1,57 @@
+42/37
+28/28
+29/25
+45/8
+35/23
+49/20
+44/4
+15/33
+14/19
+31/44
+39/14
+25/17
+34/34
+38/42
+8/42
+15/28
+0/7
+49/12
+18/36
+45/45
+28/7
+30/43
+23/41
+0/35
+18/9
+3/31
+20/31
+10/40
+0/22
+1/23
+20/47
+38/36
+15/8
+34/32
+30/30
+30/44
+19/28
+46/15
+34/50
+40/20
+27/39
+3/14
+43/45
+50/42
+1/33
+6/39
+46/44
+22/35
+15/20
+43/31
+23/23
+19/27
+47/15
+43/43
+25/36
+26/38
+1/10
diff --git a/2017/inputs/day_25.txt b/2017/inputs/day_25.txt
new file mode 100644
index 0000000..892ee98
--- /dev/null
+++ b/2017/inputs/day_25.txt
@@ -0,0 +1,62 @@
+Begin in state A.
+Perform a diagnostic checksum after 12667664 steps.
+
+In state A:
+ If the current value is 0:
+ - Write the value 1.
+ - Move one slot to the right.
+ - Continue with state B.
+ If the current value is 1:
+ - Write the value 0.
+ - Move one slot to the left.
+ - Continue with state C.
+
+In state B:
+ If the current value is 0:
+ - Write the value 1.
+ - Move one slot to the left.
+ - Continue with state A.
+ If the current value is 1:
+ - Write the value 1.
+ - Move one slot to the right.
+ - Continue with state D.
+
+In state C:
+ If the current value is 0:
+ - Write the value 0.
+ - Move one slot to the left.
+ - Continue with state B.
+ If the current value is 1:
+ - Write the value 0.
+ - Move one slot to the left.
+ - Continue with state E.
+
+In state D:
+ If the current value is 0:
+ - Write the value 1.
+ - Move one slot to the right.
+ - Continue with state A.
+ If the current value is 1:
+ - Write the value 0.
+ - Move one slot to the right.
+ - Continue with state B.
+
+In state E:
+ If the current value is 0:
+ - Write the value 1.
+ - Move one slot to the left.
+ - Continue with state F.
+ If the current value is 1:
+ - Write the value 1.
+ - Move one slot to the left.
+ - Continue with state C.
+
+In state F:
+ If the current value is 0:
+ - Write the value 1.
+ - Move one slot to the right.
+ - Continue with state D.
+ If the current value is 1:
+ - Write the value 1.
+ - Move one slot to the right.
+ - Continue with state A.
diff --git a/2017/inputs/day_3.txt b/2017/inputs/day_3.txt
new file mode 100644
index 0000000..ce15bc4
--- /dev/null
+++ b/2017/inputs/day_3.txt
@@ -0,0 +1 @@
+325489
diff --git a/2017/inputs/day_4.txt b/2017/inputs/day_4.txt
new file mode 100644
index 0000000..b9f9e0e
--- /dev/null
+++ b/2017/inputs/day_4.txt
@@ -0,0 +1,512 @@
+kvvfl kvvfl olud wjqsqa olud frc
+slhm rdfm yxb rsobyt rdfm
+pib wzfr xyoakcu zoapeze rtdxt rikc jyeps wdyo hawr xyoakcu hawr
+ismtq qwoi kzt ktgzoc gnxblp dzfayil ftfx asscba ionxi dzfayil qwoi
+dzuhys kfekxe nvdhdtj hzusdy xzhehgc dhtvdnj oxwlvef
+gxg qahl aaipx tkmckn hcsuhy jsudcmy kcefhpn kiasaj tkmckn
+roan kqnztj edc zpjwb
+yzc roc qrygby rsvts nyijgwr xnpqz
+jqgj hhgtw tmychia whkm vvxoq tfbzpe ska ldjmvmo
+nyeeg omn geyen ngyee rcjt rjuxh
+qpq udci tnp fdfk kffd eyzvmg ufppf wfuodj toamfn tkze jzsb
+rrcgxyp rbufd tfjmok vpyhej hcnz ftkojm
+jnmomfc jnmomfc bkluz izn ovvm flsch bkluz
+odisl hzwv hiasrhi hez ihihsra qpbmi ltwjj iknkwxf nbdtq gbo
+gjtszl gjtszl fruo fruo
+rdapv gaik cqboix sxnizhh uxmpali jdd usqnz advrp dze
+flooz flooz qad tcrq yze bnoijff qpqu vup hyagwll
+lnazok dze foi tqwjsk hpx qcql euzpj mwfrk
+ilb fmviby ivybmf gtx xtg
+rpauuu timere gyg wcolt ireetm safi
+croe szwmq bbhd lciird vhcci pdax
+hnc ykswt qqqmei goe bri wmyai hnc qpgqc pberqf bzs
+hsnrb wdvh iezzrq iezzrq rdbmpta iezzrq kemnptg alkjnp wymmz
+ngw don ddvyds nlhkoa aaf gptumum ugtpmmu
+vmccke qbpag kvf kvf tgrfghb kvf bhpd sglgx
+obomgk bkcgo yso ttft vbw ckl wjgk
+fli qvw zhin dfpgfjb udsin nihz ovr tiewo
+tgmzmph hauzieo jmg tdbtl lvfr qpaayq qapaqy ausioeu jun piygx
+jkp guqrnx asdqmxf vmfvtqb tloqgyo ioix gajowri tmek ilc puhipb
+uycn zxqm znft ayal znacus kvcyd ekv qqfpnh
+fqghur xtbtdd ztjrylr bpuikb ziyk
+rvakn uqbl ozitpdh uqbl dsej xehj
+laxp haz jyd xnkrb ijldth woy xapl iqgg alpx gnupa ukptmmh
+dyiy dyiy ihb qcyxr
+wbwkd hdwu zvgkn hdwu wjc sakwhn zxujdo npllzp uyr uyr
+fxczpmn cininu akcxs ggslxr riyxe ojisxe
+ppbch sampq dnct afikor dnct edsqy pnzyzmc afikor
+jnvygtn hijqjxl vsd jnvygtn nqcqv zns odq gkboxrv kolnq wrvd
+mroq mroq flsbu flsbu
+fyshor xvpaunj qmktlo xoce wkiyfu ukcl srndc ugwylwm ozcwdw mtqcste kpokr
+cfh cxjvx cfh cfh uewshh
+bpspbap bpspbap fquj mxmn bwls iirhvuk dmpkyt exrn mxmn
+tvyvzk ezszod ntxr xtnr och
+knfxhy kbnyl knfxhy xhkssx lxru uprh nkxpbx oodolxr tpvyf
+nblmysu iwoffs upgof tyagwf aan vovji ajk ywzq oyfi sfulz
+aushzkm lcaeki mkuzsah ynxvte rsntd refk pcm
+mgguob gobmug dzenpty gmogbu
+yvq eepof rgnree nerger fpb stfrln ernger
+hrgkbl mzwvswk rsrsbk ieru holco pajvvn ztgsr qkyp fyeg owpcmoj
+fowda gmsqdca yugj mcrroxv mqcbojd fjnqfji qdfsc jqs
+qnc rvjfz vvxk sjd xrma ucdjvq sbw zydyt dfzww
+ocajazv cozaajv tqunkla udwf ecnnmbz lsakqg bki njnda zsdu ccfqw rxpc
+qqm qdfya qxyx qmq qfday uqnfttt
+rnbirb iapor qet iapor hxkhz dfvzig pedl ybyb
+mkgamxg xkniv meb hbzmxjn dhbj zhbxjmn hdjb
+ilteux pyutyfx mau lrr bacak
+sjjonmn dbbbgs crxyuu jztstgd ezb uiabyaa
+tra fle ufzlvf nnaw kec hiwnnlj tei wld iyt syk hjdczb
+qmd jtlud dgh dbanock fzp dsjgqru wwvo jwvxwgv xlemfij jcacd
+rpkx oxesil snazcgx fly miiyc ikmtmp oefyyn egbw
+ypfpeu wldnyd acchppb yqwcaw wldnyd turbz megci nbgxq xkc ypfpeu
+iqqv iqqv neui iqqv
+ypsxm icqyup zyetrwq nbisrv
+viommi toszx dpueq eyy cunjou ffcjc jaeez djefra pxvkj liudlig yye
+fhnacbg jghchh ghjhhc iue hwqmo
+vbjw lpn cizba ltnsfpz tzoweml irewlc uzckhpd mszal obd
+yeos utxkft hflxkfe fxczge qpgigkc ksgr vuumql vhlvv
+xzmkv xzmkv krecdi klpem jsbu nwcmik emfzxf cjmpgnj
+vtkjo pmiv zou gxo qdiyxsf hwyinjk jhkgf rjq
+dyuoc ywiyvch irfgl ywiyvch fxb fxb
+tuz onhr syu rqya abkaf bcfx mbknex juwoor zmksl
+oheg spjorx ksdy vwtq fxz phvtazk tcze lrxg
+hew lbup botaj ltr jpd
+dxgc tzinkej gnz hxvvub adsqmc dxgc asgpp rqbdcra goy pmamdua bhiacva
+xqv ygb kihxqz vyv pjcny vmyvsdv cgsi nfyx
+tqga ssshrw ndq qlbvwh huyd pxbgj qbxk dkkbf jxy chsobw pph
+hxl iwph iwph xnr otifm ljhre
+zlgvpd kapxpoc dve rklk ogh hgnp rbrmc zzkz hhmcx aklmo
+sar gfor nkf hek nkf aql shc aql
+dtcrw kfjzcjx qyhi bldson whwdayo mqtgt xhqzp ttqmg
+omspdml isze jdl nvwo qrkm wztfg ssfgyh dryj jhp unsmty
+jxt cszylng ifht ixtuna azoi xutqlv jtx tjx
+usgm azuayp fgkby ezpyq jqwl ezofj
+tnhvil nrvg moyrpqs sldx qymoff megflxh pyhqwms xmdw
+zomy zcquwnv lzx bvcna yods mjp dgsez
+blklyf xokd gpit tiysj yrwfhm tofx
+dtig vhdp omuj vhpd
+fogwxim qvdwig emdiv jvhl euwbzkg xvxb hwmqo ujdmlp epmykj
+sjxll sjxll pedvgb sjxll
+drvay gtzhgtx yrt okz nqf
+haxfazn pvkovwb pgu tgshw mxcjf pbe nwoymzc mxcjf pbe hydwy jradcr
+prjsloa ahylvj okbsj qbdcdjt pmfo pagyoeg vkmhjzt khzmjvt opfm xfrji gyjqyel
+lzypt jdbtrad ogr jdbtrad heink
+rcoucuq gdxewa rcoucuq whlw zhhm rcoucuq azaqohe mzyli rdvaf
+yuag ebcf yuag nsotg qqzuxr jfmao vyucw wmoye
+qwvk xemm hgqrr wyxkpp tojndm xlvzypw jus bgnu bgnu nklfwhs
+daqi knenmku ccm xkiuy vkexsbc kvvdagx umopitw yaocnx yoakqql mllmsp
+mrxgl gywit mfopia ncnsvw vdxek axuiot rsejua nei prndudz mnu
+egqn gaa qgen urs mix zbn rhn
+ewharq aihy udkdaob kgrdd kgrdd kugbjtj fcef llqb pduxaq wcexmm
+dwtiw nelq hppad algxgf gcc upou akm efnb mxmhrud
+yxqaa ups okbhgt iet qns tqn rnjqxgp
+npmhdm cgds ldexvr typi jyivoqk zkgq vfyxu xgfo
+dkwnmr umm dkwnmr okpjw wqx jpztebl eqsib dkwnmr
+dxbild wpbup evscivq dxbild dxbild geqp ojfbpl jshvqej
+cxdntxs csfocjd pyy tuhws teb boyloz xfw scxh pxhonky
+lteucke xrgwy hszgzu hnyrcvb
+pfgsgwg dxzh fworek qbstod
+usemcrf psczxu gcjtr brls
+hjol efxczux bqdn gvrnpey yyoqse gbam ndzyj lbwb bhzn unsezg
+bapw xifz blupk qqdk bofvqpp wnbuwyt rnwocu lzwgtt zucag pov
+xkre lqvd juf lqvd xio xyg xyg
+tzdao ztheib aymcf aorg iyawrch hetcxa iyawrch czdymc ccv
+ucgl azlppu jvxqlj pest
+dvwlw fuuy mnhmm okrp ualnqlm uyuznba fzyejk yaq crl ctprp
+odfq knox mkbcku pxucmuf lpjpol phl
+ixongh hfs ruorbd auy qyssl kykwcix aytsm rlj aytsm duq segpqhk
+izufsk wedpzh podjkor eamo vqvev ifnz podjkor xrnuqe
+twyfps bmdbgtu qye qkwjms
+wlav htym vhsnu cocphsj mdsuq vhsnu jflgmrp
+opajag itwjhfu purnnvk opajag
+hpkopqp vnj aialpt lzrkzfs nwucez nwuezc
+mcx hzcjxq zbxr dsx tpknx fva
+rlvgm xrejsvn ghawxb efyos xty wdzdgh olahbtn rga efyos vhtm nsr
+cni mbab qtgeiow ulttn rckc kmiaju jvbq emyvpew cdlxldn ulttn brhkprx
+eykpffp rapik qki fhjgdyu tome ehjuy bibjk htxd vexvag
+wrk dpxt gwkuiov gbkif ike gbkif pcd wpj toywyf qzsa aol
+yqwzh uujn ujun ujnu
+srs ralwxrz yxvvmgp sjhbhk waasid cqtxoxf whcladv jkmaq khjbsh dlavcwh
+mdvsjh xaj etvxlsy fxgiy rgjesel rlegesj ptriz ebdyhkp kugxm dxv egljser
+lhehwrs mqevb ygmv gri izop qgb ivm
+loqqam alojlwg hgen hbyw qlwpun loqqam worgnwk kope
+phozre todsknr todsknr ibj mvllsar
+wuripy ruwlfbh wukbkey qhq iishw tvtvci xawvxc vxacwx hsiwi ogq
+xryq vxwupqa zhqex aquxpwv bnvxrba dtbxki
+yvvwh zvsm vqskhp vqskhp ggqqlw bpn wbuv
+kqz tdy goqwge ygn jgd
+szjjhdk zkpoo nxexz ebicc
+wzuemcj oyd qupulju iaakzmt vzkvz
+nppahov umm wpzev wxkgfxd owgekp bhhb bbhh dgviiw kdfgxwx wryb
+bnc rhes lmbuhhy kwbefga bnc rtxnvz bnc
+ani mggxf mcoixh zdd nai hbhzl mes bdpqr
+mjn uinoty jjegvze bjgqg yhqsxbt coj obylb hddude xqi rhfbhha alood
+cbjzj drmihy tfkrhsd nuhav hihzx bvblqpl tdd szmp gjgfv box
+uumhdxd cmwgyf vepr rwqdkj exwk
+hwvr ydvw bqefu kghes gvbhp awms iqsqes khgse
+mrey jqfw fwvzhps komj dayvs fbui zmtd cofn mrey
+dsjds fdpx irjj usndok qcctsvf fgk wvg txwxcl dxs llp zyilwtq
+xmkelgk fdukc cye legkxkm wwly
+enlny eynln cccku brkz dpof mwfoxcd yftmnqh wpebvyc
+ggdn jnysl dsacffw ukj hdae cmzxku
+uqhm gcachmn kxndfrl htmfis jfnajz fiqiypr kekho kekho ndcw ckrndub dejfna
+keazuq ertql rauwl keazuq obmh rauwl ksrotm
+jppp poigqhv repfsje grjk xwkyuh pkx ayzcj hoxzv
+yhjw pcuyad icie icie icie hwcsuy wcd yihjh jnrxs
+gaug ivvx ceb xujonak hbtfkeb ttciml cctoz
+dggyyi dggyyi gqlyumf yasu fwdfa cbb nncn verhq
+rhgcw gpcyct kiuhbg kiuhbg gpcyct jlmleo nhumm
+wulxxu jyjek hclcp ogob viex wiqcupq
+tthu nxgzpid kcnj mss ukapgkp nnc bxjocv qwxs oejwsif aywqtu brahkb
+dtde bgvb smu vbbg zhlu
+lyo nwjjmep ldbok wgxhto wwuh qfgjknk wnsl
+lleyr onha hkwulbm jfg
+bybjwd uoxvbh mvj iqfpnxs bybjwd zqtszp wvc lbazjr zkzenja cev
+rbuyyr divtslq yuqmyt ajyveb smxsjb nlk tzqhq ims fewg wpjhr gqh
+kpewfd beq klilis klisli eeezut
+euqh hueq ldoo crqurv lvrwh tmaewp oodl
+bqi lzrf jyhvxfh bqi jyhvxfh nbztd lwpdn cuzi
+srjylou phavzjd wost uxkaq byh sluryoj
+ihrdk bcegkpq nygrs qbcq wyjg dvzme pgzhjl vibg kvv
+ijsx iedemek ktlz gtga tbal lbki gtga
+vmiaxn kefig kefig vngxz
+vrdmfvi qts vlvhq vlvhq dihmq
+cfz dyrz zlw qnt vok fwvahg skshbqf hbwozdc ntana jdb uflp
+rimbj bxemw sfps krtk umta vnk ewmbx nrlje ymrtqrz mxewb kjxunbt
+egnuti ozat eltl ngueti
+qtcwoxq rmaf qtcwoxq qtcwoxq
+zws gcoa pydruw qsrk lrkybdf ugr wkrxoj nyvf vitwn
+tmr hhd dojid zwrj bhsim righ keqlep flzunou
+lwoquvy acjowxk tqudk oenvioh nyavyl
+rgh dfhgyke iff cpxhuz hui koe iff hui dmukrei
+bjiumig lcbmbgh vleipx sfawua rnf
+gftfh qwb tfdroe xbno qhgofm vqfoe mux
+ljdrr gyfggai iun nju xrucbis mhrcrh fukr obvuqc whlalfe xrucbis nju
+nxjmjr egqwg arllu xqaahri lzc ivt uhsti
+sqiepba rcmts kvesv nvp
+tiksw tiksw rjni gbhvzm ctbq zuqfyvz
+ibsnm kfka aoqigwo sqouih rxz
+jmymq lxio adtmk umyu sxvzquq bporqnb heol fow
+mepa eckq rqviawv dkqoei ifmngpp jiava rtklseu
+yuycd jiufjci yuycd uowg yuycd udq izkicbr csxobh
+nwu tfsjavb rruoxbn oepcov elxf rruoxbn rruoxbn azglwth jcjm ksqiqpv
+dthfwip zqnwa zqnwa zqnwa
+gso wruece ufl crgnlxv vllsm dpyfm wpa ctxko
+wvpze seodz lpq lpq pmtp wsxs ffppx
+yfxquj phvjn rtwieq rtwieq kgxztyu vbjvkc prqqd lyzmdo ojbrt ojbrt qiqjz
+esaezr rpggiy jey kbzrhu uthus osr xxaiijd qfxlf auhzbx gkigoqw
+yfhcj uvgck cds gjhhrg cmempgj yfhcj cjb
+yxi voxvtuw unwg jqqm
+igvjr ljz rus sru gbjtjt qfeg ztu zjl
+leof ocxns hbkoysh hbkoysh leof
+hab lyxmf yhh qeks fwhfxki xmbcak okqjii nfgzyg bhtfgdj lpmjn
+mgognh tad herere lvwnzx ixwqs zphmuuc etdjz kczsf
+mtej rlolsnn zbl uykek dpkan gmz etxtgj
+mihuieo emjgbp jgks mihuieo iexrfw mjdnr bvp mcuzea xkbusvi
+jvqpj bwt jvqpj bwt gxr
+qpnd fpt tpor bibbpcg hmvguez wqc afl ckviua gpi
+dntmcg jglm sxtnu sxtnu sxtnu
+fzkbptw cbfwo ozvwov wbv gcdd izqo ovwzov lolewo xikqpw
+nkxyxzd kpn datf fki werq mwidqx oiibor zizcjph
+xvgyxym zor ijoy lvwsf fjuara idvvq rreit mqyyy ctio tzwqqhj rnpee
+maqkfpk maqkfpk xukg sfdmnlg xjopvr xjopvr irf
+liujcd vnlkouy dxkwc gto vhjvtw
+swhqhj cas aupsd swhqhj cas bvbooii jquck dtdm
+igh iqicicf ghi pcxt srcrjx gmf gyscphv
+drplj drplj wopgpnk wytag wopgpnk
+zexe ilcqoh qiefb txkuv lirfzv
+ovvpn ovvpn uqeurqx uwzn hgmucj ovvpn sjxulms
+rox silka irhsvym kutus otasof tdneav pcagds
+mkja omu tyshbfq onp trxs lxa tftbv bnpl djhnc zdqfs muo
+tjj rmmqas cbbkxs qio pikk ykyew gxlxt nhsyl ykyew
+frcprg njrz oaxcmhc qben pedm ecvtga nzxwpb ior gaklot dpem
+zyt kncau spoe qlchg sqys wkpbng yflju qlchg vkve bzadbpa
+qtq pkaicl qtq mfkfqvr dnleiq brrjxsx uoyxh pkaicl yvmlug
+firwy imtlp ywl qfa dqrbazz ztzb pcsbwhn zesmlag
+ivey ivey mtvc mtvc
+lhize acwf moa cdeoazd voktshy qmvqq jvmuvk ljfmq tsanygc
+xreiqkc aawrovl pofcsg xreiqkc xreiqkc
+cjbzvn ozds iniqu sdoz gqmki bablvll krs vjzcbn
+izsod htkeqz entxn qtns prpcwu omfnmoy
+kwfb tctzda aztctd tadtcz gyt wunbcub ydiwdin xxk
+epnl ijcp giq ltfk zjcabve zfksmz epnl giq xxxbsom
+ulyukpa mdjsbn dydko uhkdt qms aaaj hustlwu
+zlsbu ohx jcwovf egf zlvpqgx qhejm wrywdmw
+uhxqrzr mmu kjxcalj unuohiq rri yzngnb ikvlxry mfiym qbksdx
+khqciz som yklmm jceb khqciz jspy jceb
+ncwggv njvi nqox krtsn lnm
+bgtqme xaxcoq qbtgme obqual vorfk baoqul lgrb
+jli tsbb nlxjc pkwzmz dlxrj hmho gzguko ilj iyaasm
+wlmw grkumg dynwtyo emxhhqr huluk slpqu uhqcmd absmr ufirmwr
+pbs pcammxv dplfr tzvmav nccyy blvyq ffhnz bccutq
+hgge ghge vxmvz hqxgjdg zab guo gheg
+ylj bucoyoq udndc wpgyrbx ueh udndc gxdsdh hdoz wwgqlg
+cjdeh gttyqe kdkm ltzd lfeozse quvjq mnwhokm kdv oojxm nxt
+mfkzus knqxt saxkqww njx zumsfk sbmcyad cpt agvbuv
+tukn vyco yobvsn bzgnn klrnzy kea thzk pxpwq ryfff nxzm
+ylbm lxlz lybm lzxl
+wgtxoij zad slgsi cvnxfg iomswwl vmx
+hkm yinhnkj kmh kwkw kayknck chur styjif yknakck
+rtfwhkq rtfwhkq zsf zsf
+sldq zlntr ueegiw kajivqc ozcbm ceft snvugom pdyc elppeed nnqrp prwwf
+lhk xjonc muc tudag tsafx mmivb dvrjbp qgrew
+hnzer fbgqp aazta aazta lxaz lmgv aazta
+victgxu victgxu mlpd ummrnbx cazjgnw isxcyp efy zfa cyusj
+gyojxo onzq gyojxo uxufp awi ilhl wefwfxr gcjlt tmliynw uxufp pdcnxah
+wjwachn xkuhfbp oky oky ybaeqkr rbuix yreoaw wepmye brvon aasb
+kiidorw vxtxiqx wtqvbrv efdth isel qbom vcssyc vxtxiqx wtqvbrv riafzsw mqzsj
+eurpjd vkhdamt tmfx czeoot hiz ykz lmixzq tfur jhzr
+ipuftpj qbll sqkkdw fwncmiv bri oeeh lehd ioh wag
+suima nanngc imrmc krq atxdo woy atxdo akev qlr aezco qlr
+cfc efwbzck ozkmcxv moczkvx ccf
+bnekky iakrk sask uwgnjp iyi rynev bdnas ldh kass
+sicmw vvjbvv cap nsumc xgvrlm wsoo uoqdu psykckm
+ugg mtr wnzhmmh tjxc ehwnji lwhu mdsckk yvmk enubrqo
+grb oxmxz ohu ytetedv ssx apzlppg fdkamm sxofc jdt ynmu wyejok
+umoep rbyqm eqfk twqnog cptbbi dragna ngqs ffb cexxnc rbyqm
+utizi ormkel wvwur bdx ecelqbv xiccama aag glfvmj
+znb rsuqoa uxo svc
+obs lbifa cffi catpd
+qkxwian ajlzjz wewduzp bbyv qmt fsr qgiu epinp ghmf
+hatg bfgmb aght ghat
+kuq inp dun cknbun wmwsu drlmmg kyxc bdl
+bddybth swdbf jhi fva qpobio bjwm wjaztp jywi
+mgckz vhveu zkemhp zdf xtiqqew mlx wazgd
+umbjq pya lvvxf jeavij rhrxvew bwjqgpr piz
+xaycpwo vjcuc qksc yuixhni sfbfb dydyaq gdfvb tggg xidphvf bpjdrl goskxym
+agxfoip gguif wvo agxfoip ntkbaw fbyggy ooft zxih
+nzvsu ffwq uxvfbl qrql olhmhom qhdltg ymwz krtndtx olhmhom nfsv krtndtx
+qdp jqk ustz xjripzv mnk grnodk pjwdsj uug zqxjqj
+mufrcox zunisfs ocvcge acamm xua vor bsde kxr vor kxr orccxx
+ncycbp anvcxay bmm wndmeaw oso knmk mmb wamenwd kmkv ppdd
+motdcn xzagzwu vuzt utffrn yuqxzrh uvzt ujttq
+tauoqy coiy ybesz tauoqy wpmr trquyne ahxbj jzhems dsdy
+aczq ypw pgmzz srfn quatjgf
+cih ypapk bfxvr euvhkk gugru auhqui
+vyf pssgfvy dnhvbfl xpacme dnhvbfl mzdv iynq hcqu
+lbzvbu hhxiq hdfyiiz iyzihfd xhqih uzdqyxr
+iapbdll vdr cprmrkk vdr dfjqse mlry flpqk vdr
+grrfkq xcpxd grrfkq dxc bjpr prvwh swoc swoc
+bopo chvwuhf qhd ieesl xey ieesl fnjcbe
+kic fyq hsucnu agwyl pzzmd hqksh psw
+mxf uau iti lcoz lpg zbu ocre wqlocmh mxf nidqj lcoz
+bypmix ptzxgmf xmtzgpf hrvzzq
+lbfw zwusma lbfw tuyyy
+lrf uej unswvh obgsb npbl zajr kenea uej qnyjcu wzufim qpzkgya
+qcrxj llyu kligt hlm ehwtbx dda lgsvhdt xewfcv uikn
+nfzjx izqdbq mfbxs imiuc yqxb xlmvix izqdbq eflqfq wku omgtuu izqdbq
+lasdwg hiy btzt eefd eyoep icn nnmhg otml rek luixac nyzgn
+vekteds utsuxdx utsuxdx vekteds
+feyov qrij zbebwg ijrq seplram wttkwm zewbgb kzuhuh
+dmkgtv wohgqo ddtqmv zatahx mym hqowog tkmvdg
+vhha wjrmuyx kqh vyyrj xzchbi ejsdq orlxg vyyrj dlrc
+yetngqn zdtuqox hkarjei fqpsgh eaqwbg zsssog ghb gddqqzr hbg
+obldb zsrhz zxp uxphnev mwnbc pfjft fms xwslk vjm fxy
+nfij dbfykv ttq gyjgac igxuyqi gtiioqx ilhdex dbfykv uyp bdiwya gqf
+pffzruz vogfosh dcs wje
+pohhf fhpoh oon yyz
+xxuam afwm qxl lnt syyr bwxhhf sozauq shlhfmz kwnn milav ochq
+wefcqrt gejw cwerqtf fttf gjew
+jfsvnmr osca epwtle pgfif sxom
+exlfzmq nakp rgdnx rrcvth vhrrct aajjdrt ryyg dsozd jdqlqj pakn iruv
+rmcvo txszcs xxhyxz hbsozk wshkocf rmcvo rcbnt
+kitz yjgney yvkymef nauj hmllsgl kyhm kqr pzsu rcf pzsu qpte
+cdinpx bfur mkj naz ihkheyr nohhoe
+ylris xeqcgup wap bbfih tgfoj
+ina gnlnm zyeqhij cudfuf ipufae bvkdzni aat teqsg cudfuf bjokrbl teqsg
+aedx edax dnfwq qndwf
+rdngdy jde wvgkhto bdvngf mdup eskuvg ezli opibo mppoc mdup zrasc
+qcnc iaw grjfsxe gnf gnf
+zbjm snznt zelswrk gkhlnx dqxqn qqxnd dmro
+zisecvx ztezof uzbq otnrtj qsjzkwm ewvcp rlir bfghlq tgapdr qxmr
+ipnqj opjf vabyoe wkwnd
+wyf mfqxnrf apm snarf jqu aaghx pwecbv lvghayg
+acncv jmmbwlg oiphlm ifuo cvt
+pvmb egansnd zmh gcuzzci rrxpslv ubith
+uoleptg xbouzn xbmg cfh cpn wpqi xbouzn xtxis sxzpns
+rilybri kurbpq vfmjpck tjyogho hfyxad svfofx lfbbhxj khaerfs iqr
+seaebgz wlmtkre qguv qguv wlmtkre
+sgo edkxya zdqgwtt gxu nibuu rairqoq mzxli dci qsv
+tsol mdhzqr rmaqnru ggvcq arbwkn hlkcnj ljkcuof
+mmliphp ocup puoc eijjv
+gmajqpb ijki ijki kvz
+pmqss unhlpcj dlkll nuhlcjp expe tlurzmv nsy vlumtzr tgseozl
+gkvaoni hsba hsba viuedv phyoclp fdq phyoclp febld nqfs
+rxvdtw abn pntv qrqfzz slsvv abn lrxix mnu npot
+ghlfjp woy xwkbmv bkahpkj jve cncvk jvdype fwgvoju yrkwjp gwfvln mvkv
+kmluh mie bby fwer chsinb ojglqr nqk mie
+yzmiu igkgca ybnsqja jpfejtp yjddy xsosxfi ingx qwuhb emrkwpx idqjmmm
+btrllw mphm dkvo ewdl dchcul yah btrllw kmqi mtvgk wtb
+hxsgard yuikc lykt tdee adprp gpougod klnzk mzsmlb
+hdn znblw ifoblur bwzln dbv
+smofpbs vjuyiro llk lfzesga tybu tybu
+gffnpug xaup iqiyz fjkpnkz drrk fwyxw lwzfskz gslwpmv vjxylva tbkyo nib
+evydmb nhwuiiu fkerq nkgbuyy uclrs ydjgglh xhotwbm riirgzt
+bsub eavbt uvd dpzwyt rhn khrbptt xszckc djnfxju axofhat powmso nvdffrv
+xtuykl fjz mbikc xpnx hmey fjz fjz
+rkls nwdcsyx rkls rkls
+tygml untequ ybdfumz nqffbq uipc sove hfnqj
+ytecew vven koqn royynd qsn ksl qsn sdw
+hknlw qwho whoq oqwh
+lzmmtqu qvhyeo cnofuj utpwkjz gnirz yhhu aodbnd
+zsr axw kwtzcv tydzo kwtzcv lkxsm
+rbjtqe nihifd gvdxd bpxzy rxteky vgcgllv vbbua anygiup rqo
+dpd wblfwp wblfwp wblfwp ygahc tqjbaq
+gsw gsw pacgj xmrcz zmxhmch xmrcz
+pdq rhe xqmq lgpkhg fyffrot ovnqh wle
+tbjavke ypzzrj jizx gdxoh icjsat otfh fmygumv
+snch nxlgjgp jeyn sxoqfj jtage jtage iuice
+rtb coefuj grwg grwg rtb krhqnma vfhgbr
+vhegtl btorwxg szcev kbvkx itsk nlzpbed
+hiukrf ilzkm yllhh xsgwkdp zyy kjbv
+rfcg tdorci zcj wzftlv rfcg rfcg
+lgbc lzizat vsno pau nvv vsno bbr lzizat qhtb gwp
+sfwnio tcugjk bsfsz ykyfwg ibkap fsrvy mygk kzunawx zyhyh
+mpavlh qps bylh lttjkz rqabgk vewb bwev tlzkjt gzrbxga ktmso prpkj
+gpf ims ynh ffrs vpa iemp gofh cgbauje
+secys qks mcnfhwh drog kqs pajy zoltkw lfihnb myb ioxptu
+ytq nrta ouk ajqblf yuwwcd zdy blyoxbw dakk nvgi bzrhzaa
+nkoych sufiia xkdvw crtldee zycl qblab egqhr qblab
+nllno muxaf vds qjnitmw zkpj wskyhft kmqct xamuzpw qcai cdjtbt kaxv
+qzdytpe osr fuw osr qzdytpe whperd rydwdcl knoa
+zkdznhd peh duoygr zamrgl irnvj otpe pltpq jdkecg
+byzgw rece iigdug ehif tpgje
+ccnn foqdran gbctca tefdjxh ntcr rjciii xip xlss crl wvvhzqm twyohf
+dqyii milqqc qjgkojp qjgkojp ryde
+tdkyj tbrcud tsba vqtmb cjwxnf
+hqhmq wemvrce nagig pwnw nagig epg nagig vlsi
+tqgvw luoplw hccti npjm rytdruq cylrsun rytdruq vjsbjl rytdruq ppti
+itgt tuwc itgt rvp itgt tigns eipl ksmru
+pdw wdhtkn nbdbpn wff zhuuipg rvemv qxr
+qgkwdq cjilayh ymeks mrpuzai dwgs stfstgz ucvqhb yout oiq
+vpxik ypfr qytimvu qms oxbmw ppyfx
+fwwidn gdhd pyuexk snsz iwndfw
+lfcb sllxjna lfcb hpzahfg mmvgaa svny jhuzd
+unyg gicmzd fwc spkciy toyq wjupckd vzzx iuqgka ytqycb pxsufj
+goj tnrcml eyizngj txa xrkiw zvu igduz
+wek xrrlkna clyof rrlnxak
+cjm rmyuku vjom gtf
+buk cfae awstd dywgqp hxo wcxvf laihqw xdqfes wdbh qceh uzlwj
+sudguo dxwplto rlebdh bkamu dxwplto
+crwkyxm yuz kjtdhom crwkyxm
+trhc sduorxr aizfryh rsudxor gbyc
+pczkyl bptp qnn nxmpwsx udrg hhlb rubtrmx twzodlp xygnht
+jmqct cden yfajtkz fevcw sxonbxz sxonbxz qkzkm hhngr fbv
+sdsnm mwvicr wypfi cty ndbowr woiz mrauwzd qlno mwvicr
+vteyo fng lvr lxytn txpj milg
+wjx ahtmgo cgwcaj kaxae fhlvlqf
+ezj eetqhzu upwda iiefwlk vyvby
+imalvy yeghqe jwcu mvrod cwju
+bxnmsa yhfu npsdar tsbri hfuy sirbt oofxmy
+fkndt elbjtn vepqtxt elvpf fpelv bzkgag qttexpv prblwb
+rmq iqs yvprnyy iezqrzm wlqsrr
+yviovq lekxghj oey qwhzj lxknxw qiyovv ksnt jptz
+tyrg cifxt hugqf tyrg ffuiv jmax qyw fozfosq ffuiv
+nmg rsl jpzazd qbtlf yxqtsj czwmdfd bamge lbjdof uqy jssc
+cbx boozjip pwgvzlq rjz kxy kxy hszacok fvsq jhnir cnsba gafz
+sbcuxb wfur nnnfqjj fdwg huhe sbcuxb
+icwk qelbxs uevp qped zsnhh wpuok wddxsln ftnzupr ruxol cgxjb jbhh
+izcp htykj xxmndoq amnspe htykj
+vverol oixwlny vqd tvfzu henc gnyrwr
+ytxio etytsx choynep zqapo hfjit
+lkvgr oyzfa taiqr jok djatvy ckif tmdw oyzfa zroy
+jlgpyp kkqysg oqjki hjohoug hbhta muilz zft
+sumfyu wftcu bwwdcy lezimwa qwvxv zwh mqyv bmfot aii torcol rnt
+tpdj xrw ccsbnh fhptv fwkxjfm dmqaokd bjci
+zxi vmf vmf dpyg
+sfzxysw lcms bkojtv bkojtv
+opywo qll ipkitr mtwp tudrr svhyp huz bxsdpn xomfy
+gkod luo qrosbp orbd rpsjzyd rlh gdok tze
+nusiuq nusiuq zeys ahufexc
+veno jntg avtmtdn qojxru zegdcql odfcetz pgehau
+uqun vigjm ykac ozlelj danmji bibugox
+rpuozh ajwru rbvuevv uhzsq
+iawoe tyb aewio ymf byt inijv ctu fcys micsgzl pbby alt
+gktyxp ris mqpfm bkqsfl nrg idbbcxg jhcf
+qibt invvv qibt luitx rnm eby hrfbmwl wnap sgkzvb qlwc hrfbmwl
+jwkv qecsjbw lycgldd wjvk tjcp dycldgl pzrvr zrlcf kji
+nzsrmiq nmhse ilivrk kqv
+besmyzi imkgpt iekbjax abxeijk uvzs wwv
+jdocl uki ltswp tjkljc ymce iuepze qygqxzs tei lkry
+hhyfy gvzd mqksxlq czn afe mesnag eep frwgekg mqksxlq phpy
+ehg connnza ekt ddgokw
+mpbsoms uzhzl xevww ztt uzhzl
+lftybr firc awsud dsxdkk ltf ipjv dtx lcymth
+vkcpb gxtxq yioeq fexj xxgqt
+srvca fslnnvf nfmkpvt egw wemumq jie vznf dzsjw cukf kcvyir
+yxjkl lyjkx jyxlk kgc xtz
+tpoe xzov csp leleoqo noyre tdhf cyib sjgtdx raehdw nmcxp
+qvt uhznqe bpvos vtq ddlebtd tqv
+xlw utsxs gpia rvlvnts elkxr dddihy tnrslvv ibf wlx bxg
+cwqnnrt rkkqyf dye yde fzl pthanj
+boc rqjenpp xjqte jteqx pvoofc pidqe ruoucy gvnro ognrv
+qhalb gnazwc fhl iuti
+clnbjfo nnfs nnfs heymvr oarew oarew nxu
+lwtrotg hiaxwj ymzbly nvhzjhj zlsaheg nvhzjhj ymzbly
+rrvi tsjp tsjp tsjp killji
+rpx hiclj cmwq ibhj nfd
+pvwymn iebkd xmpw vuhhkap ksw zigzy mzzyyxy rmuh iwwhea cglfq
+rlwelgy sffml jin qsdzro xlsty mgqzuu etxjuo emzd jgnoyq tkjuy vfvb
+tkctdj hhkuc viskmy obw
+zvjkuj akeky ikj jqd hfhzbwe bkc
+btev nrdo hcyiuph stf qharfg vpmel mpfz nvs ytgbbc
+ieepn ndueuw svmdr tcvumw mceyrn mrjwhyl tbdj mgrgvz
+uxrs ckyi xpmqm czzrkl cjp
+nlliwd wrqkrkz yjmng nlliwd zirde hcjjn wco ysf mgl
+dxti lcahe ommare izlwf ramsfb nzgfvo ijvm fwymrdu bndq
+isxy jpvuzu tdduyhw dixp cfa fkzbteg ytoi kepk ysf yqcpi
+qmeprfj soqo ncgeor cqsuuj grzy wogxy vyblnbg slvtry vdols kka
+ltykfp gtzl olrp gxend vapee deq
+emywfbn dbfiut rkt wvwe dbfiut bwffhea yuzcxv gogpicp wvwe
+vqvmrp ofbk dlfabd jwllzxk obx vqpwjj umvng tqwis fstxy fstxy
+miha zgvyux rmraszo xwf
+kjaagk btm kjaagk wkewjrg kjaagk
+lbmli aizs omrdr gzktnx asiz ptanzpa xlo ljre ckyb wob
+svz dlk rijagg avxmg fkzwhk uro gegm
+dzplum temdw jqnm tvxcww bmg tftttpp deuw comxey xfimzjx caluczi nqn
+uwvhxa ztkd nlsdyt vihl julkwwv uzch dwakhs
+wkhuihh ycrc cxff vzcfhpp uegfd gaok kcnvz lhzogq lwa tyrypvu
+idp zmrrzp zmrrzp nktp xsnx rjsxn
+eybrnib ivgntl vaxsbpi eybrnib
+nzvnq xvbfa pbhwwh ylju runvsj imlx vztesn
+nfdohd nfdohd gtevnky pivjyct ihvd fzcsrq lko fmqk
+kwpkks ecikxu bcxswlt qvrxm sbcqmh
+kdjrmj piuh kdjrmj vnaf gyedkg vptxgm xezssxx zsg qjzpo zsg
+oqo sley aqx qmpqb fgmylbj egd zivj kepxizv kuakyn lunbnd
+hmcf hmcf xlhgc hmcf cdlm buofnx
+onjcj yluonz kzmk phqo phqo phqo
+ohaafy efl bnkkjww wwjnyoj dxeaig ywnjjwo slk hrbebw ohlyju elf
+msohiqz aunk njki bfktdgi htmyrj mgx
+numlzrl rmnlulz glb ltt fhbajz gqxpu
+gko hco oai ryq xwy sdqosft spjkiu cxfhg ycwpglh noy rah
+btzpjem brpk vqr atxu rhlh rqv jmg fvyus
+phmxxgj ejx xje qtk hsb kqt npwj gqt
+hujyjp nwmsd ant zipuya lrkahww uwqal vzlo qmbo twkjkse ufivi
+zfbnyz fwvh xrnrw usn zin daq iwjzj
+yykyg iwypfy hehqnl cjvk cevdrec
+gui muuto wsta glqmx gfo rdmbv mxwz gffzt eejpw gion
+lpng nduid iqbpu nduid knrqd
+xwxn oefpckv gjaua ugaaj gjuaa
+qxk aeql trqdmqc crzlinj crzlinj trqdmqc rijcne ewyf
+rfv qmbe fvr bmeq
+upqyfw lowzq wpen upqyfw gfskbil sljuzh wpen
+bdcara qyhx rtaez qyq gbyr
+evzls qxtxq clzd svbgqi zxlzgss vtrre fko eebo qjyl
+zaapeo kpwhz tygknau nyd pch trp xqe
+ypzcafg rnqmbh qtteg sncu ssojhhm zonfym thir xmgheb wqj gpjg ssojhhm
+wvcwyn xrf muozyya lasdp xpjgu kpqv zkiihiv ifje cbdlavg xbied hfnaa
+qqqb rettz rycukl ihpkhh
+dnxzxqv znb znb fbxj azxtezb xvxa
+peqkd xlzqkov esgnw ucku hrwpfxd xtd vnig vlmfp ajte qswr kqoj
+dpwy oavzkk dwyp ehij upqxgii pydw
+amfc hfv xmqa nqvn cal rqmcq oej amqx cla ntxj
+hqhhe qkbhwli wmhlcq xaczs peywuo
+vcr xfv xfv kymo qpszwzo xfv
+nmrbur tswo xbo ljlrzo bmhpgc pev zovkznz lok wbbhtkk
+tojj lxqgr rhjavrm ndsdup gdbjwaq cqpnl wfaxivl rfry ryfr udspnd
+beffod sknlph amb feobdf
+mldgn jxovw yuawcvz kzgzwht rxqhzev fsdnvu vluuo eycoh cugf qjugo
+tlnd qcxj ker fdir cgkpo nrqhyq raef uqadf iahy rxx
+mhvisju lhmdbs tcxied xeidtc ujry cditex gvqpqm
+cgc jazrp crgnna uvuokl uvuokl uoiwl sknmc sknmc
+rvbu czwpdit vmlihg spz lfaxxev zslfuto oog dvoksub
diff --git a/2017/inputs/day_5.txt b/2017/inputs/day_5.txt
new file mode 100644
index 0000000..3b5dd14
--- /dev/null
+++ b/2017/inputs/day_5.txt
@@ -0,0 +1,1070 @@
+2
+2
+-1
+1
+-1
+1
+1
+-5
+-5
+-1
+0
+-8
+-2
+-11
+-4
+-5
+-10
+-4
+-9
+-9
+1
+1
+-11
+-8
+-19
+-14
+-6
+-2
+-1
+-11
+-23
+-8
+-7
+-9
+-26
+-1
+-8
+-11
+-34
+0
+-22
+-17
+-41
+-12
+-43
+-33
+-15
+0
+2
+-41
+-41
+-26
+-48
+-52
+-47
+-30
+-38
+-20
+-4
+-21
+-17
+-19
+-55
+-32
+-12
+-55
+1
+-34
+-8
+-15
+-59
+-56
+-16
+-23
+-43
+-5
+-41
+-56
+-32
+-67
+-14
+0
+-28
+-32
+-7
+-54
+-19
+-9
+-24
+-63
+-2
+-60
+-5
+-78
+-11
+-84
+-50
+-36
+-72
+-14
+-30
+-4
+-62
+-6
+-1
+-69
+-17
+-33
+-32
+-45
+-71
+-87
+-71
+-60
+-19
+-80
+-11
+-106
+-45
+-27
+-23
+-51
+-77
+-67
+-103
+-17
+-98
+-109
+-91
+-125
+-68
+-39
+-34
+-96
+-49
+-64
+-38
+-105
+-31
+-100
+-89
+-108
+-69
+-36
+-94
+-38
+-124
+-123
+-79
+-92
+-42
+-14
+-87
+-68
+-17
+-36
+-21
+-54
+-98
+-79
+-142
+-25
+-60
+-112
+-99
+-64
+-15
+-78
+-37
+-64
+-15
+-129
+-32
+-102
+-74
+-112
+1
+-146
+-151
+-147
+-153
+-4
+-181
+-22
+-176
+-4
+-57
+-151
+-86
+-121
+-38
+-137
+-160
+-156
+-72
+-73
+-149
+-64
+-182
+-117
+-146
+-180
+-195
+-27
+-194
+-191
+-108
+-153
+-40
+-149
+-100
+-120
+-207
+-83
+-94
+-73
+-200
+-95
+-155
+-94
+-76
+-9
+-149
+-70
+-125
+-49
+-146
+-223
+-68
+-139
+-26
+-132
+-142
+-165
+-2
+-45
+-154
+-129
+-130
+-185
+-60
+-34
+-173
+-91
+-37
+-40
+-153
+-189
+-236
+-95
+-128
+-46
+-14
+-53
+-245
+-67
+-9
+-208
+-244
+-198
+-74
+-62
+-104
+-51
+-251
+-48
+-50
+-115
+-76
+-79
+-32
+-82
+-65
+-185
+-124
+-32
+-189
+-124
+-174
+1
+-273
+-223
+-275
+-238
+-200
+-184
+-229
+-195
+-152
+-63
+-150
+-73
+-44
+-54
+-187
+-49
+-250
+-192
+-290
+-282
+-266
+-214
+-117
+-199
+-83
+-104
+-251
+-176
+-262
+-296
+-39
+-259
+-87
+-132
+-166
+-67
+-194
+1
+-294
+-8
+-3
+-264
+-217
+-228
+-233
+-241
+-294
+-210
+-72
+-307
+-259
+-33
+-101
+-103
+-235
+-100
+-110
+-253
+-292
+-134
+-269
+-52
+-265
+-15
+-29
+-272
+-126
+-210
+-151
+-308
+-40
+-40
+-112
+-268
+-185
+-346
+-237
+-287
+-34
+-302
+-41
+-25
+-191
+-29
+-170
+-95
+-315
+-278
+-160
+-220
+-99
+-126
+-224
+-33
+-350
+-76
+-138
+-340
+-284
+-268
+-128
+-238
+-197
+-93
+-110
+-120
+-190
+-140
+-64
+-217
+-296
+-103
+-363
+-199
+-254
+-233
+-190
+-282
+-136
+-174
+-309
+-61
+-206
+-18
+-105
+-111
+-163
+-287
+-188
+-145
+-294
+-251
+-398
+-265
+-273
+-50
+-250
+-376
+-5
+-357
+-6
+-8
+-198
+-20
+-82
+-158
+-122
+-196
+-97
+-183
+-48
+-428
+-36
+-88
+-424
+-35
+-380
+-109
+-209
+-323
+-394
+-102
+-276
+-153
+-229
+-320
+-391
+-7
+-328
+-127
+-430
+-102
+-372
+-447
+-222
+-401
+-184
+-183
+-49
+-239
+-413
+-101
+-187
+-289
+-12
+-418
+-248
+-279
+-318
+-134
+-443
+-272
+-456
+-143
+-3
+-209
+-276
+-414
+-189
+-302
+-238
+-241
+-106
+-332
+-375
+-400
+-476
+-9
+-95
+-412
+-52
+-127
+-442
+-278
+-25
+-446
+-411
+-39
+-55
+-80
+-234
+-361
+-223
+-384
+-283
+-47
+-164
+-18
+-38
+-87
+-393
+-93
+-380
+-493
+-73
+-150
+-241
+-378
+-211
+-516
+-349
+-520
+-38
+-397
+-406
+-16
+-461
+-276
+-448
+-316
+-376
+-156
+-369
+-216
+-431
+-309
+-400
+-135
+-523
+-40
+-508
+-87
+-25
+-151
+-355
+-141
+-3
+-495
+-153
+-438
+-343
+-161
+-66
+-455
+-70
+-248
+-278
+-548
+-300
+-337
+-290
+-551
+-200
+-68
+-540
+-476
+-395
+-245
+-318
+-424
+-112
+-556
+-541
+-94
+-148
+-542
+-100
+-120
+-199
+-569
+-471
+-298
+-16
+-453
+-469
+-50
+-500
+-84
+-435
+-579
+-287
+-522
+-77
+-83
+-347
+-437
+-171
+-231
+-139
+-350
+-357
+-221
+-214
+-224
+-148
+-125
+-385
+-255
+-38
+-320
+-254
+-517
+-532
+-80
+-286
+-58
+-97
+-390
+-309
+-548
+-319
+-323
+-238
+-297
+-12
+-312
+-517
+-434
+-466
+-103
+-621
+-448
+-503
+-72
+-601
+-287
+-61
+-577
+-87
+-143
+-33
+-482
+-275
+-529
+-340
+-279
+-130
+-512
+-63
+-109
+-528
+-22
+-549
+-317
+-375
+-377
+-385
+-23
+-191
+-138
+-509
+-40
+-565
+-559
+-14
+-547
+-28
+-159
+-153
+-585
+-508
+-582
+-431
+-580
+-637
+-561
+-513
+-243
+-420
+-298
+-485
+-132
+-613
+-157
+-521
+-596
+-61
+-420
+-498
+-577
+-563
+-354
+-662
+-264
+-273
+-111
+-597
+-466
+-389
+-345
+-306
+-102
+-57
+-596
+-1
+-45
+-12
+-619
+-47
+-43
+0
+-323
+-9
+-319
+-529
+-402
+-238
+-191
+-487
+-315
+-65
+-386
+-110
+-605
+-363
+-461
+-6
+-95
+-95
+2
+-596
+-454
+-618
+-83
+-481
+-283
+-386
+-247
+-417
+-707
+-564
+-603
+-17
+-712
+-140
+-336
+-567
+-443
+-36
+-476
+-251
+-735
+-589
+-198
+-197
+-476
+-49
+-736
+-422
+-383
+-569
+-732
+-1
+-104
+-261
+-352
+-453
+-273
+-344
+-66
+-307
+-698
+-158
+-238
+-280
+-207
+-624
+-491
+-765
+-506
+-146
+-616
+-711
+-650
+-655
+-393
+-19
+-315
+-311
+-572
+-675
+-533
+-156
+-373
+-744
+-142
+-582
+-491
+-796
+-777
+-125
+-483
+-426
+-510
+-560
+-700
+-778
+-407
+-440
+-409
+-238
+-738
+-477
+-147
+-152
+-317
+-110
+-323
+-788
+-601
+-202
+-517
+-487
+-726
+-300
+-1
+-554
+-448
+-15
+-191
+-531
+-568
+-466
+-527
+-132
+-254
+-290
+-8
+-400
+-655
+-788
+-376
+-249
+-662
+-315
+-378
+-41
+-793
+-163
+-29
+-327
+-839
+-133
+-124
+-129
+-673
+-32
+-605
+-393
+-664
+-374
+-135
+-366
+-717
+-93
+-601
+-763
+-788
+-494
+-802
+-282
+-443
+-491
+-461
+-197
+-83
+-96
+-162
+-97
+-161
+-232
+-144
+-472
+-118
+-429
+-387
+-724
+-789
+-636
+-298
+-484
+-720
+-526
+-382
+-102
+-449
+-846
+-525
+-547
+-696
+-524
+-272
+-843
+-286
+-247
+-838
+-447
+-489
+-797
+-483
+-386
+-775
+-340
+-772
+-158
+-293
+-256
+-432
+-812
+-273
+-93
+-487
+-264
+-594
+-330
+-712
+-798
+-131
+-591
+-539
+-677
+-455
+-470
+-108
+-573
+-57
+-845
+-383
+-273
+-890
+-747
+-913
+-648
+-625
+-650
+-544
+-137
+-490
+-434
+-734
+-182
+-355
+-859
+-835
+-141
+-536
+-874
+-102
+-940
+-359
+-83
+-800
+-894
+-712
+-470
+-687
+-578
+-435
+-935
+-400
+-780
+-814
+-458
+-892
+-481
+-371
+-761
+-348
+-388
+-891
+-764
+-297
+-536
+-695
+-314
+-336
+-978
+-379
+-462
+-597
+-533
+-561
+-9
+-474
+-292
+-560
+-420
+-828
+-721
+-769
+-874
+-157
+-495
+-771
+-899
+-571
+-98
+-282
+-233
+-203
+-982
+-416
+-142
+-993
+-540
+-979
+-851
+-506
+-238
+-292
+-184
+-695
+-195
+-632
+-575
+-962
+-76
+-546
+-705
+-13
+-271
+-222
+-124
+-380
+2
+-1003
+-251
+-525
+-228
+-644
+-159
+-624
+-477
+-912
+-712
+-343
+-263
+-88
+-745
+-85
+-374
+-675
+-804
+-610
+-854
+-511
+-612
+-964
+-731
+-358
+-495
+-946
+-466
+-364
+-1053
+-57
+-101
+-829
+-155
+-600
diff --git a/2017/inputs/day_6.txt b/2017/inputs/day_6.txt
new file mode 100644
index 0000000..b16e11b
--- /dev/null
+++ b/2017/inputs/day_6.txt
@@ -0,0 +1 @@
+4 10 4 1 8 4 9 14 5 1 14 15 0 15 3 5
diff --git a/2017/inputs/day_7.txt b/2017/inputs/day_7.txt
new file mode 100644
index 0000000..faa4be1
--- /dev/null
+++ b/2017/inputs/day_7.txt
@@ -0,0 +1,1091 @@
+yjmbbu (75)
+zdhvqrl (40) -> fpbsu, fwpfjjd, viqhfi
+dywqvqh (9)
+gewgn (31)
+xfekjt (67)
+zezowe (31)
+wgqkdcr (79)
+ljhwzvv (258)
+vustse (1584) -> ffnabs, qinmi, qhafxnl
+idfwjgx (112) -> buoakk, itwbpot
+lxesg (71)
+qkbnq (99)
+jppgd (27)
+ztghd (125) -> bcibchp, aaheijb
+qcrpdy (29)
+fwidkbp (152) -> mnkwo, ehjooz, jvccsp, cyrrjtx, imynb, chnkkj, agywjrs
+nymhem (52)
+cazid (93)
+olspit (121) -> bqtas, fhuiyrl
+ayteb (92)
+hjucki (58)
+wrqtk (305)
+jfjemon (217) -> bjhickt, uacjhqx
+mcmqliy (925) -> coopirx, ekohgo, ioywk
+rsancy (70) -> aeuub, vchuc, heacb
+zjwpbzs (23) -> jysaup, pgubexv, lckuoqf, eeguu
+qflouyn (90)
+nswximo (65478) -> ibjvonk, sdhtguj, dxyifeb
+rymkqd (102) -> vgqeyx, zezowe
+wlujpl (92) -> sjwhig, wymfopy, ylfsnz
+imcczga (95)
+xehdglb (52)
+twubx (46) -> goimlra, vlimzz, xaoncma, gfzbp, spdhhoe, fhmauag, cyapi
+yjhes (72)
+ymcuygn (81)
+yatbsip (19) -> bkdtinl, nzqcq, tkmed, ysbrui
+yipoeia (58)
+chophr (27)
+tdwtlf (305) -> epuaii, idfwjgx, nwikpdm
+emzrj (119) -> aimav, dtscjna
+vbxmpc (7)
+nrpxx (21)
+wgexpa (103) -> paxzd, vgdwm
+vnrmx (359) -> knzppj, gkkgkp, ttwfig, vcixs
+knltna (677) -> zbhtee, ztzwh
+ojvlwm (52)
+bgflw (27)
+lsdrwz (73)
+hswzo (40)
+spwgm (351) -> mizab, cyzkk
+jlnyr (16)
+nwikpdm (36) -> ihwaeuw, wwkeej
+qbmtmcs (34)
+djirpp (19)
+pkfhp (59)
+qfypnb (76)
+jzequar (272) -> mtcrswx, wkcyd
+tttle (71) -> xlskkfi, ayteb
+zbhtee (48)
+iriun (9)
+dwezv (73)
+tojyt (58) -> dwezv, nbngkou, wnjtb, rarkunn
+bsorz (27)
+qvkotfd (337)
+azxjd (268) -> exeub, lryzkx, nqvxs
+wpxxh (998) -> wrqtk, yosnw, vyxfljc
+gwournc (85)
+aghdlll (88)
+lejgcu (19)
+lxlbt (363) -> oiosol, mpchqe, bsorz, jbpjt
+nbeagw (94)
+vbbgeo (19)
+lqfyzo (21) -> tggkm, zdbqs
+vqclii (331) -> dmkbnot, omdpc
+lhmnd (216) -> onnylx, khaupo
+wwkeej (60)
+laczal (99)
+xrbjn (20)
+qvteg (64)
+ogbsm (92) -> xpzhy, mhsjkm
+ymckwqo (41)
+ghsjtj (271) -> hhmwlo, faixe
+sjrxs (259) -> mnijdlk, hygfoe
+hdvel (197) -> upuxd, dtstgj
+lckuoqf (78)
+yppydul (91)
+frirj (6)
+duftj (42)
+dnmvzeg (64)
+cpazlc (19)
+krxyaak (198) -> maqgick, xbnmvd
+oyczfgb (395) -> rxcnn, ktpte, qybmgto
+oxiuaz (12)
+wfphcf (6)
+ihtnbb (87)
+omsroa (45)
+lybkeg (6022) -> oyczfgb, jzequar, yrcgsnx, ujulj
+agywjrs (184) -> anpnrdt, hgdbaol, hcjmsd, kzbvrxk
+tiujei (34)
+lwencl (28) -> ieusgd, mthhq, fsuzqyz, miwoup, isrtfc
+wekya (34)
+bkdtinl (1167) -> ojsjuts, euoclfs, xbkeua, mykrcq, jjsvfy, aazxafl
+qinmi (1896) -> qshbt, ruozmjk
+yfmxvay (46)
+kgpwo (52)
+fgjjwep (14)
+odvtiti (76)
+ienye (19)
+tcvabyz (99)
+ycclns (7)
+njogewi (30)
+bfchbs (87) -> jykbb, qnbfk
+dlbzng (99)
+xnmvtem (51)
+ccciux (94)
+xwlmsqy (25)
+wekkbw (17)
+yipzce (21)
+hcjmsd (10)
+upvhfmn (68) -> fvlfq, ivmndi, ussmw, ccciux
+hacwv (50)
+redqvw (269)
+dtpexjq (52)
+kmlwj (84)
+mluykm (19)
+ucbbun (114) -> hrqzqqh, ccuarv
+kymhbse (155) -> tznudmk, hnlgkv
+xomnhw (185)
+nsmoh (65) -> ceuygh, acpfsnb, vgubuy, apkwi, yoeau, pdosfg, lfpzff
+zvepqr (51)
+wnotwt (99)
+lcrwbqi (27)
+hdlqvlg (27)
+iphgmyt (160) -> woolxv, ewyzqg
+ujulj (50) -> cazid, npmwcx, yeooycn, dmeee
+zjaklmn (52)
+bjrpalu (53) -> rhodopg, tcospq, cvrcvgp
+azdei (48)
+snzfrer (149) -> bhsbd, tgdzl
+zsxizw (18)
+fwpfjjd (89)
+fndxl (36)
+uzrnud (14)
+igyxt (41)
+vxdkej (135) -> diomq, qokscr
+gjuekv (5)
+uzufet (143) -> fgjjwep, uzrnud
+vzuqbye (87) -> eviqjr, cgxsmq, egmfbdq
+zirocl (29)
+jonshpm (99)
+zmlth (154) -> zhxhkgf, cokzlht
+bujroda (51)
+bdvtvcu (74) -> tvcod, ouamzwh
+jdrdxu (36)
+troyu (29)
+nrczsn (86)
+aihow (92)
+gaihmf (84)
+ehjooz (124) -> hgwsl, mefxonk
+omydd (6)
+raevpsw (64)
+aylmbfh (188) -> ddspu, thdwfw, kxnkbs, rziezq, jfjemon
+diomq (65)
+jjyjrtr (87) -> fjduphn, yjvgwdl
+zsiziaa (38)
+lyptirp (8)
+lctdjj (56)
+pbtks (85)
+jxhrar (227) -> barnhza, iqovqp
+neqfzm (13)
+dhwauy (48)
+qvjqfi (80)
+ivstcsm (72)
+aabrjf (72)
+jvccsp (86) -> gukuqw, hpmbkwb
+ddspu (113) -> yjmbbu, dzbrgb
+zgevpxx (48)
+qrrey (588) -> bhvmgw, wgexpa, xiotwdk
+ncodn (62)
+rbcqgqv (75) -> imcczga, xzurwza
+fpxtub (11)
+ldfopw (30)
+ewyzqg (49)
+iuhlc (6)
+oqphsw (2722) -> iueejt, ekdqf, btbxk, jdshuob
+eysrnaa (71)
+ojsjuts (176) -> njxyw, dzasw, rpzaqc
+ozyexx (83)
+nnldikq (316) -> upwlxnb, vbxmpc, dgwcz
+tfmtk (69)
+hwctdr (76)
+rothisa (66)
+qnbfk (91)
+qcgxvx (99)
+igyiie (237) -> knirl, trbzi, auxvur, rvhxik
+cverrt (52)
+orrutjs (93)
+ffloi (25) -> kflize, icgwppo
+phrxnli (21)
+eopxpo (41)
+vlfouc (62)
+fdnom (87)
+wuxhvnx (86) -> ikfpktb, zcvipz
+flefy (38)
+yoeau (206) -> rfwgtb, drmyco
+ozatmpe (34)
+ydbri (66)
+tufds (42)
+pprhx (57) -> xitzb, zqyua, dtpexjq, zyradhz
+zhxhkgf (29)
+qwzmv (52)
+paxzd (53)
+cyzkk (60)
+gyjxkl (37)
+pzpjw (54)
+svayf (89)
+xxxqpkx (7)
+imihjj (69) -> yygqky, qlkslp
+tkpvf (47)
+tljdqy (81) -> sxllorg, yatfpqx, zbznuyf, kymhbse, rfmeug, tetmzw
+iphzyj (260) -> omsroa, mxupea
+xiotwdk (177) -> jlnyr, nsqqw
+eyyzy (274) -> opuaau, qolnvo, jxhrar
+baewpe (55) -> svkdyq, hitoud, zvnxfa, emfctr, facrq, vykqcnj, bckuyxm
+barnhza (20)
+oafnfo (51)
+pjcttzo (50)
+aooni (205) -> xrvbzya, gvjrx
+scchi (48)
+zcgrnt (73)
+pmsdv (93) -> pyypotx, marzlxh, zvepqr
+kngbqid (89)
+iwhqlr (949) -> ztkgsyt, ffloi, hzgig
+vyxfljc (92) -> pyrlph, wdsiq, eysrnaa
+hddzn (69)
+cxvqvjz (136) -> kfrti, nslettz
+tcospq (96) -> aabrjf, dllgpye
+mnmwzz (142)
+xfblj (40)
+vfwegiu (46)
+iphncut (138) -> wslsg, qhnaxuy
+algqhtz (37) -> qeojk, sybpano
+dmoxr (73)
+tozktyo (29)
+npjxq (46)
+uvfyo (675) -> lxlbt, gnjvf, nfsuzef, spwgm
+ollhxuy (821) -> vefzbc, faecnr, geldsqv, xneoi, cxvqvjz, jgkvfa, xtwdx
+ksvfdcc (72)
+avycyh (180) -> hwosyg, alqim
+nsqqw (16)
+nsfsj (99)
+tpphe (64887) -> yatbsip, syzlt, uttujj
+miwoup (40) -> gyjpoco, apgjv, eknui
+iljwgzf (92)
+bfuywyg (82)
+aaqdb (44)
+fgbyre (11)
+kywfqzv (41) -> lajidkr, gyjxkl, wfhyr, evhsybt
+aiovxpk (95) -> yoxvx, pbtks
+hrovawq (50)
+ajenoz (48)
+aeuub (53)
+gxjvj (163) -> yiusa, nrczsn
+ippzix (9)
+ttllx (73)
+rorqy (43)
+dqash (96)
+lwvnbzs (24)
+ckheb (34)
+rgfndsx (18) -> qkbnq, welll, bkextqn, wnotwt
+rsazi (62)
+rpfmi (52)
+uxslfay (72)
+aemgsa (40)
+jfmnsqg (85)
+ggnsa (114) -> xhmfmo, azdei
+lndaa (175) -> qvjqfi, iyuuh
+kjdoubx (128) -> eopxpo, igyxt
+dzasw (47)
+emfctr (9120) -> qzckx, fsaoa, bjrpalu, mdneq, tdwtlf, hswrbpz, knltna
+srqntb (137) -> raevpsw, qvteg
+wweusm (66)
+hawsl (13)
+cupsjm (146) -> baiaa, pcqyagx
+ppqlc (42)
+tadnt (47) -> ufefj, rwxggm, rorqy
+rvhxik (11)
+vijkx (32)
+lqcar (71)
+dhkahb (49)
+ftuemb (19)
+ewdqb (50)
+npmwcx (93)
+wwezydn (97)
+fuvru (98)
+cdpwklz (83)
+dtscjna (46)
+exuusj (7)
+ouamzwh (88)
+ggvbqrp (145) -> opohwq, yrmgc, gewgn
+ekdqf (467) -> ugvqayz, ysgsry, ogbsm
+torxqh (90) -> dzwol, lepja
+hpmbkwb (69)
+ripqyzr (48)
+eiklbh (32)
+omdlwm (168) -> ihtnbb, hjjkx, bomho
+lbwzat (74) -> iivncbz, dmoxr
+pyypotx (51)
+bjabd (7)
+auzbdlz (95)
+sxfilp (72) -> livlj, lgenxz
+kxvlprg (60)
+rfmeug (121) -> apygt, viwns, chtlcwq, wekkbw
+xajjyba (164)
+kzltfq (94288) -> vnrmx, lrihy, arqoys, nsmoh
+mbhld (73)
+rwxggm (43)
+vapwxei (61)
+ufefj (43)
+oajawn (34)
+dgnjf (335) -> yxseri, nscbsob
+xaoncma (296) -> yipzce, nrpxx, rrfbngi
+kqlsniq (95) -> qwsxpnc, mqmbcl, gtbbuvb
+jrvbacq (49)
+oavluo (21)
+qpldch (54)
+ieusgd (295)
+tifgptk (100) -> ddldgex, ggvbqrp, focqhgt, cncak, ksvpnt, weuwc
+lhradm (583) -> vusxa, lbwzat, ucbbun
+apgjv (85)
+cbibo (99)
+jxhngrl (48)
+qwsxpnc (96)
+ysbrui (1293) -> iqggu, upvhfmn, kpqyb, wdeuy
+ekvall (209) -> jxhngrl, aplvqql, drwfop
+mkwfj (35)
+pjiqvd (87)
+pgubexv (78)
+vbhnmr (2850) -> iftfc, kunzpa, qrrey, tljdqy
+sjwhig (93)
+zyradhz (52)
+wcexum (116) -> eiklbh, vijkx
+cdcye (53) -> izppmg, rxvyqsp
+bdinafh (10)
+rziezq (145) -> taiho, pkfhp
+nslettz (10)
+svhbd (109) -> xcvxle, fqzsq, jopjvd
+limljj (68)
+kauphp (231) -> dyxsmz, yzxzo
+caryo (7)
+nahovfk (109) -> flefy, cfztpc
+qolnvo (267)
+cmqwplb (9)
+cfhuce (71) -> cecsr, josdslh
+zwnvqu (88)
+mhjtjp (91)
+apkwi (222) -> rxragg, zsxizw
+ioywk (16) -> ozyexx, eikmns, ktjav
+yrmgc (31)
+kqzemkv (96)
+rxvyqsp (60)
+hnlgkv (17)
+raryuo (73)
+bomho (87)
+rixnft (85) -> cpndnx, fpxtub
+zoewj (193) -> ohbuhy, ymckwqo
+hnyqq (34)
+tkmed (1959) -> tuqmup, jwgchxu, sjforw, zmsosb, tqikxkp
+wlpyulp (10)
+pixjzh (158) -> fgjwz, lsknlg, hlcghe, txhfuoh, hdvel
+likvlm (62)
+xhmfmo (48)
+rgrxpe (69)
+weuwc (84) -> xtwdau, muncur
+uevcwul (92)
+kpxqlr (155) -> nbbyqsa, ilkqp
+fqzsq (98) -> tiujei, yhubw
+ubovv (6)
+knirl (11)
+lzvniiz (60)
+cwtdf (29)
+qeojk (99)
+ycxzfkf (131) -> bgflw, chophr
+thjulip (20)
+vgdwm (53)
+myhch (25)
+bovno (175)
+uqlso (48)
+rhnkdt (59) -> rsazi, ncodn, pwizhzr, likvlm
+acpfsnb (204) -> nmlcne, vfsttaj
+wzfkk (99)
+oqlpz (81)
+nscbsob (24)
+mzmfygf (171) -> jxyoypa, ippzix
+rvrlma (211)
+pfphng (90)
+mdiqsgg (12)
+jtzkva (274) -> flomey, ukvvt
+tvwxmur (64) -> yodoqn, ksvfdcc, ivstcsm, pvgzz
+aplvqql (48)
+qybmgto (9)
+mtcrswx (75)
+aphpzub (29)
+vchsdif (105) -> ofisj, zwnvqu
+dllgpye (72)
+lfzahrm (79)
+oiosol (27)
+geldsqv (80) -> ienye, eeppf, ftuemb, vbbgeo
+vlbba (81) -> ewdqb, vfzby, pjcttzo, abddskq
+nfsuzef (75) -> dlbzng, cbibo, wzfkk, jonshpm
+lryzkx (71)
+mhndszl (190) -> tbrfk, xprzeeb
+jbepak (66)
+nmlcne (27)
+gfffvbp (8)
+bqtas (93)
+fhmauag (221) -> vantwg, kzwqzqf, vfwegiu
+misyfn (82) -> uixlx, oupzsh, bovno
+jtauf (13) -> xskehl, bmfhjm, srhirm, kjfmqkt, qzxaqvy
+eerktn (85) -> npjxq, kasfuwe, ljbss, theau
+ktaet (58)
+eeppf (19)
+vgqeyx (31)
+qhnaxuy (31)
+xrvbzya (35)
+nzqcq (66) -> vewgrvp, vfngjd, sjrxs, hvjtn, ecokyy, gcaxntb, omdlwm
+sybpano (99)
+ebsniof (39)
+urzul (9)
+srmiagk (292) -> dvdgowj, vqpeg, gjuekv
+uexdnv (82)
+pgspysb (40)
+wymfopy (93)
+nqhdt (164) -> mkwfj, gjwaqu, sxmbcwp
+twzpqip (41)
+bniti (66)
+yfjenp (295) -> qxfce, zsiziaa
+meoeea (60) -> laczal, tcvabyz
+heacb (53)
+focqhgt (238)
+dtstgj (36)
+kkmqko (7)
+vcjjo (98)
+nnnkeh (445) -> gzzpja, bhuyfk, xnukvni, tttle, snzfrer
+baesyhf (1013) -> tznkwk, hcjxz
+hygfoe (85)
+wtxbqe (87)
+vwzglf (58)
+hswrbpz (254) -> flcqsb, sbguah, cdcye
+axtqrx (29)
+auxvur (11)
+iqggu (444)
+kceusl (42)
+jykbb (91)
+nxzkuj (75)
+xzurwza (95)
+rrflox (52)
+kfmzbvk (10)
+mnkwo (212) -> jyskb, wfphcf
+dfvhic (82) -> fhmazv, hwctdr
+gfzbp (197) -> ymcuygn, mxzbcqn
+tlednk (39)
+lgenxz (54)
+emwbbut (9)
+exoft (17)
+woolxv (49)
+auxqbbc (87)
+wvocz (67)
+hvjtn (325) -> cverrt, kfxoi
+aunhcg (613) -> kjdoubx, ggnsa, acknlp
+absdwf (39)
+wajnxjj (40) -> imjzf, wwezydn
+hgdbaol (10)
+cfztpc (38)
+chlxm (46)
+ljbss (46)
+gauumxf (230) -> tkiraal, lyptirp
+nhlittn (22)
+gcaxntb (405) -> mdiqsgg, oxiuaz
+lfxew (66)
+bamxg (66)
+wdsiq (71)
+mykrcq (98) -> zcgrnt, raryuo, okrdziq
+erpvue (91)
+kmwbbz (93)
+vsgaam (7)
+hokyk (66)
+pjzpmq (38)
+iqovqp (20)
+mmcychg (65)
+guncf (259) -> proshun, wxjka
+jatnl (216) -> oavluo, phrxnli
+nhkvp (100) -> rgrxpe, nscav, illjvf
+hcjxz (31)
+mqrroj (243) -> jtjcj, dnmvzeg
+lvksghj (18)
+mhsjkm (84)
+popplum (89)
+vusxa (30) -> ieadjz, mzmtuw
+dmkbnot (26)
+httit (18)
+tbrfk (19)
+ztzwh (48)
+imjzf (97)
+rypdxr (105) -> qyoqb, lejgcu, djirpp
+qzckx (35) -> qzzkvf, pmsdv, gauumxf
+xbnmvd (76)
+ouymke (47)
+rajtef (365) -> iriun, ezaypy
+itngcua (65)
+orxoo (66)
+tcdwurt (18)
+auqoj (99)
+sqnvvbg (36)
+rxragg (18)
+kpqyb (258) -> sqkcdf, iqxwh, vnhvilk
+proshun (47)
+uscufoy (15)
+tpipb (61)
+owhjmt (155) -> vsruoi, ifxcrug
+bkvle (9)
+yosnw (32) -> ilymgq, yppydul, yamclb
+iynywq (66)
+nxpexoq (92)
+eviqjr (25)
+trbzi (11)
+rfvomn (95)
+ohbuhy (41)
+vkpltts (73)
+ktpte (9)
+bbgwzg (79)
+bgcigo (8) -> bruzfkf, lxcbjgy, vlmcmcu
+ecokyy (357) -> iaphzk, httit, vztnh, owmni
+jwgchxu (32) -> rfvomn, auzbdlz
+xlskkfi (92)
+uxjasn (36)
+dcumfo (73)
+wpnqet (87)
+ilqol (88)
+bhsbd (53)
+flcqsb (115) -> meypo, aphpzub
+yvqtyi (85)
+oyvhouc (37) -> cdpgoi, bbgwzg, xoziel, lfzahrm
+bjhickt (23)
+hmvwl (32) -> nswximo, tpphe, baewpe, hghnmib, kzltfq
+oiijtm (20)
+ylfsnz (93)
+imynb (146) -> absdwf, cikaze
+yygqky (82)
+yuswp (68)
+izppmg (60)
+itwbpot (22)
+hwosyg (42)
+mkrzp (211) -> laxsl, zirocl
+vqpeg (5)
+gddkqw (244) -> vhtyadn, lvksghj
+bhuyfk (79) -> aghdlll, ilqol
+yrfqaga (103) -> jqinti, zjaklmn
+bnfopv (118) -> cjmxed, zlzers, qrlggma
+welll (99)
+ehuzoq (77)
+nqyok (77)
+rrfbngi (21)
+yoezrpw (38)
+rpzaqc (47)
+qxlucvg (84)
+tehyhc (13)
+gqrfok (231) -> kfhnhm, aituccf, qrkhol
+zvnxfa (10022) -> aylmbfh, lwencl, pixjzh
+gzzpja (255)
+ofrwmq (205) -> iigvpqy, wweusm
+qanbo (50)
+obslyn (13)
+hwovhvw (915) -> qdhrchr, nahovfk, xomnhw, ycxzfkf
+smlfbc (1615) -> wnjwnr, pprhx, aiovxpk
+xbkeua (157) -> pgspysb, aemgsa, xfblj, hswzo
+btklib (51)
+owmni (18)
+qzzkvf (108) -> aobitc, tsrogy
+umtrod (22)
+vxajmkg (71)
+jmlmzpz (62)
+plurwe (228)
+jyskb (6)
+xnuoujm (16)
+nakmo (10)
+uzhlers (50)
+umlkxqv (20) -> ecimj, wudjf, jfmnsqg
+ziqwzzy (204) -> uscufoy, fooyrq
+ymrogz (272) -> ebsniof, tlednk
+lpuass (28)
+qrkhol (9)
+hpkpw (38)
+gtzcxq (73)
+gvjrx (35)
+ieadjz (95)
+tcukgv (66)
+ifxcrug (55)
+thxtoc (178) -> trtgn, fdnom
+puwvse (414)
+pvppi (246) -> qlwxeb, nuqyqh
+vcixs (260) -> noipcz, frohei
+cichyqw (71)
+ugvqayz (126) -> xfekjt, wvocz
+hrqzqqh (53)
+qedst (18)
+wnjtb (73)
+kjfmqkt (138) -> pzpjw, qpldch
+ussmw (94)
+sxmbcwp (35)
+dqdfv (73)
+ptyxo (13)
+upuxd (36)
+fppcif (209) -> uxslfay, yjhes
+kxykfr (82) -> twzpqip, qymwy
+yodoqn (72)
+mnzbkuh (28) -> jtouvtb, wdvwub
+omdpc (26)
+ccrftvw (62)
+bmfhjm (222) -> lyvyhkm, sbyxyf, kblshw
+fwgqj (1924) -> zmcgfdp, vzuqbye, rypdxr
+rlbom (79)
+livlj (54)
+ybvgki (8)
+zcvipz (97)
+xyohoxa (928) -> qkkzzlm, lmuyfcw, avycyh
+dchts (99) -> lctdjj, oevyknd
+ksfok (217) -> gfffvbp, ybvgki
+hoomyh (88) -> aaqdb, ljfqvk
+qijarlh (58)
+tznudmk (17)
+cyrrjtx (124) -> oqbdf, xwlmsqy, ulztj, rjsnth
+nuqyqh (52)
+oblsboq (85)
+imnhql (94)
+hxswghs (126) -> dwwsu, hdlqvlg, jppgd
+ulztj (25)
+hgwsl (50)
+ksvpnt (96) -> fqlezvk, lqcar
+mjpzp (10)
+fsaoa (89) -> dbwmq, uzufet, arwmalf, gobrf
+iftfc (159) -> thxtoc, jtzkva, tvwxmur
+zjpsm (83)
+vwfhi (9)
+opuaau (75) -> dqash, kqzemkv
+mxupea (45)
+dmkyzy (15) -> ttllx, horqcc, dcumfo
+sxllorg (69) -> kxvlprg, lzvniiz
+txhfuoh (219) -> lwdqnj, myhch
+chtlcwq (17)
+hlcbqu (104) -> ccrftvw, jmlmzpz
+ivmndi (94)
+lficpr (62)
+ortqc (99)
+dvzlq (33)
+acknlp (56) -> aozoac, ehuzoq
+jqxnf (60)
+hfftu (52)
+ihzvygq (94) -> kmwbbz, orrutjs
+rarkunn (73)
+hitoud (5511) -> vcktg, rqbjbio, xtyzy, ssdgbnh
+sdhtguj (58) -> uklsrym, mcmqliy, nnnkeh, clinrg, fwidkbp, hzmhm, xyohoxa
+hrlkgen (99)
+vuyzhsh (61)
+nzzfer (85) -> qcgxvx, ortqc, auqoj, ilfzi
+tuqmup (222)
+zbznuyf (137) -> ptyxo, qwtzc, neqfzm, hawsl
+qwtzc (13)
+vykqcnj (71) -> jitzj, nkhadt, tcsbho, fhxpkd, fwgqj, smlfbc
+mjzksjz (7)
+yfdtz (36)
+faixe (56)
+tejnuve (209) -> jgmisxl, dhkahb
+opohwq (31)
+lsknlg (95) -> vwzglf, hjucki, yrkvb
+fhmazv (76)
+egmfbdq (25)
+rxcnn (9)
+tboizos (250)
+glwhd (122) -> ceoav, troyu
+ykehxw (19)
+bruzfkf (91)
+rjjlus (87)
+ocnna (18)
+qshbt (73)
+raakduh (85) -> fuvru, vcjjo
+wudjf (85)
+ihwaeuw (60)
+kfxoi (52)
+oewzluz (39)
+coopirx (251) -> exuusj, rvimq
+cokzlht (29)
+uacjhqx (23)
+tznkwk (31)
+mthhq (111) -> uevcwul, nxpexoq
+uixlx (7) -> kmlwj, gaihmf
+nqvxs (71)
+ktjav (83)
+eknui (85)
+fhuiyrl (93)
+fktsu (65)
+vugnug (65)
+ilymgq (91)
+clinrg (1033) -> rsancy, jrqorlo, lvklj
+bkextqn (99)
+ekohgo (251) -> xxxqpkx, wkphn
+alkneau (34)
+mnijdlk (85)
+dyxsmz (38)
+mefxonk (50)
+lajidkr (37)
+uiuokpq (89)
+oupzsh (43) -> bzmade, bamxg
+cijptz (18)
+khibjj (89)
+yamclb (91)
+okrdziq (73)
+sbyxyf (8)
+zknziw (18)
+fobzai (75)
+rjsnth (25)
+iaphzk (18)
+lufgosn (10)
+rzkcu (34)
+xlhfyw (471) -> yuswp, limljj
+tcsbho (1842) -> mnmwzz, mnzbkuh, zpidc, cpqti
+docln (85)
+neeqb (7)
+tvcod (88)
+uklsrym (40) -> bbhniy, gddkqw, lhmnd, ihzvygq, nhkeb, wuxhvnx
+qkkzzlm (76) -> imnhql, nbeagw
+qywkuqu (20)
+fvgbg (191) -> iwkntdi, jdrdxu, sqnvvbg, yfdtz
+qlkslp (82)
+iqxwh (62)
+mdneq (623) -> uzhlers, qanbo, tedplb
+msmgk (173) -> fygmpjn, exoft
+euoclfs (241) -> pjzpmq, hpkpw
+vlimzz (19) -> yvqtyi, gwournc, docln, oblsboq
+zoqni (189) -> chlxm, yfmxvay
+oignan (206) -> hdaqxlh, fgbyre
+zpidc (40) -> bujroda, btklib
+aazxafl (215) -> xnmvtem, oafnfo
+yhubw (34)
+xneoi (138) -> vwfhi, cmqwplb
+vefzbc (138) -> dywqvqh, emwbbut
+ruozmjk (73)
+jrwfehi (75) -> kcnim, bdvtvcu, tfsoxgb, tboizos
+iivncbz (73)
+ccuarv (53)
+lrihy (185) -> vchsdif, bgcigo, raakduh, vlbba, igyiie, zoqni
+vewgrvp (73) -> dntphko, svayf, uiuokpq, popplum
+iigvpqy (66)
+fjduphn (91)
+uttujj (11755) -> glwhd, sxfilp, wcexum
+tluap (6)
+exeub (71)
+dzwol (61)
+ilfzi (99)
+cdpgoi (79)
+hxckb (71)
+yoxvx (85)
+theau (46)
+vwnjh (233) -> jqxnf, qfpwln
+jbpjt (27)
+zmsosb (14) -> rrflox, ovluts, rpfmi, ojvlwm
+yoivja (59)
+towlhi (36)
+zcrjb (253) -> qhohy, uwaiki
+josdslh (59)
+xoziel (79)
+fsuzqyz (169) -> duftj, ppqlc, kceusl
+chwjiub (96)
+fpbsu (89)
+qyoqb (19)
+dfeomzr (38)
+kfhnhm (9)
+oevyknd (56)
+buoakk (22)
+wduqgix (77)
+qokscr (65)
+oqbdf (25)
+jjsvfy (199) -> yoivja, gdnsat
+ssdgbnh (887) -> qtsjbq, plurwe, mhndszl, hlcbqu, pgskth, oignan
+lrsedv (213) -> eaqjcju, cekpxgj
+iwkntdi (36)
+qfgzmtz (73)
+rfwgtb (26)
+alcvj (7)
+bvdxf (30)
+ofisj (88)
+mpchqe (27)
+pwizhzr (62)
+wkcyd (75)
+mxzbcqn (81)
+npzdqeg (227) -> tufds, msxhvo, pcsucog
+illjvf (69)
+iyuuh (80)
+fygmpjn (17)
+dvdgowj (5)
+hlcghe (91) -> khibjj, kngbqid
+zvurtb (77)
+ouspx (46)
+dbvxai (76)
+facrq (13496) -> fkbla, ffvprc, yrfqaga, msmgk, hxswghs
+xbcgipi (66)
+wfhyr (37)
+ziyata (221) -> oqlpz, jjtrisl
+muncur (77)
+vlvss (183) -> odvtiti, fazqw
+kvdkwy (96)
+ddldgex (84) -> nqyok, wduqgix
+trtgn (87)
+jitzj (65) -> fvgbg, nbfqgr, zjwpbzs, lndaa, vlvss, gxjvj, zcrjb
+hkhoyje (95) -> frirj, iuhlc
+gtbbuvb (96)
+tfsoxgb (250)
+rohvy (95)
+qhohy (41)
+goimlra (227) -> orxoo, lfxew
+hubbqbi (95)
+vchuc (53)
+svkdyq (9559) -> akmgfo, lhradm, jtauf, aunhcg
+fazqw (76)
+flomey (39)
+apygt (17)
+wjptb (43)
+srhirm (147) -> bicsjoc, dvzlq, olykwbi
+wdeuy (254) -> hubbqbi, rohvy
+yeooycn (93)
+qoyzgsp (28)
+sqkcdf (62)
+rgbvlc (49)
+qinzaf (813) -> aooni, zoewj, ogzrdrk, umlkxqv
+kflize (84)
+isrtfc (201) -> vmutyru, ouymke
+nkhadt (292) -> fppcif, vwnjh, oyvhouc, ekvall, guncf, npzdqeg
+nbbyqsa (40)
+ikfpktb (97)
+maqgick (76)
+xtwdx (156)
+sbyzsq (10)
+vgubuy (74) -> iljwgzf, aihow
+taiho (59)
+cpndnx (11)
+vhtyadn (18)
+aaheijb (54)
+rykadr (19)
+onnylx (32)
+gukuqw (69)
+fooyrq (15)
+zqyua (52)
+vsruoi (55)
+ikmvhid (2745) -> hwovhvw, arsuc, yzrdupu
+vztnh (18)
+khaupo (32)
+cpqti (142)
+qtsjbq (126) -> wekya, rzkcu, alkneau
+pcsucog (42)
+lepja (61)
+ibjvonk (10277) -> xlhfyw, svhbd, misyfn
+rqbjbio (29) -> mqrroj, hjeysaa, wlujpl, vooac, rrggg, yfjenp
+ceuygh (90) -> aqxsjq, qxlucvg
+qzxaqvy (78) -> fwskxtt, jlgvplm
+fwskxtt (84)
+yrkvb (58)
+thdwfw (219) -> umtrod, nhlittn
+zpkbe (73) -> cwtdf, tozktyo, qcrpdy, axtqrx
+hjjkx (87)
+jxyoypa (9)
+ilkqp (40)
+akwvj (238) -> jatnl, iphgmyt, meoeea, gqrfok, ljhwzvv
+lkcddrg (2238) -> lqfyzo, rixnft, hkhoyje
+xprzeeb (19)
+rhodopg (94) -> qfgzmtz, dqdfv
+ttwfig (340) -> rykadr, ykehxw
+kueyf (85) -> ulbbc, nzzfer, azxjd
+zmcgfdp (136) -> tehyhc, obslyn
+ffnabs (20) -> guehoas, nnldikq, ofrwmq, lrsedv, qvkotfd, shfdaba
+arwmalf (143) -> vsgaam, bjabd, ycclns, kkmqko
+gyjpoco (85)
+drmyco (26)
+arqoys (1859) -> urzul, bkvle
+nscav (69)
+tsrogy (69)
+qhafxnl (1337) -> xbcskih, kpxqlr, algqhtz
+yiusa (86)
+zdbqs (43)
+xzppxad (58) -> ltxkw, ollhxuy, qinzaf, wpxxh
+dxyifeb (1862) -> twubx, lkcddrg, uwqgz, uvfyo
+zlzers (49)
+gkkgkp (358) -> wlpyulp, nakmo
+abddskq (50)
+tggkm (43)
+dgwcz (7)
+bhvmgw (29) -> qflouyn, pfphng
+guehoas (283) -> qedst, cijptz, zknziw
+marzlxh (51)
+mizab (60)
+jgkvfa (120) -> ocnna, tcdwurt
+jopjvd (80) -> dnouufu, wjptb
+lwdqnj (25)
+xpzhy (84)
+noipcz (59)
+bbhniy (20) -> itngcua, mmcychg, vugnug, fktsu
+jtjcj (64)
+tgdzl (53)
+gobrf (25) -> gtzcxq, lsdrwz
+arsuc (65) -> rbcqgqv, huwsoc, bnfopv, srqntb, vxdkej, owhjmt
+ogzrdrk (101) -> vztbn, wtxbqe
+oxbkwyr (91)
+yatfpqx (109) -> xrbjn, qywkuqu, thjulip, oiijtm
+jlgvplm (84)
+bcibchp (54)
+glgnecl (16)
+tqikxkp (222)
+bhcal (7)
+vmutyru (47)
+kzwqzqf (46)
+evhsybt (37)
+gdnsat (59)
+cikaze (39)
+jrqorlo (229)
+ovluts (52)
+nbfqgr (169) -> cdpwklz, zjpsm
+nbngkou (73)
+wslsg (31)
+aobitc (69)
+htgxu (24)
+wjolzt (46)
+hzgig (95) -> jrvbacq, rgbvlc
+ulbbc (217) -> bniti, jbepak, iynywq, xbcgipi
+wkphn (7)
+fkbla (207)
+jqinti (52)
+yhiogu (256) -> neusnw, tkpvf
+ebjsluk (39)
+shfdaba (76) -> wpnqet, rjjlus, pjiqvd
+anpnrdt (10)
+jdshuob (491) -> kywfqzv, zpkbe, cfhuce, mzmfygf
+vooac (341) -> lufgosn, sbyzsq, mjpzp
+frohei (59)
+baiaa (15)
+pyrlph (71)
+cgxsmq (25)
+ukvvt (39)
+gaujsyk (26) -> ktaet, yipoeia, qijarlh
+gnjvf (375) -> ajenoz, ripqyzr
+hghnmib (47802) -> vbhnmr, vustse, lybkeg, ikmvhid, oqphsw, xzppxad, gvkcsad
+yrcgsnx (270) -> qfypnb, dbvxai
+kwqrbav (34)
+wdvwub (57)
+viqhfi (89)
+akmgfo (243) -> zhvji, iphncut, oyxbblb, gaujsyk, ybftt
+faecnr (80) -> dfeomzr, yoezrpw
+xskehl (228) -> ubovv, omydd, tluap
+pdosfg (21) -> rlbom, lbjwlov, wgqkdcr
+tkiraal (8)
+aimav (46)
+ecimj (85)
+eikmns (83)
+fqlezvk (71)
+qrlggma (49)
+ztkgsyt (29) -> bfuywyg, uexdnv
+tedplb (50)
+cvrcvgp (86) -> zvurtb, dkcix
+bckuyxm (11306) -> eyyzy, jrwfehi, baesyhf
+ffvprc (65) -> vxajmkg, cichyqw
+jjtrisl (81)
+vantwg (46)
+vlmcmcu (91)
+qdhrchr (89) -> dhwauy, uqlso
+ceoav (29)
+bhrbod (50) -> oxbkwyr, erpvue, zhrnwk, mhjtjp
+yxseri (24)
+kzbvrxk (10)
+kcnim (76) -> zjoxibi, auxqbbc
+ltxkw (30) -> eerktn, nqhdt, jjyjrtr, bfchbs, redqvw, mkrzp, nymguj
+rrggg (371)
+uwqgz (1923) -> torxqh, zmlth, lnctft
+dbwmq (117) -> bmecxwd, lcrwbqi
+kasfuwe (46)
+btbxk (755) -> xajjyba, kxykfr, rymkqd
+njxyw (47)
+fvlfq (94)
+zhvji (162) -> cpazlc, mluykm
+aozoac (77)
+chnkkj (86) -> tfmtk, hddzn
+dkcix (77)
+lxcbjgy (91)
+mofks (30)
+yzrdupu (719) -> wajnxjj, dfvhic, dmkyzy, ziqwzzy
+wxjka (47)
+xitzb (52)
+rvimq (7)
+qddsx (30)
+lvklj (97) -> ydbri, tcukgv
+sjforw (208) -> alcvj, neeqb
+yjvgwdl (91)
+fhxpkd (261) -> kauphp, zdhvqrl, rhnkdt, nhkvp, tejnuve, olspit, srmiagk
+eaqjcju (62)
+ybftt (122) -> oewzluz, ebjsluk
+jgmisxl (49)
+hdaqxlh (11)
+cjmxed (49)
+aqxsjq (84)
+cekpxgj (62)
+tetmzw (121) -> ozatmpe, qbmtmcs
+mqmbcl (96)
+xtyzy (155) -> yhiogu, iphzyj, pvppi, tojyt, krxyaak, ymrogz
+drwfop (48)
+pgskth (86) -> hxckb, lxesg
+pvgzz (72)
+kunzpa (687) -> tadnt, cupsjm, hoomyh
+nhkeb (252) -> caryo, bhcal, mjzksjz, ufitse
+cncak (182) -> qoyzgsp, lpuass
+aituccf (9)
+qfpwln (60)
+laxsl (29)
+yzxzo (38)
+lnctft (116) -> zgevpxx, scchi
+lyvyhkm (8)
+vcktg (1556) -> ztghd, imihjj, ksfok
+dzbrgb (75)
+xbcskih (85) -> fobzai, nxzkuj
+jtouvtb (57)
+ufitse (7)
+upwlxnb (7)
+jysaup (78)
+ysgsry (228) -> glgnecl, xnuoujm
+horqcc (73)
+vfsttaj (27)
+gvkcsad (5412) -> ghsjtj, dgnjf, ziyata, rajtef, kqlsniq, vqclii
+lbjwlov (79)
+vnhvilk (62)
+dntphko (89)
+syzlt (6183) -> tifgptk, iwhqlr, akwvj, kueyf
+hzmhm (1087) -> rvrlma, dchts, emzrj
+neusnw (47)
+vfzby (50)
+cecsr (59)
+uwaiki (41)
+msxhvo (42)
+fgjwz (113) -> qwzmv, xehdglb, kgpwo
+lmuyfcw (164) -> hrovawq, hacwv
+zjoxibi (87)
+viwns (17)
+olykwbi (33)
+meypo (29)
+sbguah (49) -> vlfouc, lficpr
+oyxbblb (92) -> towlhi, fndxl, uxjasn
+bzmade (66)
+lfpzff (238) -> bdinafh, kfmzbvk
+epuaii (88) -> ckheb, kwqrbav
+dwwsu (27)
+xnukvni (207) -> htgxu, lwvnbzs
+zhrnwk (91)
+vfngjd (325) -> hfftu, nymhem
+vztbn (87)
+kxnkbs (19) -> tpipb, vuyzhsh, vapwxei, wbxdta
+bmecxwd (27)
+nymguj (123) -> vkpltts, mbhld
+qlwxeb (52)
+kfrti (10)
+xcvxle (106) -> qddsx, bvdxf
+wbesqn (99)
+kblshw (8)
+qymwy (41)
+ezaypy (9)
+dnouufu (43)
+cyapi (227) -> rothisa, hokyk
+itbsk (30)
+alqim (42)
+hjeysaa (251) -> mofks, itbsk, njogewi, ldfopw
+ljfqvk (44)
+iueejt (5) -> rgfndsx, bhrbod, puwvse
+knzppj (81) -> hrlkgen, nsfsj, wbesqn
+wnjwnr (197) -> hnyqq, oajawn
+xtwdau (77)
+dmeee (93)
+qxfce (38)
+pcqyagx (15)
+bicsjoc (33)
+eeguu (78)
+wbxdta (61)
+gjwaqu (35)
+mzmtuw (95)
+huwsoc (173) -> ouspx, wjolzt
+spdhhoe (167) -> chwjiub, kvdkwy
+hhmwlo (56)
+icgwppo (84)
diff --git a/2017/inputs/day_8.txt b/2017/inputs/day_8.txt
new file mode 100644
index 0000000..7b63126
--- /dev/null
+++ b/2017/inputs/day_8.txt
@@ -0,0 +1,1000 @@
+ev dec -705 if cag != 2
+b dec -195 if ty >= -8
+red dec -404 if v > -7
+d inc -971 if k >= -9
+k inc 303 if k > -8
+cag inc 539 if ev > 697
+ev inc -11 if d <= -963
+alf inc -634 if xoc < -2
+eb dec 927 if b <= 201
+e dec 67 if eb >= -930
+he dec -29 if qby < 8
+cox inc 193 if b >= 188
+red dec 340 if alf >= -7
+k dec 8 if red > 57
+eb inc -606 if e <= -75
+xoc inc 337 if red == 64
+xoc inc 186 if mk == 0
+cox inc 840 if npo >= -5
+s inc -449 if anb != -3
+eb inc -233 if npo < 2
+npo inc -808 if mk <= 9
+eb dec 139 if eb > -1161
+ty inc -929 if ty > -7
+mk inc 789 if d > -977
+red dec 915 if k < 299
+anb inc 852 if mk == 789
+red dec 242 if swy == -6
+e inc -29 if cag < 546
+alf dec -219 if cag > 535
+red dec -298 if ty < -921
+tm dec 175 if obo <= 2
+alf dec 553 if eb != -1298
+alf inc -870 if s != -449
+v dec 744 if cox < 1036
+d dec -720 if he > 24
+ty inc -201 if k <= 301
+xoc inc 956 if v > -744
+s dec 539 if e >= -100
+mk dec -37 if anb != 852
+mk dec 833 if tm < -167
+ev dec -410 if ev < 686
+s dec 77 if cag != 539
+anb inc 917 if swy >= -2
+obo dec -5 if s >= -997
+qby inc -231 if tm == -175
+ev dec 378 if tm <= -167
+b dec -106 if s < -985
+s dec 301 if e < -89
+npo inc 232 if b == 301
+red dec -960 if mqk < -9
+he inc -789 if k == 300
+npo dec 826 if cox < 1033
+e inc 101 if k > 291
+v inc -898 if he > 27
+alf inc 141 if anb > 1767
+red inc -613 if e < -2
+tm inc -151 if cag >= 530
+k inc -346 if b != 305
+he dec 967 if cag <= 546
+ev dec -931 if cag < 543
+swy dec 309 if qby < -228
+d inc 437 if cox > 1030
+ty dec 586 if ev <= 1249
+alf dec 299 if e <= -2
+d inc 977 if xoc == 523
+d inc 594 if s <= -1282
+ev inc 21 if swy < -306
+qby dec -722 if cag < 543
+k inc -381 if ev < 1259
+alf inc 847 if anb > 1764
+k inc 126 if s <= -1292
+eb inc -109 if mqk > -4
+obo dec 900 if swy < -300
+obo dec 364 if mk <= -35
+swy inc -211 if eb >= -1416
+ty dec -680 if mqk <= 1
+ty dec -235 if cox > 1024
+cag dec -261 if red <= -559
+obo dec -897 if mqk == 0
+tm inc -981 if mk < -49
+ty inc -805 if eb >= -1402
+mk inc 278 if red < -552
+ev inc 63 if v > -1645
+swy dec -388 if xoc <= 530
+mqk inc 187 if obo != -357
+s inc 416 if b < 309
+qby inc 399 if mqk >= 185
+red inc -680 if mqk != 188
+he inc -981 if eb >= -1407
+d inc 225 if tm >= -327
+he dec 158 if d <= 1991
+d dec 74 if qby == 890
+k dec -930 if anb <= 1770
+s dec -546 if mqk == 179
+ty dec 733 if k >= 874
+ev dec 581 if obo == -362
+cox dec -922 if obo == -362
+obo dec 922 if e == 5
+d inc -948 if tm == -326
+cag inc 161 if mk <= 241
+eb inc -580 if e != -1
+anb inc -632 if qby != 889
+red dec -285 if mk <= 239
+qby inc 550 if eb >= -1997
+e dec 930 if k > 869
+eb inc 604 if swy > -138
+obo inc 383 if he != -1100
+s dec -89 if eb <= -1377
+qby dec -821 if ty < -1532
+ty inc 940 if qby >= 2257
+alf inc -421 if swy != -123
+qby inc 787 if b != 293
+alf inc -80 if b < 301
+b dec 205 if eb <= -1378
+qby dec 870 if obo != -892
+d inc 183 if swy == -132
+s dec -81 if mqk != 187
+swy inc 976 if d >= 1138
+red dec 281 if anb == 1138
+xoc inc 681 if d < 1141
+v dec 14 if obo > -902
+he dec -525 if xoc <= 530
+v inc -866 if red >= -955
+cag inc -835 if mk != 240
+qby inc -549 if s <= -781
+eb dec 584 if mk >= 229
+qby dec -711 if obo >= -904
+ev inc -400 if anb <= 1144
+k inc 82 if swy >= 840
+e dec -415 if mk != 229
+red dec -923 if anb > 1128
+v dec 602 if b != 86
+ty dec -699 if ev > 346
+xoc dec 549 if k > 968
+k inc 317 if qby < 2343
+npo dec 919 if d >= 1137
+e inc 421 if e > -519
+eb dec -104 if ev <= 351
+b inc 368 if qby != 2342
+mk dec -987 if ev == 357
+eb dec -509 if alf <= 236
+obo dec -380 if v != -3127
+npo dec -790 if b < 455
+xoc inc 405 if k < 1287
+obo dec -56 if b < 465
+swy dec 194 if k != 1281
+red inc -562 if tm <= -326
+swy dec 75 if e <= -86
+obo dec -4 if ev == 350
+e inc 533 if xoc < 931
+cox inc -584 if d < 1146
+swy inc 506 if eb >= -1354
+obo dec 458 if k >= 1279
+swy inc 447 if e > 447
+qby dec 847 if cox <= 1377
+xoc inc 225 if xoc < 931
+obo dec 301 if b > 462
+cag inc -740 if e > 438
+tm dec -83 if e <= 447
+tm dec -151 if cag <= -866
+npo inc 26 if s < -784
+v inc 12 if cox != 1368
+eb inc -399 if ev > 340
+eb dec 780 if d == 1143
+e dec 87 if tm == -91
+k dec -13 if anb <= 1139
+v dec 829 if swy >= 567
+k dec -229 if ev < 351
+qby inc 972 if xoc == 1143
+s inc 609 if s >= -789
+mk dec -931 if ev > 346
+mqk inc -605 if cag > -880
+v inc 302 if anb <= 1139
+mk dec 342 if v > -3647
+xoc inc -905 if k <= 1523
+qby inc -412 if qby == 1493
+v dec -548 if d > 1142
+xoc inc 311 if obo >= -771
+npo inc -955 if xoc < 551
+swy inc -885 if mk > 821
+ty dec 91 if ty >= 100
+s dec -840 if npo <= -1492
+qby inc 158 if ev > 342
+ev inc 227 if cag >= -878
+alf dec 612 if tm <= -92
+ev inc 395 if he <= -572
+s inc 570 if swy > -311
+s inc 283 if alf > -382
+xoc inc 297 if tm >= -94
+v dec 100 if d != 1153
+cag inc 928 if ty <= 19
+tm inc 829 if obo > -765
+alf inc -94 if ty >= 8
+ty inc -224 if cox <= 1367
+obo dec -352 if d > 1137
+mqk inc 223 if ev <= 580
+cag inc 55 if eb >= -2541
+red dec 969 if alf > -474
+alf inc -564 if e != 447
+qby inc -97 if obo < -400
+red dec -530 if cag > 107
+ev inc -579 if he > -574
+tm dec -788 if eb <= -2528
+alf inc -217 if v > -3191
+tm inc 635 if cox >= 1362
+tm inc -217 if mqk < -189
+cag dec -547 if v != -3191
+red dec -241 if alf > -1045
+red inc -492 if b <= 473
+he inc 46 if b > 454
+xoc inc 86 if ty > 8
+d dec -755 if qby < 1140
+mk inc -347 if obo <= -405
+v dec 870 if npo >= -1497
+npo inc 216 if red != -1287
+anb inc -574 if obo > -414
+ev inc -364 if eb == -2534
+anb dec -825 if npo < -1277
+k dec 587 if cox < 1372
+anb inc -888 if obo > -401
+swy dec -435 if npo != -1283
+e dec 551 if e != 444
+swy dec 772 if alf == -1036
+tm dec -339 if e == 444
+swy dec 259 if mk == 470
+xoc inc -224 if ev >= -359
+ty inc 265 if red >= -1279
+obo dec 449 if mqk > -202
+d inc 891 if e >= 438
+cag dec 606 if b >= 461
+mk inc -894 if v != -4064
+cag dec -128 if d != 2034
+eb dec 723 if eb <= -2528
+swy inc -12 if s < 1525
+s inc -569 if d == 2032
+npo inc 326 if alf >= -1038
+cox dec -213 if anb == 1379
+obo dec -222 if d > 2026
+ev dec 809 if anb == 1393
+s inc -637 if alf != -1037
+s dec -892 if xoc == 942
+eb inc -248 if cag != -491
+b dec 499 if qby != 1142
+b dec 543 if d <= 2033
+mk inc 345 if mk < -411
+ty dec -284 if npo != -960
+d dec -327 if eb < -3498
+cag inc -743 if mqk > -196
+cag dec 708 if ev > -374
+eb inc 935 if swy == 113
+d dec -908 if swy == 113
+npo inc -753 if swy == 113
+cag dec -227 if alf > -1045
+red dec -658 if v <= -4061
+cox inc -66 if anb < 1397
+cag dec -209 if b > 463
+cox inc -245 if alf != -1037
+alf dec -212 if s >= 2402
+d inc 590 if d >= 3273
+xoc inc -325 if xoc > 935
+red inc 935 if he >= -519
+tm dec 332 if ev >= -366
+cag inc 583 if xoc <= 615
+e inc -892 if e >= 439
+npo inc -628 if obo > -629
+red inc -819 if tm <= 1958
+qby dec -960 if ev > -372
+red dec -781 if tm < 1959
+cox inc -831 if xoc < 621
+b inc -830 if ty >= 559
+anb inc 654 if cag < -1507
+cag dec 995 if red >= -659
+npo inc 356 if b < -361
+tm dec 286 if qby > 2093
+mk dec 369 if ty <= 569
+mk dec -971 if qby != 2112
+swy inc 137 if xoc > 617
+alf dec -743 if npo > -1355
+alf inc 39 if ty < 569
+tm dec -42 if s <= 2413
+anb inc -685 if alf != -48
+ty dec 660 if anb <= 1360
+npo dec 313 if ev < -359
+cag inc -611 if obo >= -646
+tm inc 728 if v <= -4067
+swy inc -4 if cag != -3124
+npo inc 359 if xoc >= 613
+obo inc 694 if b != -358
+obo dec 439 if e >= -452
+npo dec -160 if xoc <= 626
+red inc -659 if e <= -439
+b inc -445 if obo == -382
+red dec 543 if k > 931
+s dec 274 if qby != 2093
+cag dec -338 if k <= 934
+alf dec -211 if alf == -45
+v dec -451 if tm == 1706
+obo dec -465 if v > -3606
+k inc 415 if qby > 2100
+anb dec 220 if swy == 109
+alf inc -3 if cox < 477
+d dec 164 if s > 2131
+qby dec -974 if alf >= -40
+cag dec 891 if anb < 1146
+d dec -337 if qby > 2100
+cag dec -628 if d != 3442
+k dec -648 if alf == -46
+red dec -329 if k == 1996
+e inc -891 if alf <= -38
+cox inc -626 if ty >= -99
+mqk inc -349 if mqk >= -204
+alf inc 388 if qby > 2092
+mk inc -430 if d > 3443
+eb dec 338 if alf < 352
+mk inc -215 if cox == -147
+e dec 171 if b >= -819
+alf dec -205 if d != 3433
+d inc -490 if qby == 2102
+e inc 612 if he > -528
+anb inc -811 if mqk > -543
+he inc 685 if cox >= -154
+red dec -748 if anb <= 1129
+ty dec -872 if ty >= -97
+b inc -920 if eb == -2908
+s inc -701 if mqk >= -548
+tm inc 136 if alf > 545
+he dec -100 if e != -898
+qby inc 552 if anb >= 1132
+xoc inc 700 if xoc == 617
+xoc dec 827 if obo != -385
+anb inc 738 if d != 2956
+eb inc 476 if mqk == -544
+s dec -100 if ev == -366
+obo inc -602 if e == -898
+tm inc -80 if xoc == 490
+eb inc 160 if eb == -2432
+he inc 229 if he == 159
+tm inc 453 if b > -1739
+obo dec 786 if qby < 2655
+swy inc -120 if qby != 2651
+ev dec -382 if obo != -1770
+qby dec 41 if eb < -2265
+cox inc -991 if obo > -1765
+cag inc -713 if obo > -1773
+he inc -958 if red <= -1522
+ty inc -426 if mqk != -551
+k inc 902 if ty == 349
+npo dec -550 if eb < -2274
+swy inc -30 if d < 2954
+anb dec 990 if npo < -1139
+ty dec 301 if red >= -1529
+ev inc -687 if ty > 347
+ty dec 261 if he <= -802
+b dec -313 if ev < -1043
+alf dec 231 if k != 2889
+npo inc 956 if qby >= 2618
+cag inc -39 if npo <= -1135
+he dec 117 if qby > 2605
+v inc -574 if cag > -4421
+npo inc -179 if mk <= 538
+v inc -737 if he < -910
+npo inc 722 if swy < -37
+mk inc 200 if alf != 313
+npo dec -604 if mqk == -544
+ev dec -794 if ev > -1048
+eb inc -384 if npo == 3
+he dec -10 if qby != 2614
+e dec -317 if e > -906
+e inc -662 if d >= 2946
+s inc 941 if npo != 0
+xoc inc 765 if e <= -1235
+b inc 434 if ty > 354
+e inc 513 if anb > 880
+cox inc 146 if mk > 734
+mk inc -31 if alf == 316
+qby inc 887 if mqk == -547
+obo dec -87 if mqk != -536
+he inc -230 if tm != 2217
+e dec -469 if alf < 326
+alf inc 608 if d != 2950
+mqk dec -78 if v < -4355
+b inc -865 if ty < 356
+s dec 57 if npo < 7
+npo dec -100 if cag > -4428
+cag inc -217 if red > -1522
+b dec 338 if k == 2898
+npo inc -324 if k <= 2906
+mk dec -763 if obo >= -1687
+e inc 760 if d > 2945
+e dec 984 if v == -4350
+obo inc 651 if he <= -1126
+red dec -380 if d >= 2950
+b inc 11 if k > 2888
+v dec -406 if red <= -1142
+anb dec -900 if e <= 501
+ty inc -2 if mk != 1471
+tm dec -655 if qby > 2619
+k inc 142 if mqk < -540
+ev inc -346 if xoc != 1265
+xoc dec -284 if k >= 3032
+d inc -908 if k == 3040
+e inc 36 if swy == -41
+xoc dec 372 if alf != 930
+s dec -327 if xoc != 1159
+e inc 56 if ty < 343
+v inc -445 if npo == -221
+xoc dec 265 if s >= 2746
+k dec 604 if swy >= -42
+alf inc 918 if eb > -2662
+mk inc -227 if cox != -150
+cox dec -693 if qby <= 2614
+d inc 88 if k != 2434
+tm dec -278 if k > 2428
+v dec 384 if red <= -1145
+npo inc 854 if ev != -1390
+he inc 69 if xoc >= 893
+d inc 587 if eb <= -2650
+b dec 873 if anb == 1785
+tm dec -557 if mk != 1230
+k dec -335 if k <= 2437
+d inc -215 if cag != -4424
+obo dec -754 if red == -1140
+d inc 369 if v != -4766
+tm dec -12 if red >= -1155
+anb dec -836 if xoc <= 892
+s inc -170 if cag <= -4422
+k dec -717 if mk != 1234
+npo inc -790 if k >= 2764
+obo dec -87 if red <= -1157
+v dec -894 if ev >= -1401
+cag inc -440 if swy >= -49
+e inc 31 if d > 3091
+v dec -581 if he != -1057
+anb dec 760 if k <= 2775
+swy dec 513 if v != -3295
+s inc 840 if mk > 1242
+npo dec -359 if mqk > -549
+red dec -958 if ev >= -1403
+ty dec -246 if qby != 2617
+k inc -28 if cox <= 544
+npo inc -881 if cox > 545
+ty dec -733 if ev < -1391
+e dec 750 if cag <= -4863
+cox dec -44 if alf < 1843
+mk inc 751 if ev < -1390
+he inc -968 if mk > 1980
+d dec -431 if npo != 202
+v inc 406 if xoc != 902
+tm inc 635 if mk <= 1991
+npo dec 401 if anb <= 1022
+v dec 940 if obo >= -1034
+npo dec 572 if qby < 2619
+swy inc 934 if anb != 1021
+eb inc 499 if swy == 893
+mqk inc 17 if s < 2568
+mqk dec -704 if alf != 1836
+ty inc -301 if mqk != 162
+npo dec 29 if cox >= 579
+alf inc -677 if npo > -409
+mk dec -399 if npo == -399
+cox dec 639 if e == -213
+ev inc 602 if qby < 2617
+ev dec -238 if eb != -2149
+mqk inc 26 if k > 2734
+anb dec -153 if v > -4238
+b inc -331 if cox != 584
+mk dec 411 if s > 2574
+xoc dec -631 if xoc == 902
+mqk dec 795 if d != 3083
+swy dec -911 if anb > 1184
+anb dec 368 if e >= -217
+b dec 463 if qby != 2612
+qby dec -127 if v <= -4226
+alf inc -848 if npo != -409
+obo dec -499 if s >= 2571
+swy dec 165 if v < -4225
+alf dec 71 if mqk == -609
+b dec -717 if d != 3090
+cag inc 721 if tm <= 3694
+xoc inc 304 if ty > 1033
+swy inc 728 if d < 3096
+tm inc -690 if eb >= -2163
+qby inc 979 if ty == 1025
+s dec -175 if swy >= 1449
+s dec 639 if he > -2038
+mqk dec 615 if red <= -189
+he dec 481 if cox >= 578
+anb inc -329 if xoc <= 1532
+anb inc 350 if red != -192
+obo inc 720 if s != 2108
+ev dec -316 if s > 2111
+mqk inc 322 if alf == 246
+d dec -723 if cox > 580
+b inc -301 if alf >= 254
+cox dec 847 if xoc > 1528
+v dec -298 if cox <= -254
+eb dec -842 if cag != -4874
+he inc 483 if eb != -1324
+b inc -160 if npo >= -400
+tm dec 885 if obo == 187
+anb inc -505 if tm <= 2129
+red dec 387 if e < -212
+e dec 761 if npo <= -397
+he dec 303 if tm == 2128
+s dec 308 if b < -3718
+mqk dec -207 if he > -2041
+ev inc -655 if xoc != 1533
+s inc -601 if d > 3809
+ev dec 666 if cox < -256
+ty inc 384 if he != -2041
+v inc -560 if ty >= 1403
+ty inc 446 if obo != 194
+obo inc -570 if cag != -4868
+obo inc 21 if k == 2743
+cox dec -183 if mk != 1973
+s inc -780 if eb <= -1306
+b inc -173 if tm != 2131
+b inc 489 if v > -4488
+swy inc 337 if s < 431
+ty inc 36 if alf >= 240
+xoc inc -941 if s < 427
+xoc dec -533 if xoc <= 600
+eb dec 269 if swy == 1795
+eb inc -718 if swy < 1796
+xoc dec 319 if eb <= -2039
+ev dec 855 if npo < -390
+v inc 208 if d >= 3805
+d inc -846 if tm == 2122
+red inc -636 if mk <= 1977
+d dec 695 if ev == -1764
+e dec -864 if cox == -268
+v dec -913 if d == 2270
+alf inc -364 if cox > -270
+he dec -211 if cag != -4862
+b dec 624 if b != -3887
+v dec -953 if b < -4514
+ty dec 631 if b < -4518
+e dec -496 if obo <= -367
+d dec -911 if cag >= -4872
+mk inc -549 if xoc >= 1117
+alf dec -586 if e <= -971
+cag dec -919 if k == 2743
+qby inc -803 if cag <= -3943
+k dec 18 if k > 2734
+ty dec 537 if qby > 2909
+swy dec 973 if tm >= 2122
+d dec -502 if qby == 2916
+ty inc 50 if he >= -1816
+cag dec 344 if e > -985
+cag inc -967 if anb < 311
+ev inc 193 if npo != -393
+ev inc -934 if cag >= -5265
+ev dec 416 if d == 3683
+ty inc -963 if d < 3688
+s dec -904 if s <= 424
+b dec 52 if b >= -4524
+alf inc -427 if obo <= -363
+red dec -686 if cox > -268
+b dec 551 if mqk == -695
+xoc dec -670 if v > -2428
+anb inc 310 if ty >= 401
+ev dec 768 if red < -519
+tm dec -391 if k == 2725
+b inc -624 if xoc < 1797
+s inc -962 if ty != 391
+xoc inc -482 if mqk > -703
+alf inc -110 if v < -2418
+mqk inc -812 if s < 1329
+cag dec -584 if red >= -529
+qby dec -503 if npo >= -405
+npo dec -592 if npo <= -396
+anb inc -611 if anb < 313
+anb inc -537 if red < -538
+eb inc 781 if cag < -4664
+xoc dec -241 if he >= -1821
+k inc -974 if swy >= 816
+eb dec -649 if ev > -3690
+he dec 258 if b > -5750
+cag inc -618 if tm >= 2513
+b inc -132 if npo == 190
+cox inc -187 if mk > 1427
+tm dec 244 if npo <= 198
+cag inc -21 if alf != 350
+npo inc -332 if ev >= -3696
+obo inc -144 if ev < -3698
+npo inc 652 if k >= 1744
+anb inc 682 if b > -5739
+mk dec -585 if eb > -607
+ty dec -395 if red <= -521
+d dec -118 if cox < -260
+obo dec 97 if d < 3797
+mk inc 561 if s != 1327
+mqk inc 341 if xoc < 1558
+eb dec 136 if xoc >= 1546
+eb dec -144 if b == -5744
+b dec 416 if xoc < 1560
+e inc -688 if red <= -520
+cag inc -846 if cox <= -264
+e inc 858 if mk >= 2009
+d inc 120 if mqk < -1165
+eb inc 275 if anb < -304
+d dec 426 if e <= -801
+obo inc -175 if alf == 358
+b inc 411 if v > -2433
+anb dec -285 if qby != 3420
+e inc -899 if cox != -257
+ty inc 764 if xoc >= 1552
+eb inc 157 if tm == 2273
+alf dec 416 if xoc <= 1562
+mqk inc -251 if d <= 3498
+s inc -405 if e != -1698
+he dec 280 if v < -2419
+mqk dec 783 if e == -1705
+s dec -530 if mk > 2013
+cox dec 601 if qby >= 3421
+alf dec -214 if cox <= -253
+cox inc -280 if v < -2418
+obo inc -617 if k > 1749
+tm dec 400 if v >= -2427
+obo inc -810 if swy == 820
+cag inc 245 if red < -524
+k inc 939 if obo < -1973
+xoc inc -867 if d != 3499
+ev inc 930 if ev >= -3690
+npo inc 490 if npo == 513
+obo dec -127 if tm <= 1874
+v inc -937 if cox < -539
+cox inc 806 if eb < -315
+tm inc 868 if b == -5749
+d inc 370 if cox != 264
+mk dec 735 if d >= 3488
+v dec 651 if tm >= 2736
+d dec 751 if d == 3495
+eb inc 73 if eb == -320
+anb inc 946 if mqk >= -2202
+k inc -879 if tm != 2731
+cag dec 329 if cag >= -5075
+v dec 110 if npo <= 998
+cox inc -324 if v != -4012
+s dec -43 if xoc <= 688
+xoc inc 154 if ty <= 1552
+npo dec 126 if e == -1705
+mqk inc 631 if qby < 3428
+obo dec 875 if k < 882
+eb inc -159 if d >= 2737
+ty inc 158 if mk < 1266
+cox inc -726 if cox != -65
+red inc 699 if he <= -2352
+anb dec 348 if he == -2353
+mqk dec -25 if cox <= -792
+he inc -72 if ty == 1550
+tm dec -396 if obo >= -2712
+mqk inc -730 if alf >= 153
+ty inc 950 if b <= -5741
+qby inc 711 if b <= -5747
+he inc 990 if ty == 2500
+eb inc 691 if cag <= -5394
+v dec 315 if v >= -4001
+cag inc 831 if k == 872
+cag dec -285 if s != 974
+tm inc 500 if k >= 865
+ty inc -407 if ev >= -2761
+ev dec -960 if v >= -4019
+anb dec 698 if cox < -781
+swy dec 265 if cox <= -783
+e dec -962 if anb < 237
+he dec -152 if swy != 555
+npo dec -416 if alf < 159
+red dec 450 if qby > 4127
+cag inc 253 if s <= 964
+cox dec -969 if tm <= 3634
+e dec 442 if qby < 4135
+mk dec 890 if qby > 4128
+cag dec -934 if ty != 2085
+cox dec 905 if k != 876
+red inc 595 if k <= 862
+b inc 105 if npo > 1286
+obo dec 502 if mk == 394
+ty dec 533 if obo != -2718
+ev inc -6 if mk < 386
+npo inc -144 if d < 2746
+e inc -232 if ev >= -1813
+alf inc -78 if ty > 1553
+eb inc -637 if ev != -1796
+tm dec 132 if e != -1425
+swy inc 667 if alf == 78
+red dec -166 if mk <= 387
+swy dec -173 if v >= -4014
+qby inc 788 if qby > 4121
+ty dec 172 if qby <= 4919
+red dec 447 if tm == 3501
+obo dec 366 if alf == 78
+he dec -842 if mqk != -2305
+xoc inc -10 if d >= 2736
+ev inc 517 if cox != -726
+mqk dec 865 if npo != 1151
+obo inc 29 if red <= -552
+qby inc -337 if b == -5644
+cag dec -970 if mqk != -3172
+e dec 343 if xoc != 827
+d dec -890 if v == -4017
+v dec 793 if anb > 220
+cox dec -442 if he == -599
+eb dec -759 if anb > 225
+obo dec 45 if k == 872
+obo dec -534 if e > -1764
+cag inc 344 if npo >= 1149
+eb inc -458 if e <= -1764
+obo dec 55 if mqk > -3167
+s dec -487 if v > -4813
+xoc dec -51 if d >= 2744
+ty dec 568 if ty >= 1387
+cag inc -698 if cox <= -276
+cag dec 162 if mqk > -3170
+k inc 563 if qby > 4579
+alf inc -784 if tm >= 3498
+mqk dec 520 if obo > -2624
+npo inc -780 if qby > 4576
+alf dec 152 if he >= -602
+v inc -614 if eb <= 415
+he dec 659 if k < 1445
+ev inc -49 if d >= 2740
+e dec 302 if v >= -5424
+ty dec -877 if alf < -867
+qby inc 368 if swy != 1394
+anb inc 732 if swy < 1396
+mk inc 61 if ev > -1344
+b inc -66 if cox == -280
+npo inc 11 if swy <= 1397
+swy inc 292 if alf >= -852
+red inc -606 if mqk == -3684
+e dec -460 if cox > -272
+s dec -469 if cag > -2898
+tm dec -717 if obo > -2618
+xoc dec -796 if cag != -2893
+ev inc -145 if tm < 4222
+e dec 892 if red == -1167
+red inc -403 if red == -1164
+tm dec 519 if npo != 389
+cag dec -107 if cag <= -2900
+ev inc -385 if d > 2743
+qby inc -444 if alf <= -857
+ev inc -201 if swy != 1398
+npo dec -851 if s >= 1922
+s inc 975 if s <= 1923
+alf inc -906 if v != -5413
+obo dec 870 if ty >= 815
+obo inc -26 if anb == 959
+e dec -65 if e <= -2951
+ty dec -835 if anb == 958
+anb dec -49 if swy > 1394
+mk inc -253 if mqk <= -3680
+e dec -862 if b != -5708
+qby dec -293 if s == 2896
+s inc -845 if cox != -271
+xoc inc 509 if npo >= 387
+obo dec -758 if mqk >= -3675
+v inc 370 if b < -5703
+cox dec -986 if red >= -1172
+b inc -682 if d >= 2739
+k dec 568 if v >= -5055
+mk inc 451 if alf == -1764
+ty inc -56 if mk <= 645
+eb dec 173 if s <= 2051
+s inc 836 if ty != 764
+alf dec 345 if cag <= -2887
+cox dec 206 if k != 867
+eb inc 44 if s > 2053
+d dec -294 if cag <= -2891
+he dec 904 if swy >= 1386
+ty dec 499 if swy < 1399
+e dec 891 if tm > 3698
+b dec -732 if v < -5057
+qby inc 722 if red != -1168
+e inc -609 if npo != 379
+b inc 741 if e < -3525
+b inc -833 if tm >= 3701
+red inc 282 if ev > -2072
+obo dec 441 if b < -5647
+xoc dec -612 if anb != 1005
+s dec 67 if mk > 647
+cox dec -341 if red > -879
+v inc 316 if qby <= 5519
+mk inc -251 if ty == 271
+ty dec 587 if b <= -5658
+anb dec 204 if d < 3044
+he dec -358 if qby < 5521
+s dec -594 if obo < -3946
+xoc dec -802 if d > 3029
+alf dec -536 if alf <= -2105
+tm dec 209 if cox <= 711
+s inc -142 if anb > 809
+s inc -571 if mqk >= -3676
+npo inc 607 if alf == -1563
+swy inc -438 if swy >= 1388
+b inc 325 if xoc != 3092
+k dec 338 if s <= 2650
+cag dec -748 if he == -1804
+npo inc -186 if npo <= 382
+cag inc -920 if tm != 3483
+swy dec 288 if mk >= 652
+ty dec 362 if mqk != -3685
+alf inc 291 if anb == 811
+mqk inc 203 if red == -890
+swy inc 712 if eb >= 231
+ty dec 327 if v > -5052
+npo inc -453 if mqk == -3684
+cox inc 747 if mqk < -3685
+qby dec 844 if cox >= 698
+cag inc 785 if swy != 1659
+red dec -820 if xoc > 3086
+anb inc -2 if cox < 709
+cox inc 91 if cag <= -2280
+cox inc 988 if mk <= 643
+ev inc 895 if ty != -433
+red dec -411 if npo == -259
+npo dec 831 if npo > -261
+k dec 799 if mk == 643
+qby inc 373 if v != -5054
+e inc 949 if swy > 1668
+qby inc 278 if d > 3037
+eb inc -839 if obo != -3946
+mk dec 758 if anb <= 800
+npo inc -662 if s != 2642
+e inc -807 if e < -2575
+cag inc 755 if swy <= 1669
+e dec -532 if swy > 1662
+alf dec -4 if eb <= -596
+swy dec -552 if ev <= -1170
+d dec -857 if cox != 1700
+anb dec -31 if anb > 798
+eb dec -482 if npo < -1759
+ty inc 820 if d == 3897
+xoc inc -846 if v >= -5054
+alf dec 312 if d != 3895
+obo dec -531 if npo >= -1752
+b dec 722 if ev > -1177
+d inc 912 if ev == -1173
+e inc -497 if cag <= -1514
+b dec 551 if eb <= -599
+mqk dec -130 if alf >= -1576
+obo dec 426 if s >= 2649
+mqk inc 672 if cox >= 1698
+red inc -879 if alf <= -1568
+he dec -503 if cox != 1687
+tm dec 117 if ev != -1173
+he dec 237 if mk < 645
+qby inc 189 if eb != -601
+k inc 820 if k < -279
+mqk inc -594 if obo <= -3421
+k dec 375 if v > -5041
+cag dec 298 if d != 4807
+b inc 985 if ev != -1163
+tm inc -697 if cox >= 1687
+v dec -940 if swy >= 2212
+k inc -260 if d >= 4806
+ty dec 73 if k < -526
+swy inc -530 if s <= 2654
+mqk dec 636 if swy >= 1686
+d inc 32 if qby <= 5516
+v inc -809 if v <= -4103
+e dec 380 if k != -540
+ev inc -651 if b == -5939
+qby inc 352 if alf >= -1576
+v inc -256 if obo > -3416
+mqk dec 28 if red <= -527
+alf inc 395 if npo > -1762
+ev dec 317 if d < 4837
+cag inc 74 if red >= -528
+mk dec -575 if anb == 833
+cag dec 744 if obo == -3421
+mk dec -455 if qby == 5868
+k inc 350 if cag <= -2266
+d inc 730 if npo <= -1749
+ty dec 180 if mk != 1673
+xoc inc 364 if cox == 1694
+anb inc 937 if cox == 1694
+s dec 459 if tm >= 2785
+cox inc -594 if cag != -2271
+cox dec 874 if cox > 1102
+xoc dec 289 if alf > -1178
+e inc -178 if obo < -3413
+red dec -965 if obo >= -3416
+npo dec -47 if ty == -497
+alf inc -264 if npo < -1697
+v inc -518 if alf == -1429
+red dec -264 if swy == 1697
+k inc 540 if obo > -3415
+ev dec 208 if tm != 2799
+npo dec -967 if tm >= 2788
+xoc inc 106 if swy == 1691
+eb dec -276 if s >= 2185
+b inc -151 if mqk == -4812
+he dec 120 if he <= -1534
+e inc -236 if cox >= 1091
+tm dec -25 if alf == -1436
+xoc inc 618 if s == 2186
+b dec 269 if qby != 5876
+cag inc -911 if cag != -2267
+mqk inc -68 if he == -1658
+alf inc -267 if ev > -2035
+cag dec -228 if npo < -733
+k inc -527 if cag > -2043
+qby inc 341 if red == -533
+xoc dec 539 if mqk >= -4879
+d dec 884 if ev == -2032
+mk dec -837 if ty == -497
+tm inc -879 if k == -707
+k dec -32 if tm > 1907
+e dec 771 if ev > -2026
+qby inc -732 if s <= 2192
+ev dec 629 if swy < 1700
+obo dec -799 if e > -4138
+e dec -954 if k >= -683
+ev inc 177 if eb == -329
+d inc -151 if cag < -2032
+b dec 967 if alf > -1711
+e dec 836 if b == -7326
+he dec -543 if eb > -337
+d inc 478 if alf == -1705
+mqk dec 251 if xoc < 3047
+v inc 235 if anb == 1770
+xoc inc 94 if mqk > -5134
+swy dec -106 if s > 2176
+cox inc 591 if xoc != 3138
+eb dec -594 if eb == -329
+he inc -389 if qby == 5469
+swy dec 680 if ty != -487
+alf inc 713 if ev < -2483
+mqk dec 533 if b != -7332
+mk dec -282 if tm <= 1920
+d dec -878 if tm >= 1913
+ev inc -821 if b > -7327
+s dec -229 if qby > 5475
+tm dec -671 if swy > 1115
+mk dec 703 if eb > 262
+cag inc 96 if v == -4682
+alf inc -771 if mqk != -5672
+eb inc 140 if b > -7322
+swy inc -493 if eb != 270
+he inc 826 if eb == 273
+v inc 82 if s <= 2408
+anb inc -898 if tm <= 2585
+mk dec 735 if red <= -531
+obo inc -704 if eb >= 262
+cag dec -145 if tm == 2585
+k dec -952 if swy > 620
+mqk inc 818 if eb == 265
+he inc 229 if b > -7325
+v dec -717 if npo != -746
+npo inc -329 if d == 5890
+xoc inc 820 if v > -3957
+ev inc -751 if alf != -1768
+he inc -105 if npo == -1066
+tm inc -86 if swy <= 627
+npo inc 83 if qby < 5486
+npo inc 829 if mk != 1347
+swy dec -554 if tm >= 2504
+anb inc 836 if red <= -524
+npo dec -878 if b > -7328
+cag inc -276 if alf != -1763
+red inc 215 if qby >= 5469
+eb inc -509 if d >= 5884
+xoc dec -707 if he >= -1119
+s dec 42 if cag > -1801
+s dec 63 if obo >= -4125
+mk dec 358 if cag <= -1793
+eb inc 95 if cag <= -1793
+eb dec -637 if b >= -7323
+ty inc -617 if xoc != 3854
+mqk dec 510 if ty < -1112
+he inc -285 if tm != 2499
+ev inc -547 if qby < 5487
+mk dec -915 if npo < 730
+eb inc -953 if e > -4036
+obo dec 412 if he >= -1108
+npo inc -925 if d < 5888
+ev inc 930 if cag < -1792
+v inc 658 if npo <= 726
+ev inc 892 if mk <= 1918
+ev inc 756 if b == -7326
+qby inc -574 if s > 2307
+npo inc -638 if red >= -326
+tm dec 248 if mk < 1913
+cox inc 865 if s < 2317
+cox dec -950 if d <= 5893
+mk dec -632 if he <= -1108
+v inc 176 if d <= 5893
+mk inc -805 if ty != -1120
+ev dec 973 if npo < 89
+swy dec -601 if s < 2308
+e dec -146 if cox < 3509
+mqk inc 321 if cag > -1803
+xoc inc -534 if alf >= -1764
+d dec 747 if ev >= -3004
+npo inc -826 if obo != -4120
+xoc inc -343 if ev < -2994
+b dec 415 if anb <= 1708
+b dec 323 if xoc > 2976
+b inc 697 if ty <= -1118
diff --git a/2017/inputs/day_9.txt b/2017/inputs/day_9.txt
new file mode 100644
index 0000000..eb4d605
--- /dev/null
+++ b/2017/inputs/day_9.txt
@@ -0,0 +1 @@
+{{{{{<!!!>!>'!!!>!!!!!!!>u!!!!!>},<'>,<!>e{o!!!>!'>}},{{{<!!u<>},<!!!!!>!'!!a}!!!>,<!>!!!!!i!!,e!>,<i{o!>},<!!>}},{{},{{<e},!>},<!{"!!'e'>},<auu<oa{!!!>!i>},{<a!!,'<!>>,{<a}!!!>a>}}},{{{{<!!'!>,u!!,}!!!>!!"'!!!>,i!!e>},<!!}<!>},<!!!!'i!!!>ii{!>},<!>,<!!"!>">}},{<!!ua<!>},<{!!!>!>},<!<e''!!!>ou!!!!!>!"!!!!!!!>!!>,{<!>},<u!!a!>,<!><"ui!!,u'!>,<!!!>!!o!!a>}},{{<"!!<<!>,<!>},<o{<e!!!>!!"<!>},<o>}}}}},{{{{{{{{{<!>!>,<,>},{<!>,<,}!>},<!a"!!!>},<,!!!>,<!!!>!!!>'>}},{{<{}!!e!!!!>},{<e!!!><!!!!'!>,<ea!!u'i,e{!i>,<""a!!!>},<o>}},{<!>,<!u<!!!!au!!!>!eia'!>},<!>,<!<>,{}}},{<,oo>,{{<!>},<ei,{<oeo,!!'a!!!>!>},<''>,{<{e!!!>!!!>}>}},{{}}}},{{<i!!'}u!>>}}},{{{{<!>,<oe}'u<!>,<e"e!a>}},{{}},{{{{<!!!!!>o!!!>!!"o!!!>>}},{<'>}},{<e>}}},{{<!>,<!!o<<!>i>}},{}}},{{{<a!>!>},<!!!!{!a,!!!>{!"i!}oie>},{<e!!!!!>,<,">}}},{{{},{{{{{{<{uu{'!!>},{<>,<!aeoae>}},{{{<!!!>,<!<<!>,<!!!!i<!!!ue!>,<ui}o!!e>}},<!>,<!!e"i!!'{"'>}},{}}},<'i!!ueiu,!>},<!>},<!>!!<"}!!!>,<!>},<>}}}},{{{{<,!>},<',!!',ei!>!>},<!}!!!>i!!}ee,>,{{}}},{{{<'a'!!e!"i!>o!!!>!!!>!!!>{!!!>,<,>},<ei!<!!<!{e{ua>},{<!!!>,<{!!!!!>!!,!!!>>,{<,!!>}},{<!>,<!>!>}e!>},<!!!>}{'!!!>o>}},{}},{{{<!!!uu!!!!!!!i<>,{<,}"!>!!!>}o!>,<>}}},{{{{{<!>,<u!oo!>,<!!}a<>},{<!!!'!>o>}},<o!>,<!<!>,<<ii>}},{},{{<<!>,<>},{<i!>"o!!aue,>,<i!>},<!>},<<!!e!!i>}}},{<!>},<!!{"!>,<!o!}!>},<o,o'!>!!a,e!!!!!>,<>,{<u"!!!>!>},<!!>}}}},{{{{{<!>},<!!!>!>,<o>,{<!!!!!>!!!!o!>},<!>u!>,<!!!>i!o!>!e<!!!>''!>!>i>,{{<,u'!>i"o!!"}>}}}}},{<!!!!'}{>}},{<!>"}{!>},<!>},<i<!!!>,<i<>,<"!>,<"u>},{{}}},{{{{{<!!'e!!!!!>>,<!!a{o!>u,,o}"{>},{<!>,<<,!!!>,!>o!,!>,<!!!!'>}}},{{{<uo!!!>!>},<!>,<e>,{}},{<!!'a",!}!!!>!!i>,{{},{<!!!!!e!!"e!>},<'{<!!!>},<o!!u!!!!!>{{!>,<>}}}},{{<,<!,!!">},{{{}},<!"o<o!!}!>},<!>,<{!!!!!>"o!!<,e!o!!!!!>},<!>},<>},{<i!>},<>}},{{<'!>!>!>,<>},<"io!!!''!!!>!!o!!o!!!>,<<i<i!!!>!>,<>}},{}},{{{<'i!!!'}!!!>!>!!u!!!u!>oo!>},<>},{<!!,i!>,<!!a!>!>,<u!>},<ae>}}}},{{<{i!!iu!,!!'!!!!{"!!!>>,{<!a'>}},{{<",!>a{a!!{i!>,<!>},<}u!>,<!>!!oii>},{{<'u!!"!!!>}a!!e!aa!>,<i!!!>!!!>,<<>},<!>},<"}"!!!>i!>,<>}},{{<!!u!a',"{>,{<'}"!!!o!>},<!!'!!<a,,"!!,uo>}},{<e!>,<e{!!,}<!!<!!eu<<uui>,{<{!>,<"!>,<,!!,!!,e!!{{a,!!!!!>},<<a>}}}},{{<}!>'!!{,<!}!!"!!e!!u"e,!!i>,<!!!>e!>,<!>},<!!!!!>>},{{{{{{<!!""!!!a!u>}}},{}},{{<eio>}}}}}}},{{{{},<!!'<!!!>},<u!>!!!!i}e!!},!>,<{!>,<!!!>>},{<'!'''!>o"},!!e{!"o!>,<u!!!>{!>u>,{}}},{{{<!>,<u"o"{!!!>!>!!o!!}iou>}},{{{},<io<!!'"!>,<!>,<!!!>a<>},{<!>,<a!>},<<o!!!>{i!!o>,<!ao!>,<!!"!!u{!!{!!!!<!!e<!!a}{u}{!!!!a>}}}}},{{{{<!!!><!>},<!>},<a!"!>,<,!!!!!!,!!!>,<a!!e>}},{{<!!o<!u!!ee{>},{<!!!><<o<"e>,{<!>},<{!,!!u!!!!!!!!!>},<!!!>,!!!>i!!{<!>,<!!>}}},{<!!!!!>o!>'<!{<{!!{!!>,{<"!>!>!>},<!!!><'{o{e!>,<,a}!!i>}}},{{},{},{<!!!!a!>},<!!!}!>,<!!!>e!!!!!!!!e}!!!!a!!'}">}},{{{{<!>},<i!!!>!>},<uu<o{io>},<e<!!!>!!!>i}!>,<<>},{},{{{},{<i"!!a!!i!!!!}!>},<!}{<!'o!uu,>}},{<u!!eo!!{eo!>,<'!!!>{!!>}}},{{},{<!!!>'""!o!>,<>,<i<!>!!!>ue!!!>i{'!u<<!!!>,!,>},{{<e>}}},{{{},<!>,<!!!>,i}},!>,<!!e!!>},{{<!!!!}e!!i!'"!iu!>},<!!{!!u>},<u!>>}}},{{<"}<!!!>},<ou!o}!>,<>,<!!!>'!!!'u!!!!!u!!}>},{{<!!!>!>},<}>},<!!<!"!,'u!!!>!!,a','>},{{<u>,{}}}}},{{{{{{}}},{{{{{<aa,,!>!>,<>}},{{<oo>}}},{<}!>,<,{i!!}!>},<!!!>>},{{{{<a!!!>,<!'<!>"!!!>u<i!>},<a}'}!<ie>,{<!>,<o!!!!!>i"a}!!}a!>i<!>},<!!!>!!a!!!>>}}},{{},{}},{{{{<!>,<"u<!!}ui!!e<!a}u!>},<!!",>}},{}},{{{<">,<!>},<!!!>!!u>},{<!>,<{>,{{<"ie!}!>a!e>,{}}}},{<}i''ua{!>},<>}},{{},{<!>},<!>!>},<o},!!!>!>},<<!>,<u{,!>},<,a,>}}}}},{{},{{<,"u{>},{}}}}},{{<,!!i!!i!!!!"a"!!!>!>,<>,<e,a,}!>,<<!!!<>}},{<!!!!!>!!ou>,<<!>},<}u!!!!!>{!!,!>,<i!>,<>}},{{{<a!>{!>},<!>">},<a!o!!!>!i"!><!>,<"i}!>!>!>a>}}},{{{{<a>,<!!!>!>e!!>},{<!!a!!>},{{{},{<i>}},{}}},{{{<!>},<>,<"'<<!,">}},{{<e!!""!e!>"iaa,a>}}},{{{}},{{}},{}}},{{{},{<!i>}},{{}},{{{{<<!>},<{a!!!>!!!>}ua!!!!!>a>},{<ea!!{i!!,!!a"}!!}{u'!>ae!!!>'>}},{<>}},{{<!>},<!',!<<,!>,<>,<{,"ea>}},{<u,o!!u>,{{},<}!!{!>},<i!!!"<!!}!>},<ieo!>!>,<{!>},<!{!<!>,<!!u>}}}},{{<!!"',u"}u!>,<>}},{{{<u!>,<!a!!o>},{<!>},<!>{!>'!!u!!!!'!>,<!!<!>,<!!!>},<},!!!!'>}},{},{{{{<<ou!!e!>},<i>},{<}{!>},<!>,<!>"''!!!>a<!!!>o!!!>ue>,<!<,'!>,<<!>,<o}!!!>,<!!!>}o!!ea}>}},{{<!>eo,a!>!>},<<a!'!>},<"!u!{i!!!!e!>,<,!!u>},<{}>}}}}}},{{{}}}},{{{<,au'!>},<oo!>,<!i},}"!>},<>,<i!!!!!>},<{!!!>!>!!o'"!>!,"}!">}},{{<!!'ia!!o{e}'!>!>!!!>",!!!!!!!!!!!<!>},<>,{<!!""}!'<"{!!!>>}},{{{}}},{{<!!!>i!!!>!>},<!!!!!>!>e!!!>,<!>},<!!}eei<i!!!!uu>},{}}},{{<>},{{<!i<!!a}u!!!>"!>,<'!!!>,!>},<<!>},<ui!>,<>},<<!>o<"!!!!e}}!!!!}!!!>!!">},{{<,<!!!>e>,<!e!i!>i{<!}!>},<}!!!>>},{{<"e""!}u"!!!>!>,<!!">},{<!!!>!>},<oo!!!>'!!e!!!>!>,<!!!>,<{iau!>},<eo'>,<!>{u{e!!"}u!!<!'o>}},{}}}},{{{{{<!o!>},<>,{<o{ee!>}"!!!>},<!!o!>!!!!!>!!!>},<!>!>,<oa>}}}},{{{{<{i!!uu',",u>},<a!>,<"!!,i,!!a!>!!o!>,<!a!!e,!>},<>},<,o<!!!>!!!>o!>o>},{},{<'u!>,<!!!!>,{<i!!!>!>},<!!i!!""{!!e}u!>},<i}!!'e!!!>{'>}}}},{{{<e!>},<,!>>,{<""a'oa<!a}!!!>!>,<>,{<!>},<>}}},{<ou!!!>,!!!>,<>}},{{{<e{!!{!!!>!!!>a!!!o!!!>!!'e!>,<}o{!>},<!!">,<,'>},<!!!,!}i!>oa!>,<i"<!!<',!o>},{<i!>},<>}},{}},{{{{<,{!!o!>i>}},{<oe!>,<,"o!>},<a>}},{<i'!',!>,'>,<o<a!>},<<!>},<!!!>"!!!!o<a>},{}}}},{{{{{<a!iaou>},<!!!!!!!>ua,!>o"}e!>},<e,>},{{<,!!!>!!!><o!>,<!>,<<!>},<!>{a{i!>},<u>}}},{{{<>,{<!>,<u'i!o!>},<>}},{{}}},{{{<>}},{{<'!>,<!>},<",!!o}}{!>},<oo!!!>>},{{{{<'}!!!>,{a>},{}},{<!!!>o'!u"!!!>,<!!!!!>!a!!!>>}},{{<'!!!>,<'"}>}},{}},{{<!!!>e,o<uao>,{<<">}},{},{{{},{{<{e!!!>{!!!>},<"!"!!!>!>},<>},{<o'!!!>{>}}},{{{<'!>},<,!!e>}}}}}},{{<aioa!>{{!>,<",!>,<!!o!!a>,{{<}!>,<<!!!!!>!>},<,'{,}!>{uiu,!!i">},<!!!>u>}},{{<!!!>!!!!!!!!!>ae}'"!ua<i,!!!>,<oe!!!>>},<}!>},<!!!>}}ui!}u>},{{},{}}}},{{},{<!!!>,<!!!>o!!!!o'!!!!!>{u!>,<!>},<'i,!!}<!!,>}}},{{{<u'a,!!!>i>}},{{{{{<!!!>}e,""!{!!!!""!>!!!>ea>}}},<!!!!",'!!!>,<!!!>!!!>!<!!!>,<}>},{{<'!!!'!>ee!>,<>,<!!}!'>},<""!!!>},<i!o<!>,<eie!!",!>e>}},{<!!!>},<i!!!>'"!!!>!!<!>},<a!!,!>},<>}}},{{{{{<!>},<u!>,<!>,<!!{'!>},<!>},<<<>}},{<a!!!!!!!>!>},<<!o<"u<a'">,<!!!>,<'<!>},<!!!e!>},<!!!>oe,!!<>}},{{{{<u''!a",<io!>,<!>'a!!!>,<!!{"!!u'>},{<'!>},<!>,<!!a!>!>},<a!a!!,>}}},{{<!>},<oa>,{{{<!>},<!!o,>}},<i}u!>},<a!>},<<<!}!!!>!"e<!!!>!>},<}i>}}},{<{>,{<!>},<!>,<}{a!>,<u!>},<e!o>,{<!{e!!!>!>,<e!,!!o',>}}}},{{<'!<<i,a!!!!!o>},{{<<"}'!>},<<ao>},{<!!o!<!!!>>}},{{{},{{<!aoa{!>,<i!!e!{!!!!e!'ao!!!>,<}!>!!!>e!!{>}}},{},{{<i!>,<!>},<!>},<!>iaeo>},{{{{<!!u}!!!!,!!!!"uo!>,<<'o!>,<!>},<'i!!!>},<">},{<ii>}},<,>},{{<!>},<!>},<>,{<u>}},{<!>},<!!!!!!'"!!!>!>},<{!!!>i!>ao!>i>}},{{}}},{<i!!'!!!>e<{o"!!!!!>'>,{}}}}},{{{{<ou!{"!>},<!>},<>},<!!!>iauiui!>},<>},{<!!}e}e'!>,<!!!>>}}}}},{{{},{<!!!>}eoei!!!>u!>},<ie!!!>">,{{{<e!o!>},<}!>},<!>!!ie!,!!!i!oi!!!>},<!!!>>}}}}},{{<}!!e!iieu!!'>},{{<!>,<!!!!!>>,<}o!!!>>}},{{<!>!!u!!!>>}}},{{<!>},<<!>},<},,!!!<'u,!!o!!i<u{">,{<!>,<}!>,<!>!>,<!!!!!>!!!>!!!!}u"}i>}},{{{{<{e!>,<e{'i!oiu>},{{{{<>},{<"e!>},<ie">}}},<uu'<{<!>,<,}!!!>!!!!!>,<!!'o!!u'{>}}},{},{{},{<!!,'}!>!!!!!!!>,o!<!!!>'!>,<>,<o}!>!>,<{!!e!!,!>!!e!>,<!>i!!<{>},{}}}},{{{}},{{{<!!eu!!{o!!!>!>!!!!!!"!!!!>}},{},{<!!!>!!!!!>'oaii!!!>e!>,<!!!!!!!!!>!!!>o!>},<!!!>a>,<!!!>'!!i}u'{e!'!>e!>'!}!!>}},{{<!!!>!>},<o!!!}!!!>}'!!!>>,{}}}}}},{{{{{},{{<}u!!!!i<e!!a,i>}}}},{{<!!<}{<<u}u!>{ioe!!>,<''!!'e}!>>},{<u}eai>}},{{<'!,o>},{{}}},{{}}},{{{{{},<!!<u!!{o!}!!!>"<!>,<!,>},{{{},{}},{{<i,!>!>,<"<!}'!>,<!{>},{<!!!>}a!>ae!!!>o!!u!!"e!!<'o{>,<u<!{!>},<{>}},{{{<{}eeoua!!!>},<!!o"'{{>}},{<u!!!>!!}!!!!!>!u>},{{{<!!!>!>,<'a!>}!>!!<,u"!>!,{e<>},{{<!!eu!e!aa"'o'"!>u"'<!>>,<!>},<!!>}}},{<,eo'}o!'{>,<ia,!>i!!a"!!!>!>},<}!a!!!>!!!!!>,<ee>}}}}},{{{<!>u!!o'!!}!!!!!>!!!>>},<e<!>},<u!!>},{{<,!>!i!!<!>,<!>},<!>!>,<!!!!ao{<ae,,!>},<>,<<"e!>!>!>,<u!!!!u!!!!!>,o!>,<o!!!!!>},<a>},{{}}},{}}},{{{{},{},{<"!"<"!,!!!!!>eau!>,<,>}}}},{{{{{{}},<o<i!!!>,!>,<a,!!!>!!!>!!!>!<<<>},{<a{ue>,{<a!>!>"i!o,!!{!>},<a!!!!>}},{<"ia,i>,<'!>ioi!>},<>}},{{{<>},<!!<,e'au!!!!'>},{},{{<i',e!<!>,<'u,>}}}},{{{<o'i'!!<{!>,<a!!o!!e!!,!u!!o>},<,!>,<<o!>,i!>>},{{{<},}!!",!>!!!><>}}},{{},{{{<!!!'',u'a!<a!!!>},<ou!!!>!!a>},{{},{}}},<}a!!!,'a',!>u>},{{<!u!!!>ia{!!o!!!>},<!>,<!!<!>},<!!!>"!>,<!!!!}i>},{<!>,<!>!!,!>,!>>,{<}i>}},{{},{{<''!!e<!>},<a!!!>e{!e>}}}}}},{{{{{<"u!>!!!!>,<a!!o!>},<}!>},<!>i!}'>}}},{{{{{{<,,!eaa!u!!oie!<,!!!>!>},<!>,<!>{u{!!i>},{<"<i,!a"!!eo>,{}}},{{},{<!!!!e!>},<'!!!!,!!!>!!",>}}},{}}}},{{{<i{}'>},{<{!!!>,,!!e!>,<!!!!!>a"!u!!!!e!>,<{!!!!!',<>}},{{<!!u!!,!<}}<,<>},{<"!,!>},<{a!>},<}}>}},{{<<!!!>}!!"!>,<}!!i""'!!!>{>,<!!!>},<!>,<{!u!!'<io!o{>},{{{{{}},{<!!}!>!'u>,{<'u!!!>,<!eo<!>,<!!!>{>}}},{{<a{o!!!>"!!!>'}e!>,<}>},<!>,<}{!!!>!!!!"!"!>!!!!,}<<>}}}}}}},{{{},{{{{<,!!!>,!>},<!>,<!>},<>}}},{<!>},<>}},{}},{},{},{{},{{<u!>},<ieo!{!!<'"!u<!!!>!!!>,>,{}},{},{{{<o>},<,>},{<<i!a{{{<<!!!>!!!!o>,{<!!{<a!!!>u!>},<,!!!!oo!!!>!!u"!>}!>,<>}},{}}},{}}}},{{{{{{<<!!!!!>i!>!oi}oeuu>},{{<,{!>!>!!!>!!!>},<!!!>!!!>!!!>!!,'!},o!}>}}},{{<!>a!!iu{!e>},{{{<{!!{!!o!,!!!>>},{<!>},<!>},<"oi!"!!!>!>},<>}},{<!>},<i!!i}>},{<ue'!!a"uu{!>,<!>},<uuaa{!"!!!>>,<ee>}},{{},{{{},{}},{{<a!!!>!!!!!!{!"{e}e!!,!>ae!!'},!>},<!!!!o!>},<>}}}}},{{<!!!>},<>},{<u!!!>!><,!!!>},<!!!!<>}}},{{<{<e!<,!>},<'i!"{!>},<!>,<!>,<ie}>,<{,!{},!>e!!!!!!!>!","ua!}!!<'!!u'>},{{{{<!!!>!>,<!!e'u"'<"!"',,i!!i}<a>},<aoie}!>},<'}o,<>},{<'!a!!{"u!e!><i!!'!!"o!>,<>}},{<!>!!i!{{o!!!!!>,<!{!!i<e!!{">,<e!o'u,!!!!uu!!!}!>},<,!!}>},{{{{<!!!>,i""{!!!>},<!a,>,{}},{{<!}!!!>,o!>}"!!o,!!>},{<!>},<"u}!>"!ae!{!<>}},{{<oao}}a"i{!!!>,<o{>},{<o!!!><a!!!>u>}}},{{},{}}},{<!>!!!><",{}!>ee!>,<!'!!!eu!!!><!!>}}}}},{{{<e}!>},<!!!>!!o!!!!{{!!!>!>"a!>!!!!!!>},<!>!!!!!>!!!>e>},{{<!!a!!!>}!!{ie,!!<!>!!<e!}eo!>},<,}>,<!!!!}!>i!>,<,!!"!>},<}!>o!"oo'o!>},<>},{{<{{!!!>ua'ei'!!<>},{}}}}},{{{{{{}}}}},{{},{{<!>iu'!>>}},{{<!!ouo,!>},<i!ii!>},<o!!!>,<>},{}}},{{{{{<}<!!!>},<"}<oa!!''!>'!oe!>,<!>,<iu>},<{o<<a>}},{<!,<!!!>},<>,<>}},{{}},{{{{<!ua""<o{<!!!>!>},<'i<"!",>}},{<a{!!!>,!!i!",!>,<!!i{>},{{<a!>"{aia<!!!>!!!>,<u'!!u,>}}},{{<i!>},<!{!!!!!>},<,,!!}'!!!!ae"!>,<"i!>,<o}>,{{{<,!{o<!>},<!!a}}i>,<!!'!>!oi!!!>!u<'"e!!,{i>}},{<uu{!e!!!>}}a!,o!!a!{a>}}},{}},{{{<{!>,<!!}i!>,<}{!!!>!!!>,<i"!>,<oi"}'>},{<o!>,<!!!!!!!>,!>},<!<!"!!<!>!!!>e,>,{<!>},<!!<o!!'<}i!>!>,<u!>,<!>},<!>,<!>,<!a!>,>,{}}}},{{},<aee}}u!!<}!>i!>,<>},{{{{{},{<!!!>!!"'{!!,'}>}},{{},{<!!!<>}}},{{<'a"!>e!>},<',>},<io,,a!!!>!>,<i!e!!,!>,<,,eu!!!>!!u!>,<>},{{{{<,!}<!!!!{!>,<{!!!><ia}e!>},<{}e>}},{<!!!!!!{a,>}},{{{{<i,e!!{!!!>"o{uu!>},<>},<!>},<!>!!!'!!i!>!"a!!}!>,<"'!'!>>},<{!!!>,<!!!>a!!!!{""!>"!!"'u!!!!!><!!!>>}}}},{{<!!}!>,<!>},<'!!"!"<!!,<!!!!!>!>>},<!>{}!>!>},<}}"ao!!!!ua!!{!><">},{{<!!!!!!ou<!!'u!>!>},<!>,<{!>!><>}}}}}}},{{{{<'}u!>,<{!!,}!>},<'!"'{!>},<!>>}}},{{{<{a!!!>u!>!>!!!>ae}!>!>},<{!!ua>},{{}}},{{<,!!!>},<!>!!!>>},{<}!!!uu{,!!!!i!>},<{!!!>},<ie<!a"e>}},{{<ou{!>!!!>a!!}!!>},{{{{}},{<!,u'!!!>,<u!>,<ui,}u!!!'!!!>{a!>a>,<,,"!!a!!>}},{<!!!>!>},<o!!{!>oa!!{!!!>a}a!!{>},{{<!>},<a>,{<!!o!>,<!"}!!'!!a",!a!>,<i!!!>o!!e!>,>}},{<,!>},<"{}}}"<!>},<!!e!!!e!!!>,<!!!>,<<!>},<>,{}},{<!!iao!>},<}!!!ea{!!!>,<'uui>,<i"!!!>!>,<u!a"ea!!!>,<>}}}}}},{{{{{{{}},{<,!>},<a{!>},<eoei<<o>,<>}},{},{<i!!!>!>!!!>ii!>!'<!!!>"},},!!>}},{{{{{<,,!i,,ae{!!!,!>!!!>},<!,!!o!!}!!!>}>,{{<}!!!>!!!>'!!!>"!{{!>!!!>>}}},{<!!a!>,<{oia}ueue!!!>eai>}},{{<!>},<!}!!!>!!!!!!ei!io}!!!>!!ue>},{<}!!!>!>i}!!!>,<!>u!>,<!a!!!>!>,<"o!>,<!>,<a!>},<!>,<>}}},{{<!>eo,o!'!!!>'<!!e>}}},{{{{{<!e!>!>,<!!<!!!>!!!!!>}>}},<!>!>'}}!!!>!>!>,<!>!u>},{<!o!!!{>,<!>},<'''!>},<">}},{<<,iiu!'iu!><>,{<,!!{e!!!>o!ai'!!'!!!!{a!>>}},{{<a},!>},<!!!!!><,i{!>"}>},<'<ui<!!a!!''!aa!!!!!>!!!>u'ao!!<!'>}},{{{<!u<e!>,<'{"a'!>,<!>},<!!!>>,<!i'>},{}},{{<'!,e!>},<!!>},{},{{{<<euu!>,<!!,!e!>,<!!!!},!>},<a}!!!!!>a{>},{{<!<ee!>},<o<{i!!}!!!>'!u!>,<>},<}!!!!eai!!!>,<e!>!>!!!!!>>}},{<!!!!!u!!!>!!a{oo,i>}}},{{{}},{},{<!!!>,<{'a!!'a!!!>{<!<e!>},<!!'!io>}}},{{{<i!!,!!e!!aee!!!!!>},,!!'>},{{},<e"o!!u{!>,<{!>},<,>}},{<",!>,<'!>,<!!!>!!u!!{'{!>},<}!!{!oa!!!!e'!>>,{<!>,<!>},<!>,<uie!!,!>,<{!>!!!!!!!>>}},{{<>},{{<!>,<!!a!}!!o'!>!>,<>}}}}},{{{{{{<>}},<u{!>},<e'!>,<,!>},<>},{{},<>},{{<',!,ioe!>u>,{<!>}o!>},<}>}},{{<{a'e,i!>"u>},{{{<!>},<!!!>,i,eo!!!!!>},<eo!>>},{}}}}}}},{},{{},{{{{{},{<a!!a!!!>,<e{>}}},{{<>},{{{<!>},<>}},<<ea,},!!!>!>!!"{,uei!>},<}>}},{<!!',eu'"a}!>o'}!<!>!a!!o!eu>}},{<>,<!!!>>},{<!,!!o!!!>,!,u!!}'!{ee!!i!>,<!!!>!!!>!>>}}}},{{<uo!!">},{<!!u!a!!">,<!!!>!!,}o{>},{<iuoa{!}u',{!!,}'!>,<>,<!!!>!!a!>!!!>u!>,<!>},<!>,<!'!>,<!!!!!><!!!>},<!!<>}}},{{{<!!!>},<!e>,{}},{}},{}},{{{{<,e!!,!>,<!>},<,!!!>a!,!!'ie!>,<o!>},<>},{{<e!!'i!>},<!!!>,!e!!!>!!!e"}uu!>},<u!i'>},{{},{{{<o!><!!o<"!'!!!>,<!>},<!!!>!!!>e'u!!!>o!!u!>},<}>},{}}}},{{{<!i<!i>,<{'!!i!>,<>},{{}}},{}}},{{<>,<,<e!!!>,>},<{>}},{<!!!>,<e!>,<<!!,!<!!,ou>,<!!!>o'!!!!!!!>"a!!eeu!o,!>},<o<>},{{<!>},<!!,!!,o,>},{}}},{{<!>,<'o>},{{<aeei{o}i>},{}}}},{{{{},<>},{<{!>},<!!!!!!<!!'e!>'e>,{{}}}},{{{{{{<!>,<e!{!>,<i!u!!!!<!>,<!!!>>},{}},{<oo">}},{{},<',i!!"<>}},{{{<!>,<!!,u,u'}i<!>},<!!!>!!!>{!>},<!i>},{}},{{<!oe!>}'iou!{u!!!!!!}!<!>u<a>,{<{!!'oa}!!!>!!!!,ii!>,<oa!!i!!a>}},{{{<{a}o}!,!!!!!>,<'}{>}},{{{<!>!!i"eeeuo!>},<<aa!{!!!>!!!!!>!>,<>},<{!!'>},<!>,<<<a!!,{'!!<>}},{{<'!>ao!{u!!!>"!i{}i'u,},>,{<!!!>!!iuee!!!>'!!!>,<>}},<!!!>!>},<!o!>,<e!!!!"!>,'e'a<!!}>}},{{{<eou!>o}i!>!!u}>}}}}},{{{<!!}u!>o!>,<u!!u"u!!a",a!>,<>,{}},<}}"!>,<o!>,<!}'!>>}},{{<>,<!>!>'!!!>!>!>,<!!!ai!,>},{<}}!!!><!>!!!>!!!>},<!><!>!!{!{!!}o!}>,<}i!!"!!!>,<,,!!!!!>>},{{<!!!>'!!}!!!>!!!!!>>}}}}},{{{}},{{{{<!'i!>,<ae>}},<!aa!,">}}}},{{{<!!a,"!iu!!e!"'{>},{{{{<uu'i<!!!><!>!>}uieo!!!>!>,<"o>},<}!>}!>,<>}},{{<!!!>'<!>,<!>},<ua{!>},<i!i!}!!i>},{}}},{{<!!u}!!!><a{!u!>"o!!!>!!!>",e">,<{}i!!!>!!!,!!u!!,"}!>,<!>,<i>},{<!!'o!!!!{>},{{{{<!!!>a!}e!!e"!>},<!><!o>},{{<"a""!>},<!!!!,!>}!>},<}'!!u!!!!!>!>},<>}}},{{},<}>},{{<ioo!!u}!>},<<{"!!!!ui!!{>},<"!iui!!!>!!!>'"!!!!,!!o''!>},<}u!!!>{>}},{{},{<a!!oi>}}}}},{{<"o!>},<,!}!!!>"<ao'>,{<e!>,<eu>}},{{},{{<<}!!o!{!i<!!!>,<!!!>,!>},<o"!!!>!>},<!>,<>},{<!!"u!>,<!!oa"'!!!!>}},{<!>},<o!><<<,>,{{{<!!!>{!!'u!>,<!!{o}"!>},<!>,<>}},<!!!>!!>}}},{}},{{<!!!>},<,!>ei'!e!!!>},<u,u!!!>'aui>,{}}},{{{{{<!>,<"oia!!e!!!>!!{!!u!>,<>,<!!>},{<!'!i!!!>o!o{>}},{<',!!{",<>,{<o!!<}'ii!!!>!>},<''!!!>>}},{{}}},{{{},{<!!!>{{!!!!!!a,e!'<!>,<!!!>!!!>u"i!,i!e>},{{<{<}>},{<!>,<!>{>}}},{{},{<i!!},u}'!<>,<!><o!>>},{}},{{{<a!!!!!>{!>,<o>,{<!!!>!>},<!!'a!>ii!!!>u!!oa}}"">}},{<!ai!ua!!<!!!>,<<e}a!>>}},{<u!ea"ue,!!<!<,>,{{<!}"a!>>}}},{<oa!!!>,<{!>},<e!,!>!!!!<u!!i}!>>,{{<,{{"!>},<<!>,<!>u!>!>},<}'{!!!ao>},{<!!!>},<>}}}}}},{{{{<{o'oi!>,<o!>},<ue!>},<ao>},{<!>,<a!!ia!,i}{!>,<!!!>>}}},{{{<!!o!>,<o!>},<!>},<,,{!>},<i!>u!>,<i}>,<e!!!>,<!>,<'!><a<e!>,<!>},<e,",!{!!!>,<i>},{{<!>,<"!>},<!!}!!!!!!!>!!aa!!o'!>},<!>},<>,{{}}}}},{{{<<ea!!!!}!o!!,!!,!!!>!>i!>,<"''!>!!}>,{<,,!!!!!>},<"!>!!!!!>,<o>}}}},{{<!>},<u{!a<"!!>,{<}!>,<}'e!!"<!>},<>}},{{<a!!'}{!>},<{!!!>!!!>,oa"!>,<}''!!!>,<!!}u>}},{<!!'!!'a!>},<!!!>!!!!>,{<!!!>},<{a"u}!>},<!!,!>,<i>}}},{}},{{{}},{{<"!>},<!!,uii"a!>},<a!>>},<aa!>>},{{<!!'>},{<!>!>,<e!!a''!>"!!!>o>}}},{{{<!>},<u'<'!>,<o'"!>,<,"a!>,<!!a!{!>,<!!>},{{{}}}},{{},{{{{<}}}!!!!!>,<!iiue!!"!!>},{}},{<!>!!!!!><!!!!!>!a!!!>!!,<!>},<<aa'!!<u!>,<!">},{{},<>}},{{<e!!!>a<{!!!!'}!>oi!!<!!!!!}>,{{{{<!>}}a"!!,"!!!>!>,<e!!i!!!!!>a'!!e>,{<>,{<{ue!!!!!>!!}!!!>o>,{<!>,<!>}!>!<!>!>},<!!!!!oa!!!>!>},<!>},<}<'>}}}}},<!!"u>},{}}},{<>},{<ii}!!!>}i>}},{{},{<}!>,<!>},<<">,<!>{>},{{{<'>},<>}}},{{{<!{ia!>,<a!!<'!!!",<!}e>}},{},{{{<'u}>}},{<}i!>},<}<!!o}'a,}!>!}!>i<>}}}},{{{{<>},{<!i!!"!!!>},<"!!e}u!!!>},<'!!>,{{<o!>,<!!a"!!<!>,<'!>,<,}!!!!!{!>a!!!!ea>}}},{{<!>,<<!>},<{ao}>},<>}},{{{{<uo!>,<>},{<}<!!>}},{<,u!>},<!>,<}i>}},{{<a!>,<,!!!>o!>!>},<"{oa>,{{<o!>,<!!!>,!{!>},<"}i!!!o!!!>>}}},{<,o!!!i!a{<!>,<!!!!"!,!!!>>}}}},{{<e!!ai!e,!>>,<i{,e}e!>!>},<!!'!!a<>}},{{{<i!>},<!>,<!>},<!!o>,{<"!!!>!>,<>}}},{{},{<!>},<<i>,<<!>,<oi!!!!!>!a!>,<!'"!>,<!>},<"!!!>{>}}},{{<eao!>},<a{a<e"!>!>},<>},{{{{<!!!>!'!!!!!>e!>},<!!",>},<!o<!!!!!>,!!'!!!!,i!>o!!!!!>{!'"u}>}},{{},{{{{<i!<!!,!!!!!>!!!>>}},<!!!>!{}a!!!!!>},<i",>},{},{<>,<{!><o!o!!!!!!!>i"uo}o!!"!!{>}}}}}}},{{{{<,e!!}">},<!>},<e!>,<u!!!>,<'!>},<<!!u!>!!>},{{},{}}},{{<<!>,<{<!!!u>},{{<!,!,>},{<<!>},<}a!!{!><>,{<e!>!>},<,oai!>!>},<!{>}}},{{<"u!>,<<!>},<i!>,<i'<!>!!e!{!>},<!!i,>}}},{{<}!!<!>},<i!!!!<<!!!>,<!>,<!!i!!!!!>!>},<!!!>},<ao,!>},<>},{<i!!!>"a'!!}!!{"{>,{{<!!u!!"!>,<'>},{<!!""u!e!!!!u!>,<io!>,<"u!>,<{'">}}}}},{{<!>!!<oe!>!!!>'!!,<!!<!!!>}!>>,{{{}},<!!!>,!!!>!>"ii>}},{{{<'u!!!>!!!>,<>},<u>}}}}},{{{{<i!!!{,!"!!o"i}!>,<!!!{{>}},{{{}},{{{<ao!>,<!}'!}"e,o!!!!>},<!>!>,<a{e,a<!!!>",'oe<>},{<ae,!!oue}>,{<','a!!!>a!!<!iu!a!!u!!!i>,{<}!!,!>},<!!!>,a>}}},{{<}>}}},{{{},{<i!!o!!!>"!>!!ou!}i!!oo!>},<'!!!!!>>}}}},{<!>!!u}!>,!>i!!!!!!,"!!,!>},<u!!,'>,{<}a'ua!>o!>},<!}!>},<!!u>}}},{<!>,<!!!!!>},<!!e!o!>'!!"!>,<>,{<eu,e!uiioe{>}}},{{{}}}}}},{{{<>,{}},{<o!>},<'>}},{},{{{{{{}},{{<!>},<!!,'ii!>,<!!o,!>},<"!!i'"u}a!"e>}}},<!,<i>},{<!"!e"''!>,<iau!>!>},<i'>,{{}}},{{},<!!!>,<ea!>,<!a!'}<!!!>,<!!!>!>},<!!!!!!!,>}},{{{{<e<e>},{<>}},<!'au!>!!!!!>!>,<'!!',ea'!!o!}}!!}>},{{<!!!>a{!!,!!""oue{o"!>!!}>,{}},{}}},{{{},<a"!><a!!u!>!>,<u{!>!!">},{{{<!!o!>},<ao,o!!!>,<,i<i>}}}}}}}},{{{{{<"e}uu!!,!!i!!!>!>},<"!>>,{<}<!>!!!>!>,<i!!{!!",a<!>},<!>},<!o!>o>}}},{{{{<iuu>,{{{<,>},<!>},<e!>,<}!!!><o!>},<o!!!!}>},<{a>}}},{{<!!!>ie}i<!"a{!!i>}}},{<!>u!e,e!!!!!>e"e!!!!!>ue{{!!"!>},<u>},{{{<,!a!>!,!>},<,,e!!,!,<ui>},{{<auei!!!>{!!!!!!>},<!!!>'}!>,<a!!!>e'"o!>!>"{ou}}!!}>}}}},{{{<!>,<!!'u!u!>!!!>!>,<!!,!!!>i!>,<o"!>,<}>,{}},{<>}},{{{<a'o<!>,<i!'ia!!e!!!"!!!>u'!o>},{<}!!e!!!>>}}},{{<e!>!>},<>}}},{{{},{{{{<!!!!a!!!!!!<u>}}},<'!'<!au!!!>a!<'{e,,!!{a'!!}>}},{<,>,<!!!>!!>}}},{{{{},{<>},{{<!!!>},<"!}{!!'{!!!}e"o!>,<}!>!}ou,!!<>}}},{{<<}!>},<>},{{<!>!>,<!!!>o,""eu!!'u!!i>}}},{{<!>},<iu!>,<e>,<!>},<',o,,{a!!!!o<!<e!>,<>},{{<'!>,<o!>,<!>,<>},{}}}},{{{{}},{{<}!!e!!}!}}!!!>{{>}}},{{},{{{{{{<!>"iu!<!!,i!!!>>},{<u'>,{}}},{},{}},{{<o<}u'e!>,<!!u{a!>,<eaoa>}},{<!>},<{i!>},<o>,{<,!eo!!}>}}},{{{{<!!!!!!!!!><!!!>>},<!!!!!!e{}!>,<!>,<{!,e{}aoo!!{{}>},{<!>},<u!>},<!!!<'>}},{{{},{}}}},{<!!ue!>},<!!""}{!!!>,,{a!{{!!"!!!>,<e>,{<ou,,"}!!!>!!!>!!!""!>,<o,e!}"!!!>a>}}}},{<e!!!>!>},<!>},<u>,<u'!>},<"a"!!!>,!!!>>}},{{{},<eoeo'<eiaa!!,,>},{<!!,!!!>{!!!'!>},<{!>,<ou!}!!!>,'!!!!o>},{{<o!!aa!>!!!>!>,<"!'!!!>!!!!{"a!!!>io<!>},<!>},<>}}},{{{<o"!!!>!!!>},<e!>},<o!!a>,{<ieoie!>,<u!!a!>">}},{{<!!!>!!a!>,<a!!!,!>},<!>},<u!>u">}},{{{}},{<io!!i!>,<!!e{aa!>},<>,{{<!>},<!!!!ui!!,!>!!!!{o}}!>},<>},{{}}}}}},{{{<"!!!>!>,<!>},<,a!'}!!}!>},<u"}!!,>}}}}},{{{<a'"<>},{{<!>u!>{!!i>},{{<!>{!!!>},<o!o!!"!>},<e}i!!!>o>},{<aei<e{",!!>}}},{{{<!!!!!>!o!!!>!>!>},<u{<!!}i!!!>,<!!!!<"'ei>}},{<{e!>"!>,!a!!!>,<!!!{!!!>!!!>{<!>,<!!!>,<>}}}},{{{{{<}u>},<i"!<u}!!u,!>,<>},{<!!!>!>},<}{!!"oeu>}},{{<,"'u}!>!<{'o>,<{!!}!>,!!!!!!,!>,,"!>,<!eu!>},<!>},<<>},{<!>},<'!!!>!>!>},<}<!"!><oua!<'ou>}},{{{<>},<>}}},{{{{<ai!>,<}''!>},<o!"i!>>},{<{!>u!eu{!!!>}'e>}},{<,{!e!!}!!!>,<,i>}},{<!!"i{{>},{}}},{{{{<ui>},{}},{{{}},{{<<!>,<{!!a<!>},<!!!!"a!!!>},<e'!!>}}},{{<u!>},<i!">},{{<e,!}!aea!"!'!!ea>,{<a!>},<!>,<o!>},<!>,<!>>}},{}}}},{},{{{{},{<"!!e!!"!>},<"}!><{}"!>>,{{<!o!!!>uo!!,o!!!!io!!!>'>}}},{{{<a>}},{<e,,!>,,!!i<!}!!{!!!!!>!>e!>},<u>}}},{}},{{<!!!!!!">},{{{},{<uo<!>""!>,<!!}"!>!!!>i!>>}}},{{{<!>,<e!>o!!!>o!>{,'u}!!u',!>},<}>}},{}}}},{{{}},{{{<<!>!!!>,<!>>},<{i"<uu{a!!a!}!>},<!>},<!!!}}>},{{<oaa!>!>},<'>},<!!!!aie>},{<e!>,<u,}<!>},<{iu}'!>}!!<'i>,<oea!>},<!><!u}<a"!>{>}},{<>,{}}}}},{{{},{{{<e}e<u>},{{<a"!>!!!>!!!>'>,<{,'!>!!}!>u<}!!,!!i!!!ei}>},<a!"!!!>>}}}},{{<'!!!>!!o!>,<}',!>o<o!>},<!!i>,{<!>,!>},<>}},{<{!!,!!{<ouu>}},{{{{{<o!{!}!i!io!>!!!!e!!!>!>!>!!!>!>'>}},{}},{<!!!>>,<!!!u!>""!,!>},<i}!>},<ou!>!>{,!>'o>},{}},{{<ua>,{<!!!!!>a,!}!>,<!>iaa>}},{<>}},{{{}}}}},{{{{{<!!!>!>},<{e>},{<!>,<!>,,<i}!!!!!uu,!!!>>,{<!i">}}},{{<!,!u>},{{<!>},<"uoa<au!!!>a!!,}>}}},{<!!aa}!>,<!>,<au!!!<o>}},{{{<!>!,!!u!!!>'<!>,<,!>!!>},{<!!e!>uo!!'ai{a!>>,{}},{{<o{!><i{!!!>!!!>!>>}}},{{{{<!>!>},<a!}!a!!!!>}},<!>},<,<'o!!!!,uiu>},{<!!e}{"u!!!i!>},<!!a!>!!!!!}'>},{}}},{{<!!'!!!>,!""!!!>,'!>},<{o!!}!o<>,{<"o!!"!!uu>}},{},{{}}},{{},{{{<!>},<{!!!!,!>,<>,{}},{{<oie!!i!eo!!!>{!>},<<<>}},{{}}},{{<!>},<!>!!ae!>,<>},<!>,<!{!>!>!>},<'i!!>},{<i}!!!a!>u!<'>}},{{{<!!aee!!!>!>,<!!!>u"}!!"!!i!>!e,i!!{,>},<e'oa{!!e!!}'a!!!!!>>},{{}}},{{{<a!!e!>{,i"i!!!>}!!"!!!!!>},<uu!>},<">}},{<!>!>},<!"a}ee"!>,<{!>,<,oe!!!>!>!>,<!>>}}}},{{{{{<!>,<{!!o>,{<{,!>e}!e!>,<>}},{},{<!>},<<!>,!>u,!>,<!!!!!>ae'>,{<!>},<'!!o!>},<!!e}o}!!!>!>,<e!>},<'i{!!o>}}},{{{<"!!{}"!!,,!>},<i<"e}>,{<>,{}}}},{{<u'<!!'!>},<!!!>>}},{{<!>e!!!>},<!>,<!!!>i!>!>},<ae,{u!iu!!!>u}!!e>},{<!!!>a'i!!au!{u!>},<!>},<o},u>}}}}},{{{{{<!!!ee"!>},<!>,<a!>},<a!>a!>},<}<!!"!!!>>}},{{<!!!u{<",ao!!u,!>,<'!!!>},<!!!>u>},{<ueea}!!!>{!!!!!!!!!!!>!>},<!!>,{<!!!!!>o'>}}}}},{{{<'!!!>!>o{""<i"}!"!>},<!!e!!!>!>},<{>},{<!>!!u!>},<!!,'u!>},<!>"u!>"!}!>{a!!!>},<}>},{{<!>},<e!!!>}"i{>,{}},{{{<a'!>,<,o!!!>,<e'}>}},{<!!u'!!<,e{e!><i!!!>a<>}},{<o{!!'!!!>!!{}!!<{}!>!>,<!!}>}}},{{{}}},{<!>o"u!{u"{!>,<'!!!!!>!>!>},<>,<!,a<{!!!>!!,i!>!>},<e<<!>a>}},{{<,>,{}},{{<!!o"!!!>>},{{{}},<ea">}}}},{{},{{<!!eeou{!!!>ai!>,u!!!>,<!}'!>,<!<{>,{<!!!'!<e>}}},{},{{{{<u!!!>u!>,<!!'!>,<}a!!,!>},<i!>,<>},{}},{<i{!>,<!!!>{!>!>},<!>},<{a>,<oi!i{!>o!>!!{e!>,<}!!!>>}},{},{{{<>}},{{{<!!!'!,!>e!>o<e!>i!>,<>}},{}}}}},{{{{{{{{},<!>},<o!>,<!!'eo!!!>},<!!i!"!>,<!!!>!>ie"ae>},{<!!{au!{!!!i!}a!!!>,<o!u}}!!!>!!!>,<!!!>>}},<ui!!!"","'}!>,<,!!!>e!!,!>,<!>},<!!e!!!>,<!!!!i>},{{<!>!!}"e}{!oe!'}!>!>a,>},{<!{!!u!>},<>}},{<!!!,!>,<o!!!>'''!{!!!>'!!!!!>"!>},<!!>}},{<o!>,<o"i'!>!eo>,{{{<u!!!>,,!!!>!>!>,<!>,<>},<!}!!!>e!a}ao!i!>aau,!!!!!>e>},{<!ee!o,}!!!!!>>,{<!!">}}}}},{},{{},{<!!'a!{!!!>!!{,!>!!u}!!!>,<>}}}}}},{{{},{{{}}},{}},{{{{<uu!i{}!>,<'!i>},<{aa!>,<<e!>},<<!>a!>>},{{<<a<ue!>},<o!!!!!>},<{!!eea!>,<>},{}},{<!>},<"eo!!!!o,a!!"u!!>}},{{{<}}!>,<!!o!>},<e>},{<!!!!ao!>,<!!!!!!!!!>!>!'e<<<!!!,o,!!!>!>,<>}},{<}},'!>e!!!>!!!>!a}<!>,<!!!>e}!>},<!!!>>},{<,e>,{<!>,<eu}!!!!'e"!!"!i!!!>o!!i!>"!>>,{<'}o!!u<!!!>!>},<<a<!>},<!!i<{!>,<u>}}}},{{{{{{<!>!>},<"io>}},{<'!e{!>!>},<!>,<!>,<ii}>}}},<u!!"!!!!!>,<i'e!>},<'i!!!>i{>},{{{{<!>,<a<"<{>},<u!'!>},<!!!!}{!>!!!>!>},<o>}}}},{{{{},{{},<a!!!>!o!>},<i!!!>,<'"e<}!!>}},{{}}},{{<{,!!!,!!!>},<"!>!!!>},<!!!>"'"'!!!>!!!>!>,<>}},{{},{<!!>}}}}}},{{{{<aao!!!>,<'{u"u>},{<!>},<{!>},<i!>ii!>},<!>"a<i!!>}}},{{{{{}},{<"i!!{>,{{{<!><!>},<a,,!{!!!i,!!',,'ae>}},<euio!iu!!!>!!""!>a!>},<"oa>}},{{},{<!!'}!>,<<},!!u,,!!!>!!!!,!!!{',{!<!!o!!!>>,<e{!!>},{{<<!>},<}"">,<a'<!!ouo!>,">},{}}}},{{{<{{!!"!>},<""{!o!>},<!>,<!!!>!>i!!!>!>,<}>},{<!!,"!!!}uu>,{<i!!u<!>},<uo!>,<!!ia!>,<>}}},<!!<!!a<!!!>i<!!!!!a!!ouo!!!!!!!>e>},{<o!{o}o!!!>,!>},<aa!',!!>,{<!!"!!!>},<!>i{>}}},{{<!>!}!>a'>,{{<"a}'eo!!!>,!!!>,<{",!>!>>}}},{},{<!!i!>!!}>,{}}},{{{{{},{{}}},{{}},{{{{<!>>},<}ao!!,'!!u!>,<'}{!!!>o!>},<<!!"a>},{{<e!!i!!}'!!!!!!!>},<!!!!!!i{eiu!>},<!!!>!i!>},<<!>!!!!!>!>,<>}},{{{{},{}},{<!!uo!>,<"!!e!!!!!>,'!!}>}},{<!!}!!!>!>,<>}}},{<!!e"!uuu>},{{<,>},{{},{{}}}}}}},{{},{{<,{e!>},<!,!!ue>}}},{{{{<{!>},<>,{<}"!>!>,<!}"!>,<!!!!a!>},<ea!!!!{>}}},{<!!'o!!!>u<>,{<!i!{>}}},{{<'oa!>},<>},<iio!>!>,<!<!>,<!ie!!{"<}<!!!!!>!>},<!>>}},{{<!>,o!!oe!!{!>,<"e!!!>!>>}}}},{{{},<!>},<}!!a!!!>e!!,!!!>,!!!>!>},<<o!!i!>},<>},{<!i!!!>!>},<!!!!!!!>,<<!!"!!!!a!!!!!><u!>,<>,{{<'''>}}},{{{<!>o'!>i{!>},<!>},<a">},{{<!!e>},{{<>},{{{<"<!!iia!>,<a<a!>},<!i,!>!!!!o!>},<!!!>,<u">},{<}!!,!>ii<!>,<o}io>}}}}},{{<!'"!<"!!!>,<!>!>},<!}!!a!!"!e<u"oi!>,<>,<!!!>,!i!>},<'i>},{<<o!!'oiue!!!>!eiu}!>,<!>},<!>},<>}}},{{}},{{<!>},<!!!!!>>},{<!>,"!!!!!>!i!!!>!>!><{ae!!!>o!>},<>}}}},{{{<!!!!!>}!!!>u"o''"!ai!>,<!!!!>,{{<!!!>!!!!,!>},<{!>,<!>{<eo{,!!o!>},<'i!<'>},{<!!!>>}}},<!>,<!!!>i>},{{<!!!!!{,iu!a{!>!!!>"!>},<a!>a>}}}},{{{{{<!!!>,<!!!!"<"!!<!a!>,<'!>,<<u!>,<">},<!>,<!!!>},<!>,<e!!!>!!o!!o!!!!o!!!!>},{{<'u!>a!>,<>},<!!!>!i<o!a!!!><}aouu'<,>},{{{<!!!>"!!!>,}ea!!}!>!><!!'"!!<{>,<e!!!>!>!a<!!o!!!>i}!!}>},{{{<!>},<!">}},{<,!!!!!!!><>}},{{<!!!>},<'e>,<i!>,!i,!!!>ea>},{{<,>,<!!!>o!u,i!>u!!!!u!!!!!!!>},<}{!!>}},{{<}!>,,>}}}},{<i}}iu}{!>},<!>{<u!!!!!!o'>,<}<!!<<<,!>,<!<!!"u!>,<u>}}},{{{<!>},<!>},<!!'!>,<!!o!!oa!}!>!>!!!!"{>}},{}},{{{<<!>e!ooa!!!>},<<!!!>",!>},<!u{!!!!<e!!<>},{<}}u{!!"!>},<"!!o!!!><!<!!!>,<e!!!>u!!a!!!>},<>}},{{},<a!>'{"!>},<}!>,<!!!>"e>},{{<!>},<>,{<oe!!!>!!u>}},{<!!!!!>},<!>,<!>!!i!>,<!>}},!!!!e",>},{{<}!!!>!>},<!!a'oi<>,{{<"ou!!{{!>,<''euu>}}},{{<i<<o>},{}}}}}},{{{{<uu!!!>,<!>,<e!{,!>,<!!!!!>'!!>}},{{<o,>,{<{}oe}!o!>!!!!>}},{{}},{{<<o'!<!>,<{{,!!!>},<'e!!!!!!,!!!>!!!!!!!!>}}}},{{},{{}},{{<ai!>},<}!>,}<!!"e<!>,<!o>}}},{{{<<}o!!!>!}!}>},<"i"ei<}!!!!ae,!>,<!u!!i!>!!u>},{{{<!!!>"{o!!!>!!!>ii!!!!!}!!"!!u!!!>,<!!!>e!!<>},{<uu!>'ou!'""!"i!!!>,>}},<!o!>,<<!!!!<e!>},<"!>,<>}},{{}}}}},{{{{{},<'e!!'>},{{<!!,!>!e,!>},<,'!>},<!!!!!>!!!>},<,!!a,ie!!o!>},<!u>,{<a}"!a!>!!!!!>!>},<eao!>!!oi>}},{<!a!}!>o!!!>e!>,<!!!>,<!!!>,!!a"!!,{a,>}}},{{<!!!>a!!!!!>!!!>>},{{{<!!!>}!ueae!>!>{o!!!!!>!!"!!!>!>!ua>}},<!!!>}>}},{{{{<'u,!e!{"!!{!!{"''"a}{u!}>},<!!!oo'!>,<!!!>},<!!!!!!!>},<!!!>},<!>},<o!}!!!}>}},{{{<i!>,<!!!>ui!!!>!>}i<e>},{{{<!>,<!!e!>},<"!,'!!!!aa'!!!!,>}},{<u!!"!!!>!>},<!!!>{!!!!">}}},{{<'u!!{!}{>,<!e!>,<}e}!>},<>}},{<ea!!'!>!>,<o}<!!!!!!",e!!!'}>,{<>}}},{{<{!>},<o!!!>,<,>},{{{},{<u,e!!!>},<{u!>,<'au>}},{{<{a!o,!!{<!!!>{"!>!!!>!>},<'{'<>}}}},{}},{{{{<!>{!>,<<'ei!,!!!>iu!>e!!!>!!>}},<!>,<!>},<!!o'}}u!!!>,<!>!!!>},<eu>},{{<i<"{!"}!!!<o>},{<ao!!!i!!}!!!>!>!<oae<>}},{{{},{},{<}"!>,!!}'!>},<i!!!o}!!oo!!!>!!!>i!!>,{<<!!<e<!!!!!!eo!>},<!!o!a!!!>ei!!!>!>,<!!','<u>}}},{}}}}},{{{<}>},{<!!!>eu>,{<ui<!'!!{!!!>!!!>},<o!!!>o"u!!>,<}!!!>i!!!!!!!>!>},<!<uo<''!!,ii>}},{{},{<'e'!>!>},<!!!a!>!!i!!!>!!!!<!>"{<}>}}},{{<!>,<{i>,{{<a'!eu!>"!!!>>}}},{{<!>,<o!!!>,<o<!e}"!!!>!!!>"!},,e>}},{{{{<!>,<>},{<!!a!>,<u!!<,!!o"!'{>}},<!>!>,<o"<!!!,!><<!>u>},{},{{{<e!>,<o!>,<,!>,<!>,<>},{}},{}}}},{{{{<>},{<uo>,{{{<!!!>o!>},<}e}a"{e!!!>,<!>,<u<"!!"!>},<>}}}}}},{{{<,!{>}},{<o>}},{}}}},{{{{},{{<<!!{!!!>!!!!!!!>!>},<!>},<!!a!!!>},<,!!!>'!!!!!>,!!!>''">,{{},{<{}{'!>>}}}},{}},{{{}},{{{<>}},{<a"{!>},<>}}},{},{{{{},{<!!!>>}}},{{{<!"!>},<!!<<{!>,<!!a>},<{aoi'!!>}}}},{{{{{},{<'!>}!!!>,<!!!>i!o!!!>i!!!>},<"!>,!>!!{!>,<o>,<i<!>,<!!}",>},{<i!>},<a!>!!e>,{<<!}{!>},<!!!>!!!>!>,<!>},<!!!!!>!>!!>}}},{{<!!{"!!!{!!u!!!>'!!!>!!e!!!,'>}}},{{{}},{{{<!>},<>},<}e!'i>},{{{<!>ue!!!>},<{uu!!!>}!!{'>,{{<!!!>!e!>,<ooa}ou{!>''!}",!a'>}}},{{<i!!!<}u!!,}u!!!>"!!!>},<}{!!}>},{<!!'o,!>},<o}}',!>},<<!>},<!!,a"!>,<!"!>,<a>}}},{{<i{}o!!>,{<}i!!!>!>,<!!!>!!,!!!>{>,<!>},<!>,<!<!!'!!!"}!!!>e!>,<u<>}}}}},{<!!!u,!>!>,<u>,<e{!!!>u{eu!>},<!!<<!>,<u>}},{{{<!!}!>},<'!!'ii,"!!uu!>!'e>}}},{{{{<!a<'!>,<,>},<>},{<!!,}>}}}},{{<aoo,'!>!!,!>},<!i!!u>,{}},{{}}}},{{{<{!!'e!!!>!>},<!!!>"o!!,!>},<ooi!!!><>},{{<!!!!!>},<ee!!!>,<'!!!>a{!!,e!!!!!>a!>,!<!i!>,<>}}},{{{<ua}!>o>,{<!>,<!>'a{!!!>,<!>>}},{{{<,oiu{!!!!!!!>},<eo>},{<<e>}}}},{<!>},<""!!!>!>,<,ooe!!{!!!>},<!>,<>}},{{<i!!!><>},{},{{{<!!e{!>,<!!o!!!>,<e<!}!!"!!!>!>},<,>},{<!>},<!!oo}!a!!!>!!<'u>}},{{<e>},<>}}},{{<!}{a<!'}"a!>,<a!!o'i>,<!!!>},<!!!>i"!!!!{!!!!}ao!>},<}!!'i!!!!!!>},{{<!>},<!!,!>a!"!!u!!"a!!e>},<o,e!>,<!>,<}!!e!>},<!!'a,ii!o!>},<!!ai">},{{<o"!!!>!!!>}}!!!!!>i!>},<!>},<">,<!!!!!!!><{!!u!!,a'o{!>,<!">},{{<<a<>,<{>},{{{<!>o!>!>e}i">},{{<!!!!!>!>,<<!>},<!{a<a<!!>},{<!!'ue"e{ua>,<!>'!!}o!!!>!!!>a!>,<<!!!>!!!!!!{!>>}}},<{<a"!!"}o'io>},{<ue!>},<}e'e{>}},{{<'!>,<o!!!>},<!>!!!>oi'!!!>},<'o<>},{{{<!>!>!!!>!>},<!!!>},<u,!>,<!o}>},{}},{<!!!!}!u{!o!!ieea",u!!!!!>!!!>!><!!"">}},{<!>},<<}!!aa"!>},<"!>}a{!>},<!!!!!>!uo>}}}}}}},{{{{<{!}>},{{}},{}},{},{{<,!>"!!!>!>,<!!oo!!!>},<}i!'u'!!!>!>!>},<{a>,{<a!!!>!!!>!>,<!!!'!>!a",!>},<!!o!>},<a!!!!}}{>}},{<{u!>{,!>!!<!i>,<e<!>o!i!!!>!!!!"uo"!>,<u'"!>},<,!i>}}},{{{<<iee!!a"!>},<!>,<,>,<,!!!!!>}o!>,<oo!>!>,<"io!>},<}!',"!o>},{<}!!{'{!!!!<{!ai!!!>"!<ou!!a!{<!!">},{<!>},<!>,<i!e!!!>a!>,<!!o!>!>},<!>},<!!!>aa>,{<u"{<!>},<}!!o'"i!!u<}a>}}},{{{{{<>},{<<}uoa,'!e!!e!!!>!{o!!!i>}}},{<ai!!!>eou!!!>!a!!!ei}!{u!!!a!!!<!!ei>,<aue}!!!!}!>,<a{o!>,<!!!!>}},{{<!!o!!ieu!>,<!u',aeaia!!}">},{{{},{<!!'"<}i>}}}}}},{{},{{{{<'!!e!i!>u!><e,!">},{<!<<!>!!uu"!>},<!!u<iia!!}!">,{}}},{{}}},{{<a!!a<!>,<'!>,<!>,<,',!>,<>,{{{<!!!!!!!>e}"!!i<>}},<e!}'!>},<!>!>},<!!a!!'i>}},{<"!a',"a>}}},{{{<<,!>},<!>,<!o<!>},<<!!!>u>},{{{}},{<!!!!e<!!!!!>o!>,<o{!>!>,<>,<>},{}},{{},{<"!>,<!i>,{<>}}}},{{{<{!"!>i"!!<i"{}>}},{<>,<oi,i'>}},{{{<{!!!>oe!'!!!!!>!>!>},<!>,!!!e{a>}},{{<"!>,<!>u!!,!>a{<!!'a,>,{<i"!>},<u!>,<,,'!,!o!>},<!!!!i>}},<i!>},<io<!!a!!,!!!>}!"'"o!!o!>}>},{<!>'ue!!!>,<'ia}{!>},<!>,<{o<u!>,<>}},{{{{{<>}},<!o!!!>},<!!!>!>},<!!{ae!!e!!!!!!!!!!!>i>},{{},{{<o!>},<}{o!>,<!!!!!>!!!>,<!>!!!>!>,<u>}}},{{{<!>,a"!!i!>},<!!"!!"!!u}ue!!"o!!e>},{}},{<!>,<!!!>!!!>{ue!e,!>,<o<o{!>,<!>,<!!!>,<>}}},{{<!>},<i}!!<<!!e!>>}}}}},{{{<,>,<{!>},<{!,{,>},{<<e"}u}}!!!>!>!!!>a!>},<!>,<oea'u!!!>>,<i!>,o<!>!!"!>a!!!>,<!'!>!!!>>},{<{o{uuo<,o!!!>!!!>!!!>}>,{}}}},{{},{{{},{}},{{<i{ie"!o'{!!!>},<!a}!!!>},<>},<!!,e<e!>},<!>},<!!!>a!!e!>i>}},{{{{{{{{{<!>u!!!>!!!>!ui'{!>},<>}},{}},{}}},{<o!!!>>},{}},{{{{}},{{{<}ue<!!!!!>i!>},<!!a}a<!>,<!>,<>}},{{<!!{!>i!!!>},<a<!!!>!>},<!>},<u}{ao!!!!>},<o!>,<o!!!>!!!>i!!!><!>oe}!o>},{{{<!>!>,<!>ee!!!a!>!!!>>}}}},{{<a!!!>!!<<!!!!u!!e>,{}}},{{{<!>},<eu!>i!!'!>!!!!!>!>,<">},{{<'!!!!!>u!>,<ue"{,i!a}"{!!!>!!o!>,<>}},{{},{}}},{{{{},{{{<!>,<!'>}}},{<!i!>,<oe}!!o''<!>},<>}},{{{<ee!>!!>}},{<a{>,<!>!!{!>,<>}},{{{}},{{{{<!!a>},<>},<{!!!>,<o>},{{<{<<>},<!!!"!>,<!!!!!>!!e!!!>!>!!>}}},{{<!!,u{!!}"uie!!}!>,<o>},{{{<}!!!>!>,<!>},<a>}},{<!!!>!>,<<ea{"!>}aua}!>},<}!!!>!!!o'>,{<'",}"}>}}}}}},{{{<e!>},<!>>},{{<!>!>"'!!!<}!io!!!!u!!!>!><i!a!!!!!>>}}},{}},{{}}}},{{{<>},{{<!!!!!}!!i!><!!!>>}},{{<!!!!!>'>}}},{{{<{!!!><!!!>e!>!!!>e"!,}u>},{<!>}>,<!!!>'!"ae<a>},{{<i!>,<"!>},<!!!!!>},<ae!>>},{}}},{{{{<>}},{<o<!!!>e>,{{<oa!>,<"!}'u!>,<o'!>!"",!!!>>},{<!!a!>,<!!}!>},<!>},<!!!!!>,<u!>,<e<!!<a!{a!,!!!>!!!>>}}},{{<}'{!!a!!!>!!o!>!{!>},<!!!!!!""'>},{<{!!!>{>}}},{},{{{{{}},{{{<!!{"eu>},{}},{<!!'ia!}a''!>}>,{{<<},!>,<,ea!oi!!'a!!!"!!!>!>,<!!!>u>},<>}}}},{{<>}},{{{{<!>,<{!e!>,<au<,}>},{<!>!>},<"<e!>!"o',ua'"!>},<!!!{>}},{<!"!>},<!!}!!"e!!!>{{!!'u!e!>,<"!>,<>}},{{{<o!!!>!!"!"o!>!>,<!!!>>},<,a<!>},<!>,<!!o{ioo!"!>>},{{}},{{{<}'!!!!!>},<}{>}}}}}},{{<}e{!!ieia"a!>!eeu!!i!>>,{<!!!!!>"i>}},{{<'<,!'!!!>!>},<e>,<a!>>},{{<!!u<a'!!!><"!ou>,<!!!>!,!!>}}},{{<}u!o>},<!>!>,<ui>}}},{{<uu!i!<u!<u!!!>{!!!ii!!!>>},{<!!,,!<!{!>},<!!!>>,<<i!"}!!!>"oi}"o'!>!'!>!u>},{{<<i!!a!>!!"o!!i!!,e}{!!"i!!!><>},{}}}}},{{{{{},<a"!!!>!>'>}},{{<'>},{<,!!eie!>},<!!!>},<o!!!>!!!>'"!!!!<!>>,<o!>ou<>},{{<a!i!!io,>}}},{{{{<!!!>!>},<!!'!!,"!!!>!}"}!>},<}!!u>,<<a!!!>"!>,<"!!"o!>},<>},{{}}}}}},{{{<u!!!>"!>!!!>oi{!!!!<a!>},<i{!>!>"<}>},{{<}!!ee!>!!!!ea!!!!!!!><,!>>},<i!!!>,<u<i}"!!!>,iii{a}a!o>}},{<!>,<!>},<!!,}!!<!!!>'!!!>'!!!>},<!!!a>,{<!<}!>,<!!!>,!{{<o!>,<a!!!>!{u!>,<}!!!!!!,>}},{<o>}},{{{<!e!!!!!>,<,}a!!o!e}!!<i,a!!!!!>!>>}},{{<'!>},<!!<i!>!>a!><!>,<!!!>'>}}},{{{{<}!>,<!>},<>}},{<}!!!>!!!>!!e!>,<ooia!<>}},{{<}"i,i{!>,<<,}!>}!<!!}!!!!,{!!>},<<ii}!!!>!i>},{}}}},{{{<i,,a"!!oie!>,<u>}}}},{{{<>},{<!ua}>}}},{{},{},{{{},{<'!ou{>}},<!!!>!>!>},<{!>,<oeu>}}},{{<!!!!o!>!!"!!!>!>,<!"!>!!!>!>,<{u!!!>},<!!!>"!!>}},{{{<!>!},<!!{<>},<!>},<o}e!>,<}>},{{{},{{<aio{<!{!!u!>'{a,o!!ii">}},{<ei!>},<},!'<!!o'!!<!!{!>,<a!{>,{{}}}},{},{{<!!!>!>},<,!!!>}!>}!!ou!}ia'i>,<!e!!!!!!i!>},<!!!>!>!>},<!>,<!!!>},<e'!!'u!!!a{>},<u'i}!!!!}!>e">}},{<{!!auo!>,<e!>},<<i!!i!>,<'!!!>ie}"u>}}},{{<>,{{}}},{{{{<!!<a!!<,!!a!!!!!!e<>},<!>>},{<a}!!!>!>},<{!>},<u!>},<,!>},<'>}},{},{<"!!!!i!!{"o!!a}!o!!!>!>'>}}},{{<ou<!>,<>,{<!>,<!!,{'a,'!!,!>,<!!u!>,<!>!<<!>,<">}},{<<'>}}}}}}
diff --git a/2017/src/bin/day_1.rs b/2017/src/bin/day_1.rs
new file mode 100644
index 0000000..5d0e431
--- /dev/null
+++ b/2017/src/bin/day_1.rs
@@ -0,0 +1,24 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let number_chars = args.input[0].chars().collect::<Vec<_>>();
+
+ let mut sum = 0;
+
+ for i in 0..number_chars.len() {
+ let next = if args.part == 1 {
+ (i + 1)
+ } else {
+ (i + number_chars.len() / 2)
+ } % number_chars.len();
+ if (number_chars[i] == number_chars[next]) {
+ let parsed: i32 = number_chars[i].to_string().parse().unwrap();
+ sum += parsed;
+ }
+ }
+
+ println!("Sum is {}", sum);
+}
diff --git a/2017/src/bin/day_10.rs b/2017/src/bin/day_10.rs
new file mode 100644
index 0000000..faec18a
--- /dev/null
+++ b/2017/src/bin/day_10.rs
@@ -0,0 +1,63 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let lengths: Vec<usize> = if args.part == 1 {
+ args.input[0].split(",").map(|x| x.parse().unwrap()).collect()
+ } else {
+ let suffix: [usize; 5] = [17, 31, 73, 47, 23];
+ args.input[0].as_bytes()
+ .iter().map(|&x| x as usize)
+ .chain(suffix.iter().cloned())
+ .collect()
+ };
+
+ let mut position = 0;
+ let mut list: Vec<u32> = (0..256).collect();
+
+ if args.part == 1 {
+ hash_round(&mut list, &lengths, &mut position, 0);
+ } else {
+ for i in 0..64 {
+ let skip = lengths.len() * i;
+ hash_round(&mut list, &lengths, &mut position, skip);
+ }
+ }
+
+
+ if args.part == 1 {
+ let answer = list[0]*list[1];
+ println!("{}", answer);
+ } else {
+ let mut current_char = 0;
+ for (i, l) in list.iter().enumerate() {
+ current_char = current_char ^ l;
+ if i % 16 == 15 {
+ print!("{:02x}", current_char);
+ current_char = 0;
+ }
+ }
+ println!("");
+ }
+}
+
+fn hash_round(list: &mut Vec<u32>, lengths: &Vec<usize>, position: &mut usize, skip: usize) {
+ for (inner_skip, &length) in lengths.iter().enumerate() {
+ reverse(list, *position, length);
+ *position = (*position + length + skip + inner_skip) % list.len();
+ }
+}
+
+fn reverse(list: &mut Vec<u32>, position: usize, length: usize) {
+ let mut a = position;
+ let mut b = position + length - 1;
+ let len = list.len();
+ while a < b {
+ list.swap(a%len, b%len);
+
+ a += 1;
+ b -= 1;
+ }
+}
diff --git a/2017/src/bin/day_11.rs b/2017/src/bin/day_11.rs
new file mode 100644
index 0000000..ffb0833
--- /dev/null
+++ b/2017/src/bin/day_11.rs
@@ -0,0 +1,57 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let directions: Vec<&str> = args.input[0].split(",").collect();
+
+ let mut x = 0.0;
+ let mut y = 0.0;
+
+ let mut max_away = 0.0;
+
+ for dir in directions {
+ y += match dir {
+ "ne" => 0.5,
+ "n" => 1.0,
+ "nw" => 0.5,
+ "se" => -0.5,
+ "s" => -1.0,
+ "sw" => -0.5,
+ _ => panic!("Unexpected direction {}", dir)
+ };
+
+ x += match dir {
+ "ne" => -0.5,
+ "n" => 0.0,
+ "nw" => 0.5,
+ "se" => -0.5,
+ "s" => 0.0,
+ "sw" => 0.5,
+ _ => panic!("Unexpected direction {}", dir)
+ };
+
+ let current_distance = tile_distance(x, y);
+ if current_distance > max_away {
+ max_away = current_distance;
+ }
+ }
+
+ if args.part == 1 {
+ println!("Child process is {} away", tile_distance(x, y));
+ } else {
+ println!("At most, child process was {} away", max_away);
+ }
+
+}
+
+fn tile_distance(x: f32, y: f32) -> f32 {
+ let tiles_x = x.abs()*2.0;
+ let tiles_y = if y.abs() < tiles_x {
+ 0.0
+ } else {
+ y.abs() - tiles_x
+ };
+ tiles_x + tiles_y
+}
diff --git a/2017/src/bin/day_12.rs b/2017/src/bin/day_12.rs
new file mode 100644
index 0000000..39f05e9
--- /dev/null
+++ b/2017/src/bin/day_12.rs
@@ -0,0 +1,52 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+use std::cmp;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let mut groups: Vec<Vec<i32>> = vec!(vec!(0)); //0 in the first group
+
+ for line in args.input {
+ let mut words_iter = line.split_whitespace();
+ let current: i32 = words_iter.next().unwrap().parse().unwrap();
+ if find_group(&groups, current).is_none() {
+ groups.push(vec!(current));
+ }
+ words_iter.next().unwrap(); //<->
+ for other_str in words_iter {
+ let other: i32 = other_str.trim_right_matches(",").parse().unwrap();
+
+ match (find_group(&groups, current), find_group(&groups, other)) {
+ (Some(current_group), Some(other_group)) if current_group != other_group => {
+ merge_groups(&mut groups, current_group, other_group);
+ },
+ (Some(_), Some(_)) => {
+ },
+ (Some(current_group), None) => {
+ groups[current_group].push(other);
+ },
+ (None, _) => panic!("Current group not found!")
+ };
+ }
+ }
+
+ if args.part == 1 {
+ println!("First group has {} members", groups[0].len());
+ } else {
+ println!("Total of {} groups", groups.len());
+ }
+}
+
+fn find_group(groups: &Vec<Vec<i32>>, x: i32) -> Option<usize> {
+ groups.iter().position(|group| group.contains(&x))
+}
+
+fn merge_groups(groups: &mut Vec<Vec<i32>>, a: usize, b: usize) {
+ let src = cmp::max(a, b);
+ let dest = cmp::min(a, b);
+
+ let mut from = groups.swap_remove(src);
+ groups[dest].append(&mut from)
+}
diff --git a/2017/src/bin/day_13.rs b/2017/src/bin/day_13.rs
new file mode 100644
index 0000000..e85b541
--- /dev/null
+++ b/2017/src/bin/day_13.rs
@@ -0,0 +1,46 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+use std::collections::HashMap;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let input: HashMap<u32, u32> = args.input.iter().map(|line| {
+ let mut split_line = line.split(": ");
+ (split_line.next().unwrap().parse().unwrap(), split_line.next().unwrap().parse().unwrap())
+ }).collect();
+
+ if args.part == 1 {
+ let severity = calculate_severity(&input, 0, &args);
+ println!("Severity: {}", severity);
+ } else {
+ let optimal_delay = (0u32..).find(|&delay| calculate_severity(&input, delay, &args) == 0).unwrap();
+ println!("Wait {} picoseconds", optimal_delay);
+ }
+}
+
+fn calculate_severity(input: &HashMap<u32, u32>, delay: u32, args: &AdventArgs) -> u32 {
+ let mut severity = 0;
+ let max_depth = input.keys().max().cloned().unwrap();
+
+ for depth in 0..max_depth+1 {
+ severity += match input.get(&depth) {
+ Some(range) => {
+ let position = (depth + delay) % (2*range-2);
+
+ if position == 0 {
+ if args.part == 1 {
+ range * depth
+ } else {
+ range * depth + 1
+ }
+ } else {
+ 0
+ }
+ },
+ None => 0
+ };
+ }
+ severity
+}
diff --git a/2017/src/bin/day_14.rs b/2017/src/bin/day_14.rs
new file mode 100644
index 0000000..778a57f
--- /dev/null
+++ b/2017/src/bin/day_14.rs
@@ -0,0 +1,52 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+ let input = args.input[0].clone();
+
+ let mut used = 0;
+ let mut grid: Vec<Vec<bool>> = vec!(vec!(false; 128); 128);
+ for i in 0..128 {
+ let to_hash = format!("{}-{}", input, i);
+ let hash = knot_hash(&to_hash);
+ for (x1,c) in hash.chars().enumerate() {
+ let parsed = u32::from_str_radix(&c.to_string(), 16).unwrap();
+ used += parsed.count_ones();
+ for (x2,b) in format!("{:04b}",parsed).chars().enumerate() {
+ grid[i][4*x1+x2] = b == '1';
+ }
+ }
+ }
+
+ if args.part == 1 {
+ println!("{} is used", used);
+ } else {
+ let mut group_count = 0;
+ for start_y in 0..128 {
+ for start_x in 0..128 {
+ if grid[start_y][start_x] {
+ group_count += 1;
+ clear_group(&mut grid, Point{
+ x: start_x as i32,
+ y: start_y as i32
+ });
+ }
+ }
+ }
+ println!("{} groups", group_count);
+
+ }
+}
+
+fn clear_group(grid: &mut Vec<Vec<bool>>, point: Point) {
+ if point.x >= 0 && point.x < 128 && point.y >= 0 && point.y < 128 {
+ if grid[point.y as usize][point.x as usize] {
+ grid[point.y as usize][point.x as usize] = false;
+ clear_group(grid, point.up());
+ clear_group(grid, point.down());
+ clear_group(grid, point.left());
+ clear_group(grid, point.right());
+ }
+ }
+}
diff --git a/2017/src/bin/day_15.rs b/2017/src/bin/day_15.rs
new file mode 100644
index 0000000..29b63ad
--- /dev/null
+++ b/2017/src/bin/day_15.rs
@@ -0,0 +1,40 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let mut a: u64 = 591;
+ let mut b: u64 = 393;
+
+ let mut matches: u64 = 0;
+
+ let comparisons = if args.part == 1 {
+ 40_000_000
+ } else {
+ 5_000_000
+ };
+
+ for _ in 0..comparisons {
+ a = (a * 16807) % 2147483647;
+ b = (b * 48271) % 2147483647;
+
+ while args.part != 1 && a % 4 != 0 {
+ a = (a * 16807) % 2147483647;
+ }
+ while args.part != 1 && b % 8 != 0 {
+ b = (b * 48271) % 2147483647;
+ }
+
+ if lower_16_match(a, b) {
+ matches += 1;
+ }
+ }
+
+ println!("There were {} matches", matches);
+}
+
+fn lower_16_match(a: u64, b: u64) -> bool {
+ let mask = 65535; //2^16-1, ie 16 ones
+ (a & mask) == (b & mask)
+}
diff --git a/2017/src/bin/day_16.rs b/2017/src/bin/day_16.rs
new file mode 100644
index 0000000..9676714
--- /dev/null
+++ b/2017/src/bin/day_16.rs
@@ -0,0 +1,87 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+extern crate regex;
+use regex::Regex;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let spin_re = Regex::new(r"s(\d+)").unwrap();
+ let exchange_re = Regex::new(r"x(\d+)/(\d+)").unwrap();
+ let partner_re = Regex::new(r"p(\w)/(\w)").unwrap();
+ let input: Vec<Instruction> = args.input[0]
+ .split(',')
+ .map(|instruction| {
+ if let Some(caps) = spin_re.captures(instruction) {
+ let spin_amount: usize = caps[1].parse().unwrap();
+ Instruction::Spin(spin_amount)
+ } else if let Some(caps) = exchange_re.captures(instruction) {
+ let position_a: usize = caps[1].parse().unwrap();
+ let position_b: usize = caps[2].parse().unwrap();
+ Instruction::Exchange(position_a, position_b)
+ } else if let Some(caps) = partner_re.captures(instruction) {
+ let program_a = caps[1].chars().next().unwrap();
+ let program_b = caps[2].chars().next().unwrap();
+ Instruction::Partner(program_a, program_b)
+ } else {
+ panic!("Unhandled instruction: {}", instruction)
+ }
+ })
+ .collect();
+
+ let mut states = vec!("abcdefghijklmnop".chars().collect());
+ if args.part == 1 {
+ let answer = run(&input, &states.last().unwrap());
+ println!("{}", answer.iter().collect::<String>());
+ } else {
+ let repetitions = 1_000_000_000;
+ let mut cycle_found = false;
+ let mut cycle_start = 0;
+ while !cycle_found {
+ let next = run(&input, &states.last().unwrap());
+ if let Some(i) = states.iter().position(|&ref x| *x == next) {
+ cycle_found = true;
+ cycle_start = i;
+ } else {
+ states.push(next);
+ }
+ }
+ println!("Cycle found after pushing {} states", states.len());
+ println!("Cycle starts at {} states", cycle_start);
+
+ let solution_index = (repetitions - cycle_start) % (states.len() - cycle_start);
+ println!("{}", states[solution_index].iter().collect::<String>());
+
+ }
+}
+
+enum Instruction {
+ Spin(usize),
+ Exchange(usize, usize),
+ Partner(char, char)
+}
+
+fn run(instructions: &[Instruction], start: &Vec<char>) -> Vec<char> {
+ let mut programs = start.clone();
+ for instruction in instructions {
+ match instruction {
+ &Instruction::Exchange(a, b) => {
+ programs.swap(a, b);
+ },
+ &Instruction::Spin(spin_amount) => {
+ for _ in 0..spin_amount {
+ //this may be slow, but will suffice for right now
+ let end = programs.pop().unwrap();
+ programs.insert(0, end);
+ }
+ },
+ &Instruction::Partner(program_a, program_b) => {
+ let position_a: usize = programs.iter().position(|&x| x == program_a).unwrap();
+ let position_b: usize = programs.iter().position(|&x| x == program_b).unwrap();
+ programs.swap(position_a, position_b);
+ }
+ }
+ }
+ programs
+}
diff --git a/2017/src/bin/day_17.rs b/2017/src/bin/day_17.rs
new file mode 100644
index 0000000..09d6fdc
--- /dev/null
+++ b/2017/src/bin/day_17.rs
@@ -0,0 +1,47 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+ let step_size: usize = args.input[0].parse().unwrap();
+
+ let inserts = if args.part == 1 {
+ 2017
+ } else {
+ 50_000_000
+ };
+
+ let mut buffer = Vec::with_capacity(inserts + 1);
+ buffer.push(0);
+ let mut position = 0;
+
+ for i in 0..inserts as u32 {
+ let to_insert = i+1;
+ // the +1 is because they want it to insert AFTER the element
+ // that adding position ends on
+ position = ((position + step_size) % buffer.len()) + 1;
+ if args.part == 2 && position != 1 {
+ // for big vectors, push is MUCH more efficient than
+ // insert (O(C) vs O(n)). In part 2, we want the element
+ // after 0, which will always be index 1. It only needs to
+ // be inserted into the right place if it's actually going
+ // to be in position 1.
+ //
+ // If I wasn't meshing the solution with part 1, there
+ // probably wouldn't even be a vector, just tracking the
+ // length and index 1.
+ buffer.push(to_insert);
+ } else {
+ buffer.insert(position, to_insert);
+ }
+ }
+
+ let answer_position = if args.part == 1 {
+ (position+1)%buffer.len()
+ } else {
+ 1
+ };
+
+ let answer = buffer[answer_position];
+ println!("{}", answer);
+}
diff --git a/2017/src/bin/day_18.rs b/2017/src/bin/day_18.rs
new file mode 100644
index 0000000..f763f1f
--- /dev/null
+++ b/2017/src/bin/day_18.rs
@@ -0,0 +1,207 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+use std::str::FromStr;
+use std::collections::HashMap;
+use std::sync::mpsc::*;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let instructions: Vec<Instruction> = args.input.iter()
+ .map(|line| line.parse().unwrap())
+ .collect();
+
+ let (sender0, receiver0) = channel();
+ let (sender1, receiver1) = channel();
+
+ let mut program0 = Program::new(0, instructions.clone(), sender0, receiver1, args.part == 1);
+
+ if args.part == 1 {
+ program0.run();
+ let mut answer = 0;
+ while let Ok(x) = receiver0.try_recv() {
+ answer = x;
+ }
+
+ println!("Last sent value: {}", answer);
+ } else {
+ let mut program1 = Program::new(1, instructions.clone(), sender1, receiver0, args.part == 1);
+
+ while !(program0.terminated && program1.terminated) && (program0.run() || program1.run()) {
+ }
+
+
+ println!("Program 0 sent {} messages", program0.sent_count);
+ println!("Program 1 sent {} messages", program1.sent_count);
+ }
+
+
+}
+
+struct Program {
+ instructions: Vec<Instruction>,
+ registers: HashMap<char, i64>,
+ pc: i64,
+ terminated: bool,
+ sender: Sender<i64>,
+ sent_count: u64,
+ receiver: Receiver<i64>,
+ part1: bool
+}
+
+impl Program {
+ fn new(process_id: i64, instructions: Vec<Instruction>, sender: Sender<i64>, receiver: Receiver<i64>, part1: bool) -> Program {
+ let mut reg = HashMap::new();
+ if !part1 {
+ reg.insert('p', process_id);
+ }
+ Program {
+ instructions: instructions,
+ registers: reg,
+ pc: 0,
+ terminated: false,
+ sender: sender,
+ sent_count: 0,
+ receiver: receiver,
+ part1: part1
+ }
+ }
+ fn run(&mut self) -> bool {
+ use Instruction::*;
+
+ let mut blocked = false;
+ let mut did_something = false;
+
+ while !blocked && !self.terminated {
+ if self.pc < 0 || self.pc as usize >= self.instructions.len() {
+ self.terminated = true;
+ }
+ else {
+ let ins = self.instructions[self.pc as usize].clone();
+
+ match ins {
+ Snd(x) => {
+ self.sent_count += 1;
+ self.sender.send(self.get(x)).ok();
+ },
+ Set(x, y) => {
+ let y_val = self.get(y);
+ self.set(x, y_val);
+ },
+ Add(x, y) => {
+ let x_val = self.get(x);
+ let y_val = self.get(y);
+ self.set(x, x_val + y_val);
+ },
+ Mul(x, y) => {
+ let x_val = self.get(x);
+ let y_val = self.get(y);
+ self.set(x, x_val * y_val);
+ },
+ Mod(x, y) => {
+ let x_val = self.get(x);
+ let y_val = self.get(y);
+ self.set(x, x_val % y_val);
+ },
+ Rcv(x) => {
+ if self.part1 {
+ blocked = self.get(x) != 0;
+ } else {
+ match self.receiver.try_recv() {
+ Ok(y) => {
+ self.set(x, y);
+ },
+ Err(_) => {
+ blocked = true;
+ return did_something;
+ }
+ }
+ }
+ },
+ Jgz(x, y) => {
+ if self.get(x) > 0 {
+ self.pc = self.pc + self.get(y) - 1;
+ }
+ },
+ }
+ self.pc += 1;
+ did_something = true;
+ }
+ }
+ true
+ }
+
+ fn get(&self, register: Data) -> i64 {
+ use Data::*;
+ match register {
+ Register(c) => self.registers.get(&c).cloned().unwrap_or(0),
+ Literal(i) => i
+ }
+ }
+
+ fn set(&mut self, register: Data, value: i64) {
+ use Data::*;
+ match register {
+ Register(c) => {
+ self.registers.insert(c, value);
+ },
+ _ => {}
+ }
+ }
+}
+
+#[derive(Debug, Clone)]
+enum Instruction {
+ Snd(Data),
+ Set(Data, Data),
+ Add(Data, Data),
+ Mul(Data, Data),
+ Mod(Data, Data),
+ Rcv(Data),
+ Jgz(Data, Data)
+}
+
+impl FromStr for Instruction {
+ type Err = String;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ use Instruction::*;
+
+ let mut str_iter = s.split_whitespace();
+ let ins = str_iter.next();
+ let x = str_iter.next().map(|x| x.parse::<Data>());
+ let y = str_iter.next().map(|x| x.parse::<Data>());
+
+ match (ins, x, y) {
+ (Some("snd"), Some(Ok(x)), _) => Ok(Snd(x)),
+ (Some("set"), Some(Ok(x)), Some(Ok(y))) => Ok(Set(x, y)),
+ (Some("add"), Some(Ok(x)), Some(Ok(y))) => Ok(Add(x, y)),
+ (Some("mul"), Some(Ok(x)), Some(Ok(y))) => Ok(Mul(x, y)),
+ (Some("mod"), Some(Ok(x)), Some(Ok(y))) => Ok(Mod(x, y)),
+ (Some("rcv"), Some(Ok(x)), _) => Ok(Rcv(x)),
+ (Some("jgz"), Some(Ok(x)), Some(Ok(y))) => Ok(Jgz(x, y)),
+ (_, _, _) => Err(format!("Unknown instruction {}", s))
+ }
+ }
+}
+
+#[derive(Debug, Clone, Copy)]
+enum Data {
+ Literal(i64),
+ Register(char)
+}
+
+impl FromStr for Data {
+ type Err = String;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ use Data::*;
+
+ match (s.parse(), s.chars().next()) {
+ (Ok(num), _) => Ok(Literal(num)),
+ (Err(_), Some(c)) => Ok(Register(c)),
+ (_, _) => Err(format!("Invalid data {}", s))
+ }
+ }
+}
diff --git a/2017/src/bin/day_19.rs b/2017/src/bin/day_19.rs
new file mode 100644
index 0000000..b333c98
--- /dev/null
+++ b/2017/src/bin/day_19.rs
@@ -0,0 +1,78 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ use Direction::*;
+
+ let args = AdventArgs::init();
+
+ let input: Vec<Vec<char>> = args.input.iter().map(|line| line.chars().collect()).collect();
+
+ let mut position = Point {
+ x: input[0].iter().position(|&c| c == '|').unwrap() as i32,
+ y: 0
+ };
+
+ let mut direction = Down;
+ let mut path_ended = false;
+ let mut tokens = Vec::new();
+
+ // moving onto the map counts as one, but because of how I'm
+ // counting there's also an off the map step that I shouldn't be
+ // counting at the end. They cancel out.
+ let mut steps_moved = 0;
+
+ while !path_ended {
+ position = position.shift(&direction);
+ steps_moved += 1;
+
+ match char_at(&input, &position) {
+ '|' | '-' => {
+ //continue as is
+ },
+ ' ' => {
+ path_ended = true;
+ },
+ '+' => {
+ let left_option = char_at(&input, &position.shift(&direction.rotate_left()));
+ let right_option = char_at(&input, &position.shift(&direction.rotate_right()));
+ match (left_option, right_option) {
+ (' ', ' ') => {
+ path_ended = true;
+ },
+ (_, ' ') => {
+ direction = direction.rotate_left();
+ },
+ (' ', _) => {
+ direction = direction.rotate_right();
+ },
+ _ => {
+ panic!("Don't know where to go from {:?}", position);
+ }
+ }
+ },
+ token => {
+ tokens.push(token);
+ }
+ }
+
+ }
+
+ if args.part == 1 {
+ println!("{}", tokens.iter().collect::<String>());
+ } else {
+ println!("{}", steps_moved);
+ }
+}
+
+fn char_at(input: &Vec<Vec<char>>, position: &Point) -> char {
+ if position.y < 0 ||
+ position.x < 0 ||
+ position.y as usize >= input.len() ||
+ position.x as usize >= input[position.y as usize].len() {
+ ' '
+ } else {
+ input[position.y as usize][position.x as usize]
+ }
+
+}
diff --git a/2017/src/bin/day_2.rs b/2017/src/bin/day_2.rs
new file mode 100644
index 0000000..307029a
--- /dev/null
+++ b/2017/src/bin/day_2.rs
@@ -0,0 +1,26 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+ let sum = args.input.iter().map(|line| {
+ let splitline = parse_space_separated_ints(line).unwrap();
+
+ if args.part == 1 {
+ let max = splitline.iter().max().unwrap();
+ let min = splitline.iter().min().unwrap();
+ max-min
+ } else {
+ for i in 0..splitline.len() {
+ for j in 0..splitline.len() {
+ if i != j && splitline[i] % splitline[j] == 0 {
+ return splitline[i] / splitline[j];
+ }
+ }
+ }
+ panic!("Didn't find a dividing one! {:?}", splitline)
+ }
+ }).sum::<i32>();
+
+ println!("Checksum is {}", sum);
+}
diff --git a/2017/src/bin/day_20.rs b/2017/src/bin/day_20.rs
new file mode 100644
index 0000000..f528675
--- /dev/null
+++ b/2017/src/bin/day_20.rs
@@ -0,0 +1,89 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+extern crate regex;
+use regex::Regex;
+
+#[macro_use]
+extern crate lazy_static;
+
+use std::str::FromStr;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let mut particles: Vec<Particle> = args.input.iter()
+ .map(|line| line.parse().unwrap())
+ .collect();
+
+ // I took eventually to be after a largish number. Seemed to work
+ // out, but I'm sure there is a more mathematical way to work it
+ // out.
+ for _ in 0..1000 {
+ particles = particles.iter().map(|p| p.step()).collect();
+ if args.part == 2 {
+ let before_collisions = particles.clone();
+ particles.retain(|p| {
+ before_collisions.iter().filter(|p2| p2.position == p.position).count() == 1
+ });
+ }
+ }
+
+ if args.part == 1 {
+ let (closest, _) = particles.iter().enumerate().min_by_key(|&(_, p)| p.position.manhattan_distance()).unwrap();
+ println!("Closest to 0: {}", closest);
+ } else {
+ let remaining = particles.iter().count();
+ println!("Remaining: {}", remaining);
+ }
+
+}
+
+#[derive(Debug, Clone)]
+struct Particle {
+ position: Point3d,
+ velocity: Point3d,
+ acceleration: Point3d
+}
+
+
+impl Particle {
+ fn step(&self) -> Particle {
+ let v = self.velocity + self.acceleration;
+ Particle {
+ position: self.position + v,
+ velocity: v,
+ acceleration: self.acceleration
+ }
+ }
+}
+
+impl FromStr for Particle {
+ type Err = String;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ lazy_static!{
+ static ref RE: Regex = Regex::new(r"p=<(-?\d+),(-?\d+),(-?\d+)>, v=<(-?\d+),(-?\d+),(-?\d+)>, a=<(-?\d+),(-?\d+),(-?\d+)>").unwrap();
+ };
+
+ let caps = RE.captures(s).unwrap();
+ Ok(Particle {
+ position: Point3d {
+ x: caps[1].parse().unwrap(),
+ y: caps[2].parse().unwrap(),
+ z: caps[3].parse().unwrap()
+ },
+ velocity: Point3d {
+ x: caps[4].parse().unwrap(),
+ y: caps[5].parse().unwrap(),
+ z: caps[6].parse().unwrap()
+ },
+ acceleration: Point3d {
+ x: caps[7].parse().unwrap(),
+ y: caps[8].parse().unwrap(),
+ z: caps[9].parse().unwrap()
+ }
+ })
+ }
+}
+
diff --git a/2017/src/bin/day_21.rs b/2017/src/bin/day_21.rs
new file mode 100644
index 0000000..7f7ac79
--- /dev/null
+++ b/2017/src/bin/day_21.rs
@@ -0,0 +1,200 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+extern crate regex;
+use regex::Regex;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let (t2, t3) = parse_transforms(&args.input);
+
+ let mut picture = vec!(
+ vec!(false, true, false),
+ vec!(false, false, true),
+ vec!(true, true, true)
+ );
+
+ let iterations = if args.part == 1 {
+ 5
+ } else {
+ 18
+ };
+ for _ in 0..iterations {
+ picture = expand(&picture, &t2, &t3);
+ }
+
+ let ones: usize = picture.iter().map(
+ |row| row.iter().filter(|&&x| x).count()
+ ).sum();
+ println!("{} ones", ones);
+}
+
+fn print(picture: &Vec<Vec<bool>>) {
+ for row in picture {
+ for &c in row {
+ print!("{}", if c {"#"} else {"."});
+ }
+ println!();
+ }
+ println!();
+}
+
+fn expand(picture: &Vec<Vec<bool>>, t2: &Vec<Transform2>, t3: &Vec<Transform3>) -> Vec<Vec<bool>> {
+ let size = picture.len();
+ let div = if size % 2 == 0 { 2 } else { 3 };
+ let segments = size / div;
+ let new_size = size + segments;
+
+ let mut result = vec!(vec!(false; new_size); new_size);
+
+ for i in 0..segments {
+ let y = i*div;
+ let v = i*(div+1);
+ for j in 0..segments {
+ let x = j*div;
+ let u = j*(div+1);
+ if div == 2 {
+ let init = [
+ [picture[y][x], picture[y][x+1]],
+ [picture[y+1][x], picture[y+1][x+1]]
+ ];
+ let pattern = t2.iter().find(|p| p.matches(&init)).expect(&format!("No pattern matches {:?}", init));
+ let to = pattern.to;
+
+ for a in 0..div+1 {
+ for b in 0..div+1 {
+ result[v+a][u+b] = to[a][b];
+ }
+ }
+ } else {
+ let init = [
+ [picture[y][x], picture[y][x+1], picture[y][x+2]],
+ [picture[y+1][x], picture[y+1][x+1], picture[y+1][x+2]],
+ [picture[y+2][x], picture[y+2][x+1], picture[y+2][x+2]]
+ ];
+ let pattern = t3.iter().find(|p| p.matches(&init)).expect(&format!("No pattern matches {:?}", init));
+ let to = pattern.to;
+
+ for a in 0..div+1 {
+ for b in 0..div+1 {
+ result[v+a][u+b] = to[a][b];
+ }
+ }
+ }
+ }
+ }
+
+ result
+}
+
+fn parse_transforms(input: &Vec<String>) -> (Vec<Transform2>, Vec<Transform3>) {
+ let t2_re = Regex::new(r"^(.)(.)/(.)(.) => (.)(.)(.)/(.)(.)(.)/(.)(.)(.)$").unwrap();
+ let t3_re = Regex::new(r"^(.)(.)(.)/(.)(.)(.)/(.)(.)(.) => (.)(.)(.)(.)/(.)(.)(.)(.)/(.)(.)(.)(.)/(.)(.)(.)(.)$").unwrap();
+
+ let mut t2 = Vec::new();
+ let mut t3 = Vec::new();
+ for line in input {
+ if let Some(t2_caps) = t2_re.captures(line) {
+ t2.push(Transform2 {
+ from: [
+ [&t2_caps[1] == "#", &t2_caps[2] == "#"],
+ [&t2_caps[3] == "#", &t2_caps[4] == "#"]
+ ],
+ to: [
+ [&t2_caps[5] == "#", &t2_caps[6] == "#", &t2_caps[7] == "#"],
+ [&t2_caps[8] == "#", &t2_caps[9] == "#", &t2_caps[10] == "#"],
+ [&t2_caps[11] == "#", &t2_caps[12] == "#", &t2_caps[13] == "#"]
+ ]
+ });
+ } else if let Some(t3_caps) = t3_re.captures(line) {
+ t3.push(Transform3 {
+ from: [
+ [&t3_caps[1] == "#", &t3_caps[2] == "#", &t3_caps[3] == "#"],
+ [&t3_caps[4] == "#", &t3_caps[5] == "#", &t3_caps[6] == "#"],
+ [&t3_caps[7] == "#", &t3_caps[8] == "#", &t3_caps[9] == "#"]
+ ],
+ to: [
+ [&t3_caps[10] == "#", &t3_caps[11] == "#", &t3_caps[12] == "#", &t3_caps[13] == "#"],
+ [&t3_caps[14] == "#", &t3_caps[15] == "#", &t3_caps[16] == "#", &t3_caps[17] == "#"],
+ [&t3_caps[18] == "#", &t3_caps[19] == "#", &t3_caps[20] == "#", &t3_caps[21] == "#"],
+ [&t3_caps[22] == "#", &t3_caps[23] == "#", &t3_caps[24] == "#", &t3_caps[25] == "#"]
+ ]
+ });
+ }
+ }
+
+ (t2, t3)
+}
+
+#[derive(Debug)]
+struct Transform2 {
+ from: [[bool; 2]; 2],
+ to: [[bool; 3]; 3]
+}
+
+impl Transform2 {
+ fn rotate(from: &[[bool;2];2]) -> [[bool;2];2] {
+ [
+ [from[1][0],from[0][0]],
+ [from[1][1],from[0][1]]
+ ]
+ }
+
+ fn flip(from: &[[bool;2];2]) -> [[bool;2];2] {
+ [
+ [from[0][1],from[0][0]],
+ [from[1][1],from[1][0]]
+ ]
+ }
+
+ fn matches(&self, other: &[[bool; 2]; 2]) -> bool {
+ let mut any_match = false;
+ let mut spinning_other = other.clone();
+ for _ in 0..4 {
+ any_match = any_match ||
+ self.from == spinning_other ||
+ self.from == Transform2::flip(&spinning_other);
+
+ spinning_other = Transform2::rotate(&spinning_other);
+ }
+ any_match
+ }
+}
+
+#[derive(Debug)]
+struct Transform3 {
+ from: [[bool; 3]; 3],
+ to: [[bool; 4]; 4]
+}
+
+impl Transform3 {
+ fn rotate(from: &[[bool;3];3]) -> [[bool;3];3] {
+ [
+ [from[2][0],from[1][0],from[0][0]],
+ [from[2][1],from[1][1],from[0][1]],
+ [from[2][2],from[1][2],from[0][2]]
+ ]
+ }
+
+ fn flip(from: &[[bool;3];3]) -> [[bool;3];3] {
+ [
+ [from[0][2],from[0][1],from[0][0]],
+ [from[1][2],from[1][1],from[1][0]],
+ [from[2][2],from[2][1],from[2][0]]
+ ]
+ }
+
+ fn matches(&self, other: &[[bool; 3]; 3]) -> bool {
+ let mut any_match = false;
+ let mut spinning_other = other.clone();
+ for _ in 0..4 {
+ any_match = any_match ||
+ self.from == spinning_other ||
+ self.from == Transform3::flip(&spinning_other);
+
+ spinning_other = Transform3::rotate(&spinning_other);
+ }
+ any_match
+ }
+}
diff --git a/2017/src/bin/day_22.rs b/2017/src/bin/day_22.rs
new file mode 100644
index 0000000..917ed63
--- /dev/null
+++ b/2017/src/bin/day_22.rs
@@ -0,0 +1,73 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+use std::collections::HashSet;
+
+fn main() {
+ let args = AdventArgs::init();
+ let input_width = args.input[0].len();
+ let input_height = args.input.len();
+
+ let mut position = Point {
+ x: (input_width / 2) as i32,
+ y: (input_height / 2) as i32,
+ };
+ let mut direction = Direction::Up;
+
+ let mut weakened: HashSet<Point> = HashSet::new();
+ let mut infected: HashSet<Point> = HashSet::new();
+ let mut flagged: HashSet<Point> = HashSet::new();
+
+ for (y, line) in args.input.iter().enumerate() {
+ for (x, c) in line.chars().enumerate() {
+ if c == '#' {
+ infected.insert(Point {
+ x: x as i32,
+ y: y as i32
+ });
+ }
+ }
+ }
+
+ let mut infections_caused = 0;
+
+ let bursts = if args.part == 1 {
+ 10_000
+ } else {
+ 10_000_000
+ };
+
+ for _ in 0..bursts {
+ if args.part == 1 {
+ if infected.contains(&position) {
+ direction = direction.rotate_right();
+ infected.remove(&position);
+ } else {
+ direction = direction.rotate_left();
+ infected.insert(position);
+ infections_caused += 1;
+ }
+ }
+ else {
+ if weakened.contains(&position) {
+ infected.insert(position);
+ weakened.remove(&position);
+ infections_caused += 1;
+ } else if infected.contains(&position) {
+ direction = direction.rotate_right();
+ flagged.insert(position);
+ infected.remove(&position);
+ } else if flagged.contains(&position) {
+ direction = direction.rotate_right().rotate_right();
+ flagged.remove(&position);
+ } else {
+ direction = direction.rotate_left();
+ weakened.insert(position);
+ }
+ }
+ position = position.shift(&direction);
+ }
+
+ println!("Infections caused {}", infections_caused);
+
+}
diff --git a/2017/src/bin/day_23.rs b/2017/src/bin/day_23.rs
new file mode 100644
index 0000000..d199af0
--- /dev/null
+++ b/2017/src/bin/day_23.rs
@@ -0,0 +1,168 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+use std::str::FromStr;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ if args.part == 1 {
+ let instructions: Vec<Instruction> = args.input.iter()
+ .map(|line| line.parse().unwrap())
+ .collect();
+
+ let mut program = Program::new(instructions.clone(), args.part == 1);
+ let mul_called = program.run();
+ println!("Mult called {} times", mul_called);
+ } else {
+ println!("Result is {}", run_as_rust());
+ }
+
+}
+
+fn to_register(c: char) -> usize {
+ (c as u32 - 'a' as u32) as usize
+}
+
+struct Program {
+ instructions: Vec<Instruction>,
+ registers: [i64; 8],
+ pc: i64
+}
+
+impl Program {
+ fn new(instructions: Vec<Instruction>, part1: bool) -> Program {
+ let mut reg = [0; 8];
+ if part1 == false {
+ reg[0] = 1;
+ }
+ Program {
+ instructions: instructions,
+ registers: reg,
+ pc: 0
+ }
+ }
+ fn run(&mut self) -> u32 {
+ use Instruction::*;
+
+ let mut mul_called = 0;
+
+ while self.pc >= 0 && (self.pc as usize) < self.instructions.len() {
+ let ins = self.instructions[self.pc as usize].clone();
+
+ match ins {
+ Set(x, y) => {
+ let y_val = self.get(y);
+ self.set(x, y_val);
+ },
+ Sub(x, y) => {
+ let x_val = self.get(x);
+ let y_val = self.get(y);
+ self.set(x, x_val - y_val);
+ },
+ Mul(x, y) => {
+ let x_val = self.get(x);
+ let y_val = self.get(y);
+ self.set(x, x_val * y_val);
+ mul_called += 1;
+ },
+ Jnz(x, y) => {
+ if self.get(x) != 0 {
+ self.pc = self.pc + self.get(y) - 1;
+ }
+ },
+ }
+ self.pc += 1;
+ }
+
+ mul_called
+ }
+
+ fn get(&self, register: Data) -> i64 {
+ use Data::*;
+ match register {
+ Register(c) => self.registers[c],
+ Literal(i) => i
+ }
+ }
+
+ fn set(&mut self, register: Data, value: i64) {
+ use Data::*;
+ match register {
+ Register(c) => {
+ self.registers[c] = value;
+ },
+ _ => {}
+ }
+ }
+}
+
+#[derive(Debug, Clone)]
+enum Instruction {
+ Set(Data, Data),
+ Sub(Data, Data),
+ Mul(Data, Data),
+ Jnz(Data, Data)
+}
+
+impl FromStr for Instruction {
+ type Err = String;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ use Instruction::*;
+
+ let mut str_iter = s.split_whitespace();
+ let ins = str_iter.next();
+ let x = str_iter.next().map(|x| x.parse::<Data>());
+ let y = str_iter.next().map(|x| x.parse::<Data>());
+
+ match (ins, x, y) {
+ (Some("set"), Some(Ok(x)), Some(Ok(y))) => Ok(Set(x, y)),
+ (Some("sub"), Some(Ok(x)), Some(Ok(y))) => Ok(Sub(x, y)),
+ (Some("mul"), Some(Ok(x)), Some(Ok(y))) => Ok(Mul(x, y)),
+ (Some("jnz"), Some(Ok(x)), Some(Ok(y))) => Ok(Jnz(x, y)),
+ (_, _, _) => Err(format!("Unknown instruction {}", s))
+ }
+ }
+}
+
+#[derive(Debug, Clone, Copy)]
+enum Data {
+ Literal(i64),
+ Register(usize)
+}
+
+impl FromStr for Data {
+ type Err = String;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ use Data::*;
+
+ match (s.parse(), s.chars().next()) {
+ (Ok(num), _) => Ok(Literal(num)),
+ (Err(_), Some(c)) => Ok(Register(to_register(c))),
+ (_, _) => Err(format!("Invalid data {}", s))
+ }
+ }
+}
+
+
+fn run_as_rust() -> i64 {
+ let mut h: i64 = 0;
+ let mut b: i64 = 99 * 100 + 100000;
+ let c: i64 = b + 17000;
+
+ while b <= c {
+ let f = (2..b).any(|d| {
+ b % d == 0
+ });
+
+ if f {
+ h += 1;
+ }
+
+ b += 17;
+ }
+
+ h
+}
diff --git a/2017/src/bin/day_24.rs b/2017/src/bin/day_24.rs
new file mode 100644
index 0000000..eb7fddd
--- /dev/null
+++ b/2017/src/bin/day_24.rs
@@ -0,0 +1,60 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+ let components: Vec<Component> = args.input.iter()
+ .map(|line| {
+ let mut split = line.split('/');
+ Component {
+ a: split.next().unwrap().parse().unwrap(),
+ b: split.next().unwrap().parse().unwrap()
+ }
+ })
+ .collect();
+
+ if args.part == 1 {
+ let strongest = build_strongest(0, components);
+ println!("{}", strongest);
+ } else {
+ let (strongest, longest) = build_longest(0, components);
+ println!("length: {}, strength: {}", longest, strongest);
+ }
+}
+
+fn build_strongest(start: u32, components: Vec<Component>) -> u32 {
+ components.iter().enumerate()
+ .filter(|&(_, c)| c.a == start || c.b == start)
+ .map(|(i, c)| {
+ let end = if c.a == start { c.b } else { c.a };
+ let mut subset = components.clone();
+ subset.remove(i);
+ c.strength() + build_strongest(end, subset)
+ }).max().unwrap_or(0)
+}
+
+fn build_longest(start: u32, components: Vec<Component>) -> (u32, u32) {
+ components.iter().enumerate()
+ .filter(|&(_, c)| c.a == start || c.b == start)
+ .map(|(i, c)| {
+ let end = if c.a == start { c.b } else { c.a };
+ let mut subset = components.clone();
+ subset.remove(i);
+ let (s, l) = build_longest(end, subset);
+ (c.strength() + s, 1 + l)
+ }).max_by(|&(s1, l1), &(s2, l2)| {
+ l1.cmp(&l2).then(s1.cmp(&s2))
+ }).unwrap_or((0, 0))
+}
+
+#[derive(Debug, Clone)]
+struct Component {
+ a: u32,
+ b: u32
+}
+
+impl Component {
+ fn strength(&self) -> u32 {
+ self.a + self.b
+ }
+}
diff --git a/2017/src/bin/day_25.rs b/2017/src/bin/day_25.rs
new file mode 100644
index 0000000..8d7b0da
--- /dev/null
+++ b/2017/src/bin/day_25.rs
@@ -0,0 +1,125 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+extern crate regex;
+use regex::Regex;
+
+use std::slice::Iter;
+use std::collections::HashSet;
+
+fn main() {
+ let args = AdventArgs::init();
+ let program = parse(&args.input);
+
+ let mut position: i32 = 0;
+ let mut state = program.state(program.start).expect("Started out of program bounds");
+ let mut tape = HashSet::new();
+
+ for _ in 0..program.iterations {
+ let instruction = if tape.contains(&position) {
+ &state.if1
+ } else {
+ &state.if0
+ };
+ if instruction.write {
+ tape.insert(position);
+ } else {
+ tape.remove(&position);
+ }
+ position += instruction.offset;
+ state = program.state(instruction.next).expect("Redirected to unknown state");
+ }
+
+ println!("{}", tape.len());
+}
+
+fn parse(input: &Vec<String>) -> Program {
+ let state_re = Regex::new(r"state (\w)").unwrap();
+ let iterations_re = Regex::new(r"(\d+) steps").unwrap();
+ let write_re = Regex::new(r"Write the value (\d)").unwrap();
+ let move_re = Regex::new(r"Move one slot to the (\w+)").unwrap();
+
+ let mut lines = input.iter();
+ let start = parse_char(&mut lines, &state_re);
+ let iterations = parse_number(&mut lines, &iterations_re);
+
+ let mut states = Vec::new();
+ while let Some(heading) = lines.next() {
+ states.push(State {
+ id: state_re.captures(heading).unwrap()[1].chars().next().unwrap(),
+ if0: parse_instruction(&mut lines, &write_re, &move_re, &state_re),
+ if1: parse_instruction(&mut lines, &write_re, &move_re, &state_re)
+ });
+ }
+
+ Program {
+ start: start,
+ iterations: iterations,
+ states: states
+ }
+}
+
+fn parse_char(lines: &mut Iter<String>, re: &Regex) -> char {
+ re.captures(
+ lines.next().unwrap()
+ ).unwrap()[1].chars().next().unwrap()
+}
+
+fn parse_number(lines: &mut Iter<String>, re: &Regex) -> u32 {
+ re.captures(
+ lines.next().unwrap()
+ ).unwrap()[1].parse().unwrap()
+}
+fn parse_direction(lines: &mut Iter<String>, re: &Regex) -> i32 {
+ if re.captures(
+ lines.next().unwrap()
+ ).unwrap()[1] == *"left" {
+ -1
+ } else {
+ 1
+ }
+}
+
+fn parse_bool(lines: &mut Iter<String>, re: &Regex) -> bool {
+ re.captures(
+ lines.next().unwrap()
+ ).unwrap()[1] == *"1"
+}
+
+fn parse_instruction(lines: &mut Iter<String>, write_re: &Regex, offset_re: &Regex, next_re: &Regex) -> Instruction {
+ lines.next();
+ Instruction {
+ write: parse_bool(lines, &write_re),
+ offset: parse_direction(lines, &offset_re),
+ next: parse_char(lines, &next_re)
+ }
+}
+
+#[derive(Debug)]
+struct Program {
+ start: char,
+ iterations: u32,
+ states: Vec<State>
+}
+
+impl Program {
+ fn state(&self, i: char) -> Option<&State> {
+ self.states.iter().find(|s| s.id == i)
+ }
+}
+
+#[derive(Debug)]
+struct State {
+ id: char,
+ if0: Instruction,
+ if1: Instruction
+}
+
+#[derive(Debug)]
+struct Instruction {
+ write: bool,
+ offset: i32,
+ next: char
+}
+
+
diff --git a/2017/src/bin/day_3.rs b/2017/src/bin/day_3.rs
new file mode 100644
index 0000000..69ded88
--- /dev/null
+++ b/2017/src/bin/day_3.rs
@@ -0,0 +1,62 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+use std::collections::HashMap;
+
+fn main() {
+ use Direction::*;
+
+ let args = AdventArgs::init();
+ let input = args.one_number_input().unwrap();
+
+ let mut memory: HashMap<Point, i32> = HashMap::new();
+ let mut last_allocated = 1;
+
+ let mut current = Point {
+ x: 0,
+ y: 0
+ };
+ memory.insert(current, last_allocated);
+
+ let mut steps_per_direction = 1;
+ let mut steps_to_next_turn = 1;
+ let mut turns_to_spiral_increase = 2;
+
+ let mut current_index = 1;
+ let mut current_direction = Right;
+
+ while (args.part == 1 && current_index != input) || (args.part == 2 && last_allocated < input) {
+ current = current.shift(&current_direction);
+ current_index += 1;
+
+ steps_to_next_turn -= 1;
+ if steps_to_next_turn == 0 {
+ current_direction = current_direction.rotate_left();
+ turns_to_spiral_increase -= 1;
+ if turns_to_spiral_increase == 0 {
+ steps_per_direction += 1;
+ turns_to_spiral_increase = 2;
+ }
+
+ steps_to_next_turn = steps_per_direction;
+ }
+
+ if args.part == 2 {
+ last_allocated = memory.get(&current.left()).cloned().unwrap_or(0) +
+ memory.get(&current.right()).cloned().unwrap_or(0) +
+ memory.get(&current.up()).cloned().unwrap_or(0) +
+ memory.get(&current.down()).cloned().unwrap_or(0) +
+ memory.get(&current.up().left()).cloned().unwrap_or(0) +
+ memory.get(&current.up().right()).cloned().unwrap_or(0) +
+ memory.get(&current.down().left()).cloned().unwrap_or(0) +
+ memory.get(&current.down().right()).cloned().unwrap_or(0);
+
+ memory.insert(current, last_allocated);
+ }
+ }
+
+ println!("{:?}", current);
+ println!("Distance: {}", current.x.abs() + current.y.abs());
+ println!("Last Allocated Value: {}", last_allocated);
+
+}
diff --git a/2017/src/bin/day_4.rs b/2017/src/bin/day_4.rs
new file mode 100644
index 0000000..a9a098a
--- /dev/null
+++ b/2017/src/bin/day_4.rs
@@ -0,0 +1,37 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let valid_count = args.input.iter()
+ .map(|line| {
+ let words = line.split_whitespace().map(|x| x.to_string()).collect::<Vec<String>>();
+ if args.part == 1 {
+ let mut deduped_words = words.clone();
+ deduped_words.sort();
+ deduped_words.dedup();
+ words.len() == deduped_words.len()
+ } else {
+ !words.iter().enumerate().any(|(i, word1)| {
+ words.iter().enumerate().any(|(j, word2)| {
+ i != j && is_anagram(word1, word2)
+ })
+ })
+ }
+ })
+ .filter(|&valid| valid)
+ .count();
+
+ println!("Valid count: {}", valid_count);
+}
+
+fn is_anagram(word1: &str, word2: &str) -> bool {
+ let mut chars1 = word1.chars().collect::<Vec<_>>();
+ chars1.sort();
+ let mut chars2 = word2.chars().collect::<Vec<_>>();
+ chars2.sort();
+
+ chars1.len() == chars2.len() &&
+ chars1.iter().zip(chars2.iter()).all(|(c1, c2)| c1 == c2)
+}
diff --git a/2017/src/bin/day_5.rs b/2017/src/bin/day_5.rs
new file mode 100644
index 0000000..49bdbd1
--- /dev/null
+++ b/2017/src/bin/day_5.rs
@@ -0,0 +1,25 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let mut jumps: Vec<i32> = args.input.iter().map(|line| line.parse().unwrap()).collect();
+ let mut steps_taken = 0;
+ let mut current_position: i32 = 0;
+
+ while current_position >= 0 && (current_position as usize) < jumps.len() {
+ let previous_position = current_position;
+ current_position += jumps[current_position as usize];
+
+ if args.part == 1 || jumps[previous_position as usize] < 3 {
+ jumps[previous_position as usize] += 1;
+ } else {
+ jumps[previous_position as usize] -= 1;
+ }
+
+ steps_taken += 1;
+ }
+
+ println!("Escaped in {} jumps", steps_taken);
+}
diff --git a/2017/src/bin/day_6.rs b/2017/src/bin/day_6.rs
new file mode 100644
index 0000000..be9a515
--- /dev/null
+++ b/2017/src/bin/day_6.rs
@@ -0,0 +1,61 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let init_layout = parse_space_separated_ints(&args.input[0]).unwrap();
+
+ let mut layouts = vec!(init_layout);
+ let mut balances = 0;
+ let mut cycle_found = false;
+ let mut cycle_size = 0;
+
+ while !cycle_found {
+ balances += 1;
+ let new_layout = find_next_layout(&layouts);
+
+ if let Some(index) = layouts.iter().position(|x| *x == new_layout) {
+ cycle_found = true;
+ cycle_size = layouts.len() - index;
+ };
+
+ layouts.push(new_layout);
+ }
+
+ if args.part == 1 {
+ println!("Did {} rebalances", balances);
+ } else {
+ println!("Cycle was {} long", cycle_size);
+ }
+}
+
+fn find_next_layout(layouts: &Vec<Vec<i32>>) -> Vec<i32> {
+ let previous_layout = layouts.last().unwrap();
+ rebalance(&previous_layout)
+}
+
+fn rebalance(layout: &Vec<i32>) -> Vec<i32> {
+ let biggest_container = layout.iter()
+ .enumerate()
+ .max_by(|&(ai, &asize), &(bi, &bsize)| {
+ asize.cmp(&bsize).then(bi.cmp(&ai))
+ })
+ .map(|(i, _)| i)
+ .unwrap();
+
+
+ let mut new_layout = layout.clone();
+ let mut to_redistribute = new_layout[biggest_container];
+ new_layout[biggest_container] = 0;
+ let mut target = (biggest_container + 1) % layout.len();
+
+ while to_redistribute > 0 {
+ new_layout[target] += 1;
+ to_redistribute -= 1;
+ target = (target + 1) % layout.len();
+ }
+
+ new_layout
+}
+
diff --git a/2017/src/bin/day_7.rs b/2017/src/bin/day_7.rs
new file mode 100644
index 0000000..3c3b185
--- /dev/null
+++ b/2017/src/bin/day_7.rs
@@ -0,0 +1,62 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+extern crate regex;
+use regex::Regex;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let names_re = Regex::new(r"[a-z]+").unwrap();
+ let weight_re = Regex::new(r"\d+").unwrap();
+
+ let tree: Vec<(String, Vec<String>, i32)> = args.input.iter()
+ .map(|line| {
+ let mut matches = names_re.find_iter(line);
+ let base = matches.next().unwrap().as_str().to_string();
+ let leaves = matches.map(|m| m.as_str().to_string()).collect();
+ let weight = weight_re.find(line).unwrap().as_str().parse().unwrap();
+ (base, leaves, weight)
+ }).collect();
+
+ let mut possible_roots: Vec<String> = tree.iter().map(|&(ref id, _, _)| id.clone()).collect();
+ for &(_, ref leaves, _) in &tree {
+ for leaf in leaves {
+ let index = possible_roots.iter().position(|x| x == leaf).unwrap();
+ possible_roots.remove(index);
+ }
+ }
+ let root = &possible_roots[0];
+
+ if args.part == 1 {
+ println!("{:?}", root);
+ } else {
+ find_unweighted_plate(&root, &tree);
+ }
+}
+
+fn find_unweighted_plate(root: &String, tree: &Vec<(String, Vec<String>, i32)>) -> i32 {
+ let root_node = find_node(&root, &tree);
+ let &(_, ref leaves, ref weight) = root_node;
+ let leaf_weights: Vec<i32> = leaves.iter().map(|leaf| {
+ find_unweighted_plate(&leaf, &tree)
+ }).collect();
+
+ if let Some(base_leaf_weight) = leaf_weights.first() {
+ if let Some(different_leaf_weight) = leaf_weights.iter().find(|&w| w != base_leaf_weight) {
+ println!("Unbalanced plate is off by {}", (different_leaf_weight-base_leaf_weight).abs());
+ println!("Towers on plate: {:?} weigh {:?}", leaves, leaf_weights);
+ // This still needs some manual work to get to the puzzle
+ // output. Take the first unbalanced plate, figure out
+ // which is the unbalanced tower visually, find its
+ // individual weight in the file, and add/subtract as
+ // necessary.
+ }
+ }
+
+ leaf_weights.iter().sum::<i32>() + weight
+}
+
+fn find_node<'a>(name: &String, tree: &'a Vec<(String, Vec<String>, i32)>) -> &'a (String, Vec<String>, i32) {
+ tree.iter().find(|&&(ref id, _, _)| id == name).unwrap()
+}
diff --git a/2017/src/bin/day_8.rs b/2017/src/bin/day_8.rs
new file mode 100644
index 0000000..0359747
--- /dev/null
+++ b/2017/src/bin/day_8.rs
@@ -0,0 +1,99 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+extern crate regex;
+use regex::Regex;
+
+#[macro_use]
+extern crate lazy_static;
+
+use std::str::FromStr;
+use std::collections::HashMap;
+use std::cmp;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let instructions: Vec<Instruction> = args.input.iter()
+ .map(|line| line.parse().unwrap())
+ .collect();
+
+ let mut memory: HashMap<String, i32> = HashMap::new();
+ let mut max_mem_ever = 0;
+
+ for instruction in instructions {
+ if instruction.is_true(&memory) {
+ instruction.execute(&mut memory);
+ max_mem_ever = cmp::max(max_mem_ever, memory.values().max().cloned().unwrap_or(0));
+ }
+ }
+
+ let max_mem = memory.values().max().cloned().unwrap_or(0);
+
+ if args.part == 1 {
+ println!("Highest value in memory is {}", max_mem);
+ } else {
+ println!("Highest value in memory ever is {}", max_mem_ever);
+ }
+}
+
+
+struct Instruction {
+ target_register: String,
+ action: String,
+ value: i32,
+ condition_register: String,
+ condition: String,
+ condition_value: i32
+}
+
+#[derive(Debug)]
+struct InstructionParseError {
+ reason: String
+}
+
+impl FromStr for Instruction {
+ type Err = InstructionParseError;
+ fn from_str(s: &str) -> Result<Self, InstructionParseError> {
+ lazy_static!{
+ static ref INSTRUCTION_RE: Regex = Regex::new(r"^(\w+) (inc|dec) (-?\d+) if (\w+) (<|>|<=|>=|==|!=) (-?\d+)").unwrap();
+ }
+ match INSTRUCTION_RE.captures(s) {
+ Some(caps) => Ok(Instruction{
+ target_register: caps[1].to_string(),
+ action: caps[2].to_string(),
+ value: caps[3].parse().unwrap(),
+ condition_register: caps[4].to_string(),
+ condition: caps[5].to_string(),
+ condition_value: caps[6].parse().unwrap()
+ }),
+ None => Err(InstructionParseError {
+ reason: format!("{} did not match regex", s)
+ })
+ }
+ }
+}
+
+impl Instruction {
+ fn is_true(&self, memory: &HashMap<String, i32>) -> bool {
+ let mem = memory.get(&self.condition_register).cloned().unwrap_or(0);
+ match self.condition.as_ref() {
+ "<" => mem < self.condition_value,
+ ">" => mem > self.condition_value,
+ "<=" => mem <= self.condition_value,
+ ">=" => mem >= self.condition_value,
+ "==" => mem == self.condition_value,
+ "!=" => mem != self.condition_value,
+ _ => panic!("Unknown condition: {}", self.condition)
+ }
+ }
+
+ fn execute(&self, memory: &mut HashMap<String, i32>) {
+ let modifier = if self.action == "inc" {
+ self.value
+ } else {
+ -self.value
+ };
+ *memory.entry(self.target_register.clone()).or_insert(0) += modifier;
+ }
+}
diff --git a/2017/src/bin/day_9.rs b/2017/src/bin/day_9.rs
new file mode 100644
index 0000000..e0ca0c0
--- /dev/null
+++ b/2017/src/bin/day_9.rs
@@ -0,0 +1,42 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let mut cancelled = false;
+ let mut in_garbage = false;
+
+ let mut depth = 0;
+ let mut total_score = 0;
+ let mut total_garbage = 0;
+
+ for c in args.input[0].chars() {
+ if cancelled {
+ cancelled = false;
+ } else if c == '!' {
+ cancelled = true;
+ } else if in_garbage {
+ if c == '>' {
+ in_garbage = false;
+ } else {
+ total_garbage += 1;
+ }
+ } else {
+ if c == '<' {
+ in_garbage = true;
+ } else if c == '{' {
+ depth += 1;
+ total_score += depth;
+ } else if c == '}' {
+ depth -= 1;
+ }
+ }
+ }
+
+ if args.part == 1 {
+ println!("Total score is {}", total_score);
+ } else {
+ println!("Total garbage is {}", total_garbage);
+ }
+}
diff --git a/2017/src/lib.rs b/2017/src/lib.rs
new file mode 100644
index 0000000..53d7d20
--- /dev/null
+++ b/2017/src/lib.rs
@@ -0,0 +1,225 @@
+extern crate structopt;
+#[macro_use]
+extern crate structopt_derive;
+use structopt::StructOpt;
+
+use std::path::PathBuf;
+use std::io::BufReader;
+use std::io::prelude::*;
+use std::fs::File;
+use std::process;
+
+#[derive(StructOpt, Debug)]
+#[structopt(name = "AOC2017", about = "An Advent of Code CLI arguments object.")]
+struct AdventCli {
+ #[structopt(help = "Which part of the puzzle you are solving")]
+ part: u32,
+
+ #[structopt(help = "Input file", parse(from_os_str))]
+ input: PathBuf
+}
+
+pub struct AdventArgs {
+ pub part: u32,
+ pub input: Vec<String>
+}
+
+impl AdventArgs {
+ pub fn init() -> AdventArgs {
+ let opt = AdventCli::from_args();
+ let input = match AdventArgs::read_file(&opt.input) {
+ Ok(input) => input,
+ Err(error) => {
+ // Typically I would think of exiting the program like
+ // this to be bad form, but in this case I'm matching the
+ // interface of StructOpt: if the input parameters were
+ // invalid, just quit now with a nice message.
+ eprintln!("Error reading file: {}", error);
+ process::exit(1);
+ }
+ };
+ AdventArgs {
+ part: opt.part,
+ input: input
+ }
+ }
+
+ fn read_file(file: &PathBuf) -> Result<Vec<String>, std::io::Error> {
+ let file = File::open(file)?;
+ let file_reader = BufReader::new(file);
+ file_reader.lines()
+ .collect::<Result<Vec<_>, _>>()
+ .map(AdventArgs::preprocess_file_lines)
+ }
+
+ fn preprocess_file_lines(lines: Vec<String>) -> Vec<String> {
+ lines.iter()
+ .filter(|line| line.len() > 0)
+ .map(|line| line.trim_right().to_string())
+ .collect()
+ }
+
+ pub fn one_number_input(&self) -> Result<i32, std::num::ParseIntError> {
+ self.input[0].parse()
+ }
+ pub fn number_per_line_input(&self) -> Result<Vec<i32>, std::num::ParseIntError> {
+ self.input.iter().map(|line| line.parse()).collect()
+ }
+}
+
+pub fn parse_space_separated_ints(line: &String) -> Result<Vec<i32>, std::num::ParseIntError> {
+ line.split_whitespace()
+ .map(|x| x.parse::<i32>())
+ .collect()
+}
+
+
+#[derive(Hash, Eq, PartialEq, Debug, Clone, Copy)]
+pub struct Point {
+ pub x: i32,
+ pub y: i32
+}
+
+impl Point {
+ pub fn up(&self) -> Point {
+ Point {
+ y: self.y-1,
+ ..*self
+ }
+ }
+
+ pub fn down(&self) -> Point {
+ Point {
+ y: self.y+1,
+ ..*self
+ }
+ }
+
+ pub fn left(&self) -> Point {
+ Point {
+ x: self.x-1,
+ ..*self
+ }
+ }
+
+ pub fn right(&self) -> Point {
+ Point {
+ x: self.x+1,
+ ..*self
+ }
+ }
+
+ pub fn shift(&self, dir: &Direction) -> Point {
+ use Direction::*;
+
+ match *dir {
+ Right => self.right(),
+ Left => self.left(),
+ Up => self.up(),
+ Down => self.down()
+ }
+ }
+}
+
+#[derive(Debug)]
+pub enum Direction {
+ Left,
+ Up,
+ Down,
+ Right
+}
+
+impl Direction {
+ pub fn rotate_left(&self) -> Direction {
+ use Direction::*;
+ match *self {
+ Right => Up,
+ Up => Left,
+ Left => Down,
+ Down => Right
+ }
+ }
+
+ pub fn rotate_right(&self) -> Direction {
+ use Direction::*;
+ match *self {
+ Right => Down,
+ Up => Right,
+ Left => Up,
+ Down => Left
+ }
+ }
+}
+
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+pub struct Point3d {
+ pub x: i32,
+ pub y: i32,
+ pub z: i32
+}
+
+impl std::ops::Add for Point3d {
+ type Output = Point3d;
+
+ fn add(self, other: Point3d) -> Point3d {
+ Point3d {
+ x: self.x + other.x,
+ y: self.y + other.y,
+ z: self.z + other.z
+ }
+ }
+
+}
+
+impl Point3d {
+ pub fn manhattan_distance(&self) -> i32 {
+ self.x.abs() + self.y.abs() + self.z.abs()
+ }
+}
+
+pub fn knot_hash(input: &String) -> String {
+ let suffix: [usize; 5] = [17, 31, 73, 47, 23];
+ let lengths: Vec<usize> = input.as_bytes()
+ .iter().map(|&x| x as usize)
+ .chain(suffix.iter().cloned())
+ .collect();
+
+ let mut position = 0;
+ let mut list: Vec<u32> = (0..256).collect();
+
+ for i in 0..64 {
+ let skip = lengths.len() * i;
+ knot_hash_round(&mut list, &lengths, &mut position, skip);
+ }
+
+ let mut current_char = 0;
+ let mut result = String::new();
+ for (i, l) in list.iter().enumerate() {
+ current_char = current_char ^ l;
+ if i % 16 == 15 {
+ result.push_str(&format!("{:02x}", current_char));
+ current_char = 0;
+ }
+ }
+ result
+}
+
+fn knot_hash_round(list: &mut Vec<u32>, lengths: &Vec<usize>, position: &mut usize, skip: usize) {
+ for (inner_skip, &length) in lengths.iter().enumerate() {
+ knot_hash_reverse_segment(list, *position, length);
+ *position = (*position + length + skip + inner_skip) % list.len();
+ }
+}
+
+fn knot_hash_reverse_segment(list: &mut Vec<u32>, position: usize, length: usize) {
+ let mut a = position;
+ let mut b = position + length - 1;
+ let len = list.len();
+ while a < b {
+ list.swap(a%len, b%len);
+
+ a += 1;
+ b -= 1;
+ }
+}
+