From cfd9b4f2ad1a09bedf7f764f84448a61faab54a3 Mon Sep 17 00:00:00 2001 From: Justin Wernick Date: Tue, 19 Apr 2022 20:26:02 +0200 Subject: Refile for merging repos --- 2018/Cargo.toml | 11 + 2018/inputs/1.txt | 968 +++++++++++++++ 2018/inputs/10.txt | 369 ++++++ 2018/inputs/12.txt | 34 + 2018/inputs/13.txt | 150 +++ 2018/inputs/15.txt | 32 + 2018/inputs/16_1.txt | 3143 ++++++++++++++++++++++++++++++++++++++++++++++++ 2018/inputs/16_2.txt | 1014 ++++++++++++++++ 2018/inputs/17.txt | 1713 ++++++++++++++++++++++++++ 2018/inputs/18.txt | 50 + 2018/inputs/19.txt | 37 + 2018/inputs/2.txt | 250 ++++ 2018/inputs/20.txt | 1 + 2018/inputs/21.txt | 32 + 2018/inputs/22.txt | 2 + 2018/inputs/23.txt | 1000 +++++++++++++++ 2018/inputs/24.txt | 23 + 2018/inputs/25.txt | 1248 +++++++++++++++++++ 2018/inputs/3.txt | 1385 +++++++++++++++++++++ 2018/inputs/4.txt | 1088 +++++++++++++++++ 2018/inputs/5.txt | 1 + 2018/inputs/6.txt | 50 + 2018/inputs/7.txt | 101 ++ 2018/inputs/8.txt | 1 + 2018/inputs/9.txt | 1 + 2018/license.org | 21 + 2018/readme.org | 38 + 2018/src/bin/day_1.rs | 32 + 2018/src/bin/day_10.rs | 82 ++ 2018/src/bin/day_11.rs | 66 + 2018/src/bin/day_12.rs | 102 ++ 2018/src/bin/day_13.rs | 249 ++++ 2018/src/bin/day_14.rs | 111 ++ 2018/src/bin/day_15.rs | 272 +++++ 2018/src/bin/day_16.rs | 205 ++++ 2018/src/bin/day_17.rs | 175 +++ 2018/src/bin/day_18.rs | 123 ++ 2018/src/bin/day_19.rs | 139 +++ 2018/src/bin/day_2.rs | 53 + 2018/src/bin/day_20.rs | 137 +++ 2018/src/bin/day_21.rs | 137 +++ 2018/src/bin/day_22.rs | 165 +++ 2018/src/bin/day_23.rs | 114 ++ 2018/src/bin/day_24.rs | 217 ++++ 2018/src/bin/day_25.rs | 47 + 2018/src/bin/day_3.rs | 76 ++ 2018/src/bin/day_4.rs | 116 ++ 2018/src/bin/day_5.rs | 53 + 2018/src/bin/day_6.rs | 103 ++ 2018/src/bin/day_7.rs | 135 +++ 2018/src/bin/day_8.rs | 66 + 2018/src/bin/day_9.rs | 91 ++ 2018/src/lib.rs | 31 + Cargo.toml | 11 - inputs/1.txt | 968 --------------- inputs/10.txt | 369 ------ inputs/12.txt | 34 - inputs/13.txt | 150 --- inputs/15.txt | 32 - inputs/16_1.txt | 3143 ------------------------------------------------ inputs/16_2.txt | 1014 ---------------- inputs/17.txt | 1713 -------------------------- inputs/18.txt | 50 - inputs/19.txt | 37 - inputs/2.txt | 250 ---- inputs/20.txt | 1 - inputs/21.txt | 32 - inputs/22.txt | 2 - inputs/23.txt | 1000 --------------- inputs/24.txt | 23 - inputs/25.txt | 1248 ------------------- inputs/3.txt | 1385 --------------------- inputs/4.txt | 1088 ----------------- inputs/5.txt | 1 - inputs/6.txt | 50 - inputs/7.txt | 101 -- inputs/8.txt | 1 - inputs/9.txt | 1 - license.org | 21 - readme.org | 38 - src/bin/day_1.rs | 32 - src/bin/day_10.rs | 82 -- src/bin/day_11.rs | 66 - src/bin/day_12.rs | 102 -- src/bin/day_13.rs | 249 ---- src/bin/day_14.rs | 111 -- src/bin/day_15.rs | 272 ----- src/bin/day_16.rs | 205 ---- src/bin/day_17.rs | 175 --- src/bin/day_18.rs | 123 -- src/bin/day_19.rs | 139 --- src/bin/day_2.rs | 53 - src/bin/day_20.rs | 137 --- src/bin/day_21.rs | 137 --- src/bin/day_22.rs | 165 --- src/bin/day_23.rs | 114 -- src/bin/day_24.rs | 217 ---- src/bin/day_25.rs | 47 - src/bin/day_3.rs | 76 -- src/bin/day_4.rs | 116 -- src/bin/day_5.rs | 53 - src/bin/day_6.rs | 103 -- src/bin/day_7.rs | 135 --- src/bin/day_8.rs | 66 - src/bin/day_9.rs | 91 -- src/lib.rs | 31 - 106 files changed, 15860 insertions(+), 15860 deletions(-) create mode 100644 2018/Cargo.toml create mode 100644 2018/inputs/1.txt create mode 100644 2018/inputs/10.txt create mode 100644 2018/inputs/12.txt create mode 100644 2018/inputs/13.txt create mode 100644 2018/inputs/15.txt create mode 100644 2018/inputs/16_1.txt create mode 100644 2018/inputs/16_2.txt create mode 100644 2018/inputs/17.txt create mode 100644 2018/inputs/18.txt create mode 100644 2018/inputs/19.txt create mode 100644 2018/inputs/2.txt create mode 100644 2018/inputs/20.txt create mode 100644 2018/inputs/21.txt create mode 100644 2018/inputs/22.txt create mode 100644 2018/inputs/23.txt create mode 100644 2018/inputs/24.txt create mode 100644 2018/inputs/25.txt create mode 100644 2018/inputs/3.txt create mode 100644 2018/inputs/4.txt create mode 100644 2018/inputs/5.txt create mode 100644 2018/inputs/6.txt create mode 100644 2018/inputs/7.txt create mode 100644 2018/inputs/8.txt create mode 100644 2018/inputs/9.txt create mode 100644 2018/license.org create mode 100644 2018/readme.org create mode 100644 2018/src/bin/day_1.rs create mode 100644 2018/src/bin/day_10.rs create mode 100644 2018/src/bin/day_11.rs create mode 100644 2018/src/bin/day_12.rs create mode 100644 2018/src/bin/day_13.rs create mode 100644 2018/src/bin/day_14.rs create mode 100644 2018/src/bin/day_15.rs create mode 100644 2018/src/bin/day_16.rs create mode 100644 2018/src/bin/day_17.rs create mode 100644 2018/src/bin/day_18.rs create mode 100644 2018/src/bin/day_19.rs create mode 100644 2018/src/bin/day_2.rs create mode 100644 2018/src/bin/day_20.rs create mode 100644 2018/src/bin/day_21.rs create mode 100644 2018/src/bin/day_22.rs create mode 100644 2018/src/bin/day_23.rs create mode 100644 2018/src/bin/day_24.rs create mode 100644 2018/src/bin/day_25.rs create mode 100644 2018/src/bin/day_3.rs create mode 100644 2018/src/bin/day_4.rs create mode 100644 2018/src/bin/day_5.rs create mode 100644 2018/src/bin/day_6.rs create mode 100644 2018/src/bin/day_7.rs create mode 100644 2018/src/bin/day_8.rs create mode 100644 2018/src/bin/day_9.rs create mode 100644 2018/src/lib.rs delete mode 100644 Cargo.toml delete mode 100644 inputs/1.txt delete mode 100644 inputs/10.txt delete mode 100644 inputs/12.txt delete mode 100644 inputs/13.txt delete mode 100644 inputs/15.txt delete mode 100644 inputs/16_1.txt delete mode 100644 inputs/16_2.txt delete mode 100644 inputs/17.txt delete mode 100644 inputs/18.txt delete mode 100644 inputs/19.txt delete mode 100644 inputs/2.txt delete mode 100644 inputs/20.txt delete mode 100644 inputs/21.txt delete mode 100644 inputs/22.txt delete mode 100644 inputs/23.txt delete mode 100644 inputs/24.txt delete mode 100644 inputs/25.txt delete mode 100644 inputs/3.txt delete mode 100644 inputs/4.txt delete mode 100644 inputs/5.txt delete mode 100644 inputs/6.txt delete mode 100644 inputs/7.txt delete mode 100644 inputs/8.txt delete mode 100644 inputs/9.txt delete mode 100644 license.org delete mode 100644 readme.org delete mode 100644 src/bin/day_1.rs delete mode 100644 src/bin/day_10.rs delete mode 100644 src/bin/day_11.rs delete mode 100644 src/bin/day_12.rs delete mode 100644 src/bin/day_13.rs delete mode 100644 src/bin/day_14.rs delete mode 100644 src/bin/day_15.rs delete mode 100644 src/bin/day_16.rs delete mode 100644 src/bin/day_17.rs delete mode 100644 src/bin/day_18.rs delete mode 100644 src/bin/day_19.rs delete mode 100644 src/bin/day_2.rs delete mode 100644 src/bin/day_20.rs delete mode 100644 src/bin/day_21.rs delete mode 100644 src/bin/day_22.rs delete mode 100644 src/bin/day_23.rs delete mode 100644 src/bin/day_24.rs delete mode 100644 src/bin/day_25.rs delete mode 100644 src/bin/day_3.rs delete mode 100644 src/bin/day_4.rs delete mode 100644 src/bin/day_5.rs delete mode 100644 src/bin/day_6.rs delete mode 100644 src/bin/day_7.rs delete mode 100644 src/bin/day_8.rs delete mode 100644 src/bin/day_9.rs delete mode 100644 src/lib.rs diff --git a/2018/Cargo.toml b/2018/Cargo.toml new file mode 100644 index 0000000..b1342d1 --- /dev/null +++ b/2018/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "advent_of_code_2018" +version = "0.1.0" +authors = ["Justin Worthe "] + +[dependencies] +im-rc = "12.2.0" +arrayvec = "0.4.9" + +[profile.release] +debug = true diff --git a/2018/inputs/1.txt b/2018/inputs/1.txt new file mode 100644 index 0000000..079567f --- /dev/null +++ b/2018/inputs/1.txt @@ -0,0 +1,968 @@ ++11 ++9 ++15 +-17 ++8 ++16 ++5 ++13 ++8 +-6 ++12 +-17 +-16 ++13 ++16 +-15 +-5 ++11 ++19 ++5 +-8 ++20 ++18 ++15 +-4 +-12 ++8 ++2 ++15 ++12 +-13 +-4 +-1 +-14 +-15 +-6 +-9 +-13 ++18 ++13 ++6 +-8 +-3 +-19 ++8 ++17 ++8 ++5 +-11 ++15 +-7 ++9 +-18 +-9 ++17 +-14 +-19 ++4 +-6 ++4 ++1 +-12 ++4 +-1 +-9 ++4 ++19 ++20 ++11 ++8 ++19 +-13 ++17 ++6 ++8 +-11 ++5 ++9 +-15 ++17 +-12 ++6 +-19 +-2 ++17 +-18 ++7 +-5 ++19 ++15 ++5 +-6 ++2 ++5 ++18 ++11 ++2 ++5 +-14 ++17 ++17 ++1 ++17 +-9 +-1 ++5 +-11 ++5 +-17 ++2 ++14 ++16 +-3 ++17 ++18 ++1 +-16 ++19 +-11 +-10 ++3 ++8 ++17 ++19 +-18 ++6 +-1 +-2 ++14 +-2 ++12 ++11 ++1 +-19 +-1 ++18 ++13 +-6 +-10 +-13 ++12 +-11 ++19 ++14 ++17 +-2 +-18 +-4 ++11 +-12 +-2 +-21 ++7 +-1 +-5 +-13 +-18 +-18 +-7 ++9 ++12 ++6 +-12 ++20 +-19 ++6 +-19 ++3 +-16 ++20 +-17 +-8 ++4 ++8 +-21 ++18 +-6 +-13 ++2 ++5 +-14 +-16 +-19 +-17 ++4 +-15 +-11 +-3 ++6 ++13 ++18 +-16 +-16 +-15 +-15 +-2 ++1 +-3 ++13 ++25 ++1 ++14 +-8 +-8 +-19 ++7 ++11 ++20 ++5 +-9 ++8 ++19 +-9 ++3 ++1 ++1 +-12 ++18 ++15 +-5 ++11 +-1 ++18 +-2 +-18 +-14 +-1 +-16 ++12 ++12 +-20 ++10 ++25 +-13 +-17 +-20 +-13 ++11 +-40 +-19 ++5 +-21 +-9 +-15 +-6 ++3 ++13 +-5 +-2 ++33 ++3 +-7 ++42 ++32 +-13 ++2 ++37 +-1 +-20 ++30 ++3 ++8 ++10 ++11 +-5 +-26 ++35 ++16 +-12 ++9 ++16 ++18 +-13 +-15 ++19 ++6 ++18 ++16 ++11 ++16 +-2 +-10 ++1 +-2 ++17 ++7 +-1 ++17 ++6 ++15 ++7 +-5 +-6 ++9 +-4 +-17 +-14 +-1 +-21 +-2 ++15 ++3 ++8 +-18 +-17 +-14 ++6 +-17 ++20 ++13 ++14 +-1 +-1 ++3 +-11 ++19 ++19 ++7 +-18 +-9 ++11 +-12 ++11 ++4 ++2 ++8 +-2 ++6 +-20 ++5 ++6 +-13 +-8 ++6 ++11 ++8 ++2 ++7 ++11 +-7 ++18 ++11 ++15 +-16 +-18 ++6 ++10 ++6 ++15 ++13 ++4 ++4 ++14 ++14 +-47 ++17 +-7 +-20 +-1 ++19 ++16 +-23 +-13 +-17 ++13 +-8 ++6 +-20 ++4 ++15 ++4 ++19 ++19 +-7 +-24 +-17 +-19 +-2 ++19 +-13 ++8 +-4 +-19 +-9 ++29 ++21 +-29 ++2 ++15 ++22 ++1 ++21 +-13 +-14 ++12 +-57 +-5 +-49 +-10 +-19 +-19 +-6 ++7 ++21 +-12 +-13 +-13 ++4 +-15 ++9 ++21 +-7 ++19 ++32 ++31 +-27 +-21 ++25 +-101 ++69 +-75 ++26 +-22 +-45 +-30 ++5 +-40 +-15 +-880 +-60727 ++14 +-13 +-18 ++7 ++2 +-5 ++6 ++14 ++5 ++5 +-18 +-15 +-9 ++7 +-10 ++19 ++4 ++7 ++6 ++3 ++21 ++2 ++5 +-19 ++15 +-11 +-19 +-7 +-1 +-16 ++4 +-12 +-15 ++3 ++5 +-6 +-14 ++11 +-16 +-7 +-15 ++8 ++12 +-2 +-9 +-12 +-17 ++19 +-5 +-19 ++16 +-10 +-13 +-14 +-1 +-10 +-18 +-6 +-11 ++8 +-11 ++4 ++14 ++9 ++8 +-18 +-9 ++8 +-19 +-5 +-14 ++13 ++19 ++13 ++16 ++19 +-4 +-4 ++3 ++19 +-4 +-7 +-15 ++6 +-9 +-15 ++12 +-14 ++6 +-17 ++9 ++13 +-4 +-20 ++17 +-9 +-12 ++16 ++6 +-9 ++19 ++10 ++11 ++17 +-19 +-1 ++12 ++12 ++1 +-6 +-1 ++4 +-12 ++11 +-14 ++19 +-3 +-9 +-6 +-23 +-2 +-13 ++18 +-2 ++10 ++2 ++8 +-9 +-20 +-17 +-21 +-14 ++11 +-5 +-15 ++2 +-9 ++4 +-7 +-12 ++9 +-1 +-11 ++1 +-10 ++11 +-17 +-10 +-17 +-3 +-10 ++11 ++15 +-19 +-14 ++1 ++2 ++18 ++17 ++3 ++17 +-18 +-15 ++2 +-3 +-14 ++9 ++9 ++6 +-18 ++13 +-21 +-18 ++12 ++7 ++13 +-11 ++20 ++12 ++1 ++15 +-14 ++4 ++11 ++18 +-2 +-7 +-12 +-11 ++5 ++10 ++6 ++8 ++18 ++6 +-13 ++19 +-5 +-3 ++14 +-3 +-20 +-3 +-3 ++16 +-15 +-12 ++8 +-24 +-16 +-13 +-3 ++13 ++6 +-12 +-31 ++7 +-18 ++17 +-13 ++1 +-15 ++16 ++4 +-1 +-17 +-1 ++16 +-4 ++13 ++8 ++3 ++33 ++8 +-6 ++20 +-4 ++2 ++13 +-29 +-17 +-22 +-24 +-5 ++2 +-12 +-1 ++2 +-15 ++2 +-11 ++6 ++1 +-2 ++5 ++4 +-22 ++5 ++19 +-13 +-7 ++16 ++6 ++2 +-22 ++19 ++9 ++8 +-9 +-12 +-18 +-13 ++1 ++5 +-9 ++10 +-11 +-10 ++16 +-15 +-2 +-16 ++1 +-15 +-17 +-3 ++6 ++11 ++4 ++11 +-16 +-3 ++6 +-1 ++13 ++18 ++6 +-2 +-6 +-4 +-5 ++20 ++19 +-8 ++1 +-13 ++16 ++1 ++10 +-25 +-19 +-4 ++9 +-8 ++17 ++6 +-19 +-2 ++5 ++12 ++7 +-21 +-12 ++3 +-7 +-11 +-3 +-18 ++2 ++12 ++20 +-23 +-19 +-17 ++9 +-19 ++1 +-14 +-5 +-4 +-9 ++17 ++4 ++3 ++15 +-13 ++1 +-12 +-17 ++8 ++8 +-20 +-17 ++15 +-16 ++10 ++7 ++2 +-10 +-2 ++8 ++19 +-6 +-17 +-8 ++9 ++17 ++25 +-5 +-18 ++4 ++18 ++9 ++18 +-14 +-2 ++11 ++14 +-17 +-15 ++38 ++12 +-2 ++14 ++4 ++21 ++16 ++12 ++15 ++23 +-1 ++6 ++9 +-24 +-6 +-13 +-3 ++33 +-13 ++62 ++81 ++11 +-5 +-27 ++9 +-7 ++20 +-19 +-4 ++27 ++28 +-29 ++82 ++11 +-10 ++8 +-22 ++42 ++34 +-24 +-15 ++19 +-66 +-70 +-34 +-18 +-548 ++408 +-1249 +-60542 ++6 +-17 +-4 ++6 +-7 ++3 ++14 ++2 ++15 +-6 +-5 ++19 +-17 +-10 ++6 +-11 ++2 +-4 ++10 +-5 +-11 +-13 +-12 +-14 +-10 +-9 ++17 ++9 ++15 ++1 +-10 +-10 ++14 ++16 +-17 +-15 ++7 +-6 +-16 +-10 ++15 +-2 +-7 +-3 +-5 +-14 +-8 +-9 ++16 ++7 ++17 +-22 ++12 +-16 ++18 ++5 ++15 ++10 ++20 ++11 +-5 ++12 +-16 ++8 +-16 ++13 ++14 +-5 +-12 +-9 +-16 +-5 ++16 +-18 ++21 +-9 +-13 +-8 +-10 ++14 ++18 +-17 +-16 ++8 +-15 ++2 +-4 ++3 +-21 ++17 +-16 ++18 ++18 +-3 +-21 ++1 +-19 +-3 +-2 +-4 +-5 +-20 +-19 ++6 +-19 ++3 +-12 ++124236 diff --git a/2018/inputs/10.txt b/2018/inputs/10.txt new file mode 100644 index 0000000..3c77538 --- /dev/null +++ b/2018/inputs/10.txt @@ -0,0 +1,369 @@ +position=<-30052, -9918> velocity=< 3, 1> +position=< 20349, -50260> velocity=<-2, 5> +position=< 40505, -40169> velocity=<-4, 4> +position=< 30444, 50599> velocity=<-3, -5> +position=< 40549, -50259> velocity=<-4, 5> +position=< 30454, -30087> velocity=<-3, 3> +position=< 50623, 20347> velocity=<-5, -2> +position=< 30439, -50262> velocity=<-3, 5> +position=< 50623, 40516> velocity=<-5, -4> +position=<-40143, -30090> velocity=< 4, 3> +position=< 50594, 50602> velocity=<-5, -5> +position=< -9884, -30087> velocity=< 1, 3> +position=<-19958, -40168> velocity=< 2, 4> +position=< 20357, 40513> velocity=<-2, -4> +position=<-50240, 30431> velocity=< 5, -3> +position=< 20351, 40516> velocity=<-2, -4> +position=<-50257, -20005> velocity=< 5, 2> +position=<-30073, 10253> velocity=< 3, -1> +position=<-50265, 50597> velocity=< 5, -5> +position=<-40154, 50601> velocity=< 4, -5> +position=<-19987, -40168> velocity=< 2, 4> +position=<-19987, -30087> velocity=< 2, 3> +position=<-50257, 30425> velocity=< 5, -3> +position=< 40558, 30425> velocity=<-4, -3> +position=<-19990, 10256> velocity=< 2, -1> +position=<-19979, 30425> velocity=< 2, -3> +position=<-19976, -50254> velocity=< 2, 5> +position=< 30446, -40172> velocity=<-3, 4> +position=<-40157, 40515> velocity=< 4, -4> +position=<-40143, 20342> velocity=< 4, -2> +position=< 30467, -50255> velocity=<-3, 5> +position=<-30040, 50606> velocity=< 3, -5> +position=<-30037, 50605> velocity=< 3, -5> +position=< 20382, -30086> velocity=<-2, 3> +position=< 50594, 10262> velocity=<-5, -1> +position=< 20342, 40515> velocity=<-2, -4> +position=<-19963, -50258> velocity=< 2, 5> +position=<-40135, 50599> velocity=< 4, -5> +position=< 40558, 10262> velocity=<-4, -1> +position=< 20366, -40177> velocity=<-2, 4> +position=< -9888, -9919> velocity=< 1, 1> +position=<-19998, 40511> velocity=< 2, -4> +position=< 50608, 40516> velocity=<-5, -4> +position=< 10263, 40520> velocity=<-1, -4> +position=< 40521, -40171> velocity=<-4, 4> +position=< 30427, -20005> velocity=<-3, 2> +position=< 20333, -9916> velocity=<-2, 1> +position=< -9909, -9913> velocity=< 1, 1> +position=< 50628, 40511> velocity=<-5, -4> +position=< 50610, 30430> velocity=<-5, -3> +position=<-50248, 30433> velocity=< 5, -3> +position=< 50612, 50599> velocity=<-5, -5> +position=<-50253, -40170> velocity=< 5, 4> +position=< -9880, 40513> velocity=< 1, -4> +position=< 20362, 10256> velocity=<-2, -1> +position=< -9877, -30087> velocity=< 1, 3> +position=<-40182, -30082> velocity=< 4, 3> +position=<-50240, -20003> velocity=< 5, 2> +position=<-40138, 10255> velocity=< 4, -1> +position=<-50221, 20348> velocity=< 5, -2> +position=< -9896, -9917> velocity=< 1, 1> +position=<-50209, 40516> velocity=< 5, -4> +position=< 20352, 50602> velocity=<-2, -5> +position=< 50607, -19998> velocity=<-5, 2> +position=<-19995, -30087> velocity=< 2, 3> +position=<-20003, 40517> velocity=< 2, -4> +position=<-50219, 30431> velocity=< 5, -3> +position=< 40521, -20001> velocity=<-4, 2> +position=<-30036, 20339> velocity=< 3, -2> +position=< 50624, 10257> velocity=<-5, -1> +position=<-50224, 40517> velocity=< 5, -4> +position=< -9907, 20344> velocity=< 1, -2> +position=< 40534, -40169> velocity=<-4, 4> +position=<-30065, -20003> velocity=< 3, 2> +position=< -9922, 20339> velocity=< 1, -2> +position=<-30052, 50602> velocity=< 3, -5> +position=< 10276, -50263> velocity=<-1, 5> +position=< 50594, 10258> velocity=<-5, -1> +position=< -9876, 10258> velocity=< 1, -1> +position=<-20001, -30091> velocity=< 2, 3> +position=<-50253, 50602> velocity=< 5, -5> +position=<-40159, -20002> velocity=< 4, 2> +position=<-50224, -30091> velocity=< 5, 3> +position=<-20001, 40511> velocity=< 2, -4> +position=< 20357, -40173> velocity=<-2, 4> +position=< 50615, 10255> velocity=<-5, -1> +position=< -9877, -50254> velocity=< 1, 5> +position=< 30440, 40516> velocity=<-3, -4> +position=< 30427, 50605> velocity=<-3, -5> +position=< 30419, -30090> velocity=<-3, 3> +position=< 20376, -20001> velocity=<-2, 2> +position=< 10255, 20344> velocity=<-1, -2> +position=< 30419, 20344> velocity=<-3, -2> +position=< 50595, -40169> velocity=<-5, 4> +position=<-30081, 40513> velocity=< 3, -4> +position=<-40143, -30090> velocity=< 4, 3> +position=< 40553, 20344> velocity=<-4, -2> +position=< 40529, -40170> velocity=<-4, 4> +position=< 30427, -50262> velocity=<-3, 5> +position=<-50240, -19996> velocity=< 5, 2> +position=<-50245, -30090> velocity=< 5, 3> +position=< 30448, -30087> velocity=<-3, 3> +position=< -9875, -40171> velocity=< 1, 4> +position=< -9900, 50599> velocity=< 1, -5> +position=<-19954, -40168> velocity=< 2, 4> +position=< 40526, 40518> velocity=<-4, -4> +position=<-20011, 30428> velocity=< 2, -3> +position=< 10283, 10257> velocity=<-1, -1> +position=<-40175, 40520> velocity=< 4, -4> +position=< 50636, -9915> velocity=<-5, 1> +position=< -9904, 10255> velocity=< 1, -1> +position=< 30435, 40520> velocity=<-3, -4> +position=< 30424, -50254> velocity=<-3, 5> +position=< 20393, 50602> velocity=<-2, -5> +position=<-50261, -30083> velocity=< 5, 3> +position=<-30065, 10254> velocity=< 3, -1> +position=<-30052, -40177> velocity=< 3, 4> +position=< 50625, -50263> velocity=<-5, 5> +position=<-40142, -20001> velocity=< 4, 2> +position=< 20338, -19996> velocity=<-2, 2> +position=< 50599, 50604> velocity=<-5, -5> +position=< 40534, -40176> velocity=<-4, 4> +position=<-50235, 20339> velocity=< 5, -2> +position=<-30068, -9918> velocity=< 3, 1> +position=<-40173, 20339> velocity=< 4, -2> +position=<-30054, -9915> velocity=< 3, 1> +position=< 10255, 20348> velocity=<-1, -2> +position=<-40162, 40520> velocity=< 4, -4> +position=<-40158, -9918> velocity=< 4, 1> +position=< 40508, 20348> velocity=<-4, -2> +position=< 10307, -40177> velocity=<-1, 4> +position=< 40545, -50261> velocity=<-4, 5> +position=<-30073, -40172> velocity=< 3, 4> +position=<-50209, -9918> velocity=< 5, 1> +position=< -9913, 40515> velocity=< 1, -4> +position=< -9873, -50262> velocity=< 1, 5> +position=< -9877, 10261> velocity=< 1, -1> +position=<-50245, -30084> velocity=< 5, 3> +position=< 30440, 50606> velocity=<-3, -5> +position=<-40167, 40514> velocity=< 4, -4> +position=<-30076, -50255> velocity=< 3, 5> +position=< -9891, -19996> velocity=< 1, 2> +position=< -9877, 20340> velocity=< 1, -2> +position=< 20365, -9911> velocity=<-2, 1> +position=<-50256, 10253> velocity=< 5, -1> +position=< -9909, -19996> velocity=< 1, 2> +position=< 30479, -9919> velocity=<-3, 1> +position=<-30065, 10257> velocity=< 3, -1> +position=< 50652, -9919> velocity=<-5, 1> +position=< 20338, -9914> velocity=<-2, 1> +position=<-30062, 20339> velocity=< 3, -2> +position=< 20360, 10259> velocity=<-2, -1> +position=< 40537, 50604> velocity=<-4, -5> +position=<-50221, 50603> velocity=< 5, -5> +position=< 40505, -30090> velocity=<-4, 3> +position=< -9890, 20339> velocity=< 1, -2> +position=<-30097, -50261> velocity=< 3, 5> +position=<-19995, -30086> velocity=< 2, 3> +position=< 20341, 10255> velocity=<-2, -1> +position=<-19977, -20005> velocity=< 2, 2> +position=<-30053, -50259> velocity=< 3, 5> +position=<-30065, -40173> velocity=< 3, 4> +position=< 50617, 50601> velocity=<-5, -5> +position=< 50631, -40171> velocity=<-5, 4> +position=< -9925, -9915> velocity=< 1, 1> +position=<-40150, 10262> velocity=< 4, -1> +position=< 40526, 40516> velocity=<-4, -4> +position=<-30055, -9915> velocity=< 3, 1> +position=<-50264, 30432> velocity=< 5, -3> +position=< 10287, -20003> velocity=<-1, 2> +position=< 40534, 20348> velocity=<-4, -2> +position=<-19960, -19998> velocity=< 2, 2> +position=< 30464, -40173> velocity=<-3, 4> +position=<-50220, -50259> velocity=< 5, 5> +position=< 40537, -9919> velocity=<-4, 1> +position=< 20357, 20346> velocity=<-2, -2> +position=< 40510, 50598> velocity=<-4, -5> +position=< 50607, -40172> velocity=<-5, 4> +position=< 40537, -19996> velocity=<-4, 2> +position=< 50636, 10261> velocity=<-5, -1> +position=< -9896, 30425> velocity=< 1, -3> +position=< -9917, 10255> velocity=< 1, -1> +position=<-50248, 50606> velocity=< 5, -5> +position=<-50237, -9919> velocity=< 5, 1> +position=<-30073, -20005> velocity=< 3, 2> +position=< 40529, 50606> velocity=<-4, -5> +position=< 50650, -30082> velocity=<-5, 3> +position=<-30093, 10258> velocity=< 3, -1> +position=< 30456, -40177> velocity=<-3, 4> +position=< 40521, -40170> velocity=<-4, 4> +position=< 30468, 10257> velocity=<-3, -1> +position=< 10276, -50261> velocity=<-1, 5> +position=< 30421, -9919> velocity=<-3, 1> +position=< -9877, 20346> velocity=< 1, -2> +position=< 10258, -40177> velocity=<-1, 4> +position=<-50264, 40516> velocity=< 5, -4> +position=< -9883, -40173> velocity=< 1, 4> +position=<-40127, -50256> velocity=< 4, 5> +position=< -9885, 20343> velocity=< 1, -2> +position=< 20382, -9914> velocity=<-2, 1> +position=<-30076, -19998> velocity=< 3, 2> +position=<-30073, 50601> velocity=< 3, -5> +position=< -9893, 20345> velocity=< 1, -2> +position=< -9904, 10258> velocity=< 1, -1> +position=< 20393, -40171> velocity=<-2, 4> +position=<-19984, 50603> velocity=< 2, -5> +position=< -9889, 20343> velocity=< 1, -2> +position=<-19982, 40512> velocity=< 2, -4> +position=<-20009, -40168> velocity=< 2, 4> +position=<-30069, -19997> velocity=< 3, 2> +position=<-19987, -30085> velocity=< 2, 3> +position=< 10252, 10259> velocity=<-1, -1> +position=< -9917, 30428> velocity=< 1, -3> +position=< 10287, 20342> velocity=<-1, -2> +position=<-50245, -20000> velocity=< 5, 2> +position=<-40165, -40177> velocity=< 4, 4> +position=<-40135, -50262> velocity=< 4, 5> +position=<-19984, -30085> velocity=< 2, 3> +position=< 30428, -30091> velocity=<-3, 3> +position=<-30089, 30431> velocity=< 3, -3> +position=< 30467, 20344> velocity=<-3, -2> +position=<-19987, 40520> velocity=< 2, -4> +position=<-30037, 40512> velocity=< 3, -4> +position=< 40557, -50255> velocity=<-4, 5> +position=< 40550, 10254> velocity=<-4, -1> +position=<-40159, 10258> velocity=< 4, -1> +position=< 40539, 20343> velocity=<-4, -2> +position=< 30440, 50605> velocity=<-3, -5> +position=< 30453, 30434> velocity=<-3, -3> +position=< 40550, -30088> velocity=<-4, 3> +position=<-40151, 10256> velocity=< 4, -1> +position=< 10276, 40514> velocity=<-1, -4> +position=< 10280, 20348> velocity=<-1, -2> +position=<-20009, -30091> velocity=< 2, 3> +position=< 30467, 50601> velocity=<-3, -5> +position=< 30439, -20000> velocity=<-3, 2> +position=< 10276, -20005> velocity=<-1, 2> +position=< 40562, -30082> velocity=<-4, 3> +position=<-19986, -20004> velocity=< 2, 2> +position=< 20333, 10259> velocity=<-2, -1> +position=<-50224, -9911> velocity=< 5, 1> +position=< -9872, -9919> velocity=< 1, 1> +position=< 10295, -30085> velocity=<-1, 3> +position=<-19990, 30429> velocity=< 2, -3> +position=< 10295, -30084> velocity=<-1, 3> +position=< 30429, 40515> velocity=<-3, -4> +position=< 20365, -30086> velocity=<-2, 3> +position=< 50618, 10258> velocity=<-5, -1> +position=<-20010, -9910> velocity=< 2, 1> +position=< 20373, -40169> velocity=<-2, 4> +position=< 10307, -50261> velocity=<-1, 5> +position=< 20381, 10256> velocity=<-2, -1> +position=< 40513, 40517> velocity=<-4, -4> +position=< -9865, 20345> velocity=< 1, -2> +position=< -9909, 20347> velocity=< 1, -2> +position=< 10284, 20348> velocity=<-1, -2> +position=<-30073, 20342> velocity=< 3, -2> +position=<-30078, 30425> velocity=< 3, -3> +position=< -9899, 20342> velocity=< 1, -2> +position=< 20333, 30429> velocity=<-2, -3> +position=< 10306, 10253> velocity=<-1, -1> +position=<-50261, 10260> velocity=< 5, -1> +position=< 30459, -9912> velocity=<-3, 1> +position=< 10292, -40176> velocity=<-1, 4> +position=< 20389, -30083> velocity=<-2, 3> +position=<-40166, 20340> velocity=< 4, -2> +position=< -9901, 20345> velocity=< 1, -2> +position=< 40557, -20004> velocity=<-4, 2> +position=<-40158, -30090> velocity=< 4, 3> +position=<-50209, 10255> velocity=< 5, -1> +position=<-50265, -40172> velocity=< 5, 4> +position=<-50245, 50605> velocity=< 5, -5> +position=< 30443, -40177> velocity=<-3, 4> +position=< -9916, 20339> velocity=< 1, -2> +position=< 50640, 50601> velocity=<-5, -5> +position=<-19971, -20005> velocity=< 2, 2> +position=< 40522, -9914> velocity=<-4, 1> +position=< 50607, -19999> velocity=<-5, 2> +position=<-50243, 40515> velocity=< 5, -4> +position=<-50240, 10260> velocity=< 5, -1> +position=< 40561, -19998> velocity=<-4, 2> +position=<-50211, -50254> velocity=< 5, 5> +position=<-40143, 30431> velocity=< 4, -3> +position=< 30430, -50259> velocity=<-3, 5> +position=< 30479, -20002> velocity=<-3, 2> +position=<-30092, 20344> velocity=< 3, -2> +position=<-30092, -40168> velocity=< 3, 4> +position=< 50601, 10257> velocity=<-5, -1> +position=< 20373, 40515> velocity=<-2, -4> +position=< 30479, -19997> velocity=<-3, 2> +position=<-40175, 50605> velocity=< 4, -5> +position=< -9880, -40173> velocity=< 1, 4> +position=< 20349, -50255> velocity=<-2, 5> +position=< 20362, -9914> velocity=<-2, 1> +position=<-30089, 50601> velocity=< 3, -5> +position=< 30467, 10253> velocity=<-3, -1> +position=< 40565, 30429> velocity=<-4, -3> +position=<-40142, 10257> velocity=< 4, -1> +position=< 50609, -50263> velocity=<-5, 5> +position=< -9881, -40173> velocity=< 1, 4> +position=< 50639, 40515> velocity=<-5, -4> +position=<-50269, -40170> velocity=< 5, 4> +position=< 40553, -9910> velocity=<-4, 1> +position=< 30455, 30434> velocity=<-3, -3> +position=< 20362, 10258> velocity=<-2, -1> +position=< 40505, 50603> velocity=<-4, -5> +position=<-19990, 10260> velocity=< 2, -1> +position=< 30447, -19998> velocity=<-3, 2> +position=<-40150, -30087> velocity=< 4, 3> +position=< -9907, -40172> velocity=< 1, 4> +position=<-30044, 20348> velocity=< 3, -2> +position=<-40178, -9913> velocity=< 4, 1> +position=<-50261, 30428> velocity=< 5, -3> +position=<-40151, 20348> velocity=< 4, -2> +position=<-50224, 30432> velocity=< 5, -3> +position=< 50652, -50263> velocity=<-5, 5> +position=<-19952, 50606> velocity=< 2, -5> +position=< 30431, 40511> velocity=<-3, -4> +position=< 30459, -30088> velocity=<-3, 3> +position=< 50651, 20347> velocity=<-5, -2> +position=< 10292, -30082> velocity=<-1, 3> +position=< 20366, 10257> velocity=<-2, -1> +position=<-19987, -9913> velocity=< 2, 1> +position=< -9865, -40170> velocity=< 1, 4> +position=< -9889, 50597> velocity=< 1, -5> +position=<-30065, -50262> velocity=< 3, 5> +position=< -9921, 20347> velocity=< 1, -2> +position=<-30084, 10253> velocity=< 3, -1> +position=< 10248, -20005> velocity=<-1, 2> +position=< 20345, -9915> velocity=<-2, 1> +position=< -9882, -9915> velocity=< 1, 1> +position=<-30065, 50602> velocity=< 3, -5> +position=< 40565, 50599> velocity=<-4, -5> +position=< 20349, -50261> velocity=<-2, 5> +position=<-19960, -19998> velocity=< 2, 2> +position=< 10255, -50258> velocity=<-1, 5> +position=< -9901, -50255> velocity=< 1, 5> +position=<-50219, -9916> velocity=< 5, 1> +position=< 40524, -30086> velocity=<-4, 3> +position=< 40550, 50600> velocity=<-4, -5> +position=<-50233, -30091> velocity=< 5, 3> +position=< 30440, -50257> velocity=<-3, 5> +position=< -9920, 50605> velocity=< 1, -5> +position=< 40507, 20339> velocity=<-4, -2> +position=< 10264, 30426> velocity=<-1, -3> +position=< 40556, 20341> velocity=<-4, -2> +position=< -9875, -9913> velocity=< 1, 1> +position=<-30068, -50254> velocity=< 3, 5> +position=< -9889, 30425> velocity=< 1, -3> +position=<-20011, -40172> velocity=< 2, 4> +position=<-50269, 10259> velocity=< 5, -1> +position=<-40132, 30432> velocity=< 4, -3> +position=< 40553, -9913> velocity=<-4, 1> +position=<-30073, 10256> velocity=< 3, -1> +position=<-30092, 20340> velocity=< 3, -2> +position=< 40542, 50606> velocity=<-4, -5> +position=<-50224, 20347> velocity=< 5, -2> +position=<-40143, 50606> velocity=< 4, -5> +position=<-19971, -20000> velocity=< 2, 2> +position=< 40553, 20340> velocity=<-4, -2> +position=<-30081, -20001> velocity=< 3, 2> +position=<-30037, -40172> velocity=< 3, 4> +position=< -9865, 30428> velocity=< 1, -3> +position=< 30479, 20340> velocity=<-3, -2> +position=< 30429, 20343> velocity=<-3, -2> +position=<-19971, -40172> velocity=< 2, 4> +position=< 30431, 50601> velocity=<-3, -5> +position=<-19982, 10256> velocity=< 2, -1> +position=< 20344, 20343> velocity=<-2, -2> diff --git a/2018/inputs/12.txt b/2018/inputs/12.txt new file mode 100644 index 0000000..6d801ae --- /dev/null +++ b/2018/inputs/12.txt @@ -0,0 +1,34 @@ +initial state: ###..#...####.#..###.....####.######.....##.#####.##.##..###....#....##...##...##.#..###..#.#...#..# + +.###. => . +..#.. => . +.#### => . +.##.. => # +#.#.# => . +..#.# => # +#.##. => # +#...# => # +..... => . +##..# => # +.#.#. => . +..##. => # +##.#. => . +###.. => . +.#... => # +..### => . +#..## => . +...#. => . +###.# => # +.##.# => . +.#.## => . +....# => . +##### => . +#.#.. => # +...## => # +#.... => . +#.### => # +##... => # +.#..# => . +####. => . +#..#. => # +##.## => # diff --git a/2018/inputs/13.txt b/2018/inputs/13.txt new file mode 100644 index 0000000..a2195f8 --- /dev/null +++ b/2018/inputs/13.txt @@ -0,0 +1,150 @@ + /----------------------------------------------------\ /----------------------------\ + /-------->-------\ | /----+----------+----------------------------+----------\ + | /+-----+-----------------------------------------------+----+----------+-\ /---+-------\ | + | /-------++-----+-----------------------------------------------+----+----------+-+---\ | | | | + /--+-------+-------++-----+-----------------------------------------------+---\| | | | | | | | + /----------+--+-----\ | || | /----------------------------------+---++----------+-+---+----\ | | | | + | | | /---+-+-------++-----+------------+--------------->------------------+---++----------+-+\ | | | | | | + | /-----+--+-+---+-+-------++-----+------------+----------------------------------+---++---\ | || | | | | | | + | | | | | | | || | | /-------------------+---++---+--\ | || | | | | | | + /+----+-----+--+-+---+-+-------++-----+------------+\ | | || | | | || | | | | | | + || | /---+--+-+---+-+-------++-----+------------++-------------+-------------------+---++---+--+-\ | || | | | | | | + || | | | | | | | || /-+---------\ || | | || | | | | || | | | | | | + || | | | | | | | || | | | || | | || | | | | || | | | | | | + || | | | | | | ^ || | | | || | /-----+---++---+--+-+-+-++--+----+-------------+---+--\ | | + || | | | | | | | ||/--+-+---------+--++-------------+------->-----+-----+\ || | | | | || | | | | | | | + || | | | | | | | ||| | | | || /-------+-------------+-----++--++---+--+-+-+-++--+----+-------------+---+\ | | | + || | | | | | | | ||| |/+---------+--++-----+-------+-------------+-----++--++---+--+-+-+-++--+----+-------------+---++\| | | + || \-+---+--+-+---+-+-------+++--+++---------+--++-----+-------+-------------+-----++--++---/ | | | || |/---+-------------+---++++----+--+\ + || | | | | | | ||| ||| | || | | | || || | | | || || | \---++++----/ || + || | | \-+---+-+-------+/| ||| | || | | | |v || | | | || || | |||| || + || | | | | | | |/-+++-----\ | || | | | || || | | | || || | |||| || + || | | | | | | || ||| | | || | | | || || /----+-+-+-++--++---+-----------------++++-------++--\ + || | /+----+---+-+-------+-++-+++-----+---+--++-\ | | | || || | | | | || || | |||| || | + || /--+--++----+---+-+--\ | || ||| | | || | | | /------+-----++--++-+----+-+-+-++--++---+-----------------++++--\ || | + || | | || | | | | | || ||| | | || | | | | /-+-----++-\|| | | | | || || | |||| | || | + || | | ||/---+---+-+--+----+-++-+++-----+---+--++-+---+--->---+-\ | | | || |||/+----+-+-+-++--++---+-----------------++++--+----++--+\ + || | | ||| | | | | | || ||| | | || | | | | | | \-----++-+++++----+-+-+-++--++---+-----------------+++/ | || || + || | | ||| | | | | | || ||| | | || | /+-------+-+----+----+-------++\||||| | | | || || | ||| | || || + || | | ||| | | | | /+-++-+++-----+---+--++-+--++-------+-+\ /+----+-------++++++++----+-+-+-++--++---+-----------------+++-\ | || || + || | | ||| /-+---+-+--+---++-++-+++-----+---+--++-+--++-------+-++--++----+------\|||||||| | | | || || | ||| | | || || + || | | ||| | | | | | || || ||| | | || | || | || || | ||||||||| |/+-+-++--++---+-----------------+++-+-+\ || || + || | | ||| | | | | | || || ||| | | || | || \-++--++----+------+++++++++----/|| | || /++---+------------\ ||| | || || || + || | | ||| | | | | | || || ||| | | || | || /++--++----+---\ ||||||||| || | || ||| | | ||| | || || || + || | | ||| | | | | | || || ||| | | || | || ||| || | | ||||||||| || | || ||\---+------------+----+++-+-++---+/ || + || | | ||| | | | | | || || ||| |/--+--++-+--++-------\||| || | | ||||||||| || | || || | | ||| | || | || + || | | /+++-+-+---+-+--+---++-++-+++-----++--+--++-+--++-------++++--++----+---+--+++++++++----\|| | || || | | ||| | || | || + || | | |||| | | | | | || || ||\-----++--+--++-+--++-------++++--++----+---+--++++++/|| ||| | || || | | ||| | || | || + || | | |||| | |/--+-+--+---++-++-++------++--+--++\| || /----++++--++----+---+--++++++-++----+++-+-++-++----+------\ | ||| | || | || + || | | |||| | || | | | || || || || | |||| || | |||| || | | |||||| || ||| | || || | | | ||| | || | || + || | | |||| | || | | | || || || /++--+--++++--++--+----++++--++----+---+--++++++-++----+++-+-++-++----+------+-----+----+++-+-++---+---++\ + || | | |||| | || | | | || || || /---+++--+--++++--++--+----++++--++----+---+--++++++-++----+++-+-++-++\ | | /+----+++-+-++---+--\||| + || | | |||| | || | | | || || || | ||| | \+++--++--+----++++--++----+---+--++++++-++----+++-+-++-+++---/ | || ||| | || | |||| + || | | |||| | || | | | || || \+-+---+++--/ ||| || | |||| || | | |||||| || ||| | || ||| | || ||| | || | |||| + || | | |||| | || | | | || || |/+---+++------+++--++--+----++++--++\ | | |||||| || ||| | || ||| | || ||| | || | |||| + || | | |||| | || | | | || || ||| ||| ||| || | ||||/-+++---+---+--++++++-++----+++-+-++-+++----------+----++----+++-+\|| | |||| + || | | |||| \-++--+-+--+---++-++--+++---+++------+++--++--+----+++++-+++---+---+--/||||| || ||| | || ||| | || ||| |||| | |||| + || | | |||| || | | | || || ||| ||| ||| || | ||||| ||| | | ||||| || ||| | || ||| | || ||| |||| | |||| + || | | |||| || | | | || || ||| ||| /----+++--++--+----+++++-+++---+---+---+++++-++----+++-+-++-+++----------+----++---\||| |||| | |||| + || | /+-++++---++--+-+--+---++-++--+++---+++-+----+++--++--+----+++++-+++\ | | ||||| || ||| | || ||| | ||/--++++-++++\ | |||| + || |/++-++++---++--+-+--+--\|| || ||| ||\-+----+++--++--+----/\+++-++++--+---/ ||||| || ||| | || ||| | ||| |||| ||||| | |||| + || |||| |||| || | | | ||| || ||| || | ||| || | ||| |||| | ||||| || /-+++-+-++-+++---\ | ||| |||| ||||| | |||| + |\---++++-++++---++--/ | | ||| || ||| || | ||| || \------+++-++++--+-------+++++-++--+-+++-+-++-+++---+------/ ||| |||| ||||| | |||| + | |||| |||| || | | ||| || ||| || | ||| || ||| |||| | ||||| || | ||| | || ||| | ||| |||| ||||| | |||| + | |||| |||| || \--+--+++-++--+++---++--+----+++--++---------+++-++++--+-------+++++-++--+-+++-+-++-+/| | ||| |||| ||||| | |||| + | ||||/++++---++-------+--+++-++--+++---++--+----+++--++---------+++\|||| | ||||| || | |||/+-++-+-+---+-----------+++--++++-+++++--+\ |||| + | ||||||||\<--++-------+--+++-++--+++---++--+----+++--++---------/||||||| \-------+++/| || | ||||| || \-+---+-----------+/| |||| ||||| || |||| + | |||||||| /++------\| ||| || /+++---++--+----+++--++----------+++++++----------+++-+-++--+-+++++-++---+---+---------\ | | |||| ||||| || |||| + | |||||||| ||| ||/-+++-++-++++---++--+-\ ||| || ||||||| ||| | || | ||||| || | | | | | |||| ||||| || |||| + | |||||||| ||| ||| ||| || |||| || | | ||| || ||||||| /+++-+-++--+-+++++-++\ | | | | \--++++-++++/ || |||| + | |||||||| ||| ||| ||| || |||| || | | ||| || ||||||| |\++-+-++--+-+++++-+++--+---+---------+-+----++++-++++---/| |||| + | /--++++++++---+++------+++-+++-++-++++---++--+-+--+++\ || ||||||| | || | || | ||||| ||| | | | \----++++-++++----+-/||| + | | |||||||| ||| ||| ||| || |||| || | | |||| || ||||||| | || | || | ||||| ||| | |/--------+----\ |||| |||| | ||| + | | |||||||| ||| /+++-+++-++-++++---++--+-+--++++-++----------+++++++---\ | || | || | ||||| ||| | || /------+---\| |||| |||| | ||| + | | |||||||| ||| |||| ||| || |||| || | | |||| || /-----+++++++---+---\ | || | || | ||||| ||| |/--++-+------+---++-++++-++++----+-\||| + \-+--++++++++---+++-----++++-+++-++-++++---++--+-+--/||| || | ||||||| | | | || | || | ||||| ||| || || | | || |||| |||| | |||| + | |||||||| /-+++-----++++-+++-++-++++---++--+\| ||| || | ||||||| | | | || | || | ||||| ||| || || | | || |||| |||| | |||| + | |||||||| | ||| |||| ||| ||/++++---++--+++---+++-++----+-----+++++++---+---+-+-++-+-++--+-+++++-+++--++--++-+------+\ || |||| |||| | |||| +/--+--++++++++-+-+++-----++++-+++-+++++++---++--+++---+++-++----+-----+++++++---+---+-+-++-+-++--+-+++++-+++\ || || | || || |||| |||| | |||| +| | |||||||| | ||| ||||/+++-+++++++---++--+++---+++-++----+-----+++++++---+\ | | || | |\--+-+++++-++++-++--++-+------++--++-++++-++++----+-+/|| +| | |||||||| | ||| |||||||| ||||||| || ||| ||| || | ||||||| || | | || | | | ||||| |||| || || | || || |||| |||| | | || +| | |||||||| | |||/----++++++++-+++++++---++--+++---+++-++----+-----+++++++---++--+-+-++-+-+---+-+++++-++++-++\ || | || || |||| |||| | | || +| | |||||||| | |||| |||||||| ||||||| /-++--+++---+++-++----+-----+++++++---++--+\| || | | | ||||| |||| ||| || | || || |||| |||| | | || +| | |||||||| | |||| |||||||| ||||||| | || ||| ||| || | ||||||| || ||| || | | | ||||| |||| ||| || | || || |||| |||| | | || +| | |||\++++-+-++++----++++++++-+++++++-+-++--+++---+++-++----+-----+++++++---++--+++-++-+-+---+-++/|| |||| ||| || | || || |||| |||| | | || +| | ||| |||| | |||| ||||||||/+++++++-+-++\ ||| ||| || \-----+++++++---++--/|| || | | | || || |||| ||| || | || || |||| |||| | | || +| | ||| |||| | |||| |||||||\++++++++-+-+++-+++---+++-++----------+++++++---++---++-++-+-+---+-++-++-/||| ||| || | || || |||| |||| | | || +| | ||| |\++-+-++++----+++++++-++++++++-+-+++-+++---+++-++----------+++++++---++---++-++-+-+---+-/\-++--+++-+++-++-+------++--++-++++-+++/ | | || +| | ||| | || | |||| ||||||| |||||||| | ||| ||| ||| ^| ||||\++---++---++-++-+-+---+----++--+++-+++-++-+------++--++-++++-++/ | | || +| | ||| | || | |||| ||||||| ||||||\+-+-+++-+++---+++-++----------++++-/|/--++---++-++-+-+---+----++--+++-+++-++-+-\ || || |||| || | | || +| | ||| | || \-++++----+++++++-++++++-+-+-+++-+/| /-+++-++-------\ |||| || || || |v | v | \+--+++-+++-++-+-+----++--++-++++-++------/ | || +| | ||| | || |\++----+++++++-++++++-+-+-+++-+-+-+-+++-++-------+--++++--++--++---++-++-+-+---+-----+--/|| ||| || | | || || |||| || | || +| /+--+++-+-++---+-++----+++++++-++++++-+-+-+++-+-+-+-+++-++-------+--++++--++-\|| || || | | /+-----+---++-+++-++-+-+----++--++-++++-++-----\ | || +| || ||| | \+---+-++----+++++++-++++++-+-+-+++-+-+-+-+/| || | |||| || ||| || || | | || | || |\+-++-+-+----++--++-++++-++-----+--/ || +| || ||| | | |/++----+++++++-++++++-+-+-+++-+-+-+-+-+-++-------+--++++--++-+++---++-++-+-+--++-----+---++-+\| || | | || || |||| || | || +| || ||| | | |||| ||||||\-++++++-+-+-+++-+-+-+-+-+-++-------+--/||| || ||| || || | | || /---+---++-+++-++-+-+----++--++-++++-++---\ | || +| || ||| | /+---++++----++++++--++++++-+-+-+++-+-+-+-+-+-++-------+---+++--++-+++---++-++-+-+--++-+--\| || ||| || | | || || |||| || | | || +| || ||| | || /-++++----++++++\ |||||| | \-+++-+-+-+-+-+-++-------+---+++--++-+++---/| ||/+-+--++-+--++---++-+++-++-+\| || || |||| || | | || +| || ||\-+-++-+-++++----+++++++-++++++-+---+++-+-+-+-+-+-++-------+---+++--/| ||| | |||| | || | || || ||| || ||| || || |||| || | | || +| || || | |\-+-++++----+++++++-++++++-+---+++-+-+-+-+-+-++-------+---+++---+-+++----+-+++/ | || | || || ||| || ||| || || |||| || | | || +| || || | | | \+++----+/||||| \+++++-+---++/ | | | | | || | ||| | ||| | ||| | || | || || ||| || ||| || || |||| || | | || +| || || | | | |\+----+-+++++--+++++-+---++--+-+-+-/ | || | ||| | ||| | ||| | || | || || ||| || ||| || || |||| || | | || +| || || | | | | | | ||||| ||||| | || | | | /+-++-------+\ ||| | ||| | ||| | || | || || ||| || ||| || || |||| || | | || +| || || \-+--+--+-+----+-+++++--+++++-+---++--+-+-+--++-++-------++--+/| | ||| \-+++--+--++-+--++---/| ||| || ||| || || |||| || | | || +| || || | | | | | ||||| ||||| | || | | | || || /----++--+-+---+-+++------+++--+--++-+--++----+-+++-++-+++----++-\|| |||| || | | || +| || ||/---+--+-\| |/---+-+++++--+++++-+---++--+-+-+--++-++--+----++--+-+---+-+++----\ ||| | ||/+--++----+-+++-++-+++----++-+++-++++-++---+\| || +| || ||| | | || || | ||||| ||||| | || | | | || || | || | | | ||| | ||| \--++++--++----+-+++-++-+++----++-+++-++++-++---+++----/| +| || ||| | | || || | ||||| ||||| | || | | | /++-++--+----++--+-+---+-+++----+-+++-----++++--++----+-+++-++-+++----++-+++\|||| || ||| | +| || ||| ^ | || || | ||||| ||||| | || | | | ||| || | || | | | ||| | ||| |||\--++----+-+++-++-+++----++-++++++++-++---/|| | +| || ||| | | || || | ||||| ||||| | || \-+-+-+++-++--+----++--+-+---+-+++----+-+++-----+++---++----+-+++-++-+++----++-++++/||| || || | +| || ||| | | || || | ||||| ||||| | || | | ||| || | /-++--+-+---+-+++----+-+++-----+++---++----+-+++-++-+++--\ || |||| ||| || || | +|/++--+++---+--+-++-++---+-+++++--+++++-+--\|| |/+-+++-++--+--+\|| | | | ||| | ||| ||| |\----+-+++-++-+++--+-++-++++-/|| || || | +|||| ||| | | || || | ||||| ||||| | ||| /+++-+++-++--+--++++--+-+---+-+++----+-+++-----+++---+-----+-+++-++-+++--+-++-++++\ || || || | +|||| ||| | | || || | ||||| |\+++-+--++/ |||| ||| || | |||| | | | ||| | ||| ||| | | ||| || ||| | || ||||| || || || | +|||| ||| | | || || | ||||| |/+++-+--++---\|||| ||| || | |||| | | | ||| | ||| ||| | | ||| || ||| | || ||||| || || || | +|||| |\+---+--+-++-++---+-+++/| ||||| | |\---+++++-+++-++--+--++++--+-+---+-+++----+-+++-----+++---+-----+-+++-++-+++--+-++-+++++-++-++----++-----/ +|||| | | | | |\-++---+-+++-+--+++++-+--+----+++++-+++-++--+--++++--+-+---+-+++----+-+++-----+++---+-----+-+/| || ||| | || ||||| || || || +|||| | | | | | /++---+-+++\| ||||| | | ||||| ||| || | |||| | | | ||| | ||| ||| | | | | || ||| | || ||||| || || || +|||| | | | /+-+-+++--\| ||||| ||||| | | ||||| ||| || | |||| | | | ||| | ||| ||| | | | | || ||| | || ||||| || || || +|||| | | | || | ||| || ||||| ||||| | | ||||| ||| || | |||| | | | ||| /-+-+++-----+++---+----\| | | || ||| | || ||||| || || || +|||| | | | || | ||| /++-+++++--+++++-+--+----+++++-+++-++--+--++++-\| | | ||| | | ||| ||\---+----++-+-+-++-+++--+-++-+++++-++-++----/| +|||| | | | || | ||| ||| ||||| ||||| \--+----+++++-+++-++--+--++++-++-+---+-+++--+-+-+++-----++----+----++-/ | || ||| | || ||||| || || | +|||| \-+--<+-++-+-+++-+++-/|||| ||||| | |\+++-+++-++--+--++++-++-+---+-+++--+-+-+++-----++----+----++---+-++-+++--+-++-++++/ || || | +|||| | | || | ||| ||| |||| ||||| | | ||| ||| || | |||| |\-+---+-+++--+-+-+++-----++----+----++---+-++-+++--+-++-++++--++-+/ | +|\++----+---+-++-+-+++-+++--++++--+++++----/ | ||| ||| \+--+--++++-+--+---+-+++--+-+-+/| |\----+----++---+-/| ||| | || |||| || | | +| || | | || | ||| ||| |||| \++++---------+-+++-+++--+--+--++++-+--+---+-+++--+-+-/ | | | || | | ||| | || |||| || | | +| || | | || | ||| ||| |||| |||\---------+-+++-+++--+--+--++++-+--+---+-+++--+-+---+-----+-----+----++---+--+-+++--+-++-++++--+/ | | +| || | | || | ||| ||| |||| ||| /----+-+++-+++--+--+--++++-+--+---+-+++--+-+---+-----+--\ | || | | |||/-+-++-++++--+--+------+-\ +| |\----+---+-++-+-+++-+++--++++---+++-----+----+-+++-++/ | | |||| | \---+-+++--+-+---+-----+--+--+----++---+--+-++++-+-++-++++--+--/ | | +| | | | || | ||| ||| |||| ||| | | ||| || | | |||| | | ||| | | | | | | || | | \+++-+-++-+/|| | | | +| \-----+---+-++-+-+++-+++--++++---+++-----+----+-+++-++---+--+--++++-+------+-/|| | | \-----+--+--+----++---+--+--/|| | || | || | | | +| | \-++-+-+++-+++--++++---+++-----+----+-+++-++---+--+--++++-+------+--++--+-+---------+--+--/ || | | || |/++-+-++--+---------+-+---\ +| | |\-+-+++-+++--+++/ /+++-----+----+-+++-++---+--+--++++-+------+--++--+-+---------+--+-------++---+--+>--++-++++-+-++--+-------\ | | | +| | | | ||| ||| ||| ||\+-----+----+-+++-++---+--+--++++-+------+--++--+-+---------+--+-------++---+--+---++-+++/ | || | | | | | +| | | | ||| ||| ||| || | | | ||| || \--+--++++-+------+--++--+-+---------+--+-------++---+--+---++-+++--+-++--/ | | | | +| | | | ||| ||| \++---++-+-----+----+-/|| || | |||| | | || | | | | || | | || ||| | || | | | | +| | | | \++-+++---+/ || | \----+--++-++------+--++++-+------+--++--+-+---------+--/ || | | || ||| | || | | | | +| | | | || ||| \----++-+----------+--++-++------+--++++-+---->-+--+/ | | | || | | || ||| | || | | | | +| | | | || \++--------++-+----------+--++-++------+--++++-/ | | | | \----------++---+--+---++-+++--+-++----------+-/ | | +| | | | || || || | | || || | |||| | | | | /--------------++---+--+---++-+++--+-++-----\ | | | +| | | | || || || | | || || | \+++--------+--+---+-+-----+--------------++---+--+---++-/|| | || | | | | +| | | | || || || | | || || | ||| | | \-+-----+--------------/| | | || || | || | | | | +| | | | || || /++-+----------+\ || \+------+---+++--------+--+-----+-----+---------------+---+--+---++--++--+-+/ | | | | +| | | | || || |\+-+----------++-++--+------+---+++--------+--+-----+-----+---------------+---+--+---++--++--+-+------+----/ | | +| | | | /++--++-------+-+-+----------++-++--+------+---+++-\ \--+-----+-----+---------------+---+--+---/| || | | | | | +| | | | ||| || | | | || \+--+------+---/|| | | | | | | | | || | | | | | +| | | | ||| || | | | |v | | | || | | | | | | | | \+--+-+------+--------+---/ +| /-+-----+--+-+++--++-------+-+-+----------++--+--+------+----++-+---------+-----+-----+---------------+\ | | | | | | | | +| | | | | ||| |\-------+-+-+----------++--+--+------+----++-+---------/ | | || | | | | | | | | +| | | | | ||| | | | \----------++--+--+------+----++-+---------------+-----+---------------++--+--+----+---/ | | | | +| | | | | ||| | | | || | \------+----+/ | | | || | | | | | | | +| | | \--+-+++--/ ^ | || | | | | | | || | | | | | | | +| | | | ||\-----------+-+------------++--+---------+----+--+---------------/ | || | | \------+-+------+--------/ +| | | | || | | || \---------+----/ | | || | | | | | +\-----+-+--------+-++------------+-+------------++------------+-------+---------------------+---------------/| | | | | | + | | | |\------------+-+------------++------------+-------+-<-------------------+----------------+--/ \-----------+-/ | + | | | | \-+------------+/ \-------+---------------------+----------------+-----------------/ | + | | | \---------------+------------+---------------------/ | | | + | | | \------------/ \----------------+--------------------------/ + \-+--------+-------------------------------------------------------------------------------------------/ + \--------/ diff --git a/2018/inputs/15.txt b/2018/inputs/15.txt new file mode 100644 index 0000000..0bd71e0 --- /dev/null +++ b/2018/inputs/15.txt @@ -0,0 +1,32 @@ +################################ +#######################.######## +#######################.######## +########..#############.######## +#######.....#########....#..#### +#######.....##########......#### +######....#..########.......#..# +#######.G...########...........# +####..GG....G######..........### +########....G..###..E.......#.E# +########...G..#....G..G.....E..# +########...G...G.G...........E.# +####....G.....#####..E......#E.# +####.####.#..#######....G.....## +####.G#####.#########..........# +####G#####..#########..........# +####.####..E#########..........# +####...#..#.#########.G........# +####.....G..#########.........## +####..G....E.#######........#### +####G.........#####...##....#### +#####G................###..E#### +#####..####...............###### +####..#####.............######## +#####.#######...........######## +#####.########.........######### +#####.########.....E..########## +#.....#########...#.############ +#..#############....############ +################....############ +##################.############# +################################ diff --git a/2018/inputs/16_1.txt b/2018/inputs/16_1.txt new file mode 100644 index 0000000..755acda --- /dev/null +++ b/2018/inputs/16_1.txt @@ -0,0 +1,3143 @@ +Before: [2, 3, 2, 2] +0 3 3 0 +After: [0, 3, 2, 2] + +Before: [1, 1, 2, 3] +6 0 2 0 +After: [0, 1, 2, 3] + +Before: [1, 0, 2, 2] +6 0 2 0 +After: [0, 0, 2, 2] + +Before: [1, 1, 1, 1] +11 2 1 0 +After: [2, 1, 1, 1] + +Before: [3, 0, 0, 2] +0 3 3 2 +After: [3, 0, 0, 2] + +Before: [1, 1, 2, 2] +9 1 0 2 +After: [1, 1, 1, 2] + +Before: [3, 2, 1, 1] +5 2 1 1 +After: [3, 2, 1, 1] + +Before: [1, 1, 0, 3] +7 1 3 0 +After: [0, 1, 0, 3] + +Before: [1, 2, 1, 3] +5 2 1 0 +After: [2, 2, 1, 3] + +Before: [0, 2, 2, 0] +8 0 0 0 +After: [0, 2, 2, 0] + +Before: [2, 0, 0, 1] +3 0 3 0 +After: [1, 0, 0, 1] + +Before: [3, 1, 2, 2] +4 1 3 1 +After: [3, 0, 2, 2] + +Before: [2, 2, 1, 1] +5 2 1 1 +After: [2, 2, 1, 1] + +Before: [1, 1, 2, 2] +6 0 2 2 +After: [1, 1, 0, 2] + +Before: [1, 1, 1, 2] +4 1 3 0 +After: [0, 1, 1, 2] + +Before: [2, 1, 3, 1] +13 1 3 0 +After: [1, 1, 3, 1] + +Before: [0, 1, 2, 1] +13 1 3 1 +After: [0, 1, 2, 1] + +Before: [2, 1, 0, 2] +4 1 3 1 +After: [2, 0, 0, 2] + +Before: [2, 1, 0, 1] +2 0 1 3 +After: [2, 1, 0, 1] + +Before: [3, 1, 2, 1] +12 1 2 2 +After: [3, 1, 0, 1] + +Before: [1, 1, 3, 2] +4 1 3 3 +After: [1, 1, 3, 0] + +Before: [2, 2, 1, 3] +7 1 3 0 +After: [0, 2, 1, 3] + +Before: [1, 3, 2, 1] +6 0 2 1 +After: [1, 0, 2, 1] + +Before: [2, 1, 2, 1] +13 1 3 1 +After: [2, 1, 2, 1] + +Before: [2, 1, 3, 0] +14 2 0 3 +After: [2, 1, 3, 1] + +Before: [1, 1, 2, 3] +6 0 2 3 +After: [1, 1, 2, 0] + +Before: [1, 1, 1, 3] +11 2 1 2 +After: [1, 1, 2, 3] + +Before: [2, 2, 3, 2] +0 3 3 0 +After: [0, 2, 3, 2] + +Before: [1, 2, 0, 2] +1 0 2 3 +After: [1, 2, 0, 0] + +Before: [2, 1, 0, 0] +2 0 1 3 +After: [2, 1, 0, 1] + +Before: [0, 2, 1, 1] +5 2 1 3 +After: [0, 2, 1, 2] + +Before: [0, 3, 2, 1] +10 3 2 3 +After: [0, 3, 2, 1] + +Before: [3, 3, 2, 2] +0 3 3 0 +After: [0, 3, 2, 2] + +Before: [1, 1, 2, 0] +12 1 2 0 +After: [0, 1, 2, 0] + +Before: [0, 2, 1, 3] +5 2 1 0 +After: [2, 2, 1, 3] + +Before: [0, 3, 2, 1] +8 0 0 0 +After: [0, 3, 2, 1] + +Before: [1, 1, 1, 3] +11 2 1 1 +After: [1, 2, 1, 3] + +Before: [0, 1, 1, 2] +11 2 1 2 +After: [0, 1, 2, 2] + +Before: [1, 1, 1, 1] +13 1 3 1 +After: [1, 1, 1, 1] + +Before: [1, 3, 0, 0] +1 0 2 1 +After: [1, 0, 0, 0] + +Before: [2, 2, 3, 1] +14 2 0 1 +After: [2, 1, 3, 1] + +Before: [0, 3, 0, 3] +8 0 0 3 +After: [0, 3, 0, 0] + +Before: [0, 0, 1, 1] +8 0 0 2 +After: [0, 0, 0, 1] + +Before: [0, 3, 2, 1] +8 0 0 2 +After: [0, 3, 0, 1] + +Before: [2, 1, 2, 3] +12 1 2 1 +After: [2, 0, 2, 3] + +Before: [3, 2, 2, 3] +14 2 1 2 +After: [3, 2, 1, 3] + +Before: [2, 2, 3, 0] +15 2 2 2 +After: [2, 2, 1, 0] + +Before: [2, 3, 3, 2] +15 2 2 0 +After: [1, 3, 3, 2] + +Before: [1, 1, 0, 0] +1 0 2 3 +After: [1, 1, 0, 0] + +Before: [3, 2, 2, 2] +0 3 3 3 +After: [3, 2, 2, 0] + +Before: [1, 3, 2, 2] +6 0 2 3 +After: [1, 3, 2, 0] + +Before: [2, 1, 0, 1] +3 0 3 1 +After: [2, 1, 0, 1] + +Before: [3, 3, 1, 3] +7 2 3 0 +After: [0, 3, 1, 3] + +Before: [0, 2, 1, 0] +5 2 1 3 +After: [0, 2, 1, 2] + +Before: [1, 1, 1, 2] +4 1 3 2 +After: [1, 1, 0, 2] + +Before: [0, 3, 1, 2] +8 0 0 1 +After: [0, 0, 1, 2] + +Before: [2, 1, 3, 3] +7 1 3 0 +After: [0, 1, 3, 3] + +Before: [3, 2, 2, 1] +10 3 2 0 +After: [1, 2, 2, 1] + +Before: [2, 1, 0, 1] +3 0 3 3 +After: [2, 1, 0, 1] + +Before: [2, 1, 1, 1] +13 1 3 2 +After: [2, 1, 1, 1] + +Before: [2, 2, 0, 3] +7 1 3 1 +After: [2, 0, 0, 3] + +Before: [2, 2, 0, 1] +3 0 3 0 +After: [1, 2, 0, 1] + +Before: [2, 2, 3, 1] +3 0 3 3 +After: [2, 2, 3, 1] + +Before: [1, 2, 0, 0] +1 0 2 1 +After: [1, 0, 0, 0] + +Before: [2, 2, 2, 2] +14 3 2 1 +After: [2, 0, 2, 2] + +Before: [3, 1, 1, 2] +4 1 3 1 +After: [3, 0, 1, 2] + +Before: [2, 1, 1, 1] +2 0 1 3 +After: [2, 1, 1, 1] + +Before: [1, 1, 0, 0] +1 0 2 1 +After: [1, 0, 0, 0] + +Before: [1, 3, 0, 2] +1 0 2 1 +After: [1, 0, 0, 2] + +Before: [1, 1, 1, 3] +9 1 0 2 +After: [1, 1, 1, 3] + +Before: [3, 1, 2, 2] +12 1 2 2 +After: [3, 1, 0, 2] + +Before: [0, 1, 2, 1] +12 1 2 2 +After: [0, 1, 0, 1] + +Before: [3, 2, 0, 3] +7 1 3 3 +After: [3, 2, 0, 0] + +Before: [2, 1, 2, 3] +7 2 3 2 +After: [2, 1, 0, 3] + +Before: [3, 1, 3, 1] +13 1 3 0 +After: [1, 1, 3, 1] + +Before: [2, 1, 1, 1] +11 2 1 0 +After: [2, 1, 1, 1] + +Before: [0, 1, 1, 0] +11 2 1 3 +After: [0, 1, 1, 2] + +Before: [2, 1, 3, 3] +7 1 3 2 +After: [2, 1, 0, 3] + +Before: [2, 3, 2, 1] +10 3 2 1 +After: [2, 1, 2, 1] + +Before: [1, 1, 2, 2] +4 1 3 1 +After: [1, 0, 2, 2] + +Before: [1, 3, 0, 1] +1 0 2 0 +After: [0, 3, 0, 1] + +Before: [1, 3, 0, 3] +1 0 2 3 +After: [1, 3, 0, 0] + +Before: [2, 3, 3, 1] +3 0 3 1 +After: [2, 1, 3, 1] + +Before: [2, 1, 1, 2] +11 2 1 3 +After: [2, 1, 1, 2] + +Before: [2, 1, 1, 1] +2 0 1 1 +After: [2, 1, 1, 1] + +Before: [3, 1, 2, 2] +4 1 3 0 +After: [0, 1, 2, 2] + +Before: [2, 0, 2, 1] +10 3 2 1 +After: [2, 1, 2, 1] + +Before: [1, 3, 0, 1] +1 0 2 1 +After: [1, 0, 0, 1] + +Before: [1, 1, 0, 2] +9 1 0 0 +After: [1, 1, 0, 2] + +Before: [2, 3, 2, 1] +3 0 3 2 +After: [2, 3, 1, 1] + +Before: [1, 2, 2, 1] +0 3 3 3 +After: [1, 2, 2, 0] + +Before: [3, 1, 2, 2] +12 1 2 1 +After: [3, 0, 2, 2] + +Before: [0, 2, 3, 1] +8 0 0 1 +After: [0, 0, 3, 1] + +Before: [0, 0, 2, 1] +10 3 2 2 +After: [0, 0, 1, 1] + +Before: [3, 2, 1, 3] +15 0 0 3 +After: [3, 2, 1, 1] + +Before: [1, 3, 2, 2] +6 0 2 2 +After: [1, 3, 0, 2] + +Before: [1, 2, 2, 3] +6 0 2 3 +After: [1, 2, 2, 0] + +Before: [1, 1, 3, 2] +4 1 3 2 +After: [1, 1, 0, 2] + +Before: [1, 2, 2, 1] +10 3 2 3 +After: [1, 2, 2, 1] + +Before: [1, 2, 2, 1] +6 0 2 2 +After: [1, 2, 0, 1] + +Before: [1, 2, 1, 3] +7 2 3 1 +After: [1, 0, 1, 3] + +Before: [1, 2, 2, 1] +10 3 2 0 +After: [1, 2, 2, 1] + +Before: [2, 3, 3, 1] +3 0 3 3 +After: [2, 3, 3, 1] + +Before: [2, 3, 2, 3] +14 2 0 2 +After: [2, 3, 1, 3] + +Before: [2, 1, 3, 1] +2 0 1 3 +After: [2, 1, 3, 1] + +Before: [0, 3, 3, 0] +8 0 0 1 +After: [0, 0, 3, 0] + +Before: [2, 1, 1, 3] +7 2 3 2 +After: [2, 1, 0, 3] + +Before: [0, 2, 2, 1] +10 3 2 3 +After: [0, 2, 2, 1] + +Before: [3, 2, 1, 3] +5 2 1 3 +After: [3, 2, 1, 2] + +Before: [3, 1, 1, 2] +0 3 3 2 +After: [3, 1, 0, 2] + +Before: [0, 3, 1, 3] +7 2 3 3 +After: [0, 3, 1, 0] + +Before: [2, 0, 2, 1] +10 3 2 3 +After: [2, 0, 2, 1] + +Before: [2, 2, 1, 0] +5 2 1 2 +After: [2, 2, 2, 0] + +Before: [2, 1, 2, 2] +4 1 3 3 +After: [2, 1, 2, 0] + +Before: [1, 3, 1, 1] +0 2 3 2 +After: [1, 3, 0, 1] + +Before: [1, 1, 0, 3] +1 0 2 3 +After: [1, 1, 0, 0] + +Before: [1, 0, 0, 3] +1 0 2 2 +After: [1, 0, 0, 3] + +Before: [2, 1, 1, 0] +11 2 1 0 +After: [2, 1, 1, 0] + +Before: [2, 0, 0, 1] +3 0 3 3 +After: [2, 0, 0, 1] + +Before: [3, 3, 0, 1] +14 0 2 2 +After: [3, 3, 1, 1] + +Before: [0, 1, 2, 0] +8 0 0 1 +After: [0, 0, 2, 0] + +Before: [2, 0, 1, 1] +3 0 3 2 +After: [2, 0, 1, 1] + +Before: [1, 3, 2, 0] +6 0 2 1 +After: [1, 0, 2, 0] + +Before: [3, 3, 2, 0] +2 0 2 3 +After: [3, 3, 2, 1] + +Before: [2, 1, 0, 1] +13 1 3 2 +After: [2, 1, 1, 1] + +Before: [1, 1, 2, 1] +13 1 3 2 +After: [1, 1, 1, 1] + +Before: [1, 3, 2, 0] +6 0 2 2 +After: [1, 3, 0, 0] + +Before: [3, 1, 3, 2] +4 1 3 1 +After: [3, 0, 3, 2] + +Before: [2, 3, 2, 2] +15 0 0 3 +After: [2, 3, 2, 1] + +Before: [2, 3, 2, 1] +3 0 3 3 +After: [2, 3, 2, 1] + +Before: [2, 1, 1, 2] +4 1 3 0 +After: [0, 1, 1, 2] + +Before: [1, 1, 1, 1] +13 1 3 0 +After: [1, 1, 1, 1] + +Before: [3, 1, 1, 0] +11 2 1 2 +After: [3, 1, 2, 0] + +Before: [3, 1, 1, 1] +11 2 1 0 +After: [2, 1, 1, 1] + +Before: [3, 1, 0, 2] +4 1 3 0 +After: [0, 1, 0, 2] + +Before: [3, 3, 1, 3] +15 0 0 3 +After: [3, 3, 1, 1] + +Before: [1, 2, 2, 1] +10 3 2 1 +After: [1, 1, 2, 1] + +Before: [1, 1, 1, 0] +11 2 1 3 +After: [1, 1, 1, 2] + +Before: [1, 1, 1, 2] +11 2 1 0 +After: [2, 1, 1, 2] + +Before: [3, 2, 2, 2] +14 2 1 2 +After: [3, 2, 1, 2] + +Before: [0, 0, 3, 3] +15 2 2 3 +After: [0, 0, 3, 1] + +Before: [0, 3, 2, 2] +0 3 3 0 +After: [0, 3, 2, 2] + +Before: [1, 0, 2, 1] +10 3 2 1 +After: [1, 1, 2, 1] + +Before: [2, 1, 2, 2] +14 3 2 1 +After: [2, 0, 2, 2] + +Before: [1, 0, 0, 3] +1 0 2 1 +After: [1, 0, 0, 3] + +Before: [3, 2, 1, 3] +7 2 3 1 +After: [3, 0, 1, 3] + +Before: [3, 1, 1, 2] +11 2 1 0 +After: [2, 1, 1, 2] + +Before: [1, 3, 2, 1] +6 0 2 0 +After: [0, 3, 2, 1] + +Before: [2, 0, 3, 1] +3 0 3 0 +After: [1, 0, 3, 1] + +Before: [3, 1, 2, 2] +12 1 2 0 +After: [0, 1, 2, 2] + +Before: [3, 1, 2, 0] +12 1 2 3 +After: [3, 1, 2, 0] + +Before: [2, 1, 2, 0] +2 0 1 3 +After: [2, 1, 2, 1] + +Before: [1, 1, 3, 1] +14 2 3 2 +After: [1, 1, 0, 1] + +Before: [1, 3, 2, 3] +6 0 2 0 +After: [0, 3, 2, 3] + +Before: [1, 1, 2, 3] +12 1 2 0 +After: [0, 1, 2, 3] + +Before: [3, 0, 2, 1] +10 3 2 1 +After: [3, 1, 2, 1] + +Before: [1, 0, 2, 0] +6 0 2 1 +After: [1, 0, 2, 0] + +Before: [2, 3, 1, 3] +7 2 3 2 +After: [2, 3, 0, 3] + +Before: [1, 1, 1, 1] +11 2 1 3 +After: [1, 1, 1, 2] + +Before: [2, 1, 2, 2] +2 0 1 0 +After: [1, 1, 2, 2] + +Before: [1, 2, 1, 3] +7 2 3 3 +After: [1, 2, 1, 0] + +Before: [1, 1, 2, 2] +12 1 2 0 +After: [0, 1, 2, 2] + +Before: [2, 0, 2, 1] +10 3 2 2 +After: [2, 0, 1, 1] + +Before: [0, 1, 2, 3] +12 1 2 2 +After: [0, 1, 0, 3] + +Before: [2, 1, 1, 3] +11 2 1 0 +After: [2, 1, 1, 3] + +Before: [2, 1, 3, 1] +13 1 3 3 +After: [2, 1, 3, 1] + +Before: [0, 2, 1, 1] +8 0 0 1 +After: [0, 0, 1, 1] + +Before: [1, 0, 0, 2] +1 0 2 1 +After: [1, 0, 0, 2] + +Before: [2, 1, 3, 3] +2 0 1 1 +After: [2, 1, 3, 3] + +Before: [0, 1, 2, 2] +4 1 3 2 +After: [0, 1, 0, 2] + +Before: [1, 1, 2, 1] +13 1 3 0 +After: [1, 1, 2, 1] + +Before: [1, 1, 3, 0] +9 1 0 1 +After: [1, 1, 3, 0] + +Before: [1, 1, 0, 1] +1 0 2 1 +After: [1, 0, 0, 1] + +Before: [2, 2, 3, 1] +3 0 3 1 +After: [2, 1, 3, 1] + +Before: [3, 2, 1, 2] +5 2 1 0 +After: [2, 2, 1, 2] + +Before: [1, 1, 2, 0] +12 1 2 1 +After: [1, 0, 2, 0] + +Before: [3, 0, 2, 3] +2 0 2 3 +After: [3, 0, 2, 1] + +Before: [2, 1, 3, 3] +2 0 1 2 +After: [2, 1, 1, 3] + +Before: [3, 1, 3, 1] +15 0 0 0 +After: [1, 1, 3, 1] + +Before: [0, 1, 3, 2] +4 1 3 1 +After: [0, 0, 3, 2] + +Before: [3, 2, 3, 3] +15 2 0 0 +After: [1, 2, 3, 3] + +Before: [1, 3, 3, 1] +0 3 3 0 +After: [0, 3, 3, 1] + +Before: [0, 0, 2, 3] +7 2 3 0 +After: [0, 0, 2, 3] + +Before: [0, 2, 1, 3] +7 2 3 2 +After: [0, 2, 0, 3] + +Before: [3, 0, 2, 1] +2 0 2 0 +After: [1, 0, 2, 1] + +Before: [2, 2, 2, 1] +10 3 2 2 +After: [2, 2, 1, 1] + +Before: [1, 2, 0, 1] +1 0 2 0 +After: [0, 2, 0, 1] + +Before: [1, 2, 0, 0] +1 0 2 2 +After: [1, 2, 0, 0] + +Before: [3, 1, 2, 1] +2 0 2 1 +After: [3, 1, 2, 1] + +Before: [0, 0, 3, 1] +8 0 0 1 +After: [0, 0, 3, 1] + +Before: [0, 1, 1, 2] +11 2 1 3 +After: [0, 1, 1, 2] + +Before: [0, 1, 3, 1] +13 1 3 2 +After: [0, 1, 1, 1] + +Before: [1, 1, 1, 2] +11 2 1 2 +After: [1, 1, 2, 2] + +Before: [2, 0, 3, 1] +3 0 3 3 +After: [2, 0, 3, 1] + +Before: [0, 2, 1, 2] +8 0 0 0 +After: [0, 2, 1, 2] + +Before: [1, 0, 2, 1] +6 0 2 1 +After: [1, 0, 2, 1] + +Before: [1, 1, 0, 2] +4 1 3 3 +After: [1, 1, 0, 0] + +Before: [2, 2, 1, 1] +3 0 3 2 +After: [2, 2, 1, 1] + +Before: [1, 2, 1, 2] +5 2 1 2 +After: [1, 2, 2, 2] + +Before: [2, 0, 2, 1] +3 0 3 3 +After: [2, 0, 2, 1] + +Before: [2, 1, 0, 1] +3 0 3 2 +After: [2, 1, 1, 1] + +Before: [2, 2, 1, 2] +5 2 1 1 +After: [2, 2, 1, 2] + +Before: [1, 1, 2, 2] +9 1 0 3 +After: [1, 1, 2, 1] + +Before: [2, 2, 1, 3] +15 0 0 3 +After: [2, 2, 1, 1] + +Before: [3, 1, 0, 1] +13 1 3 3 +After: [3, 1, 0, 1] + +Before: [3, 3, 2, 1] +10 3 2 2 +After: [3, 3, 1, 1] + +Before: [0, 1, 3, 2] +4 1 3 3 +After: [0, 1, 3, 0] + +Before: [0, 1, 1, 0] +11 2 1 2 +After: [0, 1, 2, 0] + +Before: [3, 1, 3, 1] +14 3 1 0 +After: [0, 1, 3, 1] + +Before: [0, 1, 3, 3] +8 0 0 3 +After: [0, 1, 3, 0] + +Before: [0, 1, 2, 1] +10 3 2 0 +After: [1, 1, 2, 1] + +Before: [2, 1, 2, 1] +3 0 3 2 +After: [2, 1, 1, 1] + +Before: [0, 2, 1, 3] +5 2 1 3 +After: [0, 2, 1, 2] + +Before: [1, 0, 0, 3] +1 0 2 0 +After: [0, 0, 0, 3] + +Before: [2, 3, 0, 1] +3 0 3 0 +After: [1, 3, 0, 1] + +Before: [2, 1, 2, 1] +12 1 2 1 +After: [2, 0, 2, 1] + +Before: [2, 1, 3, 2] +4 1 3 0 +After: [0, 1, 3, 2] + +Before: [1, 2, 1, 0] +5 2 1 3 +After: [1, 2, 1, 2] + +Before: [3, 1, 3, 1] +13 1 3 1 +After: [3, 1, 3, 1] + +Before: [1, 2, 1, 0] +5 2 1 1 +After: [1, 2, 1, 0] + +Before: [3, 1, 2, 1] +10 3 2 1 +After: [3, 1, 2, 1] + +Before: [1, 1, 1, 1] +13 1 3 2 +After: [1, 1, 1, 1] + +Before: [2, 1, 2, 1] +13 1 3 2 +After: [2, 1, 1, 1] + +Before: [1, 2, 1, 3] +7 1 3 1 +After: [1, 0, 1, 3] + +Before: [0, 0, 2, 2] +14 3 2 3 +After: [0, 0, 2, 0] + +Before: [2, 2, 1, 3] +15 0 0 1 +After: [2, 1, 1, 3] + +Before: [2, 1, 3, 2] +4 1 3 1 +After: [2, 0, 3, 2] + +Before: [1, 2, 1, 3] +5 2 1 2 +After: [1, 2, 2, 3] + +Before: [2, 2, 1, 0] +5 2 1 3 +After: [2, 2, 1, 2] + +Before: [2, 0, 2, 1] +3 0 3 2 +After: [2, 0, 1, 1] + +Before: [1, 0, 0, 1] +1 0 2 0 +After: [0, 0, 0, 1] + +Before: [2, 1, 1, 0] +15 0 0 0 +After: [1, 1, 1, 0] + +Before: [0, 0, 3, 3] +8 0 0 0 +After: [0, 0, 3, 3] + +Before: [1, 1, 1, 2] +4 1 3 3 +After: [1, 1, 1, 0] + +Before: [1, 2, 0, 3] +1 0 2 1 +After: [1, 0, 0, 3] + +Before: [1, 1, 0, 2] +9 1 0 1 +After: [1, 1, 0, 2] + +Before: [3, 1, 1, 1] +11 2 1 3 +After: [3, 1, 1, 2] + +Before: [1, 1, 0, 3] +7 1 3 1 +After: [1, 0, 0, 3] + +Before: [1, 1, 1, 3] +7 1 3 2 +After: [1, 1, 0, 3] + +Before: [1, 1, 2, 3] +6 0 2 1 +After: [1, 0, 2, 3] + +Before: [2, 1, 1, 2] +4 1 3 3 +After: [2, 1, 1, 0] + +Before: [2, 2, 2, 3] +7 1 3 2 +After: [2, 2, 0, 3] + +Before: [1, 3, 2, 1] +0 3 3 3 +After: [1, 3, 2, 0] + +Before: [0, 0, 3, 3] +8 0 0 3 +After: [0, 0, 3, 0] + +Before: [3, 1, 3, 1] +15 0 0 1 +After: [3, 1, 3, 1] + +Before: [1, 0, 0, 2] +1 0 2 2 +After: [1, 0, 0, 2] + +Before: [0, 0, 0, 1] +0 3 3 1 +After: [0, 0, 0, 1] + +Before: [1, 1, 1, 2] +9 1 0 0 +After: [1, 1, 1, 2] + +Before: [1, 3, 0, 1] +1 0 2 2 +After: [1, 3, 0, 1] + +Before: [1, 1, 3, 3] +9 1 0 0 +After: [1, 1, 3, 3] + +Before: [2, 1, 3, 1] +13 1 3 2 +After: [2, 1, 1, 1] + +Before: [2, 1, 3, 2] +4 1 3 3 +After: [2, 1, 3, 0] + +Before: [2, 1, 2, 1] +13 1 3 3 +After: [2, 1, 2, 1] + +Before: [1, 0, 2, 2] +6 0 2 1 +After: [1, 0, 2, 2] + +Before: [1, 1, 2, 1] +10 3 2 2 +After: [1, 1, 1, 1] + +Before: [3, 2, 1, 3] +5 2 1 2 +After: [3, 2, 2, 3] + +Before: [0, 1, 2, 0] +12 1 2 2 +After: [0, 1, 0, 0] + +Before: [2, 1, 1, 3] +2 0 1 0 +After: [1, 1, 1, 3] + +Before: [1, 2, 2, 3] +14 2 1 2 +After: [1, 2, 1, 3] + +Before: [1, 2, 0, 3] +1 0 2 0 +After: [0, 2, 0, 3] + +Before: [0, 1, 2, 2] +8 0 0 2 +After: [0, 1, 0, 2] + +Before: [0, 2, 1, 0] +5 2 1 1 +After: [0, 2, 1, 0] + +Before: [2, 0, 0, 1] +15 0 0 2 +After: [2, 0, 1, 1] + +Before: [2, 2, 1, 3] +5 2 1 0 +After: [2, 2, 1, 3] + +Before: [3, 2, 2, 1] +10 3 2 2 +After: [3, 2, 1, 1] + +Before: [0, 3, 2, 2] +14 3 2 2 +After: [0, 3, 0, 2] + +Before: [1, 2, 0, 1] +1 0 2 2 +After: [1, 2, 0, 1] + +Before: [0, 1, 1, 0] +11 2 1 0 +After: [2, 1, 1, 0] + +Before: [1, 2, 2, 3] +14 2 1 3 +After: [1, 2, 2, 1] + +Before: [2, 1, 3, 1] +3 0 3 3 +After: [2, 1, 3, 1] + +Before: [0, 1, 2, 3] +7 1 3 3 +After: [0, 1, 2, 0] + +Before: [2, 1, 2, 2] +2 0 1 1 +After: [2, 1, 2, 2] + +Before: [2, 2, 1, 0] +5 2 1 1 +After: [2, 2, 1, 0] + +Before: [3, 2, 1, 3] +5 2 1 0 +After: [2, 2, 1, 3] + +Before: [1, 1, 2, 1] +0 3 3 1 +After: [1, 0, 2, 1] + +Before: [1, 0, 2, 1] +6 0 2 3 +After: [1, 0, 2, 0] + +Before: [1, 3, 0, 2] +1 0 2 0 +After: [0, 3, 0, 2] + +Before: [0, 1, 1, 3] +11 2 1 2 +After: [0, 1, 2, 3] + +Before: [1, 1, 3, 3] +9 1 0 1 +After: [1, 1, 3, 3] + +Before: [3, 1, 2, 3] +12 1 2 1 +After: [3, 0, 2, 3] + +Before: [0, 1, 1, 1] +13 1 3 0 +After: [1, 1, 1, 1] + +Before: [1, 1, 2, 3] +9 1 0 1 +After: [1, 1, 2, 3] + +Before: [0, 3, 1, 3] +7 2 3 0 +After: [0, 3, 1, 3] + +Before: [3, 1, 2, 1] +13 1 3 2 +After: [3, 1, 1, 1] + +Before: [1, 0, 1, 3] +7 2 3 1 +After: [1, 0, 1, 3] + +Before: [1, 1, 0, 3] +1 0 2 0 +After: [0, 1, 0, 3] + +Before: [2, 1, 2, 2] +12 1 2 2 +After: [2, 1, 0, 2] + +Before: [3, 0, 1, 3] +14 3 0 0 +After: [1, 0, 1, 3] + +Before: [3, 1, 3, 3] +7 1 3 3 +After: [3, 1, 3, 0] + +Before: [1, 1, 0, 0] +1 0 2 0 +After: [0, 1, 0, 0] + +Before: [1, 1, 1, 1] +0 2 3 2 +After: [1, 1, 0, 1] + +Before: [2, 1, 0, 1] +2 0 1 2 +After: [2, 1, 1, 1] + +Before: [1, 1, 2, 1] +14 3 1 1 +After: [1, 0, 2, 1] + +Before: [0, 0, 2, 3] +7 2 3 3 +After: [0, 0, 2, 0] + +Before: [3, 2, 0, 0] +14 0 2 1 +After: [3, 1, 0, 0] + +Before: [0, 0, 2, 3] +8 0 0 0 +After: [0, 0, 2, 3] + +Before: [3, 1, 1, 0] +11 2 1 1 +After: [3, 2, 1, 0] + +Before: [1, 2, 1, 1] +5 2 1 2 +After: [1, 2, 2, 1] + +Before: [0, 2, 1, 3] +7 2 3 3 +After: [0, 2, 1, 0] + +Before: [3, 1, 2, 2] +15 0 0 3 +After: [3, 1, 2, 1] + +Before: [0, 0, 0, 2] +8 0 0 2 +After: [0, 0, 0, 2] + +Before: [3, 1, 3, 1] +13 1 3 2 +After: [3, 1, 1, 1] + +Before: [1, 1, 2, 3] +9 1 0 2 +After: [1, 1, 1, 3] + +Before: [1, 2, 0, 2] +1 0 2 2 +After: [1, 2, 0, 2] + +Before: [2, 1, 2, 3] +2 0 1 3 +After: [2, 1, 2, 1] + +Before: [1, 2, 0, 3] +1 0 2 2 +After: [1, 2, 0, 3] + +Before: [1, 0, 2, 0] +6 0 2 3 +After: [1, 0, 2, 0] + +Before: [1, 0, 3, 1] +0 3 3 2 +After: [1, 0, 0, 1] + +Before: [1, 3, 2, 1] +6 0 2 3 +After: [1, 3, 2, 0] + +Before: [1, 1, 1, 1] +9 1 0 3 +After: [1, 1, 1, 1] + +Before: [0, 3, 2, 1] +0 3 3 1 +After: [0, 0, 2, 1] + +Before: [1, 1, 3, 1] +13 1 3 3 +After: [1, 1, 3, 1] + +Before: [2, 2, 0, 3] +7 1 3 0 +After: [0, 2, 0, 3] + +Before: [0, 3, 2, 1] +0 3 3 0 +After: [0, 3, 2, 1] + +Before: [1, 0, 0, 1] +1 0 2 2 +After: [1, 0, 0, 1] + +Before: [2, 1, 2, 1] +2 0 1 2 +After: [2, 1, 1, 1] + +Before: [1, 2, 2, 2] +6 0 2 2 +After: [1, 2, 0, 2] + +Before: [0, 1, 1, 1] +13 1 3 3 +After: [0, 1, 1, 1] + +Before: [2, 1, 1, 0] +11 2 1 2 +After: [2, 1, 2, 0] + +Before: [0, 1, 3, 1] +13 1 3 1 +After: [0, 1, 3, 1] + +Before: [3, 2, 0, 2] +0 3 3 1 +After: [3, 0, 0, 2] + +Before: [1, 1, 2, 1] +10 3 2 3 +After: [1, 1, 2, 1] + +Before: [2, 1, 2, 1] +13 1 3 0 +After: [1, 1, 2, 1] + +Before: [2, 1, 0, 1] +13 1 3 1 +After: [2, 1, 0, 1] + +Before: [2, 1, 2, 2] +12 1 2 3 +After: [2, 1, 2, 0] + +Before: [0, 1, 2, 0] +12 1 2 1 +After: [0, 0, 2, 0] + +Before: [3, 1, 2, 2] +4 1 3 2 +After: [3, 1, 0, 2] + +Before: [1, 1, 0, 2] +1 0 2 1 +After: [1, 0, 0, 2] + +Before: [0, 2, 1, 1] +0 2 3 2 +After: [0, 2, 0, 1] + +Before: [1, 1, 2, 0] +6 0 2 0 +After: [0, 1, 2, 0] + +Before: [0, 3, 1, 2] +8 0 0 3 +After: [0, 3, 1, 0] + +Before: [1, 3, 0, 0] +1 0 2 2 +After: [1, 3, 0, 0] + +Before: [1, 1, 2, 0] +12 1 2 2 +After: [1, 1, 0, 0] + +Before: [2, 1, 0, 2] +0 3 3 1 +After: [2, 0, 0, 2] + +Before: [0, 3, 3, 3] +8 0 0 1 +After: [0, 0, 3, 3] + +Before: [3, 3, 0, 1] +0 3 3 0 +After: [0, 3, 0, 1] + +Before: [3, 1, 1, 2] +4 1 3 3 +After: [3, 1, 1, 0] + +Before: [2, 1, 2, 3] +12 1 2 3 +After: [2, 1, 2, 0] + +Before: [3, 1, 2, 1] +12 1 2 3 +After: [3, 1, 2, 0] + +Before: [1, 0, 2, 2] +6 0 2 3 +After: [1, 0, 2, 0] + +Before: [1, 1, 0, 1] +0 3 3 1 +After: [1, 0, 0, 1] + +Before: [1, 1, 0, 3] +9 1 0 2 +After: [1, 1, 1, 3] + +Before: [3, 0, 2, 1] +10 3 2 3 +After: [3, 0, 2, 1] + +Before: [2, 2, 3, 3] +14 3 2 3 +After: [2, 2, 3, 1] + +Before: [3, 1, 2, 2] +12 1 2 3 +After: [3, 1, 2, 0] + +Before: [0, 1, 2, 1] +10 3 2 1 +After: [0, 1, 2, 1] + +Before: [0, 1, 3, 0] +8 0 0 2 +After: [0, 1, 0, 0] + +Before: [3, 1, 2, 0] +12 1 2 1 +After: [3, 0, 2, 0] + +Before: [1, 3, 2, 0] +6 0 2 3 +After: [1, 3, 2, 0] + +Before: [2, 0, 1, 3] +7 2 3 3 +After: [2, 0, 1, 0] + +Before: [3, 2, 2, 1] +10 3 2 3 +After: [3, 2, 2, 1] + +Before: [1, 2, 0, 0] +1 0 2 3 +After: [1, 2, 0, 0] + +Before: [2, 1, 1, 1] +0 2 3 0 +After: [0, 1, 1, 1] + +Before: [3, 2, 1, 1] +5 2 1 3 +After: [3, 2, 1, 2] + +Before: [3, 1, 3, 1] +14 2 3 0 +After: [0, 1, 3, 1] + +Before: [2, 1, 1, 3] +14 2 1 1 +After: [2, 0, 1, 3] + +Before: [0, 1, 1, 2] +8 0 0 0 +After: [0, 1, 1, 2] + +Before: [2, 3, 3, 2] +15 2 2 2 +After: [2, 3, 1, 2] + +Before: [0, 1, 2, 3] +7 2 3 1 +After: [0, 0, 2, 3] + +Before: [1, 1, 0, 2] +4 1 3 2 +After: [1, 1, 0, 2] + +Before: [0, 2, 3, 0] +8 0 0 2 +After: [0, 2, 0, 0] + +Before: [0, 1, 1, 1] +11 2 1 1 +After: [0, 2, 1, 1] + +Before: [2, 1, 1, 1] +13 1 3 0 +After: [1, 1, 1, 1] + +Before: [2, 3, 1, 3] +7 2 3 0 +After: [0, 3, 1, 3] + +Before: [2, 1, 2, 3] +12 1 2 2 +After: [2, 1, 0, 3] + +Before: [2, 2, 1, 3] +5 2 1 3 +After: [2, 2, 1, 2] + +Before: [3, 1, 1, 3] +11 2 1 0 +After: [2, 1, 1, 3] + +Before: [0, 0, 1, 3] +7 2 3 1 +After: [0, 0, 1, 3] + +Before: [1, 3, 2, 1] +10 3 2 2 +After: [1, 3, 1, 1] + +Before: [3, 2, 1, 2] +15 0 0 2 +After: [3, 2, 1, 2] + +Before: [1, 2, 1, 1] +0 2 3 1 +After: [1, 0, 1, 1] + +Before: [1, 1, 1, 3] +9 1 0 3 +After: [1, 1, 1, 1] + +Before: [1, 1, 0, 3] +9 1 0 3 +After: [1, 1, 0, 1] + +Before: [0, 1, 1, 1] +11 2 1 2 +After: [0, 1, 2, 1] + +Before: [0, 1, 2, 1] +13 1 3 2 +After: [0, 1, 1, 1] + +Before: [1, 1, 2, 2] +4 1 3 2 +After: [1, 1, 0, 2] + +Before: [3, 1, 1, 2] +11 2 1 3 +After: [3, 1, 1, 2] + +Before: [2, 2, 3, 2] +0 3 3 3 +After: [2, 2, 3, 0] + +Before: [0, 0, 1, 1] +0 2 3 1 +After: [0, 0, 1, 1] + +Before: [0, 1, 2, 2] +12 1 2 1 +After: [0, 0, 2, 2] + +Before: [2, 0, 3, 1] +3 0 3 2 +After: [2, 0, 1, 1] + +Before: [1, 0, 2, 0] +6 0 2 0 +After: [0, 0, 2, 0] + +Before: [0, 2, 1, 1] +5 2 1 0 +After: [2, 2, 1, 1] + +Before: [1, 3, 3, 0] +15 2 2 0 +After: [1, 3, 3, 0] + +Before: [0, 3, 2, 0] +8 0 0 2 +After: [0, 3, 0, 0] + +Before: [2, 2, 2, 1] +0 3 3 1 +After: [2, 0, 2, 1] + +Before: [3, 1, 1, 2] +4 1 3 0 +After: [0, 1, 1, 2] + +Before: [1, 2, 1, 0] +5 2 1 0 +After: [2, 2, 1, 0] + +Before: [2, 2, 3, 3] +15 0 0 0 +After: [1, 2, 3, 3] + +Before: [2, 1, 0, 0] +2 0 1 1 +After: [2, 1, 0, 0] + +Before: [1, 2, 2, 3] +6 0 2 2 +After: [1, 2, 0, 3] + +Before: [1, 0, 0, 1] +1 0 2 1 +After: [1, 0, 0, 1] + +Before: [2, 2, 0, 1] +3 0 3 1 +After: [2, 1, 0, 1] + +Before: [3, 2, 1, 2] +5 2 1 1 +After: [3, 2, 1, 2] + +Before: [2, 1, 3, 2] +14 2 0 1 +After: [2, 1, 3, 2] + +Before: [1, 1, 0, 0] +9 1 0 2 +After: [1, 1, 1, 0] + +Before: [2, 2, 3, 3] +15 2 2 2 +After: [2, 2, 1, 3] + +Before: [0, 2, 1, 0] +8 0 0 2 +After: [0, 2, 0, 0] + +Before: [1, 1, 0, 1] +9 1 0 0 +After: [1, 1, 0, 1] + +Before: [0, 1, 2, 2] +4 1 3 0 +After: [0, 1, 2, 2] + +Before: [1, 1, 0, 0] +9 1 0 0 +After: [1, 1, 0, 0] + +Before: [2, 3, 2, 1] +3 0 3 1 +After: [2, 1, 2, 1] + +Before: [1, 2, 1, 3] +5 2 1 3 +After: [1, 2, 1, 2] + +Before: [2, 1, 1, 3] +11 2 1 2 +After: [2, 1, 2, 3] + +Before: [1, 1, 3, 0] +9 1 0 2 +After: [1, 1, 1, 0] + +Before: [2, 1, 1, 3] +11 2 1 1 +After: [2, 2, 1, 3] + +Before: [2, 1, 3, 2] +2 0 1 2 +After: [2, 1, 1, 2] + +Before: [0, 2, 1, 3] +5 2 1 2 +After: [0, 2, 2, 3] + +Before: [1, 0, 0, 2] +1 0 2 3 +After: [1, 0, 0, 0] + +Before: [1, 1, 1, 2] +9 1 0 3 +After: [1, 1, 1, 1] + +Before: [2, 1, 3, 2] +4 1 3 2 +After: [2, 1, 0, 2] + +Before: [1, 0, 2, 2] +6 0 2 2 +After: [1, 0, 0, 2] + +Before: [3, 1, 1, 3] +11 2 1 1 +After: [3, 2, 1, 3] + +Before: [3, 1, 2, 3] +2 0 2 0 +After: [1, 1, 2, 3] + +Before: [1, 2, 0, 2] +1 0 2 0 +After: [0, 2, 0, 2] + +Before: [3, 1, 2, 1] +10 3 2 2 +After: [3, 1, 1, 1] + +Before: [1, 0, 2, 3] +7 2 3 0 +After: [0, 0, 2, 3] + +Before: [3, 1, 2, 3] +12 1 2 0 +After: [0, 1, 2, 3] + +Before: [2, 1, 1, 3] +7 2 3 1 +After: [2, 0, 1, 3] + +Before: [0, 2, 1, 2] +5 2 1 3 +After: [0, 2, 1, 2] + +Before: [3, 1, 1, 0] +11 2 1 0 +After: [2, 1, 1, 0] + +Before: [1, 1, 3, 1] +9 1 0 0 +After: [1, 1, 3, 1] + +Before: [1, 1, 2, 2] +9 1 0 1 +After: [1, 1, 2, 2] + +Before: [2, 1, 1, 3] +11 2 1 3 +After: [2, 1, 1, 2] + +Before: [1, 1, 1, 2] +4 1 3 1 +After: [1, 0, 1, 2] + +Before: [3, 1, 0, 1] +13 1 3 0 +After: [1, 1, 0, 1] + +Before: [1, 2, 2, 3] +6 0 2 0 +After: [0, 2, 2, 3] + +Before: [1, 3, 0, 3] +1 0 2 0 +After: [0, 3, 0, 3] + +Before: [2, 1, 1, 0] +2 0 1 2 +After: [2, 1, 1, 0] + +Before: [0, 1, 2, 1] +12 1 2 3 +After: [0, 1, 2, 0] + +Before: [2, 3, 1, 1] +3 0 3 3 +After: [2, 3, 1, 1] + +Before: [2, 1, 3, 3] +2 0 1 3 +After: [2, 1, 3, 1] + +Before: [1, 3, 2, 1] +10 3 2 3 +After: [1, 3, 2, 1] + +Before: [1, 1, 3, 3] +9 1 0 3 +After: [1, 1, 3, 1] + +Before: [1, 1, 3, 2] +9 1 0 1 +After: [1, 1, 3, 2] + +Before: [1, 1, 0, 1] +13 1 3 2 +After: [1, 1, 1, 1] + +Before: [3, 0, 2, 0] +2 0 2 1 +After: [3, 1, 2, 0] + +Before: [2, 0, 0, 0] +14 0 1 2 +After: [2, 0, 1, 0] + +Before: [0, 1, 2, 1] +13 1 3 3 +After: [0, 1, 2, 1] + +Before: [2, 1, 3, 0] +14 2 0 1 +After: [2, 1, 3, 0] + +Before: [2, 1, 0, 1] +13 1 3 0 +After: [1, 1, 0, 1] + +Before: [2, 1, 0, 1] +2 0 1 1 +After: [2, 1, 0, 1] + +Before: [0, 3, 2, 1] +10 3 2 0 +After: [1, 3, 2, 1] + +Before: [0, 1, 3, 1] +0 3 3 2 +After: [0, 1, 0, 1] + +Before: [0, 2, 1, 1] +5 2 1 1 +After: [0, 2, 1, 1] + +Before: [2, 1, 1, 2] +15 0 0 3 +After: [2, 1, 1, 1] + +Before: [1, 1, 2, 0] +6 0 2 2 +After: [1, 1, 0, 0] + +Before: [1, 1, 2, 1] +6 0 2 0 +After: [0, 1, 2, 1] + +Before: [0, 2, 1, 3] +7 1 3 1 +After: [0, 0, 1, 3] + +Before: [1, 0, 0, 0] +1 0 2 3 +After: [1, 0, 0, 0] + +Before: [2, 1, 2, 3] +2 0 1 2 +After: [2, 1, 1, 3] + +Before: [0, 2, 0, 2] +0 3 3 1 +After: [0, 0, 0, 2] + +Before: [0, 2, 3, 0] +15 2 2 2 +After: [0, 2, 1, 0] + +Before: [1, 2, 2, 2] +14 2 1 3 +After: [1, 2, 2, 1] + +Before: [0, 1, 3, 1] +8 0 0 2 +After: [0, 1, 0, 1] + +Before: [3, 3, 3, 2] +15 0 0 3 +After: [3, 3, 3, 1] + +Before: [3, 3, 0, 2] +14 0 2 1 +After: [3, 1, 0, 2] + +Before: [0, 1, 1, 3] +11 2 1 0 +After: [2, 1, 1, 3] + +Before: [1, 1, 0, 1] +9 1 0 2 +After: [1, 1, 1, 1] + +Before: [0, 1, 2, 1] +10 3 2 3 +After: [0, 1, 2, 1] + +Before: [2, 2, 2, 1] +10 3 2 1 +After: [2, 1, 2, 1] + +Before: [0, 1, 2, 2] +4 1 3 3 +After: [0, 1, 2, 0] + +Before: [1, 2, 2, 1] +10 3 2 2 +After: [1, 2, 1, 1] + +Before: [2, 1, 1, 2] +11 2 1 1 +After: [2, 2, 1, 2] + +Before: [1, 1, 2, 1] +12 1 2 3 +After: [1, 1, 2, 0] + +Before: [3, 3, 1, 1] +0 2 3 1 +After: [3, 0, 1, 1] + +Before: [0, 1, 2, 2] +4 1 3 1 +After: [0, 0, 2, 2] + +Before: [0, 3, 2, 2] +8 0 0 3 +After: [0, 3, 2, 0] + +Before: [2, 1, 2, 1] +2 0 1 0 +After: [1, 1, 2, 1] + +Before: [1, 1, 0, 3] +1 0 2 1 +After: [1, 0, 0, 3] + +Before: [3, 3, 3, 2] +15 0 0 0 +After: [1, 3, 3, 2] + +Before: [0, 1, 1, 2] +4 1 3 2 +After: [0, 1, 0, 2] + +Before: [1, 3, 0, 3] +1 0 2 1 +After: [1, 0, 0, 3] + +Before: [1, 1, 0, 1] +1 0 2 2 +After: [1, 1, 0, 1] + +Before: [2, 1, 0, 2] +4 1 3 0 +After: [0, 1, 0, 2] + +Before: [3, 2, 2, 2] +2 0 2 2 +After: [3, 2, 1, 2] + +Before: [0, 2, 2, 1] +10 3 2 1 +After: [0, 1, 2, 1] + +Before: [0, 1, 0, 2] +4 1 3 2 +After: [0, 1, 0, 2] + +Before: [0, 1, 0, 2] +4 1 3 3 +After: [0, 1, 0, 0] + +Before: [1, 1, 2, 1] +10 3 2 1 +After: [1, 1, 2, 1] + +Before: [1, 1, 0, 1] +13 1 3 0 +After: [1, 1, 0, 1] + +Before: [1, 3, 2, 2] +6 0 2 1 +After: [1, 0, 2, 2] + +Before: [0, 1, 2, 1] +13 1 3 0 +After: [1, 1, 2, 1] + +Before: [0, 1, 1, 3] +11 2 1 1 +After: [0, 2, 1, 3] + +Before: [3, 2, 1, 0] +5 2 1 3 +After: [3, 2, 1, 2] + +Before: [2, 1, 2, 3] +7 2 3 3 +After: [2, 1, 2, 0] + +Before: [1, 1, 1, 1] +11 2 1 2 +After: [1, 1, 2, 1] + +Before: [2, 1, 1, 1] +3 0 3 2 +After: [2, 1, 1, 1] + +Before: [0, 1, 1, 3] +8 0 0 1 +After: [0, 0, 1, 3] + +Before: [3, 2, 3, 3] +7 1 3 3 +After: [3, 2, 3, 0] + +Before: [0, 3, 0, 0] +8 0 0 2 +After: [0, 3, 0, 0] + +Before: [1, 1, 2, 1] +6 0 2 1 +After: [1, 0, 2, 1] + +Before: [0, 1, 1, 2] +4 1 3 0 +After: [0, 1, 1, 2] + +Before: [1, 1, 2, 1] +9 1 0 1 +After: [1, 1, 2, 1] + +Before: [3, 1, 2, 0] +12 1 2 0 +After: [0, 1, 2, 0] + +Before: [1, 3, 0, 3] +1 0 2 2 +After: [1, 3, 0, 3] + +Before: [1, 1, 0, 3] +9 1 0 1 +After: [1, 1, 0, 3] + +Before: [0, 2, 2, 2] +8 0 0 1 +After: [0, 0, 2, 2] + +Before: [0, 1, 1, 1] +13 1 3 1 +After: [0, 1, 1, 1] + +Before: [1, 1, 3, 1] +13 1 3 0 +After: [1, 1, 3, 1] + +Before: [0, 1, 2, 1] +8 0 0 0 +After: [0, 1, 2, 1] + +Before: [2, 1, 2, 1] +12 1 2 2 +After: [2, 1, 0, 1] + +Before: [1, 0, 2, 3] +6 0 2 1 +After: [1, 0, 2, 3] + +Before: [3, 0, 3, 1] +15 2 0 2 +After: [3, 0, 1, 1] + +Before: [0, 1, 1, 1] +0 2 3 0 +After: [0, 1, 1, 1] + +Before: [3, 0, 0, 3] +14 0 2 1 +After: [3, 1, 0, 3] + +Before: [3, 1, 1, 1] +0 2 3 1 +After: [3, 0, 1, 1] + +Before: [0, 1, 2, 3] +7 2 3 3 +After: [0, 1, 2, 0] + +Before: [3, 1, 0, 1] +13 1 3 1 +After: [3, 1, 0, 1] + +Before: [0, 0, 3, 0] +8 0 0 1 +After: [0, 0, 3, 0] + +Before: [1, 1, 0, 2] +1 0 2 3 +After: [1, 1, 0, 0] + +Before: [2, 1, 1, 2] +4 1 3 1 +After: [2, 0, 1, 2] + +Before: [3, 2, 3, 0] +15 2 2 3 +After: [3, 2, 3, 1] + +Before: [0, 2, 0, 3] +7 1 3 0 +After: [0, 2, 0, 3] + +Before: [1, 1, 3, 2] +9 1 0 2 +After: [1, 1, 1, 2] + +Before: [0, 3, 1, 3] +8 0 0 1 +After: [0, 0, 1, 3] + +Before: [3, 1, 2, 1] +2 0 2 0 +After: [1, 1, 2, 1] + +Before: [1, 1, 3, 1] +9 1 0 2 +After: [1, 1, 1, 1] + +Before: [2, 1, 3, 0] +2 0 1 3 +After: [2, 1, 3, 1] + +Before: [2, 1, 1, 0] +11 2 1 1 +After: [2, 2, 1, 0] + +Before: [3, 1, 1, 1] +13 1 3 0 +After: [1, 1, 1, 1] + +Before: [2, 2, 1, 3] +5 2 1 1 +After: [2, 2, 1, 3] + +Before: [0, 0, 2, 1] +10 3 2 3 +After: [0, 0, 2, 1] + +Before: [3, 3, 0, 2] +0 3 3 1 +After: [3, 0, 0, 2] + +Before: [0, 2, 1, 0] +8 0 0 0 +After: [0, 2, 1, 0] + +Before: [3, 3, 0, 2] +15 0 0 3 +After: [3, 3, 0, 1] + +Before: [1, 0, 2, 3] +6 0 2 0 +After: [0, 0, 2, 3] + +Before: [0, 0, 1, 1] +8 0 0 1 +After: [0, 0, 1, 1] + +Before: [1, 0, 2, 1] +10 3 2 0 +After: [1, 0, 2, 1] + +Before: [1, 2, 1, 2] +5 2 1 1 +After: [1, 2, 1, 2] + +Before: [2, 1, 3, 1] +14 2 0 1 +After: [2, 1, 3, 1] + +Before: [2, 1, 2, 0] +2 0 1 0 +After: [1, 1, 2, 0] + +Before: [1, 1, 2, 2] +6 0 2 3 +After: [1, 1, 2, 0] + +Before: [2, 1, 1, 3] +2 0 1 2 +After: [2, 1, 1, 3] + +Before: [2, 3, 3, 2] +14 2 0 2 +After: [2, 3, 1, 2] + +Before: [1, 0, 0, 2] +1 0 2 0 +After: [0, 0, 0, 2] + +Before: [3, 3, 2, 2] +15 0 0 0 +After: [1, 3, 2, 2] + +Before: [0, 1, 1, 2] +4 1 3 3 +After: [0, 1, 1, 0] + +Before: [2, 2, 1, 2] +5 2 1 3 +After: [2, 2, 1, 2] + +Before: [2, 1, 2, 0] +12 1 2 0 +After: [0, 1, 2, 0] + +Before: [3, 1, 0, 1] +13 1 3 2 +After: [3, 1, 1, 1] + +Before: [1, 2, 1, 1] +5 2 1 1 +After: [1, 2, 1, 1] + +Before: [2, 1, 2, 2] +4 1 3 2 +After: [2, 1, 0, 2] + +Before: [0, 1, 0, 2] +4 1 3 0 +After: [0, 1, 0, 2] + +Before: [3, 1, 0, 2] +4 1 3 2 +After: [3, 1, 0, 2] + +Before: [1, 1, 3, 2] +4 1 3 1 +After: [1, 0, 3, 2] + +Before: [3, 1, 1, 1] +13 1 3 2 +After: [3, 1, 1, 1] + +Before: [0, 0, 2, 0] +8 0 0 3 +After: [0, 0, 2, 0] + +Before: [1, 1, 3, 2] +9 1 0 0 +After: [1, 1, 3, 2] + +Before: [3, 2, 1, 0] +5 2 1 1 +After: [3, 2, 1, 0] + +Before: [1, 1, 0, 2] +1 0 2 0 +After: [0, 1, 0, 2] + +Before: [2, 1, 0, 1] +13 1 3 3 +After: [2, 1, 0, 1] + +Before: [3, 1, 2, 0] +12 1 2 2 +After: [3, 1, 0, 0] + +Before: [3, 2, 2, 3] +2 0 2 0 +After: [1, 2, 2, 3] + +Before: [1, 1, 1, 0] +11 2 1 1 +After: [1, 2, 1, 0] + +Before: [0, 0, 1, 2] +8 0 0 3 +After: [0, 0, 1, 0] + +Before: [1, 1, 0, 0] +9 1 0 3 +After: [1, 1, 0, 1] + +Before: [1, 1, 3, 0] +9 1 0 3 +After: [1, 1, 3, 1] + +Before: [1, 1, 1, 1] +11 2 1 1 +After: [1, 2, 1, 1] + +Before: [3, 0, 0, 0] +14 0 2 3 +After: [3, 0, 0, 1] + +Before: [2, 1, 1, 3] +7 1 3 3 +After: [2, 1, 1, 0] + +Before: [0, 3, 3, 2] +8 0 0 2 +After: [0, 3, 0, 2] + +Before: [3, 1, 2, 1] +12 1 2 1 +After: [3, 0, 2, 1] + +Before: [3, 0, 2, 3] +7 2 3 0 +After: [0, 0, 2, 3] + +Before: [3, 1, 1, 1] +14 3 1 1 +After: [3, 0, 1, 1] + +Before: [1, 1, 1, 3] +9 1 0 0 +After: [1, 1, 1, 3] + +Before: [0, 0, 3, 3] +8 0 0 2 +After: [0, 0, 0, 3] + +Before: [3, 1, 3, 3] +7 1 3 1 +After: [3, 0, 3, 3] + +Before: [1, 1, 2, 2] +12 1 2 1 +After: [1, 0, 2, 2] + +Before: [1, 1, 0, 1] +1 0 2 3 +After: [1, 1, 0, 0] + +Before: [2, 2, 2, 1] +3 0 3 2 +After: [2, 2, 1, 1] + +Before: [2, 0, 3, 0] +14 0 1 1 +After: [2, 1, 3, 0] + +Before: [1, 1, 2, 2] +4 1 3 3 +After: [1, 1, 2, 0] + +Before: [1, 1, 2, 3] +12 1 2 2 +After: [1, 1, 0, 3] + +Before: [1, 2, 1, 3] +7 2 3 2 +After: [1, 2, 0, 3] + +Before: [3, 0, 0, 1] +14 0 2 2 +After: [3, 0, 1, 1] + +Before: [3, 2, 1, 0] +5 2 1 0 +After: [2, 2, 1, 0] + +Before: [2, 3, 2, 1] +3 0 3 0 +After: [1, 3, 2, 1] + +Before: [0, 1, 3, 2] +8 0 0 3 +After: [0, 1, 3, 0] + +Before: [2, 2, 1, 1] +3 0 3 3 +After: [2, 2, 1, 1] + +Before: [3, 2, 3, 1] +0 3 3 3 +After: [3, 2, 3, 0] + +Before: [2, 1, 1, 0] +14 2 1 3 +After: [2, 1, 1, 0] + +Before: [2, 2, 1, 3] +7 2 3 1 +After: [2, 0, 1, 3] + +Before: [2, 3, 3, 1] +3 0 3 2 +After: [2, 3, 1, 1] + +Before: [1, 1, 2, 1] +9 1 0 2 +After: [1, 1, 1, 1] + +Before: [0, 3, 2, 1] +10 3 2 1 +After: [0, 1, 2, 1] + +Before: [0, 1, 0, 1] +13 1 3 3 +After: [0, 1, 0, 1] + +Before: [1, 1, 1, 3] +11 2 1 3 +After: [1, 1, 1, 2] + +Before: [3, 1, 1, 2] +11 2 1 2 +After: [3, 1, 2, 2] + +Before: [1, 3, 2, 3] +6 0 2 3 +After: [1, 3, 2, 0] + +Before: [0, 1, 2, 3] +8 0 0 2 +After: [0, 1, 0, 3] + +Before: [3, 0, 1, 3] +14 3 0 2 +After: [3, 0, 1, 3] + +Before: [2, 1, 2, 0] +12 1 2 3 +After: [2, 1, 2, 0] + +Before: [0, 1, 1, 1] +11 2 1 0 +After: [2, 1, 1, 1] + +Before: [2, 3, 2, 1] +0 3 3 2 +After: [2, 3, 0, 1] + +Before: [1, 1, 0, 2] +0 3 3 3 +After: [1, 1, 0, 0] + +Before: [1, 0, 0, 1] +1 0 2 3 +After: [1, 0, 0, 0] + +Before: [3, 2, 1, 3] +7 2 3 3 +After: [3, 2, 1, 0] + +Before: [3, 1, 1, 3] +11 2 1 2 +After: [3, 1, 2, 3] + +Before: [0, 1, 2, 2] +12 1 2 3 +After: [0, 1, 2, 0] + +Before: [3, 3, 2, 1] +10 3 2 0 +After: [1, 3, 2, 1] + +Before: [1, 1, 3, 1] +13 1 3 1 +After: [1, 1, 3, 1] + +Before: [2, 2, 1, 1] +3 0 3 1 +After: [2, 1, 1, 1] + +Before: [2, 1, 2, 2] +4 1 3 0 +After: [0, 1, 2, 2] + +Before: [1, 1, 1, 1] +9 1 0 2 +After: [1, 1, 1, 1] + +Before: [1, 3, 2, 1] +10 3 2 0 +After: [1, 3, 2, 1] + +Before: [2, 0, 2, 1] +10 3 2 0 +After: [1, 0, 2, 1] + +Before: [1, 1, 0, 3] +1 0 2 2 +After: [1, 1, 0, 3] + +Before: [1, 2, 0, 1] +1 0 2 3 +After: [1, 2, 0, 0] + +Before: [1, 3, 0, 0] +1 0 2 0 +After: [0, 3, 0, 0] + +Before: [2, 1, 1, 3] +14 2 1 0 +After: [0, 1, 1, 3] + +Before: [1, 1, 1, 2] +9 1 0 1 +After: [1, 1, 1, 2] + +Before: [1, 1, 0, 1] +13 1 3 1 +After: [1, 1, 0, 1] + +Before: [2, 0, 0, 2] +15 0 0 0 +After: [1, 0, 0, 2] + +Before: [2, 3, 1, 1] +3 0 3 0 +After: [1, 3, 1, 1] + +Before: [0, 1, 2, 0] +12 1 2 3 +After: [0, 1, 2, 0] + +Before: [1, 2, 1, 2] +5 2 1 0 +After: [2, 2, 1, 2] + +Before: [2, 0, 2, 2] +14 3 2 2 +After: [2, 0, 0, 2] + +Before: [0, 2, 2, 1] +10 3 2 0 +After: [1, 2, 2, 1] + +Before: [2, 1, 0, 2] +4 1 3 3 +After: [2, 1, 0, 0] + +Before: [1, 3, 0, 2] +1 0 2 2 +After: [1, 3, 0, 2] + +Before: [0, 0, 2, 3] +8 0 0 1 +After: [0, 0, 2, 3] + +Before: [2, 1, 1, 3] +7 1 3 0 +After: [0, 1, 1, 3] + +Before: [3, 1, 2, 1] +13 1 3 0 +After: [1, 1, 2, 1] + +Before: [2, 0, 1, 1] +3 0 3 1 +After: [2, 1, 1, 1] + +Before: [1, 1, 2, 1] +13 1 3 1 +After: [1, 1, 2, 1] + +Before: [0, 1, 2, 1] +12 1 2 1 +After: [0, 0, 2, 1] + +Before: [2, 2, 3, 3] +14 3 2 2 +After: [2, 2, 1, 3] + +Before: [3, 1, 1, 1] +13 1 3 3 +After: [3, 1, 1, 1] + +Before: [3, 3, 3, 2] +15 2 0 1 +After: [3, 1, 3, 2] + +Before: [2, 1, 2, 1] +3 0 3 1 +After: [2, 1, 2, 1] + +Before: [3, 1, 2, 0] +2 0 2 3 +After: [3, 1, 2, 1] + +Before: [1, 2, 1, 2] +5 2 1 3 +After: [1, 2, 1, 2] + +Before: [3, 2, 1, 1] +5 2 1 0 +After: [2, 2, 1, 1] + +Before: [0, 1, 2, 1] +12 1 2 0 +After: [0, 1, 2, 1] + +Before: [2, 1, 1, 1] +3 0 3 0 +After: [1, 1, 1, 1] + +Before: [3, 1, 1, 2] +11 2 1 1 +After: [3, 2, 1, 2] + +Before: [1, 1, 1, 3] +11 2 1 0 +After: [2, 1, 1, 3] + +Before: [1, 1, 2, 0] +9 1 0 3 +After: [1, 1, 2, 1] + +Before: [0, 2, 2, 3] +8 0 0 3 +After: [0, 2, 2, 0] + +Before: [0, 0, 2, 1] +10 3 2 1 +After: [0, 1, 2, 1] + +Before: [0, 2, 3, 3] +14 3 2 0 +After: [1, 2, 3, 3] + +Before: [2, 1, 0, 3] +2 0 1 2 +After: [2, 1, 1, 3] + +Before: [3, 1, 2, 0] +2 0 2 0 +After: [1, 1, 2, 0] + +Before: [3, 1, 0, 2] +14 0 2 0 +After: [1, 1, 0, 2] + +Before: [2, 1, 3, 0] +2 0 1 1 +After: [2, 1, 3, 0] + +Before: [1, 1, 1, 0] +9 1 0 3 +After: [1, 1, 1, 1] + +Before: [1, 0, 0, 0] +1 0 2 1 +After: [1, 0, 0, 0] + +Before: [0, 3, 2, 2] +8 0 0 2 +After: [0, 3, 0, 2] + +Before: [3, 3, 2, 2] +2 0 2 0 +After: [1, 3, 2, 2] + +Before: [0, 2, 1, 2] +5 2 1 1 +After: [0, 2, 1, 2] + +Before: [3, 3, 2, 2] +2 0 2 3 +After: [3, 3, 2, 1] + +Before: [0, 2, 1, 2] +5 2 1 0 +After: [2, 2, 1, 2] + +Before: [1, 0, 2, 1] +10 3 2 2 +After: [1, 0, 1, 1] + +Before: [0, 1, 0, 1] +13 1 3 2 +After: [0, 1, 1, 1] + +Before: [3, 1, 1, 1] +14 2 1 1 +After: [3, 0, 1, 1] + +Before: [0, 1, 0, 1] +13 1 3 1 +After: [0, 1, 0, 1] + +Before: [2, 2, 0, 1] +3 0 3 2 +After: [2, 2, 1, 1] + +Before: [3, 2, 1, 3] +14 3 0 0 +After: [1, 2, 1, 3] + +Before: [1, 1, 2, 2] +4 1 3 0 +After: [0, 1, 2, 2] + +Before: [3, 1, 2, 3] +7 1 3 1 +After: [3, 0, 2, 3] + +Before: [3, 0, 3, 0] +15 2 2 1 +After: [3, 1, 3, 0] + +Before: [0, 2, 2, 2] +14 2 1 3 +After: [0, 2, 2, 1] + +Before: [1, 1, 2, 3] +12 1 2 1 +After: [1, 0, 2, 3] + +Before: [3, 1, 1, 1] +13 1 3 1 +After: [3, 1, 1, 1] + +Before: [2, 1, 1, 1] +13 1 3 3 +After: [2, 1, 1, 1] + +Before: [2, 2, 2, 3] +7 2 3 3 +After: [2, 2, 2, 0] + +Before: [2, 3, 3, 3] +15 0 0 2 +After: [2, 3, 1, 3] + +Before: [3, 1, 2, 1] +13 1 3 3 +After: [3, 1, 2, 1] + +Before: [3, 3, 3, 2] +15 0 2 0 +After: [1, 3, 3, 2] + +Before: [3, 1, 0, 2] +0 3 3 0 +After: [0, 1, 0, 2] + +Before: [2, 0, 3, 2] +14 0 1 1 +After: [2, 1, 3, 2] + +Before: [1, 0, 2, 1] +10 3 2 3 +After: [1, 0, 2, 1] + +Before: [1, 3, 3, 1] +0 3 3 2 +After: [1, 3, 0, 1] + +Before: [0, 2, 2, 1] +10 3 2 2 +After: [0, 2, 1, 1] + +Before: [2, 2, 1, 0] +5 2 1 0 +After: [2, 2, 1, 0] + +Before: [2, 3, 0, 1] +3 0 3 2 +After: [2, 3, 1, 1] + +Before: [1, 2, 2, 2] +6 0 2 1 +After: [1, 0, 2, 2] + +Before: [0, 1, 2, 2] +12 1 2 0 +After: [0, 1, 2, 2] + +Before: [1, 1, 0, 2] +9 1 0 2 +After: [1, 1, 1, 2] + +Before: [0, 1, 2, 2] +12 1 2 2 +After: [0, 1, 0, 2] + +Before: [2, 1, 2, 0] +12 1 2 2 +After: [2, 1, 0, 0] + +Before: [2, 3, 3, 0] +15 0 0 3 +After: [2, 3, 3, 1] + +Before: [2, 2, 0, 1] +15 0 0 0 +After: [1, 2, 0, 1] + +Before: [2, 0, 3, 2] +0 3 3 2 +After: [2, 0, 0, 2] + +Before: [3, 0, 3, 2] +15 2 2 3 +After: [3, 0, 3, 1] + +Before: [2, 3, 2, 1] +10 3 2 3 +After: [2, 3, 2, 1] + +Before: [2, 1, 2, 1] +3 0 3 3 +After: [2, 1, 2, 1] + +Before: [1, 3, 0, 0] +1 0 2 3 +After: [1, 3, 0, 0] + +Before: [3, 1, 2, 3] +2 0 2 3 +After: [3, 1, 2, 1] + +Before: [2, 1, 1, 2] +11 2 1 2 +After: [2, 1, 2, 2] + +Before: [1, 3, 2, 3] +7 2 3 1 +After: [1, 0, 2, 3] + +Before: [0, 0, 0, 0] +8 0 0 3 +After: [0, 0, 0, 0] + +Before: [1, 0, 3, 1] +14 2 3 2 +After: [1, 0, 0, 1] + +Before: [3, 2, 0, 3] +14 0 2 3 +After: [3, 2, 0, 1] + +Before: [3, 2, 2, 1] +2 0 2 1 +After: [3, 1, 2, 1] + +Before: [2, 1, 2, 1] +3 0 3 0 +After: [1, 1, 2, 1] + +Before: [2, 2, 0, 1] +3 0 3 3 +After: [2, 2, 0, 1] + +Before: [0, 3, 3, 2] +8 0 0 0 +After: [0, 3, 3, 2] + +Before: [3, 2, 0, 1] +14 0 2 1 +After: [3, 1, 0, 1] + +Before: [1, 1, 1, 3] +9 1 0 1 +After: [1, 1, 1, 3] + +Before: [0, 1, 0, 1] +13 1 3 0 +After: [1, 1, 0, 1] + +Before: [1, 1, 1, 0] +9 1 0 1 +After: [1, 1, 1, 0] + +Before: [1, 3, 2, 2] +6 0 2 0 +After: [0, 3, 2, 2] + +Before: [2, 1, 1, 1] +14 3 1 0 +After: [0, 1, 1, 1] + +Before: [1, 1, 3, 0] +9 1 0 0 +After: [1, 1, 3, 0] + +Before: [2, 1, 3, 1] +3 0 3 2 +After: [2, 1, 1, 1] + +Before: [2, 1, 1, 1] +3 0 3 1 +After: [2, 1, 1, 1] + +Before: [3, 2, 1, 3] +7 1 3 3 +After: [3, 2, 1, 0] + +Before: [2, 0, 3, 3] +15 0 0 2 +After: [2, 0, 1, 3] + +Before: [3, 0, 2, 1] +10 3 2 2 +After: [3, 0, 1, 1] + +Before: [1, 1, 2, 3] +9 1 0 0 +After: [1, 1, 2, 3] + +Before: [1, 2, 1, 1] +5 2 1 0 +After: [2, 2, 1, 1] + +Before: [0, 1, 2, 3] +12 1 2 1 +After: [0, 0, 2, 3] + +Before: [1, 3, 0, 1] +1 0 2 3 +After: [1, 3, 0, 0] + +Before: [2, 1, 0, 1] +2 0 1 0 +After: [1, 1, 0, 1] + +Before: [3, 2, 2, 3] +2 0 2 1 +After: [3, 1, 2, 3] + +Before: [1, 2, 0, 1] +1 0 2 1 +After: [1, 0, 0, 1] + +Before: [1, 2, 2, 0] +6 0 2 0 +After: [0, 2, 2, 0] + +Before: [2, 1, 1, 2] +11 2 1 0 +After: [2, 1, 1, 2] + +Before: [3, 1, 1, 3] +7 1 3 2 +After: [3, 1, 0, 3] + +Before: [2, 2, 1, 3] +5 2 1 2 +After: [2, 2, 2, 3] + +Before: [3, 1, 1, 1] +11 2 1 1 +After: [3, 2, 1, 1] + +Before: [2, 1, 2, 2] +4 1 3 1 +After: [2, 0, 2, 2] + +Before: [1, 1, 2, 1] +12 1 2 0 +After: [0, 1, 2, 1] + +Before: [1, 1, 0, 2] +9 1 0 3 +After: [1, 1, 0, 1] + +Before: [3, 3, 2, 3] +2 0 2 0 +After: [1, 3, 2, 3] + +Before: [1, 1, 2, 3] +9 1 0 3 +After: [1, 1, 2, 1] + +Before: [2, 1, 2, 1] +12 1 2 0 +After: [0, 1, 2, 1] + +Before: [1, 1, 0, 2] +4 1 3 1 +After: [1, 0, 0, 2] + +Before: [1, 2, 2, 0] +6 0 2 3 +After: [1, 2, 2, 0] + +Before: [2, 1, 1, 0] +11 2 1 3 +After: [2, 1, 1, 2] + +Before: [1, 1, 0, 1] +13 1 3 3 +After: [1, 1, 0, 1] + +Before: [3, 1, 2, 3] +7 1 3 3 +After: [3, 1, 2, 0] + +Before: [0, 2, 1, 3] +8 0 0 0 +After: [0, 2, 1, 3] + +Before: [3, 2, 1, 3] +7 1 3 0 +After: [0, 2, 1, 3] + +Before: [1, 2, 2, 2] +6 0 2 3 +After: [1, 2, 2, 0] + +Before: [1, 1, 1, 1] +13 1 3 3 +After: [1, 1, 1, 1] + +Before: [2, 1, 3, 2] +15 2 2 1 +After: [2, 1, 3, 2] + +Before: [2, 1, 0, 3] +2 0 1 0 +After: [1, 1, 0, 3] + +Before: [1, 1, 2, 1] +12 1 2 2 +After: [1, 1, 0, 1] + +Before: [1, 1, 3, 2] +4 1 3 0 +After: [0, 1, 3, 2] + +Before: [2, 3, 2, 3] +7 2 3 2 +After: [2, 3, 0, 3] + +Before: [2, 2, 1, 1] +5 2 1 3 +After: [2, 2, 1, 2] + +Before: [0, 0, 2, 1] +10 3 2 0 +After: [1, 0, 2, 1] + +Before: [3, 1, 0, 3] +7 1 3 2 +After: [3, 1, 0, 3] + +Before: [2, 1, 3, 2] +2 0 1 1 +After: [2, 1, 3, 2] + +Before: [2, 3, 1, 1] +3 0 3 1 +After: [2, 1, 1, 1] + +Before: [2, 2, 1, 3] +7 1 3 3 +After: [2, 2, 1, 0] + +Before: [3, 3, 3, 1] +15 0 2 1 +After: [3, 1, 3, 1] + +Before: [0, 1, 1, 0] +11 2 1 1 +After: [0, 2, 1, 0] + +Before: [1, 1, 1, 0] +11 2 1 0 +After: [2, 1, 1, 0] + +Before: [3, 1, 3, 1] +13 1 3 3 +After: [3, 1, 3, 1] + +Before: [0, 1, 3, 2] +8 0 0 1 +After: [0, 0, 3, 2] + +Before: [2, 2, 0, 3] +7 1 3 3 +After: [2, 2, 0, 0] + +Before: [1, 0, 2, 1] +6 0 2 2 +After: [1, 0, 0, 1] + +Before: [1, 3, 0, 2] +0 3 3 3 +After: [1, 3, 0, 0] + +Before: [1, 1, 0, 1] +9 1 0 3 +After: [1, 1, 0, 1] + +Before: [1, 2, 2, 3] +7 1 3 1 +After: [1, 0, 2, 3] + +Before: [1, 1, 2, 2] +12 1 2 3 +After: [1, 1, 2, 0] + +Before: [1, 1, 2, 0] +12 1 2 3 +After: [1, 1, 2, 0] + +Before: [0, 1, 0, 2] +4 1 3 1 +After: [0, 0, 0, 2] + +Before: [1, 1, 1, 0] +9 1 0 0 +After: [1, 1, 1, 0] + +Before: [1, 1, 2, 0] +9 1 0 0 +After: [1, 1, 2, 0] + +Before: [1, 2, 1, 1] +5 2 1 3 +After: [1, 2, 1, 2] + +Before: [3, 0, 3, 2] +15 2 2 0 +After: [1, 0, 3, 2] + +Before: [2, 2, 1, 3] +7 2 3 3 +After: [2, 2, 1, 0] + +Before: [3, 1, 2, 2] +4 1 3 3 +After: [3, 1, 2, 0] + +Before: [3, 1, 2, 1] +15 0 0 1 +After: [3, 1, 2, 1] + +Before: [2, 3, 2, 1] +10 3 2 0 +After: [1, 3, 2, 1] + +Before: [2, 1, 2, 2] +0 3 3 1 +After: [2, 0, 2, 2] + +Before: [1, 2, 0, 2] +1 0 2 1 +After: [1, 0, 0, 2] + +Before: [3, 3, 2, 0] +2 0 2 0 +After: [1, 3, 2, 0] + +Before: [0, 1, 1, 2] +11 2 1 1 +After: [0, 2, 1, 2] + +Before: [3, 1, 2, 1] +13 1 3 1 +After: [3, 1, 2, 1] + +Before: [3, 1, 3, 3] +15 2 0 3 +After: [3, 1, 3, 1] + +Before: [0, 1, 0, 1] +8 0 0 3 +After: [0, 1, 0, 0] + +Before: [2, 3, 2, 1] +0 3 3 3 +After: [2, 3, 2, 0] + +Before: [2, 1, 1, 2] +4 1 3 2 +After: [2, 1, 0, 2] + +Before: [0, 1, 3, 1] +13 1 3 0 +After: [1, 1, 3, 1] + +Before: [2, 2, 1, 1] +5 2 1 0 +After: [2, 2, 1, 1] + +Before: [3, 1, 2, 0] +15 0 0 0 +After: [1, 1, 2, 0] + +Before: [1, 1, 1, 1] +9 1 0 0 +After: [1, 1, 1, 1] + +Before: [1, 1, 2, 2] +12 1 2 2 +After: [1, 1, 0, 2] + +Before: [1, 1, 2, 1] +10 3 2 0 +After: [1, 1, 2, 1] + +Before: [2, 0, 1, 1] +3 0 3 3 +After: [2, 0, 1, 1] diff --git a/2018/inputs/16_2.txt b/2018/inputs/16_2.txt new file mode 100644 index 0000000..6f6f812 --- /dev/null +++ b/2018/inputs/16_2.txt @@ -0,0 +1,1014 @@ +8 0 0 2 +5 2 2 2 +6 3 1 1 +8 0 0 3 +5 3 0 3 +9 2 3 1 +8 1 3 1 +8 1 2 1 +11 0 1 0 +10 0 0 1 +8 0 0 2 +5 2 3 2 +6 3 0 3 +8 2 0 0 +5 0 1 0 +12 3 2 0 +8 0 3 0 +11 1 0 1 +10 1 1 3 +6 1 2 0 +8 1 0 1 +5 1 0 1 +6 0 0 2 +5 0 1 1 +8 1 3 1 +11 3 1 3 +10 3 3 2 +6 3 0 3 +6 2 1 1 +4 3 1 0 +8 0 3 0 +11 0 2 2 +10 2 0 1 +8 1 0 0 +5 0 1 0 +8 3 0 2 +5 2 0 2 +6 2 1 3 +8 0 2 3 +8 3 3 3 +8 3 3 3 +11 3 1 1 +10 1 1 3 +6 3 3 2 +6 0 0 1 +8 0 2 0 +8 0 1 0 +8 0 1 0 +11 3 0 3 +10 3 0 0 +6 2 2 1 +6 1 0 3 +13 1 2 1 +8 1 2 1 +11 1 0 0 +10 0 3 2 +6 2 0 0 +6 3 1 1 +6 2 0 3 +9 0 3 1 +8 1 1 1 +8 1 3 1 +11 1 2 2 +10 2 0 0 +6 3 1 1 +6 2 1 2 +6 0 2 3 +7 3 2 1 +8 1 2 1 +8 1 2 1 +11 1 0 0 +10 0 3 3 +6 3 1 2 +6 1 2 0 +6 0 1 1 +6 2 1 1 +8 1 1 1 +11 3 1 3 +10 3 3 1 +6 2 0 3 +8 0 0 2 +5 2 0 2 +6 2 2 0 +15 0 3 0 +8 0 1 0 +8 0 2 0 +11 0 1 1 +10 1 0 0 +6 3 1 1 +6 0 0 3 +6 2 1 2 +7 3 2 2 +8 2 2 2 +11 2 0 0 +10 0 1 1 +6 1 0 3 +8 0 0 0 +5 0 2 0 +8 0 0 2 +5 2 0 2 +3 0 3 2 +8 2 3 2 +8 2 2 2 +11 1 2 1 +10 1 1 3 +8 2 0 2 +5 2 3 2 +6 3 2 0 +6 1 3 1 +8 1 2 2 +8 2 1 2 +11 2 3 3 +6 1 1 0 +8 1 0 2 +5 2 0 2 +6 2 0 0 +8 0 3 0 +11 3 0 3 +10 3 3 2 +6 2 1 0 +6 2 2 3 +6 0 1 1 +9 0 3 0 +8 0 1 0 +8 0 1 0 +11 0 2 2 +10 2 3 3 +6 3 1 1 +8 3 0 2 +5 2 1 2 +6 1 3 0 +5 0 1 0 +8 0 2 0 +11 0 3 3 +10 3 0 0 +6 1 3 3 +8 0 0 2 +5 2 0 2 +6 0 1 1 +5 3 1 2 +8 2 2 2 +11 0 2 0 +10 0 2 3 +6 2 1 1 +6 2 0 2 +6 3 3 0 +13 1 0 1 +8 1 2 1 +11 1 3 3 +10 3 2 2 +6 1 1 3 +6 0 2 1 +6 0 2 0 +5 3 1 3 +8 3 2 3 +11 2 3 2 +10 2 3 3 +6 1 3 0 +6 0 0 2 +6 3 1 1 +8 0 2 1 +8 1 3 1 +11 3 1 3 +10 3 0 1 +6 2 2 0 +6 2 1 3 +6 3 3 2 +9 0 3 2 +8 2 2 2 +8 2 3 2 +11 2 1 1 +10 1 3 3 +6 0 3 2 +8 2 0 1 +5 1 3 1 +2 0 1 1 +8 1 1 1 +11 1 3 3 +10 3 3 2 +6 3 0 1 +6 1 1 3 +3 0 3 1 +8 1 3 1 +11 2 1 2 +10 2 1 0 +6 2 1 1 +6 1 3 2 +6 2 0 3 +9 1 3 3 +8 3 3 3 +11 3 0 0 +10 0 3 2 +6 2 3 0 +6 1 0 3 +3 0 3 3 +8 3 2 3 +11 2 3 2 +10 2 2 1 +6 1 2 3 +6 2 3 2 +3 0 3 2 +8 2 1 2 +8 2 2 2 +11 2 1 1 +10 1 0 2 +6 3 2 1 +6 3 3 0 +11 3 3 1 +8 1 2 1 +8 1 2 1 +11 2 1 2 +6 2 1 1 +13 1 0 0 +8 0 3 0 +8 0 1 0 +11 0 2 2 +10 2 1 3 +8 1 0 0 +5 0 1 0 +6 0 0 2 +8 0 2 0 +8 0 3 0 +8 0 2 0 +11 3 0 3 +10 3 3 1 +6 3 3 2 +6 2 1 0 +6 2 2 3 +15 0 3 3 +8 3 2 3 +11 3 1 1 +10 1 3 2 +6 3 1 1 +8 2 0 3 +5 3 0 3 +4 1 0 1 +8 1 2 1 +11 2 1 2 +10 2 0 1 +6 3 1 2 +6 1 1 3 +6 1 0 0 +8 3 2 3 +8 3 2 3 +11 1 3 1 +10 1 2 3 +6 2 1 1 +6 2 1 2 +10 0 2 2 +8 2 1 2 +11 3 2 3 +6 0 0 1 +6 2 1 2 +10 0 2 0 +8 0 3 0 +11 3 0 3 +10 3 1 2 +8 2 0 3 +5 3 0 3 +6 1 1 0 +11 0 0 3 +8 3 2 3 +11 3 2 2 +10 2 3 3 +6 2 1 1 +6 3 2 2 +6 2 2 0 +0 0 2 0 +8 0 1 0 +11 0 3 3 +10 3 3 2 +6 2 1 3 +6 2 0 0 +6 3 0 1 +15 0 3 3 +8 3 1 3 +8 3 3 3 +11 3 2 2 +10 2 3 1 +8 1 0 0 +5 0 1 0 +6 3 3 2 +8 0 0 3 +5 3 1 3 +8 0 2 3 +8 3 1 3 +11 3 1 1 +10 1 1 3 +6 0 0 1 +6 2 1 2 +10 0 2 1 +8 1 2 1 +11 1 3 3 +10 3 2 0 +8 0 0 2 +5 2 0 2 +6 3 2 3 +6 3 3 1 +12 3 2 1 +8 1 1 1 +11 1 0 0 +10 0 0 3 +6 3 2 1 +6 2 2 0 +6 3 3 2 +0 0 2 0 +8 0 3 0 +8 0 1 0 +11 0 3 3 +10 3 3 2 +6 1 3 1 +8 1 0 3 +5 3 2 3 +8 0 0 0 +5 0 2 0 +1 1 3 0 +8 0 1 0 +11 2 0 2 +6 3 1 1 +6 2 0 0 +4 1 0 1 +8 1 2 1 +11 2 1 2 +10 2 1 1 +6 3 0 2 +6 1 2 3 +3 0 3 0 +8 0 1 0 +11 0 1 1 +8 3 0 2 +5 2 2 2 +6 2 0 3 +8 2 0 0 +5 0 3 0 +2 2 0 2 +8 2 1 2 +11 1 2 1 +10 1 2 0 +6 3 0 1 +8 0 0 2 +5 2 0 2 +14 2 3 1 +8 1 2 1 +11 1 0 0 +10 0 2 3 +6 3 3 2 +6 1 3 0 +8 3 0 1 +5 1 1 1 +11 1 0 2 +8 2 3 2 +8 2 3 2 +11 3 2 3 +10 3 3 1 +6 2 2 2 +6 0 2 3 +7 3 2 0 +8 0 2 0 +8 0 2 0 +11 1 0 1 +10 1 2 3 +6 3 2 0 +8 2 0 2 +5 2 0 2 +8 1 0 1 +5 1 3 1 +0 2 0 0 +8 0 3 0 +11 0 3 3 +10 3 2 1 +6 1 1 0 +8 3 0 3 +5 3 0 3 +6 1 1 2 +6 3 0 2 +8 2 2 2 +11 2 1 1 +10 1 3 2 +8 3 0 1 +5 1 1 1 +6 3 1 3 +11 0 0 1 +8 1 1 1 +11 1 2 2 +10 2 1 1 +6 1 2 2 +6 3 2 0 +6 2 1 3 +12 0 2 0 +8 0 3 0 +11 1 0 1 +10 1 1 2 +6 2 3 0 +8 2 0 3 +5 3 1 3 +6 3 1 1 +5 3 1 3 +8 3 2 3 +11 2 3 2 +6 0 3 3 +6 3 0 0 +8 2 0 1 +5 1 2 1 +13 1 0 0 +8 0 1 0 +11 0 2 2 +10 2 3 1 +6 2 1 2 +6 1 2 3 +6 3 0 0 +2 2 0 3 +8 3 3 3 +11 1 3 1 +10 1 2 3 +6 1 3 0 +6 3 0 1 +5 0 1 1 +8 1 2 1 +11 1 3 3 +10 3 3 2 +6 1 3 3 +8 0 0 1 +5 1 0 1 +8 1 0 0 +5 0 2 0 +3 0 3 1 +8 1 2 1 +11 2 1 2 +6 1 1 0 +6 0 2 1 +8 3 0 3 +5 3 2 3 +5 0 1 0 +8 0 3 0 +8 0 2 0 +11 0 2 2 +6 1 0 1 +6 2 1 0 +15 0 3 3 +8 3 3 3 +11 3 2 2 +6 0 2 1 +6 2 3 3 +6 3 3 0 +4 0 3 1 +8 1 2 1 +11 2 1 2 +6 0 1 3 +8 0 0 0 +5 0 2 0 +8 3 0 1 +5 1 2 1 +6 3 0 0 +8 0 2 0 +8 0 3 0 +11 0 2 2 +10 2 1 3 +8 2 0 2 +5 2 3 2 +6 1 1 1 +6 2 3 0 +1 1 0 2 +8 2 3 2 +11 3 2 3 +10 3 0 0 +6 0 3 3 +8 3 0 1 +5 1 0 1 +6 2 0 2 +7 3 2 2 +8 2 2 2 +11 0 2 0 +10 0 0 3 +6 2 3 1 +8 3 0 2 +5 2 0 2 +6 3 3 0 +13 1 0 2 +8 2 3 2 +8 2 3 2 +11 3 2 3 +8 3 0 2 +5 2 2 2 +2 2 0 1 +8 1 3 1 +11 3 1 3 +10 3 2 2 +6 1 3 3 +6 3 3 1 +6 2 0 0 +3 0 3 3 +8 3 3 3 +11 3 2 2 +10 2 2 0 +6 1 1 1 +6 2 1 3 +8 2 0 2 +5 2 0 2 +14 2 3 2 +8 2 2 2 +8 2 3 2 +11 2 0 0 +10 0 1 3 +6 3 0 1 +6 3 2 2 +6 2 0 0 +6 2 1 0 +8 0 2 0 +11 3 0 3 +10 3 0 1 +6 0 1 3 +6 2 3 2 +8 3 0 0 +5 0 0 0 +7 3 2 3 +8 3 3 3 +8 3 2 3 +11 1 3 1 +10 1 1 2 +6 2 0 0 +8 0 0 3 +5 3 1 3 +6 1 1 1 +1 3 0 1 +8 1 2 1 +11 1 2 2 +10 2 2 3 +6 0 2 1 +6 3 1 0 +6 2 2 2 +2 2 0 1 +8 1 3 1 +8 1 1 1 +11 1 3 3 +10 3 1 2 +6 1 0 1 +6 2 2 3 +1 1 3 0 +8 0 2 0 +8 0 3 0 +11 2 0 2 +10 2 3 1 +6 2 0 0 +6 2 0 2 +15 0 3 3 +8 3 1 3 +11 3 1 1 +10 1 0 3 +6 3 0 2 +6 1 3 1 +0 0 2 2 +8 2 3 2 +11 3 2 3 +10 3 3 0 +6 1 2 3 +6 3 1 1 +6 0 0 2 +12 1 2 3 +8 3 3 3 +8 3 3 3 +11 3 0 0 +10 0 3 1 +8 1 0 0 +5 0 2 0 +8 1 0 2 +5 2 2 2 +6 0 2 3 +7 3 2 2 +8 2 2 2 +11 2 1 1 +10 1 2 3 +6 2 3 1 +6 3 1 2 +13 1 2 0 +8 0 3 0 +11 0 3 3 +10 3 1 1 +6 1 2 3 +6 3 1 0 +8 3 2 0 +8 0 1 0 +11 1 0 1 +6 1 3 0 +6 2 2 2 +6 3 0 3 +10 0 2 0 +8 0 1 0 +11 0 1 1 +6 3 0 0 +2 2 0 3 +8 3 1 3 +11 3 1 1 +10 1 2 3 +6 1 2 2 +8 1 0 1 +5 1 1 1 +6 2 2 0 +1 1 0 0 +8 0 3 0 +11 3 0 3 +10 3 1 0 +6 2 0 3 +6 2 0 2 +1 1 3 3 +8 3 1 3 +11 3 0 0 +10 0 0 3 +6 3 2 1 +8 3 0 0 +5 0 2 0 +6 3 2 2 +0 0 2 2 +8 2 1 2 +11 3 2 3 +10 3 3 0 +8 0 0 3 +5 3 0 3 +6 1 3 1 +6 2 2 2 +7 3 2 3 +8 3 1 3 +8 3 3 3 +11 0 3 0 +10 0 0 3 +6 3 2 2 +6 2 1 0 +0 0 2 1 +8 1 3 1 +8 1 2 1 +11 1 3 3 +8 1 0 2 +5 2 2 2 +6 3 1 0 +6 3 3 1 +2 2 1 1 +8 1 1 1 +11 3 1 3 +10 3 1 1 +6 3 2 3 +6 2 0 0 +6 3 0 2 +13 0 2 3 +8 3 3 3 +8 3 1 3 +11 3 1 1 +10 1 2 3 +8 2 0 0 +5 0 1 0 +8 3 0 2 +5 2 2 2 +8 0 0 1 +5 1 0 1 +11 0 0 1 +8 1 2 1 +11 3 1 3 +10 3 3 0 +6 0 1 3 +6 3 3 1 +6 3 1 2 +14 3 2 3 +8 3 3 3 +11 0 3 0 +10 0 2 3 +6 1 0 1 +6 1 0 0 +6 2 3 2 +10 0 2 1 +8 1 1 1 +8 1 2 1 +11 1 3 3 +6 1 1 2 +6 0 3 1 +5 0 1 2 +8 2 3 2 +11 3 2 3 +10 3 2 1 +8 3 0 3 +5 3 2 3 +8 1 0 0 +5 0 2 0 +6 3 3 2 +0 0 2 3 +8 3 2 3 +8 3 1 3 +11 3 1 1 +10 1 2 0 +6 1 3 3 +8 3 0 2 +5 2 1 2 +6 0 1 1 +5 3 1 3 +8 3 1 3 +11 0 3 0 +10 0 3 1 +6 1 3 0 +6 0 3 3 +8 1 0 2 +5 2 2 2 +7 3 2 3 +8 3 2 3 +11 3 1 1 +6 0 0 2 +6 2 3 3 +6 0 3 0 +14 2 3 0 +8 0 1 0 +8 0 1 0 +11 0 1 1 +10 1 0 3 +6 3 0 2 +6 2 2 0 +6 2 0 1 +13 0 2 1 +8 1 3 1 +8 1 1 1 +11 3 1 3 +10 3 2 1 +6 3 1 3 +6 1 2 0 +8 0 2 2 +8 2 3 2 +11 1 2 1 +6 1 0 3 +6 3 3 2 +11 0 0 2 +8 2 2 2 +11 1 2 1 +10 1 2 3 +6 0 3 0 +8 1 0 2 +5 2 2 2 +6 3 2 1 +2 2 1 2 +8 2 1 2 +11 3 2 3 +6 0 0 2 +6 1 3 1 +8 1 2 0 +8 0 3 0 +8 0 2 0 +11 0 3 3 +10 3 2 2 +6 2 2 0 +6 1 2 3 +3 0 3 0 +8 0 2 0 +11 2 0 2 +10 2 3 3 +6 0 0 1 +6 2 0 0 +6 3 3 2 +0 0 2 2 +8 2 1 2 +8 2 1 2 +11 2 3 3 +10 3 1 0 +6 2 3 1 +6 2 3 3 +8 3 0 2 +5 2 0 2 +14 2 3 2 +8 2 3 2 +11 2 0 0 +10 0 0 1 +8 2 0 2 +5 2 0 2 +6 1 0 0 +1 0 3 3 +8 3 2 3 +8 3 2 3 +11 1 3 1 +6 2 2 0 +6 2 0 3 +6 1 3 2 +15 0 3 0 +8 0 2 0 +11 1 0 1 +10 1 2 0 +6 3 0 1 +6 0 3 2 +6 1 1 3 +12 1 2 1 +8 1 1 1 +11 1 0 0 +10 0 1 2 +6 3 1 1 +6 3 1 0 +5 3 1 3 +8 3 3 3 +11 2 3 2 +10 2 1 0 +6 0 2 3 +6 2 3 2 +8 1 0 1 +5 1 0 1 +7 3 2 3 +8 3 1 3 +8 3 1 3 +11 3 0 0 +6 2 1 1 +6 3 0 2 +6 0 1 3 +14 3 2 2 +8 2 2 2 +11 2 0 0 +8 2 0 2 +5 2 0 2 +6 1 1 3 +6 2 3 1 +8 1 3 1 +11 0 1 0 +10 0 0 1 +6 2 1 0 +6 3 1 2 +1 3 0 0 +8 0 2 0 +11 0 1 1 +10 1 3 0 +6 0 3 3 +6 1 1 1 +14 3 2 1 +8 1 2 1 +11 0 1 0 +10 0 3 2 +6 2 3 1 +6 2 0 0 +6 1 1 3 +1 3 0 0 +8 0 1 0 +11 0 2 2 +10 2 0 1 +6 0 2 2 +6 2 0 3 +6 2 1 0 +15 0 3 3 +8 3 2 3 +8 3 3 3 +11 1 3 1 +6 3 0 0 +8 0 0 3 +5 3 1 3 +11 3 3 3 +8 3 1 3 +8 3 1 3 +11 3 1 1 +10 1 3 3 +6 2 0 0 +6 3 0 2 +8 0 0 1 +5 1 2 1 +0 0 2 1 +8 1 1 1 +8 1 1 1 +11 1 3 3 +10 3 1 2 +6 2 0 1 +6 2 3 3 +15 0 3 1 +8 1 1 1 +8 1 1 1 +11 1 2 2 +10 2 1 0 +6 0 2 3 +6 3 3 1 +6 2 1 2 +7 3 2 3 +8 3 3 3 +11 3 0 0 +10 0 0 2 +6 2 3 0 +6 0 0 3 +2 0 1 3 +8 3 3 3 +11 2 3 2 +10 2 2 3 +6 1 0 2 +6 1 0 1 +1 1 0 1 +8 1 1 1 +11 3 1 3 +8 1 0 1 +5 1 3 1 +2 0 1 1 +8 1 3 1 +11 3 1 3 +10 3 0 2 +6 2 2 3 +8 2 0 1 +5 1 3 1 +15 0 3 1 +8 1 1 1 +8 1 1 1 +11 2 1 2 +10 2 3 0 +6 3 0 1 +6 1 0 3 +6 2 1 2 +2 2 1 2 +8 2 2 2 +8 2 3 2 +11 0 2 0 +10 0 0 1 +6 1 0 0 +6 2 2 2 +10 0 2 2 +8 2 1 2 +11 1 2 1 +10 1 2 0 +6 3 1 1 +6 2 0 3 +6 2 0 2 +9 2 3 2 +8 2 1 2 +11 0 2 0 +10 0 2 2 +6 1 1 3 +6 0 2 1 +8 0 0 0 +5 0 1 0 +5 3 1 3 +8 3 2 3 +11 3 2 2 +10 2 0 1 +6 1 2 2 +6 2 1 3 +1 0 3 2 +8 2 2 2 +11 2 1 1 +6 3 3 2 +6 2 3 0 +15 0 3 2 +8 2 2 2 +11 2 1 1 +10 1 2 0 +6 2 1 1 +6 3 3 2 +9 1 3 3 +8 3 3 3 +11 0 3 0 +10 0 2 1 +6 0 0 2 +6 2 0 0 +6 1 1 3 +1 3 0 2 +8 2 1 2 +8 2 1 2 +11 2 1 1 +10 1 0 0 +6 2 2 1 +6 0 0 3 +6 3 2 2 +13 1 2 2 +8 2 3 2 +11 0 2 0 +10 0 0 2 +6 2 2 3 +8 2 0 0 +5 0 0 0 +6 3 1 1 +6 3 0 0 +8 0 3 0 +11 0 2 2 +10 2 0 1 +6 0 1 2 +6 3 2 0 +6 0 1 3 +12 0 2 3 +8 3 1 3 +8 3 2 3 +11 3 1 1 +10 1 3 2 +6 2 2 1 +6 2 3 0 +6 3 2 3 +4 3 1 1 +8 1 2 1 +11 2 1 2 +10 2 0 0 +8 3 0 3 +5 3 1 3 +6 1 1 1 +6 3 3 2 +8 3 2 3 +8 3 2 3 +11 0 3 0 +6 2 3 2 +6 2 0 1 +6 2 0 3 +9 1 3 3 +8 3 1 3 +11 0 3 0 +10 0 1 2 +6 1 3 3 +6 2 2 0 +11 3 3 3 +8 3 2 3 +11 2 3 2 +6 2 0 3 +6 3 1 1 +15 0 3 0 +8 0 2 0 +8 0 2 0 +11 2 0 2 +10 2 2 3 +8 2 0 0 +5 0 1 0 +8 3 0 1 +5 1 1 1 +6 0 0 2 +8 1 2 2 +8 2 2 2 +8 2 1 2 +11 3 2 3 +10 3 2 0 diff --git a/2018/inputs/17.txt b/2018/inputs/17.txt new file mode 100644 index 0000000..1e2ccdd --- /dev/null +++ b/2018/inputs/17.txt @@ -0,0 +1,1713 @@ +y=1181, x=576..579 +y=434, x=498..503 +x=647, y=653..675 +y=1204, x=593..595 +y=268, x=475..498 +x=599, y=619..638 +y=1130, x=452..478 +x=439, y=1365..1377 +y=652, x=589..595 +y=1552, x=560..577 +x=439, y=852..867 +x=605, y=292..298 +x=489, y=709..718 +x=567, y=1087..1097 +y=1774, x=631..634 +x=649, y=592..612 +x=610, y=533..555 +x=564, y=996..1008 +x=651, y=416..441 +y=1106, x=502..519 +y=1015, x=479..487 +x=572, y=25..35 +x=630, y=849..865 +x=573, y=884..897 +x=614, y=667..688 +x=464, y=1542..1567 +x=645, y=258..270 +y=1029, x=656..662 +y=1502, x=483..511 +x=589, y=1553..1555 +x=535, y=1792..1795 +x=469, y=166..193 +x=484, y=1117..1142 +x=655, y=1277..1295 +x=598, y=162..170 +y=620, x=430..455 +x=665, y=1205..1212 +x=501, y=1347..1364 +x=661, y=664..684 +x=583, y=131..142 +x=542, y=722..727 +x=475, y=748..761 +x=602, y=1386..1393 +x=578, y=1651..1662 +y=1711, x=598..603 +y=164, x=642..660 +x=488, y=1176..1183 +x=644, y=207..221 +x=654, y=1678..1691 +y=1673, x=448..454 +x=630, y=1299..1312 +y=695, x=472..474 +x=465, y=1022..1045 +x=645, y=1216..1243 +x=623, y=423..437 +x=625, y=200..219 +x=565, y=1153..1166 +x=490, y=1510..1519 +x=553, y=941..947 +x=634, y=1101..1126 +x=515, y=111..113 +y=1146, x=427..438 +y=1096, x=451..460 +x=464, y=1339..1346 +x=612, y=1383..1396 +y=500, x=516..532 +x=555, y=941..947 +x=528, y=1243..1270 +x=646, y=1136..1146 +y=887, x=470..484 +x=617, y=316..343 +x=575, y=1060..1069 +y=1047, x=443..455 +y=1120, x=527..580 +x=514, y=126..135 +y=292, x=484..500 +x=556, y=75..91 +y=646, x=494..518 +x=644, y=552..568 +x=509, y=8..17 +y=735, x=591..614 +x=586, y=1215..1228 +y=1335, x=443..465 +y=495, x=522..526 +x=610, y=864..867 +y=221, x=639..644 +y=1346, x=464..469 +x=489, y=967..983 +x=602, y=1277..1289 +x=620, y=1348..1375 +x=575, y=1736..1744 +x=629, y=462..466 +y=270, x=645..652 +x=518, y=1244..1270 +x=576, y=1151..1162 +x=483, y=970..973 +y=1349, x=606..610 +y=1335, x=634..655 +y=1671, x=650..657 +x=619, y=243..265 +x=585, y=558..563 +x=536, y=1876..1887 +x=652, y=551..559 +x=593, y=1256..1268 +x=440, y=1480..1496 +y=1401, x=520..541 +x=624, y=1297..1306 +x=501, y=1510..1528 +x=587, y=567..575 +y=1470, x=560..580 +y=776, x=519..523 +x=601, y=981..983 +x=516, y=655..666 +y=1803, x=573..578 +x=504, y=1654..1677 +y=1931, x=537..667 +x=540, y=145..163 +x=616, y=204..210 +x=473, y=1856..1859 +x=547, y=241..259 +x=664, y=932..939 +x=475, y=306..316 +y=1572, x=622..628 +x=641, y=985..1001 +x=527, y=1572..1575 +x=447, y=1116..1124 +x=595, y=650..652 +y=1326, x=616..619 +x=626, y=822..835 +x=583, y=1063..1075 +x=576, y=1212..1222 +y=1206, x=486..495 +x=602, y=1885..1910 +x=460, y=1781..1805 +y=996, x=521..527 +x=591, y=1083..1103 +x=569, y=1563..1574 +y=785, x=560..579 +y=857, x=522..524 +x=599, y=804..805 +x=651, y=1724..1736 +y=637, x=449..467 +x=455, y=815..842 +x=476, y=1327..1345 +y=1533, x=615..624 +y=1268, x=633..655 +x=653, y=295..299 +x=522, y=388..415 +y=1365, x=462..487 +y=1430, x=428..438 +x=487, y=488..499 +y=1150, x=599..608 +x=559, y=1922..1927 +x=664, y=170..193 +y=1531, x=441..444 +y=1315, x=600..604 +x=603, y=1541..1543 +x=664, y=1401..1420 +x=580, y=322..345 +x=449, y=627..637 +y=1749, x=497..511 +x=577, y=1060..1069 +y=289, x=492..494 +x=443, y=1330..1335 +x=487, y=405..416 +x=603, y=18..33 +y=1312, x=612..630 +x=605, y=625..633 +x=546, y=1230..1232 +x=553, y=1126..1142 +x=441, y=936..943 +y=1715, x=544..641 +y=1693, x=594..596 +x=649, y=1151..1170 +x=490, y=405..416 +x=602, y=1602..1623 +y=142, x=580..583 +x=574, y=646..660 +y=789, x=479..485 +y=1093, x=640..655 +y=1200, x=501..508 +y=225, x=557..572 +x=591, y=727..735 +x=515, y=1653..1665 +x=467, y=489..499 +y=193, x=459..469 +x=593, y=1143..1162 +x=461, y=489..493 +x=547, y=198..217 +x=522, y=61..73 +x=626, y=1767..1779 +y=446, x=437..448 +y=840, x=443..451 +x=496, y=597..601 +x=650, y=1004..1013 +x=429, y=936..943 +x=557, y=812..822 +x=542, y=1633..1635 +x=469, y=1607..1615 +y=1654, x=624..626 +x=504, y=787..798 +x=569, y=1868..1875 +y=902, x=641..644 +y=1170, x=649..651 +x=606, y=532..555 +x=493, y=1509..1528 +x=452, y=1410..1425 +x=535, y=468..480 +x=599, y=1150..1158 +y=1486, x=429..437 +y=415, x=518..522 +x=511, y=1490..1502 +x=634, y=1765..1774 +x=539, y=869..879 +x=470, y=1413..1418 +x=516, y=1641..1648 +y=598, x=432..434 +x=494, y=807..818 +x=477, y=1875..1898 +x=577, y=77..98 +x=477, y=324..337 +x=451, y=1510..1535 +x=590, y=838..849 +x=565, y=1872..1898 +x=516, y=825..831 +x=541, y=869..879 +y=695, x=427..444 +x=437, y=1166..1194 +x=593, y=1279..1292 +x=518, y=469..480 +x=532, y=1851..1861 +y=1861, x=532..536 +y=1485, x=636..652 +y=1887, x=493..496 +x=436, y=749..766 +y=1268, x=593..610 +y=1145, x=512..520 +y=334, x=482..485 +y=1351, x=553..565 +x=491, y=1547..1556 +y=1908, x=530..549 +y=521, x=607..634 +x=602, y=1687..1698 +x=631, y=1725..1736 +y=1792, x=432..456 +x=530, y=1572..1575 +x=584, y=1154..1166 +x=620, y=1286..1292 +x=537, y=1918..1931 +x=608, y=1474..1489 +x=461, y=989..1006 +x=477, y=1672..1678 +y=1287, x=492..495 +y=1318, x=532..554 +x=463, y=12..30 +x=628, y=595..608 +x=560, y=778..785 +y=1624, x=472..480 +y=673, x=486..489 +x=475, y=1241..1254 +y=1479, x=472..485 +x=458, y=468..477 +y=1298, x=494..497 +x=641, y=1437..1447 +y=973, x=464..483 +y=1695, x=594..596 +x=460, y=1084..1096 +x=613, y=293..298 +x=503, y=1548..1556 +x=574, y=915..931 +y=25, x=482..501 +x=637, y=529..549 +x=441, y=1440..1453 +y=91, x=556..567 +x=432, y=1695..1711 +y=1375, x=620..644 +y=1912, x=553..556 +y=413, x=595..598 +x=584, y=1257..1281 +y=131, x=551..556 +x=493, y=573..576 +x=551, y=860..864 +x=469, y=79..91 +x=462, y=1144..1150 +x=513, y=812..814 +y=1789, x=582..607 +y=1246, x=590..592 +x=544, y=1703..1715 +y=677, x=480..496 +x=432, y=588..598 +x=566, y=556..559 +y=1926, x=511..515 +y=592, x=455..478 +x=610, y=1647..1659 +x=651, y=213..238 +y=1622, x=543..565 +x=451, y=90..104 +x=576, y=1174..1181 +y=1243, x=645..651 +x=553, y=1343..1351 +x=572, y=201..225 +x=648, y=947..970 +x=581, y=444..462 +x=459, y=36..59 +x=642, y=147..164 +x=561, y=1634..1635 +x=593, y=697..707 +x=557, y=200..225 +y=1077, x=457..461 +y=1429, x=600..626 +x=631, y=781..785 +x=565, y=1343..1351 +x=651, y=891..905 +x=445, y=1827..1843 +y=1711, x=432..460 +x=491, y=1819..1821 +x=558, y=725..730 +x=434, y=991..1012 +x=634, y=434..442 +x=452, y=527..540 +x=618, y=1479..1484 +x=644, y=621..626 +x=533, y=1526..1544 +y=831, x=490..516 +y=466, x=629..649 +y=1228, x=568..586 +x=567, y=1062..1075 +x=640, y=1747..1758 +x=579, y=777..785 +x=549, y=812..822 +y=1732, x=638..640 +y=490, x=576..594 +x=516, y=1495..1518 +x=620, y=1297..1306 +y=254, x=460..468 +x=475, y=254..268 +x=482, y=12..25 +y=1183, x=468..488 +x=587, y=666..675 +y=68, x=479..500 +x=524, y=1789..1801 +x=613, y=1046..1058 +x=580, y=567..575 +y=879, x=539..541 +x=448, y=533..537 +x=658, y=1363..1375 +y=410, x=427..438 +y=176, x=501..504 +x=491, y=783..794 +x=570, y=351..373 +y=259, x=521..547 +y=480, x=518..535 +y=633, x=605..607 +x=523, y=767..776 +y=898, x=552..556 +x=606, y=1340..1349 +x=494, y=631..646 +x=496, y=1688..1695 +y=821, x=634..642 +y=1393, x=602..605 +x=443, y=1175..1177 +x=531, y=851..861 +y=582, x=442..546 +y=864, x=551..570 +x=562, y=996..1008 +y=575, x=580..587 +x=529, y=1763..1775 +y=40, x=502..506 +y=73, x=522..529 +y=798, x=504..526 +y=628, x=513..529 +x=520, y=1657..1662 +y=1648, x=516..536 +y=1142, x=484..495 +x=492, y=302..315 +x=586, y=1176..1187 +y=512, x=516..518 +y=218, x=502..504 +y=515, x=516..518 +x=516, y=512..515 +x=444, y=690..695 +y=626, x=624..644 +x=637, y=1276..1295 +y=1370, x=592..595 +y=1860, x=609..620 +x=620, y=900..915 +x=614, y=727..735 +x=437, y=1464..1486 +y=1254, x=457..475 +y=910, x=583..585 +y=294, x=429..436 +y=398, x=481..501 +x=642, y=1768..1779 +y=1845, x=500..524 +y=1898, x=561..565 +y=712, x=571..573 +y=735, x=489..491 +y=887, x=586..589 +y=1518, x=516..521 +x=466, y=551..560 +x=472, y=1613..1624 +x=561, y=701..715 +y=33, x=599..603 +x=538, y=896..908 +x=568, y=1456..1464 +y=559, x=566..568 +x=515, y=328..356 +x=662, y=1020..1029 +x=624, y=355..377 +x=480, y=1612..1624 +y=1139, x=570..574 +y=1795, x=530..535 +x=516, y=490..500 +x=462, y=1830..1837 +x=437, y=202..223 +x=661, y=1504..1509 +x=451, y=470..481 +x=515, y=1836..1840 +x=633, y=189..191 +x=467, y=708..718 +x=528, y=900..902 +x=497, y=232..241 +x=588, y=1686..1698 +y=1306, x=620..624 +x=480, y=667..677 +x=493, y=9..21 +y=1416, x=490..515 +x=624, y=1507..1533 +x=436, y=290..294 +y=708, x=571..573 +x=462, y=601..615 +y=595, x=628..638 +y=1205, x=621..626 +x=582, y=1130..1142 +x=487, y=1000..1015 +x=651, y=1695..1703 +x=544, y=891..902 +x=459, y=165..193 +x=549, y=1897..1908 +y=1484, x=616..618 +x=556, y=1887..1912 +y=1868, x=462..480 +x=621, y=1177..1205 +x=561, y=1873..1898 +x=624, y=1475..1489 +y=1377, x=439..451 +y=943, x=429..441 +y=1553, x=610..615 +x=509, y=1048..1074 +x=483, y=915..928 +x=480, y=606..608 +x=580, y=1027..1043 +x=630, y=978..996 +x=516, y=1875..1887 +x=501, y=1190..1200 +y=377, x=624..632 +y=481, x=451..470 +y=555, x=606..610 +x=445, y=1542..1567 +x=514, y=1231..1233 +x=572, y=62..72 +y=1097, x=548..567 +x=593, y=1784..1786 +x=556, y=29..31 +x=514, y=34..44 +x=651, y=29..31 +x=601, y=1342..1352 +x=439, y=177..182 +x=522, y=853..857 +x=638, y=110..114 +y=1166, x=565..584 +x=549, y=447..457 +x=508, y=1896..1898 +x=525, y=1763..1775 +x=572, y=350..373 +x=583, y=273..301 +x=496, y=148..158 +x=427, y=690..695 +x=506, y=449..461 +x=622, y=592..612 +x=492, y=497..521 +x=554, y=962..972 +x=543, y=827..840 +y=91, x=469..487 +x=446, y=614..616 +x=477, y=453..456 +x=501, y=366..376 +y=487, x=564..568 +x=495, y=1188..1206 +x=530, y=1896..1908 +x=436, y=123..147 +x=471, y=1856..1859 +x=486, y=664..673 +y=770, x=573..583 +x=565, y=1403..1411 +x=599, y=18..33 +y=1599, x=556..577 +y=1411, x=565..567 +x=541, y=986..1012 +x=601, y=1083..1103 +y=1825, x=486..502 +y=1695, x=480..496 +x=440, y=122..147 +x=476, y=364..376 +y=409, x=449..463 +x=446, y=1143..1150 +x=536, y=1614..1619 +y=290, x=510..514 +y=600, x=454..459 +y=1837, x=562..579 +x=462, y=1851..1868 +x=544, y=278..297 +y=902, x=544..563 +x=580, y=1438..1447 +x=546, y=570..582 +x=644, y=1874..1875 +x=447, y=306..316 +x=556, y=277..297 +x=626, y=424..437 +y=806, x=549..557 +x=596, y=1693..1695 +y=936, x=444..451 +y=1156, x=486..510 +y=1567, x=445..464 +y=779, x=514..530 +x=536, y=1851..1861 +y=992, x=504..509 +x=535, y=329..356 +y=814, x=513..519 +y=210, x=604..616 +x=491, y=731..735 +x=558, y=1084..1093 +y=352, x=642..648 +x=425, y=591..601 +x=634, y=1586..1603 +x=554, y=599..608 +x=605, y=397..419 +x=514, y=267..290 +y=263, x=554..568 +x=473, y=911..937 +y=897, x=573..579 +x=595, y=1401..1409 +x=613, y=367..370 +y=1535, x=433..451 +x=573, y=767..770 +x=665, y=41..45 +y=1093, x=558..561 +x=454, y=1666..1673 +x=495, y=1662..1672 +x=566, y=220..222 +x=492, y=1268..1287 +x=534, y=808..818 +x=480, y=1852..1868 +y=282, x=590..616 +x=502, y=218..221 +y=1187, x=566..586 +x=598, y=317..343 +x=562, y=1833..1837 +x=499, y=470..481 +y=113, x=456..478 +y=1703, x=649..651 +x=454, y=598..600 +x=474, y=1058..1074 +x=498, y=434..436 +y=1680, x=481..483 +x=662, y=851..868 +y=987, x=563..565 +y=299, x=653..660 +y=1590, x=617..625 +y=608, x=476..480 +x=538, y=527..540 +y=246, x=488..504 +x=455, y=611..620 +x=490, y=345..356 +x=566, y=602..604 +y=1603, x=634..650 +x=608, y=1150..1158 +x=454, y=363..376 +y=1679, x=596..623 +x=483, y=1569..1571 +x=554, y=1309..1318 +x=660, y=146..164 +x=442, y=752..755 +x=514, y=850..861 +y=1142, x=531..553 +y=1509, x=653..661 +x=509, y=1836..1840 +x=604, y=1301..1315 +x=488, y=426..440 +x=475, y=1733..1758 +x=543, y=41..67 +x=527, y=1107..1120 +y=660, x=574..577 +x=502, y=1081..1106 +x=469, y=1428..1434 +y=564, x=488..492 +x=430, y=1435..1455 +x=547, y=919..929 +x=641, y=1560..1563 +x=480, y=646..657 +y=715, x=478..480 +x=622, y=193..215 +x=445, y=271..274 +x=612, y=1280..1292 +y=938, x=608..621 +x=526, y=1897..1898 +x=610, y=441..443 +x=610, y=666..688 +y=1887, x=516..536 +x=625, y=1287..1292 +x=512, y=1204..1207 +x=505, y=1292..1303 +y=1045, x=465..485 +x=485, y=327..334 +x=574, y=570..587 +x=463, y=394..409 +x=485, y=1460..1479 +y=457, x=549..552 +y=456, x=477..479 +x=453, y=758..770 +x=660, y=360..381 +y=1895, x=616..620 +x=530, y=93..101 +x=589, y=861..887 +x=657, y=41..45 +y=31, x=556..564 +y=1823, x=512..656 +x=542, y=381..398 +y=1897, x=616..620 +x=610, y=1922..1927 +y=675, x=635..647 +x=535, y=938..950 +x=525, y=180..188 +x=635, y=654..675 +y=356, x=515..535 +x=520, y=1525..1544 +x=469, y=1799..1801 +x=478, y=1780..1805 +x=604, y=204..210 +x=456, y=490..493 +x=504, y=1875..1898 +x=527, y=1013..1027 +x=521, y=974..996 +x=583, y=737..760 +x=598, y=410..413 +x=476, y=493..496 +x=478, y=588..592 +x=438, y=1134..1146 +x=639, y=172..182 +x=471, y=1826..1843 +x=489, y=731..735 +x=427, y=888..914 +x=490, y=215..224 +y=1287, x=644..649 +x=655, y=729..747 +x=493, y=1788..1792 +x=596, y=763..765 +y=1236, x=446..456 +x=442, y=590..601 +x=600, y=1277..1289 +y=1224, x=590..608 +x=452, y=1102..1130 +x=504, y=165..176 +x=494, y=1296..1298 +x=615, y=511..516 +x=512, y=1465..1469 +x=649, y=1280..1287 +x=656, y=1811..1823 +x=567, y=76..91 +y=111, x=502..510 +y=867, x=439..444 +x=638, y=595..608 +y=87, x=531..549 +x=484, y=278..292 +y=1364, x=501..511 +x=454, y=1848..1872 +x=607, y=821..835 +x=504, y=218..221 +y=1402, x=626..640 +x=468, y=244..254 +x=554, y=1735..1744 +y=540, x=452..538 +x=472, y=493..496 +x=434, y=1757..1760 +x=502, y=97..111 +x=630, y=1250..1254 +y=1479, x=616..618 +x=549, y=788..806 +x=522, y=198..217 +x=577, y=1539..1552 +x=639, y=206..221 +x=591, y=697..707 +x=514, y=1554..1581 +x=647, y=1325..1330 +x=597, y=192..215 +x=461, y=1058..1077 +y=1528, x=493..501 +x=503, y=191..203 +y=1348, x=431..435 +y=1898, x=477..504 +x=487, y=79..91 +y=1074, x=509..519 +x=601, y=1361..1373 +x=579, y=499..504 +x=640, y=243..265 +y=1922, x=435..438 +y=1267, x=429..448 +x=650, y=156..158 +x=449, y=1439..1453 +x=545, y=417..419 +y=521, x=492..504 +x=517, y=895..908 +y=315, x=492..510 +x=644, y=1280..1287 +y=666, x=512..516 +y=395, x=490..494 +x=433, y=1434..1455 +x=510, y=1595..1617 +x=588, y=763..765 +x=631, y=1550..1552 +x=612, y=1102..1126 +y=1635, x=542..561 +x=526, y=787..798 +x=580, y=1497..1511 +x=603, y=1709..1711 +x=471, y=947..963 +y=730, x=558..564 +x=496, y=168..180 +x=435, y=1331..1348 +y=983, x=489..501 +y=257, x=597..613 +x=617, y=1343..1352 +x=598, y=498..504 +x=580, y=78..98 +y=104, x=441..451 +x=500, y=279..292 +x=626, y=1419..1429 +x=613, y=254..257 +x=610, y=1552..1553 +y=1418, x=470..472 +x=470, y=1038..1041 +y=1375, x=652..658 +y=230, x=457..467 +x=547, y=1370..1395 +x=597, y=1324..1349 +x=504, y=235..246 +x=499, y=728..739 +y=1910, x=602..627 +y=1830, x=456..462 +x=487, y=445..459 +x=525, y=590..610 +y=238, x=651..654 +x=587, y=367..370 +y=1336, x=554..575 +y=462, x=566..581 +x=452, y=1167..1194 +y=798, x=626..643 +x=507, y=507..518 +x=554, y=1523..1525 +x=536, y=1766..1778 +x=539, y=1465..1469 +x=465, y=1329..1335 +x=516, y=1697..1722 +y=970, x=644..648 +y=739, x=483..499 +x=625, y=1584..1590 +x=631, y=1765..1774 +x=598, y=1709..1711 +y=1330, x=645..647 +y=914, x=427..455 +y=1177, x=443..445 +x=618, y=1142..1162 +x=434, y=588..598 +y=560, x=450..466 +x=621, y=921..938 +y=481, x=478..499 +x=620, y=1857..1860 +x=577, y=843..845 +x=486, y=1647..1649 +x=589, y=534..537 +x=576, y=216..223 +y=606, x=476..480 +x=500, y=1831..1845 +x=450, y=644..650 +x=490, y=1401..1416 +x=581, y=63..72 +x=547, y=543..563 +x=605, y=1386..1393 +y=1249, x=575..599 +x=518, y=632..646 +y=563, x=581..585 +y=1805, x=460..478 +x=551, y=125..131 +x=483, y=366..376 +y=1013, x=645..650 +y=1560, x=641..649 +x=664, y=1267..1295 +y=462, x=543..560 +y=221, x=502..504 +x=604, y=101..107 +y=1263, x=602..604 +x=624, y=621..626 +y=996, x=630..632 +y=1659, x=567..571 +y=851, x=606..608 +y=928, x=483..486 +y=840, x=523..543 +y=1649, x=463..486 +x=592, y=1358..1370 +y=1615, x=457..469 +y=1295, x=546..550 +x=581, y=855..868 +y=698, x=462..480 +x=594, y=864..867 +x=593, y=216..223 +x=552, y=723..727 +y=707, x=591..593 +y=1142, x=565..582 +x=496, y=127..135 +x=637, y=1197..1223 +x=608, y=839..851 +x=641, y=1703..1715 +y=745, x=506..518 +x=536, y=1205..1207 +y=1233, x=502..514 +x=447, y=1732..1758 +x=627, y=529..549 +y=1008, x=562..564 +y=1784, x=593..598 +x=496, y=407..421 +x=583, y=163..170 +x=595, y=1193..1204 +x=519, y=1049..1074 +x=509, y=971..992 +y=785, x=631..634 +x=495, y=1117..1142 +y=1563, x=641..649 +x=540, y=591..603 +x=572, y=838..849 +y=1898, x=508..526 +y=568, x=642..644 +y=1571, x=576..585 +y=1001, x=453..455 +x=448, y=1702..1704 +x=553, y=141..164 +y=559, x=647..652 +y=297, x=544..556 +x=451, y=925..936 +x=626, y=1400..1402 +x=467, y=1058..1074 +x=502, y=1230..1233 +y=376, x=454..476 +x=487, y=1354..1365 +x=537, y=1554..1581 +x=495, y=1269..1287 +y=1212, x=656..665 +x=519, y=1082..1106 +x=628, y=728..747 +x=552, y=1652..1662 +x=510, y=98..111 +x=640, y=1730..1732 +y=1035, x=539..558 +x=616, y=1479..1484 +x=472, y=1460..1479 +x=626, y=771..798 +x=520, y=1395..1401 +y=163, x=533..540 +y=931, x=574..578 +y=1455, x=430..433 +x=552, y=674..689 +x=579, y=1832..1837 +x=467, y=208..230 +x=650, y=1587..1603 +x=464, y=969..973 +x=565, y=1129..1142 +x=660, y=294..299 +y=180, x=496..513 +x=622, y=1566..1572 +y=1556, x=491..503 +y=516, x=612..615 +y=1006, x=445..461 +x=574, y=404..411 +x=485, y=787..789 +x=548, y=1086..1097 +x=538, y=7..25 +x=504, y=971..992 +x=517, y=9..17 +x=615, y=803..805 +x=570, y=998..1012 +x=519, y=767..776 +x=571, y=708..712 +y=1295, x=637..655 +y=215, x=597..622 +x=569, y=737..760 +y=1779, x=626..642 +x=549, y=81..87 +y=135, x=496..514 +x=644, y=848..865 +x=543, y=417..419 +x=551, y=591..603 +y=939, x=585..591 +x=498, y=947..963 +x=568, y=1214..1228 +x=588, y=1477..1489 +x=586, y=1196..1207 +x=514, y=749..761 +x=455, y=548..557 +y=1162, x=576..578 +x=481, y=1326..1345 +y=1069, x=575..577 +x=573, y=1777..1803 +x=483, y=1490..1502 +x=595, y=410..413 +x=636, y=1463..1485 +y=1001, x=641..655 +x=486, y=1189..1206 +x=488, y=190..203 +x=493, y=1883..1887 +x=560, y=1539..1552 +x=455, y=992..1001 +x=564, y=482..487 +y=1292, x=593..612 +y=587, x=559..574 +x=436, y=37..59 +x=549, y=872..885 +x=456, y=177..182 +y=991, x=552..572 +y=812, x=513..519 +x=469, y=1338..1346 +x=500, y=1570..1571 +x=518, y=721..745 +y=1821, x=491..493 +x=429, y=1239..1267 +x=430, y=749..766 +x=470, y=471..481 +x=532, y=491..500 +x=612, y=1796..1805 +x=478, y=1103..1130 +x=478, y=471..481 +x=647, y=931..939 +y=983, x=601..622 +x=628, y=1565..1572 +x=631, y=1197..1223 +y=1489, x=570..588 +x=460, y=926..934 +x=542, y=112..113 +x=444, y=482..503 +x=557, y=789..806 +x=446, y=12..30 +x=635, y=1557..1567 +x=660, y=1197..1200 +x=565, y=977..987 +y=549, x=627..637 +x=654, y=213..238 +y=504, x=579..598 +x=565, y=1627..1640 +y=885, x=531..549 +x=474, y=683..695 +x=531, y=380..398 +x=445, y=1175..1177 +y=1455, x=548..550 +y=1235, x=536..556 +x=627, y=1249..1254 +x=595, y=1358..1370 +x=459, y=598..600 +x=496, y=910..937 +x=580, y=1108..1120 +y=1840, x=509..515 +x=499, y=324..337 +x=575, y=1893..1914 +x=593, y=1892..1914 +x=599, y=1239..1249 +x=520, y=1137..1145 +y=343, x=598..617 +x=575, y=1238..1249 +y=947, x=553..555 +x=568, y=482..487 +x=556, y=1224..1235 +y=241, x=495..497 +x=454, y=124..138 +x=550, y=1438..1455 +x=645, y=1004..1013 +y=1722, x=514..516 +x=486, y=915..928 +y=768, x=547..561 +x=499, y=1789..1792 +x=531, y=871..885 +y=1805, x=606..612 +x=437, y=1757..1760 +y=1158, x=599..608 +x=480, y=713..715 +x=541, y=1396..1401 +x=441, y=89..104 +y=493, x=456..461 +x=648, y=359..381 +x=552, y=1043..1053 +x=634, y=1318..1335 +y=1345, x=476..481 +x=620, y=1895..1897 +y=223, x=437..442 +x=432, y=271..274 +x=429, y=1463..1486 +x=579, y=884..897 +x=577, y=1585..1599 +y=141, x=610..633 +y=1075, x=567..583 +y=1270, x=518..528 +x=572, y=980..991 +y=35, x=551..572 +x=656, y=1205..1212 +y=1914, x=575..593 +x=441, y=1516..1531 +y=1801, x=524..550 +x=439, y=614..616 +y=604, x=566..572 +y=222, x=563..566 +x=531, y=674..689 +y=1281, x=559..584 +x=590, y=1222..1224 +x=633, y=120..141 +x=451, y=1365..1377 +x=595, y=534..537 +y=219, x=625..635 +y=1413, x=588..608 +x=470, y=445..459 +y=615, x=462..486 +y=1659, x=610..632 +x=585, y=950..974 +x=603, y=1583..1596 +y=747, x=628..655 +y=1519, x=472..490 +x=643, y=771..798 +x=578, y=914..931 +y=1678, x=461..477 +x=498, y=1531..1542 +y=101, x=627..641 +x=667, y=1918..1931 +x=455, y=587..592 +x=632, y=979..996 +y=1331, x=603..625 +x=519, y=792..794 +y=1223, x=631..637 +x=560, y=1458..1470 +y=1511, x=556..580 +x=610, y=998..1020 +x=441, y=532..537 +y=608, x=628..638 +y=158, x=650..653 +x=568, y=253..263 +y=608, x=554..578 +x=488, y=552..564 +y=1778, x=520..536 +x=430, y=610..620 +x=493, y=1532..1542 +x=497, y=1743..1749 +y=223, x=576..593 +x=500, y=878..881 +x=512, y=427..440 +y=822, x=549..557 +x=551, y=181..188 +y=1640, x=565..618 +x=432, y=1788..1792 +y=437, x=623..626 +x=608, y=1403..1413 +y=1786, x=593..598 +y=1289, x=600..602 +x=477, y=1590..1599 +x=467, y=628..637 +x=513, y=627..628 +y=164, x=553..565 +x=658, y=1400..1420 +x=438, y=645..650 +x=554, y=1422..1437 +x=514, y=1696..1722 +x=492, y=553..564 +x=632, y=1136..1146 +x=648, y=1679..1691 +x=472, y=1412..1418 +y=421, x=479..496 +x=444, y=1745..1773 +x=454, y=645..657 +x=479, y=1000..1015 +x=493, y=1819..1821 +x=490, y=382..395 +x=472, y=683..695 +x=543, y=1609..1622 +x=616, y=1895..1897 +y=881, x=500..515 +y=557, x=455..459 +x=657, y=1656..1671 +y=356, x=468..490 +x=584, y=1028..1043 +y=537, x=589..595 +x=580, y=702..715 +y=657, x=454..480 +x=642, y=810..821 +x=572, y=602..604 +x=474, y=1038..1041 +x=655, y=985..1001 +x=563, y=890..902 +y=107, x=604..614 +x=571, y=1654..1659 +x=609, y=947..963 +x=526, y=488..495 +x=612, y=511..516 +x=466, y=925..934 +x=575, y=542..563 +x=456, y=1224..1236 +y=1927, x=559..610 +y=1124, x=428..447 +x=641, y=899..902 +x=490, y=824..831 +x=600, y=1302..1315 +x=616, y=172..182 +y=527, x=565..567 +y=1596, x=581..603 +y=21, x=491..493 +x=566, y=443..462 +y=1792, x=493..499 +x=607, y=493..521 +y=381, x=648..660 +x=545, y=1519..1530 +y=67, x=535..543 +x=506, y=37..40 +x=529, y=626..628 +y=1043, x=580..584 +x=464, y=784..794 +x=500, y=54..68 +y=934, x=460..466 +y=477, x=458..464 +x=550, y=1789..1801 +x=460, y=245..254 +y=274, x=432..445 +y=204, x=604..616 +x=591, y=919..939 +x=438, y=1915..1922 +x=592, y=1563..1574 +y=1623, x=592..602 +x=445, y=989..1006 +y=1150, x=446..462 +x=567, y=501..527 +x=474, y=125..138 +x=501, y=11..25 +y=1396, x=590..612 +x=652, y=1463..1485 +x=478, y=102..113 +x=479, y=408..421 +x=578, y=1151..1162 +x=461, y=122..135 +x=640, y=111..114 +x=461, y=1671..1678 +x=489, y=1654..1677 +y=135, x=461..466 +x=536, y=1225..1235 +x=579, y=843..845 +y=170, x=583..598 +x=524, y=1832..1845 +x=501, y=165..176 +x=457, y=1059..1077 +x=466, y=122..135 +x=652, y=1442..1456 +x=565, y=500..527 +y=1792, x=530..535 +y=1295, x=659..664 +x=427, y=386..410 +y=31, x=648..651 +x=509, y=597..601 +x=585, y=1324..1349 +x=623, y=1668..1679 +x=435, y=1849..1872 +x=445, y=147..158 +y=1544, x=520..533 +x=592, y=1243..1246 +x=556, y=1585..1599 +x=624, y=947..963 +y=781, x=631..634 +x=626, y=1654..1656 +x=527, y=973..996 +x=442, y=1340..1350 +y=1662, x=520..530 +x=602, y=1260..1263 +x=606, y=1796..1805 +x=633, y=890..905 +x=494, y=35..44 +x=456, y=1788..1792 +x=498, y=255..268 +y=1656, x=624..626 +y=1162, x=593..618 +x=510, y=1154..1156 +x=633, y=1258..1268 +x=547, y=765..768 +y=217, x=522..547 +x=444, y=926..936 +x=581, y=1582..1596 +x=593, y=1193..1204 +x=471, y=1799..1801 +x=483, y=1589..1599 +y=849, x=572..590 +y=1837, x=456..462 +x=496, y=666..677 +x=458, y=753..755 +x=468, y=345..356 +x=511, y=214..224 +x=444, y=853..867 +y=1469, x=512..539 +x=523, y=589..610 +y=761, x=475..514 +x=439, y=326..335 +x=597, y=255..257 +x=579, y=1212..1222 +x=426, y=954..975 +x=489, y=1293..1303 +x=615, y=1551..1553 +x=582, y=1541..1543 +x=650, y=1656..1671 +x=575, y=1324..1336 +x=568, y=1519..1530 +y=147, x=436..440 +x=638, y=189..191 +x=627, y=77..101 +x=518, y=512..515 +x=515, y=1400..1416 +y=684, x=657..661 +y=1654, x=567..571 +y=1856, x=471..473 +y=1875, x=631..644 +x=494, y=382..395 +x=524, y=853..857 +x=645, y=1478..1480 +x=552, y=447..457 +y=612, x=622..649 +x=645, y=169..193 +x=462, y=1354..1365 +y=1555, x=589..606 +x=428, y=1746..1773 +x=590, y=1383..1396 +x=647, y=552..559 +y=503, x=444..446 +y=25, x=523..538 +y=1672, x=495..498 +y=794, x=511..519 +x=663, y=1557..1567 +y=1012, x=425..434 +x=495, y=232..241 +x=478, y=713..715 +x=484, y=861..887 +y=1464, x=568..571 +x=655, y=1319..1335 +y=1373, x=584..601 +y=576, x=493..532 +x=574, y=1127..1139 +y=1456, x=652..665 +x=455, y=888..914 +y=1859, x=471..473 +x=649, y=461..466 +x=579, y=1174..1181 +y=1425, x=445..452 +y=1194, x=437..452 +x=556, y=124..131 +y=496, x=472..476 +y=718, x=467..489 +x=652, y=1363..1375 +x=627, y=1884..1910 +y=794, x=464..491 +y=1437, x=554..561 +x=550, y=999..1012 +x=578, y=598..608 +x=446, y=481..503 +x=581, y=558..563 +x=481, y=384..398 +x=559, y=1256..1281 +y=937, x=473..496 +x=585, y=1568..1571 +x=465, y=758..770 +y=867, x=594..610 +y=805, x=599..615 +y=1395, x=547..575 +x=511, y=792..794 +y=675, x=568..587 +y=1207, x=512..536 +y=845, x=577..579 +x=470, y=860..887 +x=481, y=1675..1680 +x=642, y=553..568 +y=974, x=585..599 +x=479, y=55..68 +x=583, y=768..770 +x=518, y=387..415 +x=443, y=1020..1047 +x=480, y=686..698 +x=616, y=620..638 +x=592, y=1602..1623 +x=612, y=1300..1312 +x=550, y=1273..1295 +y=461, x=506..525 +y=316, x=447..475 +x=638, y=1730..1732 +x=634, y=781..785 +x=521, y=1496..1518 +x=563, y=977..987 +y=1496, x=440..465 +x=510, y=266..290 +x=519, y=812..814 +x=497, y=1595..1618 +x=438, y=387..410 +x=448, y=436..446 +x=658, y=224..247 +x=455, y=1021..1047 +y=459, x=470..487 +x=479, y=453..456 +x=443, y=833..840 +x=528, y=1614..1619 +x=448, y=1240..1267 +x=542, y=1230..1232 +x=632, y=354..377 +x=511, y=1743..1749 +y=1027, x=513..527 +y=963, x=471..498 +x=464, y=468..477 +y=939, x=647..664 +x=433, y=1510..1535 +x=511, y=1346..1364 +x=553, y=1886..1912 +x=602, y=441..443 +x=551, y=26..35 +y=376, x=483..501 +y=1698, x=588..602 +x=640, y=1400..1402 +x=536, y=414..424 +x=506, y=722..745 +x=502, y=1809..1825 +y=1691, x=648..654 +x=449, y=395..409 +x=643, y=1478..1480 +x=600, y=1418..1429 +x=502, y=37..40 +y=908, x=517..538 +y=1074, x=467..474 +y=1662, x=552..578 +x=514, y=1596..1617 +y=441, x=651..663 +x=445, y=1411..1425 +y=894, x=552..556 +y=1058, x=613..628 +x=645, y=1325..1330 +y=1568, x=576..585 +y=370, x=587..613 +x=515, y=878..881 +x=442, y=203..223 +x=435, y=1914..1922 +y=1420, x=658..664 +x=530, y=1792..1795 +y=443, x=602..610 +x=598, y=1784..1786 +x=607, y=625..633 +x=537, y=1653..1665 +x=524, y=900..902 +x=561, y=1084..1093 +x=468, y=1175..1183 +y=766, x=430..436 +x=645, y=1891..1908 +x=663, y=416..441 +x=425, y=992..1012 +x=457, y=1608..1615 +y=1349, x=585..597 +y=1760, x=434..437 +y=1200, x=656..660 +x=513, y=1013..1027 +y=688, x=610..614 +x=523, y=828..840 +y=59, x=436..459 +y=715, x=561..580 +x=570, y=1127..1139 +x=585, y=998..1020 +x=501, y=385..398 +x=590, y=1243..1246 +x=536, y=1747..1758 +y=835, x=607..626 +y=424, x=536..552 +x=622, y=980..983 +x=604, y=1260..1263 +x=648, y=343..352 +x=645, y=435..442 +x=536, y=1640..1648 +y=770, x=453..465 +x=552, y=894..898 +x=606, y=839..851 +y=1736, x=631..651 +x=564, y=29..31 +y=1434, x=469..490 +x=521, y=242..259 +y=114, x=638..640 +y=765, x=588..596 +x=577, y=647..660 +x=606, y=1552..1555 +x=653, y=1505..1509 +y=1617, x=510..514 +y=499, x=467..487 +y=915, x=607..620 +y=1908, x=637..645 +x=463, y=1646..1649 +x=483, y=1674..1680 +y=1677, x=489..504 +y=373, x=570..572 +x=624, y=1654..1656 +x=453, y=1897..1912 +x=585, y=919..939 +x=626, y=1177..1205 +x=529, y=61..73 +x=531, y=1125..1142 +x=450, y=550..560 +y=1012, x=550..570 +x=583, y=906..910 +x=592, y=1869..1875 +y=865, x=630..644 +x=490, y=1428..1434 +x=582, y=1773..1789 +x=655, y=1258..1268 +x=608, y=1223..1224 +x=558, y=1023..1035 +x=486, y=601..615 +x=635, y=201..219 +x=659, y=1267..1295 +x=576, y=1568..1571 +y=1704, x=448..453 +x=503, y=434..436 +y=72, x=572..581 +x=657, y=663..684 +x=665, y=1443..1456 +x=453, y=1702..1704 +x=580, y=1459..1470 +x=588, y=1404..1413 +x=524, y=1854..1867 +y=905, x=633..651 +x=567, y=1044..1053 +x=499, y=701..713 +y=601, x=425..442 +y=1883, x=493..496 +x=492, y=276..289 +y=193, x=645..664 +y=442, x=634..645 +x=610, y=121..141 +x=570, y=1478..1489 +x=427, y=1133..1146 +x=652, y=257..270 +y=1126, x=612..634 +x=568, y=667..675 +x=559, y=403..411 +y=224, x=490..511 +y=537, x=441..448 +x=642, y=343..352 +y=518, x=507..529 +x=561, y=765..768 +x=586, y=862..887 +x=614, y=102..107 +x=451, y=1083..1096 +x=533, y=144..163 +x=522, y=488..495 +x=557, y=322..345 +y=1775, x=525..529 +x=585, y=906..910 +x=644, y=899..902 +y=610, x=523..525 +x=476, y=606..608 +y=1041, x=470..474 +y=603, x=540..551 +y=1574, x=569..592 +x=594, y=476..490 +y=1254, x=627..630 +x=610, y=1340..1349 +x=510, y=301..315 +x=535, y=40..67 +x=485, y=1023..1045 +x=644, y=948..970 +x=459, y=548..557 +y=1409, x=595..599 +y=1665, x=515..537 +x=653, y=156..158 +y=247, x=658..662 +x=483, y=728..739 +y=861, x=514..531 +y=1801, x=469..471 +y=17, x=509..517 +y=818, x=494..534 +x=610, y=1257..1268 +y=1489, x=608..624 +x=649, y=1560..1563 +y=950, x=535..561 +y=713, x=499..511 +y=301, x=570..583 +x=463, y=816..842 +x=573, y=961..972 +y=335, x=439..453 +x=496, y=1883..1887 +x=556, y=1523..1525 +x=515, y=1904..1926 +x=656, y=1197..1200 +x=456, y=103..113 +x=617, y=1583..1590 +y=1543, x=582..603 +x=570, y=274..301 +x=460, y=1696..1711 +y=1758, x=536..640 +x=437, y=435..446 +x=465, y=1479..1496 +y=1020, x=585..610 +x=641, y=77..101 +y=929, x=527..547 +x=618, y=1627..1640 +y=601, x=496..509 +x=651, y=1217..1243 +x=494, y=276..289 +x=656, y=1021..1029 +x=616, y=266..282 +x=619, y=1324..1326 +y=616, x=439..446 +x=514, y=770..779 +x=616, y=1324..1326 +y=899, x=641..644 +y=1103, x=591..601 +y=1710, x=659..663 +x=542, y=1853..1867 +x=488, y=234..246 +y=1352, x=601..617 +x=523, y=6..25 +x=630, y=1231..1233 +x=444, y=1339..1350 +y=975, x=426..434 +x=438, y=1412..1430 +x=546, y=1272..1295 +y=1530, x=545..568 +x=590, y=266..282 +y=868, x=656..662 +x=603, y=1320..1331 +x=457, y=1241..1254 +x=498, y=1662..1672 +x=573, y=856..868 +x=634, y=494..521 +x=552, y=979..991 +x=532, y=573..576 +x=428, y=1412..1430 +y=158, x=445..496 +x=644, y=1347..1375 +y=182, x=616..639 +x=491, y=9..21 +x=532, y=1309..1318 +x=442, y=1896..1912 +x=520, y=1765..1778 +x=497, y=1296..1298 +y=1233, x=620..630 +y=1296, x=494..497 +y=1447, x=580..641 +x=659, y=1709..1710 +x=615, y=1507..1533 +x=564, y=726..730 +x=462, y=685..698 +x=640, y=1075..1093 +x=632, y=1647..1659 +x=576, y=476..490 +x=482, y=327..334 +x=559, y=569..587 +y=345, x=557..580 +x=656, y=851..868 +x=456, y=1830..1837 +x=607, y=1773..1789 +y=755, x=442..458 +y=101, x=530..550 +x=561, y=939..950 +y=1744, x=554..575 +y=1567, x=635..663 +x=556, y=894..898 +y=1525, x=554..556 +x=655, y=1076..1093 +y=1618, x=490..497 +x=442, y=571..582 +x=649, y=1694..1703 +y=1453, x=441..449 +y=1575, x=527..530 +y=1843, x=445..471 +x=512, y=1811..1823 +y=650, x=438..450 +x=434, y=954..975 +x=662, y=223..247 +x=472, y=1511..1519 +x=568, y=556..559 +x=453, y=992..1001 +y=398, x=531..542 +x=619, y=1550..1552 +x=561, y=1421..1437 +y=337, x=477..499 +y=44, x=494..514 +x=457, y=208..230 +x=511, y=701..713 +x=620, y=1232..1233 +y=1146, x=632..646 +y=1872, x=435..454 +x=451, y=834..840 +x=565, y=142..164 +y=419, x=543..545 +y=1875, x=569..592 +y=1552, x=619..631 +x=490, y=1595..1618 +x=578, y=1777..1803 +x=543, y=434..462 +y=113, x=515..542 +y=1350, x=442..444 +y=963, x=609..624 +x=587, y=398..419 +y=1572, x=527..530 +x=501, y=966..983 +x=563, y=220..222 +x=566, y=1177..1187 +x=429, y=289..294 +y=972, x=554..573 +x=554, y=1323..1336 +x=584, y=1360..1373 +y=419, x=587..605 +x=565, y=1610..1622 +x=486, y=1810..1825 +y=1571, x=483..500 +y=30, x=446..463 +x=512, y=656..666 +y=1599, x=477..483 +x=530, y=1657..1662 +y=138, x=454..474 +y=1773, x=428..444 +y=1619, x=528..536 +x=486, y=1154..1156 +x=550, y=92..101 +y=1581, x=514..537 +y=440, x=488..512 +x=634, y=809..821 +x=599, y=1401..1409 +y=1222, x=576..579 +x=552, y=413..424 +y=265, x=619..640 +x=599, y=951..974 +x=504, y=496..521 +x=532, y=985..1012 +x=508, y=1189..1200 +y=188, x=525..551 +y=727, x=542..552 +x=631, y=1873..1875 +y=638, x=599..616 +x=556, y=1498..1511 +y=1292, x=620..625 +x=513, y=167..180 +y=1912, x=442..453 +x=531, y=82..87 +x=589, y=651..652 +x=637, y=1892..1908 +x=560, y=435..462 +y=411, x=559..574 +y=416, x=487..490 +y=1542, x=493..498 +x=602, y=1195..1207 +x=573, y=708..712 +x=575, y=1370..1395 +y=1480, x=643..645 +x=489, y=664..673 +x=428, y=1116..1124 +x=651, y=1152..1170 +x=625, y=1319..1331 +y=45, x=657..665 +x=453, y=325..335 +y=760, x=569..583 +x=628, y=1047..1058 +x=530, y=769..779 +y=842, x=455..463 +x=596, y=1669..1679 +x=571, y=1456..1464 +x=448, y=1667..1673 +x=648, y=29..31 +y=868, x=573..581 +y=1207, x=586..602 +y=1758, x=447..475 +x=444, y=1516..1531 +y=1303, x=489..505 +x=567, y=1404..1411 +y=689, x=531..552 +y=182, x=439..456 +x=570, y=861..864 +y=1012, x=532..541 +x=608, y=920..938 +y=563, x=547..575 +x=525, y=450..461 +y=1232, x=542..546 +x=539, y=1023..1035 +x=480, y=1689..1695 +y=191, x=633..638 +x=548, y=1437..1455 +y=1243, x=590..592 +x=431, y=1330..1348 +y=1053, x=552..567 +x=594, y=1693..1695 +x=479, y=787..789 +x=567, y=1654..1659 +y=902, x=524..528 +y=98, x=577..580 +x=554, y=253..263 +x=609, y=1856..1860 +y=203, x=488..503 +x=527, y=918..929 +x=607, y=901..915 +x=511, y=1905..1926 +y=436, x=498..503 +x=446, y=1224..1236 +x=580, y=131..142 +x=663, y=1708..1710 +x=512, y=1138..1145 +x=529, y=508..518 +y=298, x=605..613 +y=1867, x=524..542 diff --git a/2018/inputs/18.txt b/2018/inputs/18.txt new file mode 100644 index 0000000..9e354bc --- /dev/null +++ b/2018/inputs/18.txt @@ -0,0 +1,50 @@ +#.#.|..#|.||.#...|...#.|.......##|##..#..||.||.... +#.......#.....|##..#|..#.##..##|.|.#..|.#...|....# +.|..........#.|..|.....|..|#.#...##|#|.|#|##|...#| +#|....#|##..#|.|||.#.|.#...#.##.......#||..#...... +.#|....|.|..#..||...#||...|......###.#.#...##..#.. +..||#...|.#.|||||.....|.......##...#.#....|..#.... +###|..##...|.#|..|.#|#...|.#.|....||.|...#|.|#...# +|.#.|#.#.|###.|..#..|....#....#|.#..||.||.....#..# +.#..|.#..#|##..|.....|.#.|.#.#|.......#..|...#..|. +...|||##...|..#.#|#|..#.#..#|.|.|#..##........##.# +|#.#..||....|...|#..|....|#|...#.#.#.##|.|.#...... +|..|...|.|#.........|..#|...|.#.|##....|..|..|#.|| +|....#..||..|...#|......|||||.|#....||....|.#|.#.. +......#||.#.#.||..|.......|....||#||#.|.#.|.##||#| +.##.#....##.#.|....|...###..#...|.#....|.#...|..## +.##..#|#.#.##.||..|.#|..|.|.##|....|...#||||.|..#. +|.|..|#|....|.#.#..||.....|.....##....||....|.||.. +#|.|.##...||...........|..#.||.|.#..##..|#||...... +||..||.||..#.##.#...|.#|.....|###....#.....#...|.. +|.#.##|.|...||#.#...||....|.|#..|.#....##........# +..|....|.#.##|....|||#....#.|.|.##....|##|.|#..... +.|.....#|.#....|###|..#|||........||#.#..||..|..#. +#..#...|#|.#...|.||##..#.|..|.|.#.|..#.#.|.....#.# +|#||.##..#..|||.......#|..#...#..##....#||.#|..... +.|.#.....|..#...#...##...|.#...|.#|.......|..#...| +.||.......|..##..##.#|.|..|...#.|.#..#.|....#.|#.| +....#..#|##|....#..|.#..|||..#....#.#|...||.#..|.. +#......#|.##..|..|....|.##.#|...#..#.|..|..|..|##. +...|||.#|#.#.|..|||.#.#.#...||...||..##..#.....|.. +..#..|.|#.#..|..##|..#....#.|..|.......|||#.|.|.|# +.##|..#...#..||..|.........|#.|#.....|...##.|..||# +#.....||....#.....|#.||......|.#|.#|....||.||.#.#. +#..|#..|......|.#.#.#.##..||.|.#.|......#|#||#.|.# +..||..||.....|.#..###.#.|#..|.......|....#||.|..#. +.#...###|#|#|||...|...#.#|.#|..|...#..#.|#|.#...|. +...|..#||....##|..#...#....#||#.......|....#.|###. +..#....|#..#|.....|.#|..#..|#....||......|.|.#.|#. +..|##....#.|..#..#.|.#..||....#...|.....|..#.....| +.......#||..#||...|.#.|#...#....|.|.||.#.|...#.##| +.|.|||.....#............#..#..|..|..#.|.#..|...... +|...|.|####..#.....#..#..|#|#..#..|......|...|.#|# +|.|...#..#..|....|.....#|#||..#.||..|#|..|||.|.|.| +..#...|#.......||.#.#.#....#.........##|.|..#.##|| +#|#..|..|#|.##.|.|#......||......|.....#||###.|### +....#..#.|..|...#|#|..|#..|.#|....||#|.||.|#|..... +|..#.|..#.|#......#...#|.#|#|.....|#...###....##.. +...##..#..|..#..#.#...|.#..#|...|#.##|.#|..##..#.# +|.|.|...#.|..##.|.|....|..#..|...|..##|...|..|.... +.#|..|..|..|.|..#...|.||#...#......||.#.#......... +.#.##..|............|.||.....#||..|##.|..|.....#.| diff --git a/2018/inputs/19.txt b/2018/inputs/19.txt new file mode 100644 index 0000000..1207b7b --- /dev/null +++ b/2018/inputs/19.txt @@ -0,0 +1,37 @@ +#ip 4 +addi 4 16 4 +seti 1 7 2 +seti 1 1 5 +mulr 2 5 3 +eqrr 3 1 3 +addr 3 4 4 +addi 4 1 4 +addr 2 0 0 +addi 5 1 5 +gtrr 5 1 3 +addr 4 3 4 +seti 2 7 4 +addi 2 1 2 +gtrr 2 1 3 +addr 3 4 4 +seti 1 3 4 +mulr 4 4 4 +addi 1 2 1 +mulr 1 1 1 +mulr 4 1 1 +muli 1 11 1 +addi 3 3 3 +mulr 3 4 3 +addi 3 9 3 +addr 1 3 1 +addr 4 0 4 +seti 0 1 4 +setr 4 9 3 +mulr 3 4 3 +addr 4 3 3 +mulr 4 3 3 +muli 3 14 3 +mulr 3 4 3 +addr 1 3 1 +seti 0 6 0 +seti 0 7 4 diff --git a/2018/inputs/2.txt b/2018/inputs/2.txt new file mode 100644 index 0000000..1edb865 --- /dev/null +++ b/2018/inputs/2.txt @@ -0,0 +1,250 @@ +krdmtuqjmwfoevnadixyclzspv +yrdmtuqjiwfoevnabfxyclzsph +kqjvtuqjgwfoevnabixyclzsph +krdmtuqjgwjoevnaolxyclzsph +krdmtnqjgwfoevnabiiyxlzsph +lrymtuqjgwhoevnabixyclzsph +krdmguqjgwfoevnabixkclzsah +krdmtuqjgwfoevnibinyclzdph +krdmtucjgwfoevnabhxyclzspv +krdmtuqjgwfoevtabixyulzsuh +krdmtuqqgwfoevnabixdblzsph +krdmtuqjawfsevnabiyyclzsph +krdmtuqjgwfoevnabzxccldsph +krdmtcqegwfhevnabixyclzsph +krdmtuqjgwforvnaxixycgzsph +krdmtuqjgwfoqvnaxixyclzskh +krdmtutjgwfoevyajixyclzsph +krdmtuqmgwfoevnabixycxzspc +krdptuqjgwhoevkabixyclzsph +krdttuqjhwfoevnabixyclzspa +krdmtuqjgwfoevnabibyhnzsph +krdmtuqjywfoevntbidyclzsph +krdmtojdgwfoevnabixyclzsph +krdmtuqjgpfuevnauixyclzsph +krdmtoqjgwfrevjabixyclzsph +krdmtuqjgwfoyvndbixyclzyph +krdmtxqjgwfomvnayixyclzsph +crdmtuqjgwfoevnabixyoxzsph +krdmtpqjgwfdevnabixycqzsph +krdmtuqjgwfoevuabfxsclzsph +krdmtuqjgwfoevnybixycdzskh +krdmtusjgwfoevnabixxclzdph +krdmtuqjgwfoevnaboxyglzjph +zrdmtuqjgrfoevnalixyclzsph +krdmtuqjclfoevnabixyclzsih +kqdmtlqjgwfoevnabtxyclzsph +krdmtuqggwpoevnabixyclzlph +krdmtuqjgwfobwnrbixyclzsph +krdmtuqjgwfoevwabkxycnzsph +kldmtuqjgwfogvyabixyclzsph +krdmtuqvgwfoevnabixtcrzsph +krdmtuqjgwroevnabixyrlzspw +krdmtuqjgjfoevnabixyelzrph +krdmtuqjgffoevnaaixyclzspa +krdmtuqjgwfoevxabifywlzsph +krdmtuqjgwfoevlabixycrzsrh +krdmtuqjgwfpevnabixocqzsph +krdmtuqjgwfoevdabixycnhsph +krdmtmqjgwfoevnajixyclvsph +krdmtuqjjvfoevnabgxyclzsph +krzmtuqjgwfoevnabioyckzsph +kodmtwqjgwfoevnabieyclzsph +ehdmthqjgwfoevnabixyclzsph +krdmtuqjxwioevnabixyclbsph +grdmkutjgwfoevnabixyclzsph +krdutuqjgwfoebnabixaclzsph +krdmtuqjgwfoebnabixyclcjph +krdmteqjgwfoevnlbixycizsph +krdmtegjgwhoevnabixyclzsph +krdmtuqjgwfdrvnabixbclzsph +krdmtuqjgyfoevidbixyclzsph +krdmtubjawfoevnabixyclzuph +krdmtuqjgwfoavjabixyclzssh +krdmtuqjgwfoeonabixyclzsvo +vrdmtuqjgwffevnabixpclzsph +krdmtuqonwfoevnabixycfzsph +krdmtumjgwfpevnubixyclzsph +krdmtutjgwfoevnaciyyclzsph +krdrtuqjgwfoevnwbixyglzsph +krdmtuqjgwfoevbabixyclesdh +krdmtuqcgwfoevnabixyqdzsph +krdmtuqjgwfogvnabrxycezsph +krdmujqkgwfoevnabixyclzsph +krdmtuqjgtooevnabixyclzzph +jrdntuqjgwfoevnabixyclrsph +krdmtuqjgzfoevkebixyclzsph +krdmtuqjgwfosvnaeixyclztph +krdmtuqjgwfoevzabixydlzaph +krdmtuqzgwfoavnabiqyclzsph +krdmtuqvgwfoevnabixycwzspv +krdmvuqjgwteevnabixyclzsph +krdmtujjgwfoevgybixyclzsph +kydmtuqjgwfoeunacixyclzsph +krdmtuqjgifoqvnabicyclzsph +krnltiqjgwfoevnabixyclzsph +krdmtuqjgwfoevnabhxyclzsgi +kfdmtuqjnwfowvnabixyclzsph +kmdmtuljgwfoevnabixycvzsph +krdmtxqjgwaoevvabixyclzsph +kramduqjgwfoevnabixyclzwph +krdutuqjgwfoennabixyclziph +krdmvuqfgwfoevnacixyclzsph +krdmtuqogwfoevnabmvyclzsph +krdmfuqjgwfoyvnabixyclzseh +krdmtuqjgweoelnabixyclzspd +krdmtumjgwfoevnabixyclzypo +krdmtuqjgkfoevhabixyclzsqh +kjdmtuqjgwfoevgabixyclzsah +krdmtuqjgwfoevnlbixyclzsbw +mrdmtxqjgwfoevnabgxyclzsph +krdmtuqpgwfoevnhbixycltsph +krdmtuqjgwfmqvnabixyclzslh +krqmtuqogwfoevnaqixyclzsph +krdmtusjggfoevnabicyclzsph +krcmtuljgwfoevlabixyclzsph +krdmtuojgwfoeknabixyclzsrh +krdmtuqjtwfoevnabiypclzsph +krvmtupjgwfoevnabixycldsph +krdmtuxjgwfoevaabxxyclzsph +krdmtvqlgwfoehnabixyclzsph +wrdmtuqjgwfoevnabixyclzdpy +krdatuqlgwfoevnabixyclzsjh +krdmtuqjgwfoevpabkxyclzsjh +krdmtuqjgwqvsvnabixyclzsph +krdmtwqjgwfoevnobixyclzspm +krdmtuqjgssoevnabixyclgsph +krdmtuqjgwfoevnafixyclzbpp +krdmtuqjowfoevxabiuyclzsph +krdmtuqrgwfoevntbixyclzspu +krdmtucjgwfoevnabixcnlzsph +krddtuojgwfoevnabixyclzzph +krdmtuqjgwuoevnabiqycldsph +kpdmpuqjgwfoevnabixyclzslh +krdmtuqjgwfoewnabixyzxzsph +krdmtuejswfoevhabixyclzsph +krdmtuqggwfoevntbikyclzsph +krdmtuqjgwfoevnabixydlhnph +krdmtcqjglfoevnaxixyclzsph +krumyuqjgwfoevnrbixyclzsph +kgdmmuqjgwooevnabixyclzsph +krdmteqjgwfqevwabixyclzsph +krdmfuqjgwfpevnabixyclzspq +erdmtycjgwfoevnabixyclzsph +krdmcuqjgwfoevnabixjglzsph +krdmtuqjgtfoeunabixiclzsph +krdmtuqjgwfoevmqbixyclzspu +krlmtuqjvwfoevnabikyclzsph +krdotuqjgwfoevnagrxyclzsph +krdmtuqbgwfoefnabixyclasph +kwdmtuqjgwfosjnabixyclzsph +kydmtuqjgwfoevcabixycezsph +crdmtuqjgwloevnabixkclzsph +krimtuqhgwfoevnbbixyclzsph +krdmjuqagwfoevnabicyclzsph +krdmtuqdgzfoevnabixydlzsph +krdmtuqjgwwoevnaqixyclzspf +krdmtuqjgwfoevnabdxyzvzsph +krdmtuqjgwaofvnabixyclzsnh +krdmturjgwfmevnabixyclzspn +krdmvuqjgwboevnabixyolzsph +krdmtuqjgwfomvnabijyclzspx +bedmtuqjgwfoevnabixyslzsph +krdmtenjgwfoevnabixyclzsqh +krdmtuqugwfoevnabixpcdzsph +krdmtuqjgiloevnabrxyclzsph +krdmtupjcwfoevnabixyclwsph +kremtuqjgwfoevnabixyyjzsph +krdmtuqjgwnoovnabixyclzshh +qrdmtuqjgwfoevnabixyciasph +krdituqjgbfoevnagixyclzsph +krdmnoqjgwfoqvnabixyclzsph +krdmtuqegwfoevhkbixyclzsph +krdmkucjgwfoevnabixnclzsph +krdmtuqbnwpoevnabixyclzsph +krdmttqjgwfoevnabixyclbspz +srdmtubjgwfrevnabixyclzsph +krdmruqjzwfoevnabixyclesph +ardmtuqfgwwoevnabixyclzsph +yrumtuqjgwhoevnabixyclzsph +rrdmtuqjgwfoevnabsxycwzsph +krpmtuqjgwfoevdabixyclzzph +krdmuuqjgwfoevnabixyclriph +krdmtuqjgwfobvnabixyvgzsph +krdmbuujgwfoevnabixycczsph +krhmtuwjgwfoeqnabixyclzsph +krdwtuqjgwfoevnkbixyclzzph +krdmtuqjgwkoeqnabixyvlzsph +kadmtuqjgwfoednabcxyclzsph +krdmtyqqgwfoevnabizyclzsph +krdmtuqjgnfoevnabiyycmzsph +krdmtuqjcwfouvnabixyclznph +krdmtuqjjwfcevnqbixyclzsph +krdmtuqfgbfoevgabixyclzsph +kkdmtuqjgwfoevnapixyclzsth +nrdmtuqjgwtoevnakixyclzsph +krdmtuqjglfoevlabixdclzsph +zrdmtuqjgwfoevndbixbclzsph +krdmeuqjgwfoeenabixyclrsph +krdmoaqjzwfoevnabixyclzsph +krsmtuqjgwfoevnwbixyclzsfh +kadmtuqjgwfoqdnabixyclzsph +krsmtuqjgofoevnabixkclzsph +krdmtuqjdwfoevnibixdclzsph +mrdmtuqjgwfouvnabixyclzfph +trdmtlqjgwfoevnabixyclzjph +trdmyuqjgwfozvnabixyclzsph +krdmtiqjgwroevnabixyclzspk +erdmtutjgwftevnabixyclzsph +krdwyuqjgwfoevnaaixyclzsph +krdmthqbgwfoevnabixyclksph +krdmttqjgwfoivnabixyclvsph +krdmtuqjgwfoefnabixyflgsph +khdmtuqjgwfoevnajixyvlzsph +krdmtuqvgwfoevnasixyclzspt +krdmtuqjgkwogvnabixyclzsph +krdmtuqjgwfoevnaboxpglzjph +kadmtuqjgwfoxvnabixyclziph +krdmtuqjfwfoevnabaxycbzsph +krdjtuqjgwfoevnabiryhlzsph +krdvtuqjgpfoevnabcxyclzsph +brdmtuqjgwfoevnafixyqlzsph +krdmtuqjgwfoevnavixxcllsph +krdhtuqjkwfoevfabixyclzsph +krdmtuqjgjfoevnawixyclzsuh +krddtuqjgwfoeqnabiwyclzsph +krhmtuqjgwfnevnabinyclzsph +kedmtuqjgzfmevnabixyclzsph +qrdmtuqjgwfoevntbixyclzxph +krdmtuqsgwfoevnabixvclzrph +scdmtuqjgwfoevnabixtclzsph +krymtuqjgjfolvnabixyclzsph +krdmtuqjgwfkevnablxyclzskh +krymtuqjswfoevnabixyclzvph +krdmtuqjhwfoevnabixycwzspd +krdmtuxjgwfoevnabyxyclzzph +krdmtlqjgwfovvnabilyclzsph +krdmtuqjgwfoevnaaijcclzsph +krdatrqjgwfokvnabixyclzsph +krdmtuqjgwfoevnaxifyclzkph +krddtuqjgwfoevnabixccozsph +krdmtuqngwfoevnabiyycxzsph +krdmtumdgwfoevnqbixyclzsph +krdmtuqjgwfoevnabixyxlmsch +krdmtudzgwfoevnabixtclzsph +krdmtuqjgwfoevnpbixyclhspl +krdmtqqjgwjoevnabexyclzsph +kydmtuqzgwfoevnabixyclwsph +krdmeucjgwqoevnabixyclzsph +krdmtuqjghfoevjabixyclzspp +krdmtuqjgjfwevnabixyclzskh +krdmkuhjgwfoevnabipyclzsph +krdytuqjgwfoevnabibyclztph +krdmtuqjgwfpevnabisyzlzsph +kmdmtgqjgwfsevnabixyclzsph +krdmtuqjgsfoevnabijyclzszh +krdmtuqjgwfoevnabivyclzuuh +krdstuqjgrfoevnabixyclzspu +jrdmtuqjgwfotvnabixyclzspj +krdmrumjgwfoevnabixeclzsph +krpmtusjgwfoevnabioyclzsph diff --git a/2018/inputs/20.txt b/2018/inputs/20.txt new file mode 100644 index 0000000..620f018 --- /dev/null +++ b/2018/inputs/20.txt @@ -0,0 +1 @@ +^ESEEEESSWNWSWSEESESENENNNW(SSWENN|)NENWWWWWNWNWWS(SWSEESE(SSWSWNWSSSESWWSSSSEEESWWSESSEENN(WSNE|)NENEEEEESSSEENNNNENEEENNWWS(WWNNNENWW(NENNNNNEEENWNNWWWWWWWSWNNNWNNEES(SENNNWNNWNNNWWNWSWNWNNENNEENNNWSWNNNWWNWWWSWWSEEEE(NWES|)SENESSS(EE|WNWSSSSE(NNESNWSS|)SWWNNNNNWN(E|WWWWNNWSWWSWWWWWNNESEENNEEE(SWWSNEEN|)NWWNWNNWWSESWSE(E|S(WWNNNNWNWWNNENNWNWNNNNWSSWWNENWWWNWSSSWSSENESEEEE(NWWWNWNE(WSESEEWWNWNE|)|SSE(SWSWNNNWSSWSSSWNWSWNNWNNN(NWSWWNENWWNWWNWWNNNESSEEES(W|ENNENNESENNWWNNWWNWNNNWWWSEESSWSSENESESE(N|SSWSWNW(S|NWN(EESEWNWW|)WWNNE(NWWNNE(SEEWWN|)NWWSWWWN(WSWSEEEEESSSE(SSSSWSSWNWSSWNWWWNENEE(SWEN|)ENE(S|NN(ESSNNW|)NWSWNWSWWSW(NNNEN(NNN(WSSSNNNE|)E|ES(SWEN|)EEEN(ESNW|)WW)|SE(SWSSSEEESWSSESSSENNNENEN(WWSWENEE|)EEESSWW(NEWS|)WSWSEENESSEEENNNW(SWSEWNEN|)NNE(SESEE(NWNWESES|)SSSWSW(NNNESNWSSS|)WSWSSWWNENWN(EE|WSSSWSWWNWWNWSW(NNNNNESSE(NNNWWNNE(NWES|)S|EEENE(SSSW(S|WN(W(WW|S)|E))|E))|SESWSSSESESEEEESWWWSSWWNENWNW(N|SSSSSSEEENN(WSWNSENE|)EEENWWNEEESSSSSENENNENNNNWWW(SEESSW(N|SS)|NNNWWSS(ENSW|)WNW(NW(S|WNENNESSE(S|NEEENEEEESWSWNWS(WWW|SSSEENN(WSNE|)EEN(W|NEENENEEEEESSWWN(WWSWSEE(SENEESENNENEESSW(N|SEENNNEEEE(SWWSEESWSWSSSSSSESSENNEESESSWSWWWSWNWSWNWSSWNWWWWWSWWNWNWSWWNNE(NWWW(NENNNENEENNNEE(NWWNWSSSSWNW(NEWS|)SS|ESWWSEESSWNWSSESWWNNWSSW(SEESES(W|EENN(NNEESWSSEEN(W|NEENESENENE(NWWWNWSS(EE|WSWNNWNNESE(NN(E(SEEES(ENN(N(E|NN)|WWW)|W)|NN)|WW(WSSSSE|N))|S))|SSWSSEE(NWES|)S(WWWWNWSW(NNEEES|WS(WNWSW(S|W)|EEE))|EEEN(N|E))))|W(S|W)))|N))|SWSESWSWNNWWSWNWWWN(WWSESWSESESSEEEEENESSWSESWSESSENESENNNNWSW(SEWN|)NNENENENN(W(WS(SW(S|NWWN(WSSWWNENWW(SS|N(WSNE|)E)|N))|E)|NNN)|ESEE(NWES|)SSWW(NEWS|)SESSSWNW(N(N(N|W)|E)|SSESSESSSSSWWNENNNWN(WWWWWSWSESWWWNWWWNNW(NEEEEES(WS(WWNE|ES)|ENN(ESNW|)NNWSWS(WNWSWWNNE(S|EENE(S|N(EESWENWW|)WWSWNW(NN(ESNW|)N|S)))|E))|SSSEESE(ESSWNWWW(NEWS|)SSESEESSENESESWWWWWW(SSSSSSSSEESESSEENESEENENENESSWSESSESWSEENESSWSEENEESENNENWNNENEEEEENWWNWNWWNWNNEENNWSWWWSESSSSSE(SWSWSESSWNW(S|NWNENNNE(NWWWW(NEENWNNWNWSSWNNWSSSES(ENENSWSW|)WWWWWNNNENEE(NWN(ENNW(NNNWS(S|WWN(WWNWESEE|)ENNNESES(W|EEEE(NWWWN(W|NESENNE(NWWSWN|S(ENSW|)S))|ESSESENENN(WSWNSENE|)NNNNESENEENWWNNENEEEENEENNNNESSEESSENNNWWNNWN(WWS(E|WSWSWWSWNWSWSW(SSWSESSENNNEN(W|NESENENES(SWEN|)ENNE(N|SS))|NNENEENESENENWN(EESNWW|)WSWWWSE(WNEEENSWWWSE|)))|EN(ESSSENESENEEEEESESENESENEESSENNNESSSESESWWSSENES(ENNNNENENE(NNNNWNN(WWNWWWSESE(SSEE(NNWSNESS|)ESWWWSSW(SE(ENEN(E|W)|S)|NNWWWSWWWWWNWNENNNNWNWW(NEENWWNEEESEESWS(WNSE|)ESSSW(SSES(EENNNW(S(W|S)|NENEE(N(EEE|NNWSWNNEENWN(WSWWNWN(EE(EE|S)|W(NEWS|)SWS(WNWSWNWWSWNW(NE(EEEEEE|N)|SSES(W|ENE(SE(N|S)|N)))|EESEESSS(S|EE)))|E))|SSW(N|SSENE(SENSWN|)N)))|W)|NN)|SESESSWSSWNNN(WSSSWWWN(WS|EENWW)|N|E)))|N)|EES(SSESWENWNN|)W)|SSWSWSEEE(SESEEN(EN(EES(EENWESWW|)S(SSSS|W(N|W))|W)|W)|N(W|N)))|SSWSWWSWSEEEE(N(NESE(E|N)|WW)|SSSWWNENWWSSSWSSESENN(W|NESSSSWWWNWWSESESSESENNWNEEESWSSESWSWWWSESENEENEN(NNWESS|)EEESSEEEENWWNW(S|NNEEEE(NNWWWS(EE|W)|SS(WNW(S|W)|EEN(EEENWNENN(WSNE|)NESENESEENNNEESWSSEEN(W|NEESENENENWNNWWNWNENESEENNENWWWS(ESNW|)WNWNEEENNESSEENWNENNENESSEESEESWSWSWNN(WSW(NN(N|EE)|SSSW(SSW(SS(WNNWWEESSE|)EEENNN(WSSWENNE|)EENESENNN(WSWWSWNN(SSENEEWWSWNN|)|NESSSEENWNENWNWNNNESSENNNWNWSWSSWNNWW(SEWN|)NNNWWNENNWNENESSEENNNW(SS|NNWWNENEEENNEESSW(SESSWSW(SSESSEENNW(S|N(W|NEES(ENENWNENEENWNWSWWW(NNENNWNWNEENNWSWWWSESSS(E(N|E)|WWWWSS(EENWESWW|)WSWSWWNNNWNNENNWSWWNWWWSWSWSWWSESEEN(NESESSENENE(NNWWNWS(SE(S|E)|W)|SSSE(SSWWWSESSSSSSWWWSEESENESSSENNNNESE(NNWNNNE(SSEWNN|)NENWNW(SWS(SSSW(S(S|E)|NNNN)|E)|NEESEESW(ENWWNWESEESW|))|EESWWSW(SSWWWSWS(E|WWSWWSWNNENWNNWNEENE(ESE(N|SE(ENWESW|)SWWS(E|W(S|NN(WSNE|)(N|E))))|NNWNWNEEENWNNENWNWWSWWSEEE(SWWS(EE|SWSESSE(E|SWWWSW(SSEE(N(N|W)|ESWWSESWSSWNNWSW(SSSEN(N|ESEESENENN(WSW(NNENNSSWSS|)W|ESSEE(SSESSENESSWWWNWN(NWSWS(E|WSS(WNNNEN(ENEEWWSW|)WWSWNW(SWS|NEE)|S))|E)|NENWW(NEWS|)S)))|N))|WNWSWNNEEE(EN(ESNW|)WWNNNEE(SWSEWNEN|)N(ESNW|)NWNNNWWWWWNWNNNEENNENWWSSWWSWWSESSWWWS(ESEEEN(NNN|ESSSEEENWWNEEEESSS(W(NN|WWWWSEEESSWWN(E|W(SSSSES(ENNWNEEENNN(SSSWWWEEENNN|)|WWW)|WNNNW(NEWS|)S)))|E)|WW)|W(W|NNEE(E|NNNNNEENESS(WWSEWNEE|)ENNNWWNWWSS(ENSW|)WNW(SSEWNN|)NWNNNEENNESESSS(WW(S|N(EN|WS))|ENNEENNWNWNWS(SESEWNWN|)WNNENNWNNESEENWNEESSESEENWNNNW(SS|WWWNNESEEEEEENNNEENNNNWWWN(EEEESSSSSENNENWNEN(EEESESSWWN(E|W(NEWS|)SSSSSSSENESSWWWWWSEEESESWSESENENWNEN(NEEESENNWWWNW(NWNENWW(NEEESESEEENWNNENESESW(W|SEEEEENNNENESSSSENENNESEESESESSENNNESESWSSWSEEENWNEESENNWWNEENNNESESWSSSESENNWNEESE(SWSESWWWSESWSESSSSWNNNWNNNN(WSSWN(N|WSSEESSSSSWSSEEN(N(NNN|ESENESE(NNWNENNW(NNNESS|S)|SSSSSSSWNNWSSSEESSSSSWNWSWWNENWWSWWNNWWNWNENWNWSSSWSWNNW(NNENNNWS(S|WNNEENENESENENESE(SSESSEEE(ENE(NWW(NEE|SWNWS)|S)|SSSSSES(SENNSSWN|)WWNNNWSSSW(NNNNEENWWWNWWWS(EES(SE(SSWNSENN|)N|W)|WNNN(WSSSSS(W|S)|EEE(NWES|)S(E|WW)))|S))|NNENWWNWNWSWSES(WS(WWWS(E|WWS(EE|WWNENEENNENENE(ENNWSWWSWWNWWWSWWWWWWSEEESWWWWSEEESENENEESS(W(N|WSEESWWWSWWWSESSWS(WWNEN(E|WWWWWSS(ENESE(S|N)|WNNWSSWS(SWWWWNENNNWSWNNWNNNESSEENWNNNNNWWSSWNN(NEENNNN(WWWSSENESSW(ENNWSWENESSW|)|NES(ENNN(WSWNSENE|)ESSSENNNNN(SSSSSWENNNNN|)|SSSSEESWSSESEESSWNW(WNSE|)SSS(WW|SES(WSESWENWNE|)ENNN(WSNE|)EES(EENNNENNWSWSWW(SEESNWWN|)NEN(WWNW(NNNWWEESSS|)(S|W)|ENEEESE(SWSESWWSSENESENNENE(SENE|NWWS)|NNWWWNNNESSEEE(N(ENWNENWNN(ENESENESEESWWSWSW(SSENESENN(W|EEENESENNESENNEE(NWNWNWSWSWS(EENEWSWW|)WW(N(WW|NNN|E)|S(SWWEEN|)EE)|SESWW(N|S(EEESEE(NWES|)S(SESENSWNWN|)WW|SWW(NEWS|)(S|WWWWWS)))))|NN(E|W))|WSWWN(WNSE|)E)|WW)|S)))|W))))|WWSWWS(WNNE(NWWSSNNEES|)E|SEESEN(N(WW|N)|E(EENNSSWW|)SSWWSW(SWSS(WNNSSE|)ESENENN(WSWENE|)E(NWES|)SESWSEE(E|SSSESWSWSWNN(WSSSES(EEESES(WSNE|)ENENEN(WWSWNN(E|W(WS(W|E)|NENNEE))|ESE(NN|EEE(N|S(WWS(WNWWEESE|)SSESW(W|SESWS(E|WW))|E))))|WWNWNE)|NNE(NWW(WW|N)|SS)))|NN))))|E)))|SENENNEN(W|ENESENESEE(NWES|)SWWS(WWN(WSWSESE(N|SS(ENSW|)WNWSWN(NEWS|)WWSS(SE(ENWN|SWS)|W))|E)|E))))|ENEENN(WNWS(SEWN|)WWW|E))|SSSW(N|W))))|E)|E(E|N))))|SSS(SWEN|)EEESESESESENN(WNWN(WNWESE|)E|ESE(N|SWSWSSWSSSWSWWNNE(S|NWNW(NENN(WSNE|)E(ESWSSE(NENSWS|)SS|N)|WSWWSESSSWSW(WWWSWNW(S|NNWNEESE(NN|S(W|ENEE(SW|EN))))|SESSSESWS(W|SSSENEESESESESSWSSESSENNN(W|NENNESESEEESWSWWWN(N|WSSEEESSSWWNENWWSSWWN(E|WNWWNWSSSSSWNWNNE(NNWSWSSWWSEESWSEE(N|SSSWSEESENNESEESENNWNEENENNESENN(WWWSWNWNWW(NEWS|)SSE(N|SE(N|E(E|SWWS(S|WNNWSW(N|S(E|S))))))|EEENWNNEN(W|ESE(NNNW(SWEN|)NNWNENE(SSS|NWWSWSSWNNNENNNENESE(NNWWNNWWSSS(ENNSSW|)SWSWWSWSW(SE(ENEE(S(S|W)|N(ENSW|)W)|SS)|WNNW(S|NEEE(SWSNEN|)NWNWWS(WSSWWNENNENENENEEENENNNEESEESESS(SE(SWEN|)NNNNNNNWNENNWWS(SSWWS(EES(E(S|N)|W)|WNNW(SWS(SSWS(E|SWWN(E|WSWS(WN(NENNW(NENSWS|)S|WSSSENE(WSWNNNSSSENE|))|E)))|E)|NEEE(SWEN|)NNEN(WWSSW|EESW)))|E)|WWWNN(ESEWNW|)W(SSSSSSWNW(SSEWNN|)WNEN(WWSWENEE|)E(S|N)|N))|E)))|SWWSEE))|SSSW(NNWESS|)SESSWWN(E|NWWSESSSSWSWNWNN(ESENNWW(EESSWNSENNWW|)|WSSSESEEESWWSWWWWWNWSSSWNNNWN(ENESEESEN(ESEWNW|)NNN|WSWWWSWNWNWSWSESSEN(N|EEESEEE(SEESENESSSENESESEESESESWSSWWSESESEENE(NNWSW(S|W|NNEENNW(S|NENNNNNWSSWNNWNNN(ESSENE(S|NWNWNN(ENE(NNWSW(S|N)|SS(S|W))|W))|WSWWSSEE(NWES|)SESWW(WN(E|WNW(S|NENWWWSE(WNEEESNWWWSE|)))|SEEEESW(W|S)))))|SSSSSWSSWSESE(SSSWNNWWSESWWWS(WNNNENWNNNESSES(SSWENN|)E(E|NNWNNENWNEN(WWSWSS(ENSW|)WNNNWWSSE(SSWSWWWNENWWWSSWSESEESESENESSS(ENNE(SS|NWNWWN(EEE(N(W|N)|S)|W(WWNNSSEE|)S))|WNWWS(E|WNN(NWSWNWN(WSSWSES(WWWWNEENNENWNNWSWWNNE(NNWWWNENENNNWSWWWNEENNWNENNNNEEESSEEESEENNW(NENNWWS(E|WNWN(EENESEESE(N|EESESSSESWWSEESWWSESSWNWWSESESESS(WWN(WSWNNWWNWNWWSSS(W(NNNNEEENNEN(WWSSWWNENN(WWW(NNESNWSS|)SE(SSWNSENN|)E|E)|ESSWSSEE(S(ESEWNW|)W|N(NNNEE(SWSEWNEN|)NNNN(ESSNNW|)NWWSSE(SSWNSENN|)N|W)))|W)|SSEENWNE(NWNSES|)ESSE(ESWWSW(NWW|SEEN)|NN))|E)|E(S(E|S)|NNN(W|NNESSEENE(NWNW(NNW(SSWENN|)NEESES(S|W|EENWN(E|NW(WNWSWNWNN(SSESENSWNWNN|)|S)))|SS)|ES(WSNE|)E)))))|WWNENWNNWWNNENNNNWNENESSEENEE(SSW(N|WWWSEESWS(EEESEN(EESWENWW|)NN(NNES|WWSE)|SW(W|NN)))|NWWW(S|NEENNENE(NNNWSSWNWSS(SWS(WNWNEENNW(WS(E|WSSWNW(NNE(S|E)|SSESWWNW(NENSWS|)SWWSWSSWSESWSSESSSESSSSESSEENWNNNEESENNN(EESWSSE(SWS(WSSSSWNN(NNN(WNSE|)E|WSSSSWWSESWSWWNWNENNNES(EENWNENWWSWNNWSSWSESSWNWNWWNEENWNNNNESSSE(S|NNEE(NWWNEENWNWWWNEEN(ESNW|)NWSWWWWNEENE(S|EENWNWNNWSWSS(E(E|N)|WNNW(SWSSSSE(NN(EE|N)|SESWWSSWNNWWWNWNN(EEENWN(WSWNSENE|)EE(NWES|)SSSWW(SEEEWWWN|)W|WSWSWWWNWSWSEEEEESSSENNE(NWNSES|)SSSSSWNNWSSWNNWSWWSSSWWWWSESWSESEEEENWWNW(NEESEENWNEESSSEESWSEESESESEENWNEEENNNENE(NWNWSWWSSWWNWSS(EEEE(NNEWSS|)SWWW(W|S)|WNNNWNN(W(WWWNE|SSSE)|ESENENNENN(ESSSWSS(ENE(ENESE(ENWNNWSWW(NNE(EENWN(WSNE|)ENE(NWES|)SES(WSSS|ENE)|S)|S)|S)|S)|WS(ESNW|)W)|NWN(WSSS(ENSW|)SS|E))))|SENESSSEN(ESSWWWNWSW(NNEEWWSS|)SWWSESESWSESENENWNN(NEESS(WNSE|)EESSEEEENWWWNNEN(W(WSWNSENE|)N|ESS(ENEESWSESWSEESWWWWN(E|WSWSWWNEN(E|WW(NNESNWSS|)WSSSSEESENN(WWNNSSEE|)ESSENNNESSENEN(ESESENEE(SSW(N|WSS(EEEN(WW|NEENNWSWN(SENESSNNWSWN|))|WWWWNN(ENESESWW(EENWNWESESWW|)|WSSWNWSWNWSWWWWWWWNENENESS(W|EN(ESENSWNW|)NNNWWWWSWNWSWWNENEENEE(NWWNN(ESENSWNW|)WSSSWWWNNESENNWWNE(NWNWWSWWNWWWWSSWWSWWWNNESENEENWNE(EEEEEE(ENWNSESW|)S|NWNNWWSESWSWWS(EEENSWWW|)WSSWSWSSESWSESESWWWSSWWNWWNNWSSSWWNNNE(SS|NWNENENNWWS(E|WS(E|SWWWWSSSESWSSES(ENN(ENWNENN(WSWNSENE|)ESSSSSEEES(WWWWNSEEEE|)EEEN(WWNEWSEE|)EEEES(EENENNW(SW(S|WN(WSNE|)E)|NEESSSS(W|ENESEEENEENWWNWNNEENWNEENNWNNW(NEESSENESSSW(SSWSEEESSEE(SEEN(W|ESE(EN(ENEEWWSW|)W|SSWNWSWWN(E|WSWNN(E|WW(SS(ENSW|)WW|NN(ESNW|)WW(SEWN|)W)))))|NWNN(E(E|S)|WN(WSNE|)ENNW(NNE(N|S)|S)))|N)|SSS(WSSWSWNWS(WWNENEENWWN(EEE(ENWESW|)SS|WSSWS(WNNN(W|NE(SS|NN))|S))|SEESWWSEESEN(SWNWWNSEESEN|))|E))))|WWW)|W)|WWWNENNNWWSS(ENSW|)WWNNWSSWSES(WWWWNENE(S|NWWSWSSWNWSWNNWSWNWNEENWWWWWSESSS(WNWWW(SEEWWN|)NNNENWNEENNNENNWNNWSW(SSSE(SSWNSENN|)N(E|N)|NNENNW(S|NENESSSSENENENNNWSW(S(S|E)|NWNWNW(NNNEESWSEES(W|ES(EEEEESWWWSESEEN(W|ESSSWWWSWW(SSESSENEENNW(W(SEWN|)W|NEESSSEESSSWSEESENEESWSE(S(S|WWWN(WSSWNNN(WWNWNEE(S|NENWWWS(E|WWSESSWS(EE(N|ESSE(SEWN|)NN)|WWNEN(E|WW(SSWSSS(WNSE|)E|NENE(NWN(E|NN(WSNE|)N)|S))))))|E)|E))|EEE(SS|ENWNENNNEEESWS(EENENWNEENNWWWNWNNNNNNWNENESSESENNWNNENNWWS(WWS(W(NNENN(WSWENE|)EES(WSNE|)ENESEESWSSS(SSSSSSESWWNWW(SESEEEENNESSSSENNNNNNNESENEEENENNNNNWWNWWSESWSSWWNNWSSWNW(SSEEES(WWWSSEE(SWW|NW)|ENEEE(SWWEEN|)ENWN(WS|ENW))|NENNNEESS(WNSE|)E(SS|NNENNEEEESWS(WWNEWSEE|)SEESESSSSW(NNN|SSWSSWWSWSWNW(NEENEE|SSESWSS(SSEESESSE(NNNWNNNW(NEN(NESESE(NNE(EENWNENENNNNNENWWNW(NEENWWW(W(NNNNNEENE(SSWWSSSEENN(WSNE|)ESES(W|SEEEE(SWSEESWWSEE(EENNW(N(EESE(SWEN|)N|W)|S)|SSWWWN(EE|NNNW(SSSSW(SE(SWSEWNEN|)EEEE|N)|N(WSWENE|)E)))|NWNW(SWNSEN|)NEENEE(NWES|)S(WSWENE|)EEE(SWEN|)E))|E(NWNNWNWWWWWWNNNESSENNEEE(SSWWNE|NWNNWSSWNNNENENEENNE(ENNWSWWWNNNWSWWNENEENN(WWNWNWSSES(WS(SWSSSEEEN(WWNSEE|)ESSS(ENESNWSW|)SWSWWNENENWWWWNWSWSWNNENEENNNWNW(NEN(W|EE(SWSES|NW))|SSWWWW(NENWESWS|)WSSWWSESSWWSSWSWNWN(WWSSE(N|ESESWSSSWNNNW(NEWS|)SSW(SESESS(ENNESENNWNEENEENWNEESESESEESENNEEE(SWSSW(WSWSWWSSESSEEESWSEE(NNESENNESSES(ENNWNNNN(EESWSEE(ENWN|SWW)|WSWS(WNN(E|N(WSSSS(WWNW(N(EE(S|N(N|W))|W)|S)|E)|NN))|E))|WWW)|SWWWNNWWNWSS(WWNENWW(NW(SWNWESEN|)NNNNEESSW(SEES(E(NNWNENENWN(EES(S|E)|WN(E|WWSS(WNSE|)E(ESNW|)N|N))|E)|W)|N)|S)|ESWSESEN(NN|EEEE)))|NN)|EENNWSWNWWS(E|WWNNNEEENN(WSWWWSWWWN(NENN(WSNE|)NNESE(SWSS(EN|SW)|EN(EENSWW|)W)|WWSES(WWSWS(SWEN|)E|EEEESS(SE|WNW)))|E(SSS(WWWSNEEE|)EE|E))))|WWN(NWWS(WNWSWWNNE(S|NEN(NNWSWNWSSE(E|S)|ESEESWWW(EEENWWEESWWW|)))|SE(SES(SSENSWNN|)W|N))|E))|N))|NESENNNE(SEWN|)NWW(W|NEEEEN)))|E)|EE)|EESE(NN|EE(E|SWSWWN(E|W(N|SSSENEEE(SSENEWSWNN|)N)))))|SSSWWS(ESWSEE(SWSEWNEN|)NEN(W|N)|W)))|EE))|W)|S)|SSESWSSS(ENNSSW|)W(S(SW(N|S(W(S|W)|E))|E)|N))|S)|SWSW(NN|S))|W)|SW(SEWN|)N)|S(WS(WNNW(SS|WN(NESE|WS))|S)|E))|WWWW(SWSSW|NENW))))))|NEENWWN(SEESWWEENWWN|))|W)|WSE(SSWNWSWNW(N|WSWSEE(N|SSWNWSSSESESSSENNNNWN(EENNN(WSSNNE|)ESESE(NNWESS|)SSWNW(N|SWSSEESES(EN(NWNWWEESES|)E(EE|S)|WWW(NEWS|)SESWS(E|SSWNNNWSWWWNENNW(S|NWNEE(NWWNW(SSS|NNESE(NNWNNE(S|N(WWSS(WNNWWWNEENNWSWWWW(SESENSWNWN|)WNENNWSWWNEN(EEESESWSEENNN(ESES(E(NNWNSESS|)SSES(ENSW|)W|W)|W)|NNWW(NEWS|)SESWSS)|S)|E))|S))|SE(N|SS(EE|S)))))))|W)))|E))|EE)|E)|SW(SESWENWN|)NN))))|NEN(EEE|N)))|W))|SS(S|E)))))|EE(NWNNSSES|)EE))|EEENWW))))))|E)|ES(WW|EE))))))|NWW(W|NNESENN(E|WWWNNNE(EN(E|WWWW(NENNE(E|NN)|W))|SS))))|W)))|W))|W)|N))|S)))|NENN(WSNE|)ES(ENEES(W|ENE(SSWS(WNSE|)S|EN(EE|N)))|S))))|S(ESNW|)W))|SSS))|EEE(NWES|)ESEESWW(EENWWNSEESWW|))|N)|WWS(WNW(NENWNNEEESSS(WNNWESSE|)ENNNNWWNNWNEESE(NN(ENNESE|WWWWSSW(N|SS(EENWESWW|)S(SSS|W)))|S(ESSNNW|)W)|SSS)|E))))|NNNEEEES(WSWNWS|EESS(EEEEE(SEWN|)NWNEN(WN(NW(SSSWW(SEEWWN|)NWN(W(S|W)|EE(NWES|)S)|N)|E)|E)|S)))|E)|E)|S)))))|S)|S)|EN(EESWENWW|)N)|E)|E)))|N)|ESE(SWSSWENNEN|)N))|EEEEE)|NNN))|NNWW(SEWN|)W)))))))))|S))|EE))))))))|W)))|W))|N)|NNNNWNN(ESNW|)WWS(ES(SSENSWNN|)W|WWWSWSW(SEENSWWN|)WNWNWSS(E|WNWNN(E(S|EEEES(ENEEEWWWSW|)(S|W))|WS(WNWW(S(SS|E)|WWWSWWSESSWNW(S|NNW(S|WN(WSWSWSW(SESNWN|)NW(S|NN(ESENEWSWNW|)W)|EEEE))))|S))|S))))|SS)|S)|WW))|W)|WWSWNWSSSWWNNN(ESSNNW|)WWSESSWWN(NNWSWWSEESSSEEEN(WW|ESS(WWWWSSESENN(ESSSWWSWNNWSSWNWWNNENENWNNN(ESE(S(W|SSSWSW)|N)|NWNWWSWNN(EEEE(EE|S)|WWWWSWNWSSWSEEEN(W|ENESE(SWWSSEEN(W|EESSSWWSESWWNWSWSWSESENESEENESSENESEN(NWWNW(NNE(NNE(S|NNNW(N|SS|WW))|S)|WW(WW|S))|EEESE(S(E|WWNWSSESWWSWNNENWWWWWWN(EE|WWSWNNWWSWSWNWNNWNEENNENNEENN(WSWNWNWSSWSWWNWNEE(S|ENNNN(WWSSS(ENNSSW|)WNWNWN(EESNWW|)WSWSEESWWWSWSWNNWSWNW(WWNNESEEEEE(ENN(E|WSWWN(WSWNWWWSS(NNEEESNWWWSS|)|E))|S)|SSEESSENESS(EENENEE(ESESES(ENN(W|E(SS|EN(W|N)))|SSWNW(SSSEEN(ESSSE(N|SENEEE(ESSSWSW(SEESW(W|SEEENNNW(NEENNN(EEEESSSSESWWWWSSSE(EEEEE(SEWN|)NNNNW(N(W|ENEE(SWSE|ENNWS))|SSWS(WWN(WSNE|)E|E))|SWW(N(WWSEWNEE|)NNNNENESENNWWNEE(WWSEESNWWNEE|)|SS))|W(WSSENSWNNE|)N)|SS|W))|WNENN(ESNW|)WSWWWW(S(ESENES|W)|N(NNWESS|)E))|N(W|N)))|W)|N(NWSWW(NENEWSWS|)WW|E)))|NWN(ENSW|)WWS(WS(S|E)|E))|WWSWWSSW(S(ESENNENW(ESWSSWENNENW|)|W)|N)))|EEES(ENSW|)S(WNWSNESE|)S))|EESWSSWWSSE(EN(ENEN(E(EENSWW|)S|W)|W)|SSWW(WSEWNE|)N(N|E)))))|N)))|N))))|W)|EESEENNEE(SWSEWNEN|)NNEE(SWEN|)NWWW(N|WWSES(ENSW|)WWWSEES(NWWNEEWWSEES|))))|E)))))))|S))|N))|N)))|N))|NN))|W))|SE(SWSEWNEN|)E)|W)))|NN(E|NW(W|SS)))|N)))|NN)|NN))|E))|W)))))))|W)))))|S)|WWS(E|SWNWN(WWSESESESSWS(WWNEN(WN(E|N)|E)|ES(W|S(EEN(EE(SWSNEN|)E|W)|S)))|E)))|SSW(WSEEWWNE|)N)|SSEE(NWES|)SWWSES)|SS))|EN(WN|ESE))|NN(EESWENWW|)N)|N))|N)))|EEENWNEESS(NNWWSEWNEESS|)))|S)|NNWNWWSS(E(E|N)|WWWWW(N(EENN(N|ESE(NEN|SW))|WWWNWWNNW(SWSES(EE|WSWW(SEWN|)N(ENW|WS))|NNESE(SSEWNN|)N))|S))))|N)|E)))))|S)))))|NWWNW(SWWEEN|)NENNNE)|EEEN(WW|E))))|N)|EE)|S))))|ESSEE(SWEN|)NN(WS|ES))|E|N))|S))))|W)|SWSESSWNWWSWSWS(WW(S|WWWNEEEENWNNEES(S|W|EN(EE|NWNWSW(W(SSSWWEENNN|)W|N))))|EEEEE(SSS|N(WW(W|N)|E))))|E)|E)|E)$ diff --git a/2018/inputs/21.txt b/2018/inputs/21.txt new file mode 100644 index 0000000..aaebbac --- /dev/null +++ b/2018/inputs/21.txt @@ -0,0 +1,32 @@ +#ip 2 +seti 123 0 4 +bani 4 456 4 +eqri 4 72 4 +addr 4 2 2 +seti 0 0 2 +seti 0 1 4 +bori 4 65536 1 +seti 16031208 7 4 +bani 1 255 3 +addr 4 3 4 +bani 4 16777215 4 +muli 4 65899 4 +bani 4 16777215 4 +gtir 256 1 3 +addr 3 2 2 +addi 2 1 2 +seti 27 3 2 +seti 0 9 3 +addi 3 1 5 +muli 5 256 5 +gtrr 5 1 5 +addr 5 2 2 +addi 2 1 2 +seti 25 7 2 +addi 3 1 3 +seti 17 4 2 +setr 3 1 1 +seti 7 5 2 +eqrr 4 0 3 +addr 3 2 2 +seti 5 1 2 diff --git a/2018/inputs/22.txt b/2018/inputs/22.txt new file mode 100644 index 0000000..e2e94a0 --- /dev/null +++ b/2018/inputs/22.txt @@ -0,0 +1,2 @@ +depth: 7863 +target: 14,760 diff --git a/2018/inputs/23.txt b/2018/inputs/23.txt new file mode 100644 index 0000000..306c4ad --- /dev/null +++ b/2018/inputs/23.txt @@ -0,0 +1,1000 @@ +pos=<61981295,70302690,50074583>, r=86817788 +pos=<-39574082,11593440,52034024>, r=86226353 +pos=<-22613800,41560771,22762338>, r=83067593 +pos=<-12414843,51978293,68300191>, r=85018769 +pos=<-12727191,34870716,52975971>, r=52899633 +pos=<-32063168,40924402,49558575>, r=74871596 +pos=<18752046,16372097,-9651854>, r=70068867 +pos=<3474631,29804741,98417262>, r=77072884 +pos=<18354169,57026789,74027645>, r=65025959 +pos=<22104105,74882695,61927007>, r=67031041 +pos=<-42133805,38530007,57591711>, r=90581205 +pos=<-47869746,22599340,42855147>, r=77956291 +pos=<-27020782,-4791281,34203354>, r=93149809 +pos=<-18487970,40655084,49627122>, r=61095611 +pos=<10137288,54171533,97007570>, r=93367254 +pos=<21836035,43430190,47217893>, r=78376026 +pos=<8216569,21003453,101684850>, r=78676489 +pos=<-40466865,34952266,70038151>, r=97782720 +pos=<72670731,-8427298,58419388>, r=97862747 +pos=<-26904810,19437248,39548346>, r=63460381 +pos=<-14862223,38537164,6158587>, r=88895667 +pos=<-4093645,28809183,65079634>, r=50307904 +pos=<-13276886,43613687,45971502>, r=55187766 +pos=<49089034,29003918,14560017>, r=57321614 +pos=<-13807521,-29104885,50131321>, r=99255387 +pos=<48476757,37188242,72540714>, r=62665037 +pos=<7140081,51751715,-8561127>, r=94827577 +pos=<-43249072,32737116,53752441>, r=82064216 +pos=<6641528,98591490,47271959>, r=91547386 +pos=<-23305462,10475650,56073326>, r=75115096 +pos=<6053316,21990329,84119652>, r=62287689 +pos=<7023331,60698763,57949984>, r=63950985 +pos=<-36608889,31399128,35446137>, r=74217136 +pos=<6817093,34966536,98116734>, r=78591704 +pos=<4957605,61740316,52702032>, r=61810336 +pos=<-2269508,-8851147,43341014>, r=63321024 +pos=<12839874,52090204,58609561>, r=50185956 +pos=<-24117273,33915884,49793440>, r=60152075 +pos=<74759590,28034712,42456610>, r=54126256 +pos=<-48197949,37668470,48713802>, r=86905688 +pos=<-465248,41562365,60498029>, r=54851108 +pos=<10694430,32208520,48027772>, r=61692668 +pos=<-8548512,14246214,83247198>, r=83761331 +pos=<43950964,33755026,90173201>, r=72338199 +pos=<-14628694,43441676,58236468>, r=68632319 +pos=<106381567,34503222,46141825>, r=91485627 +pos=<-42403687,53189612,46049581>, r=93968393 +pos=<3940021,35797440,82233626>, r=66416478 +pos=<-12215361,4082478,43661351>, r=60012674 +pos=<19860123,68466722,60165468>, r=61097501 +pos=<70777186,32758921,32118468>, r=65206073 +pos=<-38591125,46522298,54596946>, r=92035892 +pos=<22636563,105345403,45688673>, r=80723037 +pos=<-3951303,29434316,22353040>, r=52688125 +pos=<-176419819,31194464,52039201>, r=76587195 +pos=<-3596358,48726226,78390625>, r=83038642 +pos=<7182613,37282188,20126279>, r=51628082 +pos=<-25240363,51483969,55323702>, r=84373768 +pos=<21428319,64401806,57994375>, r=53293330 +pos=<-5939048,7790261,21935573>, r=71754303 +pos=<-14391272,30291007,70042112>, r=67049881 +pos=<-22323827,29920141,55916312>, r=60485891 +pos=<13475129,52193445,63897921>, r=54942071 +pos=<-3994272,15505795,89454649>, r=84155011 +pos=<475865,1537450,69193888>, r=73392255 +pos=<-10815135,44879964,69035166>, r=77056155 +pos=<11306358,28884419,64442081>, r=91273574 +pos=<14678811,33694651,48185622>, r=71901550 +pos=<3756099,71276526,21743645>, r=87431573 +pos=<40262582,59466852,61256380>, r=65445301 +pos=<11616060,70966185,64722364>, r=76397938 +pos=<3872060,39650278,107716165>, r=95819913 +pos=<9586133,45083261,78735554>, r=66558242 +pos=<77865670,42917012,73695024>, r=98936729 +pos=<-1745961,55327607,42088395>, r=56640112 +pos=<26855240,67981174,26878283>, r=61746856 +pos=<-14224458,28877026,31495228>, r=53261041 +pos=<15850501,66941649,70246547>, r=73663230 +pos=<-22483771,25856673,49504583>, r=52343508 +pos=<9442908,53159770,55875115>, r=51917541 +pos=<1959101,903989,50510107>, r=53859027 +pos=<7569188,-24881655,45995388>, r=69519533 +pos=<1336123,50534199,50773018>, r=52296589 +pos=<-6780305,30188574,97998637>, r=87293233 +pos=<-27347231,32710526,48539527>, r=60922750 +pos=<-54109318,45563567,46755290>, r=98753653 +pos=<-23931716,34591305,51177382>, r=62025865 +pos=<1842700,54313361,57870403>, r=62666497 +pos=<9906862,47176518,46588813>, r=49926624 +pos=<-5650338,36212767,99081721>, r=93270578 +pos=<-9210222,73861103,51071528>, r=86469031 +pos=<-48605170,28058111,39410284>, r=78908074 +pos=<6277738,31698726,83207681>, r=60954109 +pos=<5935953,25376812,52194560>, r=66482724 +pos=<-33349449,32090950,46515684>, r=64281651 +pos=<-1144497,68829923,72349587>, r=94649606 +pos=<68150356,106204720,129297951>, r=83514523 +pos=<8426203,98908672,49758875>, r=92566786 +pos=<16538168,48418035,65737293>, r=49942650 +pos=<19573131,82515397,58801909>, r=74069662 +pos=<98906639,46422007,45986912>, r=95774562 +pos=<12340098,62609442,59505078>, r=62099865 +pos=<-28251146,31055125,25461712>, r=75499853 +pos=<19758085,59632651,60443124>, r=52643379 +pos=<-63046046,25663836,40121278>, r=92801960 +pos=<-37359413,31532323,71313730>, r=92530910 +pos=<53387378,31226416,70902974>, r=59975761 +pos=<-111343725,90010574,65438544>, r=96905196 +pos=<39565178,36023094,48981621>, r=96285986 +pos=<-18425354,35959496,54078093>, r=60788536 +pos=<4117058,66844365,17924670>, r=86457430 +pos=<4823188,-14314294,64385895>, r=80088678 +pos=<20323219,61060408,10757887>, r=71634602 +pos=<89860271,38268711,51332073>, r=83920073 +pos=<6829746,30401653,100430131>, r=76327501 +pos=<-18163621,73955629,42658058>, r=91116552 +pos=<-9868198,28983545,82688052>, r=73865474 +pos=<-3955635,32776886,7789254>, r=70598099 +pos=<22115720,88382733,50485824>, r=69078561 +pos=<-25241164,31938266,56917737>, r=66422608 +pos=<14985873,-15753032,55823238>, r=62802267 +pos=<16643466,61628684,29386869>, r=57253552 +pos=<21580242,42328478,123256438>, r=96330398 +pos=<-25199672,13587085,61865724>, r=79689986 +pos=<25598120,-21677261,57401363>, r=63021973 +pos=<20683805,43416073,80207144>, r=55264851 +pos=<-12206963,28525784,76317729>, r=69375956 +pos=<66517337,40023722,63765750>, r=74765959 +pos=<21046583,32632182,66997632>, r=92540759 +pos=<-13138431,65411819,48286547>, r=79162230 +pos=<-33524737,76477821,155964131>, r=73103463 +pos=<-33331228,9961241,69359006>, r=98940886 +pos=<39564979,28572472,53811503>, r=61407169 +pos=<-48869811,21665479,51245298>, r=84661484 +pos=<-8710194,53780076,47547665>, r=62363657 +pos=<-7314943,55087956,46146524>, r=60875047 +pos=<-61837954,25859003,56641091>, r=98831768 +pos=<-5695240,58983811,70577156>, r=87581649 +pos=<-25981379,35101300,31842886>, r=70894580 +pos=<3669996,59130810,1907555>, r=95208068 +pos=<34776272,-4188188,70499131>, r=67808809 +pos=<-35530241,30475154,50076449>, r=68407314 +pos=<-8155622,43149031,72681791>, r=76311918 +pos=<6666752,64359993,46401448>, r=56420132 +pos=<14935236,11018971,47709423>, r=95072999 +pos=<-31457362,28416643,49636691>, r=61836519 +pos=<-16109927,48371152,51014763>, r=67821289 +pos=<42694611,33011663,86560963>, r=66726260 +pos=<10684191,49511278,21069239>, r=59412987 +pos=<-423180,40569321,15553431>, r=67093941 +pos=<-32350990,31916431,66781337>, r=83374335 +pos=<-40417062,33333028,20729982>, r=94675000 +pos=<-5784232,29640751,62496121>, r=50246685 +pos=<-15428974,17471422,52568175>, r=56737766 +pos=<-2932788,33823267,68046768>, r=57128261 +pos=<63579456,43455645,46047101>, r=57541191 +pos=<15403015,31974701,112979009>, r=81876224 +pos=<-24087841,19769551,56050682>, r=66580826 +pos=<-11649390,82772147,39945831>, r=96130620 +pos=<20266288,41030544,49627298>, r=52471876 +pos=<15271488,104802139,55747920>, r=97604129 +pos=<-17294454,29095937,38121063>, r=49924113 +pos=<-28047432,15028531,34900811>, r=73659132 +pos=<63036558,50019938,71871561>, r=89387198 +pos=<-34801957,36642230,53036734>, r=76806612 +pos=<-38144076,30407351,68440798>, r=89317810 +pos=<3512495,54767308,49076598>, r=52656960 +pos=<14274088,34274498,46377106>, r=89548213 +pos=<39329258,25136254,46456590>, r=73770931 +pos=<-43496380,31317940,30852295>, r=85616814 +pos=<14184631,31298574,54769039>, r=52386260 +pos=<80496193,20583845,74488856>, r=92746549 +pos=<-23389071,63823214,32693625>, r=96173548 +pos=<-25690209,44737890,68493032>, r=91246752 +pos=<-27606431,29594954,78055471>, r=87582356 +pos=<72441600,37663099,5449732>, r=98443349 +pos=<64033149,70075201,56633740>, r=95201164 +pos=<-41252112,41584295,58764742>, r=93926622 +pos=<-12824950,60182885,70449830>, r=95783330 +pos=<63858499,1902299,56897189>, r=77198605 +pos=<-35302433,28371559,42263514>, r=63065421 +pos=<-50193553,13029004,178032706>, r=87155339 +pos=<-10241339,30475433,65035094>, r=58077303 +pos=<27176667,88255399,39199151>, r=70021298 +pos=<3789738,63200642,58556644>, r=70293009 +pos=<-29026962,17065408,63626804>, r=81800634 +pos=<-15528112,28599049,55171449>, r=51624044 +pos=<67553889,-12734884,46684710>, r=85318716 +pos=<-22058789,25579659,47800035>, r=50491043 +pos=<65502868,77153034,48367762>, r=95482653 +pos=<52012555,29111973,69892338>, r=55475892 +pos=<7094796,39275693,83735416>, r=68242166 +pos=<1860284,40455320,92877446>, r=83797940 +pos=<11928924,-2446863,70048662>, r=66778312 +pos=<7667696,94196419,41409153>, r=86774357 +pos=<-47571004,37469854,46817463>, r=84183789 +pos=<-4156736,84010739,52365610>, r=92858630 +pos=<6056924,12888978,84519517>, r=71785287 +pos=<-47345906,30387796,45986301>, r=76045882 +pos=<-14305750,38815805,53464135>, r=58911123 +pos=<-5509681,53176769,46879448>, r=57891332 +pos=<-12499446,35923605,56390435>, r=57139055 +pos=<-52764985,37485922,49356853>, r=91933283 +pos=<-995676,157395073,-3073485>, r=52828911 +pos=<20007537,18034710,53163539>, r=53689323 +pos=<14489164,16396768,90904833>, r=66230860 +pos=<-56656961,29846250,59765242>, r=98593988 +pos=<12580077,72518760,77049199>, r=89313340 +pos=<100504676,32770164,49001641>, r=86735485 +pos=<56363428,40982042,51325603>, r=53130348 +pos=<67579027,45292106,26873551>, r=79786057 +pos=<26991023,51464352,68172728>, r=51087111 +pos=<-2477721,38040811,90549029>, r=83393046 +pos=<39812282,49420172,27946843>, r=55074069 +pos=<-7592987,58715561,48320434>, r=66954427 +pos=<7777052,28459937,51985707>, r=53419415 +pos=<-34825568,30793001,25736210>, r=81537269 +pos=<-24303136,54965408,48394944>, r=79988927 +pos=<-23117889,8738217,68644161>, r=89235517 +pos=<-25024083,8306905,47947646>, r=70876621 +pos=<2007442,56985136,59636415>, r=66939562 +pos=<-13687550,71578246,57121637>, r=94712935 +pos=<-16345760,32983233,89061217>, r=90715694 +pos=<86368374,35824210,61445425>, r=88097056 +pos=<-35743614,53334234,57645839>, r=99049305 +pos=<-15191744,62377081,28606960>, r=90616727 +pos=<15180924,74088799,62177344>, r=73410680 +pos=<87747671,31399471,31905651>, r=81030076 +pos=<490300,35168974,87629502>, r=74633619 +pos=<-7639730,47107985,53037366>, r=60110529 +pos=<-15154000,47565888,46724248>, r=61769578 +pos=<-15930553,8949295,49890450>, r=63083820 +pos=<-2085646,59550216,190147611>, r=69262241 +pos=<7225777,50890764,62861738>, r=58852281 +pos=<90275849,20142660,46920592>, r=75399045 +pos=<-26764544,42182428,46746825>, r=68019674 +pos=<76321467,29233298,55996378>, r=66010239 +pos=<-72399950,54572749,137176788>, r=75623903 +pos=<20511710,69381130,54777605>, r=55972482 +pos=<11171812,-1838585,60251989>, r=57130513 +pos=<-15322219,34977106,95397324>, r=98022178 +pos=<45186029,75515109,54316351>, r=79476635 +pos=<-33243023,32685580,54621141>, r=72875433 +pos=<-61584462,35077699,48778369>, r=97765970 +pos=<-2080973,32701858,77315532>, r=64423903 +pos=<-28378799,39591108,22227847>, r=87396852 +pos=<-8099746,62641467,55946146>, r=79012806 +pos=<-24720179,45274695,48132554>, r=70452861 +pos=<20784250,45013508,95099754>, r=71654519 +pos=<-30064753,33988072,46097252>, r=62475758 +pos=<34563348,30488217,55672227>, r=86287854 +pos=<-16742541,7677207,74209817>, r=89487059 +pos=<48717911,60141573,64839376>, r=78157946 +pos=<11980231,77201897,12503508>, r=94373076 +pos=<-35767666,29757894,59267775>, r=77118779 +pos=<-22126819,32362172,682297>, r=95461509 +pos=<-20183006,18654168,80542091>, r=88282618 +pos=<29158741,90530365,43109268>, r=70368234 +pos=<78589607,47357015,57145573>, r=87551217 +pos=<53822697,51713673,83991488>, r=93986944 +pos=<-37287747,28688663,72807970>, r=91110215 +pos=<13542941,37989744,51992083>, r=61754737 +pos=<14525371,30291586,55624740>, r=74352172 +pos=<65594982,25847880,72811378>, r=70903881 +pos=<85028254,32319009,59775298>, r=81581589 +pos=<-47952231,24568531,49936283>, r=79531659 +pos=<-21321958,21913518,49475661>, r=55095834 +pos=<-48453939,34233126,49830769>, r=84843339 +pos=<99391685,35202974,43142729>, r=85240537 +pos=<22710331,34170304,55092906>, r=91207796 +pos=<-12135705,32243191,63938331>, r=60642766 +pos=<-12338157,43480193,54115729>, r=62259632 +pos=<8622864,24881999,3805702>, r=58230495 +pos=<34000374,4364405,71395390>, r=59376643 +pos=<-19712623,50327429,47038637>, r=69404671 +pos=<-8596487,17062414,87164926>, r=84910663 +pos=<-18913938,45008114,51843283>, r=68090880 +pos=<19472967,181579393,106030809>, r=56142937 +pos=<-17173370,-3226764,55066991>, r=81678816 +pos=<63850431,62835473,23871657>, r=96602589 +pos=<-3798894,30299579,101412001>, r=87836232 +pos=<9068586,62089120,57368844>, r=62714847 +pos=<-22474207,29499886,47923819>, r=52223751 +pos=<-45651602,35036414,46323892>, r=79337438 +pos=<-12419250,32111741,56514558>, r=53370983 +pos=<12664542,52854651,103268523>, r=95784065 +pos=<22357114,12328694,108875611>, r=80401468 +pos=<-6746842,50055566,49180574>, r=58308458 +pos=<-27320265,33686937,48286622>, r=61619350 +pos=<-5359976,29458721,92619986>, r=79764181 +pos=<10052919,30248699,46342959>, r=64500134 +pos=<31603672,24458394,109318746>, r=74809324 +pos=<15363324,39635782,101274262>, r=77872183 +pos=<13846270,53578231,29556061>, r=51830690 +pos=<-15354477,46149883,46658194>, r=60488156 +pos=<-569362,85626876,46006904>, r=84528844 +pos=<10749296,42284246,82711135>, r=66571646 +pos=<-14856420,53289609,77345425>, r=97817094 +pos=<-23825436,15929136,64937891>, r=79045870 +pos=<89568342,30383137,46009564>, r=70420359 +pos=<13145554,32649278,85217834>, r=57047183 +pos=<554467,16643477,85598183>, r=74612189 +pos=<36666635,41828463,88364574>, r=71318747 +pos=<12602990,89529451,67821002>, r=97072935 +pos=<-33112360,18329619,59694200>, r=80688742 +pos=<-15561603,38236853,67667639>, r=73791835 +pos=<3519076,58523179,5256274>, r=91402635 +pos=<37058015,73816180,6497217>, r=98165326 +pos=<-485820,34664283,76480969>, r=63956703 +pos=<8046540,50222182,60417372>, r=54918488 +pos=<6698732,2095928,57478145>, r=54895175 +pos=<-110267625,103715108,49404770>, r=83596582 +pos=<14488717,37517183,47868787>, r=90880734 +pos=<11594929,31481958,92334208>, r=64546675 +pos=<13142664,33433973,51871828>, r=78783673 +pos=<14725843,21079396,84588725>, r=54995145 +pos=<17991922,28746415,53178977>, r=62665596 +pos=<21345476,109893878,54658351>, r=95532225 +pos=<99514509,32213492,45962288>, r=82149323 +pos=<37772543,40405568,108402968>, r=91040181 +pos=<16477866,1889108,-9755558>, r=86930037 +pos=<6066766,45074819,93307079>, r=84640752 +pos=<63259627,39790194,63298460>, r=70807277 +pos=<85870661,25697065,48142683>, r=66661876 +pos=<-20063299,13270466,81943036>, r=94947530 +pos=<9219021,14187810,110350611>, r=93155487 +pos=<11396690,79601451,29059476>, r=80800086 +pos=<-5992626,63895408,63403216>, r=85617223 +pos=<13745746,56178190,15154849>, r=68932414 +pos=<-19200598,41415603,54301128>, r=67242872 +pos=<66801369,67709049,33790327>, r=94508881 +pos=<-58054899,31429373,50412427>, r=92222250 +pos=<17725131,19747008,101361033>, r=70100661 +pos=<16315702,21937157,109577476>, r=77536345 +pos=<-21450279,31429149,47689387>, r=52894343 +pos=<16503867,46780903,71008828>, r=53611297 +pos=<-10617311,71781674,53581209>, r=88305651 +pos=<-18369624,34464166,58808640>, r=63968022 +pos=<-44338154,47516775,49329347>, r=93509756 +pos=<7546939,23561808,74615854>, r=49718921 +pos=<-23553075,43233473,30179868>, r=78262286 +pos=<-33728549,33419608,75400040>, r=94873708 +pos=<4130401,-415851,60422323>, r=62919529 +pos=<12199308,42656684,46658363>, r=62914010 +pos=<-10823045,40017720,87358982>, r=90525236 +pos=<54855928,43498518,54679995>, r=57493498 +pos=<12261573,29515175,45893575>, r=97366173 +pos=<15817533,48376146,72425161>, r=57309456 +pos=<22499943,43484899,49303866>, r=84870164 +pos=<15087449,40820405,15442472>, r=51945357 +pos=<2380830,39189079,87564730>, r=76698440 +pos=<10292232,61644825,58639264>, r=62317309 +pos=<-25063352,29824290,49726684>, r=56939825 +pos=<9247300,60592893,82851862>, r=86522910 +pos=<34974237,51631378,71206261>, r=62271044 +pos=<11115341,39008866,88216499>, r=68435471 +pos=<-47347839,33255463,54507917>, r=87436830 +pos=<-12385471,35476634,66586332>, r=66774052 +pos=<40297014,43609070,76102045>, r=64467152 +pos=<-25028316,48459326,70188306>, r=96001387 +pos=<29716238,95743100,36047260>, r=83200834 +pos=<-2195894,57161709,59974579>, r=71657615 +pos=<-34897564,36092514,37195303>, r=75449626 +pos=<-34350080,30930206,62762967>, r=80368703 +pos=<-13299160,-1305686,52546724>, r=73363335 +pos=<74203994,40071747,39943051>, r=68121068 +pos=<-30255218,53252625,55149209>, r=90982504 +pos=<-23708755,36047177,30518158>, r=70892646 +pos=<-42225041,28551593,47086408>, r=70188476 +pos=<45093813,91953991,40089158>, r=90747011 +pos=<20989497,-9578662,65146013>, r=59947021 +pos=<-9469151,9360043,19787978>, r=75862353 +pos=<-10455182,76182076,47046337>, r=86009032 +pos=<1489674,30920418,49075947>, r=50871653 +pos=<-1805815,40895592,59548754>, r=54575822 +pos=<22434664,50411195,76723826>, r=57025799 +pos=<1351173,-35240030,57415985>, r=97516622 +pos=<-32995557,45695405,31582059>, r=88763841 +pos=<96147879,48598772,48672050>, r=97877850 +pos=<71556712,165083816,80525352>, r=61212474 +pos=<-26738516,51821211,51973287>, r=82858872 +pos=<-45126452,24625563,45768892>, r=72481504 +pos=<-1724534,91435747,47738636>, r=93224354 +pos=<-42642617,17009143,50075464>, r=81920769 +pos=<52222152,55156460,54199932>, r=66037534 +pos=<8639285,85433958,47459393>, r=76579513 +pos=<10141717,61817092,48597374>, r=52598556 +pos=<47916267,47143215,50290112>, r=49808644 +pos=<-1999143,50275699,76700962>, r=81301257 +pos=<-41681257,20679616,56340422>, r=83553725 +pos=<35884408,41646080,79776061>, r=61765620 +pos=<4301038,52856724,21630776>, r=68579717 +pos=<-40960612,30439627,37255922>, r=75799466 +pos=<35444048,43762938,84706440>, r=68372926 +pos=<79975658,29137911,50197120>, r=63769730 +pos=<93007,44307904,61961116>, r=58501565 +pos=<-32671755,39076539,66101849>, r=90175907 +pos=<-19991034,51969552,46041742>, r=70328104 +pos=<-35314188,37602800,46861313>, r=72103772 +pos=<37201145,71666894,82972323>, r=96299533 +pos=<-49234235,28079826,57132180>, r=86771712 +pos=<8312877,40022919,72604965>, r=56640475 +pos=<39181205,52790049,92153926>, r=88584204 +pos=<7068698,47606987,62510305>, r=55374127 +pos=<30603349,56814294,106942634>, r=98819430 +pos=<16115552,28332758,35601360>, r=54887656 +pos=<10074393,95989908,47950308>, r=86191298 +pos=<-5591354,49710053,47446079>, r=55073040 +pos=<-16059874,70092354,52417407>, r=90895487 +pos=<-3286599,20110685,83441267>, r=72828890 +pos=<-6936335,22574502,22140566>, r=57762340 +pos=<32992478,36116750,76761537>, r=50329801 +pos=<-89483882,3641127,125934475>, r=84985845 +pos=<45083402,48971622,84039680>, r=82553733 +pos=<16543763,-12232511,59927146>, r=61828172 +pos=<-128930120,71482570,52773218>, r=59057806 +pos=<-3321066,36249470,10553454>, r=70672189 +pos=<11035114,-4452527,60224262>, r=59853336 +pos=<-26291008,49849603,66835908>, r=95302073 +pos=<7937807,81400916,47819246>, r=73607886 +pos=<16576233,48187487,42040402>, r=56973312 +pos=<4344158,75290424,35788694>, r=76812485 +pos=<32189900,-55403075,49857150>, r=95795351 +pos=<17696418,36185949,87820170>, r=58635317 +pos=<777488,12020182,61326632>, r=54740630 +pos=<33863194,35023084,109647702>, r=82992971 +pos=<27201238,50703815,113905343>, r=96269385 +pos=<13342983,51362786,14113529>, r=65561106 +pos=<-3406344,1514525,71500197>, r=79603699 +pos=<-4003952,88211664,52599168>, r=97140440 +pos=<7364870,66805533,30929588>, r=70166122 +pos=<4337235,69741240,49137686>, r=66867686 +pos=<39289283,41543331,80086140>, r=65377837 +pos=<31061019,37187231,96617615>, r=69325024 +pos=<12227872,90873558,49623164>, r=80594302 +pos=<-29205869,34879980,48574906>, r=64986227 +pos=<-23428908,25034353,70988758>, r=75595080 +pos=<31236415,75651801,72043812>, r=83391270 +pos=<-35663336,33550704,50545521>, r=72085007 +pos=<-25373194,33271630,48939058>, r=59909386 +pos=<81186014,21770112,48774152>, r=66535373 +pos=<-36266473,21205391,64408172>, r=85681063 +pos=<46509791,41930052,-8736829>, r=90965014 +pos=<-22028107,15234691,51487555>, r=64492638 +pos=<-20542339,31539802,48757530>, r=53165383 +pos=<13662571,56928981,15523678>, r=69397563 +pos=<-12746344,18867316,85938166>, r=86028894 +pos=<-301007,47558794,60352290>, r=60537813 +pos=<32207624,60299805,78729522>, r=75695968 +pos=<100081770,31328053,46754080>, r=82623316 +pos=<-48070787,30652729,47098499>, r=78147703 +pos=<3499835,47702960,54008261>, r=50536940 +pos=<-30212070,27990135,63986849>, r=74514607 +pos=<-15832151,28224015,56445561>, r=52827166 +pos=<-67978767,28737500,46365512>, r=95407212 +pos=<-30015019,22627881,66498575>, r=80097431 +pos=<-3376964,87518399,46889764>, r=90110663 +pos=<-12133745,41888151,15297059>, r=80379652 +pos=<-3430750,43859378,-4475364>, r=93420295 +pos=<10612582,58698878,71450281>, r=71862044 +pos=<-16853417,30239412,55512427>, r=54930714 +pos=<9856655,-15034177,76105296>, r=87495006 +pos=<19700487,14896792,94233323>, r=65848189 +pos=<90908533,40366432,47407308>, r=83141710 +pos=<53053613,45815347,47231085>, r=50559042 +pos=<91606120,30241005,62870344>, r=89176478 +pos=<6549177,28253488,45947118>, r=89716871 +pos=<-54966251,31984766,51327953>, r=90604410 +pos=<11739879,47302011,70593259>, r=58480946 +pos=<17782015,-43385757,45900297>, r=77715722 +pos=<-22321136,33175591,26785779>, r=70365922 +pos=<7447288,64317364,46803776>, r=55999602 +pos=<7212096,101522192,49782085>, r=96417911 +pos=<9756698,57513943,50726200>, r=50809212 +pos=<53938302,42703477,85380074>, r=86480889 +pos=<6127018,32634301,81765609>, r=60598446 +pos=<16024259,75089269,42148970>, r=58570841 +pos=<-14467950,30833664,53148474>, r=50775521 +pos=<1055620,-8213227,49647151>, r=63016576 +pos=<20109959,34289334,98011242>, r=64516119 +pos=<-51406886,30261849,39781808>, r=83541835 +pos=<21609187,48166640,103039225>, r=81922186 +pos=<-37318020,42076555,46223326>, r=77943551 +pos=<-9802864,50149053,57309602>, r=69587023 +pos=<8892924,30956296,4508427>, r=59209772 +pos=<17951962,38815438,50096954>, r=68485096 +pos=<12306030,97501425,46533603>, r=84054466 +pos=<-37463875,31083117,49553934>, r=70426366 +pos=<92230728,52683980,47015111>, r=96388808 +pos=<9364608,56647782,54993450>, r=54602057 +pos=<8684942,36838535,105538060>, r=86017275 +pos=<-35827611,42789189,57956518>, r=88898907 +pos=<5807845,31720781,7757680>, r=59810369 +pos=<-25365859,48253374,51239130>, r=77183993 +pos=<-13706311,23188045,2328735>, r=83730603 +pos=<-1053434,40958215,58697392>, r=53034540 +pos=<16686564,43884661,76779893>, r=56303739 +pos=<94046858,44171067,48044994>, r=90722205 +pos=<-59177933,25088148,47504944>, r=87806389 +pos=<-18654288,54793837,56331529>, r=82105172 +pos=<113519092,134203172,41554166>, r=95154840 +pos=<9436438,34715386,46078979>, r=73810378 +pos=<49732913,61362619,75247356>, r=90801939 +pos=<-54495041,22320842,50939618>, r=89325794 +pos=<12427539,17900057,11259909>, r=53954136 +pos=<16888421,45562882,95425764>, r=76425888 +pos=<-13394846,17877372,48322242>, r=50051600 +pos=<-20925432,28703245,52084455>, r=54038872 +pos=<8561924,38380609,101695915>, r=83840427 +pos=<76633366,35686884,48280680>, r=65060182 +pos=<15355031,32838431,53406732>, r=83822095 +pos=<-22241568,21612015,21308708>, r=74861862 +pos=<-45540364,39478825,56854957>, r=94199599 +pos=<-130761639,-7225545,18556230>, r=71625415 +pos=<12371981,60358241,50483820>, r=50795545 +pos=<-52881118,38556375,50525246>, r=94288177 +pos=<-5508845,44982595,39309821>, r=52836406 +pos=<-12223578,42705080,48054452>, r=55308618 +pos=<19782229,-391087,65138940>, r=51959480 +pos=<11688897,65712575,56641017>, r=62990663 +pos=<26728983,4877916,77607591>, r=57803924 +pos=<-66749809,31885857,41453884>, r=98836603 +pos=<12947494,40474371,72186292>, r=52038612 +pos=<22710949,73206326,90156950>, r=92977765 +pos=<21418285,58754538,74497516>, r=64159328 +pos=<-14006029,39388620,45791459>, r=51511854 +pos=<32331392,-9548718,53912995>, r=54138363 +pos=<-11103143,48665873,60597818>, r=72692378 +pos=<8404016,40264319,-15387292>, r=88902405 +pos=<-60697351,19761606,51535474>, r=98682907 +pos=<113332017,31654847,49314512>, r=98760760 +pos=<-17968649,23774520,26514627>, r=63220547 +pos=<-7891448,38548696,51246202>, r=50011819 +pos=<-36243928,28580831,31232834>, r=75246710 +pos=<2236746,78152395,33336820>, r=84233689 +pos=<-42646767,27988371,50996303>, r=73957310 +pos=<-12975938,19343337,62716304>, r=62560618 +pos=<-6698310,59281250,50138827>, r=68443906 +pos=<-29169469,6610144,55165008>, r=83936144 +pos=<-859099,48228088,68790664>, r=70203324 +pos=<-53259426,43091307,49454062>, r=98130240 +pos=<40051035,15273208,52961854>, r=55405641 +pos=<8599969,22173989,57555102>, r=96158345 +pos=<11561358,34996323,107452493>, r=83213190 +pos=<12971841,75769901,53455514>, r=68579059 +pos=<-24609077,31137632,12599716>, r=84801836 +pos=<39964941,58818274,67271078>, r=70513393 +pos=<11590874,44091058,16246818>, r=57908243 +pos=<11534010,42492557,73281128>, r=56565109 +pos=<46029692,44356665,33034407>, r=51140346 +pos=<230818789,28332006,48666836>, r=77009932 +pos=<-49307134,28877489,51162598>, r=81672730 +pos=<-24858611,61344602,49583599>, r=88112245 +pos=<-33971422,31026034,46645662>, r=63968617 +pos=<-14920621,60364341,48024490>, r=75635084 +pos=<-18886432,44383739,46645651>, r=62241356 +pos=<63367787,57050728,56716295>, r=81594314 +pos=<-29235501,30020585,46865414>, r=58446946 +pos=<-1116549,51739608,46803263>, r=51985095 +pos=<-12898335,8922965,49532990>, r=59720175 +pos=<11377440,35121435,54012286>, r=63237886 +pos=<-28362629,38084006,47961632>, r=66733755 +pos=<-32732759,53759806,34185847>, r=93961530 +pos=<-2049132,35100887,26872869>, r=51932182 +pos=<10307391,63192491,78308824>, r=83519668 +pos=<-11173886,50879581,47031969>, r=61411041 +pos=<-6714487,69428860,48945046>, r=77413940 +pos=<-35145310,126288277,94537390>, r=86514887 +pos=<15372059,77344628,57152598>, r=71450857 +pos=<-5534049,28501573,47802916>, r=70800310 +pos=<30282369,-27855631,57777471>, r=74260879 +pos=<27578388,34577846,94631718>, r=61246950 +pos=<5377307,28529784,46392652>, r=82994735 +pos=<-9288964,40034367,85892017>, r=87541479 +pos=<32663376,50111633,96347262>, r=83581281 +pos=<64590061,24883190,74402048>, r=72454312 +pos=<6011059,52895297,-9651139>, r=98190405 +pos=<-40075559,29164760,46796031>, r=68361786 +pos=<-27324257,33280398,58797836>, r=71727947 +pos=<65478625,51242475,73962244>, r=95142344 +pos=<-8161052,44514515,51881665>, r=56882708 +pos=<37117480,70516429,65453164>, r=77546136 +pos=<-66556175,24793456,46807708>, r=94782274 +pos=<6745175,-9697218,46249405>, r=55413236 +pos=<-15842202,54067556,49741202>, r=71976478 +pos=<-26234670,32761687,62384539>, r=73706383 +pos=<27047080,45210798,96262259>, r=72979567 +pos=<-54875381,19475504,41999639>, r=88941400 +pos=<15588049,51830394,45712337>, r=63164637 +pos=<78521098,9084198,53510654>, r=81292772 +pos=<-35117158,30884180,40930824>, r=66725315 +pos=<38517388,31310367,53377273>, r=93263507 +pos=<-34824848,35863485,57039123>, r=80052924 +pos=<87999262,21593229,36952685>, r=77127999 +pos=<-14970039,39281480,31602555>, r=64303877 +pos=<30996868,32710257,-7944148>, r=65439616 +pos=<-46544578,32730823,48455778>, r=80056612 +pos=<-25655223,54235827,24268664>, r=97277174 +pos=<-31661104,34739101,46810221>, r=65535871 +pos=<-15725105,33623089,58648908>, r=60322582 +pos=<30366481,48524611,105759957>, r=89110268 +pos=<7896511,67058144,60224279>, r=71711348 +pos=<8886133,36820409,69879921>, r=50139913 +pos=<-35009499,24967338,48346229>, r=64600051 +pos=<12236743,61232811,36406256>, r=54244674 +pos=<32133015,71147471,65672434>, r=73411928 +pos=<-4312430,48491142,58819757>, r=63948774 +pos=<-11255504,48618070,49019953>, r=61218979 +pos=<-36126448,28661597,45905741>, r=63019487 +pos=<6995492,-14641677,39110487>, r=64076982 +pos=<-494882,62507397,74981307>, r=90309172 +pos=<21658971,20515757,32538766>, r=68078733 +pos=<-42721200,2165630,50987236>, r=97754561 +pos=<-46441522,14810192,60365689>, r=98209160 +pos=<48051150,31166319,50307623>, r=70921992 +pos=<28821739,29694631,-1122960>, r=53427671 +pos=<-54273229,34572094,50463893>, r=91634895 +pos=<14673784,34863932,82993530>, r=55509157 +pos=<-32934723,17649588,51138183>, r=72635067 +pos=<-50994378,41060824,52259311>, r=96639953 +pos=<-13412903,29052830,62027839>, r=56819094 +pos=<16028543,72922360,86313287>, r=95532757 +pos=<-29190239,30088199,43593943>, r=57339282 +pos=<-67676350,28809916,49909454>, r=98721154 +pos=<-43374507,39597274,53913745>, r=89211024 +pos=<-27366900,30364601,50115222>, r=60172177 +pos=<16917628,52399768,64291470>, r=52099066 +pos=<41279617,21014635,54307699>, r=93725431 +pos=<1365818,19740622,70504983>, r=55610202 +pos=<-54647289,29012271,49857475>, r=85842468 +pos=<44221414,66917783,53886884>, r=69485079 +pos=<-9940873,70529264,26788845>, r=95336159 +pos=<-2891536,43027095,81243592>, r=79487809 +pos=<16856578,70770998,65638794>, r=71878974 +pos=<48647431,57474901,3221288>, r=96689472 +pos=<18398962,37387340,106423442>, r=77737407 +pos=<6875506,40281303,93455690>, r=79187050 +pos=<2454291,28249463,81600089>, r=59720809 +pos=<-1468549,29220087,631469>, r=71712205 +pos=<1576323,77863026,52114347>, r=80726896 +pos=<11328724,-1103809,57250256>, r=53237238 +pos=<14166873,32412130,88906135>, r=59476952 +pos=<68172516,66679724,50794113>, r=90105431 +pos=<-4882904,63239852,64521058>, r=84969357 +pos=<-39573626,43281992,58908860>, r=94089955 +pos=<47082853,25450033,45728957>, r=77686997 +pos=<30259034,36081601,79825507>, r=50625134 +pos=<13485963,34007713,111156423>, r=84003646 +pos=<-103414983,93539548,30098680>, r=85922019 +pos=<-6802701,-3790574,59234245>, r=76039201 +pos=<82390172,51540341,50478214>, r=88867872 +pos=<5396715,-12159909,37977747>, r=64326869 +pos=<60082922,38998779,61741375>, r=65282109 +pos=<-16364819,10714145,61687053>, r=73549544 +pos=<-58301485,30719708,55794510>, r=97141432 +pos=<16352057,56953747,89166657>, r=82093799 +pos=<-34630538,59464956,51639108>, r=98060041 +pos=<490228,30703545,109025168>, r=91563918 +pos=<-6013632,8426824,52874814>, r=56673453 +pos=<-36209880,25159205,51113229>, r=68375671 +pos=<17796723,1411910,80111570>, r=67114697 +pos=<-31889116,28510083,45862954>, r=58587653 +pos=<19168448,33254095,39684567>, r=98395168 +pos=<-6095859,46062067,73594989>, r=78078378 +pos=<-304797,59105732,57302395>, r=69038374 +pos=<55099745,36449947,86305322>, r=82314003 +pos=<33473188,6098096,-4438050>, r=79487709 +pos=<-31472777,36089404,51315048>, r=71202749 +pos=<15962314,28423814,-7317040>, r=61433573 +pos=<7998189,2801039,69890583>, r=65303215 +pos=<130870385,104831832,11196492>, r=68126888 +pos=<-5327566,58947831,12940865>, r=92989660 +pos=<3824920,57094208,49926985>, r=55521839 +pos=<-1717656,36673098,102114555>, r=92830763 +pos=<-6542148,37528701,53564176>, r=49960544 +pos=<-14811298,29054822,83783336>, r=79975290 +pos=<-37201984,61523961,41570442>, r=98810391 +pos=<20636169,30198837,103026121>, r=64914223 +pos=<10371395,31519349,55590694>, r=62337567 +pos=<31884149,40789942,72870652>, r=50003827 +pos=<-30398435,29198407,42512686>, r=58738952 +pos=<43939568,28346223,78157090>, r=54901870 +pos=<9128846,67552702,83250788>, r=94000232 +pos=<-2588856,30760371,91977867>, r=77653177 +pos=<15962420,82995471,76760935>, r=96119428 +pos=<-33661280,31365698,48813484>, r=66166075 +pos=<-16115499,43852463,46308402>, r=58601848 +pos=<-6987272,33841983,84781289>, r=77936013 +pos=<-485860,34594456,81980122>, r=69386193 +pos=<-15363694,37898885,53146470>, r=58734501 +pos=<-17124380,71830052,45774058>, r=87053925 +pos=<8219084,70226598,55923252>, r=70256199 +pos=<-3903209,29453615,46544603>, r=75288840 +pos=<-9159457,25097083,71581481>, r=61856037 +pos=<-6436575,16618931,70357346>, r=66386656 +pos=<-8806699,29246129,72352585>, r=62730916 +pos=<68862343,36688765,49225208>, r=59235344 +pos=<-79171684,112113447,67348279>, r=92995215 +pos=<2638935,25190324,85791990>, r=64174419 +pos=<14827988,29466545,48474491>, r=98818958 +pos=<-14381380,32037768,62743833>, r=61488450 +pos=<3154619,88011848,41382872>, r=85129150 +pos=<51747013,31306559,79606148>, r=67118845 +pos=<4782291,34063349,70169217>, r=51776099 +pos=<-39091050,45657329,51675336>, r=88749304 +pos=<-26634338,29826468,49344705>, r=58131168 +pos=<28955639,11886714,83389681>, r=58803847 +pos=<-13895377,39956378,49929456>, r=56106810 +pos=<-20174467,38776446,18529455>, r=82076331 +pos=<11908029,50316295,76200518>, r=66934331 +pos=<79036827,16924288,76062556>, r=96520365 +pos=<9584540,67893747,64596741>, r=75231780 +pos=<1999297,28072699,90660851>, r=69059706 +pos=<-4999516,1406744,49697518>, r=59502059 +pos=<-12138046,52832626,53760320>, r=71057036 +pos=<14911107,50532270,74102432>, r=62049081 +pos=<-28076669,-5209886,42939079>, r=85888492 +pos=<-1381979,35962916,89448258>, r=79118686 +pos=<-27555180,38443112,78090455>, r=96414564 +pos=<-45684157,22499678,51249216>, r=80645467 +pos=<-33262343,42412693,21018032>, r=96311801 +pos=<-24933943,30266769,36206604>, r=60648927 +pos=<47087640,55749463,76069992>, r=83366515 +pos=<40948562,39725308,77828570>, r=62961879 +pos=<-21047756,32265813,60780681>, r=66419686 +pos=<37924327,42452651,67877724>, r=52713763 +pos=<-58689938,30781189,50489915>, r=92286565 +pos=<13216582,64885410,61404468>, r=65398749 +pos=<-43382614,29830485,70345833>, r=95884395 +pos=<-20520219,36470699,75190567>, r=84507131 +pos=<14237854,59338973,85949685>, r=83376237 +pos=<-450228,37867875,64907958>, r=55551952 +pos=<17760677,61033651,84995936>, r=80594372 +pos=<22176975,82022403,46533128>, r=58704060 +pos=<22779974,94329178,17857701>, r=95346900 +pos=<-38001053,34049218,49600706>, r=73976424 +pos=<16848379,29946291,48116237>, r=55533891 +pos=<-42631692,35454176,53098888>, r=83510344 +pos=<4649340,48178580,58429391>, r=54284128 +pos=<847183,51607513,81674534>, r=84760407 +pos=<-21437870,4973092,57201053>, r=79877495 +pos=<-31919810,30134447,55487065>, r=69866771 +pos=<-27341158,67125553,48484104>, r=95276520 +pos=<34772295,-8690710,66519732>, r=68327958 +pos=<-31969415,39408252,48343122>, r=72046242 +pos=<102875003,13271850,46851582>, r=94799961 +pos=<-12487583,35034265,55339911>, r=55187220 +pos=<9093156,39769707,84017977>, r=67020115 +pos=<-16380910,41574541,66165228>, r=76446125 +pos=<78145797,37164108,49128463>, r=68897409 +pos=<12696275,29248422,93349910>, r=62227566 +pos=<3806267,80300805,32983373>, r=85166064 +pos=<96882526,36942217,48757938>, r=87041670 +pos=<-171249798,39499790,57712028>, r=97294519 +pos=<-2013420,51530722,55656270>, r=61525906 +pos=<10506453,22608309,43074519>, r=92987198 +pos=<-12980027,57643628,73634339>, r=96583452 +pos=<9759074,34807718,46383535>, r=76510831 +pos=<-46481921,33185083,62928260>, r=94920705 +pos=<-41982125,32478135,69194276>, r=95980083 +pos=<6066850,16557724,-23317282>, r=96233732 +pos=<-27420476,39804614,13027130>, r=95852751 +pos=<-35598484,27994414,43416148>, r=61831662 +pos=<53497255,74968025,34467126>, r=87786515 +pos=<5629165,76030721,52476464>, r=75203884 +pos=<-52112524,15110086,40185629>, r=92357875 +pos=<-23905340,18683396,67786661>, r=79220265 +pos=<1204692,65009004,78621903>, r=94751674 +pos=<-10066560,46695198,48547405>, r=57634798 +pos=<10289802,-10697128,21104545>, r=74844012 +pos=<-40310292,28833507,46959457>, r=68428878 +pos=<-13764816,49841026,61895287>, r=77826610 +pos=<-19679027,58605601,66152788>, r=96763074 +pos=<8809311,33356810,46152100>, r=63432984 +pos=<-29709153,29461995,49058531>, r=60555118 +pos=<-13129092,-9705209,46828679>, r=75874660 +pos=<102118197,31480871,42422516>, r=84965146 +pos=<-32517383,30565130,33503263>, r=71234788 +pos=<9534874,52896280,70697014>, r=66384094 +pos=<16880678,65311318,51702479>, r=52458646 +pos=<-36132788,43209378,55775064>, r=87442665 +pos=<22744530,34380596,134099136>, r=98061118 +pos=<-26547963,41862023,60462772>, r=81198255 +pos=<-545734,40978449,60677738>, r=54527403 +pos=<16538063,68562231,28273188>, r=65405796 +pos=<14494679,58745235,31512009>, r=54393346 +pos=<7791169,67262375,35493930>, r=65632071 +pos=<8485973,48520508,103076567>, r=95436538 +pos=<8214274,28745216,50655896>, r=92680074 +pos=<-6937397,27971689,49092605>, r=65350532 +pos=<-22481435,9380958,40012423>, r=68629066 +pos=<62129884,16597211,12546768>, r=80660497 +pos=<6258688,62081024,87730516>, r=95878363 +pos=<-32278381,28495170,53585234>, r=66684251 +pos=<8040391,72063718,51083757>, r=67432585 +pos=<-5673174,25046673,73686241>, r=60524423 +pos=<-8001243,63756911,61002978>, r=85086692 +pos=<-26577068,41949907,46813510>, r=67665926 +pos=<27314118,87945331,52949180>, r=72667621 +pos=<-20191543,30416348,7242015>, r=85020749 +pos=<-40509210,25805511,61018374>, r=81933846 +pos=<-27572422,16102428,56368833>, r=74050704 +pos=<-11240828,50248391,27895560>, r=75248609 +pos=<34613570,41153477,100115019>, r=80341645 +pos=<15579024,9723842,69284527>, r=50193328 +pos=<-46066212,37488646,47288596>, r=83168980 +pos=<16651399,81480864,60218612>, r=77373965 +pos=<-4490123,12256693,29836426>, r=57938091 +pos=<-9722027,38414943,53203837>, r=53666284 +pos=<-17608773,53047624,65044179>, r=88026024 +pos=<-46201175,24018662,58511638>, r=86905837 +pos=<83707615,22862590,47033198>, r=66223477 +pos=<75278564,31837146,46877582>, r=58452382 +pos=<66228245,28297748,1246309>, r=87068293 +pos=<-41563889,138361221,22834552>, r=92320836 +pos=<-15149458,41692211,57568440>, r=66735557 +pos=<-29959760,29199939,50714596>, r=62199729 +pos=<42142694,49570710,97616140>, r=93788536 +pos=<61202922,61131481,71470186>, r=98263590 +pos=<29827492,38051686,24415070>, r=56692483 +pos=<17592777,73628928,77556835>, r=85918423 +pos=<-20783874,35242533,54629155>, r=62981079 +pos=<64237574,1302210,73405037>, r=94685683 +pos=<-21188594,47968883,69462691>, r=90945802 +pos=<30657831,49880981,-20723938>, r=95051093 +pos=<22864844,93114017,56937539>, r=79512153 +pos=<36531726,66041045,59031978>, r=66063917 +pos=<19846259,-13074428,65015549>, r=64455431 +pos=<-7113733,38738967,15168250>, r=72339348 +pos=<-25341686,54431754,46334838>, r=78433824 +pos=<20656999,57196763,75771625>, r=64636928 +pos=<-22838713,34493030,27829494>, r=71157081 +pos=<-27835555,38366205,61876949>, r=80404149 +pos=<79754868,48144480,60613367>, r=92971746 +pos=<20721233,45043536,93948762>, r=70596524 +pos=<-46680111,37879564,53763782>, r=90648947 +pos=<16009840,86125003,58588086>, r=81028766 +pos=<20025736,5391570,85015946>, r=65810395 +pos=<33720066,104264468,55486952>, r=97930498 +pos=<-63554526,31193768,49947114>, r=97020908 +pos=<-55699886,23371204,32454537>, r=95415201 +pos=<73230725,36900143,48087090>, r=62677110 +pos=<-32963671,28309367,52478944>, r=66077418 +pos=<5939165,55024902,62755578>, r=64166779 +pos=<-24917309,29082130,46444648>, r=52769524 +pos=<7735621,49034186,60918429>, r=54542530 +pos=<4877732,8430499,59198278>, r=52101779 +pos=<83731770,35839732,49766995>, r=73797528 +pos=<-11074931,33743791,62322816>, r=59467077 +pos=<47699715,55835903,55060273>, r=63055430 +pos=<37657191,-9104085,74776203>, r=79882754 +pos=<-46744861,30151111,64292721>, r=93514232 +pos=<-13186319,46003906,17086538>, r=83758581 +pos=<32840031,56015193,64841941>, r=58156157 +pos=<6062205,42632964,47615029>, r=73781872 +pos=<-19799971,51835559,58790016>, r=82751306 +pos=<-30893469,30656893,46300617>, r=60176438 +pos=<-55830501,22240501,57274377>, r=97076042 +pos=<15868849,46019629,96676898>, r=79153313 +pos=<-16265649,52075245,75590161>, r=96256506 +pos=<14624864,56207969,57618910>, r=51527552 +pos=<318934,59504614,60032696>, r=71543938 +pos=<-23487442,41093331,19776590>, r=86459237 +pos=<67237678,41609284,51037661>, r=64343635 +pos=<-19179700,33732993,56360250>, r=61598596 +pos=<-34730837,5580174,61364913>, r=96727618 +pos=<53061020,1668645,85754857>, r=95492537 +pos=<3877306,43959248,85023639>, r=77431037 +pos=<-10413451,33996655,77197477>, r=73933065 +pos=<-15270541,18375898,55749133>, r=58855471 +pos=<37599773,64150517,58789624>, r=64998919 +pos=<6641382,32884368,86779494>, r=65348099 +pos=<-28989825,39572241,63995218>, r=84883334 +pos=<12972158,71582537,87975353>, r=98911274 +pos=<41852603,48069590,65721204>, r=60103061 +pos=<-12895423,34234299,51393776>, r=50848940 +pos=<76683281,42692313,48821155>, r=72655746 +pos=<9795431,-286238,55311954>, r=52014423 +pos=<-12408641,28693619,67844073>, r=61271790 +pos=<18776047,80030396,38475557>, r=64433947 +pos=<75995398,33442514,24888484>, r=78338116 +pos=<-22764877,22172460,58097441>, r=64901579 +pos=<10239772,40250323,68821851>, r=51158213 +pos=<-6984206,11263546,-3408779>, r=94670545 +pos=<-25723496,46861709,48289286>, r=73199930 +pos=<5729735,28403922,117678625>, r=92678286 +pos=<11079147,38654325,86908021>, r=66808654 +pos=<19012903,51490161,13432661>, r=60699507 +pos=<-19708767,24665073,51422478>, r=52677853 +pos=<2549542,80274103,46746108>, r=76796138 +pos=<-48466554,29995042,56395431>, r=87182744 +pos=<86083343,46696534,52688635>, r=89927531 +pos=<19978558,94248897,26059694>, r=89865438 +pos=<21928133,43444423,89266701>, r=63108468 +pos=<-32662150,34466095,53616954>, r=73070642 +pos=<-4767571,24202491,48306992>, r=52750940 +pos=<-6049891,44411137,66256832>, r=69043725 +pos=<14845730,-1633797,-11680131>, r=94009220 +pos=<65363,73430740,49753549>, r=75444608 +pos=<10919543,55374161,60523054>, r=57303105 +pos=<-33344704,36874381,61740346>, r=84284898 +pos=<90823294,32581102,47524970>, r=75388376 +pos=<56762466,39329407,28284461>, r=61595785 +pos=<14326905,38412743,-13806339>, r=79547110 +pos=<-27408929,29564102,49418580>, r=58717093 +pos=<72828690,34540465,56644790>, r=68473289 +pos=<-23879984,-80533415,-13926388>, r=52569551 +pos=<623363,23117915,46129959>, r=71699945 +pos=<-21310687,28343530,48201114>, r=50180986 +pos=<-11268087,54197123,60947343>, r=78738009 +pos=<62637156,43374891,28845119>, r=70955785 +pos=<101486863,29252465,58609523>, r=93807860 +pos=<-7121743,-17618647,50972485>, r=81924604 +pos=<33712412,33093334,104500328>, r=75765083 +pos=<70057598,30520257,59928664>, r=64965508 +pos=<13577885,32272356,41344051>, r=98076208 +pos=<8955771,46905424,22660149>, r=56944295 +pos=<-31671198,35282234,47777117>, r=67056086 +pos=<-28701991,29968381,30147369>, r=70177802 +pos=<46883174,34145057,15459578>, r=59357035 +pos=<-21541824,-3738229,54506228>, r=85997940 +pos=<-7165905,-13698956,55634555>, r=82711088 +pos=<-42136026,37824576,54914702>, r=87201260 +pos=<75444044,34090961,64356096>, r=78350113 +pos=<27070208,76993574,17498441>, r=80354253 +pos=<-24556265,40605071,29335340>, r=77481284 +pos=<7679148,40322729,74549753>, r=59518815 +pos=<64743952,34069862,51081505>, r=54354571 +pos=<7888777,51012156,-6093924>, r=90872090 +pos=<-38312643,6053130,45786004>, r=84257215 +pos=<-10907447,30880694,71717384>, r=65831363 +pos=<-21415341,33770607,55616361>, r=63127773 +pos=<-9268341,12931923,58776983>, r=61325095 +pos=<53680780,36878021,92991425>, r=88009224 +pos=<16325289,32873290,52486621>, r=50056228 +pos=<2379678,52409295,64101601>, r=66456683 +pos=<12407570,48986679,9677595>, r=68556317 +pos=<-23196672,47847216,47491952>, r=70861580 +pos=<17092834,24513176,91350037>, r=55955816 +pos=<8752629,37508985,49239757>, r=72585978 +pos=<52794942,76928483,47757542>, r=81940023 +pos=<12527582,-6613411,50632808>, r=50930382 +pos=<-70810892,45621857,-48305364>, r=62008194 +pos=<-18412210,36869794,57144258>, r=64752285 +pos=<87656632,20763685,66883781>, r=92122439 +pos=<61764769,33809145,-512978>, r=89875236 +pos=<-21591807,57503330,27237264>, r=93512809 +pos=<-8980322,48822102,24813214>, r=74644293 +pos=<-13586166,29673545,54387395>, r=49972553 +pos=<-21336027,12684379,50240160>, r=65103467 +pos=<15312696,61249932,61078049>, r=59340843 +pos=<3820682,55264026,85971673>, r=89740512 +pos=<-8720944,7901096,48785694>, r=55817204 +pos=<46676113,42744663,57067759>, r=50947525 +pos=<63180707,54936070,46238435>, r=68814227 +pos=<-59988823,31676130,52904181>, r=96894648 +pos=<-55767575,34582277,42911408>, r=89093361 +pos=<-24727493,22617024,22771261>, r=74880311 +pos=<30402823,52581940,78464394>, r=65908330 +pos=<-12446120,14245346,47969322>, r=52381926 +pos=<13932111,12087077,52306416>, r=71083363 +pos=<12361114,5008235,62369519>, r=51211858 +pos=<62655763,37235551,16180822>, r=77498932 +pos=<5158458,57101119,21414371>, r=72183092 +pos=<2908218,33006742,52557556>, r=82743046 +pos=<57439166,18173939,101222852>, r=98833513 +pos=<52238468,31780002,45678724>, r=78491149 +pos=<-45793920,10537217,50965371>, r=92433881 +pos=<-13743952,64107054,54632417>, r=84808943 +pos=<-170006460,33686904,57787874>, r=58950081 +pos=<-26862218,29083237,47085032>, r=55356188 +pos=<794530,52505491,57994889>, r=62031400 +pos=<62469765,31544111,56755533>, r=55228669 +pos=<33597386,32945456,56175425>, r=60893404 +pos=<67662625,38142990,51575060>, r=61839764 +pos=<-48808932,29332298,47264670>, r=77731645 +pos=<-13897506,80448804,52473065>, r=99144940 +pos=<-41499426,33500208,34694650>, r=81959864 +pos=<21500730,1820261,108639134>, r=91529831 +pos=<37273144,59821099,54577329>, r=56130643 +pos=<-21429926,6902774,61057229>, r=81796239 +pos=<3340434,50630706,26961101>, r=61983979 +pos=<20112657,-7766263,32920789>, r=50273913 +pos=<66869619,52342243,67598868>, r=91270061 +pos=<6129880,42603189,67116575>, r=55915349 +pos=<6398878,1688559,79467734>, r=77591971 +pos=<14501207,33194081,103787164>, r=74805573 +pos=<-41363813,41379031,51239687>, r=86308022 +pos=<-5072359,37511009,73502277>, r=68411104 +pos=<9979161,47203323,76860857>, r=66410591 +pos=<8272810,70008182,48415971>, r=62477175 +pos=<16131738,39072448,57020881>, r=66650334 +pos=<-18513223,15536711,73318828>, r=82507011 +pos=<-53344764,29150642,46822282>, r=81643567 +pos=<-19488382,39476575,49309757>, r=60600153 +pos=<17795545,86761153,34350936>, r=76269651 +pos=<-39860391,37740470,42830687>, r=76425286 +pos=<75357927,42659157,48122833>, r=70599033 +pos=<67060727,20786860,43203283>, r=50745152 +pos=<11307310,64243278,77782998>, r=83044472 diff --git a/2018/inputs/24.txt b/2018/inputs/24.txt new file mode 100644 index 0000000..0c90bb1 --- /dev/null +++ b/2018/inputs/24.txt @@ -0,0 +1,23 @@ +Immune System: +2991 units each with 8084 hit points (weak to fire) with an attack that does 19 radiation damage at initiative 11 +4513 units each with 3901 hit points (weak to slashing; immune to bludgeoning, radiation) with an attack that does 7 bludgeoning damage at initiative 12 +5007 units each with 9502 hit points (immune to bludgeoning; weak to fire) with an attack that does 16 fire damage at initiative 2 +2007 units each with 5188 hit points (weak to radiation) with an attack that does 23 cold damage at initiative 9 +1680 units each with 1873 hit points (immune to bludgeoning; weak to radiation) with an attack that does 10 bludgeoning damage at initiative 10 +1344 units each with 9093 hit points (immune to bludgeoning, cold; weak to radiation) with an attack that does 63 cold damage at initiative 16 +498 units each with 2425 hit points (immune to fire, bludgeoning, cold) with an attack that does 44 slashing damage at initiative 3 +1166 units each with 7295 hit points with an attack that does 56 bludgeoning damage at initiative 8 +613 units each with 13254 hit points (immune to radiation, cold, fire) with an attack that does 162 radiation damage at initiative 15 +1431 units each with 2848 hit points (weak to radiation) with an attack that does 19 cold damage at initiative 1 + +Infection: +700 units each with 47055 hit points (weak to fire; immune to slashing) with an attack that does 116 fire damage at initiative 14 +2654 units each with 13093 hit points (weak to radiation) with an attack that does 8 radiation damage at initiative 19 +5513 units each with 18026 hit points (immune to radiation; weak to slashing) with an attack that does 6 slashing damage at initiative 20 +89 units each with 48412 hit points (weak to cold) with an attack that does 815 radiation damage at initiative 17 +2995 units each with 51205 hit points (weak to cold) with an attack that does 28 slashing damage at initiative 7 +495 units each with 21912 hit points with an attack that does 82 cold damage at initiative 13 +2911 units each with 13547 hit points with an attack that does 7 slashing damage at initiative 18 +1017 units each with 28427 hit points (immune to fire) with an attack that does 52 fire damage at initiative 4 +2048 units each with 29191 hit points (weak to bludgeoning) with an attack that does 22 bludgeoning damage at initiative 6 +1718 units each with 15725 hit points (immune to cold) with an attack that does 18 slashing damage at initiative 5 diff --git a/2018/inputs/25.txt b/2018/inputs/25.txt new file mode 100644 index 0000000..d359c48 --- /dev/null +++ b/2018/inputs/25.txt @@ -0,0 +1,1248 @@ +-6,2,-8,3 +7,8,-1,-8 +7,-2,-4,-2 +4,-4,2,7 +5,8,-1,6 +-1,6,-4,-5 +-2,-6,-6,-6 +1,4,7,0 +-1,-3,-8,2 +5,-6,-5,-2 +-5,7,4,-2 +-2,6,-1,6 +5,4,0,-7 +1,5,-8,-3 +-3,3,8,2 +4,0,0,6 +4,-8,-3,3 +0,0,-7,-5 +-2,0,5,-3 +2,1,7,-1 +1,6,2,2 +4,4,7,-6 +-1,0,-1,1 +2,4,4,6 +-4,3,-7,2 +-5,-2,8,-7 +6,-8,-1,3 +-8,-6,-7,-3 +4,1,-7,-1 +-7,-5,-4,4 +5,-2,8,-5 +-5,-1,4,-4 +3,-3,8,4 +3,8,-8,-7 +-3,7,7,0 +-7,-5,-3,5 +-4,-5,-3,-2 +6,-8,3,8 +-2,0,8,7 +-4,3,5,7 +-6,3,5,0 +5,2,-3,-3 +0,8,0,5 +-5,-8,-1,-8 +2,6,0,6 +5,-4,0,0 +3,-2,-8,-5 +8,-4,-7,-7 +-3,-7,-8,-2 +6,7,-2,3 +5,0,-6,0 +0,-6,0,2 +8,-4,6,-3 +-5,-4,4,-4 +2,0,3,-1 +3,-5,8,5 +6,-1,5,5 +-6,-5,-4,8 +7,-4,0,5 +5,3,1,6 +-7,2,-3,1 +-4,1,-6,-7 +-4,4,0,8 +-6,4,1,-8 +3,-6,-6,5 +2,-4,-3,2 +-2,2,-2,1 +2,-4,0,0 +3,1,4,8 +-1,3,-7,-5 +-3,-7,2,0 +-2,-2,-8,0 +1,6,0,7 +-6,-3,0,-1 +7,0,-2,-7 +5,-5,-3,0 +7,0,0,5 +-6,5,6,2 +0,8,3,-1 +0,-8,-7,-1 +3,6,7,-7 +-2,4,-8,-3 +3,-3,-6,-4 +-1,-5,0,2 +-7,2,4,0 +-2,7,4,-2 +2,4,-1,5 +-1,-6,-6,4 +4,-6,-7,-2 +-6,6,-4,-2 +5,-5,-2,-6 +4,5,4,0 +3,3,0,-5 +-5,4,3,-2 +-6,1,7,-6 +3,5,-8,5 +-2,8,-2,-2 +-5,6,-2,-7 +-3,-6,7,-4 +-8,-6,7,7 +-5,-7,4,-4 +-8,-8,-6,7 +-7,-1,-2,-1 +3,-1,4,0 +3,6,1,-8 +2,6,-4,0 +-6,4,4,6 +7,7,6,-5 +4,-3,-2,7 +-1,8,2,-2 +3,-1,-4,5 +-2,1,-6,-8 +-3,1,7,-1 +-7,-1,8,6 +4,2,6,-6 +8,-1,8,-8 +4,6,-1,4 +7,-1,6,5 +0,-6,2,3 +-2,-8,-8,-6 +0,6,-4,-8 +4,-8,-7,6 +-3,-3,2,2 +2,1,4,7 +-3,7,-1,-8 +1,1,-2,-5 +3,-6,-4,7 +-3,5,0,8 +3,3,1,0 +1,5,4,6 +7,0,-2,-5 +1,5,-3,7 +-1,-4,3,4 +-4,3,-2,0 +-1,-8,2,0 +-8,-8,3,-3 +-2,-6,5,2 +8,-1,-3,-6 +2,-8,3,-5 +-8,-8,3,4 +-3,-5,-7,0 +0,3,1,3 +-8,5,-6,4 +2,0,4,-2 +-5,1,-7,0 +-5,0,-2,1 +4,-7,0,3 +7,0,4,-1 +0,-3,5,4 +-8,-8,-2,3 +2,5,4,6 +7,0,-8,-7 +-1,8,3,-3 +1,-2,2,-4 +-1,-3,3,-2 +4,6,7,-1 +3,8,2,-3 +-1,-8,8,7 +-8,4,7,-2 +-8,2,-8,-7 +-2,5,0,-5 +-1,-2,-5,-5 +4,6,-2,0 +0,8,0,-4 +2,0,-2,-1 +-8,0,-5,0 +-2,-8,-5,6 +2,0,5,7 +6,0,7,0 +-6,-8,3,-1 +2,2,6,-8 +-8,7,-8,7 +5,0,7,-6 +0,-3,6,-4 +-5,7,-6,-6 +2,5,0,-6 +-6,8,-3,3 +-8,-7,-1,-8 +-1,3,0,0 +1,2,3,-7 +-5,-1,7,2 +4,2,0,2 +-6,-6,-1,-2 +1,0,8,-1 +0,-1,-8,7 +2,2,-6,-4 +-2,3,2,6 +-6,-6,-2,-3 +-2,6,-2,1 +4,0,-8,7 +4,8,1,-1 +4,2,-2,5 +1,-2,-6,1 +1,5,-5,-4 +0,8,7,-6 +8,8,2,-3 +-3,-4,-5,3 +-2,6,-8,-1 +-2,-2,-4,2 +0,6,-3,7 +8,3,-3,7 +6,0,-1,-6 +8,8,3,0 +-7,0,8,7 +-5,7,-2,0 +2,-7,7,3 +8,-5,0,0 +-6,-8,1,-7 +-7,-3,0,5 +5,6,1,-7 +-3,8,-3,6 +-4,0,-4,-5 +7,4,2,1 +-7,-7,-8,6 +7,-7,4,4 +-6,-2,-1,1 +5,7,-6,-5 +1,6,-2,5 +-6,5,-6,3 +-6,-8,0,0 +2,-4,2,8 +0,0,0,-8 +-8,0,-2,2 +0,-4,-8,-8 +1,-5,-8,5 +6,-4,-5,6 +8,4,-5,-1 +8,-7,4,-4 +-7,-6,-8,0 +-2,3,-2,3 +-8,-3,-6,-3 +0,5,5,0 +3,7,-8,6 +0,-7,-5,-1 +1,6,-4,-3 +-4,5,-3,5 +7,-5,-5,8 +-4,4,0,-8 +7,-7,0,2 +6,0,2,-8 +-6,-4,1,0 +-1,0,-2,4 +-4,-8,5,7 +-8,4,-5,-2 +2,8,-8,-8 +-4,7,1,6 +-2,-2,-7,3 +6,4,-1,0 +-1,-7,-4,0 +-4,0,3,0 +0,3,5,2 +-4,-5,-1,0 +8,2,-6,0 +-2,5,-3,8 +7,0,3,-2 +6,0,-5,0 +4,-6,-5,6 +-7,8,0,-1 +8,-2,3,-4 +7,0,-4,7 +-4,-6,-7,-7 +2,8,0,4 +1,-6,5,-6 +4,-7,-2,-2 +4,1,-6,2 +0,7,4,3 +4,1,-1,-5 +1,-4,6,-6 +1,2,-2,-2 +2,-2,6,-5 +-8,6,-6,6 +0,6,8,2 +-3,-2,0,-8 +-6,-5,2,-6 +0,5,-8,-5 +1,-1,7,6 +-6,-3,-7,-3 +-4,-6,-1,0 +8,-3,-6,-2 +-5,-2,6,-1 +-1,0,3,1 +0,2,-6,7 +3,3,5,-2 +8,4,5,-1 +-5,-1,0,-1 +-6,-1,0,6 +2,6,-3,-3 +8,7,-8,4 +-6,-8,-3,0 +-1,-1,0,7 +6,-2,-8,4 +-3,8,3,-1 +6,2,0,4 +0,-3,7,3 +-5,3,-2,-1 +-6,-7,-2,-3 +4,-5,-3,-6 +-7,6,-2,4 +-2,-5,7,0 +1,8,-8,7 +8,3,-3,4 +-3,3,2,-4 +5,-7,4,1 +8,-3,-5,0 +-5,-4,-1,-8 +2,1,-2,-3 +-1,-4,-1,-7 +-7,-8,-7,-2 +3,0,7,4 +6,3,7,7 +0,-2,-4,2 +0,-1,-6,7 +-3,-8,-1,-7 +-8,-6,-6,-4 +-5,-4,-4,0 +0,7,-7,3 +-8,-7,-6,-8 +-5,3,0,-3 +-7,-6,0,7 +-7,6,-6,-2 +-2,8,2,-4 +2,0,0,5 +0,5,-2,0 +8,-7,-7,-1 +-1,3,2,-7 +-3,4,-7,-4 +-6,-3,2,-7 +-7,5,4,3 +5,-1,-6,-2 +3,-7,1,0 +-7,0,-4,-3 +-6,8,-1,0 +3,8,4,-2 +-1,-4,-8,-7 +3,3,8,1 +-5,1,4,5 +8,8,-1,2 +-3,-3,7,-4 +8,-3,2,-4 +6,-8,-6,8 +3,6,3,-2 +-7,-2,6,-4 +-6,-8,-8,5 +6,0,0,7 +-6,7,0,7 +8,0,-6,-3 +0,-3,-7,0 +-2,6,-7,-7 +5,-1,-3,0 +2,3,4,-5 +1,7,-6,0 +3,3,0,-3 +-1,0,-8,-8 +-2,5,-7,4 +7,-1,-8,5 +-2,-1,-1,6 +-2,-6,5,1 +4,-2,5,5 +-7,8,4,7 +-2,-2,6,5 +-6,1,-5,3 +-8,4,0,7 +8,-4,5,5 +-4,8,-4,1 +-8,0,5,4 +8,1,0,0 +-6,-8,-6,-2 +2,-5,0,0 +5,-6,5,-4 +1,2,7,2 +8,-4,6,5 +-6,0,7,6 +6,5,7,-6 +-2,-6,-2,5 +-6,-4,3,1 +6,-8,4,-4 +8,6,1,2 +7,5,7,-2 +7,-2,-6,-1 +4,-2,1,2 +1,1,-3,5 +0,-4,8,4 +5,2,-3,-4 +8,4,1,-3 +-1,1,-8,1 +-1,-1,0,5 +-4,4,6,0 +0,6,-2,6 +-3,4,5,5 +-7,5,4,-4 +2,2,-2,-4 +8,-1,2,-5 +-5,-2,6,-2 +7,2,1,6 +-3,-2,4,-5 +8,8,-7,-8 +0,1,-8,-4 +-3,-6,-3,3 +-4,-4,8,4 +-3,2,-4,-6 +-6,5,-5,-2 +-3,-7,-3,8 +0,6,-1,8 +8,0,7,1 +1,1,-8,-2 +6,-6,-7,3 +4,-5,8,-8 +-3,-6,6,7 +8,-5,2,4 +2,5,-3,-4 +-3,0,-6,7 +-1,-7,7,0 +2,-3,-5,5 +-7,-7,0,-2 +0,-4,7,8 +5,3,7,2 +-2,-7,5,5 +-6,-1,0,-8 +-3,0,8,-5 +-8,-1,1,1 +1,0,-6,8 +-1,-5,8,4 +-5,-4,4,8 +2,-3,0,-4 +-4,-3,0,7 +5,6,5,-5 +-3,-8,-3,-2 +5,8,-8,5 +-7,-2,-2,-2 +7,6,8,6 +0,-6,4,-7 +-1,-4,-7,0 +8,7,-6,6 +6,-5,-1,-3 +5,-2,-2,-3 +6,-3,-5,0 +-8,5,6,-5 +3,-7,7,8 +1,3,-8,0 +-6,8,-5,6 +6,-5,-5,-2 +3,8,1,-8 +-8,5,2,0 +0,5,-3,6 +-5,-7,-8,4 +0,7,0,0 +-5,6,-5,6 +-5,1,6,5 +6,1,-2,-8 +0,-8,3,1 +0,-3,-8,-3 +0,6,0,-2 +-8,0,-7,-5 +-8,2,0,6 +1,6,3,-4 +8,-5,0,-4 +-6,7,0,0 +5,0,1,0 +-8,8,2,8 +-7,4,2,4 +0,3,-2,-4 +-5,5,7,0 +5,0,-1,5 +-7,8,-6,8 +-8,-1,3,-3 +0,-7,-7,-7 +-4,4,8,-2 +1,2,1,-4 +1,-5,-1,8 +-3,8,-2,-2 +8,0,4,-4 +-8,5,-5,3 +-7,-7,-6,-2 +0,-6,-8,-8 +-1,-2,-3,0 +-4,0,1,7 +1,-6,-8,4 +0,8,6,-1 +-8,-5,-7,8 +2,7,-8,4 +-8,4,-3,2 +3,-1,-7,3 +4,-2,-6,-6 +-1,-4,1,-2 +3,-4,2,-6 +2,4,5,-3 +-7,7,1,6 +8,-6,-5,-3 +-7,1,-6,0 +-3,-6,-6,-8 +-8,-5,-6,4 +-5,-1,7,8 +0,7,6,2 +6,-2,-1,5 +0,4,-8,8 +-3,-5,-8,0 +2,-6,-2,-1 +5,8,-6,4 +-5,-1,0,-6 +-8,-5,8,2 +5,6,-3,-3 +-4,-7,2,6 +0,-3,-6,7 +-4,-6,-8,-8 +6,7,1,3 +7,-2,4,-3 +4,2,3,1 +0,8,-3,-8 +-8,0,1,0 +4,5,-4,-2 +-2,-6,4,2 +-4,0,-4,0 +8,-1,2,-2 +5,-7,8,1 +-2,5,-6,1 +6,-7,3,-7 +2,1,0,6 +-8,-3,-1,0 +8,-1,8,-3 +0,-6,6,0 +7,3,7,3 +-8,0,6,-1 +-5,-4,-5,0 +-2,0,3,-7 +0,2,0,0 +-3,6,6,3 +-6,-3,-1,-3 +8,0,1,5 +-7,4,-8,0 +8,8,-5,4 +-2,0,-7,-4 +-8,5,-7,-7 +8,0,-1,4 +8,-7,5,0 +-6,-1,-4,2 +-8,-8,6,-5 +7,2,-3,1 +2,0,2,6 +8,-7,-8,3 +-2,-7,-8,0 +0,3,-1,4 +-8,7,5,3 +0,-4,0,3 +6,6,-2,-6 +-4,8,6,-3 +0,3,0,-4 +6,-2,1,5 +1,4,4,3 +0,-7,4,-1 +1,3,-8,-2 +-5,0,4,0 +8,2,-6,-4 +-8,8,-2,6 +-5,7,-7,-2 +5,0,-4,-4 +-1,-5,3,7 +-2,-3,7,3 +-3,4,2,0 +-7,-8,1,3 +-8,-8,-3,2 +0,5,-8,7 +1,7,-6,5 +2,-6,-5,0 +-8,4,4,2 +7,3,1,-6 +-5,-4,8,2 +-7,7,0,0 +8,6,-1,6 +2,5,3,-7 +-7,3,1,5 +-8,-3,-4,3 +0,-2,0,8 +-7,-7,-5,8 +3,6,3,0 +-4,2,8,-4 +-6,2,6,-3 +0,-7,-6,-7 +0,-6,3,-6 +-4,-5,-5,-2 +1,-7,-2,-5 +5,7,0,4 +2,-1,3,-3 +7,1,-5,8 +0,3,0,2 +5,0,-5,-3 +-2,6,2,5 +6,4,-4,-7 +4,-8,4,8 +-5,-2,-6,7 +-1,-4,-4,5 +-2,-7,3,7 +-3,-8,-2,2 +1,-2,-5,-3 +0,-4,-1,3 +4,8,2,-5 +8,6,-6,1 +-8,-1,1,-4 +5,6,4,-8 +-7,-6,-5,4 +-3,-3,5,0 +-6,7,2,1 +-5,5,-1,0 +1,-8,2,0 +0,-3,-7,6 +4,-4,1,0 +-4,-6,0,4 +4,0,4,0 +4,-7,3,-2 +0,-3,0,4 +2,-3,2,2 +2,0,0,-4 +-8,6,6,4 +7,7,4,-2 +0,5,0,-1 +5,7,3,6 +5,2,4,-3 +5,4,-7,-6 +-8,1,7,2 +0,5,8,-1 +5,-3,-6,0 +-6,0,4,6 +-2,-2,6,-6 +-6,3,5,2 +8,-2,-3,-1 +-8,1,3,-4 +1,-6,-5,-6 +8,-4,6,-1 +-5,-7,-7,-5 +-1,-6,1,-4 +4,2,-3,0 +7,1,-4,4 +2,6,-8,0 +7,7,2,-5 +5,-2,-8,-3 +-5,0,3,2 +-1,6,-1,-4 +6,4,-3,-4 +4,1,4,-6 +3,5,0,-1 +5,-3,7,2 +3,-3,-7,5 +-3,-6,-1,2 +-7,-6,5,5 +-3,-7,1,-7 +5,5,-4,3 +6,-4,0,-1 +-7,-8,-1,7 +6,1,3,8 +8,-3,-5,2 +-3,1,-2,7 +-3,8,3,-4 +0,-8,7,3 +5,0,-4,-3 +3,-8,2,4 +-8,-3,6,-3 +0,6,-5,4 +-2,-8,-2,0 +-4,-4,-4,8 +-6,8,-5,-1 +-8,0,1,1 +-4,3,1,-2 +-1,-7,4,8 +3,0,7,-4 +5,7,3,-1 +7,-8,-3,1 +5,5,0,1 +-3,-1,0,8 +-6,-8,-4,1 +-3,-1,-6,0 +0,-1,0,0 +6,0,0,8 +3,-1,-4,6 +-4,4,0,-5 +3,7,1,7 +-5,0,6,7 +5,-5,2,3 +5,-7,2,1 +-6,1,-3,-6 +7,8,-2,8 +5,4,0,6 +-8,-3,4,-3 +-3,-6,2,6 +1,4,2,5 +0,7,6,-5 +-1,7,5,4 +4,-5,-4,0 +-2,1,4,-7 +-2,0,0,8 +7,0,1,1 +-3,-7,8,6 +-2,-8,6,7 +6,3,-4,5 +5,2,-5,8 +4,-2,5,-2 +8,5,-4,-4 +2,6,-7,6 +-4,-2,-6,-5 +0,5,-6,-1 +5,3,4,3 +4,2,1,5 +6,-6,-8,3 +-7,2,3,-2 +0,2,2,1 +0,1,2,3 +-6,4,1,-4 +7,-4,-1,4 +-5,3,-3,0 +3,8,-3,-4 +-2,-3,4,2 +4,7,-2,4 +4,-4,-3,-8 +1,0,-2,-6 +6,7,-4,0 +-2,-7,2,-2 +0,4,2,2 +-4,8,-1,0 +-4,5,1,1 +-2,-8,-1,4 +2,3,-3,4 +-8,-4,-5,0 +-6,3,0,2 +6,-5,1,0 +4,-2,-8,4 +0,7,-5,-2 +-7,-3,5,-1 +5,7,-4,1 +-3,-3,3,5 +2,0,-4,-4 +-7,0,6,6 +4,-4,-3,-1 +-6,6,-1,-6 +-1,2,1,-8 +-2,3,4,6 +5,8,-4,-8 +0,5,0,-4 +-5,-3,7,7 +5,4,5,-2 +4,-2,8,-5 +-4,2,-7,4 +1,-8,4,-4 +7,8,-7,3 +2,7,-8,-5 +-1,-5,6,-7 +5,-4,7,-2 +0,-3,0,6 +0,-7,-2,2 +4,8,0,-1 +0,-3,5,-3 +5,-6,0,4 +1,-7,2,-2 +-1,0,-3,1 +-4,0,4,-6 +5,3,7,3 +7,-4,7,-8 +-3,-5,3,7 +0,-6,8,2 +4,-6,-1,8 +0,-7,0,-8 +-4,5,0,6 +7,6,-6,2 +-6,-5,-7,3 +0,-1,4,-8 +4,6,-4,4 +-4,-2,5,4 +-8,-8,0,4 +2,-8,4,-1 +2,4,0,0 +-6,-1,8,7 +-6,5,8,-5 +-3,-5,-7,-3 +3,-1,-5,-7 +0,4,-4,-7 +2,-4,-1,-6 +-6,-6,0,5 +0,6,3,-5 +0,-3,8,2 +7,-6,6,-1 +-3,7,-4,-5 +-3,1,3,7 +5,-2,-6,-7 +-6,3,-1,8 +0,0,-4,-2 +-8,2,3,-4 +0,-2,-4,0 +1,8,-3,-7 +-2,-4,3,0 +3,-8,7,0 +-1,-6,3,-4 +3,0,8,4 +3,3,-5,-6 +5,0,-1,-2 +7,1,-4,8 +4,-5,3,-2 +4,-4,0,8 +-4,2,1,-8 +-8,0,-7,-2 +4,-2,0,0 +-8,3,7,-8 +8,-8,6,-5 +-8,0,3,-5 +6,3,-2,-3 +4,0,-5,7 +-1,-5,-6,2 +4,-1,-7,2 +-8,-1,-2,0 +1,7,-7,-2 +5,0,-5,-7 +8,-3,6,-2 +1,-6,2,-3 +6,-1,6,3 +-7,4,3,4 +-7,-5,-5,-4 +-7,2,-8,-4 +-5,8,3,-3 +1,2,-3,4 +-6,-5,-4,1 +5,4,5,7 +0,0,-1,-4 +5,-8,3,-1 +5,6,-5,0 +-7,-3,-6,0 +2,-8,0,1 +1,4,-7,-8 +-4,-7,-6,3 +0,1,-1,0 +-6,-1,6,0 +1,6,-4,-2 +8,-3,0,0 +-2,0,-3,7 +3,8,-4,3 +-8,7,2,0 +1,4,-6,3 +5,-3,4,-4 +-3,-5,5,5 +-6,4,-2,2 +-4,0,2,4 +-7,1,6,1 +-2,2,4,6 +-5,-2,6,0 +-1,4,8,0 +0,8,6,-6 +-6,6,-4,-7 +-6,-7,3,0 +4,-1,3,4 +0,-7,-4,-6 +-6,-5,-5,0 +-2,-5,-4,0 +2,0,-8,6 +-1,1,0,0 +-6,-4,-3,-1 +7,5,-7,1 +-5,-1,3,3 +6,1,0,1 +6,7,6,7 +-3,1,0,-3 +-5,-1,-6,4 +-5,1,1,8 +8,-1,-2,-6 +3,0,6,7 +0,8,4,0 +-8,0,-2,5 +-4,-3,-5,5 +-5,3,2,5 +-2,-3,0,-6 +-3,-4,1,-2 +8,-4,-7,-6 +2,8,6,-7 +3,-1,1,-6 +0,-8,1,3 +-2,-4,8,0 +7,-7,-3,5 +8,5,6,-5 +-3,7,2,8 +6,-1,-7,1 +-4,0,-2,-2 +7,8,1,-3 +-2,5,8,6 +-7,-5,0,3 +-7,3,-1,6 +2,-1,-4,0 +-8,-6,2,-8 +-7,-5,-5,1 +0,-5,-4,4 +5,-2,-3,-8 +-5,-8,1,4 +5,0,7,-4 +8,7,1,-1 +-4,-1,-5,2 +4,8,-6,1 +-3,2,3,4 +-5,-2,1,3 +-3,5,5,4 +-6,4,-1,5 +6,1,3,0 +0,-4,-5,0 +-4,4,2,6 +-7,-8,-6,7 +8,4,5,1 +0,5,-3,-1 +3,6,5,-8 +1,8,3,-6 +3,-3,-5,-8 +-7,5,-5,0 +-6,4,0,-6 +-7,7,6,-3 +-3,-1,7,8 +-7,-7,1,-4 +-7,-1,-8,6 +6,0,-2,2 +-5,-8,0,7 +-5,-4,8,4 +1,5,4,2 +8,8,-2,6 +-3,2,-2,1 +-5,-2,1,-2 +8,8,-8,-4 +-7,-8,8,-4 +0,-6,8,-2 +-6,8,1,0 +-8,0,8,-4 +-6,5,1,2 +1,7,5,-2 +-4,1,0,-7 +2,-8,3,7 +-1,-6,-2,-1 +3,-5,-1,7 +0,-7,2,1 +0,8,2,0 +-1,-2,-8,-2 +6,2,5,0 +7,-8,-8,0 +-2,1,2,6 +-3,-7,-4,2 +7,1,4,-3 +5,4,-1,1 +8,-8,8,-7 +3,7,7,-1 +0,-7,0,-4 +-4,2,7,-7 +-7,2,-5,7 +7,-3,2,0 +-8,1,2,0 +5,8,8,-3 +0,7,-2,7 +-3,0,0,-1 +6,8,3,-1 +1,0,-8,0 +8,-5,6,6 +3,0,0,3 +1,4,-4,4 +-2,-5,-3,3 +7,3,-1,-1 +2,-5,1,-5 +-3,-2,6,6 +0,7,-2,-2 +0,0,3,-7 +-1,-7,2,-2 +-6,-1,0,1 +-4,1,1,8 +-4,-6,1,1 +5,7,3,-3 +8,-2,4,2 +0,-6,5,-8 +4,5,0,-6 +1,0,-2,-1 +-6,0,0,-6 +-5,-7,-4,-6 +-8,8,-5,-2 +1,-7,0,4 +4,6,8,1 +-2,-6,6,6 +7,1,-6,0 +-5,6,-4,0 +-4,1,1,4 +8,-7,-1,4 +-7,8,4,-2 +8,5,-7,3 +2,-5,5,-1 +-5,-5,3,8 +-5,-3,-7,6 +5,2,2,1 +-1,-7,-5,2 +0,7,8,-5 +6,-4,5,0 +-1,5,-2,8 +-8,7,0,7 +-4,8,-1,1 +5,-1,1,-2 +2,-3,8,0 +0,6,-1,1 +-2,7,-7,8 +-6,1,-1,6 +5,7,-6,0 +-5,-1,-6,-6 +-2,3,-8,-5 +1,5,-7,-8 +7,-5,-2,5 +-5,7,5,-2 +-5,0,0,7 +-4,-4,0,0 +-3,0,2,-7 +5,4,3,-1 +-5,-7,7,5 +-2,-3,4,5 +-5,-3,4,2 +-7,0,-5,3 +0,0,-8,8 +0,5,-7,4 +-8,-3,8,-2 +-5,8,-2,-5 +-8,8,0,0 +-8,-3,5,-1 +-6,1,8,-3 +3,7,-6,3 +-6,6,2,5 +1,-4,-3,0 +-8,-8,5,3 +1,-4,8,-2 +4,7,3,1 +7,0,4,0 +0,3,-4,-2 +-7,3,7,4 +-4,-7,-1,3 +1,-7,2,1 +3,3,-5,-1 +5,-7,2,2 +1,-4,-4,0 +-8,5,-3,-1 +3,-3,4,0 +7,0,4,-5 +0,1,1,2 +1,-5,6,-5 +-3,2,7,7 +-3,-3,6,2 +2,-2,0,-3 +3,8,-3,2 +-1,1,3,-4 +2,7,4,8 +7,6,-1,6 +8,8,6,5 +2,8,-6,-7 +-1,-3,-3,3 +4,0,-5,-1 +-4,-4,-1,2 +2,-1,-2,-3 +3,3,-3,1 +-1,3,2,2 +4,1,4,7 +-1,-6,-4,2 +-5,-5,2,-1 +-2,2,0,-5 +-1,-8,5,-2 +-6,1,-1,-1 +-8,-8,0,2 +7,8,-7,-1 +-6,7,0,-6 +-4,4,8,-7 +7,1,5,7 +-5,2,2,-5 +1,-2,-3,0 +0,7,-8,-5 +-1,0,-5,6 +-6,1,-4,-3 +8,2,4,-7 +0,-3,0,-7 +6,-5,-8,-4 +-3,4,-3,7 +0,-1,-8,2 +3,1,-8,0 +-8,1,3,7 +-7,1,8,6 +7,7,-3,7 +4,0,2,-3 +0,-2,1,-7 +-7,6,-3,7 +-3,8,-7,4 +6,4,2,5 +3,-3,6,-7 +6,-8,-3,-1 +-2,-8,-8,4 +-3,-2,1,6 +3,1,-1,-1 +8,6,7,5 +5,7,7,-8 +-7,3,3,4 +8,6,-5,-4 +1,-4,-5,-3 +4,6,-6,-6 +-3,4,0,7 +1,-4,-3,8 +3,-7,-2,1 +2,-4,4,8 +-5,1,-7,5 +0,-5,0,3 +0,7,-8,5 +-8,-2,1,3 +-5,8,8,6 +0,5,4,-1 +0,-8,-7,8 +3,2,1,-7 +2,-3,4,1 +5,4,7,-3 +-8,-3,7,-3 +-2,5,6,-5 +5,0,0,-3 +-4,6,6,1 +8,-2,-5,2 +0,4,-2,3 +-8,-5,-8,6 +-5,0,5,7 +-7,1,-8,4 +7,2,6,-2 +-2,-7,-2,6 +-7,7,0,5 +-5,-3,1,4 +-4,8,2,3 +-7,0,0,-6 +2,4,0,8 +2,7,7,0 +7,4,-4,-3 +2,7,5,7 +-3,4,1,3 +-2,-3,-3,1 +2,8,-1,8 +0,-7,6,8 +1,6,5,5 +-8,-6,-6,-5 +6,-8,-8,-1 +-8,3,3,3 +5,-7,7,-2 +5,8,1,6 +0,2,3,5 +-2,7,-7,-3 +-5,6,1,-5 +6,7,-1,4 +8,-3,6,-7 +5,0,-8,3 +0,6,2,0 +-8,-6,-6,5 +0,7,2,-3 +1,-4,6,-7 +-6,7,0,4 +4,-4,0,4 +6,3,7,-2 +3,-8,2,3 +0,5,3,-8 +2,6,7,4 +2,-7,-5,1 +-8,-3,-2,4 +-7,-7,0,4 +-4,-5,-6,1 +-6,-6,0,-3 +-8,8,-3,-4 +-6,7,1,-6 +-5,4,0,7 +-4,-1,5,3 +5,-7,3,1 +0,-4,-6,-3 +6,-6,-1,-5 +3,1,5,-3 +-1,1,2,-3 +0,7,-1,-7 +-8,0,8,0 +0,8,0,-6 +2,-7,2,0 +0,-1,-2,-7 +-2,0,1,1 +1,-7,8,4 +3,-6,0,7 +0,0,-5,4 +2,-7,0,6 +-6,4,5,-7 +-3,5,7,4 +-2,-1,7,8 +-7,0,-2,-4 +3,-6,6,0 +5,-4,-4,4 +6,8,8,-3 +6,-6,-6,3 +2,-3,-3,-3 +8,-5,-2,0 +-3,5,7,-4 +-7,-8,1,5 +0,-1,-1,-1 +8,1,7,-8 +4,4,2,4 +6,2,-1,2 +-5,6,-6,5 +-2,-5,-3,4 +6,-3,-4,0 +8,8,-5,-7 +2,2,0,-3 +-5,-8,1,2 +7,-6,-2,8 +-5,0,-3,3 +-2,7,-4,-5 +8,-1,-6,1 +7,6,-1,-4 +-3,0,2,1 +0,0,5,0 +-1,8,-2,3 +-3,2,1,-8 +1,7,-7,0 +1,4,-1,0 +6,-4,3,-2 +-1,-6,-2,2 +-2,2,2,2 +2,0,-3,5 +-4,1,-8,-3 +-4,1,5,-7 +-6,8,1,4 +5,3,0,1 +-8,-7,7,-1 +-8,-3,1,-7 +0,2,4,7 +6,7,2,-8 +4,1,2,8 +3,-2,1,-5 +8,2,-7,6 +8,0,5,3 +-7,4,8,-7 +3,8,-1,-7 +-1,-5,-2,0 +-3,0,6,3 +6,5,-3,-2 +1,8,7,-2 +-4,-1,-7,-2 +-6,-1,8,3 +8,-1,5,-6 +5,0,5,2 +-4,8,0,-1 +-5,2,7,-3 +5,-2,-6,5 +4,-4,4,0 +-7,-1,-5,-5 +-8,-5,4,5 +4,-6,-8,3 +7,2,7,-5 +1,6,2,-3 +-3,3,-8,0 +1,-6,7,-3 +-5,8,6,-3 +-3,-2,-4,-6 +7,-7,-2,1 +5,4,-7,-1 +3,-4,-5,-1 +-1,-5,6,-1 +-8,4,-5,1 diff --git a/2018/inputs/3.txt b/2018/inputs/3.txt new file mode 100644 index 0000000..4701818 --- /dev/null +++ b/2018/inputs/3.txt @@ -0,0 +1,1385 @@ +#1 @ 342,645: 25x20 +#2 @ 124,968: 28x19 +#3 @ 680,765: 26x20 +#4 @ 832,699: 12x15 +#5 @ 4,746: 29x14 +#6 @ 926,115: 19x17 +#7 @ 662,587: 28x12 +#8 @ 532,568: 27x23 +#9 @ 860,23: 16x21 +#10 @ 530,562: 12x27 +#11 @ 15,254: 10x27 +#12 @ 375,611: 18x10 +#13 @ 357,389: 22x23 +#14 @ 483,392: 14x16 +#15 @ 426,705: 17x13 +#16 @ 273,918: 23x28 +#17 @ 873,722: 13x13 +#18 @ 429,749: 12x25 +#19 @ 701,937: 14x11 +#20 @ 89,231: 23x26 +#21 @ 704,220: 10x27 +#22 @ 481,847: 21x24 +#23 @ 9,378: 14x19 +#24 @ 682,442: 10x21 +#25 @ 242,63: 21x23 +#26 @ 748,871: 20x13 +#27 @ 784,338: 25x25 +#28 @ 966,669: 20x20 +#29 @ 589,833: 22x25 +#30 @ 489,489: 16x24 +#31 @ 976,478: 4x4 +#32 @ 739,826: 13x15 +#33 @ 783,753: 21x17 +#34 @ 433,367: 22x11 +#35 @ 32,841: 10x20 +#36 @ 258,497: 26x28 +#37 @ 632,776: 18x25 +#38 @ 517,389: 20x14 +#39 @ 446,740: 19x26 +#40 @ 667,455: 15x14 +#41 @ 664,252: 25x26 +#42 @ 227,45: 29x21 +#43 @ 127,138: 29x27 +#44 @ 466,308: 19x17 +#45 @ 356,134: 12x19 +#46 @ 609,640: 28x24 +#47 @ 677,228: 16x27 +#48 @ 149,610: 10x28 +#49 @ 863,498: 21x28 +#50 @ 913,511: 12x27 +#51 @ 748,761: 24x11 +#52 @ 802,288: 10x22 +#53 @ 26,442: 29x20 +#54 @ 85,464: 20x21 +#55 @ 262,944: 21x18 +#56 @ 876,753: 15x10 +#57 @ 105,199: 23x19 +#58 @ 335,848: 23x24 +#59 @ 467,537: 24x22 +#60 @ 552,217: 14x13 +#61 @ 534,820: 10x19 +#62 @ 261,579: 25x13 +#63 @ 541,445: 19x17 +#64 @ 869,769: 28x11 +#65 @ 447,668: 25x26 +#66 @ 42,734: 18x16 +#67 @ 553,233: 13x13 +#68 @ 47,861: 12x16 +#69 @ 33,834: 21x14 +#70 @ 240,174: 29x13 +#71 @ 611,362: 24x14 +#72 @ 899,371: 21x21 +#73 @ 340,5: 23x23 +#74 @ 69,246: 14x18 +#75 @ 432,558: 11x10 +#76 @ 737,175: 27x20 +#77 @ 623,365: 15x22 +#78 @ 666,453: 26x28 +#79 @ 368,774: 25x10 +#80 @ 923,879: 18x16 +#81 @ 37,315: 16x23 +#82 @ 119,279: 18x26 +#83 @ 928,850: 20x18 +#84 @ 896,902: 18x16 +#85 @ 332,590: 28x13 +#86 @ 902,815: 27x21 +#87 @ 215,508: 19x12 +#88 @ 981,57: 10x15 +#89 @ 706,393: 21x24 +#90 @ 975,369: 10x11 +#91 @ 635,845: 29x18 +#92 @ 831,543: 15x16 +#93 @ 296,865: 19x10 +#94 @ 889,189: 24x19 +#95 @ 59,749: 11x22 +#96 @ 739,946: 24x27 +#97 @ 536,759: 27x29 +#98 @ 982,234: 17x11 +#99 @ 639,615: 26x25 +#100 @ 867,397: 26x29 +#101 @ 881,784: 19x19 +#102 @ 215,912: 22x28 +#103 @ 127,336: 10x15 +#104 @ 313,729: 15x12 +#105 @ 695,74: 17x28 +#106 @ 748,187: 11x16 +#107 @ 809,2: 16x27 +#108 @ 891,192: 17x18 +#109 @ 72,920: 16x20 +#110 @ 41,967: 22x28 +#111 @ 91,733: 22x20 +#112 @ 464,641: 13x13 +#113 @ 464,860: 17x10 +#114 @ 623,106: 13x28 +#115 @ 358,85: 24x21 +#116 @ 774,944: 19x28 +#117 @ 752,587: 11x20 +#118 @ 635,103: 25x11 +#119 @ 498,36: 17x11 +#120 @ 227,659: 15x13 +#121 @ 924,553: 13x13 +#122 @ 775,297: 23x24 +#123 @ 479,866: 10x11 +#124 @ 387,798: 11x28 +#125 @ 526,847: 19x27 +#126 @ 747,861: 11x25 +#127 @ 789,652: 14x10 +#128 @ 419,7: 17x13 +#129 @ 356,142: 26x10 +#130 @ 436,239: 14x27 +#131 @ 555,710: 14x23 +#132 @ 871,447: 13x27 +#133 @ 473,730: 14x14 +#134 @ 558,170: 16x18 +#135 @ 888,882: 29x25 +#136 @ 834,147: 24x18 +#137 @ 721,467: 28x12 +#138 @ 223,105: 28x26 +#139 @ 285,326: 28x23 +#140 @ 584,300: 3x6 +#141 @ 710,754: 23x21 +#142 @ 283,892: 21x14 +#143 @ 448,894: 18x3 +#144 @ 380,479: 16x15 +#145 @ 703,57: 16x20 +#146 @ 692,448: 24x11 +#147 @ 926,350: 20x26 +#148 @ 167,528: 25x12 +#149 @ 444,722: 28x21 +#150 @ 166,183: 15x18 +#151 @ 546,472: 29x18 +#152 @ 532,900: 12x22 +#153 @ 215,490: 29x20 +#154 @ 678,458: 25x23 +#155 @ 601,462: 24x11 +#156 @ 484,514: 12x11 +#157 @ 863,763: 10x18 +#158 @ 653,452: 16x23 +#159 @ 464,302: 13x21 +#160 @ 868,65: 21x18 +#161 @ 227,824: 20x11 +#162 @ 111,629: 29x19 +#163 @ 55,554: 27x21 +#164 @ 0,757: 21x17 +#165 @ 418,861: 13x16 +#166 @ 932,903: 12x16 +#167 @ 429,772: 11x14 +#168 @ 706,805: 11x23 +#169 @ 487,24: 26x15 +#170 @ 806,900: 16x16 +#171 @ 580,719: 24x22 +#172 @ 458,481: 20x17 +#173 @ 343,488: 18x11 +#174 @ 734,342: 12x27 +#175 @ 320,439: 4x3 +#176 @ 446,635: 26x25 +#177 @ 552,683: 11x23 +#178 @ 181,168: 26x24 +#179 @ 851,583: 27x28 +#180 @ 879,363: 10x11 +#181 @ 884,139: 11x21 +#182 @ 912,88: 24x27 +#183 @ 52,35: 22x18 +#184 @ 657,705: 11x14 +#185 @ 370,777: 11x17 +#186 @ 801,354: 21x24 +#187 @ 773,546: 16x20 +#188 @ 888,322: 19x11 +#189 @ 807,788: 27x13 +#190 @ 465,956: 19x29 +#191 @ 369,770: 13x21 +#192 @ 311,137: 12x14 +#193 @ 148,150: 19x29 +#194 @ 389,613: 28x25 +#195 @ 429,373: 10x25 +#196 @ 892,148: 20x15 +#197 @ 890,271: 11x19 +#198 @ 58,861: 18x19 +#199 @ 449,255: 9x5 +#200 @ 257,887: 27x15 +#201 @ 383,616: 20x18 +#202 @ 663,657: 18x21 +#203 @ 331,648: 25x13 +#204 @ 509,53: 10x28 +#205 @ 86,287: 15x20 +#206 @ 753,190: 20x20 +#207 @ 922,527: 19x12 +#208 @ 132,948: 20x26 +#209 @ 883,786: 15x21 +#210 @ 117,592: 27x15 +#211 @ 960,611: 13x22 +#212 @ 829,769: 14x19 +#213 @ 669,686: 17x13 +#214 @ 276,787: 27x10 +#215 @ 619,909: 18x22 +#216 @ 418,209: 21x25 +#217 @ 231,831: 27x18 +#218 @ 336,538: 22x18 +#219 @ 180,783: 14x23 +#220 @ 609,263: 22x10 +#221 @ 360,982: 21x16 +#222 @ 775,813: 14x26 +#223 @ 906,198: 10x24 +#224 @ 937,144: 28x28 +#225 @ 475,903: 24x12 +#226 @ 887,149: 11x16 +#227 @ 927,259: 20x25 +#228 @ 71,862: 29x26 +#229 @ 136,954: 26x17 +#230 @ 721,827: 15x13 +#231 @ 769,931: 21x25 +#232 @ 728,119: 13x28 +#233 @ 654,942: 13x27 +#234 @ 434,737: 18x13 +#235 @ 672,331: 27x20 +#236 @ 816,17: 25x21 +#237 @ 251,781: 28x20 +#238 @ 342,209: 16x10 +#239 @ 581,434: 23x22 +#240 @ 782,100: 14x11 +#241 @ 878,831: 14x12 +#242 @ 667,233: 19x28 +#243 @ 237,650: 28x24 +#244 @ 425,738: 11x15 +#245 @ 936,470: 23x23 +#246 @ 68,321: 21x19 +#247 @ 356,539: 27x29 +#248 @ 945,353: 18x23 +#249 @ 906,933: 22x28 +#250 @ 360,812: 10x29 +#251 @ 884,774: 17x27 +#252 @ 413,769: 23x20 +#253 @ 594,75: 21x15 +#254 @ 676,702: 15x11 +#255 @ 233,529: 27x25 +#256 @ 173,236: 15x17 +#257 @ 907,949: 16x13 +#258 @ 809,570: 24x10 +#259 @ 67,678: 29x22 +#260 @ 176,951: 25x18 +#261 @ 754,625: 10x18 +#262 @ 142,270: 26x29 +#263 @ 558,673: 24x19 +#264 @ 224,27: 24x14 +#265 @ 725,829: 7x6 +#266 @ 703,941: 9x3 +#267 @ 880,864: 28x27 +#268 @ 727,445: 25x24 +#269 @ 747,520: 17x15 +#270 @ 850,410: 26x21 +#271 @ 363,964: 10x16 +#272 @ 752,721: 23x16 +#273 @ 295,351: 26x20 +#274 @ 899,877: 26x16 +#275 @ 95,804: 20x28 +#276 @ 543,866: 20x16 +#277 @ 917,887: 19x27 +#278 @ 449,474: 16x22 +#279 @ 673,459: 28x23 +#280 @ 971,786: 13x17 +#281 @ 42,176: 21x18 +#282 @ 531,886: 15x13 +#283 @ 679,438: 15x22 +#284 @ 161,659: 19x25 +#285 @ 838,148: 15x23 +#286 @ 496,732: 26x14 +#287 @ 482,256: 19x26 +#288 @ 389,941: 27x25 +#289 @ 352,255: 23x15 +#290 @ 825,688: 25x24 +#291 @ 894,313: 23x20 +#292 @ 906,553: 21x17 +#293 @ 293,130: 21x13 +#294 @ 549,80: 25x18 +#295 @ 85,871: 20x10 +#296 @ 876,734: 20x24 +#297 @ 831,935: 14x17 +#298 @ 618,819: 23x20 +#299 @ 750,70: 24x14 +#300 @ 749,711: 22x17 +#301 @ 555,801: 17x12 +#302 @ 544,64: 28x21 +#303 @ 114,413: 21x22 +#304 @ 215,526: 13x21 +#305 @ 147,31: 25x12 +#306 @ 679,427: 18x17 +#307 @ 634,930: 23x24 +#308 @ 41,419: 21x28 +#309 @ 892,162: 18x24 +#310 @ 812,886: 19x14 +#311 @ 440,700: 28x13 +#312 @ 586,832: 28x21 +#313 @ 255,687: 13x22 +#314 @ 945,879: 22x16 +#315 @ 480,731: 18x11 +#316 @ 738,731: 15x10 +#317 @ 528,621: 11x16 +#318 @ 243,787: 28x26 +#319 @ 512,493: 22x13 +#320 @ 762,692: 27x11 +#321 @ 316,57: 12x14 +#322 @ 410,860: 17x12 +#323 @ 772,591: 14x24 +#324 @ 813,221: 13x11 +#325 @ 161,271: 12x14 +#326 @ 520,597: 26x19 +#327 @ 577,129: 25x20 +#328 @ 448,31: 10x15 +#329 @ 594,33: 16x27 +#330 @ 170,498: 25x19 +#331 @ 882,833: 6x4 +#332 @ 190,548: 12x26 +#333 @ 639,879: 28x25 +#334 @ 473,817: 19x26 +#335 @ 543,458: 11x23 +#336 @ 676,657: 26x25 +#337 @ 786,353: 28x17 +#338 @ 873,508: 14x17 +#339 @ 208,782: 17x27 +#340 @ 392,542: 10x26 +#341 @ 672,650: 29x23 +#342 @ 446,637: 20x18 +#343 @ 534,58: 16x15 +#344 @ 696,760: 23x17 +#345 @ 265,767: 18x15 +#346 @ 105,750: 12x16 +#347 @ 731,438: 28x10 +#348 @ 535,833: 24x21 +#349 @ 72,531: 18x28 +#350 @ 640,734: 27x21 +#351 @ 156,265: 15x16 +#352 @ 227,299: 24x22 +#353 @ 552,492: 11x29 +#354 @ 605,95: 14x20 +#355 @ 665,490: 11x25 +#356 @ 456,289: 25x12 +#357 @ 876,516: 13x18 +#358 @ 26,163: 20x28 +#359 @ 228,769: 19x11 +#360 @ 766,766: 16x12 +#361 @ 167,654: 13x28 +#362 @ 728,185: 20x25 +#363 @ 321,340: 23x20 +#364 @ 327,175: 18x14 +#365 @ 83,860: 10x19 +#366 @ 361,177: 20x24 +#367 @ 282,505: 18x16 +#368 @ 780,44: 29x28 +#369 @ 854,406: 15x25 +#370 @ 142,928: 10x19 +#371 @ 114,594: 11x20 +#372 @ 775,78: 26x24 +#373 @ 264,791: 28x12 +#374 @ 789,217: 24x20 +#375 @ 931,559: 19x22 +#376 @ 523,549: 22x20 +#377 @ 744,356: 23x24 +#378 @ 630,746: 25x11 +#379 @ 339,201: 11x28 +#380 @ 777,698: 25x14 +#381 @ 198,933: 29x21 +#382 @ 222,919: 27x25 +#383 @ 356,648: 16x19 +#384 @ 237,915: 10x12 +#385 @ 10,864: 17x26 +#386 @ 494,808: 29x23 +#387 @ 440,547: 24x25 +#388 @ 688,247: 10x16 +#389 @ 95,580: 16x19 +#390 @ 374,8: 12x27 +#391 @ 287,332: 20x26 +#392 @ 453,940: 24x22 +#393 @ 344,878: 10x22 +#394 @ 541,277: 16x18 +#395 @ 965,360: 24x12 +#396 @ 280,878: 21x20 +#397 @ 680,384: 25x19 +#398 @ 670,76: 12x12 +#399 @ 540,457: 18x20 +#400 @ 524,406: 17x16 +#401 @ 625,272: 25x22 +#402 @ 100,906: 26x12 +#403 @ 281,871: 7x10 +#404 @ 275,849: 21x26 +#405 @ 357,559: 13x13 +#406 @ 918,753: 25x21 +#407 @ 270,837: 25x17 +#408 @ 780,84: 20x20 +#409 @ 503,893: 11x13 +#410 @ 154,609: 12x23 +#411 @ 871,739: 21x22 +#412 @ 529,698: 27x27 +#413 @ 376,844: 14x23 +#414 @ 498,876: 13x21 +#415 @ 893,958: 15x27 +#416 @ 635,498: 20x20 +#417 @ 571,884: 24x21 +#418 @ 336,586: 24x24 +#419 @ 0,206: 29x16 +#420 @ 655,64: 24x11 +#421 @ 436,648: 28x16 +#422 @ 952,593: 17x11 +#423 @ 643,6: 17x18 +#424 @ 224,166: 29x11 +#425 @ 818,905: 15x14 +#426 @ 18,863: 18x11 +#427 @ 497,902: 15x10 +#428 @ 564,545: 16x29 +#429 @ 657,446: 18x20 +#430 @ 245,25: 17x11 +#431 @ 936,346: 23x24 +#432 @ 127,152: 24x19 +#433 @ 563,928: 19x27 +#434 @ 684,407: 27x13 +#435 @ 737,584: 15x15 +#436 @ 644,837: 16x14 +#437 @ 702,978: 20x15 +#438 @ 422,65: 11x16 +#439 @ 121,142: 13x20 +#440 @ 68,437: 19x16 +#441 @ 121,382: 24x28 +#442 @ 805,910: 29x14 +#443 @ 795,432: 21x20 +#444 @ 269,735: 25x22 +#445 @ 226,877: 11x17 +#446 @ 550,450: 29x18 +#447 @ 606,726: 14x25 +#448 @ 46,546: 10x19 +#449 @ 320,95: 11x25 +#450 @ 935,419: 12x15 +#451 @ 453,862: 13x16 +#452 @ 315,500: 23x12 +#453 @ 181,127: 17x18 +#454 @ 243,907: 19x13 +#455 @ 263,960: 29x22 +#456 @ 509,159: 14x17 +#457 @ 486,810: 23x21 +#458 @ 560,945: 25x13 +#459 @ 6,400: 24x28 +#460 @ 368,783: 17x23 +#461 @ 75,792: 26x29 +#462 @ 543,395: 22x23 +#463 @ 47,464: 19x10 +#464 @ 342,494: 27x24 +#465 @ 911,861: 19x25 +#466 @ 94,272: 23x23 +#467 @ 420,516: 15x26 +#468 @ 146,233: 20x27 +#469 @ 201,907: 10x23 +#470 @ 446,887: 23x16 +#471 @ 468,702: 14x27 +#472 @ 799,865: 23x25 +#473 @ 451,242: 27x20 +#474 @ 915,801: 28x27 +#475 @ 471,445: 23x16 +#476 @ 381,751: 26x28 +#477 @ 903,539: 23x21 +#478 @ 621,280: 13x26 +#479 @ 658,132: 27x19 +#480 @ 136,639: 22x26 +#481 @ 24,185: 22x23 +#482 @ 732,779: 25x25 +#483 @ 760,858: 20x22 +#484 @ 24,408: 26x19 +#485 @ 457,627: 20x16 +#486 @ 353,284: 20x10 +#487 @ 920,899: 10x3 +#488 @ 436,694: 11x17 +#489 @ 849,162: 17x16 +#490 @ 786,236: 27x20 +#491 @ 709,245: 11x28 +#492 @ 462,389: 13x17 +#493 @ 738,88: 27x21 +#494 @ 111,617: 24x24 +#495 @ 896,764: 11x23 +#496 @ 473,321: 23x16 +#497 @ 589,67: 17x16 +#498 @ 183,298: 18x17 +#499 @ 557,675: 10x11 +#500 @ 875,298: 21x17 +#501 @ 128,420: 18x25 +#502 @ 158,17: 27x26 +#503 @ 966,380: 13x29 +#504 @ 571,449: 15x28 +#505 @ 968,404: 12x27 +#506 @ 722,350: 10x24 +#507 @ 247,595: 17x25 +#508 @ 65,734: 22x21 +#509 @ 411,715: 25x12 +#510 @ 123,742: 15x12 +#511 @ 439,687: 19x12 +#512 @ 829,932: 12x13 +#513 @ 893,146: 23x19 +#514 @ 861,131: 15x23 +#515 @ 551,85: 20x7 +#516 @ 957,437: 22x17 +#517 @ 777,65: 22x24 +#518 @ 638,851: 24x21 +#519 @ 116,492: 12x29 +#520 @ 187,785: 3x18 +#521 @ 791,56: 17x27 +#522 @ 406,108: 28x28 +#523 @ 695,252: 21x16 +#524 @ 498,247: 24x17 +#525 @ 301,235: 19x27 +#526 @ 14,173: 13x10 +#527 @ 116,587: 11x29 +#528 @ 170,247: 18x22 +#529 @ 714,745: 20x23 +#530 @ 682,474: 27x19 +#531 @ 838,605: 23x22 +#532 @ 684,330: 20x18 +#533 @ 754,852: 27x25 +#534 @ 885,197: 24x26 +#535 @ 97,256: 16x18 +#536 @ 604,669: 20x19 +#537 @ 612,14: 18x29 +#538 @ 278,738: 8x14 +#539 @ 102,976: 13x15 +#540 @ 50,860: 16x12 +#541 @ 574,411: 16x22 +#542 @ 124,894: 26x20 +#543 @ 848,521: 25x25 +#544 @ 271,287: 25x27 +#545 @ 253,656: 21x16 +#546 @ 547,979: 18x11 +#547 @ 444,332: 12x26 +#548 @ 106,753: 15x16 +#549 @ 886,615: 14x15 +#550 @ 549,216: 27x24 +#551 @ 481,720: 23x13 +#552 @ 505,7: 17x22 +#553 @ 539,106: 28x27 +#554 @ 395,174: 24x12 +#555 @ 547,490: 10x22 +#556 @ 950,79: 21x12 +#557 @ 529,817: 12x23 +#558 @ 40,270: 19x24 +#559 @ 556,127: 25x14 +#560 @ 407,39: 16x26 +#561 @ 130,852: 29x14 +#562 @ 144,368: 27x22 +#563 @ 980,174: 18x22 +#564 @ 285,98: 16x24 +#565 @ 648,686: 16x26 +#566 @ 361,487: 21x16 +#567 @ 471,380: 23x14 +#568 @ 167,331: 23x25 +#569 @ 768,773: 14x16 +#570 @ 328,13: 29x15 +#571 @ 444,697: 14x17 +#572 @ 215,301: 27x27 +#573 @ 238,207: 23x14 +#574 @ 252,346: 21x20 +#575 @ 910,272: 11x18 +#576 @ 751,833: 18x13 +#577 @ 781,221: 10x17 +#578 @ 538,775: 14x26 +#579 @ 982,705: 11x21 +#580 @ 205,805: 25x27 +#581 @ 948,713: 21x12 +#582 @ 647,249: 11x20 +#583 @ 841,156: 19x21 +#584 @ 401,835: 13x28 +#585 @ 637,819: 24x12 +#586 @ 286,241: 19x23 +#587 @ 661,878: 15x24 +#588 @ 115,774: 19x14 +#589 @ 353,655: 22x14 +#590 @ 838,616: 25x23 +#591 @ 573,395: 28x27 +#592 @ 321,67: 26x13 +#593 @ 371,931: 17x19 +#594 @ 765,719: 24x10 +#595 @ 595,574: 21x21 +#596 @ 346,497: 10x16 +#597 @ 67,869: 16x19 +#598 @ 133,284: 10x25 +#599 @ 464,174: 20x25 +#600 @ 613,82: 29x28 +#601 @ 98,519: 27x12 +#602 @ 896,934: 14x17 +#603 @ 645,205: 23x23 +#604 @ 810,96: 9x15 +#605 @ 91,464: 14x23 +#606 @ 798,67: 18x21 +#607 @ 560,243: 27x20 +#608 @ 486,52: 14x12 +#609 @ 623,174: 11x20 +#610 @ 203,404: 10x14 +#611 @ 927,293: 12x10 +#612 @ 457,860: 26x14 +#613 @ 690,648: 13x15 +#614 @ 673,615: 23x22 +#615 @ 399,718: 16x14 +#616 @ 309,695: 23x17 +#617 @ 881,450: 10x24 +#618 @ 879,295: 12x29 +#619 @ 914,865: 5x4 +#620 @ 692,653: 28x26 +#621 @ 468,183: 19x11 +#622 @ 487,258: 13x25 +#623 @ 458,724: 13x16 +#624 @ 793,416: 28x23 +#625 @ 804,843: 28x13 +#626 @ 345,711: 15x20 +#627 @ 679,461: 28x23 +#628 @ 652,655: 20x20 +#629 @ 330,343: 12x13 +#630 @ 919,801: 16x11 +#631 @ 974,473: 10x28 +#632 @ 112,537: 11x18 +#633 @ 680,494: 23x25 +#634 @ 307,283: 16x28 +#635 @ 904,314: 11x25 +#636 @ 718,778: 12x22 +#637 @ 30,550: 23x25 +#638 @ 146,964: 14x18 +#639 @ 167,242: 28x19 +#640 @ 228,443: 17x15 +#641 @ 914,547: 10x15 +#642 @ 931,708: 23x23 +#643 @ 105,180: 16x10 +#644 @ 455,283: 14x16 +#645 @ 491,723: 28x17 +#646 @ 618,6: 17x27 +#647 @ 635,361: 24x25 +#648 @ 883,585: 26x16 +#649 @ 131,346: 17x26 +#650 @ 78,25: 22x12 +#651 @ 611,643: 28x22 +#652 @ 647,114: 15x23 +#653 @ 229,550: 21x28 +#654 @ 190,124: 15x14 +#655 @ 903,330: 13x16 +#656 @ 750,722: 20x19 +#657 @ 26,456: 25x13 +#658 @ 414,283: 16x16 +#659 @ 940,221: 28x25 +#660 @ 585,932: 20x18 +#661 @ 96,398: 20x17 +#662 @ 371,915: 12x19 +#663 @ 819,706: 22x25 +#664 @ 347,500: 15x9 +#665 @ 275,85: 24x10 +#666 @ 435,743: 26x26 +#667 @ 535,568: 22x20 +#668 @ 46,389: 17x25 +#669 @ 584,880: 24x18 +#670 @ 630,266: 18x18 +#671 @ 431,377: 26x14 +#672 @ 559,677: 4x3 +#673 @ 701,439: 16x14 +#674 @ 829,446: 20x11 +#675 @ 555,565: 20x13 +#676 @ 917,846: 14x17 +#677 @ 593,676: 18x16 +#678 @ 542,798: 20x19 +#679 @ 6,372: 24x29 +#680 @ 578,809: 24x24 +#681 @ 64,522: 11x4 +#682 @ 591,896: 13x26 +#683 @ 932,572: 11x25 +#684 @ 867,131: 27x19 +#685 @ 495,889: 23x22 +#686 @ 367,827: 21x13 +#687 @ 232,45: 18x28 +#688 @ 704,711: 11x27 +#689 @ 309,517: 23x13 +#690 @ 429,199: 17x11 +#691 @ 717,52: 20x15 +#692 @ 912,877: 27x25 +#693 @ 447,764: 16x11 +#694 @ 799,769: 28x22 +#695 @ 361,912: 27x26 +#696 @ 891,829: 10x28 +#697 @ 233,895: 20x23 +#698 @ 806,276: 16x13 +#699 @ 377,966: 21x18 +#700 @ 792,875: 20x22 +#701 @ 255,807: 18x19 +#702 @ 634,238: 15x26 +#703 @ 492,519: 13x24 +#704 @ 953,632: 19x26 +#705 @ 684,587: 10x17 +#706 @ 391,424: 16x17 +#707 @ 654,158: 14x27 +#708 @ 118,638: 23x11 +#709 @ 302,282: 17x13 +#710 @ 662,54: 14x19 +#711 @ 909,835: 14x23 +#712 @ 558,971: 18x11 +#713 @ 90,774: 11x28 +#714 @ 745,346: 15x11 +#715 @ 488,860: 22x14 +#716 @ 848,568: 26x23 +#717 @ 6,625: 28x25 +#718 @ 34,388: 15x18 +#719 @ 965,778: 23x24 +#720 @ 103,500: 20x18 +#721 @ 506,222: 29x17 +#722 @ 226,197: 24x25 +#723 @ 129,939: 15x25 +#724 @ 140,644: 11x18 +#725 @ 905,904: 20x25 +#726 @ 423,276: 13x12 +#727 @ 62,511: 17x24 +#728 @ 932,814: 19x26 +#729 @ 9,810: 11x26 +#730 @ 32,624: 16x20 +#731 @ 967,236: 28x18 +#732 @ 616,948: 27x12 +#733 @ 714,733: 15x17 +#734 @ 277,783: 25x24 +#735 @ 482,675: 16x12 +#736 @ 862,11: 19x26 +#737 @ 667,668: 27x15 +#738 @ 131,406: 13x28 +#739 @ 707,788: 26x27 +#740 @ 859,505: 21x21 +#741 @ 968,785: 4x6 +#742 @ 813,939: 11x27 +#743 @ 611,781: 28x17 +#744 @ 298,82: 28x27 +#745 @ 352,828: 16x27 +#746 @ 920,831: 20x23 +#747 @ 967,694: 19x29 +#748 @ 370,50: 25x18 +#749 @ 545,724: 13x16 +#750 @ 102,391: 13x22 +#751 @ 904,122: 22x19 +#752 @ 118,439: 23x10 +#753 @ 793,859: 23x27 +#754 @ 722,798: 27x29 +#755 @ 97,774: 24x10 +#756 @ 326,707: 26x14 +#757 @ 559,909: 28x14 +#758 @ 33,822: 29x21 +#759 @ 508,227: 24x7 +#760 @ 115,427: 26x16 +#761 @ 665,766: 27x25 +#762 @ 303,847: 19x28 +#763 @ 157,535: 19x12 +#764 @ 968,680: 18x10 +#765 @ 668,464: 20x9 +#766 @ 114,534: 27x10 +#767 @ 841,609: 17x21 +#768 @ 972,671: 20x13 +#769 @ 490,506: 27x18 +#770 @ 0,407: 13x26 +#771 @ 626,219: 11x14 +#772 @ 174,512: 12x24 +#773 @ 162,251: 10x18 +#774 @ 612,206: 11x25 +#775 @ 97,517: 11x10 +#776 @ 31,916: 11x17 +#777 @ 261,148: 17x16 +#778 @ 815,577: 26x24 +#779 @ 545,521: 29x23 +#780 @ 842,800: 25x23 +#781 @ 391,437: 23x20 +#782 @ 333,886: 20x14 +#783 @ 109,171: 11x14 +#784 @ 344,483: 28x16 +#785 @ 581,195: 15x24 +#786 @ 608,372: 12x13 +#787 @ 740,279: 14x18 +#788 @ 653,626: 27x22 +#789 @ 308,182: 24x20 +#790 @ 899,219: 16x12 +#791 @ 515,556: 21x11 +#792 @ 171,0: 18x29 +#793 @ 204,304: 27x14 +#794 @ 488,289: 25x25 +#795 @ 479,382: 14x18 +#796 @ 626,889: 25x11 +#797 @ 604,948: 16x10 +#798 @ 182,277: 21x18 +#799 @ 623,205: 24x20 +#800 @ 720,654: 11x25 +#801 @ 731,103: 26x17 +#802 @ 829,581: 14x25 +#803 @ 431,738: 17x29 +#804 @ 524,620: 15x12 +#805 @ 512,539: 23x23 +#806 @ 829,943: 29x18 +#807 @ 93,176: 13x26 +#808 @ 883,796: 12x12 +#809 @ 214,543: 28x16 +#810 @ 518,231: 15x14 +#811 @ 213,502: 21x20 +#812 @ 255,598: 10x22 +#813 @ 352,477: 24x16 +#814 @ 664,653: 15x20 +#815 @ 741,338: 28x26 +#816 @ 361,174: 25x22 +#817 @ 101,582: 14x27 +#818 @ 237,103: 13x12 +#819 @ 814,157: 20x17 +#820 @ 182,216: 28x21 +#821 @ 194,282: 17x18 +#822 @ 247,657: 20x14 +#823 @ 0,647: 14x29 +#824 @ 899,959: 12x23 +#825 @ 151,90: 20x20 +#826 @ 341,562: 25x22 +#827 @ 895,137: 28x18 +#828 @ 853,703: 16x11 +#829 @ 8,934: 11x17 +#830 @ 395,528: 28x13 +#831 @ 874,122: 13x28 +#832 @ 605,187: 19x17 +#833 @ 684,219: 24x24 +#834 @ 382,885: 13x21 +#835 @ 751,858: 19x21 +#836 @ 518,38: 11x27 +#837 @ 812,383: 21x28 +#838 @ 904,886: 21x19 +#839 @ 356,751: 25x24 +#840 @ 586,554: 28x20 +#841 @ 98,582: 10x25 +#842 @ 438,552: 11x21 +#843 @ 231,601: 20x20 +#844 @ 906,176: 11x21 +#845 @ 237,52: 12x23 +#846 @ 81,19: 15x21 +#847 @ 600,731: 19x14 +#848 @ 553,43: 10x22 +#849 @ 703,825: 14x21 +#850 @ 193,283: 10x26 +#851 @ 73,407: 22x26 +#852 @ 226,602: 25x21 +#853 @ 515,223: 26x15 +#854 @ 95,363: 28x13 +#855 @ 927,2: 28x22 +#856 @ 457,470: 16x13 +#857 @ 67,23: 24x14 +#858 @ 435,244: 10x16 +#859 @ 640,450: 29x22 +#860 @ 385,778: 16x23 +#861 @ 734,157: 23x25 +#862 @ 516,727: 11x15 +#863 @ 488,733: 16x12 +#864 @ 83,719: 19x21 +#865 @ 530,287: 15x15 +#866 @ 729,671: 24x16 +#867 @ 240,320: 26x18 +#868 @ 311,583: 13x24 +#869 @ 224,956: 10x13 +#870 @ 662,482: 17x14 +#871 @ 533,896: 12x17 +#872 @ 844,440: 10x26 +#873 @ 104,625: 16x11 +#874 @ 632,431: 25x17 +#875 @ 735,292: 22x24 +#876 @ 74,625: 22x24 +#877 @ 752,738: 24x25 +#878 @ 599,594: 18x10 +#879 @ 220,951: 15x26 +#880 @ 339,67: 14x19 +#881 @ 856,704: 15x22 +#882 @ 829,158: 10x13 +#883 @ 823,838: 27x11 +#884 @ 368,952: 10x15 +#885 @ 32,281: 23x28 +#886 @ 700,84: 11x26 +#887 @ 800,342: 23x9 +#888 @ 392,728: 18x10 +#889 @ 488,802: 22x26 +#890 @ 206,785: 18x25 +#891 @ 411,294: 24x11 +#892 @ 566,932: 24x10 +#893 @ 529,409: 15x17 +#894 @ 477,549: 24x24 +#895 @ 816,957: 14x22 +#896 @ 256,719: 23x20 +#897 @ 860,304: 15x16 +#898 @ 881,268: 27x10 +#899 @ 470,387: 17x10 +#900 @ 173,25: 24x13 +#901 @ 144,28: 26x16 +#902 @ 685,372: 14x23 +#903 @ 695,681: 22x14 +#904 @ 748,874: 29x22 +#905 @ 897,765: 18x17 +#906 @ 880,756: 24x12 +#907 @ 627,112: 24x18 +#908 @ 655,479: 16x11 +#909 @ 392,560: 15x16 +#910 @ 61,740: 23x20 +#911 @ 696,232: 11x20 +#912 @ 452,30: 11x24 +#913 @ 581,289: 16x23 +#914 @ 786,561: 16x19 +#915 @ 774,346: 23x28 +#916 @ 537,171: 25x11 +#917 @ 326,723: 11x27 +#918 @ 224,914: 17x16 +#919 @ 906,176: 25x18 +#920 @ 878,572: 27x25 +#921 @ 391,561: 19x27 +#922 @ 715,976: 19x12 +#923 @ 275,748: 23x19 +#924 @ 381,802: 10x14 +#925 @ 940,217: 24x23 +#926 @ 741,53: 27x15 +#927 @ 104,445: 16x18 +#928 @ 519,127: 27x20 +#929 @ 445,598: 23x21 +#930 @ 126,601: 29x13 +#931 @ 658,225: 24x19 +#932 @ 920,952: 26x23 +#933 @ 110,776: 16x14 +#934 @ 896,945: 24x14 +#935 @ 733,125: 11x17 +#936 @ 849,555: 23x17 +#937 @ 376,546: 24x18 +#938 @ 153,930: 24x24 +#939 @ 470,855: 22x21 +#940 @ 45,321: 27x10 +#941 @ 773,553: 26x14 +#942 @ 749,180: 12x14 +#943 @ 736,631: 28x26 +#944 @ 737,871: 11x14 +#945 @ 447,253: 14x11 +#946 @ 825,628: 27x26 +#947 @ 749,435: 11x20 +#948 @ 919,271: 10x14 +#949 @ 556,558: 10x14 +#950 @ 258,595: 14x28 +#951 @ 324,858: 12x15 +#952 @ 54,735: 24x20 +#953 @ 718,354: 25x10 +#954 @ 954,20: 22x17 +#955 @ 625,176: 15x28 +#956 @ 828,374: 26x14 +#957 @ 946,677: 29x25 +#958 @ 94,678: 12x26 +#959 @ 657,251: 16x22 +#960 @ 537,124: 26x14 +#961 @ 893,609: 14x11 +#962 @ 131,596: 12x13 +#963 @ 436,44: 18x17 +#964 @ 359,651: 18x21 +#965 @ 427,288: 29x14 +#966 @ 521,545: 13x22 +#967 @ 558,231: 17x28 +#968 @ 179,334: 26x28 +#969 @ 801,166: 20x29 +#970 @ 542,41: 25x27 +#971 @ 545,606: 24x29 +#972 @ 278,868: 20x17 +#973 @ 46,956: 16x25 +#974 @ 62,784: 26x15 +#975 @ 346,55: 13x26 +#976 @ 772,213: 22x28 +#977 @ 581,146: 29x17 +#978 @ 283,845: 16x13 +#979 @ 961,683: 19x13 +#980 @ 968,686: 25x17 +#981 @ 637,18: 29x22 +#982 @ 558,932: 24x10 +#983 @ 376,193: 26x10 +#984 @ 884,430: 15x10 +#985 @ 317,13: 21x18 +#986 @ 568,56: 28x13 +#987 @ 661,718: 25x15 +#988 @ 715,672: 20x20 +#989 @ 861,782: 17x26 +#990 @ 455,852: 12x25 +#991 @ 889,802: 17x11 +#992 @ 879,106: 25x23 +#993 @ 867,347: 15x21 +#994 @ 924,422: 18x10 +#995 @ 814,942: 18x29 +#996 @ 84,858: 12x22 +#997 @ 581,427: 28x24 +#998 @ 247,182: 27x21 +#999 @ 971,182: 23x21 +#1000 @ 978,776: 11x17 +#1001 @ 1,786: 13x26 +#1002 @ 977,224: 20x25 +#1003 @ 576,413: 12x12 +#1004 @ 892,182: 23x11 +#1005 @ 680,350: 26x15 +#1006 @ 489,881: 21x15 +#1007 @ 900,891: 21x17 +#1008 @ 591,883: 12x22 +#1009 @ 826,602: 14x24 +#1010 @ 366,486: 23x22 +#1011 @ 711,115: 19x19 +#1012 @ 707,116: 27x10 +#1013 @ 826,817: 27x19 +#1014 @ 315,770: 14x11 +#1015 @ 296,676: 21x26 +#1016 @ 713,373: 19x18 +#1017 @ 7,925: 28x26 +#1018 @ 821,893: 26x19 +#1019 @ 679,85: 28x11 +#1020 @ 2,802: 27x12 +#1021 @ 335,491: 27x22 +#1022 @ 299,337: 12x21 +#1023 @ 804,708: 20x18 +#1024 @ 903,888: 26x19 +#1025 @ 264,744: 29x26 +#1026 @ 813,823: 18x29 +#1027 @ 757,36: 12x18 +#1028 @ 589,217: 14x29 +#1029 @ 761,553: 16x15 +#1030 @ 632,430: 10x13 +#1031 @ 855,795: 28x27 +#1032 @ 93,625: 15x26 +#1033 @ 139,934: 19x20 +#1034 @ 561,850: 12x17 +#1035 @ 834,159: 23x13 +#1036 @ 479,845: 29x16 +#1037 @ 767,935: 10x29 +#1038 @ 506,816: 18x17 +#1039 @ 670,548: 25x22 +#1040 @ 415,58: 14x27 +#1041 @ 943,188: 12x26 +#1042 @ 7,381: 22x17 +#1043 @ 674,568: 12x17 +#1044 @ 410,2: 12x10 +#1045 @ 685,688: 13x23 +#1046 @ 609,566: 18x10 +#1047 @ 484,48: 29x22 +#1048 @ 676,659: 27x14 +#1049 @ 0,812: 12x28 +#1050 @ 282,572: 20x23 +#1051 @ 898,860: 17x25 +#1052 @ 892,949: 14x20 +#1053 @ 580,906: 14x16 +#1054 @ 65,234: 20x19 +#1055 @ 856,479: 10x24 +#1056 @ 475,143: 13x13 +#1057 @ 822,556: 14x27 +#1058 @ 970,678: 22x16 +#1059 @ 488,191: 19x10 +#1060 @ 843,298: 23x10 +#1061 @ 686,225: 17x12 +#1062 @ 224,784: 24x19 +#1063 @ 104,978: 6x10 +#1064 @ 809,756: 29x23 +#1065 @ 851,756: 28x21 +#1066 @ 144,943: 13x26 +#1067 @ 491,667: 10x27 +#1068 @ 383,574: 29x19 +#1069 @ 525,485: 13x11 +#1070 @ 494,721: 21x14 +#1071 @ 670,473: 16x16 +#1072 @ 923,103: 20x23 +#1073 @ 425,367: 27x11 +#1074 @ 975,667: 18x23 +#1075 @ 607,94: 16x25 +#1076 @ 29,617: 10x14 +#1077 @ 741,763: 27x15 +#1078 @ 907,281: 24x21 +#1079 @ 527,545: 21x24 +#1080 @ 751,599: 26x28 +#1081 @ 129,945: 10x28 +#1082 @ 545,718: 17x21 +#1083 @ 833,143: 14x23 +#1084 @ 678,337: 13x22 +#1085 @ 450,473: 10x20 +#1086 @ 883,388: 17x28 +#1087 @ 865,314: 16x21 +#1088 @ 861,408: 20x22 +#1089 @ 582,264: 15x26 +#1090 @ 612,913: 10x11 +#1091 @ 868,575: 11x15 +#1092 @ 854,596: 14x18 +#1093 @ 551,232: 22x24 +#1094 @ 675,898: 24x10 +#1095 @ 70,425: 12x16 +#1096 @ 325,763: 29x19 +#1097 @ 907,855: 16x21 +#1098 @ 770,817: 11x25 +#1099 @ 370,788: 20x22 +#1100 @ 883,426: 22x13 +#1101 @ 718,42: 10x23 +#1102 @ 670,568: 19x28 +#1103 @ 556,702: 23x27 +#1104 @ 224,245: 17x19 +#1105 @ 861,50: 18x25 +#1106 @ 840,622: 21x16 +#1107 @ 827,711: 13x21 +#1108 @ 211,46: 12x16 +#1109 @ 243,918: 19x19 +#1110 @ 855,323: 17x14 +#1111 @ 409,758: 27x24 +#1112 @ 337,193: 26x24 +#1113 @ 272,288: 12x26 +#1114 @ 197,340: 22x21 +#1115 @ 950,574: 16x21 +#1116 @ 311,508: 27x13 +#1117 @ 798,339: 29x17 +#1118 @ 892,173: 10x15 +#1119 @ 779,604: 11x12 +#1120 @ 225,818: 13x15 +#1121 @ 784,25: 19x11 +#1122 @ 88,25: 25x27 +#1123 @ 246,755: 25x28 +#1124 @ 239,175: 26x24 +#1125 @ 398,547: 18x23 +#1126 @ 756,193: 29x25 +#1127 @ 96,680: 4x20 +#1128 @ 916,826: 20x12 +#1129 @ 457,578: 29x29 +#1130 @ 91,576: 23x27 +#1131 @ 618,39: 29x18 +#1132 @ 621,960: 25x21 +#1133 @ 275,936: 14x27 +#1134 @ 130,144: 29x16 +#1135 @ 400,747: 15x29 +#1136 @ 619,221: 20x15 +#1137 @ 734,169: 17x11 +#1138 @ 359,635: 18x16 +#1139 @ 244,349: 29x22 +#1140 @ 202,270: 14x29 +#1141 @ 461,556: 29x28 +#1142 @ 503,155: 24x21 +#1143 @ 857,610: 18x15 +#1144 @ 660,592: 29x27 +#1145 @ 218,446: 12x13 +#1146 @ 149,850: 28x14 +#1147 @ 564,679: 16x11 +#1148 @ 709,112: 28x22 +#1149 @ 465,713: 17x19 +#1150 @ 36,827: 17x21 +#1151 @ 755,284: 14x29 +#1152 @ 313,74: 12x28 +#1153 @ 371,863: 25x26 +#1154 @ 908,817: 10x28 +#1155 @ 561,136: 17x13 +#1156 @ 449,55: 25x14 +#1157 @ 229,617: 18x11 +#1158 @ 841,529: 23x27 +#1159 @ 946,219: 4x17 +#1160 @ 255,612: 15x28 +#1161 @ 617,908: 28x23 +#1162 @ 830,821: 10x15 +#1163 @ 936,168: 15x27 +#1164 @ 275,84: 11x24 +#1165 @ 182,337: 22x18 +#1166 @ 722,642: 17x19 +#1167 @ 120,542: 20x22 +#1168 @ 377,916: 20x26 +#1169 @ 407,724: 25x10 +#1170 @ 380,470: 23x27 +#1171 @ 235,732: 28x15 +#1172 @ 485,445: 19x21 +#1173 @ 8,248: 11x10 +#1174 @ 96,594: 28x10 +#1175 @ 417,110: 13x17 +#1176 @ 316,128: 15x28 +#1177 @ 895,164: 11x10 +#1178 @ 720,148: 28x22 +#1179 @ 932,807: 13x25 +#1180 @ 615,487: 23x12 +#1181 @ 291,846: 21x21 +#1182 @ 931,467: 13x21 +#1183 @ 766,736: 27x13 +#1184 @ 345,728: 19x12 +#1185 @ 781,161: 17x27 +#1186 @ 262,891: 15x25 +#1187 @ 219,755: 12x20 +#1188 @ 681,109: 23x11 +#1189 @ 941,959: 29x16 +#1190 @ 800,13: 23x25 +#1191 @ 51,902: 28x24 +#1192 @ 261,704: 18x12 +#1193 @ 63,438: 20x17 +#1194 @ 428,339: 22x23 +#1195 @ 732,860: 18x25 +#1196 @ 132,750: 23x12 +#1197 @ 771,59: 26x18 +#1198 @ 19,322: 24x17 +#1199 @ 558,119: 11x22 +#1200 @ 213,33: 13x14 +#1201 @ 746,843: 13x12 +#1202 @ 607,223: 15x25 +#1203 @ 744,185: 13x16 +#1204 @ 896,863: 14x11 +#1205 @ 781,653: 20x16 +#1206 @ 519,411: 14x10 +#1207 @ 587,708: 27x14 +#1208 @ 353,41: 29x16 +#1209 @ 555,555: 14x11 +#1210 @ 408,553: 25x22 +#1211 @ 639,190: 27x29 +#1212 @ 149,88: 12x27 +#1213 @ 988,44: 10x20 +#1214 @ 617,812: 26x19 +#1215 @ 308,435: 25x12 +#1216 @ 629,405: 11x29 +#1217 @ 732,761: 11x25 +#1218 @ 802,229: 16x17 +#1219 @ 302,310: 28x26 +#1220 @ 918,368: 16x10 +#1221 @ 66,423: 12x16 +#1222 @ 917,267: 23x28 +#1223 @ 601,956: 3x10 +#1224 @ 653,919: 14x24 +#1225 @ 144,271: 20x16 +#1226 @ 508,421: 27x15 +#1227 @ 519,505: 18x11 +#1228 @ 530,385: 12x13 +#1229 @ 665,446: 18x16 +#1230 @ 520,399: 19x25 +#1231 @ 637,653: 22x29 +#1232 @ 583,956: 14x11 +#1233 @ 484,567: 23x21 +#1234 @ 216,301: 17x12 +#1235 @ 691,507: 12x17 +#1236 @ 854,476: 12x11 +#1237 @ 64,49: 11x16 +#1238 @ 863,564: 16x10 +#1239 @ 360,381: 16x17 +#1240 @ 925,888: 10x18 +#1241 @ 665,330: 12x18 +#1242 @ 228,601: 16x13 +#1243 @ 574,908: 17x13 +#1244 @ 597,953: 14x20 +#1245 @ 954,866: 17x19 +#1246 @ 791,870: 14x12 +#1247 @ 667,476: 13x28 +#1248 @ 662,488: 10x12 +#1249 @ 497,34: 10x27 +#1250 @ 110,132: 22x24 +#1251 @ 177,93: 4x11 +#1252 @ 721,114: 10x20 +#1253 @ 476,376: 21x27 +#1254 @ 384,888: 6x14 +#1255 @ 698,514: 16x26 +#1256 @ 779,308: 16x11 +#1257 @ 701,777: 26x22 +#1258 @ 933,733: 15x26 +#1259 @ 934,70: 24x26 +#1260 @ 72,787: 22x27 +#1261 @ 449,652: 18x15 +#1262 @ 425,558: 16x22 +#1263 @ 622,445: 15x16 +#1264 @ 157,175: 20x23 +#1265 @ 887,212: 21x21 +#1266 @ 514,490: 16x20 +#1267 @ 368,488: 4x6 +#1268 @ 797,41: 18x27 +#1269 @ 91,685: 22x23 +#1270 @ 277,115: 27x28 +#1271 @ 297,360: 27x20 +#1272 @ 195,559: 3x11 +#1273 @ 719,686: 23x10 +#1274 @ 397,818: 29x15 +#1275 @ 487,267: 27x10 +#1276 @ 711,388: 20x18 +#1277 @ 309,496: 27x27 +#1278 @ 414,173: 29x11 +#1279 @ 857,568: 12x18 +#1280 @ 165,155: 19x28 +#1281 @ 656,714: 12x26 +#1282 @ 255,921: 3x12 +#1283 @ 276,163: 12x14 +#1284 @ 634,812: 16x29 +#1285 @ 340,248: 23x23 +#1286 @ 193,268: 12x10 +#1287 @ 383,629: 21x26 +#1288 @ 933,297: 8x16 +#1289 @ 613,167: 13x25 +#1290 @ 852,118: 15x25 +#1291 @ 661,343: 11x20 +#1292 @ 827,119: 14x28 +#1293 @ 636,46: 27x11 +#1294 @ 629,202: 11x15 +#1295 @ 361,286: 18x23 +#1296 @ 539,925: 10x26 +#1297 @ 489,869: 15x18 +#1298 @ 415,45: 26x17 +#1299 @ 94,358: 20x17 +#1300 @ 413,552: 13x17 +#1301 @ 529,918: 16x24 +#1302 @ 400,808: 10x21 +#1303 @ 940,370: 21x27 +#1304 @ 813,185: 29x14 +#1305 @ 95,28: 24x11 +#1306 @ 249,327: 24x16 +#1307 @ 760,926: 26x12 +#1308 @ 732,957: 13x12 +#1309 @ 582,910: 13x13 +#1310 @ 0,162: 17x20 +#1311 @ 747,594: 10x11 +#1312 @ 712,513: 20x23 +#1313 @ 489,795: 26x29 +#1314 @ 474,335: 11x11 +#1315 @ 928,854: 27x16 +#1316 @ 7,377: 14x23 +#1317 @ 923,373: 20x22 +#1318 @ 411,954: 16x11 +#1319 @ 9,935: 20x14 +#1320 @ 887,848: 26x10 +#1321 @ 404,860: 11x11 +#1322 @ 475,281: 24x22 +#1323 @ 710,774: 21x22 +#1324 @ 794,158: 17x24 +#1325 @ 513,797: 25x28 +#1326 @ 707,755: 26x26 +#1327 @ 53,33: 29x24 +#1328 @ 506,184: 13x26 +#1329 @ 829,145: 20x10 +#1330 @ 891,774: 16x12 +#1331 @ 807,597: 26x27 +#1332 @ 375,313: 16x25 +#1333 @ 918,895: 16x11 +#1334 @ 884,128: 24x23 +#1335 @ 340,833: 25x24 +#1336 @ 202,485: 26x10 +#1337 @ 279,681: 21x10 +#1338 @ 199,913: 19x14 +#1339 @ 537,813: 26x29 +#1340 @ 89,723: 10x24 +#1341 @ 286,935: 22x27 +#1342 @ 347,72: 22x25 +#1343 @ 805,893: 11x28 +#1344 @ 917,81: 18x11 +#1345 @ 630,949: 21x16 +#1346 @ 526,905: 22x17 +#1347 @ 908,578: 17x15 +#1348 @ 235,237: 10x25 +#1349 @ 224,798: 20x23 +#1350 @ 759,525: 24x27 +#1351 @ 738,299: 25x16 +#1352 @ 224,888: 25x14 +#1353 @ 319,601: 28x26 +#1354 @ 212,397: 11x25 +#1355 @ 102,538: 21x28 +#1356 @ 457,251: 14x17 +#1357 @ 931,293: 13x24 +#1358 @ 808,93: 14x22 +#1359 @ 593,814: 12x23 +#1360 @ 468,131: 10x21 +#1361 @ 593,251: 15x15 +#1362 @ 362,16: 20x19 +#1363 @ 862,511: 14x11 +#1364 @ 671,626: 17x16 +#1365 @ 473,697: 16x14 +#1366 @ 368,329: 28x18 +#1367 @ 925,194: 24x29 +#1368 @ 875,511: 12x12 +#1369 @ 967,411: 25x27 +#1370 @ 89,411: 15x18 +#1371 @ 307,943: 12x28 +#1372 @ 119,13: 29x16 +#1373 @ 806,710: 15x11 +#1374 @ 544,534: 13x18 +#1375 @ 672,698: 14x17 +#1376 @ 645,848: 23x20 +#1377 @ 889,954: 25x13 +#1378 @ 378,24: 12x14 +#1379 @ 542,442: 22x15 +#1380 @ 42,454: 18x28 +#1381 @ 175,91: 11x22 +#1382 @ 840,533: 12x21 +#1383 @ 792,736: 24x27 +#1384 @ 731,713: 17x27 +#1385 @ 614,449: 22x20 diff --git a/2018/inputs/4.txt b/2018/inputs/4.txt new file mode 100644 index 0000000..4a0ff6e --- /dev/null +++ b/2018/inputs/4.txt @@ -0,0 +1,1088 @@ +[1518-09-17 23:48] Guard #1307 begins shift +[1518-06-03 00:00] Guard #3217 begins shift +[1518-07-28 00:49] falls asleep +[1518-03-30 00:57] falls asleep +[1518-07-01 23:58] Guard #409 begins shift +[1518-04-13 00:25] wakes up +[1518-04-09 00:22] wakes up +[1518-11-02 00:41] falls asleep +[1518-11-21 00:23] falls asleep +[1518-05-03 00:59] wakes up +[1518-11-21 00:02] Guard #1459 begins shift +[1518-08-18 00:27] wakes up +[1518-08-09 00:48] falls asleep +[1518-09-23 00:23] falls asleep +[1518-03-29 23:57] Guard #113 begins shift +[1518-04-16 00:43] wakes up +[1518-05-13 00:33] falls asleep +[1518-05-19 00:58] wakes up +[1518-07-09 00:44] wakes up +[1518-04-26 00:03] falls asleep +[1518-08-24 00:55] falls asleep +[1518-06-30 00:51] falls asleep +[1518-10-14 00:06] falls asleep +[1518-04-28 00:23] falls asleep +[1518-10-05 00:57] wakes up +[1518-09-02 00:56] wakes up +[1518-03-11 00:38] falls asleep +[1518-07-30 00:54] wakes up +[1518-09-15 23:58] Guard #1811 begins shift +[1518-08-08 23:58] Guard #1033 begins shift +[1518-08-07 00:08] falls asleep +[1518-06-13 00:46] wakes up +[1518-10-08 00:54] falls asleep +[1518-06-08 23:46] Guard #557 begins shift +[1518-06-01 00:22] wakes up +[1518-08-05 00:59] wakes up +[1518-03-08 00:03] Guard #3271 begins shift +[1518-07-18 23:59] Guard #449 begins shift +[1518-09-24 00:00] Guard #389 begins shift +[1518-04-22 00:45] wakes up +[1518-07-31 00:41] falls asleep +[1518-03-24 00:02] falls asleep +[1518-05-21 00:29] falls asleep +[1518-05-27 23:59] Guard #449 begins shift +[1518-10-30 00:52] wakes up +[1518-08-09 00:51] wakes up +[1518-03-16 00:54] wakes up +[1518-04-11 00:28] falls asleep +[1518-04-25 00:58] wakes up +[1518-10-06 00:07] falls asleep +[1518-08-15 23:49] Guard #557 begins shift +[1518-10-17 23:51] Guard #739 begins shift +[1518-06-27 00:00] Guard #3217 begins shift +[1518-06-30 00:01] Guard #1237 begins shift +[1518-04-29 00:01] Guard #3271 begins shift +[1518-11-12 00:19] falls asleep +[1518-07-27 00:50] wakes up +[1518-03-06 00:42] falls asleep +[1518-11-17 00:57] wakes up +[1518-07-21 00:48] wakes up +[1518-03-04 00:28] falls asleep +[1518-08-24 00:37] falls asleep +[1518-09-19 00:21] wakes up +[1518-11-05 00:24] wakes up +[1518-06-24 00:02] falls asleep +[1518-10-24 00:55] falls asleep +[1518-06-14 00:56] wakes up +[1518-06-29 00:47] wakes up +[1518-04-15 00:14] wakes up +[1518-08-21 00:08] falls asleep +[1518-09-16 00:48] falls asleep +[1518-10-11 00:42] wakes up +[1518-03-04 00:09] wakes up +[1518-03-13 00:18] falls asleep +[1518-10-28 00:56] wakes up +[1518-03-27 00:20] wakes up +[1518-05-24 00:03] Guard #739 begins shift +[1518-08-31 00:54] wakes up +[1518-06-22 00:50] falls asleep +[1518-06-15 00:45] wakes up +[1518-07-22 23:47] Guard #2647 begins shift +[1518-09-02 00:00] falls asleep +[1518-05-04 00:14] falls asleep +[1518-03-06 00:51] wakes up +[1518-10-02 00:35] wakes up +[1518-10-05 00:20] falls asleep +[1518-05-06 00:53] falls asleep +[1518-10-12 00:47] wakes up +[1518-04-08 00:30] wakes up +[1518-11-19 00:40] falls asleep +[1518-11-13 00:32] falls asleep +[1518-08-21 23:46] Guard #3271 begins shift +[1518-05-31 00:56] falls asleep +[1518-05-18 00:57] wakes up +[1518-05-17 00:56] wakes up +[1518-05-24 23:51] Guard #601 begins shift +[1518-10-30 00:32] wakes up +[1518-10-05 00:13] wakes up +[1518-11-02 00:03] Guard #2647 begins shift +[1518-05-02 00:36] wakes up +[1518-07-29 00:40] wakes up +[1518-07-16 00:53] wakes up +[1518-09-04 00:18] wakes up +[1518-05-11 00:33] falls asleep +[1518-03-09 00:00] Guard #1811 begins shift +[1518-10-24 23:57] Guard #827 begins shift +[1518-11-18 00:46] wakes up +[1518-08-14 00:27] falls asleep +[1518-05-25 00:17] wakes up +[1518-03-03 00:02] Guard #947 begins shift +[1518-05-29 00:00] falls asleep +[1518-06-05 00:04] wakes up +[1518-07-26 00:42] wakes up +[1518-10-01 00:39] falls asleep +[1518-06-22 00:54] wakes up +[1518-09-06 00:24] wakes up +[1518-08-04 00:24] falls asleep +[1518-04-25 00:35] wakes up +[1518-11-11 00:11] falls asleep +[1518-09-27 00:58] wakes up +[1518-09-16 00:15] falls asleep +[1518-07-25 00:55] wakes up +[1518-08-28 00:27] falls asleep +[1518-08-12 00:39] falls asleep +[1518-11-05 00:32] falls asleep +[1518-05-29 23:52] Guard #3209 begins shift +[1518-04-27 00:35] wakes up +[1518-04-20 00:06] falls asleep +[1518-03-21 00:47] falls asleep +[1518-10-18 00:55] wakes up +[1518-09-29 00:31] falls asleep +[1518-09-17 00:40] wakes up +[1518-04-22 00:19] falls asleep +[1518-06-14 00:32] falls asleep +[1518-10-07 23:59] Guard #1307 begins shift +[1518-04-25 00:55] falls asleep +[1518-08-27 00:24] falls asleep +[1518-08-01 23:56] Guard #389 begins shift +[1518-09-04 23:56] Guard #409 begins shift +[1518-09-29 23:56] Guard #449 begins shift +[1518-10-05 00:23] wakes up +[1518-04-04 00:58] wakes up +[1518-08-05 00:54] falls asleep +[1518-07-20 00:46] wakes up +[1518-04-08 00:46] wakes up +[1518-06-18 00:52] wakes up +[1518-05-03 23:59] Guard #1033 begins shift +[1518-11-01 00:37] wakes up +[1518-03-11 00:30] wakes up +[1518-06-06 00:42] wakes up +[1518-06-20 00:06] falls asleep +[1518-04-05 00:55] wakes up +[1518-09-13 23:57] Guard #3217 begins shift +[1518-04-21 00:00] Guard #1459 begins shift +[1518-03-18 00:00] Guard #1307 begins shift +[1518-09-13 00:03] Guard #557 begins shift +[1518-05-28 23:51] Guard #3217 begins shift +[1518-10-23 23:49] Guard #113 begins shift +[1518-03-11 23:59] Guard #113 begins shift +[1518-09-06 00:07] falls asleep +[1518-03-03 00:42] falls asleep +[1518-07-21 00:57] falls asleep +[1518-06-12 00:08] falls asleep +[1518-10-04 23:59] Guard #1237 begins shift +[1518-08-19 00:36] falls asleep +[1518-10-13 00:09] falls asleep +[1518-08-18 00:57] wakes up +[1518-08-28 23:52] Guard #1307 begins shift +[1518-09-09 00:58] wakes up +[1518-10-11 00:14] falls asleep +[1518-07-25 23:50] Guard #1559 begins shift +[1518-07-14 23:59] Guard #1237 begins shift +[1518-09-26 00:58] wakes up +[1518-05-22 23:59] Guard #3067 begins shift +[1518-05-22 00:57] falls asleep +[1518-05-02 00:58] wakes up +[1518-05-14 00:52] wakes up +[1518-04-18 00:51] wakes up +[1518-06-17 00:35] wakes up +[1518-05-18 23:59] Guard #389 begins shift +[1518-08-16 00:12] wakes up +[1518-11-08 00:49] wakes up +[1518-08-18 00:04] Guard #1307 begins shift +[1518-07-13 00:48] wakes up +[1518-08-18 23:58] Guard #1459 begins shift +[1518-03-09 00:52] wakes up +[1518-03-16 00:00] Guard #1237 begins shift +[1518-06-13 00:24] falls asleep +[1518-08-16 00:04] falls asleep +[1518-09-19 00:55] wakes up +[1518-10-04 00:47] wakes up +[1518-05-04 23:50] Guard #389 begins shift +[1518-07-03 00:57] wakes up +[1518-04-24 00:14] falls asleep +[1518-09-03 00:22] wakes up +[1518-11-09 00:54] falls asleep +[1518-09-02 00:36] wakes up +[1518-06-30 00:56] wakes up +[1518-08-26 00:51] wakes up +[1518-04-27 23:56] Guard #1307 begins shift +[1518-11-02 00:10] falls asleep +[1518-09-20 23:57] Guard #1811 begins shift +[1518-03-14 00:48] wakes up +[1518-05-31 00:30] wakes up +[1518-08-07 00:03] Guard #3209 begins shift +[1518-08-07 00:50] falls asleep +[1518-09-25 00:57] wakes up +[1518-10-18 00:08] wakes up +[1518-10-03 00:56] wakes up +[1518-05-27 00:46] wakes up +[1518-06-07 00:18] falls asleep +[1518-06-06 00:55] wakes up +[1518-03-18 00:56] wakes up +[1518-04-04 23:59] Guard #449 begins shift +[1518-09-28 00:59] wakes up +[1518-08-10 00:12] wakes up +[1518-05-30 00:21] wakes up +[1518-11-09 00:57] wakes up +[1518-11-15 00:13] falls asleep +[1518-06-10 23:57] Guard #1811 begins shift +[1518-11-04 00:01] falls asleep +[1518-05-21 00:47] falls asleep +[1518-10-07 00:05] falls asleep +[1518-03-12 00:36] wakes up +[1518-08-09 00:37] wakes up +[1518-09-23 00:58] wakes up +[1518-04-14 00:22] falls asleep +[1518-07-07 00:35] falls asleep +[1518-03-15 00:59] wakes up +[1518-03-14 00:44] falls asleep +[1518-11-06 00:04] Guard #3067 begins shift +[1518-07-14 00:01] Guard #3217 begins shift +[1518-10-23 00:09] falls asleep +[1518-07-01 00:38] wakes up +[1518-11-05 00:51] wakes up +[1518-04-08 00:52] falls asleep +[1518-09-22 00:40] falls asleep +[1518-09-08 00:20] falls asleep +[1518-05-09 00:49] falls asleep +[1518-10-17 00:02] Guard #3067 begins shift +[1518-10-01 23:56] Guard #3217 begins shift +[1518-05-10 00:58] wakes up +[1518-11-11 23:57] Guard #3271 begins shift +[1518-09-27 00:49] falls asleep +[1518-09-30 00:48] wakes up +[1518-06-06 00:01] Guard #601 begins shift +[1518-03-18 23:59] Guard #3217 begins shift +[1518-03-20 23:57] Guard #2647 begins shift +[1518-07-29 00:52] falls asleep +[1518-04-01 23:51] Guard #1459 begins shift +[1518-03-23 00:14] falls asleep +[1518-07-28 00:38] wakes up +[1518-09-04 00:49] wakes up +[1518-06-10 00:57] wakes up +[1518-10-26 00:57] wakes up +[1518-04-01 00:52] wakes up +[1518-07-10 00:47] wakes up +[1518-03-24 23:56] Guard #3217 begins shift +[1518-07-07 00:58] wakes up +[1518-08-10 00:11] falls asleep +[1518-08-22 00:56] falls asleep +[1518-11-03 00:21] wakes up +[1518-03-28 23:59] Guard #947 begins shift +[1518-07-29 00:35] falls asleep +[1518-09-09 00:05] falls asleep +[1518-04-11 00:58] wakes up +[1518-10-12 00:55] wakes up +[1518-11-14 00:44] wakes up +[1518-03-17 00:47] wakes up +[1518-03-29 00:13] falls asleep +[1518-06-04 00:40] falls asleep +[1518-11-16 00:14] falls asleep +[1518-05-11 00:04] Guard #1459 begins shift +[1518-06-03 00:11] falls asleep +[1518-10-22 00:58] wakes up +[1518-04-15 00:57] falls asleep +[1518-07-12 00:59] wakes up +[1518-05-21 00:31] wakes up +[1518-06-27 00:09] falls asleep +[1518-08-07 00:41] wakes up +[1518-10-22 00:11] falls asleep +[1518-09-02 00:43] falls asleep +[1518-05-31 00:28] falls asleep +[1518-05-25 00:07] falls asleep +[1518-07-25 00:13] wakes up +[1518-06-13 00:35] wakes up +[1518-08-17 00:40] falls asleep +[1518-08-02 00:58] wakes up +[1518-03-26 00:23] falls asleep +[1518-11-04 00:59] wakes up +[1518-03-28 00:38] falls asleep +[1518-10-29 23:57] Guard #113 begins shift +[1518-09-11 23:59] Guard #2647 begins shift +[1518-03-09 00:48] falls asleep +[1518-08-18 00:53] wakes up +[1518-09-02 00:46] wakes up +[1518-06-18 00:02] Guard #739 begins shift +[1518-10-22 00:00] Guard #1811 begins shift +[1518-09-23 00:27] wakes up +[1518-08-31 00:38] falls asleep +[1518-09-25 00:39] falls asleep +[1518-08-08 00:03] Guard #2647 begins shift +[1518-09-14 00:23] falls asleep +[1518-08-21 00:04] Guard #877 begins shift +[1518-10-09 00:31] wakes up +[1518-06-20 00:51] wakes up +[1518-06-06 00:17] falls asleep +[1518-08-10 00:17] falls asleep +[1518-05-08 00:57] wakes up +[1518-11-10 00:06] falls asleep +[1518-05-30 23:58] Guard #1559 begins shift +[1518-10-12 00:44] falls asleep +[1518-09-08 00:53] wakes up +[1518-04-08 00:28] falls asleep +[1518-08-17 00:52] wakes up +[1518-05-02 00:57] falls asleep +[1518-05-06 00:56] wakes up +[1518-03-23 00:00] Guard #1811 begins shift +[1518-04-27 00:10] falls asleep +[1518-06-09 00:04] falls asleep +[1518-08-18 00:10] falls asleep +[1518-07-25 00:46] falls asleep +[1518-10-10 00:43] wakes up +[1518-04-19 00:48] wakes up +[1518-10-20 00:49] wakes up +[1518-04-17 00:01] Guard #1237 begins shift +[1518-05-21 00:06] falls asleep +[1518-11-15 00:37] wakes up +[1518-05-04 00:24] wakes up +[1518-10-04 00:01] Guard #2647 begins shift +[1518-03-26 00:00] Guard #389 begins shift +[1518-08-29 00:23] wakes up +[1518-04-02 00:03] falls asleep +[1518-05-14 00:12] falls asleep +[1518-04-14 00:57] wakes up +[1518-06-01 23:56] Guard #449 begins shift +[1518-08-11 23:56] Guard #1811 begins shift +[1518-07-04 00:01] Guard #3271 begins shift +[1518-07-22 00:38] falls asleep +[1518-11-13 23:58] Guard #2647 begins shift +[1518-05-07 00:59] wakes up +[1518-06-22 00:26] falls asleep +[1518-08-28 00:01] Guard #3067 begins shift +[1518-10-31 00:03] Guard #113 begins shift +[1518-06-24 00:48] wakes up +[1518-03-18 00:28] falls asleep +[1518-03-16 00:13] falls asleep +[1518-04-27 00:57] falls asleep +[1518-07-14 00:24] wakes up +[1518-11-18 00:59] wakes up +[1518-05-01 00:00] Guard #739 begins shift +[1518-11-08 23:56] Guard #3209 begins shift +[1518-06-20 00:36] falls asleep +[1518-09-21 00:20] falls asleep +[1518-05-28 00:21] wakes up +[1518-03-05 00:23] falls asleep +[1518-03-30 00:38] wakes up +[1518-07-12 00:56] falls asleep +[1518-04-03 00:25] wakes up +[1518-03-21 00:58] wakes up +[1518-08-11 00:17] falls asleep +[1518-08-12 23:59] Guard #947 begins shift +[1518-04-29 23:53] Guard #947 begins shift +[1518-05-10 00:03] Guard #3209 begins shift +[1518-03-04 00:38] wakes up +[1518-05-14 00:03] Guard #947 begins shift +[1518-03-22 00:57] wakes up +[1518-07-15 00:37] falls asleep +[1518-06-11 00:48] wakes up +[1518-04-14 00:01] Guard #557 begins shift +[1518-07-24 00:49] wakes up +[1518-09-01 00:56] wakes up +[1518-08-26 00:59] wakes up +[1518-08-25 00:15] falls asleep +[1518-07-06 00:04] falls asleep +[1518-07-03 00:03] Guard #557 begins shift +[1518-10-20 00:45] falls asleep +[1518-10-18 00:53] falls asleep +[1518-06-19 00:53] wakes up +[1518-03-27 00:51] falls asleep +[1518-07-11 00:43] falls asleep +[1518-05-03 00:55] falls asleep +[1518-09-21 00:49] falls asleep +[1518-09-20 00:54] wakes up +[1518-06-01 00:04] falls asleep +[1518-05-13 00:37] wakes up +[1518-06-27 00:46] wakes up +[1518-04-03 00:01] Guard #601 begins shift +[1518-03-13 00:55] falls asleep +[1518-10-10 00:13] falls asleep +[1518-10-31 00:21] falls asleep +[1518-03-14 00:54] falls asleep +[1518-04-06 00:02] Guard #1237 begins shift +[1518-10-15 00:48] wakes up +[1518-03-27 00:02] Guard #1559 begins shift +[1518-10-12 00:14] falls asleep +[1518-07-11 00:25] falls asleep +[1518-03-04 00:43] falls asleep +[1518-04-16 00:53] falls asleep +[1518-06-11 00:54] falls asleep +[1518-06-16 00:15] falls asleep +[1518-10-18 00:46] falls asleep +[1518-07-24 00:02] Guard #389 begins shift +[1518-04-04 00:26] wakes up +[1518-04-07 00:21] falls asleep +[1518-04-12 23:56] Guard #2647 begins shift +[1518-07-18 00:49] wakes up +[1518-05-07 00:04] falls asleep +[1518-10-06 00:04] Guard #947 begins shift +[1518-09-18 00:43] wakes up +[1518-04-29 00:33] wakes up +[1518-07-29 00:57] falls asleep +[1518-08-27 00:42] wakes up +[1518-03-16 23:46] Guard #739 begins shift +[1518-05-20 00:23] falls asleep +[1518-07-27 00:09] falls asleep +[1518-08-18 00:37] falls asleep +[1518-06-26 00:01] Guard #1307 begins shift +[1518-09-30 00:20] falls asleep +[1518-04-11 00:44] falls asleep +[1518-04-09 00:12] falls asleep +[1518-03-31 00:03] Guard #1559 begins shift +[1518-06-08 00:00] Guard #449 begins shift +[1518-11-07 00:46] wakes up +[1518-04-11 00:04] Guard #409 begins shift +[1518-03-04 00:56] wakes up +[1518-07-24 00:47] falls asleep +[1518-08-25 00:21] wakes up +[1518-05-24 00:06] falls asleep +[1518-05-08 00:52] falls asleep +[1518-08-29 23:57] Guard #3067 begins shift +[1518-05-18 00:00] falls asleep +[1518-08-19 23:59] Guard #1459 begins shift +[1518-05-31 00:58] wakes up +[1518-06-13 00:00] Guard #947 begins shift +[1518-10-28 00:48] falls asleep +[1518-05-20 23:58] Guard #877 begins shift +[1518-08-20 00:28] falls asleep +[1518-06-17 00:12] falls asleep +[1518-08-19 00:51] falls asleep +[1518-03-03 23:48] Guard #557 begins shift +[1518-10-28 00:30] falls asleep +[1518-03-30 00:11] falls asleep +[1518-06-07 00:53] wakes up +[1518-07-22 00:01] Guard #557 begins shift +[1518-11-11 00:58] wakes up +[1518-08-27 00:00] Guard #3067 begins shift +[1518-06-06 00:19] wakes up +[1518-10-24 00:59] wakes up +[1518-11-03 00:26] falls asleep +[1518-08-19 00:41] wakes up +[1518-03-19 00:33] falls asleep +[1518-10-02 00:53] wakes up +[1518-07-31 23:58] Guard #1723 begins shift +[1518-08-23 00:53] wakes up +[1518-03-13 00:59] wakes up +[1518-10-20 23:59] Guard #449 begins shift +[1518-05-12 00:09] falls asleep +[1518-05-17 23:54] Guard #1811 begins shift +[1518-06-25 00:53] wakes up +[1518-06-17 00:55] wakes up +[1518-05-09 00:24] falls asleep +[1518-08-14 00:01] Guard #739 begins shift +[1518-03-20 00:06] falls asleep +[1518-11-20 00:28] falls asleep +[1518-04-15 00:58] wakes up +[1518-05-22 00:36] wakes up +[1518-04-12 00:04] Guard #877 begins shift +[1518-06-04 23:52] Guard #877 begins shift +[1518-10-09 00:07] falls asleep +[1518-06-05 00:15] falls asleep +[1518-06-28 00:34] wakes up +[1518-11-13 00:37] wakes up +[1518-09-24 00:48] wakes up +[1518-05-15 00:02] Guard #557 begins shift +[1518-05-27 00:21] falls asleep +[1518-11-12 00:34] wakes up +[1518-06-06 00:51] falls asleep +[1518-11-21 00:43] wakes up +[1518-09-01 00:28] falls asleep +[1518-10-13 00:00] Guard #947 begins shift +[1518-11-20 00:46] wakes up +[1518-05-22 00:01] Guard #1559 begins shift +[1518-04-05 00:07] falls asleep +[1518-06-11 23:56] Guard #3209 begins shift +[1518-07-11 00:51] wakes up +[1518-08-30 00:17] falls asleep +[1518-05-12 23:57] Guard #3271 begins shift +[1518-03-15 00:24] falls asleep +[1518-04-26 23:59] Guard #3067 begins shift +[1518-03-09 00:06] falls asleep +[1518-03-09 00:57] wakes up +[1518-03-08 00:58] wakes up +[1518-04-13 00:22] falls asleep +[1518-04-14 23:46] Guard #1033 begins shift +[1518-07-28 00:54] falls asleep +[1518-09-20 00:00] Guard #3067 begins shift +[1518-05-09 00:43] wakes up +[1518-11-01 00:03] Guard #3067 begins shift +[1518-05-12 00:55] wakes up +[1518-03-08 00:09] falls asleep +[1518-03-10 00:40] wakes up +[1518-03-28 00:00] Guard #1459 begins shift +[1518-10-14 00:34] falls asleep +[1518-09-22 00:26] falls asleep +[1518-10-30 00:26] falls asleep +[1518-09-12 00:07] falls asleep +[1518-03-26 00:58] wakes up +[1518-07-20 00:20] falls asleep +[1518-06-28 00:25] falls asleep +[1518-09-12 00:24] wakes up +[1518-05-22 00:13] falls asleep +[1518-08-13 00:42] wakes up +[1518-08-22 00:04] falls asleep +[1518-07-28 23:59] Guard #1559 begins shift +[1518-08-24 23:59] Guard #2647 begins shift +[1518-10-24 00:05] falls asleep +[1518-06-22 00:47] wakes up +[1518-10-26 00:35] falls asleep +[1518-08-10 00:58] wakes up +[1518-03-14 00:57] wakes up +[1518-07-09 00:32] falls asleep +[1518-04-28 00:55] falls asleep +[1518-10-13 00:41] wakes up +[1518-07-02 00:17] falls asleep +[1518-04-17 00:58] wakes up +[1518-05-22 00:58] wakes up +[1518-09-01 00:48] wakes up +[1518-04-01 00:48] falls asleep +[1518-07-01 00:00] Guard #557 begins shift +[1518-04-18 00:40] falls asleep +[1518-03-13 23:57] Guard #449 begins shift +[1518-04-08 00:00] Guard #877 begins shift +[1518-09-16 23:57] Guard #1459 begins shift +[1518-11-06 00:57] wakes up +[1518-07-19 23:56] Guard #1459 begins shift +[1518-03-07 00:42] falls asleep +[1518-06-10 00:02] Guard #1559 begins shift +[1518-06-20 00:25] wakes up +[1518-04-08 00:44] falls asleep +[1518-06-22 00:01] Guard #113 begins shift +[1518-07-08 23:46] Guard #1811 begins shift +[1518-07-23 00:03] falls asleep +[1518-04-23 00:31] falls asleep +[1518-08-20 00:58] wakes up +[1518-09-30 23:57] Guard #3217 begins shift +[1518-10-28 00:00] Guard #449 begins shift +[1518-06-02 00:30] falls asleep +[1518-09-04 00:36] falls asleep +[1518-07-24 00:56] falls asleep +[1518-04-16 00:04] Guard #601 begins shift +[1518-05-20 00:38] wakes up +[1518-10-29 00:33] falls asleep +[1518-07-17 00:42] wakes up +[1518-04-07 00:01] Guard #449 begins shift +[1518-08-29 00:54] wakes up +[1518-04-08 00:54] wakes up +[1518-03-12 00:32] falls asleep +[1518-05-06 00:43] wakes up +[1518-03-05 00:00] Guard #3271 begins shift +[1518-07-30 00:04] Guard #389 begins shift +[1518-07-26 00:00] falls asleep +[1518-10-17 00:23] falls asleep +[1518-09-06 23:53] Guard #389 begins shift +[1518-03-08 00:56] falls asleep +[1518-09-13 00:55] wakes up +[1518-07-20 00:31] wakes up +[1518-10-14 00:02] Guard #557 begins shift +[1518-05-26 00:01] Guard #1811 begins shift +[1518-05-29 00:29] wakes up +[1518-07-08 00:57] falls asleep +[1518-07-10 00:21] falls asleep +[1518-08-24 00:50] wakes up +[1518-03-09 00:09] wakes up +[1518-08-16 00:22] falls asleep +[1518-05-01 00:52] wakes up +[1518-06-01 00:25] falls asleep +[1518-07-01 00:26] wakes up +[1518-09-08 23:52] Guard #389 begins shift +[1518-09-17 00:35] falls asleep +[1518-05-30 00:58] wakes up +[1518-11-11 00:54] wakes up +[1518-04-30 00:37] wakes up +[1518-05-06 23:54] Guard #1033 begins shift +[1518-11-08 00:25] falls asleep +[1518-11-15 23:58] Guard #3217 begins shift +[1518-11-01 00:14] falls asleep +[1518-10-08 00:57] wakes up +[1518-08-18 00:56] falls asleep +[1518-11-10 23:57] Guard #2647 begins shift +[1518-03-21 23:57] Guard #389 begins shift +[1518-09-22 23:59] Guard #3209 begins shift +[1518-08-24 00:58] wakes up +[1518-10-19 23:57] Guard #389 begins shift +[1518-09-07 23:48] Guard #3209 begins shift +[1518-08-10 23:57] Guard #1033 begins shift +[1518-03-13 00:03] Guard #3271 begins shift +[1518-03-19 00:37] wakes up +[1518-06-18 23:59] Guard #877 begins shift +[1518-10-04 00:51] falls asleep +[1518-09-28 00:42] falls asleep +[1518-05-06 00:00] Guard #1459 begins shift +[1518-05-03 00:26] wakes up +[1518-06-26 00:55] wakes up +[1518-09-15 00:59] wakes up +[1518-07-22 00:35] wakes up +[1518-09-03 00:51] wakes up +[1518-07-22 00:58] wakes up +[1518-04-29 00:15] falls asleep +[1518-10-29 00:58] wakes up +[1518-07-27 00:46] falls asleep +[1518-07-29 00:54] wakes up +[1518-11-23 00:54] wakes up +[1518-04-25 23:48] Guard #877 begins shift +[1518-08-16 23:57] Guard #1559 begins shift +[1518-09-25 00:47] falls asleep +[1518-03-06 00:18] wakes up +[1518-10-18 00:00] falls asleep +[1518-10-01 00:48] wakes up +[1518-04-12 00:59] wakes up +[1518-11-13 00:50] falls asleep +[1518-09-10 23:58] Guard #3209 begins shift +[1518-09-27 00:00] Guard #409 begins shift +[1518-09-21 23:51] Guard #3209 begins shift +[1518-11-03 00:11] falls asleep +[1518-11-18 00:06] falls asleep +[1518-03-06 00:56] falls asleep +[1518-07-14 00:17] falls asleep +[1518-08-05 00:40] falls asleep +[1518-04-23 00:43] falls asleep +[1518-09-18 00:00] falls asleep +[1518-08-02 23:56] Guard #2647 begins shift +[1518-09-22 00:34] wakes up +[1518-06-19 00:08] falls asleep +[1518-06-01 00:41] wakes up +[1518-09-08 00:11] wakes up +[1518-04-17 00:54] falls asleep +[1518-05-27 00:02] Guard #3271 begins shift +[1518-08-07 00:53] wakes up +[1518-07-20 00:39] falls asleep +[1518-11-07 23:58] Guard #449 begins shift +[1518-09-24 23:57] Guard #1459 begins shift +[1518-04-28 00:57] wakes up +[1518-08-28 00:53] wakes up +[1518-04-16 00:29] falls asleep +[1518-07-12 00:42] wakes up +[1518-06-22 23:56] Guard #3067 begins shift +[1518-03-20 00:46] wakes up +[1518-05-07 23:50] Guard #409 begins shift +[1518-08-25 00:48] wakes up +[1518-04-06 00:56] falls asleep +[1518-09-03 00:06] falls asleep +[1518-09-10 00:01] falls asleep +[1518-07-17 00:11] falls asleep +[1518-10-23 00:49] wakes up +[1518-05-30 00:03] falls asleep +[1518-10-12 00:51] falls asleep +[1518-11-17 00:00] Guard #1307 begins shift +[1518-03-23 00:28] wakes up +[1518-08-02 00:54] falls asleep +[1518-08-16 00:53] wakes up +[1518-06-09 00:43] wakes up +[1518-04-23 00:50] wakes up +[1518-11-02 00:51] wakes up +[1518-08-25 00:46] falls asleep +[1518-06-27 00:36] wakes up +[1518-04-08 23:57] Guard #1559 begins shift +[1518-07-09 00:58] wakes up +[1518-10-28 23:56] Guard #449 begins shift +[1518-04-02 00:53] wakes up +[1518-05-17 00:45] falls asleep +[1518-03-15 00:04] Guard #601 begins shift +[1518-03-17 00:15] wakes up +[1518-05-05 00:59] wakes up +[1518-05-25 00:03] wakes up +[1518-10-18 23:57] Guard #1559 begins shift +[1518-10-21 00:27] falls asleep +[1518-05-12 00:40] wakes up +[1518-04-06 00:58] wakes up +[1518-05-23 00:20] falls asleep +[1518-07-16 23:56] Guard #1459 begins shift +[1518-06-12 00:51] wakes up +[1518-04-19 00:34] falls asleep +[1518-06-14 00:09] falls asleep +[1518-08-08 00:19] falls asleep +[1518-09-04 00:02] falls asleep +[1518-05-23 00:57] wakes up +[1518-03-27 00:17] falls asleep +[1518-04-15 00:28] falls asleep +[1518-09-23 00:30] falls asleep +[1518-10-08 00:44] wakes up +[1518-08-29 00:29] falls asleep +[1518-08-03 00:52] falls asleep +[1518-10-24 00:45] wakes up +[1518-05-12 00:45] falls asleep +[1518-09-12 00:29] falls asleep +[1518-04-16 00:59] wakes up +[1518-07-11 00:31] wakes up +[1518-07-04 00:39] wakes up +[1518-05-16 00:44] wakes up +[1518-06-21 00:45] wakes up +[1518-07-26 23:58] Guard #3209 begins shift +[1518-05-08 23:58] Guard #877 begins shift +[1518-11-07 00:20] falls asleep +[1518-08-26 00:04] Guard #389 begins shift +[1518-03-11 00:16] falls asleep +[1518-11-17 00:20] falls asleep +[1518-09-10 00:49] wakes up +[1518-05-10 00:36] falls asleep +[1518-05-16 00:55] wakes up +[1518-08-04 00:01] Guard #409 begins shift +[1518-04-26 00:45] wakes up +[1518-09-07 00:46] wakes up +[1518-10-21 00:47] wakes up +[1518-05-15 00:46] wakes up +[1518-08-21 00:50] wakes up +[1518-08-08 00:58] wakes up +[1518-08-26 00:57] falls asleep +[1518-07-02 00:51] wakes up +[1518-03-25 00:16] falls asleep +[1518-08-11 00:59] wakes up +[1518-04-19 00:58] wakes up +[1518-10-15 00:56] falls asleep +[1518-06-15 00:14] falls asleep +[1518-04-03 00:42] wakes up +[1518-11-14 00:18] falls asleep +[1518-05-12 00:02] Guard #947 begins shift +[1518-04-15 00:05] falls asleep +[1518-04-23 00:39] wakes up +[1518-07-22 00:19] falls asleep +[1518-07-31 00:44] wakes up +[1518-10-27 00:43] wakes up +[1518-09-22 00:03] falls asleep +[1518-03-07 00:02] Guard #3067 begins shift +[1518-03-03 00:55] wakes up +[1518-06-02 00:56] wakes up +[1518-03-04 00:23] wakes up +[1518-08-06 00:37] falls asleep +[1518-06-23 23:50] Guard #1559 begins shift +[1518-09-27 00:50] wakes up +[1518-07-08 00:19] falls asleep +[1518-05-09 00:52] wakes up +[1518-03-06 00:02] falls asleep +[1518-06-05 00:01] falls asleep +[1518-05-03 00:47] wakes up +[1518-05-29 00:41] falls asleep +[1518-10-25 23:58] Guard #947 begins shift +[1518-10-14 23:59] Guard #3209 begins shift +[1518-03-04 00:02] falls asleep +[1518-07-28 00:03] Guard #3217 begins shift +[1518-09-12 00:09] wakes up +[1518-03-09 00:35] wakes up +[1518-10-27 00:00] Guard #739 begins shift +[1518-07-29 00:59] wakes up +[1518-11-10 00:34] wakes up +[1518-05-25 00:02] falls asleep +[1518-03-10 00:30] falls asleep +[1518-07-08 00:48] wakes up +[1518-05-19 23:57] Guard #3217 begins shift +[1518-03-31 00:40] wakes up +[1518-08-02 00:28] falls asleep +[1518-11-11 00:57] falls asleep +[1518-06-27 00:45] falls asleep +[1518-07-05 23:53] Guard #1559 begins shift +[1518-10-02 00:17] falls asleep +[1518-06-13 00:45] falls asleep +[1518-10-04 00:18] falls asleep +[1518-06-03 00:59] wakes up +[1518-06-11 00:57] wakes up +[1518-04-04 00:02] Guard #947 begins shift +[1518-04-24 00:45] falls asleep +[1518-03-20 00:00] Guard #1307 begins shift +[1518-11-16 00:58] wakes up +[1518-05-01 23:58] Guard #389 begins shift +[1518-08-06 00:00] Guard #1559 begins shift +[1518-03-05 23:49] Guard #113 begins shift +[1518-06-23 00:56] wakes up +[1518-09-28 00:48] wakes up +[1518-07-19 00:49] wakes up +[1518-07-08 00:58] wakes up +[1518-04-03 00:41] falls asleep +[1518-09-14 00:57] wakes up +[1518-07-25 00:05] falls asleep +[1518-11-12 23:57] Guard #1811 begins shift +[1518-06-10 00:29] falls asleep +[1518-08-21 00:58] wakes up +[1518-03-17 00:43] falls asleep +[1518-03-06 00:59] wakes up +[1518-08-06 00:44] wakes up +[1518-07-04 23:56] Guard #2389 begins shift +[1518-06-21 00:03] falls asleep +[1518-04-10 00:27] falls asleep +[1518-03-30 00:59] wakes up +[1518-03-31 23:57] Guard #449 begins shift +[1518-09-08 00:01] falls asleep +[1518-04-10 00:58] wakes up +[1518-05-30 00:45] falls asleep +[1518-09-26 00:51] falls asleep +[1518-09-20 00:16] falls asleep +[1518-05-08 00:05] falls asleep +[1518-09-13 00:23] falls asleep +[1518-09-12 00:23] falls asleep +[1518-03-31 00:39] falls asleep +[1518-06-08 00:40] falls asleep +[1518-08-23 23:59] Guard #409 begins shift +[1518-09-03 00:35] falls asleep +[1518-06-04 00:00] Guard #1237 begins shift +[1518-11-05 00:01] Guard #3209 begins shift +[1518-07-21 00:36] falls asleep +[1518-10-11 23:59] Guard #601 begins shift +[1518-11-19 00:59] wakes up +[1518-11-17 23:57] Guard #1559 begins shift +[1518-06-07 00:04] Guard #3209 begins shift +[1518-10-15 00:21] falls asleep +[1518-04-07 00:58] wakes up +[1518-07-09 00:19] wakes up +[1518-08-05 00:51] wakes up +[1518-05-01 00:22] wakes up +[1518-03-07 00:59] wakes up +[1518-08-12 00:33] wakes up +[1518-05-03 00:18] falls asleep +[1518-03-10 00:04] Guard #3271 begins shift +[1518-10-31 00:55] wakes up +[1518-07-03 00:48] falls asleep +[1518-05-31 23:52] Guard #3271 begins shift +[1518-05-23 00:37] wakes up +[1518-06-13 00:59] wakes up +[1518-11-06 00:29] falls asleep +[1518-10-27 00:09] falls asleep +[1518-05-07 00:50] falls asleep +[1518-06-28 23:53] Guard #1459 begins shift +[1518-04-04 00:37] falls asleep +[1518-10-09 23:56] Guard #3209 begins shift +[1518-06-29 00:02] falls asleep +[1518-09-16 00:56] wakes up +[1518-05-08 00:31] wakes up +[1518-10-08 00:20] falls asleep +[1518-04-21 00:58] wakes up +[1518-03-09 00:56] falls asleep +[1518-06-13 23:58] Guard #1033 begins shift +[1518-07-22 00:42] wakes up +[1518-05-28 00:11] falls asleep +[1518-06-17 00:00] Guard #3271 begins shift +[1518-09-27 00:56] falls asleep +[1518-04-18 00:00] Guard #947 begins shift +[1518-09-19 00:04] Guard #3209 begins shift +[1518-11-18 00:49] falls asleep +[1518-08-25 00:42] wakes up +[1518-04-20 00:56] wakes up +[1518-08-22 00:47] wakes up +[1518-10-07 00:59] wakes up +[1518-04-18 23:59] Guard #389 begins shift +[1518-07-16 00:23] falls asleep +[1518-07-30 00:17] falls asleep +[1518-04-24 00:03] Guard #877 begins shift +[1518-05-06 00:38] falls asleep +[1518-05-28 00:44] falls asleep +[1518-05-02 23:56] Guard #557 begins shift +[1518-11-17 00:47] falls asleep +[1518-06-18 00:44] falls asleep +[1518-11-04 00:14] wakes up +[1518-06-16 00:30] wakes up +[1518-11-02 00:22] wakes up +[1518-04-22 23:57] Guard #601 begins shift +[1518-06-20 23:50] Guard #3067 begins shift +[1518-07-28 00:06] falls asleep +[1518-08-25 00:28] falls asleep +[1518-11-06 00:47] falls asleep +[1518-05-16 00:49] falls asleep +[1518-09-15 00:40] falls asleep +[1518-09-25 00:44] wakes up +[1518-06-04 00:58] wakes up +[1518-03-08 00:50] wakes up +[1518-10-30 00:58] wakes up +[1518-05-01 00:25] falls asleep +[1518-11-13 00:51] wakes up +[1518-10-06 00:54] wakes up +[1518-04-28 00:51] wakes up +[1518-04-24 00:33] wakes up +[1518-03-25 00:51] wakes up +[1518-11-02 23:58] Guard #877 begins shift +[1518-07-12 00:00] Guard #1459 begins shift +[1518-09-12 00:45] wakes up +[1518-11-11 00:47] falls asleep +[1518-10-08 23:57] Guard #947 begins shift +[1518-06-08 00:59] wakes up +[1518-07-10 00:04] Guard #3217 begins shift +[1518-09-03 23:50] Guard #1459 begins shift +[1518-09-01 23:50] Guard #3271 begins shift +[1518-11-19 23:56] Guard #113 begins shift +[1518-04-22 00:00] Guard #3217 begins shift +[1518-07-20 23:58] Guard #877 begins shift +[1518-09-28 00:03] Guard #3217 begins shift +[1518-03-04 00:18] falls asleep +[1518-09-03 00:03] Guard #1307 begins shift +[1518-09-14 00:48] falls asleep +[1518-09-02 00:49] falls asleep +[1518-03-24 00:46] wakes up +[1518-07-24 00:59] wakes up +[1518-09-01 00:02] Guard #449 begins shift +[1518-04-25 00:24] falls asleep +[1518-06-11 00:28] falls asleep +[1518-07-09 00:49] falls asleep +[1518-08-31 00:02] Guard #409 begins shift +[1518-08-05 00:02] Guard #389 begins shift +[1518-08-22 00:58] wakes up +[1518-09-29 00:52] wakes up +[1518-09-07 00:01] falls asleep +[1518-10-19 00:15] falls asleep +[1518-07-18 00:39] falls asleep +[1518-07-06 23:58] Guard #113 begins shift +[1518-11-10 00:04] Guard #1033 begins shift +[1518-08-15 00:01] Guard #1559 begins shift +[1518-04-12 00:13] falls asleep +[1518-06-05 00:56] wakes up +[1518-10-17 00:54] falls asleep +[1518-10-10 23:58] Guard #1459 begins shift +[1518-08-13 00:14] falls asleep +[1518-10-16 00:02] Guard #2389 begins shift +[1518-07-11 00:01] Guard #557 begins shift +[1518-10-02 00:42] falls asleep +[1518-07-15 23:57] Guard #449 begins shift +[1518-03-07 00:45] wakes up +[1518-11-19 00:02] Guard #389 begins shift +[1518-11-03 00:51] wakes up +[1518-10-22 23:59] Guard #1459 begins shift +[1518-07-08 00:02] Guard #3271 begins shift +[1518-09-16 00:18] wakes up +[1518-05-05 00:00] falls asleep +[1518-09-15 00:01] Guard #2647 begins shift +[1518-05-19 00:46] falls asleep +[1518-10-17 00:48] wakes up +[1518-03-07 00:57] falls asleep +[1518-09-11 00:52] wakes up +[1518-10-13 00:53] falls asleep +[1518-07-13 00:43] falls asleep +[1518-06-26 00:30] falls asleep +[1518-07-28 00:59] wakes up +[1518-08-12 00:15] falls asleep +[1518-06-25 00:21] falls asleep +[1518-05-26 00:38] falls asleep +[1518-07-12 23:59] Guard #1811 begins shift +[1518-05-28 00:47] wakes up +[1518-10-02 23:56] Guard #1307 begins shift +[1518-09-22 00:47] wakes up +[1518-05-07 00:35] wakes up +[1518-08-09 00:17] falls asleep +[1518-10-30 00:42] falls asleep +[1518-04-04 00:18] falls asleep +[1518-03-22 00:44] falls asleep +[1518-06-13 00:57] falls asleep +[1518-05-02 00:29] falls asleep +[1518-08-15 00:55] wakes up +[1518-04-19 00:57] falls asleep +[1518-04-19 23:59] Guard #947 begins shift +[1518-05-02 00:46] falls asleep +[1518-11-15 00:00] Guard #3209 begins shift +[1518-10-13 00:57] wakes up +[1518-04-03 00:07] falls asleep +[1518-08-15 00:20] falls asleep +[1518-03-13 00:47] wakes up +[1518-09-19 00:09] falls asleep +[1518-11-17 00:21] wakes up +[1518-10-19 00:35] wakes up +[1518-05-15 00:40] falls asleep +[1518-11-03 23:48] Guard #1307 begins shift +[1518-04-10 00:04] Guard #1307 begins shift +[1518-06-20 00:04] Guard #3217 begins shift +[1518-05-16 00:04] falls asleep +[1518-07-19 00:12] falls asleep +[1518-10-12 00:23] wakes up +[1518-03-11 00:56] wakes up +[1518-05-23 00:56] falls asleep +[1518-06-28 00:32] falls asleep +[1518-05-11 00:45] wakes up +[1518-04-09 00:33] falls asleep +[1518-10-05 00:10] falls asleep +[1518-06-30 00:37] wakes up +[1518-07-04 00:06] falls asleep +[1518-05-02 00:53] wakes up +[1518-10-06 23:54] Guard #557 begins shift +[1518-08-23 00:17] falls asleep +[1518-09-11 00:19] falls asleep +[1518-03-27 00:58] wakes up +[1518-09-06 00:01] Guard #1237 begins shift +[1518-07-06 00:45] wakes up +[1518-08-04 00:48] wakes up +[1518-09-19 00:25] falls asleep +[1518-04-11 00:31] wakes up +[1518-04-21 00:20] falls asleep +[1518-10-30 00:57] falls asleep +[1518-08-03 00:58] wakes up +[1518-04-27 00:58] wakes up +[1518-10-15 00:58] wakes up +[1518-11-23 00:42] falls asleep +[1518-06-15 00:01] Guard #1559 begins shift +[1518-04-24 00:49] wakes up +[1518-09-21 00:31] wakes up +[1518-05-26 00:41] wakes up +[1518-07-28 00:51] wakes up +[1518-11-22 23:58] Guard #2647 begins shift +[1518-10-28 00:39] wakes up +[1518-09-14 00:37] wakes up +[1518-05-15 23:51] Guard #3217 begins shift +[1518-07-01 00:33] falls asleep +[1518-03-29 00:44] wakes up +[1518-05-22 00:51] wakes up +[1518-10-14 00:54] wakes up +[1518-07-15 00:45] wakes up +[1518-06-14 00:27] wakes up +[1518-07-13 00:55] wakes up +[1518-09-28 00:54] falls asleep +[1518-10-18 00:50] wakes up +[1518-08-26 00:27] falls asleep +[1518-11-04 00:53] falls asleep +[1518-05-01 00:10] falls asleep +[1518-08-02 00:47] wakes up +[1518-04-30 00:05] falls asleep +[1518-09-05 00:56] wakes up +[1518-09-01 00:55] falls asleep +[1518-06-15 23:56] Guard #1559 begins shift +[1518-09-09 23:46] Guard #947 begins shift +[1518-06-06 00:36] falls asleep +[1518-07-24 23:48] Guard #1237 begins shift +[1518-07-01 00:08] falls asleep +[1518-07-12 00:37] falls asleep +[1518-03-30 00:54] wakes up +[1518-06-17 00:48] falls asleep +[1518-11-07 00:03] Guard #1459 begins shift +[1518-03-28 00:58] wakes up +[1518-08-03 00:48] wakes up +[1518-06-09 00:32] falls asleep +[1518-11-05 00:11] falls asleep +[1518-11-21 23:52] Guard #409 begins shift +[1518-11-22 00:04] falls asleep +[1518-08-22 23:59] Guard #113 begins shift +[1518-11-06 00:41] wakes up +[1518-10-03 00:40] falls asleep +[1518-06-25 00:00] Guard #877 begins shift +[1518-05-17 00:00] Guard #449 begins shift +[1518-06-28 00:03] Guard #3271 begins shift +[1518-09-29 00:03] Guard #2647 begins shift +[1518-05-21 00:19] wakes up +[1518-03-30 00:53] falls asleep +[1518-08-14 00:49] wakes up +[1518-06-23 00:37] falls asleep +[1518-07-31 00:00] Guard #3217 begins shift +[1518-06-09 00:29] wakes up +[1518-03-11 00:00] Guard #389 begins shift +[1518-11-11 00:27] wakes up +[1518-08-21 00:57] falls asleep +[1518-08-09 23:56] Guard #1811 begins shift +[1518-04-25 00:04] Guard #2647 begins shift +[1518-07-09 00:03] falls asleep +[1518-09-25 23:58] Guard #1033 begins shift +[1518-07-17 23:58] Guard #409 begins shift +[1518-05-22 00:47] falls asleep +[1518-08-30 00:32] wakes up +[1518-10-14 00:23] wakes up +[1518-10-17 00:56] wakes up +[1518-08-12 00:59] wakes up +[1518-09-21 00:58] wakes up +[1518-09-22 00:22] wakes up +[1518-05-29 00:52] wakes up +[1518-09-05 00:51] falls asleep +[1518-10-05 00:52] falls asleep +[1518-03-09 00:29] falls asleep +[1518-04-09 00:50] wakes up +[1518-10-04 00:59] wakes up +[1518-07-27 00:33] wakes up +[1518-07-13 00:51] falls asleep +[1518-06-28 00:29] wakes up +[1518-07-23 00:44] wakes up +[1518-05-24 00:58] wakes up +[1518-09-24 00:07] falls asleep +[1518-08-19 00:55] wakes up +[1518-04-15 00:53] wakes up +[1518-08-29 00:04] falls asleep +[1518-07-21 00:59] wakes up +[1518-05-03 00:45] falls asleep +[1518-03-17 00:01] falls asleep +[1518-03-05 00:51] wakes up +[1518-07-22 00:46] falls asleep +[1518-06-30 00:14] falls asleep +[1518-08-03 00:32] falls asleep +[1518-11-22 00:08] wakes up +[1518-05-21 00:58] wakes up +[1518-03-23 23:46] Guard #3209 begins shift diff --git a/2018/inputs/5.txt b/2018/inputs/5.txt new file mode 100644 index 0000000..4d4b703 --- /dev/null +++ b/2018/inputs/5.txt @@ -0,0 +1 @@ +XxSsdDIijNnJACszZScZfFhHQyYrRqzdXTtxDEeNnGgOaAcCMcCLlMmogQeEqGgFfGyYuUOIiYyhHlLmUulAUKkudDOoDdaLGRrgoDdDdGgRruUhJLljQqdwWDZzHXxppPTwWCcZzDmfFlLPpdDSsgGtFfTEeTOotyYMOGgkJjKZUuQdNnDhHvVntKkTNqTjJeEVkZzttTYyTDdIiRrqQyYYyxbBXLlKHhvtYyzoKMmiIkaAUvVuvEejoOJUuQoOLlLloOxoOXaAqYYXxyzMmZyoOVhHIiIKfFkiIKAaUukRrKQqASsakLgGlGgLxXhHmcCzZxXMWdUulLJjDwnNYkKFfZzpPVuUvHhbQqIiLRrlEeVvBQJjlLGgjYyJoAalxXuUqgGQLQqOqNJjzZnyOusSUeEFfodcLuUlCcCIiNnGgaADVwWGgvZtTewWENnSszBKkDdeEYytTzpPsSjJpPZkNnIiPpDIideEcCKCcNABbKnpPGgtTNqQGgklLtTuUgGQqaNnnVveEgjJJEejGkKziIAaZmMbopPOgDdGubBIiUZGgzuUoOkMYymvBbVPpmMqQKDdCiDdIcpDjHhIiqQJLlFCcfqxXwWQdsSKkPgdqQDGjcFfCCceEsSkKjJkKKlcuUCsaUuASLAaEekmYqyXxkKYBbeEQuUZzpPeEdeEDKkNnuUQsSTtqufFUNIGginpAXZiJjJjhOWwkKBbogGHsSRNnqQrIzZxXhEeHKlLtTrpPsbBSbBDdlkSsKZXxnwTtWCrRcNfMmPpFzNbBneFfVYyvuUBjJbEzKkZuUkCcKTPptehHfJjEeBbuUioOIIiqQFDdFfvLUVDZaAkKHhEeAaHRrOohVxXHhvNnzQqdoOaAOxsSXogiEeIGvhWwHROoruVtTvaAUDdPpuImMVePCcpEUuFfptFMmfTVvhaAHUuoQwWlLqmMKkONnhNnIisSgGHPwWQVvroDOodgGORqvGgZRrEeMeEkKBbRyYrrzZREepPCcmJSstTNntTjvOoyyxXYzZIiYVUuUunzZBbNWvVPwnNWeVvLnNlpxvVXjJPDdZOozItTiYzRrKkZngGNiIyXiIxYyCcSsEOmMUeEqQAaINCcxXniuOeAamMmMmMRFfoOHhaArMmpPRGgrVVvvIiUudwPpWDuVvspPSbBUzrJmMjjJnNRAamVvfFMaCTTVYyvXxGRrgttkJjYmkKPpMyTtkKHoOhJnNjifFIKTmMuLFftTlwWUtAyYajJyZzmMhHhrRsSHGtTiIgBmEeXxMnNpKkSsDdbBpPPZJjHRrhKQquUkzvQdDVaAWwveEqAaVSAasBbFftQqCcTuuUOVvoUccAaIiCnNCHhXxpPWfybBYOoFwarPptTRRrArRrRusScOoCUMqpPLlfFMmjJHhDdpDOpPoAabBwWdQqfFPDdeCHSHRrhlLszqQZhVvnNodDQqOPVvpcAnNLlfFSoOsiIOoSsJvOoNnVJjxXjkKuEsSEeWbBnNEewpPbBANnakKkKHhMNnrXxjJREyYemoOqQeTbgGBtIWwiIFfHhiCcEKkeHZzhhHRshzkAajlLJKZVvEeCgGdDhHSPpEQqOoescCuUcPYypJaQqFfGgPpAPpeEjZzXxbBNqQfFRPTIRraAFJjsSfibBZztJjrRprlLiIycCBbYKknrvVHNmMneEhSshHGgSbnNgGBqQDwWdUutxXxFfXGNngaYyGgHSshfFrRjAaJAVTKktzMuviJjIVUmbTtgGBzZmMFfwlwWtHhTLfFWYycXxCrEeNsHhSrECceRTJjtyYRrGgrRZsSiIzpjJgGPeEhHWNnwSsZmOoRrMzxSsQqaAzZKtTkWsSyuvVbBVvUYChHOCcoeEciIwZzWlqQLnNpnNmMPwIiTbNnBLaAlJPpSaAsjGTtyYMZzfFmiaOBboAOAalLEejIikKqQSsXxAaJJpzZwBbBbnEearRAmMNDSsdyxqJjlLQHhpSsPEqQeAauUJKkmkKLlMjvVoOPpPpCBbGgoORrtTXuUxfaIwWiAsIKkpPifFSQqZpPAXxazEpKkPtTqQeaAnLdKOokLlDlpNngGcCmhHMrRiIqWwqQVabBARrcCUuviIvpPbBwnNWHONnIioGgOoIiVvAuUaoMrZzRugGUmMmxXMmaANLAalnOhbZBbzMmZzmMuWwnNUJjdDBqQHjJqQaAbBhNdDnzZZztThHeTtDUTtQquaAkCcGgKkjdDJKZzbcCBwWjBacCAYygGiILtTfdDEeLlFkKiQqItkKDAaKkaloOLARraApFfzZtTYkKcJjdDGgDdfFCPpQzZqvVcCgGfTtJjbBCLlAgGacYyFFfyqQYyPVvvCcrRQqVwWkEeFfpPKBcEeCnBbAarRNnNnCcTtNbYyhHGgPOGZzgopHMmNnIdDihyYHhEeLplLPieENnfFXxAavVIJjJLlAavVJjBHqQmMhbiImMbBEejrRQBbjJKkwiIWqKnpYyPVvNbCcZzBrGgRPpiISszZAazZBbzGgZUuyYbBKkoQXxIiTtOolLfFNnUuqjKRLlbBrNnMmkyOoyYWgOozZlLBbYyOojJDaAkKmMtOoXxqQAaTncCBCcaAevVEeMIQqiQqXxsSmEDdWIiwWIiqYyQwhHXJjxxMmXNwWFfnxRrXXtoOTxzZpPrmMsSRpPbefFEkBbKtTMmYyXgGVvWOowRWwreExUuyYFpPfztTGgNoOFfMmnXoEeOBbxRrUuZzxZCczrdDRxMmZzWOowTtJjanfkZzwWoOfFKuoOUFUuHhFfKLlkyHOovVrvVRHhRrSsJTAPiIpjJoSsOQnNqaQxXLlfnNhHnNlLFiIsSqtVvltcPOozSsjJHhLbBlZrLifFIhBbkKHldDsvVcCSMmtTlLBbumMOovVUWyYcCNnRQqrKkwRpmMBUuASsoOqQabAayuUFfEeVvUuTtJjxXmcYyFfCEeUuPzdDZDdpOWwZyVvQqYfWwNnFzWVvwaAARrkKaoiIcCsWFfbQqBGgnNZzyYcjGgJCrkKFfRZFfzZHhzvVUbBumEkaAlLKsEeVvSIiezZhHisSsSeLlEIxXcLlCMFQqfGgmsLlaAMmaACctTAaYySENoODdEeutHhTKFfTtkkgVvWfiIDdLllSSssLbIhHmMeEgRrGiiIufCZzcFUBFMmdDHhqpOoNnWWwKYySseEKkxZKkzXiIdGgzZMmDhyYHsMmIiCcnbHSXxsTTtthRjJhXxJXxjBbUuPQqUTtupLNnVvtTlHjJqQrBJhHHbBkKhyuUYKknNoOcvVTtyYeESsCqQQKkqQqQRrqHmMZfFnNXVvCcXxgGxzmaAMjJvVTtTtRzZjJrPVpPkaAzZnCtTLlTMmtuUAazXJtgGTjRrSsrRqQqWJnQuUjfGHbBRQqhrRHrtTdyAaKkOoSsYQarRxVqkKngQqGpPHfYyPoOvJvVjVrRpMmFcCkwWaAYfQqtDdNMbBmVvqQpSMdDmgGsPEeyHgBbPZDdGgrPsSsGgrRCcSequTtUQoOKkSsfFflPpLFILliWwEkKcCxnNXYeErRyZztTpHhSBbsmMgXxGRrmMReNnEHheGWwgvVgGEzhHRrlHhhRrhHqQHLwtYwQqWbBjJeQqRZzrEfMmKoOXXxxkYObBoqaAQRrCcLlyhNnEOoebNnKrRTaAtuUkbBbBNuAaoOUnbDdGgZzYyKkbBuCXrRxcAaPfFpGFNZznkBboOsSggGiItXxEeTgGGKsSfrRvbcqQCBVbBqWvVbBIiAaRryYTOotHhwMmSqQjaJVJjvcaACrTjJcCSsQqDUTtucCdtIiHhQVxXdDvVkKvLlqPgYdmMDKrRjrRTKktQqOoAawBbDivVIdWnqFBbfZoOzQOoDRrdYLlhHxNhHnGghsSHVUuvsvuUuoOlEefNnFfWwCclLYyYyZzRroOTtFNnhkKiIHKkqMmwWYyMmPGTpIiwWzZTtpPhnNHmToOTttfFYKkPplPpOoLVUBbuRrVfFFJjffSTtsVvJjFcCgCUueEcoQqyYNnqIeEiTtQpCcWtTpPYyycaACYSyYsJiGgrRIGGgDNGgxyuUYXXxhvVHqQnDDsSukKiIEeUeJjmMGgLlGgtTKwWkxXxEeXEHNTtnhSXDbLlBddLlDzZNyYKYDRrXxGgzZdVvSgaAGsWwlbBIWwzZiiIXxLYyuUllLlXxSsvVLVvQqIgOoGeehzwWdDyiICpPIgGNnanNJjWDdwOoiIAicCxXWYEDbBavuUQQqUbBuuiIUHhWzZZzmMwKkqiiIIhYTtyvwPpTtKksSmMnGgDdNRrHhKhxXOXxpIiPzTteEZVWwvRaArCSIixXFfTtQqsclLmMPpCmxmMBbXMQYfYyPCczpPZqvFlLlyHhYHhjlLlLJOkKdsSDXxovMCcmmCcMqQLlVHLlFfhwWADdREerBbpVmlLMJjIiqQvPbeEBqQJjNnvdDVxZzXYVOFTiImkJjKNnDdMkKqQFfUueWwEhHSsxXKkmnVoOrWAawRvglLPpZCcpPYASstTGyLlSsYCcqQeEgIiVvauZzUnZcCzKkNFfTtWstTSWwzZlrRLMmEwWBRrPpbsSCgcWwJcCIAaijCRrmMdBLlrffFFBbdaAkpPKDRPpBwWbuUGgMmpsSPCcQKvVyYwCcSsuIiLlUHHhDTtlLvVkKIidYyhiIXxxXuLlUzwWiITteEmMiINFfnNnZNDnNcGgdDCveEVdjJnYyBbVvhHyYrRwAKkaChHIiMmcCcICcuKkUjNnJyZzYyYoOrRrRWwefFaAHhPpNvfdeEgGdDbFfBbmMJEejAwWaDnNvVdpPRrMrmIBvVbSsiaJjqmCcMQudDfxXPpIihrRkYylLRruRrUaAKoOyYbvVHuuxXUUxGgXSAPpNnKicCXWuUYyweEuaAUlLOgaAGXxtOoTgBbGCczIiZUuXKkXClLeErUVaAvwWlLXcCxnoQPpqFfOecCjJLlEoOzDdZSzZiuUFUuIifbBiISSlLsQoOqEeBqQbrRxXaAIiOojjJJVzqSsrRwWBqQYybQUCeFfclLCspPSEPGgYyfFpGgnNNtTnQqeKkUuMxXvVmRrhQDdCZzcCCUuccoOeEJjxXMmqHDtnNAvVEezfFAaZUuLlDdcIiZzZzCrTtdDRVdDvLsSlTmMGnNfFeEvVqyfaAFQqBbehHELyjFfJGgNyYTtxSsXkKOoSsJjKkQEebsSGQqNnFfYygmMUbBKggOohHWhHXzburReEUyYRroOnNpPBtfRZzrMEemWwFTklLZzZOozSseESYysszZSqHhQRrnNKpPfFDqBCxXcmMgGbQdsSAadDEAoOoOGeObBoLlEgaUDdVvOooOrUaAOouXhHRrdDUHhudDLlPpsVvSxRrUrNBbTtTwWtCyYcqQrRJTtJjWwXxFfHhseEzEemEkKxXtTerRiIHhamaAbcCTtBteETzZINXxniiRrIMYaAyxKkWwzbcCwuUWBMfRruUFVvvVXxmBbCcpfFOoPQcMmMmBbLljJwWVcCSsPpsSvCMoODdYDeEdyPqQplLlFfxXLmJSsVnNvTtIiUuOoFRHRrhwAXxukCcwWfFQuUcgpPGCqWTkYyjWwJKmMAZvVzaBbaQqACmMcnIiNweEWSoOstTBvcCVouqQUkKdzZNqQnHDwnNNnhHuVvJoOcCskKSPpXWVvxyYXwCBPpIibcesSExqbBqmFRxXrhZYCckUAaaXUrlnNLJxXUUvUMmPiQqZkZztTJWwyMmKkSMSaJjNnpPAQfWTtKKkoOBWwbhDDddQAaqHWwBbhrYyRNnAaNRIireEoObBWUuwnoOBbPlLpwyRrYDdTthHNrRnUTEetWwSbBnMmNgHhGsKkdDErRHbBoraAROpvVVvPGEegrRrdDNRrNndLywWYpTtKkPpTILliAatPlDLvVlFsSfKYTcCIxXVvnfFRrWwWwmmMMmMbRrBVvDdRrsSeiIEUpGtVvTCXxcbPpBjbBJBAVvaDqPpcgGCQOoPjJXxpftNXxVvRAaeEKkpPMHhdDbBiImkKKcCsFVvfvVkKSDdQqAafFAaZxXwWNnzlLnMbBmmMqAaQwTKnkMdDdlLzZDCcmuIcCGgzZiWwGRCcrgUiILUAWwaeEXxFfCciXeEfbBlqaAEBbVQqIYyifZzsSFItTDdanEeNsSlLldDoOeEHhMqSsQaAsmRrMjCcJXRrxScCkKJjfvFbBfVvVlXlgGLbBiQiEyzZYyYehtrRTHiIGpOaAokKkGgKTtVvCtUuTfFcCcuUEmMixXITsSwWgExXYBbBvVbaAfJjLdDSsKkDdAaVRrvpPBbZzjJQqSAaNnsyHhsdDzZlLSYbBdxXetTEgGSsYymlauUeYyEfFaNnAALiIXlJjLxjwWPCcoEecCOJjhpwWPbWKFfIizTeEMmlLteEtTRrCcGgrWCcYgGTHhtydNgAaGnDwTiItYWwUhHwLFKksSflWnXxNaABLTtAaMmlPaAheEHpnNOAaSRrCGDdxKkXlKknNIDdiqQqQoOuTJjtUTtXxUUumMtNnTYmMoWWGgwCcYUumMmMPpvnXxnJjjJNNDdXiBbIxVwWTtFfWwLIiSslqLQqNnXxwfFWyYGgDdQevVARryVoKWCcNnwkGgOMmvVwOocCXkKEehHtBhHbICsSciYytTZaAUGgbBuZbBzzsSTDdPpJXxlLNnzZwygpzZwWtTsAaQqvUpiIiIiIPRrgFMmJjWESseEbBewTtfWwrjJYVSanNhHAfFsVvzZbFfzZBhFKgGKoOkcBEeWwoeEObCpnNPpPlEOCczMmGgZoewNnJjUPkKpkPpRrZzAQqaumMqrXtOoTcCNoFfOnNTtnAaPUuEeesSEwWVvpAaeENhbBHnJjNnZvaAAaVQqQqPpgbBGlukAiIaRFpPfrxXaMsBcCaAbBIiPpbOojUutTbhHXcCrZzoOZzRJjmgGMeGgeNnyYmyYdwWDMVklLKrRvVvjJrtTuUWbBUcCuDdlLyoOYyYmMjRrsVcCPpjniSsOoCcgXCcfNnwWFFVvfnWzZkLlgGwWKdDSsGEhHWsAaSZEUXxLlyYMmdDMmrRupPeAaCcWwzwDQqiIqQfVvQHhwWbTobBsSZXUuXxbsSyFtTjGgSkBbnNKGgtWyYEwWevAaEeVMmDdQqOUuiIbBhHqvVQHAgJjGaAjJbBonHwYyUpPnNuJgGjSsTmImMZuFfmPpsSTccCCiIpfiIFPHhTtPpKkUTlwWLtnNSsdRrXxKkAMqQoOrZYywWzOoqQNFfYyjJnNjJZYyvEeVzfjJZzVVvFdDYQqysSfNwkKWrRdTiAWwahHqcCQRrrbTtJNXxnZmmMJjJjgwFmRrRrAaquUKkXTUuDdbtTBkKmMqQlLEeSsGtlTtoOHhSdDKMmsLlPpgjJGvVSoOPpGggGwWhJaASszZaAPpUqeEVacCAfQqiqpPSstEDdxkKaAxXXenleGguflLRDdrqQwWDdVdeEjRrqHhQuAaOoUgBzZAFfajyJjJXxvVvKrNnplGgpPXiIHhxBlHhHtThLNnnNzZbLCYycSdDsCceuzEIielLCcZiUuEqQtTqQiIIioODXxxXdUlLUiIPZhXFfqQzTtZaomMeEvVDBboOdOxXaAWzsRkyYgSqatTAQsOoGCQqcEedDKMNtXxmuUMgdDGpPTgGWwuUmMncCmslCaUuAcLSrMSwAakZzpzZMmeXQlLwLlWAaBqQNnhoOrCcxXLlRMRrKOorQiwWIlOAaoBBbsSTtbqnMmYcChHUYlRkKqQHkaxpPriIoOPpXvhiYyRrqQqQIHUxXjMmmMrRxcnNeAXUpNnPIipoQqOZWweEXQqDvVSsdtOZzogaAaAUqjAaJhFFYykeEKXWwxQJjfFWzGgugGTJXGgKkgpPGSWwSsPiFpMmPvVfIwHhWpelXxLdDqQwWxXiIVrqyYLOfYyFtOoWHhwDJjGgqkZzKPpsyIQqHXxhNniQUuqcCzZzyaJjvVqgGnDVvnGgKkEevVIxXNniVvTndDQhHpPqmpPMqdpdDWwRrPeEiEeOBboZzZZiIVvzzzZhHIDAaMmXxNnQNRrhHtiLsSCDMjJqQmfFPplIiRreEMPKkpNnzZGgPRrQqpBbDdWtHdDqQhzSLlsZMffSsFFmukKbsSQRrqadDXUuxAXYiIyWwpuUgGHpGgAaPHhXxKklLhfFKzZIikPLlxXjJHhtjJTHhNnNnxMfexkKqQsStpEehJjhvVIRrTtkKNvqQVfFAKdvkCuUKkcOJmTtUqQlLtRKkrXjJoOxLKaAhHTttTkYgsSGyBbXxQqpjdjxFfYyXJDFfVvadkSuUmqSshHQqAaBbAaUxXuXxtNnEeaoOyXxYbBkCcgGFNnPhnNHTnNYyoOxXFBuOowWUbCaAthxfFXjJhHHCcYdQvVOkCLlLlcoOEpPGgLleqfwWFQTTtNRluULrntNdyYJDdyYDdaYpPjrvMoOpIitTPaAqQssaUuLlAkKCcSRHcefCSsOoevVrREvVcdwWwWabBADkKgdTIgGiteTtWtbBTwCeEJkIQkKlLMIlLiGgpTiInaAvOkLDvAaFAdDaXzZxwWuUOnzZlLEcCemzZwVvyEePpYWuUbIitOoeETyNndDYOoyiIYmMIoOeFfEVviWyYwUutQqQzQYyYypuQqkKrRLlDrZKkXOLsSeMmrRFfipPJjnfFLfFSLqQCcwMmKkWuUmSarRAsruXpSsPJMmDdPTtpTtpcCcZzCmMVbBlLXxAamMmjuABbauUddfFmMWUiIfEhHEeseETjpPOoHJZruAaUtLrRlgMmodLlyYOoVvuUDdnNSkuUgGwIKKkYyjsPpmJKJjCcFHhfUYyFfeyfRrJmMjFTthqvBfFdocCnFfRcCgGYyBbrRrEqaAsUulLSKMRrOokKRrKkKlLJWIjJiwdDWwcCGgIixGJrRRrAGgaqOogghHGrRKIcEegdJjDGVKWwfFkxQqmeEMCcXIivmMtYyTGuWtTlRyJjYrXxRrZtTFfzLKHhCAacgGuRrAajbpPBTBbtQqrTtOoeEJjXLmMyYeElbBZzlMwIAaOoUuKkiXGghHxWUiVuvVUvvVrwVaEeOghHGEeHhoAwBIUpAagUuuUGfFqQRNnjJhPeEjKkGDdgIZzKpLlaoOKgGALlaFfLDCcLeECOUubBotgGiINnTjJcEBbelIiTlLeEXmAaMxuUtMzZmYyuRrpPOojJcPxIiXEeaAYKkyEeeEBjJwWExfFXejtTJNVqQoOtTfFvRSsrQEjCDdgGcSsgGJXUuxhHlqQthxXkuytTYUKVsIiwWSNPpnBbZHhzFQqflzZMmGgkcOcCGYyEeWwhHDdgANVvNnBbVLeEmMiFpPfLlKksIMRrmUIiKQqkIiZzuTXeExQqSrFqQPpFbByYTuUlMmThHrEFLZzlZnNzfIsdYhJjHWcCRxXEeSueXpPjyYmMnrRNxXrZzmMPpIiiInNRIhHDpPQqdVxXutTUJLYOodrRDxXmlLEgGeMyDVvdikGgbBRriRrdOouvVdXxRvIlLPpwKsSMmHlLhfvVJmMOiRxXjJaAjJrxAaYyEezZDznSssSQqjlsSWwCMAamiIcqKzEzZZzeBbTESsTnqfFprRPZnNGuUmSfFIkQPqQHhjJpqqQQRfyoLLllnPkcKkSXxTtsxXCgPPsSppNnPdAeQqBbvVcZDdOiMmyqJBiIQTklLKPpsbBGgMntTLlNfFTtWwtPsSppzZSjJsnNTAZOxHRrkKvHUutIsEeJjSiBETCctyvVrUrRRAUuXxarNnuIQqYJjwVsSIiZzdTsnmCcQNnTAHhatHhnkKcYDdyCKbByYkGgYywWuuUQLlqxmIZziJJjLAlgGLacXxYyCKwfFxXxXWCchHkKkpPdDgaALlOqUuFfLlcSsqUuPTtEeMWwMnNmJjNnvKkAaiIKhtjJIaAFfrjJQqrRtTRxvVxXWuUPIiTtpAwWeEaKkwlgGLuUIuUjMgGlwWtTFCdDcxXIbdFCcIwEeWjJiCxXTNzZvVdbvVbBBkKCWwFgGfcRAarmuUNRrGgfVbmEeMHhyLlsOefFEQDaAxXXZmMztKqQlLktTYyLlnNrlLVvRTuUPiIHhXuUagGulVvoVeZztbBUuAKTzZtjJkgZxqQXOqQoFrRzaAGgBbPpVsScCMDdpPGgmEeGIWKkrRnNXxwVoOvPpCcbBZziaAEFfEuUeERreYqeEYgyYQBbqGKknNLzOopPCtcCRrAulLhTtuqQnNtTaAFkWdDMmEepPdDJjssfXtTzwaAZiIzYnlLZzvHhbBUpOEXxeyYyYvVIiwWITgjLlJNnXxfFdEeKbBUuZztTRAafFrkPtfFcCTtTdDhHNEzxXZeeurDdRMzZQqmrvVLlRvKkQaApPlLWwLDdEeOoEZtKkTWYSsFfypPbBqnNmnnNNUuMeEGaAgKEekFfEBbGZzvVmMEegKPpkYyzJjRsAaSoqFcCjFxyAajJYRrCYyXIicCXxvqQVEJKqQBbkYpPyjeEhrrRYEeJwpPWlVvLwWRrAzTKzQqxjJPNsSMmYybqQiUXuUhHFyYfbBKCcksSiIxucCvzYGVvjSPpnzYuuUAaUWwYyuEeUFfzFcqSsjYyBbgmqQMWwkKeEdDsyCgCcGWwRrZzIgGiLrVvtYyDXgNfGgPpnNbBDIiqjJQdzZgMJaMJsSGgjVviINuPIZzJCcooOlLqnNQTtOXxrRyTgGkKABbRrUukKrRsdDSGdPEsSepDoceAaEgwWWwhfVvoSsOeEtZiIMkKpPYqQVDoOdvEetTyMmnNjJwVPbytXxjJTyYFTXxtzKzZkbBhIZOnEeYyywWEeYeESUusudDpQqNiInPAlDdkJlOBbaAqQMFfbZzGgTtBieZpPQqEeoQMMhAakSsKHAakKWUuGoOGgKkgoEehHeEQqlLOVvWwPkHNEBOVLpPAamRTtDdrSswWMWwEeqQxRrXeEPLgLQeZyYzERlHhPqmMQOtIvVwaNncJjuUnNzZOqQWRrQqsgGRrSOmCSEOKSHhseHcHhKkCzLXpRrPrIKHhtmQKHnNVxXOMlFdDkcCKTtQVHhyjJUVZNFflLngGgGuUpPkKkrMXxXnerREhbHhpGFyudwvzaAZKkBbALDYpPSHhsjXwqOodDwfFWQWrtWoMmOwKyYiVqQvPpPubHfFUuYcKYyiIqOSsPpovQQSsoEAwWUuvekKueEAAaUuKXxNEeWgGwcbBCKXxhHQAaFQqWmgrUAJjlNAtTanIZbBDdiIzZggTDdnNJjtCtTIpzQqgMFfCcaAmcChiFfUuHhMYBbymMnuMmUqrRFROEeoEeJjhZzahHJjlFYygGAPtmmMnNdDRrZEzOoZaAaFYpHhPzZyAavbBzZPtrFKtJyYjnYyXWwxZzNdDTNOohHFfquzDdZhkKHUCchsSJYQMmDJjuMmCZzbBcoiwWIiIHJjtTtFfSsHxXhTVvIiaUuhAadyOOeEoWDdeXxoOpSsPEZzCcsSipmSLyKksuUSJTonNOXxGVpPczEebQqkKoKOoXdDxKOnaAECcAxXAGgsWwSaZUwWxcCXuKkwehHXxUuUadDAFHORrohfuaMmASsEjcKTDdDdKNgGksYylLsmMnqeXxPxXceEPpCIlLANqQyYEensSTZiImMzSVJBhHBBbBbKktTJIJMmYyGgSsayJYJxkqdDFfQKPpMmWwXjSprRkKDdnIcCbgGBikgUucCGnSCcsfFJLEDKlAagaJjAjrqQRJZzTGlTtjJfFrHWwhRfqRwXxAaPpWcMmZuULZhHzpPmureEjSsJSJjnNnNcoOCOnNdDEeJjBEHwWcCEzwEkhHAPpnNjPpAYykxVlLlLvWwXXPpxGgmMxXOoFfyYPpPpzgGiBuUYgjYyJVvVvtSMYhAJcgGZXemdRCgmXxMFdDpPzZIvQqBYybVxIiXtVPvHxXBGCcuUgbbeERbBPriIWwRYyMEepPmJAawkKaRyoIiOfZGncCrIifqQKkJOojfHbBlLhFyVvPaGgwyYBFXxpPnNuUNnhSsbBlLpPEMmFffFeHPmdDNnMpwWfjpPLyNnqcuWXzOoZtTzZxjJLlUuXxGgQqVEeFBJjoxfFXeLlMmHCcLGbBqvswbnaZoOzCcVvCGXABBbziITmMUutwWKjJfUuuUMwWaAlLiNsSnAaCcEhHmMHhJOoKkjeIrIEUuyFbiaAIWUuwDeEFrRTtFfLoFTtDSsjUuWwWuUcykKTdvBbFyYfVuBSsbUaAdbBDrYBWwbyVNnGNneEgYONnrRIdmVbOxhWhBbuUoOaBAsbhbBvFfVzLlhOLloZzuMmomtTMiSsiZuUoOBkKbPJYyjISsSshHgxXkaAAaKBDdfbBFfFKfuUsYyiqQXxItEeBFdDhHnNyEevHHFPpvVZzLDdlDHhkKnNqgXwWbBZzPJLlKkMJjjJWDdmMWwwKkFDdjSsoEeRzZeBZzNuHhdOoDJdDDWwqIfFiSsXxKxWmMwXqQjJNpjXRMmsnaArJjCcsSpPlLCclXxdpmMmMbBwPpMbBteCcDTeljbfiIGKkbtcVvCTrRfFrnNmrRHTtXxLVFnTtCcCUTKVcCpPVvwWvxXoXxOvaUAagCcTtQzZFcRrAaAxpPxXhHkKJSsugGlgGLbgVvVKkYRrJjlCQqaHKkeEhHIyixUuMmkKqnNczOgyYexbcCBIibBRWkBbKoXDFPcSseaAKkfbBEeAEeHhqQylLCcHhPpEJxXRrSHhUZzzYyTtnNZzEBxmtTtdtTIiDgoORgGuBbDgeksSzbBPsSPWMmITtFfiKkmjUujJlLJMEcsnNNnIwWJYyxWPpSCcsGgCgMbWrRwRrOdDwWHcChGgoIiBDxFfzFAafnuUzmMjJmMgGInNievVEKMmIGgiuwWUhcAaOeGnCcLUulaAXMmxCctKXxkXRrUowVrYyRlLzlpPyYZUojMYyqhkKHzeMmEMdDmrRAJjDdRYlKkPpaREehHxHhtTLjJIilcJjoZzOEIWwrRDdimoOMsSRJCwWMmMmmIiMmMNNnnSNgGThHtnnNmWwvNMOWOdDonjcCcROoOoFPxUPpHhsSuXSvVsMmVvtTJZWGJjDHIkJZzzZoOTNnaCghyYxgZfnNJDdKUNnBPbBplwNeXxbFfcYPRjJrtTpLXxebBEhNnhHzFUEeriXxZZAogGVvzhbBHIECcBbVvZzDMmKgcCDcCdLxDdcCXlwQqjJWVaknNmMdDLJjlIHhLnsSaAJjrrSpbBPwIMZzYeuUUuBHhbwGQqHhZvfFVvVgGsCUuuHhweNRrqipDIidWbBwDddDZYhHlxKfQwUugVLMDdxXfFPpmhiVeWwrlJLlYyvzPpzVfFvZOogmYXpaAPruUAfoPOomFfRXxjtqnfFNOSsoXBXxLlNnaANnbylLxZkRXvgGZziIZyYpmMPxXaAuOoTtVgaAEeGPGgLlzzGgHhSnNsYxtpPTpvxXkHUuoOVjuUJvMmLlbraglLfFqEezWZzuUfFwkhJjBbhgWwewZzWECWREdDmOoJjwWJjxaAXkTQLlqOofCqQetTOgWxXwvVGtAaesSETyFfYxXoxtkKwxXWCcTdKiIkYyDlFEefFyYMPaPpPCcklLXkKnNoOlAdJOSUuYyrRrThHBbqLMxbBhfFOoHCUucmMeXxdDjnuJcCgiInNrfFvVQsSpPAaAmbBMdadRidDYyRrfZzdbBDLlSopPJjXyRiIMCIMojJXxIxeGtiyYKkioldDdDFTbutTUSsKlLmMXxksSLlrJIaKkOoSNnoOUbucyAjeCcXCctTanNnNAWDjJDNndGgVFsCuUcSwWfBpJjxXBbWYyzZvyhUuHYvhHuUftTFCDRSXyYxseEMmnNZQqOYymXxEeyYbRzaIywWxXSsgsSGtaLlNrRDzwWZdAanZzqQpMmJrqPFElTUutJjwzZlwSaAmzZZrRzoSbBsOCpmMPccnNuUOocMYMnNOTtcLlCPpwWyqQeNGgnMmEEPAaKkZRhHrsSjYyJgiIUtLGgTpgTSQGgqZlowWOLzvzkcCrDjIXxkdDKaAEeElIiCTtcIGMmbBVvIjJJeSkuoBPpzZbphHTxXtoGqScBbElLheXxrREeromMORGgyALXxqjkKJnNSDdNnKlLLlkotgLEelPpmSsMqmDdTtVeEvWLFfloOJiIiTtzWwJkiIKrRrRrlLQqOUxsSXxoOlLoOTvbBVBUulLPLlAxIiqQFzZPpDmMdVvoqdDqQNjJnQwlLFfTtWkIZziKfFhgYueEUjJuZlOrRrHhoOxlLOoXpPRooqxXrRQSsOvzZjhHdyYDWwJTYytwWuUXxMbBmAiInNFQqQKtXxRKUuBkgTtGKxoOcCEsctTCPwWpHhbBfiXDpPIiTtdyYFfwWxdnpPqFTPFfpGQZzJetTPUuplLTtwlLtKkaxMiIfMmOoPrLlfFVJFfPCcloOLSsrRejBbSjJsJUuEHLluvVrHAAadiIgIiaAGqTtxDJfoTBbtCcVvbnmMNPpBSsaeUSLhHjSsEvlLVvVjAaLzZYywUDdWNnwcCKkSyYKuULUDdnsRrSrRNuoTtdDSsprRtTTuUPxNCcBbzZrXVMmQqbBkJjMMmmKCTcmwWpPQhHetTjJUucCUHoPpRLlhHrkIWwWRrhbBftzZTmMFPGgnNuVvrFfxXRciqESsYkKyYymPpMeZzucbBSgGwWvVeLlBbzFfhbiILPpxrRrRQqVdGgjJGxXGgmMLlnNJjqnTtNYyvQrxXRZzOVusGCcPmMpgSDdkuoOxcBbChvrSsYfHcChDdFPUzZnNiWeqQvVkcCKEwzZIbIeELlqWDdPtgGjMmPpFfVLlvZzGFfMOmJjIiykcCFfdRrdDDEOTtoDeWwHhdFfDpsSPzZlawWAVvjNEeyHsSRzzJRUurjPpFiWwnfFsoeETbYbBRiIrOoIiOEqQKSwJhHhHEwWncCPpntMmQKkqmccCwvcCcRBcCzNyMmvOoVvjJLYyloOVNnMjGgyAVpPxXqQgrvVxsCbdDBcGQIipPNDdspQNnqPaARrpnsScCTrRXZKsVbBeDkKdZQtTqhpGvVLDidDEnNeydTVcfLlFImWYQZhhawojJjJQORrousSVwfFPenAaAaPpkgGUuKMmAaNpceEVGKkXxXePjTUgLnNlGGgLNnqpNimMvVOtkAlLayYkUuKrRxTBbAatBkKdDknNKkMmnUgOBbooOMmMeEpjvLlSsIqxLlJjZzUKkTtYyAawuUNEJuUjfLkINVuCArRQqkKJZKTRDhkpPIiBtTCvVHAahcLJjaxBbeEBFYSQqxHhdCUlLAmiaAjLlaAJgLlimMITtFfjZYzuDdoPlLIwWaAIipqsxXBAaVvbjJuUGgFXYyadsBbSYXeIYyeEvVijYAQIiOozZcgGBbcvkBLluURVvAdfzWhHwPbRrvVjKkBdrRDguHkKoOAZVPUDdIYrTLlQPpqsSNZcSsdAWziFfLlqQwWmaAMmMQBZzbUpMVvmoiIsyNeGgkKeEFvVrRMVBhHCcMcljMQkPbLzZwJASMmHpPtTHcBbYPpgGsxXZzUuZlkBbKjJgYyDPpSXxghHCuUGpPggfyYOoLnBVvzTIrGchotThHJRlFBvgghHGXxzPLlpHeLgiIiIVgNnGnYWwySDdpSsMglLzZGkavMPDdBbGUrKkaARuqjJQJwWjbBgPpqQQuoaAOnAduDqHhQdUtOoGsSYynEpLlQqbBMmgyrUDMmnKpPkNdTtLacDgGAaxZqQNnOoAKdFfFHTVBafFAbptTFfOoRLihKkccLEiPLAZFCcYfFyImQLlqZcEVveHMDddnMTwWsKwxRnNYWwyugQqGwWPpIKbBPpkjRrSOoExVvJjNPBodDUukKTwhfFpNnWXxIilyHhzxBGOoYPpDdDayXxzRrZkbaPAhqQzZHfgkkKQBrhJjroHfSsCcNiIcCFjUwWPpsSjJVGMhaALVvlHEeyYuUNnLwWDEeIPfFpvVAPpagGJIihGgaCcFfAzZIZDeNnEdzMmUkyVvWcCGwQEYygKkGNukwWymMYcWqQSrRWEIEeYyEJjMmRreZctbAavVECphHXUuxYtoOTHDdhIiWcCrMmRwvVDdAirRCTVsUuSDvVJwWjMmdkKFfwWuoOYduBdaLVyYbfoLyYlEPpFjCmOoMlLMwWmyJjmMVOafFDIBbLoDdbBLlIiUwWuLxvVXlnNkDzZnNcZhHrRMmzllzNnqTeEmvpPCcWBklLDdrqQoUXxZmMxDfeicCUNqmVvGDoOevBUWwusVyRhGgOocCLQDdqhzgNuUwWaAyqFFLLzZZfbBNnFzISjyYQqWwWwhiIHIiJOoYyskQDpPtTBAaMbRbYyBuUrBSZzJYbqCtpAaPTcAqQawDdZcyOxXzHhzZSssbBdPdRUuBeEbrsRarzkLBQqIYoOpPNnbhfFHcGvVgSsShHYynYyKkiIwWHhNGNPtBkKWbyzlIZzoVvwWiIVvbBRrOPVvNnwWpurIyHYHhPpyfHCMmIiJrrRRjNnSstmRXOoOoSBlJjlrIivNrRngPpGNEVvSLpUvVhHXxfFnNPpzpPZtNAoOYyIOoJjQpJjPiIhcCmMXDdYyYgFkZEIidoOdDmNnJlXiIhnDdQqtWjAIiIbBIiiIgGWLlGoOKruFfUTtTtutTUdQqXOAaMQqmEeGsTKkaArTZoWwOsPwWpVvJjFiumhHAaNSsbBzZblLIfFVviBUMmYskCsSMeEbsGgGYyQqgSgGrsSSmMshKkHRKkVvvzwBwjcCJEPqNvsSCRwuCcUHhcSsOMGPJNCcnMmjHhNnRrtTiQqnNZqtmzZMiNNNnnoHCcuZzgogxXgNnGGgBbUuGPpYpHhnNPsDhCcTNqcCKGhPqQSjkgxFfXwUlCcDdozZCXasRuUQGArgOxXGTtznNZxXgoGRFqQmMKkxjJAwMcTtCUkyYKQPpSspUnNAazZLlnNyWwYKkueMBoOmxUuiISsdDbBDVMwWmnRroiqQBIzjCZDdSsVviNIsQqMmHcRrMzpHhCcPdbDXsuFTPjPpqYuUkKsSfFtTUuuicCiIIULAaiFVBsSmQqDkBHhbUdIiBjyWwDtJjcMwWzbBZhgGrvVMJjJfnNenNulLByaAYcZzgGpkXeZziSQqEnsSGgnNNCgYyPqQvWwOoVcCTiuUrROZEkJjGvVkDdzZbaUWnLppPKyYTtkPRrgYYLfiJZNnzYTbroXKbFwWfXGgUnNJpmMPvoOmMbZzbBkNyvmMVtkKTxXEyOBrEeRbMsSmIiMmdDpgFfGPDbBdmMWwpPPVBzZbKfdlLQqrRlHnoXEeVvaAxXJjxPvOtTwWiWxNrRnXYGgyYzZUxLtTIVTtHsiUmaMmeEAaRluiIUfFvpPvhMXxRrVBMmhHblLtiKDKkgaApPcCNwzWvfFeEeHhWMmwvjAaWwoeLlEgbXxQZAFsxXSfHfFkrLDAaIjJvGuUgBbVEffFjnkwLFjxgGcCVTOotjJeEnVvZRrzkIeEaAIiVBbvLewmMWEcRxXaAtyYtcCyYNRrwWBwWbCchsSzZtbBlLhHhLBblbBemOdCVmMvTtWwcCDdBSXGsOvVZoFNtrRuCbBKkfFcUfxkVvVOalvbBVLduULlpnNhgUMmPpRrulLlLHWoYwWLkVbBHfFKUuAaqhwBIibhHIiOpgGkDDdqQZEscxoOfFXCSiIezZPUMmPMtTebqQMHhzujJtTBnNKjogGsyszcMPIoOvAaSTcORXOTtoOhQaqZzWlWwNzZIiPEfYmRIiUuDdbMsSpPDIwWjJeyYEryYzekKEGgsjUxXuYbTtYVIVJFfojkYDdyaAxoOusYkKErmxaWzCzhHZcLkXAlCjJcRrJAZGgzaeEfPyYQTWbBwuUSXOoFfuSVBbcCviUuxitTSokKuUHXYKGZzPpjHhbXECbBVvcDyVlIqnCcEeyfIoOiHYzSWwqSWwsMztHWwbQcCnbBoKuDlyYPpgRVUayYAFWwfbKnNkrRUukIruuYyyYsSoOUbaABCJjZbDdBbnuzzZgmzAaWfrFLiISVvsCNQNjaAUEKkegGuDyYdgGWwJWnxWJtlBLqQlJCOodNnQCVsTNyYpPJjntetlMmBbkvVcCDdQyjJqQHknTtNsxXWKkoIiOfTXyYvoOVprXWifFIwWwWwLrKEeksZztTOHHhZMKbBZmMJjuTqNwRrWohHOzrBbXxHjZzJhMFpwpAaAahLluUlLHRTtDrcCRbZzmeELrRiIldDEmeEIuUjYjJtTtTIrOoRisSIqQpclLOdDoOoftTrxWlMLtzszUuZPpMIiQqrRmgGgWXnNVvFAUNKhHkWCcAFAtTucCRCrRZPOoYOTOhDJjVvhrRkTtKHzjEQfMKScLlYyWsSwfQFZzfspPVgGbTZKUunNIlRoMmDZbBiManLlIHhibrCsHKeElqKkXrmMCJFUrRcCgNMaTDRNnNVCTjcGgCHeytNnSPlPKkpwshXTbFhZzJKAjMmJgwTfpPkkKKxXRrZzRfzZzZvVflLqQLFfBoObgSsUumMUZzdDormXRrpPiaOFUunZoxsSWwXOQTthHkVBxhHttTCchBmgLlGTpPsbhKDgWRrwGnsGgQqnIixjQqOoJlLlmtTkKmGfFlLtHtTZzhHMmiSeERfGpchHhHYyXrnJAnaALeEEeyTgGdbxXGPpmMCMgPqsSVvphfSNnsFAfCckKDvVDddtTkKZTwhmLBbhHNnlWgVrpSEeNjHhChzZmxPpUuubBUPpEeZzoclVvuApPaCMmQQGgYyVvQSoObrbVvTSCcOoHtTgaMQWnNPcFfteGCOCcgGocSBABbSswWtqwLLloEeDdQoOkDdKpPxFfFzZIiDTtfLlQZzvqQViWthVaFYyDzcsSUuNAaqQeKXoAAYVIiBmfFZSubBUgXyWdYyweEeGgevsgEeGMgKiIMMmIimVirRxXUuaQleRrpWwmCMPFBbvNpZzjnNJVvTADyylErReLZzfrcxNnXebCcEeiIRrxroORPcHdDQexXwRVvrzZrRqQTtAWwaZzMmWmCcFIsSAzQFfyEkkKeYicCPpWwIfFkKSXzvbNBbwWvVOonPpBNnLlRIYQqWAwvWwVWZzatkKxmJPpsZqQLXvKkViQqzZApPCcMCcRroOxXXiIUTtuxOEeoEwWYRbBTtwjINvlLcyYCVXHuUhvJkLIilzGllWgbBWgBmMpHCcVpwWPsKLlUuOiIFcCfowoepsetTaXxmMFfNnNuvEXrRlLHpCjSCnoOJjLcClXvdLnXxHWTtKGrxXbBlvpPVriIxmMcGgrQoONnnIYxGbBVRrOooOvyzWwdyGgPpMHfiIRrFtaASrRsYYsSJHhjUulGsFSgGaAdDsQqiIfSDxvVXdXxXxgTIPyYeNAwjvVhbBHNSsAanzMmZFfcCnXxJzZjCUUuJxISeTyYaAthUuOkquTtrHFfcXjxYygtTWzNnZuGgAZVUYNXxnAaFfBbxKkgwWuUqQGWwzIiBrRqQMmEjgUZRryvKkVFkltTLJjlOEeFfXNwWnLYytJjTXxkpPrBttiIYyIYsSdDmMtTKrfofFOyUuLllhUuHqIQiHhImXxaAHzZJlcQxXqxGQnFOofzZNxXdtTFfwKZBbVNAnXxNEekeqQPcjxkhHgTtXxQmGgmGrPCKjJUuxDLlNuspIUVWJJjLgfYsPokKOIWwcCbWKkqgFsSBcCKavVooFpLlPxXpgkPEStTsFxLlHhXnBbErSsqQRHpMvVmbDprsgtTGSZzRIihPZhHzZdbwpPDDddEkeELlKsNnudTTQqnrqUumFZNUIiDsKdikKIFLWnapPGmUHBbWKkjJHOohhHCnNcdDdQqIJjigRVifPtyYnfLlqQFNLlDFMJJjjVtOQtTUuGgqoqXxQWzkmscIwbBNnocZYyYWmMqQZTNCcnSsfwZzaImMhTOocGgCtvcwWXBuQquFCbZeEJjqQVdDsSerLhZzRJjyOoYDdWKkVvBgQqGhGgbBcCZAUupxOSuAPcCypPYpgGavYEfFlDHeXugrrBTrnOoNqQBNFiRrHhmHgQyrRhHDdYrlsSKNnnHhNxWwumgRTwWtMmgqQjiqQBIQqVvirKUgryMmYCLloiarLOxJTSuSsTgjJGfAdyCcwCFzLcMfFCcxTtIXhyYQqHxauCeEcUWFikIiOLDdlGdQNnqDoOywWdDYYyVvThHJjHhLhlLBbsRrPxhTYpPmMmMyMmlWfWoWWsAkmMNnkNyYoWSCYAWwEJdHOoGsVRfFOoqJEejQiIVvrlzzZhwgGWTPxUuEyYOoIRAariPpXTMIFlLiiIWJjEkcCKejZzJZYwUuwFfWhEQHuWwGHhKgyoOkFYybyYBfjJGBbgTcjOGZRrzgoBMeWNlIFNGbPptvVTruvJJoOQEeIiAzLhHyYmGgMIiCctTODtTdaLZdDZsIiSSsaEzNjmjouTVDVUuvmiWwkYyuUPIEeHTtrOJjYtTutfTtiITBEupPSsUNnZzkOUTtZzeUuvVVvExZRHhahKkgGcCcCtCNnTZzzQdUkjJRfFiIrKVVvvHVvfFcngiVKkiSsSTmRQfFwPpRrgIpgOoGGLdOoDlwWLlLEGbSsqykKzYyRLlIintpPcCYaAkPHwWhpvzKdBKOTzZDdyrRpPVvWwbcdhuKqFKGgkKkHpPGSsgsMmgiIIaACcERAaBbkoyWwnLvchHfeoUNeRrMeScCFhBLFZzcCfcwwWXmMDwYztHdDUuWwYzuUHmYzrXMurRYBarRFdDvvUVSdyYBkgGdDkemMgGJPilLlGoqRrRrLWwOowLOAJhROozHhZNitTtTkKITsQXtnXxRMmooFIWlAiTtkwzkNngRGxXvVXwWABGgnAaNBbqQJgbGSsbEGVvgSsfFvVBXeEIGtRlLrGIiKvvoOtklaAfjdDxogMmxXTNTvxAauiIUzsSqQOEejNvVnjJkcCSjtTBeZdDfFKicYukKqQJjUyWgXXxZSOThHtdDuQtezXxTGfiIFfEcmiIHhMfVkXeEgGgAaGgeUUuAyYzZaaYfFylETvVtHheLsFpPfGgSaOnNYHhNnyYsbAnNjWRCcrcGQnQqYuvHgGJgaABNTSNuUdyYMximDahuTdDwWQXxVxyYUIWMtApCczxIAlLOwKpPTtJXAavfFiZbBnrqnNhHqjJmUEHfFFYyJPySQEQVvwWhqQEmMewJNbnzQNlVvLPQHpwLwWlJWShFasowWdFtCDduiIaAizEJWwKpPHhFkKKoVvVDSsYytAeEtjUpJXmdkhHKceBbWXopxSJLaOomQWmMlZIizNEeEpPeGuhHoKcrleTZQquOoUmMqknNKkdDRfFfdDmMFtJbJjfSgGhHGBLeEJjlvlcCLVrhqVvBvVbzqPpyYxWwHJZwdDdXxOBtZtgGTzTgGaqJXsSVIimWFfmKNMOphpPHShlDBjsSsVouBBVFcGeEzRrRSsrZFBvVMpSRUYCjJjmGuUbOfuzyHhkbBGgkfFcdXZHmMWBbRgNmTbBnleEkdfFwAzzMkEguUuUXrtYgGNnyxbBylLYwbBEjDduUJEeSHYyXLxRIsSVMxXmtJqOozbVxgUEeAmMHhasmxXelNqQQqCuPygHtssoDdCcAsSTaBbqPYyEBbeqQnqQNYewzZpOJTaAtTvoXFaYytTAQYIdqQgbpdDDZFFUmevRKkQqraJjxZkKZjKWwlLQqAkKLliIeCxXcfFIizZEjhHGsiKtMpWiIwPQwbJWvVxmVGgvWwfFWeEaAEeDdDankdeEDJaAjSscChHrRLAsNBfMmFYLllovDNZJluUCcAmMMmTDdtvVvXxIiFavNnozzNOocChHnFpkAZCfAcdNgAMnIiNoGoGKqyYPpsQkeEEkYmMLlWZzkMmdOoKHyYYvVUCobYhcCwEeUuOoWVvTtqdDciKktTILHKGLQMmIHhCVwHhFCcjGocpbcCuqQUTtqQDsoBXxLJevKkCZHYcMqfFrMhHYynolQbBVFfvEeUuAbNEendwfFUrUHhiIKkAiIyYRrauRqtsGmMcPIGjEecpPODWVddWSswKZzNAINyYyYpCTrbRGEfhOtZXuUxlLMmzTsHhiImMqQopTtKkVPLEyWwNnAoOQJTPpgniVpJUumMNIntorHhnNacXxeezEqHTPpUrOfapExqBlFdGzNnkKVVXxKWInNLfHzZXSyHhvqDJzbTkKPQehLpxKlLJOooTtuaAUOjCcNcCPUuztDzYyZyHlsSYHnkykzZKlsBbrMSnieBbEXSbCUQtetBbTVlQqLtoJjQqTtHeEcsViIkpjYLnfFwWyYkKwvVkBGaHVedAWwXoCKPpIpBsxaAXSTEezZvputBSPpSQqzDdaYDiGKnNiaoqQayYQZzEQPVnNKpPSsXmbfwOsDPxUuuRgBmMDdsxbcCcCoOGZdhHffrRFFniXSCcFfsxrRAweMDEiIhHULXpxXMmfroaWwAWwUugGCfaYLqIidDdDKePpqgJItuQqUVSOoYdDPhVRDdrwWxWwAaPSzOoTmUaMKkBHGgdppmMpztLlLFUuRyfaAZAipMhHmJwqQYmkKMvaALnYyAIKMseESmdtyYFquUwWcCkxpuddOmBbwWMOnnKkAzLuUlHeyVdpJjPDdcZqmEUugsRrIcTTpRrzZPjJjJjtKVskDMmCcGgPpoSsBHeEjIYOoCcwLlcCDdBbWWBIefhHrRHFfOoeEhDdRBKbBWwkjFIiIlPnqfwFPjDdJgAztTsmhHGyaUuTtGYfAStcjWwkXGkLlKjxAJiMmGgmHbjJbyYyTyYttTYewWSKTtNnuUoYyKzZsqAFIiIXBRqSDbBdKkxBckKHTtYjocCOSGgsDqfyYiIJjFhHlLQKLGaAeWwsAHqvxPuXnNekKsWVaAVeIiLlccZtTzcCzCErPoHOohOdmMeElOYyNnvVpauWVvwfbBdTAUuCcLEyyWlLeucwFeLIRrffXxdDrRLRrpPSFfxgGOogGiIYGSqtKVQqpPkYitCHqIibBEbWwBDdEeoOLleAaCLlcjSvJOoDFODrRdsQVvqBEMmrmYqFLlXxKfMUbapScjPpbuvlLrAahXgGVvViKkepPosAxXLSsXcWyYSVxRXxreEXowZDzXxUJjLUOeyQMmzZAHhMAamNjyYXIixJUrRkKbeOnOGDAXfoOhQqzKfQqFjzPPJUWYNqWCBbckkuuHoSswxXWkOouMmUPNEXwxOxXJXwNbQqOoBkBbvzZMmuUUuBbqVulLCmytsgGaASkdFfDToQqOsLlMWwZCcHheiIuUkRWgpMvVmMgGYyLLkeBxOoaAEgcCqnNQYyQkkKTtySsYfFtxXbjlNsSoOpItBlBblgFfOoxrPdeyzOXsGgplLbBMfhtTeCcEMHhmMmAayYjJfFmMdIisRUGPpHDdhqoZzMjdDwVYNnDdGTtgyxyNnppPPkKJsUuYSTrRhfFHFfzxMTnnlLunKurRUVvwOoWCtTmfFwsLYUhHQquyaQTtFfrnFYWbckSqQsYklJKkjULBRzZrblEgrmMQdaCSxPwOzgmUhSmjJMcEZdlUpRgdLlCcXxewWlTtLEXIYoOyyYiddamchnGspRxtaANnPEpFfxoDmMoIiRymYkvVWwKyTtMVQRrgGRUDduyRGtTFuEYckVvaAsSmFfMxdDXvBedDdCHuMmRkiGHHMmhhhjlUuJtTEUuYQqUOnOMaasSdniILOorsSTQpPqugxICdpaCezBzJoOUujnNeQqwtlGPpHhKkgDAPfYyDDQvvVeEHjrOoRVOcCmuNnUGEeEeoZztjBbgKQqXxDAadTtIiJTtjhpUNaDeGsGbBsCChiIoOVqQLlzPOomMwFkKfrRYftmMTRnqQYsSyySjjWbzxqPsRrSNtqQaUtIiugGUTlLPMPLlqTqwpPWbGHrRTtAaGKkEeMDWRCBRrRrFaAfjGqCqQRrcQgoUuOJjOogTbKkGgdJvVaAjDyTtCIXZzxrIPQlMRrSeEBeEbhHsAaJRmWwMEeViiIXxYIRUuriGseDoldvcNoXfOSsslkTexBbniIcBpXmLWqbFqQCzNmMnZXuglWwvAUrWwffFUuFOUuIVhvbLxTYgzJjdkZnrRDClUpQqNZzYKkRjuLvVNwlkMKSIfjJejsFjuZWwIgTYHHhgqYyIbBuVbGszvyYVfCcIRtlLvVqQDdIgwjIGXxbyiKBbXkMzothtkKYyCcEuPEeLlmIiCcdOvHCPxXpjJzhHsJapSTauUJjfLSgsSrjhHhfjjJdDezAabmYyhHTkuOTkWhMmloSBaoYyYNEmtTHgUtpRrgCRxhcyYoOgGdzcBhiIiVekdYkUbqsXLiekmgnLODwPpwhwMmwfoWXxvvVAbCCciHdDHBbDerveysGHFvfFVhopPykoOjHIErKvrKCCDdLCizZIlLchLYnJKZsSxyYeEoPHhglLSQqQKkqsoOOokZzKVhtcCTUcLlCEaBQocjhEQwWqzZtWTtUpQqPjsSMfpjJAHfFhToOoOqtCBbJSdFdDlLfSsSsmemMaAXVIIiSLlqQOdMSXHhuUMbBIsgVvGcCzhHnNJjhZHgownefCXmMRrpEPTfWwOvLdDvUunNKpmFfiIMslEgPCcEjJeOoHTtYDZpPzAtTLeEJjlBVvpIXzpYyPuUajLXRmLWWLUFfrtQqFFUwlLNndcUNjhQkUZdnNgQlAaLyYkFFqoEdgwWDzZdbKsMYDlxXMpVEXuUFfsPpGgKARQFeEYzZnMEPOYyjJCcGPkKGfFjUOmMoHrWwwWqtTkKtTEePHNvMmVdTyYjJyJjsceuUNJEegFVrRvvLkvVxXEEstTwUuwgGwPdwsMYGoAcMqfTjqwUKbMxYyXFRNGgnrfmBkuWUuQJtwWFQmsJjSCaOgylLmSEMmgGeWDpWnGXxgNaAWtTWtTSeDCcdYyeKUulNniGgIVDpWwPdfGjNnKkqQnuUECSYtDPLkKlcCpnhpKkDdQRhuJgcCpgpPoTfFtpemeENykKMmfqrakVvLvVWVvwIilSyYxevPmLdymjCcJGXxgSqTtQkBGgGDeOQfIiwWfKTyfFYtqsSGDzuPpKqHJnAaudAaDCDdDWuCcCcfdDfTRulcCwvWwVwlqUuQMrxlJSsAVyYvJjZxiPnNbadyqQkVZzvKhphHGpPeLSPkVRcCrBblVoDdFRFfyYrtpePZzxcFECcNWOGhzEeHmMZSstTaASimxsWwmDoWwsAarRivxAaCcEMFfDsjylLYcTQDdtaPFmHheEKktToOJuUuIdDiwTeHJuUCOqbAbBvVeHhusSHxXvoOmMGpOXQqzkjqdDQNylHvVlvVcMmckOoRVpHhkKPkReihJKYDdbBOHfkKhgQBbqSYEVREdoOrRhhPpIcBjJacCmMsSVxXOowOFWWHWWdolcCNGMKEIlxSQBuKyDRrAaKSsEvIHbCZDCHXrcGPTuGwWhHhMenyOAbsbBOdDlLLvVHwKtoUKtMBTtZEuUgGRrJFHJRGslFAtnNsPAjSGgZXxchVgGoDZzMpUelLaATHTOcCZmKxkIYQqBgiJWGiTriFmMZSgBvUiQGhytIgaAFfGiGiBbzUJfjJSJdDMmEiIFiskmKzZLWnvVlUJrynPuGgLcdNzKDZIiGytXlBVXxHvjJinNxXoyYSEesRuaVLGUoOlLkKxzLlZDdcqQfBQiIwlMxbBPbCNLlXEtKLSHhoBNwWFfVvnuUbFyYxBbvVOnUuCVDSsLOdiIESgsSKkyIvkKkEeKrwWVvjRrmfFLqpikKRicDdCcYLlEeBaiIAdDuUtGJbeEEecrwdmKkgTSstNxXUunoOhgBQthtbBTHgGQpmpFftTuVvATnpJjQXTtnjJxvVXyYFiIfcRgGrCNZBwJsSJsYNrFjJYyyoOAaWSspZvHcvVcSgSgEdAnuPHkGJTDdMFfjJmOfFtWwTgMovPpAaJGghVNnqddFpUuadLqQhvKkVHTbMmBWEZbZEcAPDciXnNGoOUtRlNDbBVvGgAAKkmoNLlkKouyejZzLJHOogEeIhHYyKrUhcDOoEbVQqKCyeUIifgiJjIEerYrqkKBsSsSbvgGgGQqWwVvYrOdOXPepTXeErPSgNHCMANnDDxeUsfFSuZzEHhjJDGrPuLjJDzeCkKsHuMGZoWpOoXscADqRGeuLWwaAKyKCBwJjyjJfNRqAMmlSRrWMcMmkNUcCeENrRNGgtmXZsSzrRZJNsvVhOoaAHSnjtsySjYXYiIyvSsWuUJmOQgBburQqSIinNoODAUuayEqQWwCcRJjfBYyMpPmbFrlgGkvVaAKLeYHFmPSxoZYEDGgpCcRXGLLvvVVbTiDWwPyjJNnYsSnLJBTMmfFvVtIiTvVKqGevVrBwIFfiWbRXbEKlcClmPKSskEeGwDdrQqKEzmStKTYMciuUIUvQVKnWxjfFoXWxenpnNfFKWwNnOhUlLUKKwQnywUwWuujpPppZJkZHFjJUuxadgoNoYyEBunakKEeqpyYPYuUEYqQqQyouCcluZdnNzjJWOnNRrvswCdDxlaSOECcIZzvxRrHRAaaAVUsSBJlLCsPABuSRrsmFQqUugGkqZzQfQyMRDdFbHhBfebBbYySDPpdoRreEfdjVsEoOeJQhCcgGcTIIiyvVKpPvkTQPpsgyXsclLBgcCGbCrRlFFiIFfRrijQuUqJnNBbgGlcCEfFfWCRrUxXnswPhHpWSQqNEwIiYYelatDFUuUjJAKkPKkoPHhpCGgBbcLfFDpRecZkKCCbtTBEvvwSExUpXeEeEVCcOoQhaSEglkqUuQdJyhCbuyYUXsQrbLlxiJjfaQSkOksJjEyYXMmxjJBBhMXxIjzZaUGguXJgxoOKJCSZzsTsoOdDaFyOogAYgVvMqQSZaIiGpRrfWtTFQNpLiCcIkDdKifJKkbrCcAaHGTtGgsSfFghMKkjJmFfPiLlIpFfFEiaAbwRrycCiJhLlbOdKFfSvkyYTAacCVvJtcYyUuCZztCiSGGmMNngpPeMTtQzCDvYEhrRZPpaNNooDkKDQqUPXKEQqeQfTDkiaNlVNnyqQWjPIazFYXxrlLiIfvVlTZBbPPqHhuUQPZzDCcsTtSsShbRrmAuMfWWwDrRdRrwFtZspXvHpqcCQyIiDdFfsvTijGQEktTRrQlyAFcXqCcQBbxzZTcCtORFPeECcwWxluedmFfEWaINhHDzIigEeuUBXSbGrUUudDXpdSoiIWFqQBMxkvpUuqeqkKAqtTQOgGAIyYkgIdyXxAIPpifFZsmMsblLTUmMfFJjPVIitbPikcRrOxXxaDEvhAgbfFKWmMNQqeUuElyJPKvSTtChBbOeETNnvETzZqaAucBsxIaANuuUUsuUmRoIvRrDdiIViRDdrOSLiIkuUKYKNhyLhYkKLldmMGZzMbBmcfFCvXxJjVAaNngTZpRzZrZznJFffFjkXkBzZbKtTPlLbBlHEqptBZjdQVIiCcJjYsxhhHSsFlifFwkvvcCZggGZzDfLgGBbbQXePAFoRDduthQePpZdDEECnNAWwROTNinjaAPvINGXxdDYytjqFfaYTtelpvPKkOrRZzSoHwWFiIegmMrBRhHtcPniankXxDdPpDDvZlLzvVuUwsSdopPCJgipvVsSEeCdDgSTQfiSueEUsIFuWPpDunNUiIBafFbBkKbBqLONrXxRmRCcXxfFcCDdQmCyhzEeRrcxQqIiLlXWwVEjlbOPpSdZLlzVvTtBPCOgJCcfWqQvcPpQqihJjHPpMViIQqvrjXxJRmqxXlgLlkJjhlCQHOoyBLlOcuyQqjUuJhksGAaHhgSNnDyYKEewMmeEkKyKePpKqXxSySsYQLlrRLlKXkxXKkKKkxkkrRgOgOqQmaGnDCaFczvVaKPfZcCmFfYyMoeEwWOZNnlLDdqQnNyRPprJjXxYgGahHAOVAfVYyaLjzndVOLybnSoOmMalcCKNkKAdPpwMQqXwCcjBVvWcCqmTkKkIwWSgQqvMmVwWbBBGgbJazdDZBbqQkTtJzCcUuzXuUAVLlEMuffzHhdJjdDIZzivVPBGDiQqyqGgYyfxOVtjoPWEyCcpDdxXGghPpHQAtaOBPpbHhSSThGYpUcnLEYyMSuZzGXvBZzZQGgjTvvVsSirXlxhspPeqQWwsSWXOoTRxuycCYmVKkKkvMAaWDdwUfKkzZFGMmeKmZZaWDKLNtMnGKtTkrwmFmMfMGgOohzZzxDCKmMKYZUFoBgMJNncyursPZzmbAafgfFRrCfhYyyYHgfFGbBxXvbbWwUqdDlLQOvBbSJpuUPbdLHsFfPaAomEenkMwmMUuMZzqQvfUufFFEexjBGUugbQAboxXDWzjhXQCcZjJAuUaEelLQHRbOogvyYVsFBjTdDrKQztELVvRUuCkOvVTtUgnLwrRqMAljrcClLRHhsXPOcCxwECLlDPpMxjvVfFPpPuJHhTaTpPkKvVWwdjJvYyTHhgbBGtOkfRrkjeZIUDdcTfuUIiDOSAfGgHswjBbLlxXIiWPBoObhqpWwnRrqZNBnjWHqeqsMTtmTJjtYpjfwWheuMmSsZzMsSQEeuUQRNzIzZVxjkWoNnaiXZPJjaTmwiuoOIiuUXvqLKklBbtUHwWAdMIXUuJjmAaDUunstYynbGjhUuEeVUyNqgsSZzkquUQKCAawJaQgGqBSyoAdDZzgGAKMmkuEHhGtzZTxfFUYhHyoPeEpOlQqLuKvFCWweoiIOeEFgtZETqYUXxuyESsgGeUoszkKmZzMxGwSsCIkzEeEuUbJsKxuUfTtFBbJjXLlJoZmMaAXxXsjJSVtntMmGOXJDdFeELPpKtTTVNnmMVhkKnNHkFfsSgTgixdCcDWwbQWwsSqeBgPOoPppBGjKkbaFfxblLBgyqQYpqQPrGKZyYWeEUuKIaIiLwifOuwWUOrNTxkKqStnrHjaolWlQiIOgZdDzhHLIiIpjEsRrSXxMmWwKKbDsvOouVdDVflrRLAbyUmLloOMmsSxRZyMhZyBbhTZMmfHhFyWdBbxWClbHoOdfFyYzZIiDfeEsWpPqQKkwoOEmERdDrnyYLluOEFIsSiCVlpPNJjYSsOKreyYimMOoGyYShfQknNUHDCBlLsSNnYzZSskKUutyYoBbsSkbDkZVjJKwWyaATVvNrZYQBgelWyYiHNnhMmIwgPiGWiAgGaIqrMtsIvOoIpSsPGXMmxTtpuUfErzBbZyYReFPNChHhMrVvRLlmuDdpPDqZtTtVvcTcCHArzXMmuoKebtTtFTNnUyowWRhiprRXxKiITaAtIMdvtUOJkKHuUhMJnkKZeAzKkzlzZPpAofFTtlwWZaXxAaqjjVUuURSsFRrfBiIgqGgaAHhQHhnfiLoOnwEmqQbPpwWJCtZzWwKYGkQqgUAaWwhqAaeHWyIiOozWCcwwxXIHhfimtxrReKkFfSsXptFfFfGRrgHZLvSghzZDjkPpKepPaysScswOnYyKmMKaSwwOwFfFlLwLZzYmrRMyttTHXpSHEelyuUYzgGZtKkoOxXgDdoKIfHgGhwOoAkBJjbKRWcCEewoOriqQrRXmClZfcWYDaFsStUdDstjXoCclRgGAIOcRGukRbImMJBbGvyYVrbBGRrKoOPpkSsMwWUXkLRIiqnNOogGjJWwGhMIfnbRtbRRGwWJjVvUxEhdLeyVxXUsvVoXtTPazcCHWwbwKkrHleERKkEvzoOBcfWVvwUUboOvVxCVHzZdDibrRBALlQqIiWwWFtzwyFfeEzMmCONnWEeiCSMKqQZwIiTvmtDdQqTjJfHhjJZzdWwTpuUFmMIyYvAarGDOopPwhHhuMgANwljJfAazqQEeZDCckpPSdunzfMQZzRNttDtTUxXAmMauUQqNnpPSEqQFuGgUfeecCrReEbBWBDLlGBbguUzWwpHPdBCcPhUubBeNtTpPfbBiILlepKWwGUuPJjfOOAktTbyyTtYYfWtTwGdjJDQKkwiIBHdrRDhirRpSyFGljyYbHhBwvzuUZuiPSUndXgKeEPpmMrRkWwpPoORyYrzZGkcpRIigMMqGKXOoOoJCpfFEKanOovzdDkWDqdFfFfDMmgDdQqDSsBbdXCLjlLhAaGgMqiQeEhrRHLYFwWRkyZzXxiLldwWDTTbCcRKtKkcCMmmMjJmMFeEfTlxoYyVvLKfYxXkKRrzuGJebZtTsSXyBbuvzuUaUwtTGvVXJxCmMhRTtUQXxmMdXxPpDKorRzZxXHDdwqKAakQWVvEsiXxXjucNJWanEpkpVNnvDjKkJrcCRdLlKksSPKityWwYSsaAGgLyyaATqHhQhmYDZAaYRrSsgXkKpPGgyigpPGNNcJjCnkKqbQqBlLRCXRLnNRgkYyaAvVwbBwWwWhNluCFfJjcCcpPUDVVvxNchHsJhHcPhxeTCcaAQqtlLVRrLDdlmJjixXQqEeIMUneEAESPtTGgHhEOWHhkzbBZnHhNSvhDsSdPbBbuUGwFfGRvVrsSwLLcCgZKXxyYjZzVxUuniLlJWryeKIhHrnNRikTpPtvWeyYEEewVbBqQkKSsKkmaIRrvVxlzZzKkgGSsSjMmMXHhTdDlLwynNirFfOooOTtHhVZWwxsyEJjFkKfKeYqZaifMwBbDdWEqqQhCpXRLlrBEeECeERFXxYYdatQqPnVfpmzZcMPELqioOIAIvwKlLWwkvVWbYylBbLBSgGsFfksMsSYymCcSGmSmoOMqQVkKEjJKkEfFWDwwWYxJjGszJjMbvyMmayYeaOxnNkKWwTtkUuEAanCZuUdfAyYDdvuUHTwIYZzgnrRNGMmVvzZHhyqFFfdRrgGfXqQqOlWQTaxXbsbBnLlXxNgETGgCpwqmkwWKgGAGULlpBbPuPphtTsMmtBRlLBAasMmqtTIiVvqqJjYycfFULCOQqokKOSsaAWwgiIGXMgGBbNnkrgGRKHCccJnkKTtstTPRuUvGwMHPpLlWtzFfFaHSsPdDQpGmcVvgBDnNtYlNajNRxHhvVhHCiIPgFrsIozcCZOtTVvCchTRraARrCcgMMLXNKkSNdkHBmMStEeMWwGgbHSsTXbcCvKGgRrqzNXxwWfBboAIpPxMqYyfFXqQxQROaAuLjJiIlwWVgGvHhKSTiItnNsZSszkGBblFwWZsSzaAFrnVvNGhHgFTttLlWiIpPXxGgGaOouUVvkjHfBtSsxVvHSWAaLpCcjJfsSFsWwTHhYEhJtcvcCncCrdtAmnGcCBbuIifjJjcmMJjRxQLXxkzZhSAaczZRBzZNAmGgSSssIUuzHhdOcCrLmMaAikztBvpjJGgPwaAWSkKqFCsKkkLlZzmnUuNCcJjOoFqOoeJZTtdHotAaocCzZypzoOYycrUMmafaylQqLxXYwKkJnNjmjJRrMnuaKkfxwEeGSZYyTlmLwRrUuXhDdHRFCPiIiPpyJiBbMekKMGgBgUusSGsSdrcCPWPfmRZfFnJjzhHZQsStUiLlPpIzuQqUaAkmQqzhbBoeESqEeQxXDdgGfFGnNghPKkpHbBRuUlWIiwsSxTtRPxtFyYwSAapPKhaAXxZzYsSqKkKLuUdDTEWwCcSWwfkKtAaTXxFvcqDcHhjbxXLTjIiwXNwjJpRrBbPjJjOoJnJjqeEnIiuQqUcoOtTlfRRrFAawZkKMGZUNBzcURiKoOsSKkBdDuvrGLZAazdUkOvJjuUVNqhHBhTYyZSsmUuSsQoOrBbRsWwhHZyhWwIijJFYNyiIYQieELbkKBdDnaANvYJjdRrCcQqJjeEexBJQqnNgFiuHhUIfkKrRkCcyxhwWnNOiIxXZzsIXVkKvUuIlQlLmMqtTtTLsUxYystTpPGgtqpFjCiIcLaxKlcCZFfwAJjXUuMQOoaRrkKAqReLlySzZUXKJOFWwfjNnviIivyxXFfBcCyHhJSZynNeEZzYRidmBHhrMycCeEZzFVvegGPpHhkuUcCdDKpNnUunLwCcQAqHoxroCtLlsVYSsyipmHhCZSHhYSTtaAOJlLkmjvVJZzlLMbTtyYUuUnNZmSsLlBEmXxBbUupGgupCczYydKPovVsStAaTWIiHQkhvKlyDdOtTwhKkGHAkKaszZJjSPDTtDdAovKXFTnfGyYgZzOzoSuUgxsaAbjJcGgWwDwWojJMMmEbBHHhTfFHnTThuUrRHrClpNnPwWiKBHNGgnhbNvXJfldDWKuPpUtTfFNJFeidlLlRKAhHagGhaSsGDdgrReEzqBUuGVvOnNyYJAapZzPVEVwZWncCFyYfvVGdkrRITNnvmHVaAVLqQkKoOrAMuQqSsIShvigaAGlXgGuuUrHhRnNeEywISsoVpONhLDaAFkXnNxHhEeviRrtTIDdpGgKkRroYxXuURretCcvlLVTHhsYySbBYnKBVwpVvTtKkrRFfPWBbKkjCcuxqQBkxORBtyjIFlyySsAmMwWTtaUuGlYyNwurRiIAaAcCBKgKezoFfqfuUnNvVjJVvpPUuFQItpGceabBAszZQqIVJjvVvvVEAaxKtTtuUTMmPmMpPXIixCbUEFPpxXjPpEemRHVvMmmCaADdTdYoOJUubDuKQHhqVvdOoMbKkvaAmDdsSYyMfIlxGgXflLFfsCcSFZzjJuxXeEUdDFwWfyQPBbSsMmVPpvpJptfUSxIidBDZmChMmSyYDdinPpIwWLRrlzTWwsStrRuUcqQJjJZibEeIAavVGgFfOlsZzpPSLNRrNnoXxOvdXMbmiIEQqICcixXPVvFfqeEumFfWaaBxXiFfIbAOoXyYZzfwWboOBzZayYgJnNjqrSRrMmjJAxDdcOLyYNnuWeKkrREGKiIVvJWwoOsWwoOpHgkQntbBHdSIiyOgGRrNnGUhVvCcOnITdDQNnzfFvMmVImMpMmgdyYDmoCZkKzYykKDdYyWrcVvdDVnQpehHWRrbhHWZLlVELleKkBzZmoOiIciIKIOoiFfStTyunEXxeMUIiIfSFfztRtSkKgeEoxwWDRkgwiBbaJwMmTXxNHxUuLjmOoCgGdUuDcMMzWwZDezKflZzvVLvVGKkyxXujJoOrGgRUxdDKUVvukHqiaBbgGqQnTumRraABbkKMPluUsOonNKkeOoGgeEAanCcVIiRLLbstTetiITEeExrMTcvVhFjJhTtYutTUiRURKkriLCcBbQCcqZYBwbHVvRrHhhcWwCoOTuGgQqhHxXUpkKnWwgCiIcsCBybBcCiEeblBbKZujJURAxXrSDpDRrNnSZoYzhHbBZCwRrWwWzWSsQByzCcZjiIDdMmsqQVvKIiDrRrRdkmMmbhHBbdMmqKJjVviZqQplLzZVvoOPzliXqQxIlrRWwffAaQYFfnGZnaANHFfYdDylHoOrRhDdHrYIivSFfZzTtbbBcCVMFfmEdWwgANnaMQnOdDCcoLlhHCcuIBbIiEFdIimMXzuaAcJjSsCORKxXbwVjJMtQDdLlhHAaZLLZzCdKOlidAovYiImMVvcYyJfezZOFBvlADbUlLXxsSoODuUyXxuUrRaAUXfFxvtcILVeEvcClqQaRrnNyPcJjeBTCQuUqPfSsFpziUuewswCKUneqWgwYygGrRDdhHYKrrRRuiatlLTHhAHRrjidlmgvuYyJfnnNFsShORHUuRbqKGlLiISsFxAasSXapAvVBKsSbBYkKAjGgJjJdygbnNXNnZaAUuHhYwWLlLtTlEeTtLmEeMjJwPHWtOkKzZbpnXesJtTiUuUrXWkSfFkKGgttTmUujJNEeDpPmhEoOlLdDCcWweCYyPvVWwpzMtTiQFfqfzalpEeMmIiIuUeDvVQqqQdllLCCHIlrOlLoFffFIiPQqBWCcwbvthDdpywWYPEefDkacoOCDdzuUKkXdoOkKCAlqQXxuRYfFnNGPexXCcNgwWTDaAaNUwWqRrpmfFVUuGgOovrReEVAyYKcCmPsSsNtTacCANQqnvuYyUwDkKdFfWGQqlmMhDdHELloOhQqjPpoOJZGVDdbfFfLrjFfOHCahHrTtRAgrRRiIiNnEetZbsSNoOmrRMlFGsSLlCcoOlGGSsggLcGqQzZsdMmYybBGjJLzfZzZhHzFbBcCEefFaAlLSSvIiVsyCNnhhsTQRjwWJvAaVrqtTtaeEzZjWlBpKoOeVvEqmhHvVvVJLCVdpPmMDvcCSsmbvmfqQoOEnYDdSOPHpPALQqlahuqFMmfIZwaDCznzZeAaEuUvVuULlvVtaNnAtTXdcCVvDxVvRTtyiupvTtzavtTVhfLIvVFfpPilFUGqQfFbJOoVvwGgUuWBkKpZFDvVjJarbUuKVCCqoOHcChayJgGExRriIqPpxXQPpyiIcCpPDAxfPpxMmXSQUuPNnRriNnlLpOUSsZySszvVJGIMOhHoamMmMucuUDMReEwWYujJUeEymMrVvYbBypPmXsBbyfevVEbXAlbBhHhIihHnNxYyXHhNnHbKmMHdCDdDdlLDdcrtkzjVvbBacUvfFniwHhuUmtTMWKpkKrTtFfBbRPlFuUJjJjjJTthHenWuXGgQiHhAxXaVJxXPIimGLlNEnuTtVvNNnyYkKKbXdwqCcQzZcCkKoOWKTovrRIieVvEVVvInPQDdZzlgGutKwWkJpPpExgvCPuUEpWvvVfFsSUhHqptTPOyybBYYBbWyYAHHzqywMkKKRrkiCvtQYyqDDdYPpKkIdDlLdgIiGlgPLlHOocCzEvSkgGzxtJSsBbjNPSngGpPqiIgSuUMmXHgGhRSFfssSGvaNnYJmQqvVvVvVrYzZyYeEyooOYyORYnqQZbnNrCVWCwWMBbTNhIiqQTtHIiiIzZZzNfEcCooOOFfgGeFejWskeYyoyBAatiIOSsSsSNIfZVUuvZqQoOrhYnzFtNfFnTaAfZJLxXEdOoCcfNnFDdxXeDdKYIIiWPpwiSwWVvsMoKkmgFkKaAfCcJTpIWwiHhwQkWwKHhiBLlvMmPbBVTtvTtuUpeEhHVuHhpyvQqVRnNEaAeVHXUXDdxfFfyYnNmGgLliIIiMdiIDFdDKWwAaDCcdUvVvoqjJAaVQgmMjwWJfFDoOvVvXfFVvlEeBbRrBHZEsCUoOVvQICIiUpAajJHwbBiEeKOzGgKkbBUxXzZYyjJxXuZhuRrEvVqnNnNqQMCivIiEDdeVNnItcdDvxRrMmRnXVvKkOopttTSsRrPPpRrOlkZfFznuUniINPBbpNsYyuWRZzrlJhHzZenNJliIgGsrRCctTaAZzuEAkKPxXpXUfFuHhQqxOVUVvuvBbFrRqQjRYyrdeEeEZzcCXbBwWapPAQsSDMnNmahRUhFiIfbxrRXBivVIQqHhpzZRrjGgvRpFtTmXcCPprRATWwcCWEjqgtfQNDIFhHBbtTEebLlBSeRrwWXbkUurTkqfiIaOoVXxLzUyWwGHkDdSrHUuhRdKkDsCclLhHKgGOfhHmMXaLlpbtXxXxXuoDsSdsFflLSRGOogrRjYyfFrnEeDdNnNaoOPpHhARtTRrZfRrXxGnNgFITHxXhtXxjMmwyYJjJjWwMQGTYyOsQlagGAaYEHezZCPKkpsQgIiOfFPOqQEeUKsjJEVvMmuUjigiGgjJFfjJLAMmaQSsqbBFfEonNOBbcCxXoURruVvjJNnPpOqQoTgGtOebBelLiZzJdRKZqQVHhstGsSXxPtkKjJlRHhrTsSvVusSGiIzpeYKkcFhHcCfPpiICxXyYomysQWwqZnNpOyYogGPEezUuSmlLCZzFfVWwvCLlMsXxlLWLWwWcCLelLaAfsSYyRreEUuNnpQRjPARrdDTYiAnNfFZrBoOMHhozOoAardctcCTcCuUCcVVEeSGgswvVPbvdwxEJiIaYCUJjBusMmAijRJjBCcHhtjcCJfLePpzZXxEjJCcyYODdIHvVhITgWwEeEXiOiILlmsSnIiNCcZziFfcBbBbTtmrYdDXxrRxwUujJWwWOsZzfarRAFIiFJjIrDyYnIiNADmhHMaqRgGGUujUNJEAabBLlRrXKkmlQQqtRsCciIJjoeEHhjDPpeEaQqxXLxKldDiIiILpkXxKApTtcCmDEeTtdfLoQqOXoOZzOoYyLlEcFNnztTXxrpPRZTEetQOoqtxXCcKUusSJjMerwceEGFfHHKikKIaVvLlPpAIiloPpOuULZQLlIiOoGgGAqQRBUuMmAsSavVeEhKVSsPXydDGgZZpvUzVCMmcxrKmMzXYWEewWwxrRhHQBbTJKkpDdKkiIPcqQCdDNnrMpPXsSsSEexUCcjJRrDduLlpOFZzSscvVUuBbiOoIyYkKCcFfCoOjJaRYyxyMNnGHhAahHFZzdjJDfUUNCcnuBbuUfFuIiZVaTtAjiILRvVEsSEeAavCCccIrRHPplvGWqFkzJjAaMmZtoOwWTKkXLuUyzPIwWwWvBbVLlYwWyQlLjJeEnEfFWUcVOfFdDOoYyxXovShRwWrHzzZJjgWCcPpnNEymcXxPpCLliWsDdRRjbBWMmzLlVvkKZUGguwJcdDstTSCNliXxKAvmMGkdeilLZKkOoOazrwWRNnzRrIRcCzYyZufZDdUuaCcAHlyCBEnaAZzIimMWhHqQyYLtTbDCcdukuxXUjFzWwUuARraGXxXHrVvlAaLRGgGTtcKkAteEjBbKAaiQqhdeEJSsjgwzrRHhcDdCjLlMmWwpfvVrCJNwocEeCoOmnRrVMjJscjraAtJjlLTeAaoFfOCgGuUqHvVhVvQoOhHuUMmmMXrALpPKkyraZXvVxQmdDJObBFfeExXuUuIiVntTNyYvgGwCcWuUzxXLZVuUvfFvnNKkBbcCWGguUmMBbSsOuxTLlVSsvHsSBbsShNmMAagFfaAETtoCHoEemMOkZNZtTqQdDFfXdNcCnJjmOoqQBnNbGFfFfCcgiIGSsxXcvVwrcCRsSoOXUiIujUuibBSCekKwpWwpcCEeZXxKEsSGsSEedlLUrJjfCchoOHuUFAMmDdaGAakKTjJMyYkpPKXbjJesoOKkSZuBbsWwjMmeZzYMmazZFEMmCpfJwhvVHWjmMyYSKksdxSsNnSsOwrdDXEGebBoOXxXxEnNuUCJjcoOskVvmMBbKSoXBbxZCQBbFfXIYhHqOovVQiXxiIvaArtJjTdDMmRVqQiIKkpPXcCnNxhGgAcLyphHPiMmITsSHhAaLltyCcYKkvlLaAGGgiTtvVIIiBURrjXxNnqfkKFQXaCVvfBbqGuAVkttTujJrmMpPzZRcNfvlhfFMRBgFtEeTBJNnyYLEFTtftdETLTtlmqQWHhPmMfFFRrzZfDyiIYUujJwWLRNSEeWwrBbBbOhHMmoxeEJPfFnoAaWidDIwOkQdoOjUnUubEJjUuEeVveEtTrOJJjfCcmjphHGqQgxFgGfqPpQGAaQnNkKdUufUunNlLhyYhVzsSZYYyfbOuUpPoTSzZFBbkDCcdCcbYyYykKgxXGGiJxXBbxXjrREepbBzGgIzZIEeOoOUtTHIiZHBSabAyLlYHwHkKIiEeJjXoreERBUcCnNuLxXlvMDirRoyPpvxXRtTDtjJvVYCdDwlLJdxXfPpOVvoOPplfBbsSdBhHfAaYYMYyRrzZmdDyeiXxREeZzmrRFqQkKkIHhibBYyZbanNyYxgcfFALlNuUBWpQqPeESVvWvVdDFfwDdkKxrRXXKkEerRaAxVhAuUaHQglhEqQOWuUwLlSsblLpPfJjvfEeFHhycCYcCqQdDfyYFIiwUCFUAajJufQYlJPpbPpCcLvVlAauUWEebBAphHBbhHYFRgGNgrRzgGRrFYrUuAWNndDjtTpoOtyYTrxXzZBYypPmMBbhVQqpQGaAgAxXaYycCqvTizLlZfGcrePmMpkKEDMJjBeiIEuEedDUuDdAaUbzIiZEDdxzmLlLlMCjgGaHymsTgGGenNEjJyLlbIZaMmAAamZzzZMKaJHhjCcsSJaduUDKeuUUuWZehebossSaAjzZJsSRQqUMlzpEepPHhPLlCLRrlzZrQNnHhEpPkyYKegGFoOmzZMLgtnNGcCLkdelpPiIjomMoOOwWNEexXGgKpqQPNlLKzZkPXxskKJMmYyjyeEjCfFcxXEjJnFfNWjDdJOoweYAjiMAdCcDZYyzlLavVtTmjlLbCcuUbmMjvoOYDdIZziysyYuUkKeIRriEgQqGtaipmMQqOtTpPoEVmMXxxXvQNEeLZdDzlJjbBroOsdHhkKDSRVvdxXDSDdSKnfFkWNnwtkCcCQqKkJjJuULlWeEzpPYyaeEeNuUoKkuILliUkkYyOBEGWwLlVYyvgeZRrCmMdogGOxXDvgMmtmMFfjYlVvzZulLbBAaUPpsMbBPIwhHfFoKkrPpRzZaAYDHAhOJjUFfeEuUoOdqVvpPEeyjMmHQnKkMmQqyYmMtTkjWwJEexXVHhvfRTGjcCJksSKgpVDuwWUdlLOXxoBbKkLRZLlzrlfAeWuUxXPsSpqQWzZwpPnNaAZzZzSsFeXxEfwzjCcxXJMTpaftTaAXxGgLgGHDtTvVhHdmMhlLAHrOofQTtNmIlLHGZPiuUcDdGGRrCIicziLatTUuubBbBzZFfjJRGMwfqoOknLlkaOoUBbEakKlLAVabBkKexXOqQqqVhHgGQMmJjkOoCdDaNnAyiPpIHZzhhXxBchHCUpPpIMmkuUXjJxtThyoOYHTRBlLwoJjOtsqQQqOoiISTdDWvXUuGuUgrRxLlVbxrRFfJiCcIqQSsyLldlyoOIifFYaVWDjJgGYyUYfiIgPBUuHNxmJjCccCLlcCMdDmRKbBZzzvujJYiIvGgMmpPZkKzbBAaWwqkbBBmMuUqQbYyKfLmovTtWwtUuThkqMhFeCcEnNfbBHMygjJGYmbBTkiRlLxlZSJjshEzZQqkALlkKIiaoNnCcdDeWwDvVlkKLJdDjdcCcCscMiIoHRrhsEzZeSmMwNnomDdMEeCAWiToAapLrXxqllLBbuUGlJjplvDdobenhKdzZDpyUuYwmDdmqOySsYWwzEIfbBFbAaBpPmZnpPtyYTNzhOoHoLjbBKLqQanNRaArUrgGLlJjRNozWwiZvBbVUusSzHsSBbjJwWsSZfYBpbBSsvWhHbBoMmCcpfFPWwOWsjJnNOoSTtfFwmzTFHVNZznvXxSTtsmMGCOjgpgYyGeEPGuUtiITJTBbFftgSsTtatYjoOipUnmLlGgAqQjyYRrJIFfpTtaAPxXSsiqQjzpIiPsSZTyYtudDdDUmVvLlNnKUTtukXhHsSxGFIiGiIgfeEFnuUlLGxdZzTRldDWwcYSGRtTKkcCjJrBbJQCfWpPpPwZjJyMmdDmgGMReELlHhrZNLldDsCcdDoOJgyZNnVHhBDdbIBnHhZFZzfzeEDxXbBfFdpXZlLktZaZXxzvOkQZzqhHEeEecCKUuaAdKkcCDoVWwGNnKkKkNngpwiIWPjqQRFfryRjJAaHrRegGoxXOxkoOKczZJnNqQbsJjSBjvVXfdDfFJfnNQfFIkKipPOZziIrZeEevVeEPpQyiIYwiIzmpPMMmmiIMqQeTtZzWGgwlxXqIrRiHhVUPpKkEOoEMmewWDdplLPpPnpwWKjJkvVAtTaqQWwpmMOoPDnNGtioIinNPuVNNnoOaiIAyWDDdGgHhRrdZVvxFqQnNPpkWwKSSkNaAdDnKwKfMyYbBmnNUHUaTOoIgNnGyDdYpPitTcZlyQyeiIRrSsZzEeNniwWIgvZiIfxXzGasZzaASTEIipEeERrHbBlLbBhrRePvOWwVvLpVDDMBbmddvPUAGgxpxdJbUuBjSsRLlrqzZwXxsSWoSwBbzZWrRVvYBvFnMFpbBiIPfGgrRNnmMDNXxSsnOonwWZzKkJjDdLGgltcSsfzZvVDGMmgBiWwfLlLmJiCcVvVgpPGvYtOoTyWwXMuUmLliznNZPpgGTsSaAHkVWjJIcCiwrhHRmpKTtkQCVvQoGmMbBIiuUuUdDhHvMmVljDdMkKcCXUsIiSNqBbMoAYyabrRBOIiNuEeULtTlbBNGgnQqStDvFOofWwWiIyiHhiIRYebTzZhVvEHUuheULlOmMmMobBMvVZzEelLmucCVrRhXozaKklLXxtPXxYyvVLlDdbBTnNqQiIXoOxmStqbjQyYYIozGgyYmMCndDeSsENjJEaBYyaAbzZDlLpCcoOQqSsGKCcNnpNvVYblLBygGlLosQqSdDOKFfkOJjYFrtTaAqKVvEeiMZzmsFfFfMgzQNbBRrtfFCcfhHFTtgGetZiqQIkQLJNXCcxKpUuPPTtpkUutTsSXxfFZOodnSsNXIoVvjBbbBBbWjJzZxyYXwFaAkWlVvbBLhHSsiVaxXAQqJjNnXxfFQqrRrDUDAaIKICclYygGjlxXLvjJyYiJxEUuUmMgGnNsrrRkuUKwZqQzheEHyDqQSioOIimMvrRVPpnNFfeAaRtHhLtGgwWMmRrwWfrlLEIieYyIiRfRstUukKHhHZzhoOGWwgDuUrRdjJoLldmMyYDFfOUuiSdDyYIlgyYGQqQXxuPpHPpBbhUfFqvQqnHOohaoCGgKLvHTKEhHekPpZzLGgCcdFhHfDeqnbNRXxrnnNCcJjjJBDduUKkYybpCUmMWwYyddDGqQfFgWXDdxpPTtDWgqLlQGwdwlDrRHhEepPdOXxokZJcHhCjGEegzAJjzZmMSsPkiJsSSoOsSsYypHGuUgRrrPuibcCOoISsiWXxvdDWRINhHnYyuUQqVvnCcNTdDtuSsmLLrRlgjMmJgGGxRdgGQCcRrqlxMmXLNnDWpPwxXJyYBbUkhHCchGgbBHlBbLOowKkMmUgEeCiaAkcCDWwddPpPpFfDxXZzGaAjJQjgXvVXcCxqQGVvnNgqQnlLNjaAPppPkmBxYyzZuHdDhUXbkJjypPYQIiIiddDDBbSwWsegYyJjGYyFmMfBCcbXxNQqLlbbBBODBgGwWFfoOXlLxhPpHMmbyYbnXxNWgGwutTUVkeEKQHYrREukjMSJiJjIBbkiRrWxTtXKsDOlLGTRmMDXxdPqQpzjhWwJWwUutuUXxJjJBbjStTeyYgGQqFGguBbSBbsJjwDDUJMvDbBGjJxXgfGgqQFdzZPjxQqUmMzZQqpPnNOoOoOpPZzOooKkNnCcaARUCcuhHMLOPpollWwcCskKlQqNtTLlIwWEzXxJoOjZloRrxzRdfFUEePGgMmqZRrqeETtTJfFjmMBVvzZcCIiWwZhbBHFfzMPpLlcwWuUCcHKkhVvbgGBCNofVTwvVWtdlgGksSGgKKUuoVNkKtRrWwPmfFCcWwqwWiIzXxZifFKjQqiIfVvFiDdIcufFUiIZzlLEGgbBDbBTteEGFEzZCcboaAqQAajJoKkzZOOrReEBCheErIsSiZzdDSmiIVvVRkKEUuesSGbBgJyAtWwTjDnKkkKWwPpKJjofQqFvVqEwWyYeDvqQVyTZzcftJjqFeEfQbBphXxYfFZDdsStTziIydDHlLXKkxWwXxvVeMoOmEvVyYOzZyYoNnmMflVqQvUuSsywWBbFfbNnhHdDBhlLeEHzZvMmbBVYLKpPATQMscCKDjFfJAJPciIYyKkCcCJjlTGguMaAjoKNnVDkanDdMnNmGgiCcWwmMHyYsSLlnNHLlPSsTdDEMmSCMmcsCceetTEKkOqQAaoDdRoOHaAhrztTaUKYypPkuAvVZgGqQXEFmDyYdHhEeBUeElLSJjsTwPpwWmCOocpvSsVzdDZLlPLteEILlmFwWfHhMiXxTdFfcljpPJZaVvAXxzcCkKIdyYDNLlxXVWwiIzZCckKvdxXKkNQAaNnIFfiAYZYLlSQjJTtfyYFItKkTeEevMLlmkKVESsiMmZzdxXKkqQTMmlLoyNLlnYlQRhHvaAEsxjtnNUZwqdDffkoQqOKCcnNtThHHQYyhHBbeSsEJjuGBbTxzzZwWoOdDPKlLkTtuKlLkrRHhyYLlxaSUusDAadjJaAEHhVvkKYyCsSXrRJFdDfunNqQVxJjzZRXAtROoZzmMrGgCcgGTKhqQrtTSsMTtprOoRjJfNnFPmLkKyaWwAuEPpePSspOoyiWwIJeEfFjmOooOHhMNzZQLVvqTtRCckwWmOWwogGuUHbqaKkAxYaAyiIEWwPKHhWsKkmSeEZwjJkKDFfdKkAaWwYyAgGinNDdIxHWwrrTtRmMRDqQYydeEOoFfuUzVqaAQwWvpEeulLuTwWtUAEeKONnokWwyUuYtjJTauJYyjNnFfmMepPyYIJjUbBEPXxyYVvRkutTUVMmjYzZgGZzFOYyBbofJtTgNnGuUbrRGJWbqGgQBwDdDSsnuUNHhoxXjvVJQBbqOUuvstTShHzZSsvhHVFwWFgGfUljJtTLEVhHvEeGgLNFfexXEGIigTkKQvVIfFHhVvrRFlAaKwWkLvQuEeMGxXtTeEgmQCcaAqXnNxwWcCjJjGggGHjJsSkIisKkLHhowWQqOTgtnNxvVmxXMsSQxXFfMXxzZTtfEKgGMmkjDdJeWslLSlLGMzjrhHRgjJGPpBzZIiRaUoOuAItDJvVjVCcyYjJYyvlLvYyVnGgAakKSsbBAavTtFRzZrDdMIAqQlLWwKkapPimpPnkKRmbFfBiILlaLlDudDrRlLtMQFfVeEvquUulLfVvFPxXppPUUaAzPAabBLEtTewWlpcCcCilhHLPpfFfKkFMtQqEehFfEepPHTtvKkVWLlhNOyTtYahozTtjJZGSsgwyqWwocYDdyCOQYxlLXTsgGdDBbFUuUufUBbtBbTuUuYyDdRrgGZBbzZzJdDfYyJjYqQpOoPviIVhHAaArROoXxsuUSaicCIBxvVzZzOtgJjGBeEUuIyKkYbBixXJjWxXLlsSeEaAsOomMMmLlphHMsSwWUumDdPSrRwqFvVyYqgGQdhUmclLxXCMhHPpuNnaGgAvsShHVHSgGsQHhqegpbBfFPwNHqQhlLxDnNdGxrDdRDdGgowWOUSspPuvVXnNJjaoOYyAtTINXxJvaBbjJxXASJjJFMmfwRKXxQqakKAVvkEExOeEMvSsFfVmoBJSJjmAKIikWOoWIiwwWwKIiULfIiFzxRpPpqQPQUlLIiKjZzJudDyYIiaAiIWEezZLYSAasdDybBcCxYyRrZnNzpPcCgGwLlLlTtWGgvVYyXiIuUkfOoXxCZzcOuoOUoHWwvyRoOEeHhFfNnwWGCcQhHKkquAaVZzZDZzdYyCckKjJCcoOzIiqQSNhHnyaAlnNLYcqQBbMYynNqQkKmsSCnIiiIcCYFfyyYYyQqNPMmLaASsiIlGYoYyOdDnDdhHeENTtWjMmSsFWwMmfFMmfxJjfFFfWsiQqISDXxPpZzdMmFfMmlLvIiCUuceEYaEZPpzdBbgGDPpqzZQGIigGgoODMmMmdmJxXjMBbAayQqIjtTJJjiQqwMmyFfYOyuIhHiUuLgwWWiIwcMmqVvQCNnwWdDcsoOorRbuSsSsySCcsRZkVvwyYBPpHkmMKUuRriPpUuICLNnlcGgAFfaLlpfmMYyFJMfFuUZzEewrOYyoRhHLlYyxXGghHWxNnXnNcCwWRrZpPPpzLlyYbBDdDyeEtTYWhHwXNnxKkVvHhZzlfFFYyyeyYGtAKkaekEoOeKPgtwWTIqIwAaWmMKCckSbBqQSsoOVvsLJjlxuUHhVvhAaHLFmLAUqQuiLlolLOtTveVvdDQUucCpPLDdZzFGgrnNgxXGkKfFUuHhcCwjJWZzRHhKkxIKkulIiKNwuUvVWHhPpEekNhHndoODDdDderREtIiWbAafFniINSQqsBFfGgNPdDBbuWwvVqQUuUlLYJjypKkRrkrRQqLlpPTfFtAaKkrsSEzkKZowWOiIuUGglLQktTKqGgaANhHsSpPaAnenwzZWnNTyYxmnNMXNnBbFepPEFfCdDcdbdDKtTkYyzZrzZRTtGgGgJoMmOBbjXbBmZzMxgEePuZzNxOoXaAsSTXxtiFfOaAotykhHAiIOoPpaWrRmMwDdyYGgnNnRcChHblLxXBSsTthVLIaAilQqOoUuveuGgJjTtwWbBWolLsAaSOOoKPpwWqQkDLfFlzZdKknNfFPpSsPpkSsHhTvVtHhzZKXCcnNMmcCxxXHdDkTtxXiIwFXxqOorRsSzZgCeEcGoOsNnMmmmMXCcyjZMKkmzIiJYlFfhzZAdDwWaZzHJjLfFSsEetTxdXRrxDQqdDsVvCdDcAaYtbBXxyfFBbYfFOoqRrQTUuSsjjJKbBVvBbAaztTnNIxsFfSXpuFfVuujXxRyYulLVvsdDSxABbuRrEeKzZhpvVPAaHydUupPDgGeEJjDdztTHfBbgGVvMCyYvKkuFfUVfFcQQzZeEjiIUWdhDOjMmJzZbaAUuaAEeVSaAsvteEwKkDdKUpPHhaWzZcTDNndtCrCZzmgGMcfSsPpFWwlSsLfjqQQHhoOsSYrRfTteEFyYcCykKsbBgGSLUulqiNnIdDqgyYGHluULYyhIiZXAlXKkLyYkKlJjmMVvXrRxSwWsxTYWciICwytfFLMkKZMmyjfFJhHRrWwYdDfzZFSjnRTXxtnNeOhHoYybBEHhTtnNZzunNRZzVvrFoOfRziIbBYyZrRuevVAZzqQeEBbQNnqawWHoOhFftTaADyYFBbfaAdZxwGMmSsdDZzGCclDdLxXOokuTtuUBqTtHhOoUunYqQlYYVvUuKkyBbQgLhHgGlAWwsSGNngaBFfbtFfkSsKISsiNnTtjQqJaTdwvVWjJCcErREeUucuZvNnEGgeIigGqQsIsqOqQoQoTtbBBbObBuUNwWkKrReEegGEhHuSsyYtUuAjJakKfRrCcFdvVHtThDPpkLMmlKTRcVtTvxxJjoGgQuhHUUuglLGnLlORrcaACaAoNnNbBHhWkKZrRzAawxXsSyYhHqxvtTVPpIcEeCBbBbkTFftashHACcPpKklLuUabmMBhMmBbBcCHcCFeIiLlEVvqfFeEkKeEQRrEeIiUkKOQqoAyYYydDMRUuXOvVoxmNhHniIBDJjPMmppPFWwVmQeEqMqQBboOnEaAoaAOiWWEzZekYhHyoOdbBDqlLbGgXPpxDWwsIiRrEeTtbBiISyYGAXxBbdDacqQFbBfiIGjJdDDdgZzxXUcCaJzZLljAuewAaWwyVvzGNMtDdRcCrfiOoOyIiYoDdyIiYIovyaMmfVfFQAaVSsvpFluULKklLyqQJjuUvVqdDopJjEePOcFfzYyYysSZLlqQfFoHqjJQkYLlyuUWlfFLVMdDmtTLlHVuUAdTtfujJUFcIiCwPpWrRdDvVeYyexXEgGyMmwcsxXTtDdQQqsSqnNzZSsSMIimFfYZiIUuHhHEDYydEaAqQitYyTHhrRLcIiWbBwChHQMmqyXxnqQNEekyYCiIcdDeBbaYyAEcCncCoUuvVOeEoObBxnNsIiPAaplLXEJjiIehHxddcCdaAJjhHgSsFfjJjHWwTvVtAagGJjhiIIiSswHhYyrbBRPOosSvVhHOEeGEeDdvnNfycCYFvAabBqQyMWwPDdtBbgpQLTtvVTwWtlLlLUVOHhoOoOonNSxXGgwWVvEeWwNnGgFfNnCcQqnQqwgyYGWGwWgDduUKkhuUMmNnHNXZzOoRrXxrvVqQaAuUNdVviIDcCIfFiZImMizkKnBbBOobRFfyNbSsaABbAaGgBJkOhAavVFfHoybBcCGiIpoOxXVvXxWuUoOwRjAJwWlRrLsyTtEeYCcBbQpPqjJMmQgbOsLYylSoCcqQBgGUBLlDdiwWfFZWwzfFIqwWQbTHhtBwWlmMFfLgBbGLlDdKkhHBWwWwHhHCcBbFwWPhHMmJOorRTtjpbUBbujJWwBymMSsFfKkjJgGTzZWMmppPLUulGNnhzZYdDEeLlGCOocgnTyWwDdYLlNnFEONxXJgGjnHhRroeyyYPpsSlLBbFyYLlzZfKmMhNPaZzpPARrpRrRyYkKMmUwWurAaaALlyYVvfFOXxoUuDdmMQsSvaAYyFVGgsSvumMrIiRzBbZUfiWoOwIoOpfFCcPTGghHXxotTOtBYybMmfFwWQqdDSLlzZsXAPpqLldgGrRHrosBbSOtTRhwWDkKDnNhgGWjJVvwFfDdFfVPpvTtoOgFQqYQqzZOoCcyJjJxlLXLlqRvDdVRrrtTbBCcfFYyPpXxWwtTxXvVUuAabBNKtTMmkvVxXEHhzZTtRregWwYyGjKXxhHkJjwfFKkQBbsxXryYHhfFRyYSFfmMxvVHhKktTjJCcYyZcpPNKfFUugGMmvpPMmVvEvVewWpxeEBbbhHdDDdDdBXtjJTeEZzPNCctTadDFfAnjAaJUurzZRHhphHtThjtHhhHtTTNvcCVlmMLnNbBSkZaAHhzwlLGgFfnNJYyyYjJjJjgKkGzZPQVvwLlVvXxjJZteETgAaGDdWwzGKUuYyUneEehHMVMmvmQqMOoNmMIiUDCcjJoOdhHunwSFfaLlSsVzZvACcuUMiIPoWEewHhWIiwVvOgGyYYXxOnNoyTtpnNZOaAxKkTtMzZmIvVmMstTSWwPpBbgGiXLoOlBbosSzWbtTBwyncCNJhHcCjjEeSsHfjJbBFhJZzIiTtvgNnGeEVpZzthYyhBbHkKxXHKkrRTmnNxEeOokKbmmMTtMgGBXMTtpPWwKwWkJjLlPBOoiIbYGgXrRxrRmewWEMCcTRrpPPptMPpmXxYFaTtAfQJOsSoZzjqSsmhQqHMSschHeECylLxXYdLAadDvVlqQqQqQDMsSmRrEKkekOomMhHsZzpPUuUuonNXxjJOSAPpasdDSKJtTRrjhHKkCdPpsSPlKkLpDTLMmYyCcIAaicCeplLsSnpPNPEtFfTLlJjYkIiKyjPphPpXxuUyYYNEeMmmWwhHZzMvYydBbDVkKZzAHpPhnNPpXJjHvVHhKqQOcCotTMmhHkhkmMjJCNnczNnpaADdUuPZIiKaAXZBVjJvbpPvVRryYSsNdGrfNnezTtZEFRwjJduuxXUjJUXZLlzWwxKXxWpPbkKsSBwkiIlLDSsgleEWwuULEMEemsmyYMfkTtKFroTtORkKsSSrRfFeGoOxbBXSsYazbBeEZASnNsXotTOYyxnNSsJOBYybZztTNnyYYykXxXVvxNnmMOBbTASyYINnisauHhUtoxpPXNnxTtnNzZcHhCcCLlXIATtabBAaYyYyqQilkKWCcEFfewsXxSdnUlLuRrNZzqQDOpPoMEexXEesScCWwBiiidDIdDIHhpPHhIyqNnsSQFEeHnNhBbfYbmDdnNuUaAvrRsSVvVaDdRsSrcDdIiCAtTdmMOombBLlMwgGWqQTnoOwWsSaAWFSsfwNyYijQqSsJvVrROokKIlajJAyYkjJOoKbFmMfDdqQJRrztTLBblPpqQZTaQqZCczAXxclLOMmoHHXxhjJoOhnNMmLcCcfyYFCgGlNfFnCHsxXczZCShpPVKkvtdXxYySspPYyEEejJSsNzZkMmKwWnVUukiIKvEeVGSsZzdDwGWwgWgpPXSsZzxRPprQlNnLiIMmPqWCcwTtnNQNvRrVGkKgcCQgBbGysSYqCcpvVPDbBWwuUeAgGDdanhHgGRrNEHbEZSAaszeCcBhcCdlOoadDAWSswLZWwzFSsjJcXvVYmQqGgfFsSxiIXJjoOMlSsLwEeRrJjkKrIiuURWWQqPjTtCcBbodDJrRjIQrRqXxtTxcCXcCjRrpgGPJJlLjNiIgGaAuUqgGQfFcumMPhHpUCZzpPlLYyvVaAAarRgGWwukKBbUwWiItcCNnTvVmeEMMmuzDdpPZWwaAsUuSUngKktbXxBKkqQkKXQqGEegAyYAakKwWanVxXvTQqtHhwWRFoOlLLlgGXxoOfZvBbsxXovsSVJoOLljOoOlLRrSJNypYyPHhyzZYYWBbdDoOraAqQRwqKkQVvnjeEOoSPtQqTNnpIisbOoBJjTLlwWJjYSXxsGgyOosRNnNnndDNsSIqQkeEKiHhIiPphPpHrRkQqKTtuUcCVvkGSUupPsSXGgmMZzYyxIGdDgiEesHhgKxXFpPfhaARrPpEKkQqeHQWwqTgGdDtHjvVJKTtsqoJjOnNbBQiIuUSHhzZkDdSGgJjwOoWqQCsScMmVJjrRaASBbZzdDsvrEqQtLlTeGLlQqDiAloOnNLaoiIOfFYyIfFdgUfjWwTzMmZtJMmFJKkHhdDNzZnjJjbwJmMYyjTrRtWlLOoXXxnMmDSeEHhsdNmMVvDdxBvVyYPVUuvBbLleEOofFNnrRgGMmlLgGpgGjNgGvVwWnzZtTeJjXFWJjHhwfgGXxxzZVTtzvVZwWLlWwvVsSvWwgGrRpPtrRoOTEZzpFwWfPvVISwWsiTaAtYGgoDdLlOyQPHhdDCcpBjXxJbPZgGzpZzqtTOokKOoSsJiBbAaIgGssmMmMSSYyaNNnwWnEQVFfeWwEvpPAavVHhmXxbyYiIfrRFYANnGZzKkgLOolsSaVAIiaYysOouUPpxXQQqqwWQqrcCRMmPVvxXpSbWwOoAaBvPpsjJdDSgKkRrSGjpPJgJjSssGgSsUhHwWuMmAazZzZQzZlSsAaNnuFfUaALqbpPmMYyWwMmBvhHzZVXxXqyYQyYdDqQPpdDxZzhHRLxXlxXEemqQMIirRAaHhTGVFfvgvBbAaFflLvVVHhrRHhRQqsSrRrEYyUXxueVNxXnGgKpPkPpvCcttTPpryYoOGNTtUuQqIiTtEVvIieXxYyxXEiIvCcKkTbBtlaALniIzZNVvVeDdWNnziIZgzZGjGgTtJwHpfyYPpFPGghdhHSsJAajPrvVSsRpDKbzZBknwWyYiLlqQwUcCuWWKkwzZiIITtDdApPacAPRruUyqfFVvQYpcCZiUuAaIpPEqQoySsNnmMYfjJwWFZdDNnLlAalLOnNozoIOovVwWiUjhHJuVvXxlLCcJaAjCcOoVvCciGgIpqlbBLZDdzzZQgpPGwqaXxKkAjBbJmMQUukYJjaZznpPlLNrRALHhaAlBbbBPpywWiIQqsSKIioTtoOOzbdDvDdVBiFfSsjeEGUugzZJEeHhuUmMlfFSsBbRrvVyyYoOYdavVCUucWwADvVtTeEuUJjJHlLhjJrRjVEeYyRKkrFfWwDdRriIAQsSqHhaLMgGmYySszZsgcCGKoOkSBbljJFUufbBbBbBJjHhXxyYEeERKkBbIivVoOeErAaUuJjGgQqFfxXtTRwWwWrxXOoLVwHhWvGgYynNvJjSsmMhHjabBAJYyQqdxXpPDmrGgJlLjRMRwWrVxUEeuXDdDdRYyxXcCTthZzHUukoBbOiIVyFfYvgUuHhsSGvVjuUJVFfvzpPqgGQjJUuxEejJJsSFfUtTujqQkSsKhBrRbNyYZznjiIEcRrQnNqZzNnCeBbJHPpaSiIsATtaPZPpgGzyYlLyyrRvgGVLhHXxzZlYKVvhPpHpPIikMfFFLlfJLRrHWwGjJgegGCrRcEPLlNaAnpPpCsSdbBDIvVluUSsLiJuUSDdsjcGgMmuUvasSbBaAAIiUuTfFnNtHnNhNxXnFfRroOVniINhRqQrwWWwvqQvmMDdLlCcuFfUzZVVBboXxRrOlIimdDYyMtTUuJKktNNnnbBsmMEeSTwelLEWjVvWzZLlwobBpPIijJdDYyKkOWUuwJjyYAaxXxXIfFizZnNEVnNpPvQRrqeQnNMmqghHcXxXxCWwlLGTIAaUuTttTitltiIvVWwIiTAarRZzQNnoOqxXlLsSmMiOosSEegGQqdeEjJKkuUKkCaAKkCcbBcHfFeEhSseEPVvKklLYyGgpDdcCtSsglLrTtRGPphHNnuUfFeAaEnNWwNnPPpOokKcCCcmtTsSGPpgMa diff --git a/2018/inputs/6.txt b/2018/inputs/6.txt new file mode 100644 index 0000000..e544bbd --- /dev/null +++ b/2018/inputs/6.txt @@ -0,0 +1,50 @@ +195, 221 +132, 132 +333, 192 +75, 354 +162, 227 +150, 108 +46, 40 +209, 92 +153, 341 +83, 128 +256, 295 +311, 114 +310, 237 +99, 240 +180, 337 +332, 176 +212, 183 +84, 61 +275, 341 +155, 89 +169, 208 +105, 78 +151, 318 +92, 74 +146, 303 +184, 224 +285, 348 +138, 163 +216, 61 +277, 270 +130, 155 +297, 102 +197, 217 +72, 276 +299, 89 +357, 234 +136, 342 +346, 221 +110, 188 +82, 183 +271, 210 +46, 198 +240, 286 +128, 95 +111, 309 +108, 54 +258, 305 +241, 157 +117, 162 +96, 301 diff --git a/2018/inputs/7.txt b/2018/inputs/7.txt new file mode 100644 index 0000000..3fe80cb --- /dev/null +++ b/2018/inputs/7.txt @@ -0,0 +1,101 @@ +Step E must be finished before step Y can begin. +Step Y must be finished before step T can begin. +Step I must be finished before step C can begin. +Step G must be finished before step F can begin. +Step C must be finished before step P can begin. +Step B must be finished before step Q can begin. +Step Z must be finished before step N can begin. +Step J must be finished before step W can begin. +Step W must be finished before step P can begin. +Step K must be finished before step D can begin. +Step Q must be finished before step L can begin. +Step V must be finished before step D can begin. +Step O must be finished before step M can begin. +Step A must be finished before step P can begin. +Step M must be finished before step L can begin. +Step R must be finished before step S can begin. +Step D must be finished before step X can begin. +Step X must be finished before step N can begin. +Step P must be finished before step T can begin. +Step F must be finished before step N can begin. +Step S must be finished before step L can begin. +Step U must be finished before step N can begin. +Step T must be finished before step L can begin. +Step N must be finished before step H can begin. +Step L must be finished before step H can begin. +Step N must be finished before step L can begin. +Step X must be finished before step F can begin. +Step P must be finished before step F can begin. +Step P must be finished before step H can begin. +Step B must be finished before step D can begin. +Step V must be finished before step H can begin. +Step X must be finished before step S can begin. +Step Q must be finished before step O can begin. +Step Z must be finished before step T can begin. +Step K must be finished before step N can begin. +Step S must be finished before step H can begin. +Step M must be finished before step P can begin. +Step Q must be finished before step D can begin. +Step R must be finished before step U can begin. +Step J must be finished before step P can begin. +Step P must be finished before step S can begin. +Step V must be finished before step U can begin. +Step R must be finished before step T can begin. +Step F must be finished before step S can begin. +Step D must be finished before step T can begin. +Step E must be finished before step N can begin. +Step J must be finished before step N can begin. +Step J must be finished before step A can begin. +Step K must be finished before step U can begin. +Step V must be finished before step N can begin. +Step V must be finished before step S can begin. +Step U must be finished before step L can begin. +Step F must be finished before step U can begin. +Step I must be finished before step T can begin. +Step J must be finished before step L can begin. +Step E must be finished before step T can begin. +Step T must be finished before step N can begin. +Step I must be finished before step G can begin. +Step R must be finished before step D can begin. +Step E must be finished before step B can begin. +Step X must be finished before step H can begin. +Step P must be finished before step L can begin. +Step Z must be finished before step J can begin. +Step O must be finished before step L can begin. +Step E must be finished before step H can begin. +Step F must be finished before step T can begin. +Step A must be finished before step F can begin. +Step U must be finished before step H can begin. +Step F must be finished before step H can begin. +Step C must be finished before step W can begin. +Step A must be finished before step L can begin. +Step V must be finished before step M can begin. +Step U must be finished before step T can begin. +Step E must be finished before step P can begin. +Step Y must be finished before step U can begin. +Step W must be finished before step R can begin. +Step E must be finished before step X can begin. +Step Q must be finished before step U can begin. +Step I must be finished before step F can begin. +Step V must be finished before step F can begin. +Step V must be finished before step T can begin. +Step R must be finished before step P can begin. +Step B must be finished before step A can begin. +Step S must be finished before step T can begin. +Step M must be finished before step F can begin. +Step Y must be finished before step F can begin. +Step C must be finished before step K can begin. +Step D must be finished before step S can begin. +Step O must be finished before step S can begin. +Step M must be finished before step U can begin. +Step Z must be finished before step S can begin. +Step R must be finished before step H can begin. +Step C must be finished before step O can begin. +Step G must be finished before step Q can begin. +Step Z must be finished before step D can begin. +Step B must be finished before step N can begin. +Step I must be finished before step H can begin. +Step I must be finished before step P can begin. +Step E must be finished before step J can begin. +Step V must be finished before step L can begin. +Step B must be finished before step U can begin. diff --git a/2018/inputs/8.txt b/2018/inputs/8.txt new file mode 100644 index 0000000..ecb2263 --- /dev/null +++ b/2018/inputs/8.txt @@ -0,0 +1 @@ +8 11 7 2 4 4 3 6 1 5 0 8 1 6 1 1 5 4 7 3 1 2 3 1 1 1 5 0 9 9 5 2 8 7 5 7 1 4 2 2 1 1 3 1 6 0 8 6 1 8 1 1 5 4 1 3 3 3 1 3 3 1 4 1 2 2 3 3 4 1 9 0 10 1 9 5 2 6 5 6 5 7 1 2 3 1 3 3 2 3 1 1 1 7 0 11 2 5 1 1 8 4 9 1 5 4 7 3 1 3 3 1 1 3 1 7 0 8 5 2 7 8 5 4 1 1 1 1 3 2 1 3 2 3 3 3 2 3 7 1 8 0 9 2 5 4 6 7 2 9 2 1 3 1 3 3 2 1 2 2 1 5 0 9 1 1 6 1 4 2 9 4 3 1 1 2 1 3 1 6 0 9 7 2 9 4 4 5 1 8 6 1 3 1 3 1 1 5 3 3 4 4 3 4 3 7 1 6 0 11 1 3 1 1 1 7 3 8 2 1 6 1 2 1 3 1 1 1 9 0 7 7 2 1 8 1 9 8 2 1 1 3 1 1 3 1 2 1 7 0 8 5 7 1 9 7 6 5 3 1 1 1 2 2 2 2 2 2 1 2 3 2 4 1 4 1 2 5 5 3 4 1 8 0 9 1 3 7 1 2 1 3 9 8 3 1 1 3 3 2 3 1 1 6 0 7 2 4 2 6 8 1 6 2 1 1 3 3 2 1 5 0 10 1 6 6 9 7 8 4 4 9 7 1 2 1 2 3 1 1 4 4 3 6 1 6 0 10 1 7 2 8 1 6 9 3 6 7 2 2 1 3 1 3 1 8 0 8 1 8 9 7 6 1 3 4 1 1 3 2 2 3 2 2 1 6 0 8 1 8 2 3 9 5 1 6 2 1 2 1 2 1 4 2 3 5 5 5 3 4 1 6 0 10 5 7 6 5 7 1 7 4 1 5 1 1 3 2 2 3 1 8 0 7 7 1 8 1 6 4 3 3 3 2 1 3 2 1 1 1 7 0 10 6 1 1 5 9 3 2 3 3 9 3 3 3 1 1 1 1 1 2 1 1 3 5 1 8 0 11 1 3 1 6 6 6 5 1 5 1 6 2 1 3 1 3 2 1 2 1 8 0 6 1 1 2 1 9 9 1 3 1 2 2 3 1 2 1 6 0 9 8 4 2 8 8 7 1 8 1 1 2 2 1 1 2 5 1 1 4 2 3 6 1 8 0 8 4 1 8 1 3 6 9 8 3 1 2 1 3 2 3 1 1 6 0 7 9 1 6 4 9 4 6 1 3 1 1 1 3 1 8 0 7 5 4 1 5 7 1 8 2 1 1 2 2 2 1 2 1 2 1 1 4 4 2 2 3 3 2 4 4 3 7 1 9 0 8 3 3 7 1 1 5 3 3 2 2 1 1 2 1 2 3 1 1 9 0 8 5 9 8 9 4 4 8 1 1 3 2 3 2 1 1 1 1 1 9 0 8 3 6 5 1 8 4 5 2 1 1 3 2 2 1 1 1 3 1 1 5 5 5 5 1 3 4 1 8 0 8 8 5 8 6 7 1 3 5 1 2 3 1 2 3 2 1 1 8 0 9 4 2 8 6 6 2 2 1 2 3 1 1 1 1 3 1 3 1 6 0 7 5 4 4 2 2 2 1 1 1 2 3 1 1 5 5 2 3 3 6 1 8 0 6 1 5 6 4 3 8 1 3 2 1 2 3 2 1 1 6 0 11 7 1 3 7 3 5 3 9 1 5 6 3 2 1 1 1 1 1 7 0 8 7 6 2 8 5 1 3 4 3 2 1 3 2 2 2 1 4 5 4 2 1 3 4 1 6 0 11 7 4 1 1 8 4 6 3 9 2 8 1 1 3 3 3 1 1 8 0 7 1 4 9 2 1 4 6 1 2 2 3 1 3 3 3 1 6 0 8 7 6 2 1 8 4 8 7 2 1 3 1 3 2 2 1 5 3 4 4 4 4 5 4 3 4 1 7 0 10 1 3 1 7 1 1 7 9 5 7 1 2 1 1 3 3 1 1 6 0 11 4 1 7 7 2 4 6 1 7 8 3 1 1 2 1 3 2 1 9 0 9 6 2 9 1 9 9 5 6 1 2 2 1 2 3 3 3 1 3 2 2 2 1 3 5 1 8 0 11 4 8 7 1 3 2 3 6 1 3 9 2 1 2 3 3 2 1 3 1 8 0 6 4 4 3 6 1 2 1 3 3 1 3 2 2 1 1 9 0 10 7 5 1 7 6 1 3 6 6 6 3 3 2 1 1 2 1 1 2 3 1 2 5 5 3 6 1 9 0 10 9 9 2 1 6 4 4 4 1 2 1 2 1 1 3 3 1 1 1 1 6 0 8 1 4 6 1 4 5 8 6 2 1 2 1 1 1 1 7 0 7 3 9 1 1 1 1 1 1 3 1 3 1 3 3 3 3 5 4 2 2 3 5 1 5 0 8 7 6 5 7 1 9 4 5 1 2 1 2 1 1 8 0 10 5 3 2 8 3 6 1 7 9 1 1 3 1 1 2 1 3 2 1 6 0 10 2 6 1 6 9 9 7 6 1 4 2 1 2 3 2 1 5 4 3 1 2 3 4 1 5 0 10 6 2 1 7 1 1 7 5 1 8 1 1 1 1 1 1 7 0 6 1 3 7 4 7 1 3 2 3 1 1 1 1 1 5 0 8 6 5 1 4 4 1 7 2 2 1 2 3 1 3 4 2 5 2 4 6 5 5 4 3 7 1 9 0 6 4 4 1 8 4 1 1 3 1 2 2 2 1 3 1 1 5 0 8 1 3 2 8 1 5 5 5 3 2 3 3 1 1 6 0 7 2 1 8 7 2 7 8 1 2 2 2 3 3 3 5 4 2 5 5 4 3 7 1 6 0 10 6 7 5 1 7 7 5 1 9 1 2 3 1 3 2 2 1 6 0 7 8 6 4 5 6 5 1 2 3 1 1 3 2 1 7 0 7 9 1 1 1 6 3 9 2 1 3 2 2 1 2 2 5 1 4 3 5 1 3 7 1 6 0 7 4 6 1 5 3 1 3 1 3 2 1 1 1 1 9 0 9 1 3 8 4 5 7 9 2 5 3 3 2 1 3 1 2 3 1 1 9 0 8 2 5 6 1 5 5 1 8 2 3 1 2 1 1 2 3 1 3 4 1 2 4 3 2 3 7 1 5 0 9 4 8 1 8 7 1 1 7 6 1 2 1 3 2 1 8 0 8 8 3 5 4 1 3 3 3 1 1 2 1 2 1 1 2 1 5 0 8 1 5 7 8 5 7 3 5 3 3 1 2 1 2 2 5 4 3 5 1 3 6 1 5 0 10 8 6 1 6 7 3 4 2 1 7 2 2 1 2 3 1 5 0 7 4 2 9 1 3 5 1 3 3 3 1 1 1 5 0 11 7 8 2 5 9 5 2 2 5 1 7 1 3 1 1 1 2 4 1 3 4 2 7 3 5 2 5 3 3 5 1 9 0 11 6 2 2 1 7 8 4 6 8 9 1 2 3 1 1 1 1 3 3 3 1 5 0 11 3 4 8 3 9 1 2 5 4 1 2 2 1 1 3 3 1 8 0 6 2 1 2 8 1 1 3 2 1 2 3 2 1 2 1 3 3 3 4 3 4 1 8 0 9 9 8 4 1 3 6 4 1 3 1 2 2 1 2 2 2 1 1 8 0 8 1 9 1 1 7 2 1 5 1 3 2 1 1 2 1 3 1 7 0 6 1 8 7 8 5 4 1 3 2 2 2 1 2 3 5 1 2 3 4 1 9 0 6 1 1 2 7 2 8 2 3 3 3 2 1 3 1 3 1 6 0 9 9 7 7 3 8 5 2 6 1 1 3 1 1 3 2 1 7 0 8 5 4 5 1 7 3 8 1 2 3 1 3 1 3 3 2 3 3 3 3 6 1 6 0 6 1 1 1 6 6 3 2 3 3 2 3 1 1 9 0 10 6 6 9 5 9 2 9 7 6 1 1 1 2 2 3 1 1 1 2 1 5 0 10 4 1 7 4 2 8 3 3 7 3 3 1 3 1 2 2 3 5 2 3 3 3 4 1 6 0 8 4 3 7 7 5 2 4 1 1 1 3 3 1 1 1 8 0 10 5 9 8 3 9 1 1 8 4 7 1 1 3 3 1 2 3 3 1 8 0 8 4 9 1 1 9 4 6 3 1 1 1 1 1 1 3 1 3 2 2 3 3 7 5 4 5 3 5 1 8 0 7 1 6 1 8 5 9 2 2 1 3 3 3 1 3 1 1 5 0 9 3 6 2 2 4 1 4 1 7 1 2 2 1 2 1 9 0 6 4 7 1 1 1 8 2 1 1 1 2 1 2 2 1 4 3 2 4 5 3 6 1 7 0 10 3 2 6 2 1 5 7 8 9 5 1 2 1 3 2 2 3 1 7 0 6 3 6 6 1 4 6 1 1 1 3 2 1 3 1 7 0 9 6 1 3 1 3 8 5 9 4 1 2 2 2 1 1 3 2 3 2 1 2 3 3 4 1 5 0 11 1 3 8 7 7 7 7 2 2 3 1 3 1 1 1 2 1 9 0 10 4 5 1 3 2 8 8 8 3 9 3 1 1 2 3 1 2 2 3 1 7 0 6 6 3 1 3 2 4 3 1 3 1 3 3 2 2 1 3 4 3 5 1 5 0 10 7 8 5 2 3 3 7 1 6 6 1 1 3 1 1 1 9 0 8 5 1 6 1 2 7 4 3 1 3 2 2 1 3 2 2 3 1 9 0 8 9 8 1 4 4 9 3 8 3 2 3 2 1 1 1 1 1 4 4 4 3 1 4 4 6 5 3 5 5 6 3 5 5 3 5 1 6 0 11 8 3 8 1 1 1 6 6 7 5 6 2 3 1 1 3 2 1 9 0 7 4 1 2 1 8 1 2 1 1 1 2 3 3 3 2 2 1 7 0 7 5 6 4 7 3 1 1 1 2 1 2 1 2 2 4 4 1 3 2 3 5 1 9 0 8 5 8 2 3 6 1 9 9 3 1 3 1 3 1 2 3 2 1 8 0 10 2 7 5 2 2 1 5 1 7 9 1 1 3 2 3 1 2 2 1 8 0 8 8 7 5 9 9 8 1 1 1 1 2 1 1 1 2 2 2 2 2 2 2 3 5 1 7 0 11 7 2 2 5 7 1 4 9 4 6 4 2 3 3 2 3 2 1 1 9 0 7 1 3 3 5 2 1 9 3 1 1 2 3 1 3 3 2 1 7 0 10 1 7 6 1 9 3 6 2 4 4 1 1 1 2 2 3 3 2 2 1 2 1 3 4 1 9 0 7 3 6 9 6 7 1 3 1 2 1 2 1 1 1 2 1 1 8 0 10 1 3 9 1 3 8 7 6 6 4 2 2 1 3 2 1 1 1 1 5 0 6 9 8 1 3 5 4 2 2 3 1 3 5 2 3 5 3 4 1 7 0 9 2 9 6 9 1 2 9 2 2 3 1 1 3 3 2 2 1 6 0 11 9 7 3 4 2 9 5 1 6 5 4 3 1 2 3 1 3 1 6 0 7 5 9 3 9 1 1 6 1 1 3 2 3 3 2 3 3 4 6 5 3 5 4 5 3 3 5 1 7 0 6 9 1 6 2 1 6 1 1 3 2 3 3 1 1 7 0 10 6 1 2 9 7 1 8 5 9 1 1 3 2 3 1 2 2 1 7 0 11 2 6 4 4 1 2 2 5 6 2 8 1 3 3 1 3 2 3 4 1 1 5 4 3 4 1 8 0 7 1 6 5 8 5 8 9 1 2 3 3 3 1 2 1 1 5 0 8 3 5 2 4 1 9 4 5 3 1 2 3 3 1 9 0 9 9 2 1 7 2 9 8 5 1 3 1 3 2 2 1 2 1 2 4 3 4 1 3 5 1 9 0 10 5 5 6 1 5 5 6 1 3 7 2 1 1 1 1 1 2 1 2 1 5 0 6 1 5 7 2 3 9 1 2 3 2 3 1 7 0 10 7 8 4 8 9 8 2 1 2 5 1 2 2 1 2 3 3 3 4 4 1 3 3 4 1 8 0 6 3 4 7 1 3 1 3 3 1 3 2 3 3 3 1 5 0 7 6 2 7 4 3 1 1 1 2 3 2 1 1 5 0 8 1 1 4 5 6 3 5 7 3 1 1 3 2 3 1 5 2 3 6 1 6 0 10 1 8 1 1 2 2 5 5 1 3 2 1 1 1 3 1 1 6 0 8 4 2 1 7 7 8 8 5 1 3 1 2 1 1 1 9 0 7 5 8 3 6 1 7 5 3 3 1 2 1 2 3 3 2 5 5 5 2 1 1 2 4 5 4 4 3 5 1 9 0 8 2 1 8 2 4 1 3 4 1 3 2 1 2 1 1 2 2 1 9 0 6 8 8 1 8 8 6 1 1 1 2 1 3 2 2 1 1 7 0 7 7 8 1 8 7 7 8 1 1 1 1 1 3 3 3 5 2 5 2 3 6 1 9 0 8 9 2 8 3 4 7 1 1 1 3 3 3 2 1 2 3 1 1 6 0 7 2 1 9 4 1 3 1 1 2 3 1 2 2 1 5 0 9 8 2 2 7 3 4 1 6 3 1 2 2 1 2 4 3 1 2 1 5 3 7 1 8 0 7 1 6 2 5 3 8 3 2 1 1 1 1 2 3 1 1 8 0 10 5 2 1 1 1 5 7 1 4 9 2 1 1 2 2 2 1 3 1 6 0 10 5 4 8 1 6 2 7 1 6 1 1 3 3 1 3 3 5 3 5 1 5 1 5 3 7 1 8 0 9 6 5 9 1 1 8 5 5 7 2 1 2 1 2 1 3 3 1 6 0 7 9 8 1 2 1 2 5 1 2 1 2 3 1 1 8 0 6 5 3 1 5 3 7 1 3 3 1 1 1 1 1 4 1 1 2 1 3 1 1 2 2 6 5 4 3 6 1 6 0 6 9 5 7 8 1 4 3 1 2 1 2 1 1 8 0 8 4 6 3 1 9 7 1 6 1 1 3 1 3 3 2 3 1 7 0 6 1 1 8 2 3 3 3 1 1 2 2 1 1 4 1 1 2 2 2 3 4 1 6 0 8 8 5 1 1 5 1 7 9 3 1 3 1 1 3 1 5 0 10 6 9 5 9 3 5 2 8 1 1 1 1 2 1 1 1 5 0 10 3 6 7 9 9 1 6 4 2 8 2 1 3 1 1 2 1 2 4 3 7 1 8 0 8 1 3 7 9 5 8 8 3 1 1 1 1 3 1 3 2 1 5 0 10 8 1 9 9 1 5 9 8 4 3 1 2 3 2 3 1 6 0 6 9 9 5 1 7 9 1 2 1 1 3 3 2 3 2 4 1 3 1 3 4 1 7 0 10 3 5 8 9 6 4 1 8 9 1 3 3 1 1 2 3 1 1 6 0 6 3 8 2 1 2 5 3 2 2 1 1 1 1 6 0 10 3 2 6 6 1 2 1 6 4 4 1 1 3 1 3 1 1 5 2 2 3 6 1 5 0 6 2 6 6 1 1 9 1 2 3 2 1 1 8 0 6 6 3 3 6 1 1 3 2 3 2 1 3 2 1 1 8 0 9 1 1 6 8 4 6 2 9 9 3 3 2 2 1 1 3 1 2 1 5 1 3 3 1 5 6 6 5 4 3 4 1 7 0 7 3 5 1 9 7 3 3 1 1 1 2 1 1 3 1 6 0 9 8 7 7 2 1 1 4 5 7 1 1 1 1 2 1 1 8 0 11 8 7 9 1 1 2 9 7 1 8 1 1 2 2 2 3 2 2 2 5 4 2 2 3 6 1 9 0 10 5 4 3 9 1 1 6 9 4 5 1 1 1 3 1 1 3 1 1 1 5 0 6 1 2 1 6 4 8 2 2 3 2 1 1 7 0 6 5 4 5 5 1 1 3 1 2 3 1 3 3 1 1 3 2 1 1 3 4 1 7 0 10 4 4 9 1 5 8 1 2 7 8 2 3 1 1 3 3 2 1 7 0 7 4 9 4 4 1 4 4 3 3 1 2 1 1 1 1 5 0 11 5 3 6 6 4 8 6 5 6 1 3 1 1 1 1 1 4 1 3 3 3 4 1 8 0 8 9 8 1 6 9 8 5 6 1 2 1 1 1 1 1 2 1 8 0 9 1 3 3 5 9 1 1 3 6 1 1 3 2 2 1 1 3 1 8 0 10 8 3 5 6 2 5 7 4 1 4 1 2 1 3 3 1 2 1 2 3 5 3 3 5 1 8 0 11 5 4 9 9 7 9 4 2 7 5 1 3 1 2 1 1 1 2 1 1 5 0 6 1 1 9 9 1 8 2 2 3 2 1 1 7 0 7 3 1 4 2 2 5 5 1 2 3 3 1 3 1 3 1 3 5 1 2 2 7 6 5 3 3 5 1 9 0 10 1 2 7 9 6 4 5 6 9 1 2 2 2 1 2 1 3 2 3 1 5 0 6 8 7 5 1 2 5 3 2 1 2 3 1 6 0 7 9 4 2 9 2 3 1 1 1 3 3 1 1 4 5 3 2 3 3 5 1 8 0 9 3 4 3 1 9 9 3 1 4 1 3 1 2 3 2 2 3 1 9 0 9 7 7 3 8 9 9 1 5 8 2 1 2 2 1 3 2 3 3 1 7 0 9 4 1 6 4 5 4 3 9 1 3 3 1 2 2 2 3 5 5 2 2 2 3 5 1 7 0 7 1 5 7 1 5 1 4 3 1 1 1 2 1 3 1 6 0 6 1 3 2 1 4 5 1 1 3 3 2 1 1 9 0 10 9 4 5 3 8 5 1 3 3 5 2 3 3 1 2 1 1 3 1 1 1 3 5 1 3 7 1 8 0 7 7 3 4 5 1 1 1 1 2 2 1 1 2 1 3 1 9 0 10 9 1 5 3 7 2 2 1 1 7 3 3 1 2 3 3 1 2 1 1 5 0 11 1 1 3 3 3 4 5 2 6 5 1 1 2 2 2 3 1 4 1 2 5 2 4 3 4 1 7 0 8 7 1 8 1 4 2 5 8 1 2 2 2 1 3 2 1 6 0 7 3 5 9 4 1 6 1 1 3 2 3 2 2 1 5 0 6 5 8 6 3 9 1 3 3 1 2 1 3 4 4 2 5 3 2 6 4 2 7 3 5 4 3 5 1 6 0 10 3 5 9 1 1 3 7 1 1 2 1 1 2 3 3 2 1 9 0 7 8 2 9 2 4 1 1 1 1 2 3 2 2 2 1 2 1 7 0 7 6 1 1 8 6 8 6 1 3 1 3 2 2 3 5 3 1 2 3 3 7 1 6 0 11 4 2 7 6 1 2 8 8 1 7 1 2 3 2 1 2 1 1 5 0 9 1 9 1 3 6 7 6 4 4 2 1 3 2 2 1 9 0 8 2 9 1 5 7 2 4 6 2 2 3 2 1 3 1 3 1 5 3 1 4 3 3 4 3 4 1 9 0 8 3 5 3 2 1 2 3 7 1 1 3 1 2 1 3 1 2 1 6 0 8 1 5 7 9 3 7 4 7 1 3 3 2 3 3 1 9 0 8 8 2 9 7 1 6 7 2 1 2 1 2 3 3 3 1 3 5 2 3 2 3 6 1 5 0 6 5 3 2 1 5 7 1 1 3 3 1 1 8 0 10 7 1 7 1 4 5 9 7 9 8 3 3 1 2 1 1 3 1 1 6 0 7 7 1 3 8 1 7 4 1 1 3 3 2 2 2 3 2 2 3 2 3 4 1 8 0 6 2 4 4 6 9 1 3 3 1 3 1 3 3 1 1 8 0 6 9 1 2 9 8 3 1 2 2 1 2 1 1 2 1 7 0 6 1 5 1 9 1 2 3 1 1 3 3 2 1 1 3 2 5 1 3 4 3 5 3 3 4 1 6 0 11 9 5 9 6 3 9 9 4 4 1 2 1 3 1 1 3 3 1 9 0 7 8 8 1 3 5 4 7 2 3 3 2 1 3 2 2 1 1 7 0 10 9 9 1 7 7 4 7 8 1 7 3 1 3 3 1 3 3 3 1 4 2 3 5 1 7 0 11 2 9 9 1 5 7 1 1 5 6 8 3 3 3 1 3 2 2 1 6 0 7 5 7 1 2 6 9 5 1 1 3 1 3 1 1 7 0 8 1 3 2 2 2 5 4 8 3 1 3 3 3 1 2 2 5 5 1 2 3 4 1 7 0 10 4 3 3 5 1 4 9 9 3 1 1 2 2 1 1 2 3 1 8 0 7 8 5 8 7 2 2 1 1 2 1 1 3 3 2 1 1 9 0 7 3 7 5 1 1 5 3 3 1 1 2 2 1 1 1 1 4 2 1 2 3 4 1 5 0 7 4 4 1 6 8 6 1 2 2 1 3 1 1 8 0 6 1 5 9 9 1 2 2 3 2 2 1 3 3 1 1 6 0 9 6 5 4 2 3 1 5 2 1 3 3 1 1 1 2 2 4 5 2 3 5 1 7 0 10 1 7 1 4 1 1 1 1 1 2 2 2 3 3 2 2 1 1 5 0 8 7 6 3 1 1 9 4 1 1 1 2 1 1 1 8 0 9 1 9 1 8 3 1 2 9 5 3 1 2 2 2 1 1 2 3 2 3 5 2 4 5 5 4 3 3 6 1 5 0 6 3 1 5 1 1 9 1 2 1 1 1 1 8 0 9 6 1 3 9 4 4 4 8 6 1 2 2 2 1 3 1 1 1 8 0 7 2 8 1 7 3 3 1 2 1 1 3 3 2 1 3 5 3 3 1 4 5 3 7 1 5 0 6 4 2 5 5 1 1 1 1 2 1 2 1 6 0 6 8 9 9 3 1 7 1 3 3 2 1 1 1 7 0 6 9 3 6 9 1 3 1 1 1 2 1 1 2 1 4 2 2 1 5 5 3 4 1 6 0 6 2 3 9 1 5 3 3 3 1 3 1 1 1 5 0 9 1 1 7 2 8 1 6 2 7 1 3 1 3 2 1 8 0 7 1 9 1 5 2 5 9 2 1 1 1 3 2 2 3 2 1 3 4 3 7 1 8 0 8 8 1 2 7 6 1 9 2 1 3 2 3 2 3 3 2 1 5 0 6 9 8 9 8 6 1 1 3 2 3 1 1 6 0 6 5 1 3 7 1 1 1 2 2 1 1 1 3 1 3 2 2 3 1 2 4 4 5 3 3 7 1 8 0 8 8 2 1 2 3 4 5 2 2 2 1 1 2 3 2 3 1 9 0 11 2 8 2 9 6 1 5 9 9 7 5 3 2 2 3 2 2 1 3 1 1 9 0 9 5 1 1 9 2 1 6 5 4 2 1 3 3 2 2 1 3 1 3 3 3 5 2 2 2 3 5 1 8 0 6 7 7 1 5 9 1 3 1 2 2 3 2 1 3 1 9 0 7 2 9 1 2 4 5 3 2 2 1 3 2 1 2 2 2 1 9 0 7 9 1 1 3 1 4 9 1 3 3 2 1 2 1 3 2 4 2 2 1 4 3 7 1 5 0 11 9 9 5 6 3 1 9 5 7 5 3 1 2 3 1 2 1 7 0 7 5 9 1 3 7 2 1 1 3 3 1 1 1 3 1 5 0 9 3 3 1 5 4 4 2 8 1 1 1 1 2 1 4 4 2 2 5 2 2 3 5 1 9 0 10 2 4 2 1 5 6 2 3 9 6 1 1 1 3 2 1 2 3 3 1 8 0 8 1 7 7 5 7 5 5 9 2 2 1 1 2 1 1 3 1 7 0 9 9 4 4 6 1 5 1 4 1 3 2 1 3 1 2 2 5 2 2 3 3 3 7 1 9 0 10 3 1 9 6 4 7 1 8 8 2 1 2 3 2 2 3 1 2 3 1 6 0 11 9 6 5 3 8 1 8 1 7 5 7 1 2 3 2 1 1 1 8 0 9 3 5 2 1 6 8 9 5 3 3 3 1 2 1 1 3 3 3 3 5 4 3 2 3 2 5 5 5 3 3 6 1 7 0 6 1 8 1 1 8 1 1 2 3 1 1 2 2 1 9 0 10 2 3 6 9 9 7 3 5 1 3 2 2 3 2 2 3 1 2 1 1 8 0 6 9 1 7 1 4 8 1 3 3 2 2 2 1 2 2 2 5 4 1 1 3 4 1 9 0 9 2 2 2 4 9 1 2 8 7 2 3 1 1 3 1 2 1 1 1 8 0 7 4 7 5 4 1 1 7 2 2 1 2 1 1 3 3 1 9 0 10 8 5 1 9 4 5 8 7 2 1 2 2 3 2 2 1 1 3 2 5 3 1 1 3 7 1 6 0 10 8 1 6 8 3 4 6 6 3 7 1 1 3 3 3 1 1 8 0 8 3 1 7 5 1 4 2 2 1 3 1 3 3 3 1 3 1 7 0 9 1 9 8 7 3 3 6 3 6 1 1 1 3 2 3 1 1 3 5 3 2 4 4 3 4 1 8 0 6 8 7 8 4 9 1 1 3 2 1 1 3 3 1 1 8 0 9 8 4 1 9 2 2 7 4 1 3 1 2 3 2 1 2 3 1 8 0 11 2 7 8 5 1 3 1 8 3 7 5 2 3 3 2 3 1 1 3 4 5 5 1 3 7 1 5 0 10 7 8 9 5 9 6 4 3 2 1 3 1 1 3 1 1 7 0 8 4 4 3 5 3 7 9 1 3 1 1 1 1 1 2 1 5 0 8 2 3 5 8 4 8 1 2 2 3 1 3 3 3 3 5 3 2 4 4 6 5 1 5 3 3 5 1 8 0 8 6 1 6 6 6 1 9 7 3 1 3 3 2 2 1 3 1 9 0 9 3 6 3 1 1 1 2 9 2 1 3 2 3 3 1 3 3 3 1 7 0 9 1 2 5 2 1 7 9 9 6 2 3 1 2 2 3 2 4 1 1 1 1 3 4 1 6 0 6 1 6 9 9 2 4 1 2 3 1 1 2 1 5 0 7 1 1 5 2 9 8 9 1 1 1 3 2 1 8 0 9 9 5 1 1 6 9 6 6 9 1 1 2 1 1 3 3 1 2 3 2 2 3 6 1 8 0 6 1 8 4 4 6 9 3 1 3 2 2 1 2 1 1 7 0 7 1 3 5 3 1 7 1 2 3 3 2 2 2 1 1 7 0 8 2 6 8 6 1 1 5 6 2 1 2 1 3 1 2 4 4 3 2 2 3 3 6 1 8 0 10 5 8 3 9 1 9 8 3 5 6 1 1 2 1 1 2 2 2 1 8 0 8 4 1 2 7 1 7 5 9 2 1 1 2 3 2 2 3 1 7 0 8 4 1 8 2 5 6 4 8 3 1 1 1 2 1 3 3 2 3 3 4 5 3 6 1 9 0 6 2 4 1 9 1 2 3 2 2 1 1 3 2 1 1 1 8 0 10 4 2 8 8 5 5 9 5 1 5 2 3 2 3 1 3 2 1 1 6 0 10 7 6 1 2 1 6 1 2 5 3 3 3 3 1 3 1 4 2 1 1 3 3 7 4 1 5 4 3 4 1 5 0 9 8 8 7 5 3 3 4 1 5 2 3 1 3 2 1 8 0 7 8 9 6 6 1 1 1 3 2 3 1 1 1 2 3 1 8 0 8 8 4 1 2 7 1 5 8 3 3 3 1 2 2 2 2 1 5 2 4 3 7 1 6 0 11 3 6 9 1 6 9 5 1 6 4 2 1 2 1 3 3 1 1 8 0 7 1 1 6 4 7 9 7 3 2 1 1 3 1 1 2 1 8 0 6 1 1 3 9 1 9 3 1 3 1 3 2 2 2 3 3 3 1 3 5 1 3 5 1 8 0 8 7 2 6 8 1 1 2 9 1 3 3 3 1 2 3 1 1 7 0 11 9 5 3 3 4 9 8 7 9 4 1 1 1 3 3 2 3 2 1 9 0 9 9 3 1 6 1 6 8 4 1 3 3 3 3 1 2 1 1 2 4 5 1 5 4 3 4 1 7 0 8 1 2 2 4 9 6 1 1 3 1 3 1 2 1 3 1 6 0 7 3 4 5 9 7 1 5 3 2 2 1 1 2 1 9 0 6 5 3 1 4 5 1 1 1 3 1 3 1 1 3 1 1 4 1 2 3 6 1 5 0 6 7 1 6 8 3 1 1 1 3 1 3 1 7 0 9 1 2 2 9 8 7 7 1 9 1 2 3 1 2 3 1 1 8 0 11 7 5 6 5 1 4 4 4 7 1 4 2 3 3 3 1 1 3 2 5 5 3 5 2 3 5 1 7 5 8 8 1 6 2 4 5 3 4 1 9 0 8 3 8 1 3 6 9 4 1 1 2 3 3 1 3 2 3 1 1 7 0 10 8 5 2 1 3 4 7 2 3 5 3 1 3 1 3 1 3 1 8 0 7 2 1 4 3 9 1 6 1 1 3 2 3 2 3 2 3 4 5 4 3 7 1 6 0 6 1 1 7 9 9 5 1 1 1 2 3 3 1 7 0 10 8 7 4 5 6 4 1 1 3 7 1 2 2 3 3 3 3 1 6 0 7 4 3 7 1 3 8 2 3 2 1 1 1 1 2 3 1 4 4 2 1 3 7 1 7 0 6 7 3 6 3 7 1 3 1 1 3 2 2 1 1 8 0 6 4 5 6 9 1 5 3 1 1 1 3 2 1 2 1 6 0 10 7 6 5 6 4 2 3 3 1 6 3 1 2 3 1 3 3 3 4 5 2 2 4 3 5 1 9 0 9 8 1 3 7 4 9 9 1 1 2 1 1 1 1 2 2 1 3 1 6 0 9 3 7 4 2 1 6 8 4 9 1 3 3 3 1 1 1 7 0 6 4 6 8 7 3 1 2 2 3 2 2 1 2 1 4 2 5 4 6 6 2 5 1 5 4 3 4 1 6 0 9 1 2 7 3 3 9 1 6 9 1 2 3 2 1 3 1 5 0 8 3 8 8 9 9 2 5 1 3 1 1 3 1 1 9 0 6 7 4 1 4 1 9 1 3 1 2 1 1 2 1 1 3 1 3 1 3 4 1 9 0 9 4 1 1 4 3 7 6 4 6 3 1 2 1 3 2 1 1 1 1 6 0 7 8 1 6 5 8 3 1 3 2 3 3 2 1 1 6 0 11 2 3 3 6 1 3 7 1 7 7 1 2 3 2 1 1 3 4 3 4 1 3 4 1 5 0 9 1 5 4 7 6 1 1 5 3 3 2 1 1 2 1 6 0 10 6 9 1 5 5 5 9 8 6 3 1 1 3 3 1 1 1 6 0 11 1 9 3 2 3 1 4 9 2 4 4 2 2 1 1 3 3 2 3 3 4 3 6 1 9 0 6 1 9 9 6 6 2 1 3 3 1 3 2 3 3 1 1 6 0 9 7 5 1 1 4 4 9 4 1 3 3 2 1 1 1 1 6 0 7 5 7 1 8 7 3 9 3 1 2 2 2 1 3 1 4 3 3 2 3 5 1 7 0 10 6 1 1 6 1 9 4 9 2 3 1 2 3 3 2 3 3 1 7 0 8 1 6 1 2 4 1 2 8 1 1 1 2 3 1 2 1 7 0 6 2 3 1 4 2 6 3 1 1 1 1 3 1 3 2 3 3 1 7 3 4 3 5 3 3 4 1 9 0 8 1 4 6 6 4 9 1 2 2 2 2 2 2 1 3 3 2 1 6 0 7 6 1 1 5 9 5 7 1 3 3 3 1 1 1 8 0 10 6 1 3 3 1 7 2 8 9 9 1 1 2 3 2 2 3 1 1 3 3 2 3 6 1 7 0 6 8 2 2 7 1 6 2 1 3 2 1 2 3 1 6 0 8 2 5 1 8 1 7 6 6 2 3 1 2 1 2 1 7 0 9 6 3 9 1 7 3 5 2 8 1 3 1 1 1 1 2 4 1 5 3 5 3 3 4 1 6 0 8 3 1 1 9 2 8 2 1 2 3 3 1 2 1 1 7 0 6 1 9 4 4 8 1 3 1 2 1 3 1 1 1 9 0 10 5 2 5 9 4 2 1 8 1 5 3 3 1 3 1 1 3 3 2 2 3 4 5 3 7 1 8 0 11 7 6 3 6 2 1 6 3 5 3 1 3 1 3 3 1 3 3 2 1 9 0 8 5 4 3 4 7 1 4 2 3 3 2 1 3 1 3 1 3 1 8 0 6 1 9 1 5 2 4 1 1 3 1 3 2 2 2 5 5 4 4 4 3 1 3 4 1 8 0 9 3 2 1 6 5 9 6 5 7 2 3 1 2 3 2 3 2 1 5 0 11 7 6 8 6 4 3 1 8 2 1 6 1 1 3 1 1 1 5 0 9 3 1 8 3 9 4 8 8 9 2 3 2 2 1 5 1 4 1 3 5 2 5 3 3 5 1 5 0 9 7 8 2 2 2 2 5 1 5 1 3 1 2 1 1 5 0 7 1 4 2 8 1 6 1 1 3 1 3 2 1 5 0 8 2 7 2 9 1 6 1 8 3 3 1 2 2 3 5 1 3 4 3 5 1 6 0 6 9 7 1 2 3 8 2 2 2 3 1 1 1 6 0 8 1 4 8 8 9 8 6 2 1 3 1 1 2 1 1 9 0 11 7 2 1 1 7 6 3 2 6 7 2 1 1 1 1 3 2 3 3 2 1 4 3 4 4 3 6 1 5 0 10 2 9 1 1 7 1 3 9 2 6 1 3 1 3 2 1 7 0 6 1 7 8 2 8 2 2 1 1 3 3 2 1 1 9 0 10 8 5 7 3 1 2 7 1 6 1 1 2 2 3 1 2 1 1 3 4 2 5 3 4 4 3 7 1 5 0 11 1 8 2 3 7 8 2 1 3 7 4 1 2 2 1 1 1 9 0 9 6 2 7 6 9 3 6 2 1 2 1 2 2 2 1 1 1 1 1 7 0 7 3 9 8 1 4 1 6 3 1 2 2 2 1 3 2 1 2 5 4 1 3 3 6 1 8 0 11 4 6 2 5 2 5 5 5 1 3 1 3 1 1 3 1 1 2 1 1 9 0 8 2 5 7 9 1 3 5 1 1 2 1 2 1 1 1 2 3 1 6 0 11 7 1 3 2 8 9 7 8 5 1 1 2 3 3 1 2 2 3 5 3 1 3 2 1 4 4 5 4 3 4 1 9 0 7 4 9 7 2 7 1 8 3 3 3 1 2 1 1 1 3 1 5 0 7 8 1 2 8 5 3 7 1 2 3 1 2 1 5 0 6 1 5 7 6 1 8 2 3 3 2 1 3 2 4 2 3 4 1 9 0 7 1 5 4 7 8 1 3 3 1 1 3 1 3 2 1 1 1 7 0 11 6 6 3 2 2 3 1 3 9 6 3 1 1 1 2 3 2 2 1 9 0 6 1 1 3 3 4 3 2 3 1 1 1 1 1 1 3 3 3 3 3 3 7 1 5 0 9 9 1 5 5 4 8 2 5 4 1 1 2 2 2 1 7 0 9 5 1 6 8 5 3 7 4 1 1 2 1 3 2 1 2 1 9 0 8 7 8 3 7 5 4 1 5 2 3 2 1 1 1 1 1 3 5 3 1 2 1 3 1 3 4 1 9 0 6 1 6 5 6 8 4 3 3 1 1 3 2 2 1 1 1 9 0 7 9 5 3 1 5 2 1 3 2 3 2 1 1 3 1 3 1 5 0 9 3 1 8 1 4 4 5 9 6 1 2 1 1 2 1 2 1 1 3 7 1 5 0 11 7 4 4 6 1 7 6 1 1 6 2 2 1 1 3 2 1 9 0 6 1 9 9 1 3 6 3 1 1 2 1 1 1 2 1 1 8 0 7 8 7 2 2 1 6 3 2 3 1 1 2 2 3 1 4 5 5 1 4 5 2 3 4 1 5 4 5 3 4 1 6 0 10 6 9 8 8 5 5 8 1 4 7 2 1 1 1 2 3 1 8 0 7 6 3 2 4 7 4 1 1 3 2 1 3 3 2 3 1 9 0 11 6 9 3 7 8 6 5 6 4 1 7 2 2 2 1 1 1 2 1 3 3 3 3 3 3 6 1 5 0 7 3 8 6 2 7 1 9 1 1 1 2 1 1 6 0 8 8 9 7 1 1 7 2 6 1 1 2 3 1 3 1 8 0 8 1 6 9 2 6 6 3 6 3 1 3 2 1 3 2 1 3 4 1 4 2 1 3 5 1 9 0 6 2 6 7 3 1 2 2 2 1 2 3 2 1 2 3 1 9 0 7 7 5 7 6 1 8 1 1 1 2 1 1 3 3 3 2 1 9 0 7 6 8 4 1 2 1 3 3 3 3 3 1 2 3 1 2 2 1 5 2 3 3 6 1 8 0 7 1 1 5 7 9 1 3 3 1 3 3 1 1 2 1 1 7 0 11 5 9 1 3 5 8 5 8 2 2 8 3 2 3 1 2 1 3 1 5 0 9 6 9 4 2 1 1 3 6 2 1 3 3 1 1 3 3 4 3 5 5 2 3 6 1 1 2 8 7 3 5 3 3 6 1 6 0 6 1 1 1 8 7 6 1 2 3 3 1 3 1 8 0 9 1 3 7 5 6 7 5 1 6 3 3 1 1 1 1 3 2 1 7 0 7 2 1 8 9 3 8 1 3 2 1 3 2 2 1 2 2 2 1 3 4 3 7 1 5 0 9 2 2 9 6 7 9 7 1 7 3 2 1 1 1 1 8 0 7 7 6 8 1 2 6 8 3 3 1 1 3 2 2 1 1 9 0 9 1 1 7 1 3 2 5 5 5 3 1 1 2 1 3 2 1 3 5 4 1 5 3 1 1 3 7 1 9 0 7 2 1 1 7 5 5 3 1 3 1 3 1 2 1 3 3 1 7 0 10 2 3 7 7 3 6 2 3 1 7 3 2 3 1 2 2 3 1 9 0 8 9 7 7 3 9 3 1 4 3 1 1 1 1 3 3 1 1 3 4 1 1 3 4 3 3 5 1 9 0 9 1 2 3 9 6 3 7 6 1 1 1 2 1 1 3 2 3 1 1 9 0 6 1 9 1 4 3 3 2 1 1 3 3 1 3 1 3 1 8 0 11 3 3 1 3 6 7 1 8 6 4 3 3 3 1 2 1 1 1 1 1 5 4 1 1 3 5 1 8 0 8 4 8 1 6 3 1 6 3 3 2 2 3 1 3 3 3 1 5 0 10 1 1 8 1 1 7 1 5 4 6 3 3 1 1 3 1 6 0 7 1 9 5 1 3 2 6 1 3 3 2 2 1 3 4 1 2 4 2 3 2 5 3 3 6 1 6 0 10 3 7 9 5 6 1 7 2 3 1 2 2 3 1 1 2 1 7 0 7 1 7 5 6 2 6 7 1 1 1 2 1 1 2 1 9 0 11 3 6 7 9 8 8 8 7 3 1 3 3 1 2 1 1 1 3 2 3 3 3 3 1 4 3 3 7 1 5 0 7 8 3 6 1 3 6 4 2 1 2 1 3 1 6 0 10 7 4 6 9 1 6 5 5 2 8 1 1 1 1 2 2 1 8 0 6 2 6 8 7 1 2 3 2 2 1 3 1 1 2 2 2 2 5 3 1 4 3 4 1 5 0 6 2 1 7 4 4 5 3 2 1 3 1 1 8 0 10 4 4 5 1 1 7 2 2 8 6 2 1 3 3 1 2 1 1 1 6 0 6 6 6 1 3 6 3 2 1 2 1 1 1 1 4 1 2 3 6 1 5 0 7 1 8 5 2 7 3 4 1 1 2 2 2 1 6 0 8 7 8 1 7 7 4 1 1 2 3 3 2 3 1 1 6 0 8 8 1 1 4 8 4 4 4 1 3 2 3 1 1 4 3 5 2 1 2 3 5 1 8 0 6 1 3 8 5 2 1 2 1 1 2 2 1 2 1 1 7 0 10 9 6 9 8 4 8 1 2 2 4 1 1 1 1 2 2 1 1 5 0 7 1 7 3 9 6 1 3 2 1 2 2 2 5 3 5 1 1 3 7 4 5 4 3 5 1 5 0 6 5 1 5 2 4 6 1 3 1 2 3 1 7 0 7 1 8 4 1 5 1 3 3 1 2 1 1 1 1 1 5 0 9 5 1 1 4 8 1 4 6 8 2 2 2 3 1 4 2 2 2 4 3 4 1 6 0 10 8 2 9 4 6 2 1 7 9 3 2 2 1 2 2 2 1 5 0 7 1 4 9 4 7 9 6 1 1 2 2 3 1 6 0 10 1 1 3 5 6 2 4 5 4 3 3 1 3 1 1 1 5 3 5 3 3 4 1 5 0 7 1 1 5 3 4 7 9 1 2 1 3 1 1 6 0 10 7 6 7 8 2 2 5 8 3 1 2 2 1 1 3 3 1 8 0 11 2 1 3 8 9 1 5 4 7 3 4 1 1 3 1 2 2 3 2 1 1 4 2 3 6 1 9 0 8 2 9 1 1 7 4 8 7 1 3 2 1 2 3 2 1 2 1 8 0 10 1 7 3 6 1 6 1 9 3 3 2 3 1 1 2 2 1 2 1 6 0 9 2 4 2 1 6 6 8 4 1 2 1 3 1 1 1 2 1 3 2 4 2 3 7 1 7 0 11 7 7 9 6 3 3 4 5 5 1 5 1 2 1 3 3 1 1 1 6 0 8 6 6 7 2 9 1 6 5 2 3 2 2 2 1 1 5 0 6 3 1 1 2 4 2 1 2 2 1 2 3 3 4 2 5 5 2 4 2 4 3 5 5 3 7 1 7 0 6 1 9 3 8 7 1 3 3 3 2 3 1 2 1 5 0 9 3 7 1 6 1 2 7 4 3 3 1 1 1 3 1 5 0 11 1 8 9 9 9 6 1 8 6 8 3 3 1 1 1 1 2 3 5 2 2 1 4 3 5 1 5 0 8 8 3 5 4 1 1 9 5 1 3 1 3 1 1 8 0 7 1 7 5 1 6 4 8 2 1 3 2 1 1 3 2 1 9 0 11 9 3 1 4 9 8 6 9 3 8 8 3 3 3 3 2 1 1 1 2 3 2 3 2 1 3 4 1 5 0 8 1 7 5 3 9 3 3 9 2 1 2 2 1 1 5 0 7 3 1 9 3 9 3 6 3 3 3 2 1 1 5 0 9 5 6 4 8 3 1 1 7 6 3 1 3 3 1 3 5 5 3 3 4 1 8 0 8 1 3 1 6 1 5 9 8 3 3 1 1 2 3 1 1 1 8 0 8 1 7 8 1 9 6 9 6 1 1 2 1 1 2 2 3 1 6 0 7 4 8 2 4 7 7 1 1 2 1 1 2 1 2 3 3 5 3 7 1 5 0 10 9 2 9 7 1 2 1 1 4 2 3 1 2 1 1 1 8 0 10 4 1 1 2 1 5 7 3 7 5 2 1 1 2 1 2 2 1 1 7 0 7 4 4 5 1 4 2 1 1 2 1 3 3 3 3 1 1 1 2 2 1 4 1 3 6 1 6 5 4 3 7 1 7 0 6 7 3 3 5 8 1 1 1 2 2 3 3 1 1 5 0 8 8 1 8 8 4 9 1 1 2 3 1 3 3 1 5 0 7 8 8 8 1 5 5 1 3 1 2 1 1 1 4 3 1 5 5 3 3 5 1 5 0 10 3 9 5 9 5 9 8 3 1 2 1 1 1 1 1 1 9 0 7 6 2 1 3 3 7 2 2 2 2 3 1 2 3 1 2 1 5 0 9 3 7 3 7 1 9 7 3 7 3 2 2 1 2 2 1 4 1 5 3 7 1 5 0 7 1 8 6 6 9 5 5 2 3 2 1 1 1 8 0 9 5 3 2 1 5 3 7 3 9 3 2 3 3 1 2 1 3 1 6 0 10 1 6 5 8 9 5 3 1 2 6 1 2 3 2 1 1 4 5 3 4 3 2 3 3 5 1 5 0 11 7 5 2 1 4 7 4 9 4 3 6 1 1 2 1 2 1 7 0 8 6 8 6 6 1 3 3 1 1 1 1 2 3 1 3 1 8 0 7 3 1 9 4 8 7 4 1 1 3 1 3 3 2 1 2 4 3 4 1 3 6 1 6 0 8 9 1 3 7 2 1 1 1 2 3 1 2 2 1 1 6 0 8 3 5 4 6 6 3 7 1 1 1 1 2 2 1 1 7 0 10 3 6 4 1 1 7 1 6 1 8 1 2 2 2 1 1 1 2 2 3 3 3 3 1 7 2 5 5 5 3 4 1 6 0 9 1 7 1 1 8 6 2 5 1 1 1 2 1 1 1 1 5 0 11 9 2 1 2 7 5 5 8 6 1 7 1 3 1 1 2 1 7 0 7 4 7 8 4 7 1 8 3 3 3 2 2 1 1 1 3 1 2 3 6 1 7 0 9 7 5 1 2 7 9 8 3 7 3 3 1 3 1 1 1 1 6 0 9 6 6 1 3 9 3 8 4 7 1 1 1 1 3 2 1 6 0 7 8 5 6 6 1 5 5 1 2 3 1 3 1 1 2 3 3 5 5 3 6 1 5 0 6 3 4 1 1 7 9 3 2 2 2 1 1 9 0 11 7 1 2 6 7 2 8 5 4 5 7 2 2 3 1 1 2 2 3 1 1 6 0 9 6 6 2 9 5 7 2 1 6 1 1 2 3 3 3 4 2 3 1 2 2 3 7 1 7 0 11 2 9 8 1 1 7 7 4 6 7 5 3 1 2 1 2 3 3 1 6 0 7 9 2 1 3 2 7 8 3 3 2 2 1 1 1 5 0 10 5 5 3 1 8 5 2 2 3 6 1 2 1 2 2 1 4 2 3 2 2 2 3 4 1 5 0 7 1 3 7 2 9 2 9 1 3 3 2 1 1 9 0 7 5 1 4 4 3 3 1 1 1 1 2 1 2 3 1 2 1 8 0 11 3 6 1 3 3 2 8 6 2 6 7 3 1 1 1 2 1 1 3 5 3 5 3 3 3 4 7 4 5 5 3 5 1 6 0 8 3 2 8 1 9 6 1 9 3 1 1 2 2 1 1 9 0 8 1 9 4 6 1 9 9 8 1 3 2 3 1 2 2 3 3 1 8 0 9 5 3 1 9 6 6 7 7 4 1 1 1 1 2 3 1 1 1 1 1 5 4 3 6 1 9 0 11 1 7 4 2 7 4 8 9 3 5 4 1 1 3 3 1 1 2 1 3 1 7 0 9 1 2 2 7 5 5 9 5 3 2 2 3 1 3 3 3 1 8 0 6 1 6 1 2 4 1 3 1 1 2 1 3 1 1 2 2 3 2 3 4 3 7 1 7 0 8 5 9 7 1 5 1 7 7 2 1 1 1 2 1 1 1 9 0 8 3 4 9 3 6 1 2 3 3 2 2 1 2 3 2 1 1 1 8 0 6 2 4 5 5 7 1 3 2 3 1 2 2 2 2 1 1 5 5 3 4 1 3 7 1 8 0 9 1 6 3 9 4 1 9 4 8 2 3 2 3 2 1 1 1 1 9 0 10 4 1 4 5 2 6 1 6 2 2 1 3 3 1 3 2 3 2 2 1 5 0 6 1 9 9 6 5 1 3 1 2 1 1 1 1 2 4 3 3 4 3 7 1 9 0 7 5 5 5 5 1 3 3 3 2 1 3 2 1 2 3 1 1 7 0 6 6 9 7 9 1 5 1 2 3 1 1 3 1 1 9 0 11 5 3 7 6 7 4 8 1 1 8 3 2 1 2 3 2 1 3 1 1 2 3 3 1 4 4 2 4 1 7 5 3 9 7 8 7 2 5 4 3 7 1 6 0 8 9 1 1 7 4 1 1 2 3 2 1 3 2 2 1 8 0 7 8 4 5 4 4 1 2 1 2 2 1 3 3 2 1 1 6 0 10 7 8 4 1 1 7 5 9 5 2 1 1 1 3 1 1 1 2 2 1 5 4 4 3 5 1 8 0 10 3 1 2 1 8 1 5 4 2 7 2 1 3 2 3 2 1 3 1 8 0 10 4 1 8 6 8 6 4 2 5 1 1 2 2 3 2 2 1 1 1 5 0 9 1 5 8 4 1 7 6 7 1 1 1 2 2 2 4 1 3 3 1 3 7 1 8 0 8 1 6 3 2 6 7 2 7 2 2 3 3 1 1 2 1 1 7 0 9 7 1 3 4 5 8 9 1 6 3 1 2 2 2 1 2 1 5 0 7 8 1 8 4 2 5 6 3 1 3 2 2 2 5 3 1 4 2 1 3 5 1 8 0 10 1 1 5 7 3 7 5 1 3 7 1 2 3 1 3 1 2 1 1 8 0 9 3 1 2 1 1 7 8 1 6 3 3 2 1 2 1 1 1 1 5 0 11 5 4 1 5 2 1 6 2 2 6 9 3 3 3 2 1 4 1 1 3 2 3 4 1 7 0 7 5 9 1 2 7 3 9 1 2 3 2 3 2 3 1 5 0 7 4 7 5 8 1 5 3 2 3 3 1 1 1 6 0 9 2 2 8 5 3 1 2 1 6 3 2 2 1 1 3 4 1 3 5 5 1 4 3 4 4 3 5 1 8 0 10 9 5 8 8 3 3 3 1 8 1 2 3 2 1 2 1 3 2 1 6 0 11 4 9 1 2 8 6 7 7 9 6 4 2 1 1 1 3 2 1 6 0 8 2 3 1 3 6 4 8 8 2 1 3 2 3 1 1 2 4 3 2 3 4 1 9 0 10 5 6 5 8 4 1 5 8 1 5 1 3 1 2 1 1 1 2 1 1 8 0 7 6 2 8 3 9 6 1 2 1 1 3 2 3 2 2 1 7 0 6 9 9 2 5 6 1 1 2 3 1 2 3 2 1 5 4 2 3 5 1 6 0 6 1 4 4 1 9 1 1 1 2 1 3 2 1 5 0 10 9 9 4 1 6 5 3 8 3 9 3 1 3 3 1 1 8 0 9 6 8 1 3 8 6 1 4 5 3 1 2 3 3 1 3 2 3 5 2 4 3 3 6 1 7 0 6 8 1 2 4 5 9 1 3 2 3 3 2 1 1 6 0 6 6 1 8 7 5 1 2 3 1 2 1 1 1 5 0 8 9 1 7 5 3 9 5 5 2 1 2 2 1 1 2 2 2 4 1 4 1 6 5 4 3 3 5 1 9 0 10 3 6 1 2 9 6 8 2 9 5 1 2 1 1 3 3 2 1 3 1 9 0 9 6 3 4 7 5 1 6 4 9 1 2 2 1 3 1 1 2 1 1 8 0 8 7 2 6 6 1 3 8 1 1 3 3 1 1 1 1 1 2 3 1 2 5 3 5 1 7 0 10 8 8 8 1 8 5 4 6 1 3 2 2 2 3 1 3 1 1 8 0 10 1 2 1 8 7 3 2 2 6 3 1 3 2 2 3 3 1 1 1 5 0 11 1 9 6 7 1 8 8 8 2 6 6 2 2 2 1 2 4 3 2 1 4 3 6 1 7 0 10 3 6 1 7 9 3 3 1 8 9 3 3 2 3 2 1 3 1 9 0 7 2 2 2 4 5 9 1 2 2 2 2 2 1 1 3 2 1 7 0 7 1 1 3 9 5 3 4 1 1 1 2 1 3 1 3 2 3 1 4 3 3 7 1 6 0 10 6 7 4 3 1 1 8 4 3 6 2 1 1 3 1 3 1 7 0 6 1 1 4 2 8 3 1 2 1 1 1 2 2 1 9 0 10 6 9 1 8 5 5 4 8 5 1 2 3 3 2 1 2 1 3 3 4 2 2 5 3 3 1 4 2 3 5 5 3 6 1 7 0 9 9 9 8 1 7 5 1 3 3 2 3 2 1 3 1 1 1 7 0 7 4 1 9 9 3 1 8 1 1 3 1 2 1 1 1 9 0 9 9 9 8 5 2 7 2 5 1 2 1 1 1 2 2 3 1 3 1 4 1 2 3 5 3 4 1 7 0 6 7 4 4 3 6 1 1 3 2 1 1 2 3 1 6 0 6 3 1 9 5 5 5 3 3 1 1 2 1 1 9 0 8 8 8 4 5 4 1 5 7 1 3 2 3 1 3 2 2 2 1 4 3 5 3 6 1 9 0 10 7 7 2 9 5 1 4 2 1 4 3 2 3 3 2 1 2 3 1 1 9 0 8 1 6 4 7 1 4 9 1 1 3 2 3 3 2 2 2 3 1 6 0 9 9 8 6 6 6 1 6 4 9 3 2 1 3 3 1 1 2 4 1 3 4 3 5 1 6 0 10 3 1 7 3 9 7 5 6 7 8 2 1 1 1 2 2 1 5 0 8 1 9 1 4 8 1 2 5 1 2 1 3 2 1 7 0 9 4 6 9 6 1 6 8 5 6 1 3 1 1 1 1 2 3 2 1 3 1 3 5 1 7 0 6 9 8 8 1 3 5 1 2 1 1 3 2 3 1 9 0 8 4 8 7 9 3 7 1 7 2 2 1 3 1 1 2 3 2 1 9 0 7 3 2 8 1 8 3 2 3 3 1 1 3 1 1 1 1 1 2 3 3 4 5 5 5 2 2 5 3 3 5 1 7 0 8 1 1 1 5 1 8 5 3 3 2 1 2 1 2 2 1 7 0 9 5 1 8 1 5 4 8 6 5 1 1 2 3 1 2 3 1 6 0 10 1 9 8 4 5 7 1 7 5 1 3 1 2 2 1 1 2 2 1 2 5 3 5 1 6 0 9 8 3 3 1 2 5 1 3 6 1 2 2 3 1 2 1 6 0 8 5 2 5 1 4 4 4 1 3 1 2 2 1 1 1 5 0 10 6 3 3 1 3 7 5 3 8 8 1 3 2 2 1 1 3 4 2 5 3 6 1 9 0 8 6 8 1 4 8 1 6 8 1 3 2 3 1 3 3 1 3 1 7 0 7 7 1 1 1 3 4 9 2 1 3 2 2 1 2 1 8 0 8 3 6 2 8 5 1 6 1 2 2 2 3 1 1 2 1 4 1 1 3 1 3 3 6 1 8 0 10 3 2 9 1 3 1 6 8 4 3 1 1 2 1 2 2 2 2 1 8 0 10 4 1 3 7 4 4 2 3 6 1 1 1 3 1 2 1 3 1 1 5 0 8 8 9 1 3 1 6 5 2 2 1 1 2 3 2 5 2 2 3 1 3 6 1 7 0 6 6 6 1 1 2 3 2 1 3 1 2 2 3 1 5 0 11 9 3 2 7 4 7 6 3 1 6 6 3 3 1 2 1 1 8 0 11 9 1 5 8 7 1 2 1 1 9 2 1 2 1 2 2 1 1 1 2 4 3 5 2 3 3 2 1 5 3 3 4 1 9 0 6 8 8 5 6 1 2 2 3 3 1 2 2 2 2 1 1 7 0 6 9 7 9 1 3 9 3 3 1 1 2 1 2 1 5 0 6 2 5 1 5 9 5 1 2 1 2 1 3 5 5 2 3 7 1 7 0 7 2 2 2 1 3 5 1 1 3 1 2 2 3 3 1 9 0 10 4 1 3 9 5 4 4 1 5 1 3 2 2 3 2 1 1 2 3 1 8 0 11 2 9 6 8 3 6 1 1 1 4 4 3 1 3 1 3 1 2 3 2 1 4 5 4 4 1 3 6 1 7 0 8 1 3 6 4 1 5 7 7 1 2 1 3 3 1 2 1 5 0 10 9 1 4 1 3 3 8 4 5 6 3 2 1 1 2 1 9 0 9 2 6 9 1 5 9 6 4 4 3 1 1 1 2 2 2 2 3 2 2 1 2 5 1 3 7 1 6 0 8 9 1 4 4 1 2 6 8 1 1 1 3 3 3 1 5 0 8 1 6 7 1 4 4 8 3 2 2 3 3 1 1 6 0 10 1 4 8 7 1 2 9 8 9 7 1 2 2 3 1 3 5 5 2 4 2 2 3 3 4 1 5 0 8 1 5 8 2 7 9 8 1 3 3 3 1 1 1 5 0 9 5 1 2 4 6 8 2 4 1 3 3 3 1 1 1 7 0 7 7 4 9 4 1 7 1 3 1 3 3 3 3 1 5 5 2 1 3 1 4 5 5 3 4 1 8 0 10 7 1 9 2 7 1 6 9 6 8 1 1 2 3 3 2 3 1 1 7 0 7 3 1 9 8 1 4 2 1 3 3 2 2 3 2 1 7 0 10 5 6 5 7 8 1 6 6 8 4 2 1 1 3 2 3 3 2 2 5 3 3 6 1 9 0 9 7 9 4 5 1 1 5 7 2 1 1 1 2 3 3 1 1 1 1 6 0 9 9 2 5 3 7 1 1 8 3 1 1 3 3 3 1 1 6 0 9 5 2 7 2 1 8 1 8 1 1 1 1 2 1 3 3 5 1 1 2 4 3 4 1 8 0 10 3 6 3 8 4 5 1 6 8 2 1 1 1 2 1 2 1 2 1 7 0 7 1 5 6 1 4 5 9 1 3 2 2 1 3 1 1 8 0 8 9 2 9 9 6 8 1 1 3 3 3 2 1 1 1 3 1 4 3 4 3 4 1 6 0 10 3 9 2 3 9 1 1 4 2 1 2 2 1 1 3 3 1 7 0 10 1 5 1 7 2 1 2 2 8 3 1 1 1 1 2 1 3 1 8 0 6 9 8 1 3 4 6 1 1 3 2 3 2 2 3 3 5 5 4 3 6 1 5 0 11 1 8 8 4 9 1 3 4 3 7 5 2 1 1 2 3 1 8 0 7 1 3 5 6 7 6 4 1 1 1 3 2 1 1 1 1 7 0 11 3 3 7 3 7 7 8 3 3 5 1 3 3 1 3 3 2 2 2 5 5 4 2 5 6 1 6 5 3 4 5 6 3 5 3 3 6 1 6 0 8 1 1 3 4 2 1 1 7 3 1 1 3 1 1 1 8 0 8 4 1 1 9 2 9 9 4 1 1 3 1 1 3 3 1 1 5 0 10 1 2 9 3 8 5 9 3 4 8 3 2 3 1 2 3 5 2 5 3 4 3 5 1 9 0 6 2 3 7 1 6 7 2 1 2 3 2 2 2 3 1 1 6 0 9 8 1 8 9 5 7 4 1 4 2 1 1 3 1 2 1 6 0 9 6 8 6 1 5 2 1 3 6 1 3 1 2 1 1 3 3 3 2 5 3 5 1 9 0 7 6 3 3 3 1 3 3 1 3 1 1 2 1 2 2 2 1 9 0 10 3 6 8 7 4 4 9 1 1 3 3 2 2 3 2 1 2 1 1 1 6 0 6 1 8 4 3 8 8 1 2 1 3 3 3 3 3 2 4 1 3 6 1 8 0 11 8 9 6 2 1 1 1 9 8 2 5 2 1 3 2 1 1 1 1 1 9 0 10 9 5 8 1 1 4 4 1 7 7 2 3 1 1 2 2 3 2 3 1 6 0 11 1 5 8 9 5 7 6 8 6 1 6 1 1 1 1 2 3 4 1 1 4 2 3 3 4 1 9 0 9 4 1 9 6 6 9 8 1 2 2 3 1 2 1 3 2 2 1 1 6 0 9 3 7 1 2 2 5 4 2 2 1 2 2 1 3 2 1 7 0 9 5 5 1 6 1 5 1 6 6 2 3 1 1 1 1 1 1 5 4 5 3 4 5 4 4 3 5 1 7 0 7 5 6 5 7 1 4 9 3 3 1 3 1 1 3 1 5 0 9 1 1 9 9 2 9 9 5 9 2 1 3 1 1 1 8 0 8 8 1 4 6 4 7 8 4 1 3 3 1 3 2 3 3 3 3 5 1 4 3 7 1 9 0 7 6 8 2 1 8 3 9 3 1 3 3 2 3 1 1 3 1 7 0 8 1 5 9 4 2 7 2 9 1 1 1 1 2 1 1 1 5 0 11 8 5 1 4 2 6 1 1 4 9 4 1 1 1 2 1 3 2 5 3 1 4 4 3 4 1 7 0 11 9 5 7 1 8 1 2 7 9 7 5 1 1 2 3 2 3 1 1 6 0 10 2 1 9 3 8 3 1 5 4 5 3 2 1 3 1 1 1 9 0 10 3 5 8 9 4 3 1 6 3 3 3 3 2 3 1 2 3 3 2 3 1 1 4 3 7 1 9 0 8 1 1 8 5 2 6 8 7 2 3 3 2 1 1 1 1 3 1 6 0 7 7 5 8 3 1 1 1 1 2 1 3 1 1 1 6 0 7 1 8 3 8 2 5 5 3 2 2 2 3 1 3 2 5 3 3 5 2 2 6 4 5 5 5 3 6 1 9 0 10 8 9 6 9 9 6 1 1 7 3 3 2 2 1 1 3 1 2 1 1 6 0 11 1 4 7 8 9 5 4 2 1 6 1 1 2 1 1 3 3 1 8 0 8 8 1 7 6 7 5 7 9 2 2 3 2 1 3 3 3 1 3 5 2 1 3 3 5 1 5 0 9 3 7 2 1 2 7 5 1 1 3 2 2 1 1 1 8 0 6 7 1 6 9 1 8 3 2 3 2 2 1 1 1 1 7 0 9 7 2 9 4 1 8 1 1 1 2 1 2 3 1 1 3 2 1 4 4 3 3 4 1 7 0 7 9 7 1 6 2 6 1 2 3 1 1 2 1 2 1 9 0 8 9 9 3 3 5 3 1 1 2 1 1 1 2 1 3 1 3 1 5 0 6 1 1 6 6 2 5 1 2 3 3 1 4 2 3 5 3 4 1 5 0 10 2 6 1 4 1 7 4 2 3 2 1 2 2 3 2 1 7 0 11 1 3 5 1 3 3 7 1 5 1 5 2 1 3 2 1 2 1 1 8 0 8 4 1 8 2 8 4 3 1 2 3 1 2 2 1 2 2 2 2 1 3 3 4 1 8 0 8 5 6 9 5 7 4 1 4 1 3 3 2 2 3 2 1 1 5 0 10 4 5 5 2 7 6 3 1 9 5 1 2 2 2 1 1 8 0 7 2 9 5 1 2 5 6 3 1 1 3 1 1 1 3 2 3 1 4 2 2 4 2 3 5 3 3 4 1 6 0 11 1 8 7 7 1 6 6 5 3 1 2 1 2 3 3 1 1 1 5 0 9 5 1 1 8 1 9 3 3 6 3 1 1 2 3 1 5 0 11 9 5 6 8 6 2 1 8 7 4 1 1 3 2 1 1 2 4 1 1 3 6 1 9 0 6 9 3 3 4 1 7 1 3 2 1 1 1 2 3 1 1 6 0 10 1 3 8 2 8 5 4 8 2 8 1 2 3 2 3 2 1 5 0 7 7 4 4 7 1 7 8 1 3 3 1 3 2 4 1 3 2 3 3 6 1 5 0 9 4 5 7 7 3 2 2 1 5 1 3 3 3 1 1 6 0 11 3 5 1 5 4 9 9 4 2 9 7 3 3 1 1 3 2 1 7 0 10 9 7 8 1 9 3 2 2 9 6 2 3 1 2 2 1 3 3 3 3 1 2 1 3 7 1 6 0 7 7 6 4 7 8 5 1 2 3 1 2 3 1 1 9 0 7 7 4 1 5 5 7 8 3 1 1 1 3 3 1 2 2 1 8 0 6 3 1 8 2 4 3 1 2 3 1 1 2 2 2 5 4 1 2 4 1 1 3 6 1 5 0 6 3 7 1 6 4 6 2 3 1 1 1 1 8 0 10 1 8 3 1 5 1 4 1 3 6 1 2 1 2 2 1 2 1 1 5 0 11 8 5 2 3 4 4 4 5 1 1 8 3 1 3 3 2 3 1 2 1 2 1 4 2 1 5 3 3 4 1 7 0 9 1 1 9 6 3 9 2 5 5 3 3 1 2 2 1 3 1 8 0 9 6 9 8 4 8 1 6 2 4 1 1 1 2 1 1 2 3 1 7 0 9 6 8 4 4 1 1 3 1 2 1 3 2 2 3 1 3 3 5 1 2 3 6 1 9 0 7 7 5 1 9 9 3 6 3 1 3 2 1 2 3 1 1 1 6 0 6 7 1 6 9 2 3 2 3 2 3 3 1 1 6 0 8 3 6 5 9 1 7 9 7 2 1 3 2 1 1 3 5 1 3 1 3 3 4 1 5 0 8 1 2 9 1 9 7 7 5 3 3 2 1 1 1 5 0 11 5 5 8 3 1 7 5 8 4 1 1 1 1 3 3 2 1 7 0 10 8 3 2 1 7 2 8 7 9 7 1 2 1 3 3 1 3 1 2 2 1 3 6 1 6 0 10 2 8 7 5 1 7 1 8 4 1 3 1 1 2 2 2 1 6 0 9 8 9 8 1 9 1 1 1 3 2 1 2 2 1 1 1 5 0 8 1 5 1 5 8 6 4 6 3 3 2 1 2 4 2 3 2 2 2 3 4 1 8 0 6 4 4 6 5 1 9 2 1 2 1 3 1 2 1 1 8 0 10 2 1 1 8 1 3 2 1 2 1 2 1 3 3 3 1 2 2 1 6 0 8 2 4 1 1 3 4 7 1 2 1 3 1 1 1 1 1 3 3 3 5 2 4 3 3 7 1 6 0 10 1 2 4 5 3 5 9 7 8 1 1 1 3 1 3 2 1 5 0 8 7 1 4 1 2 7 4 1 3 1 3 3 2 1 9 0 11 9 9 7 4 3 4 4 9 1 2 3 1 2 1 3 1 2 1 3 1 2 3 4 3 2 2 1 3 6 1 9 0 10 3 4 6 5 8 1 1 9 2 2 3 3 2 2 2 2 1 2 3 1 5 0 9 4 1 3 9 9 5 5 1 1 1 3 2 1 3 1 9 0 9 1 6 2 6 9 2 1 9 9 1 1 1 3 3 1 1 2 1 3 3 1 1 1 3 3 6 1 5 0 11 2 7 7 3 1 1 3 8 1 9 6 1 1 1 1 3 1 9 0 8 7 3 1 7 9 5 1 8 2 1 1 1 1 2 2 3 3 1 9 0 11 9 1 7 1 8 1 1 3 4 6 3 2 1 2 2 3 2 3 1 1 3 5 4 4 5 5 3 4 1 7 0 6 9 2 6 1 1 1 3 3 3 1 3 1 1 1 6 0 11 9 2 2 1 2 5 7 7 4 5 7 1 3 3 1 1 2 1 6 0 7 6 1 9 9 1 3 5 2 1 1 1 3 2 4 4 3 1 1 2 1 8 7 5 7 2 4 5 3 6 1 7 0 8 1 6 7 2 5 2 1 1 2 2 2 1 2 1 2 1 9 0 9 9 4 3 4 5 9 1 2 8 3 1 1 2 2 1 3 1 1 1 7 0 7 6 4 8 2 1 4 8 3 3 1 1 2 2 2 5 2 5 4 1 3 3 7 1 8 0 9 8 7 3 3 6 1 5 1 9 3 3 3 1 3 2 1 3 1 6 0 11 4 7 4 3 8 7 1 7 1 2 8 1 1 3 2 1 3 1 5 0 8 9 1 1 8 7 2 2 1 1 1 1 1 2 4 5 1 5 3 5 3 3 4 1 5 0 6 8 7 2 1 1 1 3 1 2 3 2 1 5 0 6 9 5 1 5 7 3 2 2 1 1 3 1 5 0 6 9 4 1 3 1 5 1 2 1 3 1 3 4 2 3 3 7 1 6 0 9 9 8 3 1 7 6 8 7 8 3 3 2 1 1 1 1 7 0 10 2 7 5 2 8 7 6 1 3 2 2 1 3 1 1 1 2 1 6 0 7 1 1 8 9 2 7 2 2 3 1 1 3 2 5 5 5 3 4 2 4 4 2 2 3 1 5 4 3 6 1 9 0 8 7 5 1 9 3 4 7 6 3 2 1 2 1 1 3 2 2 1 5 0 6 9 8 7 3 8 1 1 1 3 1 2 1 9 0 10 8 5 5 3 1 3 5 4 1 7 2 1 2 3 1 1 1 2 1 4 1 1 1 5 2 3 6 1 6 0 6 9 9 1 2 4 1 1 1 1 2 2 3 1 5 0 6 8 2 4 5 6 1 2 1 1 1 2 1 9 0 7 4 1 2 2 2 4 5 2 2 1 3 3 2 2 2 1 2 1 2 5 1 1 3 5 1 7 0 11 5 3 1 7 1 8 8 8 4 9 9 3 3 1 1 3 1 3 1 5 0 10 6 5 1 3 8 8 7 2 1 5 3 2 3 1 1 1 8 0 11 1 1 3 7 8 3 5 9 5 2 3 1 1 3 3 2 1 1 3 3 5 3 3 1 3 5 1 5 0 8 9 1 6 5 1 4 8 1 3 1 3 1 2 1 5 0 6 1 6 2 9 9 4 3 2 3 1 1 1 5 0 11 3 5 4 2 4 1 1 1 3 4 6 2 1 3 2 2 3 4 4 1 5 3 7 1 9 0 8 1 5 9 2 6 8 4 1 3 3 1 1 3 3 3 3 3 1 7 0 8 4 1 1 1 7 2 5 5 1 2 1 3 1 1 1 1 8 0 8 8 5 9 2 5 7 4 1 2 1 1 1 1 1 2 2 1 4 2 2 5 3 5 4 2 1 7 5 3 3 6 1 9 0 9 5 1 7 6 2 1 9 3 1 1 2 1 3 2 3 1 1 1 1 7 0 9 6 1 5 4 4 1 3 5 4 1 1 3 3 1 2 3 1 6 0 7 5 3 8 3 7 7 1 2 3 2 3 2 1 4 1 5 2 5 2 3 7 1 8 0 8 2 3 6 6 4 1 1 4 3 2 3 3 2 2 1 2 1 9 0 10 4 2 5 3 6 3 9 2 1 1 1 2 3 2 2 1 3 1 3 1 6 0 9 5 4 8 8 3 1 1 3 6 3 2 3 3 1 1 4 3 2 5 3 5 3 3 5 1 5 0 11 1 6 8 1 2 3 5 7 7 3 8 1 3 2 1 3 1 6 0 10 6 9 3 7 5 5 1 1 5 6 1 3 2 1 1 2 1 5 0 10 3 7 3 1 5 1 7 6 2 9 2 2 1 2 1 5 2 2 1 2 3 7 1 8 0 6 6 5 1 1 3 7 2 1 3 2 1 2 1 2 1 7 0 7 7 5 4 3 8 1 3 1 2 3 1 1 1 3 1 7 0 11 4 4 6 7 6 1 5 7 2 8 1 2 3 3 1 2 3 1 1 4 1 1 5 5 1 3 6 1 5 0 9 6 2 4 3 5 1 5 1 7 3 3 2 1 2 1 9 0 10 6 1 3 1 8 9 3 8 5 4 1 1 2 3 1 3 3 1 2 1 7 0 9 5 3 7 5 4 1 1 1 6 1 2 1 3 2 2 1 2 1 2 3 1 5 6 1 6 5 3 3 7 1 6 0 9 8 1 9 8 7 1 5 3 2 1 3 1 3 3 1 1 5 0 8 8 3 8 5 1 1 5 4 1 3 1 2 3 1 6 0 9 6 7 2 3 1 5 5 7 5 1 1 2 1 3 3 5 3 1 1 5 4 5 3 4 1 8 0 6 8 6 7 1 5 8 1 1 1 1 2 1 1 2 1 7 0 9 1 5 7 9 1 9 9 1 4 1 3 2 2 1 2 1 1 5 0 11 6 7 1 2 8 3 2 7 4 6 5 1 1 1 3 3 3 3 1 4 3 6 1 8 0 9 8 2 2 1 6 6 9 2 1 3 2 3 3 2 2 1 2 1 7 0 7 4 7 1 1 2 8 3 2 1 1 3 2 3 3 1 9 0 6 8 1 1 1 7 2 1 1 2 3 2 1 1 3 2 1 5 3 5 3 1 3 5 1 5 0 7 8 3 3 1 7 7 1 2 3 3 3 1 1 8 0 11 3 1 6 8 7 1 5 2 9 5 6 1 1 2 1 2 2 3 1 1 6 0 7 1 6 2 6 9 1 1 2 1 1 1 1 2 2 4 2 5 4 3 5 1 7 0 9 3 9 3 8 8 1 2 2 8 3 1 2 1 3 2 3 1 5 0 7 1 8 4 7 7 2 6 2 3 1 3 1 1 7 0 9 9 1 4 8 7 8 9 9 1 3 2 3 2 3 2 1 2 5 4 2 5 5 5 6 5 4 3 4 1 8 0 11 2 5 5 4 1 6 4 1 4 1 4 2 2 3 1 2 2 2 1 1 6 0 9 1 8 3 5 6 1 2 3 2 1 2 2 2 1 3 1 5 0 8 8 1 5 8 1 5 2 7 2 2 1 3 1 4 3 2 3 3 7 1 5 0 7 7 6 9 1 6 1 7 3 1 3 1 1 1 5 0 6 7 8 3 1 2 8 1 3 3 2 3 1 9 0 9 7 9 3 1 7 1 9 9 4 1 1 1 2 1 1 3 3 2 2 1 3 3 3 1 5 3 6 1 7 0 11 7 1 3 2 1 1 6 5 4 5 5 1 2 1 3 1 3 3 1 6 0 6 1 2 9 7 7 1 2 1 2 3 1 3 1 8 0 10 6 9 1 9 8 9 3 4 1 5 1 1 1 1 2 1 1 1 3 3 3 5 1 4 3 7 1 5 0 8 8 3 4 8 7 1 7 9 1 3 1 2 1 1 6 0 11 9 1 7 1 6 8 8 9 3 5 5 3 2 1 2 1 1 1 5 0 9 9 9 7 1 7 1 2 1 4 2 2 2 1 2 3 3 1 5 1 1 3 3 6 1 7 0 10 3 4 8 6 8 6 1 9 3 3 1 2 3 3 1 2 3 1 9 0 9 1 9 8 3 9 1 8 7 2 1 3 1 3 1 3 3 2 3 1 7 0 8 9 1 4 8 7 5 5 6 1 2 3 3 3 3 2 4 5 4 2 4 1 4 5 5 7 5 4 3 4 1 5 0 8 8 1 6 6 6 8 8 1 1 1 1 2 2 1 6 0 10 5 9 1 3 8 8 9 7 2 9 3 1 3 2 2 1 1 6 0 8 5 7 2 1 3 3 6 1 3 1 1 1 2 1 2 1 2 4 3 4 1 7 0 10 1 2 2 5 9 1 1 7 1 6 3 2 2 3 3 1 2 1 8 0 10 1 9 4 7 7 8 3 3 9 4 2 1 2 3 1 2 2 1 1 7 0 8 7 4 6 4 1 2 6 7 1 2 1 2 1 1 2 1 5 5 3 3 5 1 5 0 10 6 7 2 1 5 1 9 8 8 9 2 1 1 1 1 1 8 0 10 2 1 9 6 1 1 4 7 9 5 1 3 3 2 3 1 3 1 1 5 0 11 5 4 7 7 5 9 5 5 7 1 7 1 1 1 1 3 4 3 1 1 2 3 7 1 8 0 9 9 5 1 7 6 5 7 4 8 1 1 3 3 3 1 1 2 1 5 0 9 1 8 5 3 4 8 5 1 6 1 2 3 1 3 1 5 0 7 1 6 6 8 7 3 7 3 1 3 1 3 1 2 5 2 3 5 3 3 4 1 6 0 10 1 4 2 2 6 8 6 6 3 6 1 3 1 2 1 2 1 7 0 11 3 3 2 1 1 9 1 1 4 7 7 1 3 1 1 1 2 3 1 8 0 11 6 2 1 4 3 9 8 4 4 6 2 2 2 1 1 1 2 2 2 3 3 3 5 1 4 4 6 5 5 3 7 1 7 0 7 6 6 3 2 7 1 5 3 3 1 3 1 3 1 1 6 0 11 5 7 1 2 5 5 1 5 5 9 4 1 1 1 3 1 2 1 6 0 7 5 5 6 5 4 1 8 1 1 2 2 1 2 3 3 5 5 2 3 2 3 5 1 6 0 9 4 6 5 8 4 5 1 1 5 1 3 1 1 3 3 1 7 0 10 3 2 1 9 3 2 3 4 9 1 1 3 1 2 1 1 2 1 8 0 9 9 1 3 1 1 4 4 9 9 3 3 1 3 1 3 2 2 1 3 3 2 2 3 7 1 8 0 6 1 7 2 7 1 5 1 3 3 1 1 3 2 3 1 9 0 9 3 2 4 1 9 1 8 1 9 3 1 3 1 3 3 1 1 1 1 6 0 9 5 5 1 6 4 7 2 8 6 1 2 3 1 1 2 2 4 2 1 4 1 2 3 6 1 9 0 10 1 5 1 3 7 4 6 3 7 2 3 1 1 1 2 1 1 3 2 1 9 0 6 7 4 1 1 1 8 2 2 1 2 3 2 3 1 2 1 8 0 6 8 1 5 2 8 4 1 3 2 2 3 2 1 1 1 2 5 1 4 2 3 4 1 8 0 11 1 5 8 3 4 7 8 5 6 5 8 3 3 3 2 3 1 2 3 1 5 0 6 1 7 9 6 1 1 2 2 1 2 1 1 5 0 11 4 1 4 1 7 4 3 3 2 2 3 1 3 2 1 1 4 2 3 3 4 7 4 3 2 7 5 7 6 10 3 1 4 3 1 4 6 2 diff --git a/2018/inputs/9.txt b/2018/inputs/9.txt new file mode 100644 index 0000000..eaf3e92 --- /dev/null +++ b/2018/inputs/9.txt @@ -0,0 +1 @@ +438 players; last marble is worth 71626 points diff --git a/2018/license.org b/2018/license.org new file mode 100644 index 0000000..8d31e87 --- /dev/null +++ b/2018/license.org @@ -0,0 +1,21 @@ +* The MIT License + +Copyright (c) 2018 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/2018/readme.org b/2018/readme.org new file mode 100644 index 0000000..7fe82e4 --- /dev/null +++ b/2018/readme.org @@ -0,0 +1,38 @@ +* Advent of Code 2018 + +** What is Advent of Code? + +Advent of Code is a programming advent calendar. On the 25 days of +December leading up to Christmas, each morning a new programming +challenge is unlocked. The race is then on to see who can solve the +challenge and get the answer to their particular input first. + +It's a lot of fun. I have my solutions posted here so that I can share +them with my friends, as well as the broader community if they're +interested. + +** A note on error handling and code quality + +The only important metric to consider in terms of taking the Advent of +Code challenges seriously from a competitive point of view is how +quickly you arrive at an answer for your particular input. + +These solutions should not in any way be seen as an example of good +coding standards in Rust. The error handling in particular is +appalling. The reason for this is that I can look at the input data +and be certain that some error cases won't come up, like empty +lists. I can also assume that things like file system access will +always work because I'm only running it on my machine under my +supervision. + +When my assumptions are wrong, the program panics and dies, but I'm +currently there programming it when it's running so that isn't really +a big deal. + +The short version of what I'm trying to say is that even though I use +~unwrap~ all over the place in this particular repo, I still think +it's a really bad idea to use it in a real project. + +** License + +See [[./license.org]]. diff --git a/2018/src/bin/day_1.rs b/2018/src/bin/day_1.rs new file mode 100644 index 0000000..4693579 --- /dev/null +++ b/2018/src/bin/day_1.rs @@ -0,0 +1,32 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +extern crate im_rc; + +use std::error::Error; +use std::path::PathBuf; + +use im_rc::HashSet; + +// cargo watch -cs "cargo run --release --bin day_1" + +fn main() -> Result<(), Box> { + let input = read_file(&PathBuf::from("inputs/1.txt"))?; + let input_ints: Vec = input.iter().map(|str| str.parse::().unwrap()).collect(); + + println!("Input: {:?}", input_ints); + + let sum: i32 = input_ints.iter().sum(); + println!("Sum: {}", sum); + + let first_repeat = input_ints.iter().cycle().try_fold((0, HashSet::new()), |(acc, seen), &i| { + if seen.contains(&acc) { + Err(acc) + } else { + Ok((acc + i, seen.update(acc))) + } + }).err().unwrap(); + println!("First repeat: {}", first_repeat); + + Ok(()) +} diff --git a/2018/src/bin/day_10.rs b/2018/src/bin/day_10.rs new file mode 100644 index 0000000..082be7c --- /dev/null +++ b/2018/src/bin/day_10.rs @@ -0,0 +1,82 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::str::FromStr; + +use std::error::Error; +use std::path::PathBuf; + +use std::i32; + +// cargo watch -cs "cargo run --release --bin day_10" + + + +#[derive(Debug, Clone)] +struct Star { + x: i32, + y: i32, + dx: i32, + dy: i32 +} + +impl FromStr for Star { + type Err = Box; + + fn from_str(s: &str) -> Result { + let split = s + .split(|c: char| c != '-' && !c.is_numeric()) + .filter(|s| !s.is_empty()) + .map(|s| s.parse()) + .collect::, _>>()?; + + Ok(Star { + x: split[0], + y: split[1], + dx: split[2], + dy: split[3] + }) + } +} + +fn main() -> Result<(), Box> { + let input = read_file(&PathBuf::from("inputs/10.txt"))?; + let mut stars = input.iter().map(|line| line.parse::().unwrap()).collect::>(); + + //debug!(input); + //debug!(stars); + + let screen_width = 80; + let screen_height = 80; + + for seconds in 0..1000000 { + let min_x = stars.iter().map(|s| s.x).min().unwrap(); + let max_x = stars.iter().map(|s| s.x).max().unwrap(); + let min_y = stars.iter().map(|s| s.y).min().unwrap(); + let max_y = stars.iter().map(|s| s.y).max().unwrap(); + + if max_x - min_x < screen_width && max_y - min_y < screen_height { + debug!(seconds); + for y in min_y..max_y+1 { + for x in min_x..max_x+1 { + let star_at_point = stars.iter().any(|s| s.x == x && s.y == y); + if star_at_point { + print!("#"); + } else { + print!(" "); + } + } + println!(); + } + println!(); + println!(); + } + + for star in &mut stars { + star.x += star.dx; + star.y += star.dy; + } + } + + Ok(()) +} diff --git a/2018/src/bin/day_11.rs b/2018/src/bin/day_11.rs new file mode 100644 index 0000000..0e458a3 --- /dev/null +++ b/2018/src/bin/day_11.rs @@ -0,0 +1,66 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::error::Error; +use std::i32; + +// cargo watch -cs "cargo run --release --bin day_11" + +fn main() -> Result<(), Box> { + let input = 1723; + + println!("Input: {:?}", input); + + let powers = precompute_powers(input); + + let power_per_size = (1..300).map(|size| { + (1..302-size).map(|left| { + (1..302-size).map(|top| { + (power_for_block(left, top, size, &powers), (left, top, size)) + }).max_by_key(|(p, _)| *p).unwrap() + }).max_by_key(|(p, _)| *p).unwrap() + }).collect::>(); + + let (max_power_at_size_3, coordinate_at_size_3) = power_per_size[2]; // index from 0 vs 1 + debug!(max_power_at_size_3); + debug!(coordinate_at_size_3); + + let (max_power, coordinate) = power_per_size.iter().max_by_key(|(p, _)| p).unwrap(); + + debug!(max_power); + debug!(coordinate); + + Ok(()) +} + +fn power_for_block(left: i32, top: i32, size: i32, powers: &[[i32;300];300]) -> i32 { + (left..left+size).map(|x| { + (top..top+size).map(|y| { + powers[x as usize - 1][y as usize - 1] + }).sum::() + }).sum() +} + +fn precompute_powers(input: i32) -> [[i32;300];300] { + let mut powers: [[i32;300];300] = [[0;300];300]; + for x in 1..301 { + for y in 1..301 { + powers[x as usize - 1][y as usize - 1] = power_from_coordinates(x, y, input); + } + } + powers +} + +fn power_from_coordinates(x: i32, y: i32, input: i32) -> i32 { + let rack_id = x + 10; + ((((rack_id * y) + input) * rack_id / 100) % 10) - 5 +} + + +#[test] +fn power_from_coord_example() { + assert_eq!(power_from_coordinates(3, 5, 8), 4); + assert_eq!(power_from_coordinates(122, 79, 57), -5); + assert_eq!(power_from_coordinates(217,196, 39), 0); + assert_eq!(power_from_coordinates(101, 153, 71), 4); +} diff --git a/2018/src/bin/day_12.rs b/2018/src/bin/day_12.rs new file mode 100644 index 0000000..65a966d --- /dev/null +++ b/2018/src/bin/day_12.rs @@ -0,0 +1,102 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::error::Error; +use std::path::PathBuf; + +use std::str::FromStr; + +// cargo watch -cs "cargo run --release --bin day_12" + +use std::collections::HashSet; + +#[derive(Debug)] +struct Rule { + input: [bool; 5], + output: bool +} + +impl FromStr for Rule { + type Err = Box; + + fn from_str(s: &str) -> Result { + //##..# => # + let mut input = [false; 5]; + let mut iter = s.chars().filter(|c| *c == '#' || *c == '.'); + for (i, c) in iter.by_ref().take(5).enumerate() { + if c == '#' { + input[i] = true; + } + } + Ok(Rule { + input, + output: iter.next() == Some('#') + }) + } +} + +impl Rule { + fn matches(&self, state: &HashSet, index: i64) -> bool { + self.input.iter().enumerate().all(|(i, expected)| { + let pot_index = index - 2 + i as i64; + *expected == state.contains(&pot_index) + }) + } +} + +fn main() -> Result<(), Box> { + let input = read_file(&PathBuf::from("inputs/12.txt"))?; + + println!("Input: {:?}", input); + + let mut initial_state: HashSet = HashSet::new(); + for (i, c) in input[0].chars().filter(|c| *c == '#' || *c == '.').enumerate() { + if c == '#' { + initial_state.insert(i as i64); + } + } + let rules = input.iter().skip(1).map(|line| line.parse()).collect::, Box>>()?; + + debug!(initial_state); + debug!(rules); + + let part1_time = 20; + let part2_time = 50000000000; + + let part1_final_state = iterate_states(&initial_state, &rules, part1_time); + let sum_of_part1_pot_numbers: i64 = part1_final_state.iter().sum(); + debug!(sum_of_part1_pot_numbers); + + let part2_final_state = iterate_states(&initial_state, &rules, part2_time); + let sum_of_part2_pot_numbers: i64 = part2_final_state.iter().sum(); + debug!(sum_of_part2_pot_numbers); + + Ok(()) +} + +fn iterate_states(initial_state: &HashSet, rules: &[Rule], time: i64) -> HashSet { + let mut current_state = initial_state.clone(); + for current_time in 0..time { + let mut new_state = HashSet::new(); + let min = current_state.iter().min().cloned().unwrap_or(-1) - 2; + let max = current_state.iter().max().cloned().unwrap_or(-1) + 2; + + for i in min..max+1 { + if rules.iter().find(|r| r.matches(¤t_state, i)).expect("No matching rule").output { + new_state.insert(i as i64); + } + } + + if current_state.iter().map(|v| v + 1).collect::>() == new_state { + // Iterations are just shifting 1 to the right at this + // point. Found by inspecting a debugging log of the + // generations. + + let remaining_iterations = time-current_time; + return current_state.iter().map(|v| v + remaining_iterations).collect::>(); + } + + current_state = new_state; + } + current_state +} diff --git a/2018/src/bin/day_13.rs b/2018/src/bin/day_13.rs new file mode 100644 index 0000000..005f216 --- /dev/null +++ b/2018/src/bin/day_13.rs @@ -0,0 +1,249 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::error::Error; +use std::path::PathBuf; + +// cargo watch -cs "cargo run --release --bin day_13" + +#[derive(Debug)] +enum Road { + LeftRight, + UpDown, + LeftUpRightDown, + RightUpLeftDown, + Intersection, + None +} + +#[derive(Debug)] +struct Cart { + next_turn: TurnDirection, + facing: FacingDirection, + x: usize, + y: usize, + crashed: bool + +} + +#[derive(Debug, Clone, Copy)] +enum FacingDirection { + Up, + Down, + Left, + Right +} + +#[derive(Debug, Clone, Copy)] +enum TurnDirection { + Left, + Straight, + Right +} + +impl TurnDirection { + fn next(&self) -> TurnDirection { + use TurnDirection::*; + + match *self { + Left => Straight, + Straight => Right, + Right => Left + } + } + + fn rotate(&self, facing: &FacingDirection) -> FacingDirection { + match *self { + TurnDirection::Left => match *facing { + FacingDirection::Up => FacingDirection::Left, + FacingDirection::Left => FacingDirection::Down, + FacingDirection::Down => FacingDirection::Right, + FacingDirection::Right => FacingDirection::Up + }, + TurnDirection::Right => match *facing { + FacingDirection::Up => FacingDirection::Right, + FacingDirection::Left => FacingDirection::Up, + FacingDirection::Down => FacingDirection::Left, + FacingDirection::Right => FacingDirection::Down + }, + TurnDirection::Straight => facing.clone() + } + } +} + + + +fn main() -> Result<(), Box> { + let input = read_file(&PathBuf::from("inputs/13.txt"))?; + +// for i in &input { +// println!("{}", i); +// } + + let mut map: Vec> = Vec::new(); + let mut carts: Vec = Vec::new(); + + for (y, line) in input.iter().enumerate() { + let mut map_row = Vec::new(); + for (x, c) in line.chars().enumerate() { + let tile = match c { + ' ' => Road::None, + '-' => Road::LeftRight, + '|' => Road::UpDown, + '/' => Road::LeftUpRightDown, + '\\' => Road::RightUpLeftDown, + '+' => Road::Intersection, + '^' => { + carts.push(Cart { + next_turn: TurnDirection::Left, + facing: FacingDirection::Up, + x: x, + y: y, + crashed: false + }); + Road::UpDown + }, + '<' => { + carts.push(Cart { + next_turn: TurnDirection::Left, + facing: FacingDirection::Left, + x: x, + y: y, + crashed: false + }); + Road::LeftRight + }, + 'v' => { + carts.push(Cart { + next_turn: TurnDirection::Left, + facing: FacingDirection::Down, + x: x, + y: y, + crashed: false + }); + Road::UpDown + }, + '>' => { + carts.push(Cart { + next_turn: TurnDirection::Left, + facing: FacingDirection::Right, + x: x, + y: y, + crashed: false + }); + Road::LeftRight + }, + + _ => { + panic!("Unknown character {}", c); + } + }; + map_row.push(tile); + } + map.push(map_row); + } + + while carts.len() > 1 { + carts.sort_unstable_by(|a, b| a.y.cmp(&b.y).then(a.x.cmp(&b.x))); + + for i in 0..carts.len() { + { + let mut cart = &mut carts[i]; + let road = &map[cart.y][cart.x]; + + match (road, cart.facing, cart.next_turn) { + (Road::LeftRight, FacingDirection::Left, _) => { + cart.x -= 1; + }, + (Road::LeftRight, FacingDirection::Right, _) => { + cart.x += 1; + }, + (Road::LeftRight, _, _) => { + panic!("Sideways cart heading left-right"); + }, + + (Road::UpDown, FacingDirection::Up, _) => { + cart.y -= 1; + }, + (Road::UpDown, FacingDirection::Down, _) => { + cart.y += 1; + }, + (Road::UpDown, _, _) => { + panic!("Sideways cart heading up-down"); + }, + + // / + (Road::LeftUpRightDown, FacingDirection::Down, _) => { + cart.x -= 1; + cart.facing = FacingDirection::Left; + }, + (Road::LeftUpRightDown, FacingDirection::Right, _) => { + cart.y -= 1; + cart.facing = FacingDirection::Up; + }, + (Road::LeftUpRightDown, FacingDirection::Left, _) => { + cart.y += 1; + cart.facing = FacingDirection::Down; + }, + (Road::LeftUpRightDown, FacingDirection::Up, _) => { + cart.x += 1; + cart.facing = FacingDirection::Right; + }, + + // \ + (Road::RightUpLeftDown, FacingDirection::Up, _) => { + cart.x -= 1; + cart.facing = FacingDirection::Left; + }, + (Road::RightUpLeftDown, FacingDirection::Left, _) => { + cart.y -= 1; + cart.facing = FacingDirection::Up; + }, + (Road::RightUpLeftDown, FacingDirection::Right, _) => { + cart.y += 1; + cart.facing = FacingDirection::Down; + }, + (Road::RightUpLeftDown, FacingDirection::Down, _) => { + cart.x += 1; + cart.facing = FacingDirection::Right; + }, + + (Road::Intersection, f, d) => { + cart.facing = d.rotate(&f); + cart.next_turn = d.next(); + match cart.facing { + FacingDirection::Up => { cart.y -= 1 }, + FacingDirection::Down => { cart.y += 1 }, + FacingDirection::Left => { cart.x -= 1 }, + FacingDirection::Right => { cart.x += 1 }, + } + }, + + (Road::None, _, _) => { + panic!("Offroad cart!"); + } + + } + + } + + let collisions = carts.iter() + .enumerate() + .filter(|(other_i, other)| *other_i != i && other.x == carts[i].x && other.y == carts[i].y) + .map(|(other_i, _)| other_i) + .collect::>(); + for other_i in collisions { + let crash_location = (carts[i].x, carts[i].y); + debug!(crash_location); + carts[i].crashed = true; + carts[other_i].crashed = true; + } + } + + carts.retain(|cart| !cart.crashed); + } + + debug!(carts); + + Ok(()) +} diff --git a/2018/src/bin/day_14.rs b/2018/src/bin/day_14.rs new file mode 100644 index 0000000..cb16623 --- /dev/null +++ b/2018/src/bin/day_14.rs @@ -0,0 +1,111 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::error::Error; +use std::path::PathBuf; + +// cargo watch -cs "cargo run --release --bin day_14" + +fn main() -> Result<(), Box> { + let input = 540561; + + let scoreboard = find_ten_scoreboard_after(input); + + println!("Result: "); + scoreboard.iter().for_each(|s| { + print!("{}", s); + }); + println!(); + + let first_occurence = find_first_occurence_of(input); + debug!(first_occurence); + + Ok(()) +} + +fn find_ten_scoreboard_after(input: usize) -> Vec { + let mut scoreboard = vec!(3,7); + let mut elf1_pos = 0; + let mut elf2_pos = 1; + + while scoreboard.len() < (input + 10) { + let next = scoreboard[elf1_pos] + scoreboard[elf2_pos]; + for digit in number_to_digits_vec(next) { + scoreboard.push(digit); + } + + elf1_pos = (elf1_pos + 1 + scoreboard[elf1_pos]) % scoreboard.len(); + elf2_pos = (elf2_pos + 1 + scoreboard[elf2_pos]) % scoreboard.len(); + } + + scoreboard.iter().skip(input).take(10).cloned().collect() +} + +fn find_first_occurence_of(input: usize) -> usize { + let target_sequence = number_to_digits_vec(input); + debug!(target_sequence); + + let mut scoreboard = vec!(3,7); + let mut elf1_pos = 0; + let mut elf2_pos = 1; + let mut target_index = None; + + while target_index.is_none() { + let next = scoreboard[elf1_pos] + scoreboard[elf2_pos]; + for digit in number_to_digits_vec(next) { + scoreboard.push(digit); + } + + elf1_pos = (elf1_pos + 1 + scoreboard[elf1_pos]) % scoreboard.len(); + elf2_pos = (elf2_pos + 1 + scoreboard[elf2_pos]) % scoreboard.len(); + + if scoreboard.len() >= target_sequence.len() + 2 { + for potential_target_index in scoreboard.len()-target_sequence.len()-2..scoreboard.len()-target_sequence.len()+1 { + let found = scoreboard.iter() + .skip(potential_target_index) + .take(target_sequence.len()) + .zip(target_sequence.iter()) + .all(|(a, b)| a == b); + if found { + target_index = Some(potential_target_index); + } + } + } + } + + target_index.unwrap() +} + +fn number_to_digits_vec(input: usize) -> Vec { + if input == 0 { + return vec!(0); + } + + let mut result = Vec::new(); + let mut acc = input; + while acc > 0 { + result.push(acc % 10); + acc /= 10; + } + result.reverse(); + result +} + +#[test] +fn vectorification() { + assert_eq!(number_to_digits_vec(10), vec!(1, 0)); + assert_eq!(number_to_digits_vec(1), vec!(1)); + assert_eq!(number_to_digits_vec(0), vec!(0)); +} + +#[test] +fn part1_examples() { + assert_eq!(find_ten_scoreboard_after(9), vec!(5,1,5,8,9,1,6,7,7,9)); + assert_eq!(find_ten_scoreboard_after(2018), vec!(5,9,4,1,4,2,9,8,8,2)); +} + +#[test] +fn part2_examples() { + assert_eq!(find_first_occurence_of(51589), 9); + assert_eq!(find_first_occurence_of(59414), 2018); +} diff --git a/2018/src/bin/day_15.rs b/2018/src/bin/day_15.rs new file mode 100644 index 0000000..c6f3cf2 --- /dev/null +++ b/2018/src/bin/day_15.rs @@ -0,0 +1,272 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::error::Error; +use std::path::PathBuf; + +// cargo watch -cs "cargo run --release --bin day_15" + +fn main() -> Result<(), Box> { + let input = read_file(&PathBuf::from("inputs/15.txt"))?; + + let (round_hp_product, _) = calculate_round_hp_product(&input, 3); + debug!(round_hp_product); + + for power in 3.. { + let (round_hp_product_without_losses, elf_losses) = calculate_round_hp_product(&input, power); + if (elf_losses == 0) { + debug!(round_hp_product_without_losses); + break; + } + } + + Ok(()) +} + +fn calculate_round_hp_product(input: &[String], elf_power: i32) -> (i32, usize) { + let goblin_power = 3; + let initial_hp = 200; + + let mut map = Vec::new(); + let mut units = Vec::new(); + + for (y, line) in input.iter().enumerate() { + let mut map_row = Vec::new(); + for (x, c) in line.chars().enumerate() { + map_row.push(c == '#'); + + let maybe_unit = match c { + 'G' => Some(Unit { + team: false, + x: x as i32, + y: y as i32, + hp: initial_hp + }), + 'E' => Some(Unit { + team: true, + x: x as i32, + y: y as i32, + hp: initial_hp + }), + _ => None + }; + if let Some(unit) = maybe_unit { + units.push(unit); + } + } + + map.push(map_row); + } + let start_elves = units.iter().filter(|u| u.team).count(); + + for round in 0.. { + // debug!(round); + // debug!(units); + // debug_print(&units, &map); + units.sort_unstable_by(|a, b| a.y.cmp(&b.y).then(a.x.cmp(&b.x))); + + for i in 0..units.len() { + if units[i].hp > 0 { + let battle_over = !units.iter().any(|other| other.hp > 0 && other.team != units[i].team); + if battle_over { + println!("Battle over"); + let hp_sum = units.iter().filter(|u| u.hp > 0).map(|u| u.hp).sum::(); + debug!(round); + debug!(hp_sum); + + let elf_losses = start_elves - units.iter().filter(|u| u.team).count(); + debug!(elf_losses); + return (round * hp_sum, elf_losses); + } + + let is_next_to_opponent = unit_at_point(!units[i].team, units[i].x-1, units[i].y, &units) + .or_else(|| unit_at_point(!units[i].team, units[i].x+1, units[i].y, &units)) + .or_else(|| unit_at_point(!units[i].team, units[i].x, units[i].y-1, &units)) + .or_else(|| unit_at_point(!units[i].team, units[i].x, units[i].y+1, &units)).is_some(); + if !is_next_to_opponent { + if let Some((next_x, next_y)) = find_next_step(i, &units, &map) { + units[i].x = next_x; + units[i].y = next_y; + } + } + + let mut attack_candidates = adjacent_units(!units[i].team, units[i].x, units[i].y, &units); + attack_candidates.sort_by(|&a, &b| units[a].hp.cmp(&units[b].hp)); + if let Some(&to_attack) = attack_candidates.first() { + let attack_power = if units[i].team { elf_power } else { goblin_power }; + units[to_attack].hp -= attack_power; + } + } + } + + units.retain(|u| u.hp > 0); + } + + panic!("Match ended unexpectedly"); +} + +fn find_next_step(i: usize, units: &[Unit], map: &Vec>) -> Option<(i32, i32)> { + let mut explored = vec!(Explored { + x: units[i].x, + y: units[i].y, + distance: 0, + parent: 0 + }); + + let mut explored_index = 0; + let mut distance_found = None; + while explored_index < explored.len() && distance_found.map_or(true, |distance| explored[explored_index].distance < distance) { + let distance = explored[explored_index].distance; + for (new_x, new_y) in adjacent_empty_spaces(explored[explored_index].x, explored[explored_index].y, &map, &units, &explored) { + explored.push(Explored { + x: new_x, + y: new_y, + distance: distance + 1, + parent: explored_index + }); + + if adjacent_units(!units[i].team, new_x, new_y, &units).len() > 0 { + distance_found = Some(distance + 1); + } + } + explored_index += 1; + } + + if let Some(distance) = distance_found { + let mut candidates = explored.iter().enumerate() + .filter(|(_,e)| e.distance == distance) + .filter(|(_,e)| adjacent_units(!units[i].team, e.x, e.y, &units).len() > 0) + .collect::>(); + candidates.sort_by(|(_,a), (_,b)| a.y.cmp(&b.y).then(a.x.cmp(&b.x))); + let (best_index, _) = candidates[0]; + + let mut result_index = best_index; + let mut next_index = best_index; + while next_index != 0 { + result_index = next_index; + next_index = explored[result_index].parent; + } + return Some((explored[result_index].x, explored[result_index].y)); + } + None +} + +fn adjacent_empty_spaces(x: i32, y: i32, map: &Vec>, units: &[Unit], explored: &[Explored]) -> Vec<(i32, i32)> { + [(x, y-1), (x-1, y), (x+1, y), (x, y+1)].iter() + .filter(|(x, y)| *x >= 0 && *y >= 0) + .filter(|(x, y)| !explored.iter().any(|e| e.x == *x && e.y == *y)) + .filter(|(x, y)| !units.iter().any(|e| e.hp > 0 && e.x == *x && e.y == *y)) + .filter(|(x, y)| !map[*y as usize][*x as usize]) + .cloned() + .collect() +} + +fn adjacent_units(team: bool, x: i32, y: i32, units: &[Unit]) -> Vec { + [(x, y-1), (x-1, y), (x+1, y), (x, y+1)].iter() + .filter_map(|(x, y)| unit_at_point(team, *x, *y, units)) + .collect() +} + +fn unit_at_point(team: bool, x: i32, y: i32, units: &[Unit]) -> Option { + units.iter().enumerate() + .find(|(_, u)| u.hp > 0 && u.team == team && u.x == x && u.y == y) + .map(|(i, _)| i) +} + +#[derive(Debug, Clone)] +struct Unit { + team: bool, + x: i32, + y: i32, + hp: i32 +} + +#[derive(Debug)] +struct Explored { + x: i32, + y: i32, + distance: u32, + parent: usize +} + + +fn debug_print(units: &[Unit], map: &Vec>) { + for (y, line) in map.iter().enumerate() { + for (x, wall) in line.iter().enumerate() { + let unit = units.iter().find(|u| u.hp > 0 && u.x == x as i32 && u.y == y as i32); + print!("{}", match (wall, unit) { + (true, _) => '#', + (false, Some(unit)) if unit.team => 'E', + (false, Some(_)) => 'G', + (false, None) => '.' + }); + } + println!(); + } + println!(); + println!(); +} + +fn part_1_test(input: &[&str]) -> i32 { + let owned_input = input.iter() + .map(|&line| line.to_owned()) + .collect::>(); + let (product, _) = calculate_round_hp_product(&owned_input, 3); + product +} + +#[test] +fn example_1() { + let input = vec!( + "#######", + "#.G...#", + "#...EG#", + "#.#.#G#", + "#..G#E#", + "#.....#", + "#######"); + assert_eq!(part_1_test(&input), 27730); +} + +#[test] +fn example_2() { + let input = vec!( + "#######", + "#G..#E#", + "#E#E.E#", + "#G.##.#", + "#...#E#", + "#...E.#", + "#######" + ); + assert_eq!(part_1_test(&input), 36334); +} + +#[test] +fn example_3() { + let input = vec!( + "#######", + "#E.G#.#", + "#.#G..#", + "#G.#.G#", + "#G..#.#", + "#...E.#", + "#######" + ); + assert_eq!(part_1_test(&input), 27755); +} + +#[test] +fn example_4() { + let input = vec!( + "#######", + "#.E...#", + "#.#..G#", + "#.###.#", + "#E#G#G#", + "#...#G#", + "#######" + ); + assert_eq!(part_1_test(&input), 28944); +} + diff --git a/2018/src/bin/day_16.rs b/2018/src/bin/day_16.rs new file mode 100644 index 0000000..275ec45 --- /dev/null +++ b/2018/src/bin/day_16.rs @@ -0,0 +1,205 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::error::Error; +use std::path::PathBuf; + +use std::collections::{HashMap, HashSet}; + +// cargo watch -cs "cargo run --release --bin day_16" + +struct Instruction { + op: Op, + a: i32, + b: i32, + c: i32 +} + +impl Instruction { + fn execute(&self, registers: &[i32; 4]) -> [i32; 4] { + use Op::*; + + let mut result_registers = registers.clone(); + + result_registers[self.c as usize] = match self.op { + Addr => registers[self.a as usize] + registers[self.b as usize], + Addi => registers[self.a as usize] + self.b, + Mulr => registers[self.a as usize] * registers[self.b as usize], + Muli => registers[self.a as usize] * self.b, + Banr => registers[self.a as usize] & registers[self.b as usize], + Bani => registers[self.a as usize] & self.b, + Borr => registers[self.a as usize] | registers[self.b as usize], + Bori => registers[self.a as usize] | self.b, + Setr => registers[self.a as usize], + Seti => self.a, + Gtir => if self.a > registers[self.b as usize] { 1 } else { 0 }, + Gtri => if registers[self.a as usize] > self.b { 1 } else { 0 }, + Gtrr => if registers[self.a as usize] > registers[self.b as usize] { 1 } else { 0 }, + Eqir => if self.a == registers[self.b as usize] { 1 } else { 0 }, + Eqri => if registers[self.a as usize] == self.b { 1 } else { 0 }, + Eqrr => if registers[self.a as usize] == registers[self.b as usize] { 1 } else { 0 } + }; + + result_registers + } +} + +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] +enum Op { + Addr, + Addi, + Mulr, + Muli, + Banr, + Bani, + Borr, + Bori, + Setr, + Seti, + Gtir, + Gtri, + Gtrr, + Eqir, + Eqri, + Eqrr +} + +impl Op { + fn all() -> [Op; 16] { + use Op::*; + [ + Addr, + Addi, + Mulr, + Muli, + Banr, + Bani, + Borr, + Bori, + Setr, + Seti, + Gtir, + Gtri, + Gtrr, + Eqir, + Eqri, + Eqrr + ] + } +} + +struct UnknownInstruction { + before: [i32; 4], + after: [i32; 4], + opcode: i32, + a: i32, + b: i32, + c: i32 +} + +impl UnknownInstruction { + fn possible_matches(&self) -> HashSet { + Op::all() + .iter() + .filter(|&&op| { + let instruction = Instruction { + op: op, + a: self.a, + b: self.b, + c: self.c + }; + let result = instruction.execute(&self.before); + result == self.after + }) + .cloned() + .collect() + } +} + +fn main() -> Result<(), Box> { + let input_part_1 = read_file(&PathBuf::from("inputs/16_1.txt"))?; + + let unknown_instructions: Vec = input_part_1.chunks(3) + .map(|chunk| { + let mut before_iter = chunk[0].trim_matches(|c: char| !c.is_numeric()).split(", ").map(|c| c.parse::().unwrap()); + let before = [ + before_iter.next().unwrap(), + before_iter.next().unwrap(), + before_iter.next().unwrap(), + before_iter.next().unwrap(), + ]; + let mut after_iter = chunk[2].trim_matches(|c: char| !c.is_numeric()).split(", ").map(|c| c.parse::().unwrap()); + let after = [ + after_iter.next().unwrap(), + after_iter.next().unwrap(), + after_iter.next().unwrap(), + after_iter.next().unwrap(), + ]; + let mut instruction_iter = chunk[1].split_whitespace().map(|c| c.parse::().unwrap()); + UnknownInstruction { + before, after, + opcode: instruction_iter.next().unwrap(), + a: instruction_iter.next().unwrap(), + b: instruction_iter.next().unwrap(), + c: instruction_iter.next().unwrap(), + } + }) + .collect(); + + let matches_more_then_3 = unknown_instructions.iter() + .filter(|unknown| { + unknown.possible_matches().len() >= 3 + }) + .count(); + + debug!(matches_more_then_3); + + + let mut opcodes: HashMap> = HashMap::new(); + for unknown in unknown_instructions { + let matches = unknown.possible_matches(); + let to_insert = match opcodes.get(&unknown.opcode) { + None => matches, + Some(existing) => existing.intersection(&matches).cloned().collect() + }; + opcodes.insert(unknown.opcode, to_insert); + } + debug!(opcodes); + + let mut known_opcodes: HashMap = HashMap::new(); + + while known_opcodes.len() < 16 { + let (opcode, op) = { + let (opcode, opset) = opcodes.iter().find(|(_,set)| set.len() == 1).unwrap(); + let op = opset.iter().next().unwrap().clone(); + (opcode.clone(), op) + }; + known_opcodes.insert(opcode, op); + opcodes.iter_mut().for_each(|(_, set)| { + set.remove(&op); + }); + } + debug!(known_opcodes); + + + let input_part_2 = read_file(&PathBuf::from("inputs/16_2.txt"))?; + let instructions: Vec = input_part_2.iter() + .map(|line| { + let mut instruction_iter = line.split_whitespace().map(|c| c.parse::().unwrap()); + Instruction { + op: known_opcodes.get(&instruction_iter.next().unwrap()).unwrap().clone(), + a: instruction_iter.next().unwrap(), + b: instruction_iter.next().unwrap(), + c: instruction_iter.next().unwrap(), + } + }) + .collect(); + + let mut registers = [0; 4]; + for instruction in instructions { + registers = instruction.execute(®isters); + } + debug!(registers); + + Ok(()) +} diff --git a/2018/src/bin/day_17.rs b/2018/src/bin/day_17.rs new file mode 100644 index 0000000..f479c3a --- /dev/null +++ b/2018/src/bin/day_17.rs @@ -0,0 +1,175 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::error::Error; +use std::path::PathBuf; + +// cargo watch -cs "cargo run --release --bin day_17" + +struct CoordBuilder { + xmin: Option, + xmax: Option, + ymin: Option, + ymax: Option +} + +#[derive(Debug)] +struct Coord { + xmin: usize, + xmax: usize, + ymin: usize, + ymax: usize +} + +impl CoordBuilder { + fn new() -> CoordBuilder { + CoordBuilder { + xmin: None, + xmax: None, + ymin: None, + ymax: None + } + } + + fn build(&self) -> Coord { + Coord { + xmin: self.xmin.unwrap(), + xmax: self.xmax.unwrap(), + ymin: self.ymin.unwrap(), + ymax: self.ymax.unwrap(), + } + } +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +enum Tile { + Clay, + RunningWater, + HalfSettledWater, + SettledWater, + Sand +} + +fn main() -> Result<(), Box> { + let input = read_file(&PathBuf::from("inputs/17.txt"))?; + + let clay_coords = input.iter().map(|line| { + let mut builder = CoordBuilder::new(); + for split in line.split(", ") { + if split.starts_with("x=") { + let mut range_split = split + .trim_matches(|c: char| !c.is_numeric()) + .split("..") + .map(|s| s.parse().unwrap()); + if let Some(min) = range_split.next() { + builder.xmin = Some(min); + builder.xmax = Some(min+1); + } + if let Some(max) = range_split.next() { + builder.xmax = Some(max+1); + } + } else { + let mut range_split = split + .trim_matches(|c: char| !c.is_numeric()) + .split("..") + .map(|s| s.parse().unwrap()); + if let Some(min) = range_split.next() { + builder.ymin = Some(min); + builder.ymax = Some(min+1); + } + if let Some(max) = range_split.next() { + builder.ymax = Some(max+1); + } + } + } + builder.build() + }).collect::>(); + + let range = CoordinateSystem { + xmin: clay_coords.iter().min_by_key(|coord| coord.xmin).unwrap().xmin-2, + xmax: clay_coords.iter().max_by_key(|coord| coord.xmax).unwrap().xmax+2, + ymin: clay_coords.iter().min_by_key(|coord| coord.ymin).unwrap().ymin, + ymax: clay_coords.iter().max_by_key(|coord| coord.ymax).unwrap().ymax + }; + + debug!(range); + + + let mut map = vec!(Tile::Sand; range.vector_size()); + for coord in clay_coords { + for y in coord.ymin..coord.ymax { + for x in coord.xmin..coord.xmax { + map[range.to_vec(x, y)] = Tile::Clay; + } + } + } + + debug!(map[range.to_vec(500, range.ymin)]); + map[range.to_vec(500, range.ymin)] = Tile::RunningWater; + + let mut last_iter = Vec::new(); + while last_iter != map { + last_iter = map.clone(); + for y in range.ymin..range.ymax-1 { + for x in range.xmin..range.xmax { + match map[range.to_vec(x, y)] { + Tile::RunningWater => { + if map[range.to_vec(x, y+1)] == Tile::Sand { + map[range.to_vec(x, y+1)] = Tile::RunningWater; + } + if map[range.to_vec(x-1, y)] == Tile::Sand && (map[range.to_vec(x, y+1)] == Tile::Clay || map[range.to_vec(x, y+1)] == Tile::SettledWater) { + map[range.to_vec(x-1, y)] = Tile::RunningWater; + } + if map[range.to_vec(x+1, y)] == Tile::Sand && (map[range.to_vec(x, y+1)] == Tile::Clay || map[range.to_vec(x, y+1)] == Tile::SettledWater) { + map[range.to_vec(x+1, y)] = Tile::RunningWater; + } + if (map[range.to_vec(x-1, y)] == Tile::Clay || map[range.to_vec(x-1, y)] == Tile::HalfSettledWater) && (map[range.to_vec(x, y+1)] == Tile::Clay || map[range.to_vec(x, y+1)] == Tile::SettledWater) { + map[range.to_vec(x, y)] = Tile::HalfSettledWater; + } + }, + Tile::HalfSettledWater => { + if map[range.to_vec(x+1, y)] == Tile::Clay { + for xleft in 0.. { + if map[range.to_vec(x-xleft, y)] == Tile::HalfSettledWater { + map[range.to_vec(x-xleft, y)] = Tile::SettledWater; + } else { + break; + } + } + } + }, + _ => {} + } + } + } + } + + let water_tiles = map.iter() + .filter(|&&t| t == Tile::RunningWater || t == Tile::SettledWater || t == Tile::HalfSettledWater) + .count(); + debug!(water_tiles); + + let settled_water_tiles = map.iter() + .filter(|&&t| t == Tile::SettledWater) + .count(); + debug!(settled_water_tiles); + + Ok(()) +} + +#[derive(Debug)] +struct CoordinateSystem { + xmin: usize, + xmax: usize, + ymin: usize, + ymax: usize +} + +impl CoordinateSystem { + fn vector_size(&self) -> usize { + (self.xmax - self.xmin) * (self.ymax - self.ymin) + } + fn to_vec(&self, x: usize, y: usize) -> usize { + ((y - self.ymin) * (self.xmax - self.xmin)) + (x - self.xmin) + } +} diff --git a/2018/src/bin/day_18.rs b/2018/src/bin/day_18.rs new file mode 100644 index 0000000..3908ea7 --- /dev/null +++ b/2018/src/bin/day_18.rs @@ -0,0 +1,123 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +extern crate arrayvec; +use arrayvec::ArrayVec; + +use std::error::Error; +use std::path::PathBuf; + +use std::collections::HashMap; + +// cargo watch -cs "cargo run --release --bin day_18" + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +enum State { + Open, + Trees, + Lumber +} + +fn main() -> Result<(), Box> { + let input = read_file(&PathBuf::from("inputs/18.txt"))?; + +// println!("Input: {:?}", input); + + let map = input.iter().map(|line| { + line.chars().map(|c| match c { + '.' => State::Open, + '|' => State::Trees, + '#' => State::Lumber, + _ => panic!("Unknown character {}", c) + }).collect::>() + }).collect::>(); +// debug!(map); + + let after_10 = simulate(&map, 10); + let trees_count_10: usize = after_10.iter().map(|row| row.iter().filter(|&&x| x == State::Trees).count()).sum(); + let lumber_count_10: usize = after_10.iter().map(|row| row.iter().filter(|&&x| x == State::Lumber).count()).sum(); + debug!(trees_count_10); + debug!(lumber_count_10); + debug!(trees_count_10 * lumber_count_10); + + let after_many = simulate(&map, 1000000000); + let trees_count_many: usize = after_many.iter().map(|row| row.iter().filter(|&&x| x == State::Trees).count()).sum(); + let lumber_count_many: usize = after_many.iter().map(|row| row.iter().filter(|&&x| x == State::Lumber).count()).sum(); + debug!(trees_count_many); + debug!(lumber_count_many); + debug!(trees_count_many * lumber_count_many); + + + Ok(()) +} + + +fn simulate(start_map: &Vec>, duration: u32) -> Vec> { + let mut previous_maps = HashMap::new(); + + let mut map = start_map.clone(); + + let mut t = 0; + while t < duration { + let map0 = map.clone(); + for y in 0..map.len() { + for x in 0..map[y].len() { + let adjacent = [ + (x.wrapping_sub(1), y.wrapping_sub(1)), + (x, y.wrapping_sub(1)), + (x+1, y.wrapping_sub(1)), + (x.wrapping_sub(1), y), + (x+1, y), + (x.wrapping_sub(1), y+1), + (x, y+1), + (x+1, y+1) + ].iter().map(|&(other_x,other_y)| { + if other_y >= map0.len() || other_x >= map0[other_y].len() { + State::Open + } else { + map0[other_y][other_x] + } + }).collect::>(); + + let adjacent_trees = adjacent.iter().filter(|&&x| x == State::Trees).count(); + let adjacent_lumber = adjacent.iter().filter(|&&x| x == State::Lumber).count(); + + map[y][x] = match (map0[y][x], adjacent_trees, adjacent_lumber) { + (State::Open, trees, _) if trees >= 3 => State::Trees, + (State::Open, _, _) => State::Open, + (State::Trees, _, lumber) if lumber >= 3 => State::Lumber, + (State::Trees, _, _) => State::Trees, + (State::Lumber, trees, lumber) if trees >= 1 && lumber >= 1 => State::Lumber, + (State::Lumber, _, _) => State::Open + } + } + } + + t += match previous_maps.get(&map) { + Some(previous_t) => { + let period = t + 1 - previous_t; + let whole_periods = (duration - t - 1) / period; + (period * whole_periods) + 1 + }, + None => 1 + }; + previous_maps.insert(map.clone(), t); + } + + map +} + +fn debug_print(map: &Vec>) { + for row in map { + for c in row { + print!("{}", match c { + State::Open => '.', + State::Trees => '|', + State::Lumber => '#' + }); + } + println!(); + } + println!(); + println!(); +} diff --git a/2018/src/bin/day_19.rs b/2018/src/bin/day_19.rs new file mode 100644 index 0000000..37ffef1 --- /dev/null +++ b/2018/src/bin/day_19.rs @@ -0,0 +1,139 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::error::Error; +use std::path::PathBuf; + +// cargo watch -cs "cargo run --release --bin day_19" + +#[derive(Debug)] +struct Instruction { + op: Op, + a: i32, + b: i32, + c: i32 +} + +impl Instruction { + fn execute(&self, counter_register: usize, registers: &mut [i32; 6]) -> i32{ + use Op::*; + + registers[self.c as usize] = match self.op { + Addr => registers[self.a as usize] + registers[self.b as usize], + Addi => registers[self.a as usize] + self.b, + Mulr => registers[self.a as usize] * registers[self.b as usize], + Muli => registers[self.a as usize] * self.b, + Banr => registers[self.a as usize] & registers[self.b as usize], + Bani => registers[self.a as usize] & self.b, + Borr => registers[self.a as usize] | registers[self.b as usize], + Bori => registers[self.a as usize] | self.b, + Setr => registers[self.a as usize], + Seti => self.a, + Gtir => if self.a > registers[self.b as usize] { 1 } else { 0 }, + Gtri => if registers[self.a as usize] > self.b { 1 } else { 0 }, + Gtrr => if registers[self.a as usize] > registers[self.b as usize] { 1 } else { 0 }, + Eqir => if self.a == registers[self.b as usize] { 1 } else { 0 }, + Eqri => if registers[self.a as usize] == self.b { 1 } else { 0 }, + Eqrr => if registers[self.a as usize] == registers[self.b as usize] { 1 } else { 0 }, + }; + + registers[counter_register]+1 + } +} + +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] +enum Op { + Addr, + Addi, + Mulr, + Muli, + Banr, + Bani, + Borr, + Bori, + Setr, + Seti, + Gtir, + Gtri, + Gtrr, + Eqir, + Eqri, + Eqrr +} + +fn main() -> Result<(), Box> { + let input = read_file(&PathBuf::from("inputs/19.txt"))?; + + println!("Input: {:?}", input); + + let mut input_iter = input.iter(); + let counter_register: usize = input_iter.next() + .map(|line| line.split_whitespace().nth(1).unwrap().parse().unwrap()) + .unwrap(); + + let instructions: Vec = input_iter + .map(|line| { + let mut instruction_iter = line.split_whitespace(); + Instruction { + op: match instruction_iter.next().unwrap() { + "addr" => Op::Addr, + "addi" => Op::Addi, + "mulr" => Op::Mulr, + "muli" => Op::Muli, + "banr" => Op::Banr, + "bani" => Op::Bani, + "borr" => Op::Borr, + "bori" => Op::Bori, + "setr" => Op::Setr, + "seti" => Op::Seti, + "gtir" => Op::Gtir, + "gtri" => Op::Gtri, + "gtrr" => Op::Gtrr, + "eqir" => Op::Eqir, + "eqri" => Op::Eqri, + "eqrr" => Op::Eqrr, + _ => panic!("unknown instruction") + }, + a: instruction_iter.next().unwrap().parse().unwrap(), + b: instruction_iter.next().unwrap().parse().unwrap(), + c: instruction_iter.next().unwrap().parse().unwrap(), + } + }) + .collect(); + + debug!(counter_register); + debug!(instructions); + + let part1_registers = execute_program(&instructions, counter_register, [0; 6]); + debug!(part1_registers); + + //let part2_registers = execute_program(&instructions, counter_register, [1, 0, 0, 0, 0, 0]); + //debug!(part2_registers); + part2(); + + Ok(()) +} + +fn execute_program(instructions: &Vec, counter_register: usize, registers: [i32; 6]) -> [i32; 6] { + let mut counter_val: i32 = 0; + let mut registers = registers.clone(); + while counter_val >= 0 && counter_val < instructions.len() as i32 { + registers[counter_register] = counter_val; + counter_val = instructions[counter_val as usize].execute(counter_register, &mut registers); + } + + registers +} + + + +fn part2() { + let r1 = ((27*28)+29)*30*14*32 + (11 * 19 * 2 * 2) + (3 * 22) + 9; + let mut r0 = 0; + for r5 in 1..r1+1 { + if r1 % r5 == 0 { + r0 += r1 / r5; + } + } + debug!(r0); +} diff --git a/2018/src/bin/day_2.rs b/2018/src/bin/day_2.rs new file mode 100644 index 0000000..7700871 --- /dev/null +++ b/2018/src/bin/day_2.rs @@ -0,0 +1,53 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::error::Error; +use std::path::PathBuf; + +extern crate im_rc; +use im_rc::HashMap; + +// cargo watch -cs "cargo run --release --bin day_2" + +fn main() -> Result<(), Box> { + let input = read_file(&PathBuf::from("inputs/2.txt"))?; + + println!("Input: {:?}", input); + + let (twice, thrice) = input.iter().fold((0,0), |(twice, thrice), next| { + let occurances = next.chars().fold(HashMap::new(), |occurances, c| { + let counter = occurances.get(&c).cloned().unwrap_or(0); + occurances.update(c, counter + 1) + }); + let has_twice = occurances.values().any(|count| *count == 2); + let has_thrice = occurances.values().any(|count| *count == 3); + + ( + twice + if has_twice { 1 } else { 0 }, + thrice + if has_thrice { 1 } else { 0 }, + ) + }); + + println!("Twice: {}", twice); + println!("Thrice: {}", thrice); + + let checksum = twice * thrice; + println!("Checksum: {}", checksum); + + for i in &input { + for j in &input { + let diff = i.chars().zip(j.chars()).fold(0, |diff, (x, y)| { + if x != y { + diff + 1 + } else { + diff + } + }); + if diff == 1 { + println!("Diff of 1: {} + {}", i, j); + } + } + } + + Ok(()) +} diff --git a/2018/src/bin/day_20.rs b/2018/src/bin/day_20.rs new file mode 100644 index 0000000..6486d72 --- /dev/null +++ b/2018/src/bin/day_20.rs @@ -0,0 +1,137 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::error::Error; +use std::path::PathBuf; + +use std::collections::{HashSet, HashMap}; + +// cargo watch -cs "cargo run --release --bin day_20" + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +enum Dir { + N, S, E, W +} + +#[derive(Debug)] +struct Room { + doors: HashSet +} + +impl Room { + fn new() -> Room { + Room { + doors: HashSet::new() + } + } +} + +fn main() -> Result<(), Box> { + let input = &read_file(&PathBuf::from("inputs/20.txt"))?[0]; + + println!("Input: {:?}", input); + + let rooms = populate_rooms(input); + let distances = distance_map(&rooms); + + debug!(distance_to_furthest_room(&distances)); + debug!(distances_more_than_1000(&distances)); + + Ok(()) +} + +fn populate_rooms(input: &str) -> HashMap<(i32, i32), Room> { + let mut rooms: HashMap<(i32, i32), Room> = HashMap::new(); + rooms.insert((0,0), Room::new()); + + let mut coords = vec!((0, 0)); + + let mut coord_stack: Vec<(Vec<(i32, i32)>, Vec<(i32, i32)>)> = Vec::new(); + + for c in input.chars() { + match c { + '^' | '$' => {}, + 'E' => { + for coord in &mut coords { + rooms.get_mut(coord).unwrap().doors.insert(Dir::E); + coord.0 += 1; + rooms.entry(*coord).or_insert(Room::new()); + } + }, + 'W' => { + for coord in &mut coords { + rooms.get_mut(coord).unwrap().doors.insert(Dir::W); + coord.0 -= 1; + rooms.entry(*coord).or_insert(Room::new()); + } + }, + 'N' => { + for coord in &mut coords { + rooms.get_mut(coord).unwrap().doors.insert(Dir::N); + coord.1 -= 1; + rooms.entry(*coord).or_insert(Room::new()); + } + }, + 'S' => { + for coord in &mut coords { + rooms.get_mut(coord).unwrap().doors.insert(Dir::S); + coord.1 += 1; + rooms.entry(*coord).or_insert(Room::new()); + } + }, + '(' => { + coord_stack.push((coords.clone(), Vec::new())); + }, + '|' => { + coord_stack.last_mut().unwrap().1.append(&mut coords); + coords = coord_stack.last().unwrap().0.clone(); + }, + ')' => { + coord_stack.last_mut().unwrap().1.append(&mut coords); + coords = coord_stack.pop().unwrap().1; + coords.sort(); + coords.dedup(); + }, + c => { + panic!("Unknown character {}", c); + } + } + } + + debug!(rooms.len()); + + rooms +} + +fn distance_map(rooms: &HashMap<(i32, i32), Room>) -> HashMap<(i32, i32), u32> { + let mut distances: HashMap<(i32, i32), u32> = HashMap::new(); + distances.insert((0,0), 0); + + while distances.len() < rooms.len() { + let current_max = *distances.values().max().unwrap(); + let new_distances = distances.iter() + .filter(|(_, &d)| d == current_max) + .flat_map(|(&coord, _)| { + let room = rooms.get(&coord).unwrap(); + room.doors.iter().map(|dir| match dir { + Dir::N => (coord.0, coord.1-1), + Dir::S => (coord.0, coord.1+1), + Dir::W => (coord.0-1, coord.1), + Dir::E => (coord.0+1, coord.1) + }).collect::>() + }) + .collect::>(); + for coord in new_distances { + distances.entry(coord).or_insert(current_max + 1); + } + } + distances +} + +fn distance_to_furthest_room(distances: &HashMap<(i32, i32), u32>) -> u32 { + distances.values().max().unwrap().clone() +} + +fn distances_more_than_1000(distances: &HashMap<(i32, i32), u32>) -> u32 { + distances.values().filter(|&&x| x >= 1000).count() as u32 +} diff --git a/2018/src/bin/day_21.rs b/2018/src/bin/day_21.rs new file mode 100644 index 0000000..0d9a97c --- /dev/null +++ b/2018/src/bin/day_21.rs @@ -0,0 +1,137 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::error::Error; +use std::path::PathBuf; +use std::u32; + +use std::collections::HashMap; +// cargo watch -cs "cargo run --release --bin day_21" + +use std::i32; + +#[derive(Debug)] +struct Instruction { + op: Op, + a: i32, + b: i32, + c: i32 +} + +impl Instruction { + fn execute(&self, counter_register: usize, registers: &mut [i32; 6]) -> i32{ + use Op::*; + + registers[self.c as usize] = match self.op { + Addr => registers[self.a as usize].wrapping_add(registers[self.b as usize]), + Addi => registers[self.a as usize].wrapping_add(self.b), + Mulr => registers[self.a as usize].wrapping_mul(registers[self.b as usize]), + Muli => registers[self.a as usize].wrapping_mul(self.b), + Banr => registers[self.a as usize] & registers[self.b as usize], + Bani => registers[self.a as usize] & self.b, + Borr => registers[self.a as usize] | registers[self.b as usize], + Bori => registers[self.a as usize] | self.b, + Setr => registers[self.a as usize], + Seti => self.a, + Gtir => if self.a > registers[self.b as usize] { 1 } else { 0 }, + Gtri => if registers[self.a as usize] > self.b { 1 } else { 0 }, + Gtrr => if registers[self.a as usize] > registers[self.b as usize] { 1 } else { 0 }, + Eqir => if self.a == registers[self.b as usize] { 1 } else { 0 }, + Eqri => if registers[self.a as usize] == self.b { 1 } else { 0 }, + Eqrr => if registers[self.a as usize] == registers[self.b as usize] { 1 } else { 0 }, + }; + + registers[counter_register]+1 + } +} + +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] +enum Op { + Addr, + Addi, + Mulr, + Muli, + Banr, + Bani, + Borr, + Bori, + Setr, + Seti, + Gtir, + Gtri, + Gtrr, + Eqir, + Eqri, + Eqrr +} + + +fn main() -> Result<(), Box> { + let input = read_file(&PathBuf::from("inputs/21.txt"))?; + + let mut input_iter = input.iter(); + let counter_register: usize = input_iter.next() + .map(|line| line.split_whitespace().nth(1).unwrap().parse().unwrap()) + .unwrap(); + + let instructions: Vec = input_iter + .map(|line| { + let mut instruction_iter = line.split_whitespace(); + Instruction { + op: match instruction_iter.next().unwrap() { + "addr" => Op::Addr, + "addi" => Op::Addi, + "mulr" => Op::Mulr, + "muli" => Op::Muli, + "banr" => Op::Banr, + "bani" => Op::Bani, + "borr" => Op::Borr, + "bori" => Op::Bori, + "setr" => Op::Setr, + "seti" => Op::Seti, + "gtir" => Op::Gtir, + "gtri" => Op::Gtri, + "gtrr" => Op::Gtrr, + "eqir" => Op::Eqir, + "eqri" => Op::Eqri, + "eqrr" => Op::Eqrr, + _ => panic!("unknown instruction") + }, + a: instruction_iter.next().unwrap().parse().unwrap(), + b: instruction_iter.next().unwrap().parse().unwrap(), + c: instruction_iter.next().unwrap().parse().unwrap(), + } + }) + .collect(); + + execute_program(&instructions, counter_register, [0, 0, 0, 0, 0, 0]); + + Ok(()) +} + +fn execute_program(instructions: &Vec, counter_register: usize, registers: [i32; 6]) { + let mut instructions_executed: u64 = 0; + let mut counter_val: i32 = 0; + let mut registers = registers.clone(); + let mut halting_values = HashMap::new(); + + while counter_val >= 0 && counter_val < instructions.len() as i32 { + if counter_val == 28 { + if halting_values.contains_key(®isters[4]) { + break; + } + halting_values.entry(registers[4]).or_insert(instructions_executed+2); + } + registers[counter_register] = counter_val; + counter_val = instructions[counter_val as usize].execute(counter_register, &mut registers); + instructions_executed += 1; + } + + let (min_halting, min_halting_time) = halting_values.iter().min_by_key(|&(_, v)| v).unwrap(); + debug!(min_halting); + debug!(min_halting_time); + let (max_halting, max_halting_time) = halting_values.iter().max_by_key(|&(_, v)| v).unwrap(); + debug!(max_halting); + debug!(max_halting_time); + +} diff --git a/2018/src/bin/day_22.rs b/2018/src/bin/day_22.rs new file mode 100644 index 0000000..f9013cf --- /dev/null +++ b/2018/src/bin/day_22.rs @@ -0,0 +1,165 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::error::Error; +use std::path::PathBuf; + +use std::u32; +use std::collections::{HashMap, HashSet}; + +// cargo watch -cs "cargo run --release --bin day_22" + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +struct Position { + x: u32, + y: u32, + equipment: u32 // 0 = nothing, 1 = torch, 2 = climbing +} + +impl Position { + fn adjacent(&self, map: &Vec>) -> Vec<(Position, u32)> { + let all_adjacent = [ + (Position { + x: self.x.saturating_sub(1), + ..*self + }, 1), + (Position { + y: self.y.saturating_sub(1), + ..*self + }, 1), + (Position { + x: self.x+1, + ..*self + }, 1), + (Position { + y: self.y+1, + ..*self + }, 1), + (Position { + equipment: (self.equipment+1)%3, + ..*self + }, 7), + (Position { + equipment: (self.equipment+2)%3, + ..*self + }, 7) + ]; + all_adjacent.iter() + .filter(|(p, _)| { + let region = map[p.y as usize][p.x as usize]; + let out_of_bounds = self == p; + let invalid_equipment = (region == 0 && p.equipment == 0) || + (region == 1 && p.equipment == 1) || + (region == 2 && p.equipment == 2); + !out_of_bounds && !invalid_equipment + }) + .cloned() + .collect() + } +} + +fn main() -> Result<(), Box> { + let input = &read_file(&PathBuf::from("inputs/22.txt"))?; + + let depth: u32 = input[0].trim_matches(|c: char| !c.is_numeric()).parse().unwrap(); + debug!(depth); + let mut input_target_iter = input[1] + .split(|c: char| !c.is_numeric()) + .filter(|s| !s.is_empty()) + .map(|s| s.parse::().unwrap()); + + let target_x = input_target_iter.next().unwrap(); + let target_y = input_target_iter.next().unwrap(); + + debug!((target_x, target_y)); + + let mut map_width = target_x; + let mut map_height = target_y; + let mut map = build_map(map_width, map_height, depth, target_x, target_y); + + let risk: u32 = map.iter().take((target_y+1) as usize).map(|row| row.iter().take((target_x+1) as usize).sum::()).sum(); + debug!(risk); + + + let mut distances = HashMap::new(); + let mut unexplored = HashSet::new(); + let initial = Position { + x: 0, + y: 0, + equipment: 1 + }; + let target = Position { + x: target_x, + y: target_y, + equipment: 1 + }; + distances.insert(initial, 0); + unexplored.insert(initial); + + while !distances.contains_key(&target) || unexplored.contains(&target) { + let (current, current_distance) = unexplored.iter() + .map(|unexp| (unexp.clone(), distances.get(unexp).cloned().unwrap())) + .min_by_key(|(_, d)| *d) + .unwrap(); + + if current.y+1 >= map_height { + map_height *= 2; + map = build_map(map_width, map_height, depth, target_x, target_y); + debug!(map_height); + } + if current.x+1 >= map_width { + map_width *= 2; + map = build_map(map_width, map_height, depth, target_x, target_y); + debug!(map_width); + } + + for (adjacent, further) in current.adjacent(&map) { + let distance = current_distance + further; + let best_previous_distance = distances.get(&adjacent).cloned().unwrap_or(u32::MAX); + if best_previous_distance > distance { + distances.insert(adjacent, distance); + unexplored.insert(adjacent); + } + + } + unexplored.remove(¤t); + } + + debug!(distances.get(&target)); + + Ok(()) +} + + +fn build_map(max_x: u32, max_y: u32, depth: u32, target_x: u32, target_y: u32) -> Vec> { + let mut geologic_index: Vec> = Vec::new(); + let mut erosion_level: Vec> = Vec::new(); + let mut region_type: Vec> = Vec::new(); + + for y in 0..max_y { + let mut geologic_row = Vec::new(); + let mut erosion_row = Vec::new(); + let mut type_row = Vec::new(); + + for x in 0..max_x { + let index = match (x, y) { + (0, 0) => 0, + (x, y) if x == target_x && y == target_y => 0, + (x, 0) => x*16807, + (0, y) => y*48271, + (x, y) => erosion_row[(x-1) as usize] * erosion_level[(y-1) as usize][x as usize] + }; + let erosion = (index + depth) % 20183; + let block_type = erosion % 3; + + geologic_row.push(index); + erosion_row.push(erosion); + type_row.push(block_type); + } + + geologic_index.push(geologic_row); + erosion_level.push(erosion_row); + region_type.push(type_row); + } + region_type +} diff --git a/2018/src/bin/day_23.rs b/2018/src/bin/day_23.rs new file mode 100644 index 0000000..463f3d3 --- /dev/null +++ b/2018/src/bin/day_23.rs @@ -0,0 +1,114 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::error::Error; +use std::path::PathBuf; +use std::cmp; + +// cargo watch -cs "cargo run --release --bin day_23" + +#[derive(Debug, Clone)] +struct Bot { + radius: i64, + position: Position +} + +#[derive(Debug, Clone)] +struct Position { + x: i64, + y: i64, + z: i64 +} + +impl Position { + fn distance(&self, other: &Position) -> i64 { + (other.z - self.z).abs() + + (other.y - self.y).abs() + + (other.x - self.x).abs() + } +} + +fn main() -> Result<(), Box> { + let input = read_file(&PathBuf::from("inputs/23.txt"))?; + + let mut bots: Vec = input.iter().map(|line| { + let mut line_iter = line.split(|c: char| c != '-' && !c.is_numeric()) + .filter(|s| !s.is_empty()) + .map(|s| s.parse::().unwrap()); + Bot { + position: Position { + x: line_iter.next().unwrap(), + y: line_iter.next().unwrap(), + z: line_iter.next().unwrap() + }, + radius: line_iter.next().unwrap() + } + }).collect(); + + let biggest_radius = bots.iter().max_by_key(|bot| bot.radius).unwrap(); + let biggest_radius_in_range_count = bots.iter() + .filter(|bot| biggest_radius.position.distance(&bot.position) <= biggest_radius.radius) + .count(); + debug!(biggest_radius); + debug!(biggest_radius_in_range_count); + + + let min_x = bots.iter().min_by_key(|bot| bot.position.x).unwrap().position.x; + let max_x = bots.iter().max_by_key(|bot| bot.position.x).unwrap().position.x; + debug!(min_x); + debug!(max_x); + let min_y = bots.iter().min_by_key(|bot| bot.position.y).unwrap().position.y; + let max_y = bots.iter().max_by_key(|bot| bot.position.y).unwrap().position.y; + debug!(min_y); + debug!(max_y); + let min_z = bots.iter().min_by_key(|bot| bot.position.z).unwrap().position.z; + let max_z = bots.iter().max_by_key(|bot| bot.position.z).unwrap().position.z; + debug!(min_z); + debug!(max_z); + + let origin = Position { x: 0, y: 0, z: 0 }; + + let mut radius = cmp::max(max_x - min_x, cmp::max(max_y-min_y, max_z-min_z)); + let mut center = origin.clone(); + + while radius > 0 { + let delta = 0.8; + let new_radius = if radius == 1 { 0 } else { (radius as f32 * delta) as i64 }; + let deltas = [-1.0, -0.8, -0.6, -0.4, -0.2, 0.0, 0.2, 0.4, 0.6, 0.8, 1.0]; + let subs: Vec = deltas.iter().flat_map(|&dx| { + deltas.iter().flat_map(|&dy| { + deltas.iter().map(|&dz| { + Position { + x: center.x + (radius as f32 * dx) as i64, + y: center.y + (radius as f32 * dy) as i64, + z: center.z + (radius as f32 * dz) as i64 + } + }).collect::>() + }).collect::>() + }).collect(); + + center = subs.iter() + .map(|new_center| { + (new_center, bots.iter() + .filter(|bot| bot.position.distance(&new_center) <= bot.radius + new_radius) + .count()) + }) + .max_by(|(a_center, a_bots), (b_center, b_bots)| { + a_bots.cmp(&b_bots).then(b_center.distance(&origin).cmp(&a_center.distance(&origin))) + }) + .map(|(center, _)| center) + .unwrap().clone(); + + radius = new_radius; + } + + let connected_in_radius = bots.iter() + .filter(|bot| bot.position.distance(¢er) <= bot.radius) + .count(); + debug!(connected_in_radius); + debug!(center); + let distance_to_origin = center.distance(&origin); + debug!(distance_to_origin); + + Ok(()) +} diff --git a/2018/src/bin/day_24.rs b/2018/src/bin/day_24.rs new file mode 100644 index 0000000..d52f7d0 --- /dev/null +++ b/2018/src/bin/day_24.rs @@ -0,0 +1,217 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::error::Error; +use std::path::PathBuf; +use std::str::FromStr; + +use std::collections::HashMap; + +// cargo watch -cs "cargo run --release --bin day_24" + +#[derive(Debug, Clone)] +struct Army { + units: u32, + hp: u32, + weaknesses: Vec, + immunities: Vec, + damage_type: String, + damage: u32, + initiative: u32 +} + +impl Army { + fn effective_power(&self) -> u32 { + self.units * self.damage + } + + fn actual_damage(&self, other: &Army) -> u32 { + let modifier = if other.weaknesses.contains(&self.damage_type) { + 2 + } else if other.immunities.contains(&self.damage_type) { + 0 + } else { + 1 + }; + self.effective_power() * modifier + } +} + +impl FromStr for Army { + type Err = Box; + + fn from_str(s: &str) -> Result { + // 2991 units each with 8084 hit points (weak to fire) with an attack that does 19 radiation damage at initiative 11 + let mut words = s.split_whitespace(); + let units = words.next().unwrap().parse()?; + let hp = words.nth(3).unwrap().parse()?; + let _ = words.nth(1); + + let mut weaknesses = Vec::new(); + let mut immunities = Vec::new(); + + let mut bracket_handled = false; + while !bracket_handled { + let maybe_weak_or_immune = words.next().unwrap().trim_matches(|c: char| !c.is_alphabetic()); + if maybe_weak_or_immune == "weak" { + let mut weakness = words.nth(1).unwrap(); + weaknesses.push(weakness.trim_matches(|c: char| !c.is_alphabetic()).to_string()); + while weakness.ends_with(',') { + weakness = words.next().unwrap(); + weaknesses.push(weakness.trim_matches(|c: char| !c.is_alphabetic()).to_string()); + } + } + else if maybe_weak_or_immune == "immune" { + let mut immunity = words.nth(1).unwrap(); + immunities.push(immunity.trim_matches(|c: char| !c.is_alphabetic()).to_string()); + while immunity.ends_with(',') { + immunity = words.next().unwrap(); + immunities.push(immunity.trim_matches(|c: char| !c.is_alphabetic()).to_string()); + } + } + else { + bracket_handled = true; + } + } + let damage = words.nth(4).unwrap().parse()?; + let damage_type = words.next().unwrap().to_string(); + let initiative = words.nth(3).unwrap().parse()?; + + Ok(Army { + units, hp, weaknesses, immunities, damage_type, damage, initiative + }) + } +} + + + +fn main() -> Result<(), Box> { + let input = read_file(&PathBuf::from("inputs/24.txt"))?; + + let mut input_iter = input.iter(); + let _ = input_iter.next(); + let immune_army: Vec = input_iter.by_ref() + .take_while(|&line| line != "Infection:") + .map(|line| line.parse().unwrap()) + .collect(); + let infection_army: Vec = input_iter + .map(|line| line.parse().unwrap()) + .collect(); + + let (unboosted_immune_army_size, unboosted_infection_army_size) = simulate(&immune_army, &infection_army, 0); + debug!(unboosted_immune_army_size); + debug!(unboosted_infection_army_size); + + for boost in 0.. { + debug!(boost); + let (immune_army_size, infection_army_size) = simulate(&immune_army, &infection_army, boost); + debug!(immune_army_size); + debug!(infection_army_size); + if immune_army_size > 0 { + break; + } + } + + Ok(()) +} + + +fn target_selection(targeting_army: &Vec, targeted_army: &Vec) -> HashMap { + let mut targets = HashMap::new(); + for (i, army) in targeting_army.iter().enumerate() { + let best_target = (0..targeted_army.len()) + .filter(|potential_target| !targets.values().any(|targeted| targeted == potential_target)) + .fold(None, |best_target, next| { + let next_actual_damage = army.actual_damage(&targeted_army[next]); + let last_best_actual_damage = best_target.map(|best_target| army.actual_damage(&targeted_army[best_target])).unwrap_or(0); + let next_effective_power = targeted_army[next].effective_power(); + let last_best_effective_power = best_target.map(|best_target: usize| targeted_army[best_target].effective_power()).unwrap_or(0); + let next_initiative = targeted_army[next].initiative; + let last_best_initiative = best_target.map(|best_target| targeted_army[best_target].initiative).unwrap_or(0); + if next_actual_damage == 0 && last_best_actual_damage == 0 { + None + } else if next_actual_damage > last_best_actual_damage { + Some(next) + } else if next_actual_damage == last_best_actual_damage && next_effective_power > last_best_effective_power { + Some(next) + } else if next_actual_damage == last_best_actual_damage && next_effective_power == last_best_effective_power && next_initiative > last_best_initiative { + Some(next) + } else { + best_target + } + }); + + if let Some(best_target) = best_target { + targets.insert(i, best_target); + } + } + + targets +} + +fn attack(aggressor: &Army, target: &mut Army) { + let damage = aggressor.actual_damage(target); + let units_destroyed = damage / target.hp; + target.units = target.units.saturating_sub(units_destroyed); +} + + +fn simulate(immune_army: &[Army], infection_army: &[Army], boost: u32) -> (u32, u32) { + let mut infection_army = Vec::from(infection_army); + + let mut immune_army: Vec = immune_army.iter().map(|army| Army { + damage: army.damage + boost, + ..army.clone() + }).collect(); + + let mut watchdog_sum = immune_army.iter().map(|a| a.units).sum::() + infection_army.iter().map(|a| a.units).sum::(); + while immune_army.len() > 0 && infection_army.len() > 0 { + immune_army.sort_by(|a, b| b.effective_power().cmp(&a.effective_power()).then(b.initiative.cmp(&a.initiative))); + infection_army.sort_by(|a, b| b.effective_power().cmp(&a.effective_power()).then(b.initiative.cmp(&a.initiative))); + + let mut immune_targets = target_selection(&immune_army, &infection_army); + let mut infection_targets = target_selection(&infection_army, &immune_army); + + while immune_targets.len() > 0 || infection_targets.len() > 0 { + let next_immune = immune_targets.keys() + .map(|&k| (k, immune_army[k].initiative.clone())) + .max_by_key(|(_, initiative)| *initiative); + let next_infection = infection_targets.keys() + .map(|&k| (k, infection_army[k].initiative.clone())) + .max_by_key(|(_, initiative)| *initiative); + match (next_immune, next_infection) { + (None, None) => { + panic!("No targets left") + }, + (Some((immune_key, immune_init)), Some((_infect_key, infect_init))) if immune_init > infect_init => { + attack(&immune_army[immune_key], &mut infection_army[*immune_targets.get(&immune_key).unwrap()]); + immune_targets.remove(&immune_key); + }, + (Some((_immune_key, _immune_init)), Some((infect_key, _infect_init))) => { + attack(&infection_army[infect_key], &mut immune_army[*infection_targets.get(&infect_key).unwrap()]); + infection_targets.remove(&infect_key); + }, + (Some((immune_key, _immune_init)), None) => { + attack(&immune_army[immune_key], &mut infection_army[*immune_targets.get(&immune_key).unwrap()]); + immune_targets.remove(&immune_key); + }, + (None, Some((infect_key, _infect_init))) => { + attack(&infection_army[infect_key], &mut immune_army[*infection_targets.get(&infect_key).unwrap()]); + infection_targets.remove(&infect_key); + } + }; + } + + immune_army.retain(|a| a.units > 0); + infection_army.retain(|a| a.units > 0); + + let new_watchdog_sum = immune_army.iter().map(|a| a.units).sum::() + infection_army.iter().map(|a| a.units).sum::(); + if watchdog_sum == new_watchdog_sum { + // Stalemate! Everyone loses. + return (0, 0); + } + watchdog_sum = new_watchdog_sum; + } + + (immune_army.iter().map(|a| a.units).sum(), infection_army.iter().map(|a| a.units).sum()) +} diff --git a/2018/src/bin/day_25.rs b/2018/src/bin/day_25.rs new file mode 100644 index 0000000..9e74f49 --- /dev/null +++ b/2018/src/bin/day_25.rs @@ -0,0 +1,47 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::error::Error; +use std::path::PathBuf; + +// cargo watch -cs "cargo run --release --bin day_25" + +fn main() -> Result<(), Box> { + let input = read_file(&PathBuf::from("inputs/25.txt"))?; + + let mut constellations: Vec>> = input.iter() + .map(|line| line.split(',').map(|x| x.parse().unwrap()).collect::>()) + .map(|points| vec!(points)) + .collect(); + + // debug!(constellations); + + while join_constellations(&mut constellations) { + } + + debug!(constellations.len()); + + Ok(()) +} + +fn distance(xs: &[i32], ys: &[i32]) -> i32 { + xs.iter().zip(ys.iter()).map(|(x,y)| (x - y).abs()).sum() +} + +fn join_constellations(constellations: &mut Vec>>) -> bool { + for i in 0..constellations.len()-1 { + for j in i+1..constellations.len() { + let connected = constellations[i].iter().any(|ci| { + constellations[j].iter().any(|cj| { + distance(&ci, &cj) <= 3 + }) + }); + if connected { + let mut to_join = constellations.remove(j); + constellations[i].append(&mut to_join); + return true; + } + } + } + false +} diff --git a/2018/src/bin/day_3.rs b/2018/src/bin/day_3.rs new file mode 100644 index 0000000..685e288 --- /dev/null +++ b/2018/src/bin/day_3.rs @@ -0,0 +1,76 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::str::FromStr; + +use std::error::Error; +use std::path::PathBuf; + +use std::collections::HashMap; + +// cargo watch -cs "cargo run --release --bin day_3" + +#[derive(Debug)] +struct Claim { + id: u32, + x: u32, + y: u32, + w: u32, + h: u32 +} + +impl FromStr for Claim { + type Err = Box; + + fn from_str(s: &str) -> Result { + //#123 @ 3,2: 5x4 + let split = s + .split(|c: char| !c.is_numeric()) + .filter(|s| !s.is_empty()) + .map(|s| s.parse()) + .collect::, _>>()?; + + Ok(Claim { + id: split[0], + x: split[1], + y: split[2], + w: split[3], + h: split[4] + }) + } +} + +fn main() -> Result<(), Box> { + let input = read_file(&PathBuf::from("inputs/3.txt"))?; + let claims = input.iter().map(|line| line.parse::()).collect::, _>>()?; + + let mut claimed = HashMap::new(); + for claim in &claims { + for x in claim.x..claim.x+claim.w { + for y in claim.y..claim.y+claim.h { + *claimed.entry((x,y)).or_insert(0) += 1; + } + } + } + + let conflicts = claimed.values().filter(|&x| *x > 1).count(); + println!("Conflicts: {}", conflicts); + + let conflict_free = claims.iter().filter(|c| check_for_conflicts(c, &claimed)).collect::>(); + + println!("Conflict free: {:?}", conflict_free); + + Ok(()) +} + + +fn check_for_conflicts(claim: &Claim, claimed: &HashMap<(u32, u32), u32>) -> bool { + for x in claim.x..claim.x+claim.w { + for y in claim.y..claim.y+claim.h { + if claimed.get(&(x,y)).map_or(false, |c| *c > 1) { + return false; + } + } + } + true +} diff --git a/2018/src/bin/day_4.rs b/2018/src/bin/day_4.rs new file mode 100644 index 0000000..2010cf8 --- /dev/null +++ b/2018/src/bin/day_4.rs @@ -0,0 +1,116 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::str::FromStr; + +use std::error::Error; +use std::path::PathBuf; +use std::collections::HashMap; + +// cargo watch -cs "cargo run --release --bin day_4" + +#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] +struct Event { + date: String, + hour: u32, + minute: u32, + what: EventType +} + +#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] +enum EventType { + BeginShift(u32), + Asleep, + Awake +} + +impl FromStr for Event { + type Err = Box; + + fn from_str(s: &str) -> Result { + let date = s.split_whitespace().nth(0).unwrap().trim_matches('[').to_string(); + let time = s.split_whitespace().nth(1).unwrap().trim_matches(']'); + let hour = time.split(':').nth(0).unwrap().parse().unwrap(); + let minute = time.split(':').nth(1).unwrap().parse().unwrap(); + let guard = s.split_whitespace().nth(3).and_then(|x| x.trim_matches('#').parse().ok()); + + let what = match s.split_whitespace().nth(2).unwrap() { + "Guard" => EventType::BeginShift(guard.unwrap()), + "falls" => EventType::Asleep, + "wakes" => EventType::Awake, + _ => panic!("Unknown event") + }; + + Ok(Event { + date, + hour, + minute, + what + }) + } +} + +#[derive(Debug)] +struct GuardSleepStats { + per_minute: HashMap +} + +impl GuardSleepStats { + fn new() -> GuardSleepStats { + GuardSleepStats { + per_minute: HashMap::new() + } + } + fn total(&self) -> u32 { + self.per_minute.values().sum() + } +} + + +fn main() -> Result<(), Box> { + let input = read_file(&PathBuf::from("inputs/4.txt"))?; + + //println!("Input: {:?}", input); + + let mut events: Vec = input.iter().map(|line| line.parse().unwrap()).collect(); + events.sort(); + //println!("Events: {:?}", events); + + + let mut sleep = HashMap::new(); + let mut current_guard = 0; + let mut last_asleep = 0; + for event in events { + match event.what { + EventType::BeginShift(guard) => current_guard = guard, + EventType::Asleep => last_asleep = event.minute, + EventType::Awake => { + for i in last_asleep..event.minute { + *sleep + .entry(current_guard) + .or_insert(GuardSleepStats::new()) + .per_minute + .entry(i) + .or_insert(0) += 1 + } + } + } + } + + println!("Stats: {:?}", sleep); + + let (sleepiest_guard, sleepiest_stats) = sleep.iter().max_by_key(|(_,v)| v.total()).unwrap().clone(); + println!("Sleepiest guard: {:?}", sleepiest_guard); + let (sleepiest_minute, sleepiest_occurances) = sleepiest_stats.per_minute.iter().max_by_key(|(_,v)| *v).unwrap().clone(); + println!("Sleepiest minute: {:?}", sleepiest_minute); + println!("Part 1 answer: {}", sleepiest_guard * sleepiest_minute); + + + let (specific_minute_offender, specific_minute_stats) = sleep.iter().max_by_key(|(_,v)| v.per_minute.values().max().unwrap()).unwrap().clone(); + println!("Specific minute: {:?}", specific_minute_offender); + let (specific_minute_minute, specific_minute_occurances) = specific_minute_stats.per_minute.iter().max_by_key(|(_,v)| *v).unwrap().clone(); + println!("Specific Minute minute: {:?}", specific_minute_minute); + println!("Part 2 answer: {}", specific_minute_offender * specific_minute_minute); + + Ok(()) +} diff --git a/2018/src/bin/day_5.rs b/2018/src/bin/day_5.rs new file mode 100644 index 0000000..2b24d4c --- /dev/null +++ b/2018/src/bin/day_5.rs @@ -0,0 +1,53 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::error::Error; +use std::path::PathBuf; +use std::cmp; + +// cargo watch -cs "cargo run --release --bin day_5" + +fn main() -> Result<(), Box> { + let input = read_file(&PathBuf::from("inputs/5.txt"))?; + + //println!("Input: {:?}", input); + let polymer = { + let mut polymer: Vec = input[0].chars().collect(); + reduce(&mut polymer); + polymer + }; + + debug!(polymer.len()); + + + let mut min_length = polymer.len(); + for c in "abcdefghijklmnopqrstuvwxyz".chars() { + let mut polymer_without_char = polymer.clone(); + polymer_without_char.retain(|x| x.to_ascii_lowercase() != c); + reduce(&mut polymer_without_char); + min_length = cmp::min(min_length, polymer_without_char.len()); + } + + debug!(min_length); + + Ok(()) +} + + +fn reduce(polymer: &mut Vec) { + let mut had_reductions = true; + while had_reductions { + had_reductions = false; + + for i in 0..polymer.len()-1 { + if polymer[i].to_ascii_lowercase() == polymer[i+1].to_ascii_lowercase() && polymer[i] != polymer[i+1] { + had_reductions = true; + polymer.remove(i+1); + polymer.remove(i); + + // break isn't efficient, but does prevent indexing issues after removing + break; + } + } + } +} diff --git a/2018/src/bin/day_6.rs b/2018/src/bin/day_6.rs new file mode 100644 index 0000000..16c8782 --- /dev/null +++ b/2018/src/bin/day_6.rs @@ -0,0 +1,103 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::error::Error; +use std::path::PathBuf; + +use std::collections::{HashSet, HashMap}; + +// cargo watch -cs "cargo run --release --bin day_6" + +fn main() -> Result<(), Box> { + let input = read_file(&PathBuf::from("inputs/6.txt"))?; + let coordinates = input.iter().map(|line| { + let mut split = line.split(|c: char| !c.is_numeric()); + let x: i32 = split.next().unwrap().parse().unwrap(); + let _ = split.next(); + let y: i32 = split.next().unwrap().parse().unwrap(); + (x, y) + }).collect::>(); + debug!(coordinates); + + let min_x = coordinates.iter().map(|(x, _)| x).min().unwrap().clone(); + let max_x = coordinates.iter().map(|(x, _)| x).max().unwrap().clone(); + let min_y = coordinates.iter().map(|(_, y)| y).min().unwrap().clone(); + let max_y = coordinates.iter().map(|(_, y)| y).max().unwrap().clone(); + + debug!(min_x); + debug!(max_x); + debug!(min_y); + debug!(max_y); + + let mut infinite = HashSet::new(); + for x in min_x..max_x+1 { + for y in &[0, max_y] { + if let Some(coord) = find_closest(&coordinates, x, *y) { + infinite.insert(coord); + } + } + } + for y in min_y..max_y+1 { + for x in &[0, max_x] { + if let Some(coord) = find_closest(&coordinates, *x, y) { + infinite.insert(coord); + } + } + } + + debug!(infinite); + + + let mut areas = HashMap::new(); + for x in min_x..max_x+1 { + for y in min_y..max_y+1 { + if let Some(coord) = find_closest(&coordinates, x, y) { + *areas.entry(coord).or_insert(0) += 1; + } + } + } + + debug!(areas); + + let biggest_non_infinite = areas.iter() + .filter(|(k,_)| !infinite.contains(&k)) + .max_by_key(|(_,v)| *v); + debug!(biggest_non_infinite); + + + + let safe_distance = 10000; + let mut safe_size = 0; + for x in min_x..max_x+1 { + for y in min_y..max_y+1 { + let distance_sum: i32 = coordinates.iter() + .map(|(x1, y1)| manhattan_distance(*x1, *y1, x, y)) + .sum(); + if distance_sum < safe_distance { + safe_size += 1; + } + } + } + debug!(safe_size); + + Ok(()) +} + +fn find_closest(coordinates: &Vec<(i32, i32)>, x: i32, y: i32) -> Option { + let mut distances = coordinates.iter() + .map(|(x1, y1)| manhattan_distance(*x1, *y1, x, y)) + .enumerate() + .collect::>(); + distances.sort_by_key(|(_, d)| *d); + + if distances[0] == distances[1] { + None + } + else { + distances.first().map(|(i, _)| *i) + } +} + +fn manhattan_distance(x1: i32, y1: i32, x2: i32, y2: i32) -> i32 { + (x2-x1).abs() + (y2-y1).abs() +} diff --git a/2018/src/bin/day_7.rs b/2018/src/bin/day_7.rs new file mode 100644 index 0000000..ec9d0be --- /dev/null +++ b/2018/src/bin/day_7.rs @@ -0,0 +1,135 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::error::Error; +use std::path::PathBuf; + +use std::collections::{HashMap, HashSet}; + +// cargo watch -cs "cargo run --release --bin day_7" + +fn main() -> Result<(), Box> { + let input = read_file(&PathBuf::from("inputs/7.txt"))?; + + //println!("Input: {:?}", input); + + let (all_steps, blockers) = parse(&input); + + + let mut serial_ordered = Vec::new(); + let mut remaining_steps = all_steps.clone(); + let mut remaining_blockers = blockers.clone(); + + while !remaining_steps.is_empty() { + let mut unblocked: Vec = remaining_steps.iter() + .filter(|c| remaining_blockers.get(c).map(|blockers| blockers.is_empty()).unwrap_or(true)) + .cloned() + .collect(); + unblocked.sort(); + + let next_step = unblocked.first().unwrap().clone(); + + serial_ordered.push(next_step); + remaining_steps.remove(&next_step); + for (_k, mut v) in &mut remaining_blockers { + v.retain(|c| *c != next_step); + } + } + + debug!(serial_ordered); + for c in serial_ordered { + print!("{}", c); + } + println!(); + + + let workers = 5; + let mut worker_tasks: Vec = Vec::new(); + let mut parallel_ordered = Vec::new(); + let mut remaining_steps = all_steps.clone(); + let mut remaining_blockers = blockers.clone(); + let mut current_time = 0; + + while !remaining_steps.is_empty() { + let mut unblocked: Vec = remaining_steps.iter() + .filter(|c| + remaining_blockers.get(c).map(|blockers| blockers.is_empty()).unwrap_or(true) + && !worker_tasks.iter().any(|w| w.t == **c) + ) + .cloned() + .collect(); + unblocked.sort(); + + let next_unblocked = if worker_tasks.len() < workers { + unblocked.first().cloned() + } else { + None + }; + + if let Some(next_task) = next_unblocked { + worker_tasks.push(Task { + t: next_task, + completion: current_time + time(next_task) + }); + } + else { + //Advance time + worker_tasks.sort_by_key(|w| w.completion); + let complete = worker_tasks.swap_remove(0); + current_time = complete.completion; + let next_step = complete.t; + + parallel_ordered.push(next_step); + remaining_steps.remove(&next_step); + for (_k, mut v) in &mut remaining_blockers { + v.retain(|c| *c != next_step); + } + } + + + } + + debug!(parallel_ordered); + for c in parallel_ordered { + print!("{}", c); + } + println!(); + debug!(current_time); + + + Ok(()) +} + +#[derive(Debug, Copy, Clone, PartialEq, Eq)] +struct Task { + t: char, + completion: u32 +} + + +fn parse(input: &Vec) -> (HashSet, HashMap>) { + let mut blockers = HashMap::new(); + let mut all_steps = HashSet::new(); + + for line in input { + //Step I must be finished before step C can begin. + let mut split = line.split_whitespace(); + let blocker: char = split.nth(1).and_then(|x| x.chars().nth(0)).unwrap(); + let blocked: char = split.nth(5).and_then(|x| x.chars().nth(0)).unwrap(); + + blockers.entry(blocked).or_insert(Vec::new()).push(blocker); + all_steps.insert(blocker); + all_steps.insert(blocked); + } + + debug!(all_steps); + debug!(blockers); + + (all_steps, blockers) +} + +fn time(c: char) -> u32 { + let base_time = 60; + let char_time = c as u32 - 'A' as u32 + 1; + base_time + char_time +} diff --git a/2018/src/bin/day_8.rs b/2018/src/bin/day_8.rs new file mode 100644 index 0000000..59813b0 --- /dev/null +++ b/2018/src/bin/day_8.rs @@ -0,0 +1,66 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::error::Error; +use std::path::PathBuf; + +use std::slice::Iter; + +// cargo watch -cs "cargo run --release --bin day_8" + +fn main() -> Result<(), Box> { + let input: Vec = read_file(&PathBuf::from("inputs/8.txt")) + .map(|lines| lines[0] + .split_whitespace() + .map(|s| s.parse().unwrap()) + .collect() + )?; + + //println!("Input: {:?}", input); + + let metadata_sum = sum_metadata(&mut input.iter()); + debug!(metadata_sum); + + let value = node_value(&mut input.iter()); + debug!(value); + + Ok(()) +} + +fn sum_metadata(iter: &mut Iter<'_, u32>) -> u32 { + let num_children = iter.next().unwrap().clone(); + let num_metadata = iter.next().unwrap().clone(); + + let children_sum: u32 = (0..num_children) + .map(|_| sum_metadata(iter)) + .sum(); + + let metadata_sum: u32 = (0..num_metadata) + .map(|_| iter.next().unwrap()) + .sum(); + + children_sum + metadata_sum +} + + +fn node_value(iter: &mut Iter<'_, u32>) -> u32 { + let num_children = iter.next().unwrap().clone(); + let num_metadata = iter.next().unwrap().clone(); + + let node_values: Vec = (0..num_children) + .map(|_| node_value(iter)) + .collect(); + + let metadata: Vec = (0..num_metadata) + .map(|_| iter.next().unwrap().clone()) + .collect(); + + if num_children == 0 { + metadata.iter().sum() + } else { + metadata.iter() + .filter(|m| **m > 0 && **m-1 < num_children) + .map(|m| node_values[*m as usize - 1]) + .sum() + } +} diff --git a/2018/src/bin/day_9.rs b/2018/src/bin/day_9.rs new file mode 100644 index 0000000..3f85620 --- /dev/null +++ b/2018/src/bin/day_9.rs @@ -0,0 +1,91 @@ +extern crate advent_of_code_2018; +use advent_of_code_2018::*; + +use std::error::Error; + +use std::collections::LinkedList; + +// cargo watch -cs "cargo run --release --bin day_9" + +fn main() -> Result<(), Box> { + debug!(get_winning_player_score(438, 71626)); + debug!(get_winning_player_score(438, 71626*100)); + + Ok(()) +} + + +fn get_winning_player_score(players: usize, last_marble_score: u32) -> u32 { + let mut marbles_head = LinkedList::new(); + let mut marbles_tail = LinkedList::new(); + marbles_head.push_back(0); + + let mut current_player = 0; + let mut next_marble = 1; + let mut scores = vec!(0; players); + + while next_marble <= last_marble_score { + if next_marble % 23 == 0 { + move_backwards(&mut marbles_head, &mut marbles_tail, 7); + let removed = marbles_head.pop_back().expect("Going backwards should have ended with pushing to head"); + move_forward(&mut marbles_head, &mut marbles_tail, 1); + + let score = next_marble + removed; + scores[current_player] += score; + } else { + move_forward(&mut marbles_head, &mut marbles_tail, 1); + marbles_head.push_back(next_marble); + } + + next_marble += 1; + current_player = (current_player + 1) % players; + } + + scores.iter().max().unwrap().clone() +} + +// WARNING: These don't play well with empty lists +fn move_forward(marbles_head: &mut LinkedList, marbles_tail: &mut LinkedList, i: usize) { + if i != 0 { + match marbles_tail.pop_front() { + Some(marble) => { + marbles_head.push_back(marble); + move_forward(marbles_head, marbles_tail, i-1); + }, + None => { + marbles_tail.append(marbles_head); + move_forward(marbles_head, marbles_tail, i); + }, + } + } +} + +fn move_backwards(marbles_head: &mut LinkedList, marbles_tail: &mut LinkedList, i: usize) { + if i != 0 { + match marbles_head.pop_back() { + Some(marble) => { + marbles_tail.push_front(marble); + move_backwards(marbles_head, marbles_tail, i-1); + }, + None => { + marbles_head.append(marbles_tail); + move_backwards(marbles_head, marbles_tail, i); + }, + } + } +} + + +#[test] +fn trivial() { + assert_eq!(get_winning_player_score(9, 32), 32); +} + +#[test] +fn examples() { + assert_eq!(get_winning_player_score(10, 1618), 8317); + assert_eq!(get_winning_player_score(13, 7999), 146373); + assert_eq!(get_winning_player_score(17, 1104), 2764); + assert_eq!(get_winning_player_score(21, 6111), 54718); + assert_eq!(get_winning_player_score(30, 5807), 37305); +} diff --git a/2018/src/lib.rs b/2018/src/lib.rs new file mode 100644 index 0000000..72520fe --- /dev/null +++ b/2018/src/lib.rs @@ -0,0 +1,31 @@ +use std::path::PathBuf; +use std::io::BufReader; +use std::io::prelude::*; +use std::fs::File; + +/// Reads a specified file into a vector of strings, one line of the +/// file per string. Fails if any part of reading the file fails. +pub fn read_file(file: &PathBuf) -> Result, std::io::Error> { + let file = File::open(file)?; + let file_reader = BufReader::new(file); + file_reader.lines() + .collect::, _>>() + .map(preprocess_file_lines) +} + +/// Removes any empty lines and makes sure that lines don't have +/// problematic whitespace. +pub fn preprocess_file_lines(lines: Vec) -> Vec { + lines.iter() + .filter(|line| line.len() > 0) + .map(|line| line.trim_right().to_string()) + .collect() +} + + +#[macro_export] +macro_rules! debug { + ( $x:expr ) => { + println!("{} = {:?}", stringify!($x), $x); + }; +} diff --git a/Cargo.toml b/Cargo.toml deleted file mode 100644 index b1342d1..0000000 --- a/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "advent_of_code_2018" -version = "0.1.0" -authors = ["Justin Worthe "] - -[dependencies] -im-rc = "12.2.0" -arrayvec = "0.4.9" - -[profile.release] -debug = true diff --git a/inputs/1.txt b/inputs/1.txt deleted file mode 100644 index 079567f..0000000 --- a/inputs/1.txt +++ /dev/null @@ -1,968 +0,0 @@ -+11 -+9 -+15 --17 -+8 -+16 -+5 -+13 -+8 --6 -+12 --17 --16 -+13 -+16 --15 --5 -+11 -+19 -+5 --8 -+20 -+18 -+15 --4 --12 -+8 -+2 -+15 -+12 --13 --4 --1 --14 --15 --6 --9 --13 -+18 -+13 -+6 --8 --3 --19 -+8 -+17 -+8 -+5 --11 -+15 --7 -+9 --18 --9 -+17 --14 --19 -+4 --6 -+4 -+1 --12 -+4 --1 --9 -+4 -+19 -+20 -+11 -+8 -+19 --13 -+17 -+6 -+8 --11 -+5 -+9 --15 -+17 --12 -+6 --19 --2 -+17 --18 -+7 --5 -+19 -+15 -+5 --6 -+2 -+5 -+18 -+11 -+2 -+5 --14 -+17 -+17 -+1 -+17 --9 --1 -+5 --11 -+5 --17 -+2 -+14 -+16 --3 -+17 -+18 -+1 --16 -+19 --11 --10 -+3 -+8 -+17 -+19 --18 -+6 --1 --2 -+14 --2 -+12 -+11 -+1 --19 --1 -+18 -+13 --6 --10 --13 -+12 --11 -+19 -+14 -+17 --2 --18 --4 -+11 --12 --2 --21 -+7 --1 --5 --13 --18 --18 --7 -+9 -+12 -+6 --12 -+20 --19 -+6 --19 -+3 --16 -+20 --17 --8 -+4 -+8 --21 -+18 --6 --13 -+2 -+5 --14 --16 --19 --17 -+4 --15 --11 --3 -+6 -+13 -+18 --16 --16 --15 --15 --2 -+1 --3 -+13 -+25 -+1 -+14 --8 --8 --19 -+7 -+11 -+20 -+5 --9 -+8 -+19 --9 -+3 -+1 -+1 --12 -+18 -+15 --5 -+11 --1 -+18 --2 --18 --14 --1 --16 -+12 -+12 --20 -+10 -+25 --13 --17 --20 --13 -+11 --40 --19 -+5 --21 --9 --15 --6 -+3 -+13 --5 --2 -+33 -+3 --7 -+42 -+32 --13 -+2 -+37 --1 --20 -+30 -+3 -+8 -+10 -+11 --5 --26 -+35 -+16 --12 -+9 -+16 -+18 --13 --15 -+19 -+6 -+18 -+16 -+11 -+16 --2 --10 -+1 --2 -+17 -+7 --1 -+17 -+6 -+15 -+7 --5 --6 -+9 --4 --17 --14 --1 --21 --2 -+15 -+3 -+8 --18 --17 --14 -+6 --17 -+20 -+13 -+14 --1 --1 -+3 --11 -+19 -+19 -+7 --18 --9 -+11 --12 -+11 -+4 -+2 -+8 --2 -+6 --20 -+5 -+6 --13 --8 -+6 -+11 -+8 -+2 -+7 -+11 --7 -+18 -+11 -+15 --16 --18 -+6 -+10 -+6 -+15 -+13 -+4 -+4 -+14 -+14 --47 -+17 --7 --20 --1 -+19 -+16 --23 --13 --17 -+13 --8 -+6 --20 -+4 -+15 -+4 -+19 -+19 --7 --24 --17 --19 --2 -+19 --13 -+8 --4 --19 --9 -+29 -+21 --29 -+2 -+15 -+22 -+1 -+21 --13 --14 -+12 --57 --5 --49 --10 --19 --19 --6 -+7 -+21 --12 --13 --13 -+4 --15 -+9 -+21 --7 -+19 -+32 -+31 --27 --21 -+25 --101 -+69 --75 -+26 --22 --45 --30 -+5 --40 --15 --880 --60727 -+14 --13 --18 -+7 -+2 --5 -+6 -+14 -+5 -+5 --18 --15 --9 -+7 --10 -+19 -+4 -+7 -+6 -+3 -+21 -+2 -+5 --19 -+15 --11 --19 --7 --1 --16 -+4 --12 --15 -+3 -+5 --6 --14 -+11 --16 --7 --15 -+8 -+12 --2 --9 --12 --17 -+19 --5 --19 -+16 --10 --13 --14 --1 --10 --18 --6 --11 -+8 --11 -+4 -+14 -+9 -+8 --18 --9 -+8 --19 --5 --14 -+13 -+19 -+13 -+16 -+19 --4 --4 -+3 -+19 --4 --7 --15 -+6 --9 --15 -+12 --14 -+6 --17 -+9 -+13 --4 --20 -+17 --9 --12 -+16 -+6 --9 -+19 -+10 -+11 -+17 --19 --1 -+12 -+12 -+1 --6 --1 -+4 --12 -+11 --14 -+19 --3 --9 --6 --23 --2 --13 -+18 --2 -+10 -+2 -+8 --9 --20 --17 --21 --14 -+11 --5 --15 -+2 --9 -+4 --7 --12 -+9 --1 --11 -+1 --10 -+11 --17 --10 --17 --3 --10 -+11 -+15 --19 --14 -+1 -+2 -+18 -+17 -+3 -+17 --18 --15 -+2 --3 --14 -+9 -+9 -+6 --18 -+13 --21 --18 -+12 -+7 -+13 --11 -+20 -+12 -+1 -+15 --14 -+4 -+11 -+18 --2 --7 --12 --11 -+5 -+10 -+6 -+8 -+18 -+6 --13 -+19 --5 --3 -+14 --3 --20 --3 --3 -+16 --15 --12 -+8 --24 --16 --13 --3 -+13 -+6 --12 --31 -+7 --18 -+17 --13 -+1 --15 -+16 -+4 --1 --17 --1 -+16 --4 -+13 -+8 -+3 -+33 -+8 --6 -+20 --4 -+2 -+13 --29 --17 --22 --24 --5 -+2 --12 --1 -+2 --15 -+2 --11 -+6 -+1 --2 -+5 -+4 --22 -+5 -+19 --13 --7 -+16 -+6 -+2 --22 -+19 -+9 -+8 --9 --12 --18 --13 -+1 -+5 --9 -+10 --11 --10 -+16 --15 --2 --16 -+1 --15 --17 --3 -+6 -+11 -+4 -+11 --16 --3 -+6 --1 -+13 -+18 -+6 --2 --6 --4 --5 -+20 -+19 --8 -+1 --13 -+16 -+1 -+10 --25 --19 --4 -+9 --8 -+17 -+6 --19 --2 -+5 -+12 -+7 --21 --12 -+3 --7 --11 --3 --18 -+2 -+12 -+20 --23 --19 --17 -+9 --19 -+1 --14 --5 --4 --9 -+17 -+4 -+3 -+15 --13 -+1 --12 --17 -+8 -+8 --20 --17 -+15 --16 -+10 -+7 -+2 --10 --2 -+8 -+19 --6 --17 --8 -+9 -+17 -+25 --5 --18 -+4 -+18 -+9 -+18 --14 --2 -+11 -+14 --17 --15 -+38 -+12 --2 -+14 -+4 -+21 -+16 -+12 -+15 -+23 --1 -+6 -+9 --24 --6 --13 --3 -+33 --13 -+62 -+81 -+11 --5 --27 -+9 --7 -+20 --19 --4 -+27 -+28 --29 -+82 -+11 --10 -+8 --22 -+42 -+34 --24 --15 -+19 --66 --70 --34 --18 --548 -+408 --1249 --60542 -+6 --17 --4 -+6 --7 -+3 -+14 -+2 -+15 --6 --5 -+19 --17 --10 -+6 --11 -+2 --4 -+10 --5 --11 --13 --12 --14 --10 --9 -+17 -+9 -+15 -+1 --10 --10 -+14 -+16 --17 --15 -+7 --6 --16 --10 -+15 --2 --7 --3 --5 --14 --8 --9 -+16 -+7 -+17 --22 -+12 --16 -+18 -+5 -+15 -+10 -+20 -+11 --5 -+12 --16 -+8 --16 -+13 -+14 --5 --12 --9 --16 --5 -+16 --18 -+21 --9 --13 --8 --10 -+14 -+18 --17 --16 -+8 --15 -+2 --4 -+3 --21 -+17 --16 -+18 -+18 --3 --21 -+1 --19 --3 --2 --4 --5 --20 --19 -+6 --19 -+3 --12 -+124236 diff --git a/inputs/10.txt b/inputs/10.txt deleted file mode 100644 index 3c77538..0000000 --- a/inputs/10.txt +++ /dev/null @@ -1,369 +0,0 @@ -position=<-30052, -9918> velocity=< 3, 1> -position=< 20349, -50260> velocity=<-2, 5> -position=< 40505, -40169> velocity=<-4, 4> -position=< 30444, 50599> velocity=<-3, -5> -position=< 40549, -50259> velocity=<-4, 5> -position=< 30454, -30087> velocity=<-3, 3> -position=< 50623, 20347> velocity=<-5, -2> -position=< 30439, -50262> velocity=<-3, 5> -position=< 50623, 40516> velocity=<-5, -4> -position=<-40143, -30090> velocity=< 4, 3> -position=< 50594, 50602> velocity=<-5, -5> -position=< -9884, -30087> velocity=< 1, 3> -position=<-19958, -40168> velocity=< 2, 4> -position=< 20357, 40513> velocity=<-2, -4> -position=<-50240, 30431> velocity=< 5, -3> -position=< 20351, 40516> velocity=<-2, -4> -position=<-50257, -20005> velocity=< 5, 2> -position=<-30073, 10253> velocity=< 3, -1> -position=<-50265, 50597> velocity=< 5, -5> -position=<-40154, 50601> velocity=< 4, -5> -position=<-19987, -40168> velocity=< 2, 4> -position=<-19987, -30087> velocity=< 2, 3> -position=<-50257, 30425> velocity=< 5, -3> -position=< 40558, 30425> velocity=<-4, -3> -position=<-19990, 10256> velocity=< 2, -1> -position=<-19979, 30425> velocity=< 2, -3> -position=<-19976, -50254> velocity=< 2, 5> -position=< 30446, -40172> velocity=<-3, 4> -position=<-40157, 40515> velocity=< 4, -4> -position=<-40143, 20342> velocity=< 4, -2> -position=< 30467, -50255> velocity=<-3, 5> -position=<-30040, 50606> velocity=< 3, -5> -position=<-30037, 50605> velocity=< 3, -5> -position=< 20382, -30086> velocity=<-2, 3> -position=< 50594, 10262> velocity=<-5, -1> -position=< 20342, 40515> velocity=<-2, -4> -position=<-19963, -50258> velocity=< 2, 5> -position=<-40135, 50599> velocity=< 4, -5> -position=< 40558, 10262> velocity=<-4, -1> -position=< 20366, -40177> velocity=<-2, 4> -position=< -9888, -9919> velocity=< 1, 1> -position=<-19998, 40511> velocity=< 2, -4> -position=< 50608, 40516> velocity=<-5, -4> -position=< 10263, 40520> velocity=<-1, -4> -position=< 40521, -40171> velocity=<-4, 4> -position=< 30427, -20005> velocity=<-3, 2> -position=< 20333, -9916> velocity=<-2, 1> -position=< -9909, -9913> velocity=< 1, 1> -position=< 50628, 40511> velocity=<-5, -4> -position=< 50610, 30430> velocity=<-5, -3> -position=<-50248, 30433> velocity=< 5, -3> -position=< 50612, 50599> velocity=<-5, -5> -position=<-50253, -40170> velocity=< 5, 4> -position=< -9880, 40513> velocity=< 1, -4> -position=< 20362, 10256> velocity=<-2, -1> -position=< -9877, -30087> velocity=< 1, 3> -position=<-40182, -30082> velocity=< 4, 3> -position=<-50240, -20003> velocity=< 5, 2> -position=<-40138, 10255> velocity=< 4, -1> -position=<-50221, 20348> velocity=< 5, -2> -position=< -9896, -9917> velocity=< 1, 1> -position=<-50209, 40516> velocity=< 5, -4> -position=< 20352, 50602> velocity=<-2, -5> -position=< 50607, -19998> velocity=<-5, 2> -position=<-19995, -30087> velocity=< 2, 3> -position=<-20003, 40517> velocity=< 2, -4> -position=<-50219, 30431> velocity=< 5, -3> -position=< 40521, -20001> velocity=<-4, 2> -position=<-30036, 20339> velocity=< 3, -2> -position=< 50624, 10257> velocity=<-5, -1> -position=<-50224, 40517> velocity=< 5, -4> -position=< -9907, 20344> velocity=< 1, -2> -position=< 40534, -40169> velocity=<-4, 4> -position=<-30065, -20003> velocity=< 3, 2> -position=< -9922, 20339> velocity=< 1, -2> -position=<-30052, 50602> velocity=< 3, -5> -position=< 10276, -50263> velocity=<-1, 5> -position=< 50594, 10258> velocity=<-5, -1> -position=< -9876, 10258> velocity=< 1, -1> -position=<-20001, -30091> velocity=< 2, 3> -position=<-50253, 50602> velocity=< 5, -5> -position=<-40159, -20002> velocity=< 4, 2> -position=<-50224, -30091> velocity=< 5, 3> -position=<-20001, 40511> velocity=< 2, -4> -position=< 20357, -40173> velocity=<-2, 4> -position=< 50615, 10255> velocity=<-5, -1> -position=< -9877, -50254> velocity=< 1, 5> -position=< 30440, 40516> velocity=<-3, -4> -position=< 30427, 50605> velocity=<-3, -5> -position=< 30419, -30090> velocity=<-3, 3> -position=< 20376, -20001> velocity=<-2, 2> -position=< 10255, 20344> velocity=<-1, -2> -position=< 30419, 20344> velocity=<-3, -2> -position=< 50595, -40169> velocity=<-5, 4> -position=<-30081, 40513> velocity=< 3, -4> -position=<-40143, -30090> velocity=< 4, 3> -position=< 40553, 20344> velocity=<-4, -2> -position=< 40529, -40170> velocity=<-4, 4> -position=< 30427, -50262> velocity=<-3, 5> -position=<-50240, -19996> velocity=< 5, 2> -position=<-50245, -30090> velocity=< 5, 3> -position=< 30448, -30087> velocity=<-3, 3> -position=< -9875, -40171> velocity=< 1, 4> -position=< -9900, 50599> velocity=< 1, -5> -position=<-19954, -40168> velocity=< 2, 4> -position=< 40526, 40518> velocity=<-4, -4> -position=<-20011, 30428> velocity=< 2, -3> -position=< 10283, 10257> velocity=<-1, -1> -position=<-40175, 40520> velocity=< 4, -4> -position=< 50636, -9915> velocity=<-5, 1> -position=< -9904, 10255> velocity=< 1, -1> -position=< 30435, 40520> velocity=<-3, -4> -position=< 30424, -50254> velocity=<-3, 5> -position=< 20393, 50602> velocity=<-2, -5> -position=<-50261, -30083> velocity=< 5, 3> -position=<-30065, 10254> velocity=< 3, -1> -position=<-30052, -40177> velocity=< 3, 4> -position=< 50625, -50263> velocity=<-5, 5> -position=<-40142, -20001> velocity=< 4, 2> -position=< 20338, -19996> velocity=<-2, 2> -position=< 50599, 50604> velocity=<-5, -5> -position=< 40534, -40176> velocity=<-4, 4> -position=<-50235, 20339> velocity=< 5, -2> -position=<-30068, -9918> velocity=< 3, 1> -position=<-40173, 20339> velocity=< 4, -2> -position=<-30054, -9915> velocity=< 3, 1> -position=< 10255, 20348> velocity=<-1, -2> -position=<-40162, 40520> velocity=< 4, -4> -position=<-40158, -9918> velocity=< 4, 1> -position=< 40508, 20348> velocity=<-4, -2> -position=< 10307, -40177> velocity=<-1, 4> -position=< 40545, -50261> velocity=<-4, 5> -position=<-30073, -40172> velocity=< 3, 4> -position=<-50209, -9918> velocity=< 5, 1> -position=< -9913, 40515> velocity=< 1, -4> -position=< -9873, -50262> velocity=< 1, 5> -position=< -9877, 10261> velocity=< 1, -1> -position=<-50245, -30084> velocity=< 5, 3> -position=< 30440, 50606> velocity=<-3, -5> -position=<-40167, 40514> velocity=< 4, -4> -position=<-30076, -50255> velocity=< 3, 5> -position=< -9891, -19996> velocity=< 1, 2> -position=< -9877, 20340> velocity=< 1, -2> -position=< 20365, -9911> velocity=<-2, 1> -position=<-50256, 10253> velocity=< 5, -1> -position=< -9909, -19996> velocity=< 1, 2> -position=< 30479, -9919> velocity=<-3, 1> -position=<-30065, 10257> velocity=< 3, -1> -position=< 50652, -9919> velocity=<-5, 1> -position=< 20338, -9914> velocity=<-2, 1> -position=<-30062, 20339> velocity=< 3, -2> -position=< 20360, 10259> velocity=<-2, -1> -position=< 40537, 50604> velocity=<-4, -5> -position=<-50221, 50603> velocity=< 5, -5> -position=< 40505, -30090> velocity=<-4, 3> -position=< -9890, 20339> velocity=< 1, -2> -position=<-30097, -50261> velocity=< 3, 5> -position=<-19995, -30086> velocity=< 2, 3> -position=< 20341, 10255> velocity=<-2, -1> -position=<-19977, -20005> velocity=< 2, 2> -position=<-30053, -50259> velocity=< 3, 5> -position=<-30065, -40173> velocity=< 3, 4> -position=< 50617, 50601> velocity=<-5, -5> -position=< 50631, -40171> velocity=<-5, 4> -position=< -9925, -9915> velocity=< 1, 1> -position=<-40150, 10262> velocity=< 4, -1> -position=< 40526, 40516> velocity=<-4, -4> -position=<-30055, -9915> velocity=< 3, 1> -position=<-50264, 30432> velocity=< 5, -3> -position=< 10287, -20003> velocity=<-1, 2> -position=< 40534, 20348> velocity=<-4, -2> -position=<-19960, -19998> velocity=< 2, 2> -position=< 30464, -40173> velocity=<-3, 4> -position=<-50220, -50259> velocity=< 5, 5> -position=< 40537, -9919> velocity=<-4, 1> -position=< 20357, 20346> velocity=<-2, -2> -position=< 40510, 50598> velocity=<-4, -5> -position=< 50607, -40172> velocity=<-5, 4> -position=< 40537, -19996> velocity=<-4, 2> -position=< 50636, 10261> velocity=<-5, -1> -position=< -9896, 30425> velocity=< 1, -3> -position=< -9917, 10255> velocity=< 1, -1> -position=<-50248, 50606> velocity=< 5, -5> -position=<-50237, -9919> velocity=< 5, 1> -position=<-30073, -20005> velocity=< 3, 2> -position=< 40529, 50606> velocity=<-4, -5> -position=< 50650, -30082> velocity=<-5, 3> -position=<-30093, 10258> velocity=< 3, -1> -position=< 30456, -40177> velocity=<-3, 4> -position=< 40521, -40170> velocity=<-4, 4> -position=< 30468, 10257> velocity=<-3, -1> -position=< 10276, -50261> velocity=<-1, 5> -position=< 30421, -9919> velocity=<-3, 1> -position=< -9877, 20346> velocity=< 1, -2> -position=< 10258, -40177> velocity=<-1, 4> -position=<-50264, 40516> velocity=< 5, -4> -position=< -9883, -40173> velocity=< 1, 4> -position=<-40127, -50256> velocity=< 4, 5> -position=< -9885, 20343> velocity=< 1, -2> -position=< 20382, -9914> velocity=<-2, 1> -position=<-30076, -19998> velocity=< 3, 2> -position=<-30073, 50601> velocity=< 3, -5> -position=< -9893, 20345> velocity=< 1, -2> -position=< -9904, 10258> velocity=< 1, -1> -position=< 20393, -40171> velocity=<-2, 4> -position=<-19984, 50603> velocity=< 2, -5> -position=< -9889, 20343> velocity=< 1, -2> -position=<-19982, 40512> velocity=< 2, -4> -position=<-20009, -40168> velocity=< 2, 4> -position=<-30069, -19997> velocity=< 3, 2> -position=<-19987, -30085> velocity=< 2, 3> -position=< 10252, 10259> velocity=<-1, -1> -position=< -9917, 30428> velocity=< 1, -3> -position=< 10287, 20342> velocity=<-1, -2> -position=<-50245, -20000> velocity=< 5, 2> -position=<-40165, -40177> velocity=< 4, 4> -position=<-40135, -50262> velocity=< 4, 5> -position=<-19984, -30085> velocity=< 2, 3> -position=< 30428, -30091> velocity=<-3, 3> -position=<-30089, 30431> velocity=< 3, -3> -position=< 30467, 20344> velocity=<-3, -2> -position=<-19987, 40520> velocity=< 2, -4> -position=<-30037, 40512> velocity=< 3, -4> -position=< 40557, -50255> velocity=<-4, 5> -position=< 40550, 10254> velocity=<-4, -1> -position=<-40159, 10258> velocity=< 4, -1> -position=< 40539, 20343> velocity=<-4, -2> -position=< 30440, 50605> velocity=<-3, -5> -position=< 30453, 30434> velocity=<-3, -3> -position=< 40550, -30088> velocity=<-4, 3> -position=<-40151, 10256> velocity=< 4, -1> -position=< 10276, 40514> velocity=<-1, -4> -position=< 10280, 20348> velocity=<-1, -2> -position=<-20009, -30091> velocity=< 2, 3> -position=< 30467, 50601> velocity=<-3, -5> -position=< 30439, -20000> velocity=<-3, 2> -position=< 10276, -20005> velocity=<-1, 2> -position=< 40562, -30082> velocity=<-4, 3> -position=<-19986, -20004> velocity=< 2, 2> -position=< 20333, 10259> velocity=<-2, -1> -position=<-50224, -9911> velocity=< 5, 1> -position=< -9872, -9919> velocity=< 1, 1> -position=< 10295, -30085> velocity=<-1, 3> -position=<-19990, 30429> velocity=< 2, -3> -position=< 10295, -30084> velocity=<-1, 3> -position=< 30429, 40515> velocity=<-3, -4> -position=< 20365, -30086> velocity=<-2, 3> -position=< 50618, 10258> velocity=<-5, -1> -position=<-20010, -9910> velocity=< 2, 1> -position=< 20373, -40169> velocity=<-2, 4> -position=< 10307, -50261> velocity=<-1, 5> -position=< 20381, 10256> velocity=<-2, -1> -position=< 40513, 40517> velocity=<-4, -4> -position=< -9865, 20345> velocity=< 1, -2> -position=< -9909, 20347> velocity=< 1, -2> -position=< 10284, 20348> velocity=<-1, -2> -position=<-30073, 20342> velocity=< 3, -2> -position=<-30078, 30425> velocity=< 3, -3> -position=< -9899, 20342> velocity=< 1, -2> -position=< 20333, 30429> velocity=<-2, -3> -position=< 10306, 10253> velocity=<-1, -1> -position=<-50261, 10260> velocity=< 5, -1> -position=< 30459, -9912> velocity=<-3, 1> -position=< 10292, -40176> velocity=<-1, 4> -position=< 20389, -30083> velocity=<-2, 3> -position=<-40166, 20340> velocity=< 4, -2> -position=< -9901, 20345> velocity=< 1, -2> -position=< 40557, -20004> velocity=<-4, 2> -position=<-40158, -30090> velocity=< 4, 3> -position=<-50209, 10255> velocity=< 5, -1> -position=<-50265, -40172> velocity=< 5, 4> -position=<-50245, 50605> velocity=< 5, -5> -position=< 30443, -40177> velocity=<-3, 4> -position=< -9916, 20339> velocity=< 1, -2> -position=< 50640, 50601> velocity=<-5, -5> -position=<-19971, -20005> velocity=< 2, 2> -position=< 40522, -9914> velocity=<-4, 1> -position=< 50607, -19999> velocity=<-5, 2> -position=<-50243, 40515> velocity=< 5, -4> -position=<-50240, 10260> velocity=< 5, -1> -position=< 40561, -19998> velocity=<-4, 2> -position=<-50211, -50254> velocity=< 5, 5> -position=<-40143, 30431> velocity=< 4, -3> -position=< 30430, -50259> velocity=<-3, 5> -position=< 30479, -20002> velocity=<-3, 2> -position=<-30092, 20344> velocity=< 3, -2> -position=<-30092, -40168> velocity=< 3, 4> -position=< 50601, 10257> velocity=<-5, -1> -position=< 20373, 40515> velocity=<-2, -4> -position=< 30479, -19997> velocity=<-3, 2> -position=<-40175, 50605> velocity=< 4, -5> -position=< -9880, -40173> velocity=< 1, 4> -position=< 20349, -50255> velocity=<-2, 5> -position=< 20362, -9914> velocity=<-2, 1> -position=<-30089, 50601> velocity=< 3, -5> -position=< 30467, 10253> velocity=<-3, -1> -position=< 40565, 30429> velocity=<-4, -3> -position=<-40142, 10257> velocity=< 4, -1> -position=< 50609, -50263> velocity=<-5, 5> -position=< -9881, -40173> velocity=< 1, 4> -position=< 50639, 40515> velocity=<-5, -4> -position=<-50269, -40170> velocity=< 5, 4> -position=< 40553, -9910> velocity=<-4, 1> -position=< 30455, 30434> velocity=<-3, -3> -position=< 20362, 10258> velocity=<-2, -1> -position=< 40505, 50603> velocity=<-4, -5> -position=<-19990, 10260> velocity=< 2, -1> -position=< 30447, -19998> velocity=<-3, 2> -position=<-40150, -30087> velocity=< 4, 3> -position=< -9907, -40172> velocity=< 1, 4> -position=<-30044, 20348> velocity=< 3, -2> -position=<-40178, -9913> velocity=< 4, 1> -position=<-50261, 30428> velocity=< 5, -3> -position=<-40151, 20348> velocity=< 4, -2> -position=<-50224, 30432> velocity=< 5, -3> -position=< 50652, -50263> velocity=<-5, 5> -position=<-19952, 50606> velocity=< 2, -5> -position=< 30431, 40511> velocity=<-3, -4> -position=< 30459, -30088> velocity=<-3, 3> -position=< 50651, 20347> velocity=<-5, -2> -position=< 10292, -30082> velocity=<-1, 3> -position=< 20366, 10257> velocity=<-2, -1> -position=<-19987, -9913> velocity=< 2, 1> -position=< -9865, -40170> velocity=< 1, 4> -position=< -9889, 50597> velocity=< 1, -5> -position=<-30065, -50262> velocity=< 3, 5> -position=< -9921, 20347> velocity=< 1, -2> -position=<-30084, 10253> velocity=< 3, -1> -position=< 10248, -20005> velocity=<-1, 2> -position=< 20345, -9915> velocity=<-2, 1> -position=< -9882, -9915> velocity=< 1, 1> -position=<-30065, 50602> velocity=< 3, -5> -position=< 40565, 50599> velocity=<-4, -5> -position=< 20349, -50261> velocity=<-2, 5> -position=<-19960, -19998> velocity=< 2, 2> -position=< 10255, -50258> velocity=<-1, 5> -position=< -9901, -50255> velocity=< 1, 5> -position=<-50219, -9916> velocity=< 5, 1> -position=< 40524, -30086> velocity=<-4, 3> -position=< 40550, 50600> velocity=<-4, -5> -position=<-50233, -30091> velocity=< 5, 3> -position=< 30440, -50257> velocity=<-3, 5> -position=< -9920, 50605> velocity=< 1, -5> -position=< 40507, 20339> velocity=<-4, -2> -position=< 10264, 30426> velocity=<-1, -3> -position=< 40556, 20341> velocity=<-4, -2> -position=< -9875, -9913> velocity=< 1, 1> -position=<-30068, -50254> velocity=< 3, 5> -position=< -9889, 30425> velocity=< 1, -3> -position=<-20011, -40172> velocity=< 2, 4> -position=<-50269, 10259> velocity=< 5, -1> -position=<-40132, 30432> velocity=< 4, -3> -position=< 40553, -9913> velocity=<-4, 1> -position=<-30073, 10256> velocity=< 3, -1> -position=<-30092, 20340> velocity=< 3, -2> -position=< 40542, 50606> velocity=<-4, -5> -position=<-50224, 20347> velocity=< 5, -2> -position=<-40143, 50606> velocity=< 4, -5> -position=<-19971, -20000> velocity=< 2, 2> -position=< 40553, 20340> velocity=<-4, -2> -position=<-30081, -20001> velocity=< 3, 2> -position=<-30037, -40172> velocity=< 3, 4> -position=< -9865, 30428> velocity=< 1, -3> -position=< 30479, 20340> velocity=<-3, -2> -position=< 30429, 20343> velocity=<-3, -2> -position=<-19971, -40172> velocity=< 2, 4> -position=< 30431, 50601> velocity=<-3, -5> -position=<-19982, 10256> velocity=< 2, -1> -position=< 20344, 20343> velocity=<-2, -2> diff --git a/inputs/12.txt b/inputs/12.txt deleted file mode 100644 index 6d801ae..0000000 --- a/inputs/12.txt +++ /dev/null @@ -1,34 +0,0 @@ -initial state: ###..#...####.#..###.....####.######.....##.#####.##.##..###....#....##...##...##.#..###..#.#...#..# - -.###. => . -..#.. => . -.#### => . -.##.. => # -#.#.# => . -..#.# => # -#.##. => # -#...# => # -..... => . -##..# => # -.#.#. => . -..##. => # -##.#. => . -###.. => . -.#... => # -..### => . -#..## => . -...#. => . -###.# => # -.##.# => . -.#.## => . -....# => . -##### => . -#.#.. => # -...## => # -#.... => . -#.### => # -##... => # -.#..# => . -####. => . -#..#. => # -##.## => # diff --git a/inputs/13.txt b/inputs/13.txt deleted file mode 100644 index a2195f8..0000000 --- a/inputs/13.txt +++ /dev/null @@ -1,150 +0,0 @@ - /----------------------------------------------------\ /----------------------------\ - /-------->-------\ | /----+----------+----------------------------+----------\ - | /+-----+-----------------------------------------------+----+----------+-\ /---+-------\ | - | /-------++-----+-----------------------------------------------+----+----------+-+---\ | | | | - /--+-------+-------++-----+-----------------------------------------------+---\| | | | | | | | - /----------+--+-----\ | || | /----------------------------------+---++----------+-+---+----\ | | | | - | | | /---+-+-------++-----+------------+--------------->------------------+---++----------+-+\ | | | | | | - | /-----+--+-+---+-+-------++-----+------------+----------------------------------+---++---\ | || | | | | | | - | | | | | | | || | | /-------------------+---++---+--\ | || | | | | | | - /+----+-----+--+-+---+-+-------++-----+------------+\ | | || | | | || | | | | | | - || | /---+--+-+---+-+-------++-----+------------++-------------+-------------------+---++---+--+-\ | || | | | | | | - || | | | | | | | || /-+---------\ || | | || | | | | || | | | | | | - || | | | | | | | || | | | || | | || | | | | || | | | | | | - || | | | | | | ^ || | | | || | /-----+---++---+--+-+-+-++--+----+-------------+---+--\ | | - || | | | | | | | ||/--+-+---------+--++-------------+------->-----+-----+\ || | | | | || | | | | | | | - || | | | | | | | ||| | | | || /-------+-------------+-----++--++---+--+-+-+-++--+----+-------------+---+\ | | | - || | | | | | | | ||| |/+---------+--++-----+-------+-------------+-----++--++---+--+-+-+-++--+----+-------------+---++\| | | - || \-+---+--+-+---+-+-------+++--+++---------+--++-----+-------+-------------+-----++--++---/ | | | || |/---+-------------+---++++----+--+\ - || | | | | | | ||| ||| | || | | | || || | | | || || | \---++++----/ || - || | | \-+---+-+-------+/| ||| | || | | | |v || | | | || || | |||| || - || | | | | | | |/-+++-----\ | || | | | || || | | | || || | |||| || - || | | | | | | || ||| | | || | | | || || /----+-+-+-++--++---+-----------------++++-------++--\ - || | /+----+---+-+-------+-++-+++-----+---+--++-\ | | | || || | | | | || || | |||| || | - || /--+--++----+---+-+--\ | || ||| | | || | | | /------+-----++--++-+----+-+-+-++--++---+-----------------++++--\ || | - || | | || | | | | | || ||| | | || | | | | /-+-----++-\|| | | | | || || | |||| | || | - || | | ||/---+---+-+--+----+-++-+++-----+---+--++-+---+--->---+-\ | | | || |||/+----+-+-+-++--++---+-----------------++++--+----++--+\ - || | | ||| | | | | | || ||| | | || | | | | | | \-----++-+++++----+-+-+-++--++---+-----------------+++/ | || || - || | | ||| | | | | | || ||| | | || | /+-------+-+----+----+-------++\||||| | | | || || | ||| | || || - || | | ||| | | | | /+-++-+++-----+---+--++-+--++-------+-+\ /+----+-------++++++++----+-+-+-++--++---+-----------------+++-\ | || || - || | | ||| /-+---+-+--+---++-++-+++-----+---+--++-+--++-------+-++--++----+------\|||||||| | | | || || | ||| | | || || - || | | ||| | | | | | || || ||| | | || | || | || || | ||||||||| |/+-+-++--++---+-----------------+++-+-+\ || || - || | | ||| | | | | | || || ||| | | || | || \-++--++----+------+++++++++----/|| | || /++---+------------\ ||| | || || || - || | | ||| | | | | | || || ||| | | || | || /++--++----+---\ ||||||||| || | || ||| | | ||| | || || || - || | | ||| | | | | | || || ||| | | || | || ||| || | | ||||||||| || | || ||\---+------------+----+++-+-++---+/ || - || | | ||| | | | | | || || ||| |/--+--++-+--++-------\||| || | | ||||||||| || | || || | | ||| | || | || - || | | /+++-+-+---+-+--+---++-++-+++-----++--+--++-+--++-------++++--++----+---+--+++++++++----\|| | || || | | ||| | || | || - || | | |||| | | | | | || || ||\-----++--+--++-+--++-------++++--++----+---+--++++++/|| ||| | || || | | ||| | || | || - || | | |||| | |/--+-+--+---++-++-++------++--+--++\| || /----++++--++----+---+--++++++-++----+++-+-++-++----+------\ | ||| | || | || - || | | |||| | || | | | || || || || | |||| || | |||| || | | |||||| || ||| | || || | | | ||| | || | || - || | | |||| | || | | | || || || /++--+--++++--++--+----++++--++----+---+--++++++-++----+++-+-++-++----+------+-----+----+++-+-++---+---++\ - || | | |||| | || | | | || || || /---+++--+--++++--++--+----++++--++----+---+--++++++-++----+++-+-++-++\ | | /+----+++-+-++---+--\||| - || | | |||| | || | | | || || || | ||| | \+++--++--+----++++--++----+---+--++++++-++----+++-+-++-+++---/ | || ||| | || | |||| - || | | |||| | || | | | || || \+-+---+++--/ ||| || | |||| || | | |||||| || ||| | || ||| | || ||| | || | |||| - || | | |||| | || | | | || || |/+---+++------+++--++--+----++++--++\ | | |||||| || ||| | || ||| | || ||| | || | |||| - || | | |||| | || | | | || || ||| ||| ||| || | ||||/-+++---+---+--++++++-++----+++-+-++-+++----------+----++----+++-+\|| | |||| - || | | |||| \-++--+-+--+---++-++--+++---+++------+++--++--+----+++++-+++---+---+--/||||| || ||| | || ||| | || ||| |||| | |||| - || | | |||| || | | | || || ||| ||| ||| || | ||||| ||| | | ||||| || ||| | || ||| | || ||| |||| | |||| - || | | |||| || | | | || || ||| ||| /----+++--++--+----+++++-+++---+---+---+++++-++----+++-+-++-+++----------+----++---\||| |||| | |||| - || | /+-++++---++--+-+--+---++-++--+++---+++-+----+++--++--+----+++++-+++\ | | ||||| || ||| | || ||| | ||/--++++-++++\ | |||| - || |/++-++++---++--+-+--+--\|| || ||| ||\-+----+++--++--+----/\+++-++++--+---/ ||||| || ||| | || ||| | ||| |||| ||||| | |||| - || |||| |||| || | | | ||| || ||| || | ||| || | ||| |||| | ||||| || /-+++-+-++-+++---\ | ||| |||| ||||| | |||| - |\---++++-++++---++--/ | | ||| || ||| || | ||| || \------+++-++++--+-------+++++-++--+-+++-+-++-+++---+------/ ||| |||| ||||| | |||| - | |||| |||| || | | ||| || ||| || | ||| || ||| |||| | ||||| || | ||| | || ||| | ||| |||| ||||| | |||| - | |||| |||| || \--+--+++-++--+++---++--+----+++--++---------+++-++++--+-------+++++-++--+-+++-+-++-+/| | ||| |||| ||||| | |||| - | ||||/++++---++-------+--+++-++--+++---++--+----+++--++---------+++\|||| | ||||| || | |||/+-++-+-+---+-----------+++--++++-+++++--+\ |||| - | ||||||||\<--++-------+--+++-++--+++---++--+----+++--++---------/||||||| \-------+++/| || | ||||| || \-+---+-----------+/| |||| ||||| || |||| - | |||||||| /++------\| ||| || /+++---++--+----+++--++----------+++++++----------+++-+-++--+-+++++-++---+---+---------\ | | |||| ||||| || |||| - | |||||||| ||| ||/-+++-++-++++---++--+-\ ||| || ||||||| ||| | || | ||||| || | | | | | |||| ||||| || |||| - | |||||||| ||| ||| ||| || |||| || | | ||| || ||||||| /+++-+-++--+-+++++-++\ | | | | \--++++-++++/ || |||| - | |||||||| ||| ||| ||| || |||| || | | ||| || ||||||| |\++-+-++--+-+++++-+++--+---+---------+-+----++++-++++---/| |||| - | /--++++++++---+++------+++-+++-++-++++---++--+-+--+++\ || ||||||| | || | || | ||||| ||| | | | \----++++-++++----+-/||| - | | |||||||| ||| ||| ||| || |||| || | | |||| || ||||||| | || | || | ||||| ||| | |/--------+----\ |||| |||| | ||| - | | |||||||| ||| /+++-+++-++-++++---++--+-+--++++-++----------+++++++---\ | || | || | ||||| ||| | || /------+---\| |||| |||| | ||| - | | |||||||| ||| |||| ||| || |||| || | | |||| || /-----+++++++---+---\ | || | || | ||||| ||| |/--++-+------+---++-++++-++++----+-\||| - \-+--++++++++---+++-----++++-+++-++-++++---++--+-+--/||| || | ||||||| | | | || | || | ||||| ||| || || | | || |||| |||| | |||| - | |||||||| /-+++-----++++-+++-++-++++---++--+\| ||| || | ||||||| | | | || | || | ||||| ||| || || | | || |||| |||| | |||| - | |||||||| | ||| |||| ||| ||/++++---++--+++---+++-++----+-----+++++++---+---+-+-++-+-++--+-+++++-+++--++--++-+------+\ || |||| |||| | |||| -/--+--++++++++-+-+++-----++++-+++-+++++++---++--+++---+++-++----+-----+++++++---+---+-+-++-+-++--+-+++++-+++\ || || | || || |||| |||| | |||| -| | |||||||| | ||| ||||/+++-+++++++---++--+++---+++-++----+-----+++++++---+\ | | || | |\--+-+++++-++++-++--++-+------++--++-++++-++++----+-+/|| -| | |||||||| | ||| |||||||| ||||||| || ||| ||| || | ||||||| || | | || | | | ||||| |||| || || | || || |||| |||| | | || -| | |||||||| | |||/----++++++++-+++++++---++--+++---+++-++----+-----+++++++---++--+-+-++-+-+---+-+++++-++++-++\ || | || || |||| |||| | | || -| | |||||||| | |||| |||||||| ||||||| /-++--+++---+++-++----+-----+++++++---++--+\| || | | | ||||| |||| ||| || | || || |||| |||| | | || -| | |||||||| | |||| |||||||| ||||||| | || ||| ||| || | ||||||| || ||| || | | | ||||| |||| ||| || | || || |||| |||| | | || -| | |||\++++-+-++++----++++++++-+++++++-+-++--+++---+++-++----+-----+++++++---++--+++-++-+-+---+-++/|| |||| ||| || | || || |||| |||| | | || -| | ||| |||| | |||| ||||||||/+++++++-+-++\ ||| ||| || \-----+++++++---++--/|| || | | | || || |||| ||| || | || || |||| |||| | | || -| | ||| |||| | |||| |||||||\++++++++-+-+++-+++---+++-++----------+++++++---++---++-++-+-+---+-++-++-/||| ||| || | || || |||| |||| | | || -| | ||| |\++-+-++++----+++++++-++++++++-+-+++-+++---+++-++----------+++++++---++---++-++-+-+---+-/\-++--+++-+++-++-+------++--++-++++-+++/ | | || -| | ||| | || | |||| ||||||| |||||||| | ||| ||| ||| ^| ||||\++---++---++-++-+-+---+----++--+++-+++-++-+------++--++-++++-++/ | | || -| | ||| | || | |||| ||||||| ||||||\+-+-+++-+++---+++-++----------++++-/|/--++---++-++-+-+---+----++--+++-+++-++-+-\ || || |||| || | | || -| | ||| | || \-++++----+++++++-++++++-+-+-+++-+/| /-+++-++-------\ |||| || || || |v | v | \+--+++-+++-++-+-+----++--++-++++-++------/ | || -| | ||| | || |\++----+++++++-++++++-+-+-+++-+-+-+-+++-++-------+--++++--++--++---++-++-+-+---+-----+--/|| ||| || | | || || |||| || | || -| /+--+++-+-++---+-++----+++++++-++++++-+-+-+++-+-+-+-+++-++-------+--++++--++-\|| || || | | /+-----+---++-+++-++-+-+----++--++-++++-++-----\ | || -| || ||| | \+---+-++----+++++++-++++++-+-+-+++-+-+-+-+/| || | |||| || ||| || || | | || | || |\+-++-+-+----++--++-++++-++-----+--/ || -| || ||| | | |/++----+++++++-++++++-+-+-+++-+-+-+-+-+-++-------+--++++--++-+++---++-++-+-+--++-----+---++-+\| || | | || || |||| || | || -| || ||| | | |||| ||||||\-++++++-+-+-+++-+-+-+-+-+-++-------+--/||| || ||| || || | | || /---+---++-+++-++-+-+----++--++-++++-++---\ | || -| || ||| | /+---++++----++++++--++++++-+-+-+++-+-+-+-+-+-++-------+---+++--++-+++---++-++-+-+--++-+--\| || ||| || | | || || |||| || | | || -| || ||| | || /-++++----++++++\ |||||| | \-+++-+-+-+-+-+-++-------+---+++--++-+++---/| ||/+-+--++-+--++---++-+++-++-+\| || || |||| || | | || -| || ||\-+-++-+-++++----+++++++-++++++-+---+++-+-+-+-+-+-++-------+---+++--/| ||| | |||| | || | || || ||| || ||| || || |||| || | | || -| || || | |\-+-++++----+++++++-++++++-+---+++-+-+-+-+-+-++-------+---+++---+-+++----+-+++/ | || | || || ||| || ||| || || |||| || | | || -| || || | | | \+++----+/||||| \+++++-+---++/ | | | | | || | ||| | ||| | ||| | || | || || ||| || ||| || || |||| || | | || -| || || | | | |\+----+-+++++--+++++-+---++--+-+-+-/ | || | ||| | ||| | ||| | || | || || ||| || ||| || || |||| || | | || -| || || | | | | | | ||||| ||||| | || | | | /+-++-------+\ ||| | ||| | ||| | || | || || ||| || ||| || || |||| || | | || -| || || \-+--+--+-+----+-+++++--+++++-+---++--+-+-+--++-++-------++--+/| | ||| \-+++--+--++-+--++---/| ||| || ||| || || |||| || | | || -| || || | | | | | ||||| ||||| | || | | | || || /----++--+-+---+-+++------+++--+--++-+--++----+-+++-++-+++----++-\|| |||| || | | || -| || ||/---+--+-\| |/---+-+++++--+++++-+---++--+-+-+--++-++--+----++--+-+---+-+++----\ ||| | ||/+--++----+-+++-++-+++----++-+++-++++-++---+\| || -| || ||| | | || || | ||||| ||||| | || | | | || || | || | | | ||| | ||| \--++++--++----+-+++-++-+++----++-+++-++++-++---+++----/| -| || ||| | | || || | ||||| ||||| | || | | | /++-++--+----++--+-+---+-+++----+-+++-----++++--++----+-+++-++-+++----++-+++\|||| || ||| | -| || ||| ^ | || || | ||||| ||||| | || | | | ||| || | || | | | ||| | ||| |||\--++----+-+++-++-+++----++-++++++++-++---/|| | -| || ||| | | || || | ||||| ||||| | || \-+-+-+++-++--+----++--+-+---+-+++----+-+++-----+++---++----+-+++-++-+++----++-++++/||| || || | -| || ||| | | || || | ||||| ||||| | || | | ||| || | /-++--+-+---+-+++----+-+++-----+++---++----+-+++-++-+++--\ || |||| ||| || || | -|/++--+++---+--+-++-++---+-+++++--+++++-+--\|| |/+-+++-++--+--+\|| | | | ||| | ||| ||| |\----+-+++-++-+++--+-++-++++-/|| || || | -|||| ||| | | || || | ||||| ||||| | ||| /+++-+++-++--+--++++--+-+---+-+++----+-+++-----+++---+-----+-+++-++-+++--+-++-++++\ || || || | -|||| ||| | | || || | ||||| |\+++-+--++/ |||| ||| || | |||| | | | ||| | ||| ||| | | ||| || ||| | || ||||| || || || | -|||| ||| | | || || | ||||| |/+++-+--++---\|||| ||| || | |||| | | | ||| | ||| ||| | | ||| || ||| | || ||||| || || || | -|||| |\+---+--+-++-++---+-+++/| ||||| | |\---+++++-+++-++--+--++++--+-+---+-+++----+-+++-----+++---+-----+-+++-++-+++--+-++-+++++-++-++----++-----/ -|||| | | | | |\-++---+-+++-+--+++++-+--+----+++++-+++-++--+--++++--+-+---+-+++----+-+++-----+++---+-----+-+/| || ||| | || ||||| || || || -|||| | | | | | /++---+-+++\| ||||| | | ||||| ||| || | |||| | | | ||| | ||| ||| | | | | || ||| | || ||||| || || || -|||| | | | /+-+-+++--\| ||||| ||||| | | ||||| ||| || | |||| | | | ||| | ||| ||| | | | | || ||| | || ||||| || || || -|||| | | | || | ||| || ||||| ||||| | | ||||| ||| || | |||| | | | ||| /-+-+++-----+++---+----\| | | || ||| | || ||||| || || || -|||| | | | || | ||| /++-+++++--+++++-+--+----+++++-+++-++--+--++++-\| | | ||| | | ||| ||\---+----++-+-+-++-+++--+-++-+++++-++-++----/| -|||| | | | || | ||| ||| ||||| ||||| \--+----+++++-+++-++--+--++++-++-+---+-+++--+-+-+++-----++----+----++-/ | || ||| | || ||||| || || | -|||| \-+--<+-++-+-+++-+++-/|||| ||||| | |\+++-+++-++--+--++++-++-+---+-+++--+-+-+++-----++----+----++---+-++-+++--+-++-++++/ || || | -|||| | | || | ||| ||| |||| ||||| | | ||| ||| || | |||| |\-+---+-+++--+-+-+++-----++----+----++---+-++-+++--+-++-++++--++-+/ | -|\++----+---+-++-+-+++-+++--++++--+++++----/ | ||| ||| \+--+--++++-+--+---+-+++--+-+-+/| |\----+----++---+-/| ||| | || |||| || | | -| || | | || | ||| ||| |||| \++++---------+-+++-+++--+--+--++++-+--+---+-+++--+-+-/ | | | || | | ||| | || |||| || | | -| || | | || | ||| ||| |||| |||\---------+-+++-+++--+--+--++++-+--+---+-+++--+-+---+-----+-----+----++---+--+-+++--+-++-++++--+/ | | -| || | | || | ||| ||| |||| ||| /----+-+++-+++--+--+--++++-+--+---+-+++--+-+---+-----+--\ | || | | |||/-+-++-++++--+--+------+-\ -| |\----+---+-++-+-+++-+++--++++---+++-----+----+-+++-++/ | | |||| | \---+-+++--+-+---+-----+--+--+----++---+--+-++++-+-++-++++--+--/ | | -| | | | || | ||| ||| |||| ||| | | ||| || | | |||| | | ||| | | | | | | || | | \+++-+-++-+/|| | | | -| \-----+---+-++-+-+++-+++--++++---+++-----+----+-+++-++---+--+--++++-+------+-/|| | | \-----+--+--+----++---+--+--/|| | || | || | | | -| | \-++-+-+++-+++--++++---+++-----+----+-+++-++---+--+--++++-+------+--++--+-+---------+--+--/ || | | || |/++-+-++--+---------+-+---\ -| | |\-+-+++-+++--+++/ /+++-----+----+-+++-++---+--+--++++-+------+--++--+-+---------+--+-------++---+--+>--++-++++-+-++--+-------\ | | | -| | | | ||| ||| ||| ||\+-----+----+-+++-++---+--+--++++-+------+--++--+-+---------+--+-------++---+--+---++-+++/ | || | | | | | -| | | | ||| ||| ||| || | | | ||| || \--+--++++-+------+--++--+-+---------+--+-------++---+--+---++-+++--+-++--/ | | | | -| | | | ||| ||| \++---++-+-----+----+-/|| || | |||| | | || | | | | || | | || ||| | || | | | | -| | | | \++-+++---+/ || | \----+--++-++------+--++++-+------+--++--+-+---------+--/ || | | || ||| | || | | | | -| | | | || ||| \----++-+----------+--++-++------+--++++-+---->-+--+/ | | | || | | || ||| | || | | | | -| | | | || \++--------++-+----------+--++-++------+--++++-/ | | | | \----------++---+--+---++-+++--+-++----------+-/ | | -| | | | || || || | | || || | |||| | | | | /--------------++---+--+---++-+++--+-++-----\ | | | -| | | | || || || | | || || | \+++--------+--+---+-+-----+--------------++---+--+---++-/|| | || | | | | -| | | | || || || | | || || | ||| | | \-+-----+--------------/| | | || || | || | | | | -| | | | || || /++-+----------+\ || \+------+---+++--------+--+-----+-----+---------------+---+--+---++--++--+-+/ | | | | -| | | | || || |\+-+----------++-++--+------+---+++--------+--+-----+-----+---------------+---+--+---++--++--+-+------+----/ | | -| | | | /++--++-------+-+-+----------++-++--+------+---+++-\ \--+-----+-----+---------------+---+--+---/| || | | | | | -| | | | ||| || | | | || \+--+------+---/|| | | | | | | | | || | | | | | -| | | | ||| || | | | |v | | | || | | | | | | | | \+--+-+------+--------+---/ -| /-+-----+--+-+++--++-------+-+-+----------++--+--+------+----++-+---------+-----+-----+---------------+\ | | | | | | | | -| | | | | ||| |\-------+-+-+----------++--+--+------+----++-+---------/ | | || | | | | | | | | -| | | | | ||| | | | \----------++--+--+------+----++-+---------------+-----+---------------++--+--+----+---/ | | | | -| | | | | ||| | | | || | \------+----+/ | | | || | | | | | | | -| | | \--+-+++--/ ^ | || | | | | | | || | | | | | | | -| | | | ||\-----------+-+------------++--+---------+----+--+---------------/ | || | | \------+-+------+--------/ -| | | | || | | || \---------+----/ | | || | | | | | -\-----+-+--------+-++------------+-+------------++------------+-------+---------------------+---------------/| | | | | | - | | | |\------------+-+------------++------------+-------+-<-------------------+----------------+--/ \-----------+-/ | - | | | | \-+------------+/ \-------+---------------------+----------------+-----------------/ | - | | | \---------------+------------+---------------------/ | | | - | | | \------------/ \----------------+--------------------------/ - \-+--------+-------------------------------------------------------------------------------------------/ - \--------/ diff --git a/inputs/15.txt b/inputs/15.txt deleted file mode 100644 index 0bd71e0..0000000 --- a/inputs/15.txt +++ /dev/null @@ -1,32 +0,0 @@ -################################ -#######################.######## -#######################.######## -########..#############.######## -#######.....#########....#..#### -#######.....##########......#### -######....#..########.......#..# -#######.G...########...........# -####..GG....G######..........### -########....G..###..E.......#.E# -########...G..#....G..G.....E..# -########...G...G.G...........E.# -####....G.....#####..E......#E.# -####.####.#..#######....G.....## -####.G#####.#########..........# -####G#####..#########..........# -####.####..E#########..........# -####...#..#.#########.G........# -####.....G..#########.........## -####..G....E.#######........#### -####G.........#####...##....#### -#####G................###..E#### -#####..####...............###### -####..#####.............######## -#####.#######...........######## -#####.########.........######### -#####.########.....E..########## -#.....#########...#.############ -#..#############....############ -################....############ -##################.############# -################################ diff --git a/inputs/16_1.txt b/inputs/16_1.txt deleted file mode 100644 index 755acda..0000000 --- a/inputs/16_1.txt +++ /dev/null @@ -1,3143 +0,0 @@ -Before: [2, 3, 2, 2] -0 3 3 0 -After: [0, 3, 2, 2] - -Before: [1, 1, 2, 3] -6 0 2 0 -After: [0, 1, 2, 3] - -Before: [1, 0, 2, 2] -6 0 2 0 -After: [0, 0, 2, 2] - -Before: [1, 1, 1, 1] -11 2 1 0 -After: [2, 1, 1, 1] - -Before: [3, 0, 0, 2] -0 3 3 2 -After: [3, 0, 0, 2] - -Before: [1, 1, 2, 2] -9 1 0 2 -After: [1, 1, 1, 2] - -Before: [3, 2, 1, 1] -5 2 1 1 -After: [3, 2, 1, 1] - -Before: [1, 1, 0, 3] -7 1 3 0 -After: [0, 1, 0, 3] - -Before: [1, 2, 1, 3] -5 2 1 0 -After: [2, 2, 1, 3] - -Before: [0, 2, 2, 0] -8 0 0 0 -After: [0, 2, 2, 0] - -Before: [2, 0, 0, 1] -3 0 3 0 -After: [1, 0, 0, 1] - -Before: [3, 1, 2, 2] -4 1 3 1 -After: [3, 0, 2, 2] - -Before: [2, 2, 1, 1] -5 2 1 1 -After: [2, 2, 1, 1] - -Before: [1, 1, 2, 2] -6 0 2 2 -After: [1, 1, 0, 2] - -Before: [1, 1, 1, 2] -4 1 3 0 -After: [0, 1, 1, 2] - -Before: [2, 1, 3, 1] -13 1 3 0 -After: [1, 1, 3, 1] - -Before: [0, 1, 2, 1] -13 1 3 1 -After: [0, 1, 2, 1] - -Before: [2, 1, 0, 2] -4 1 3 1 -After: [2, 0, 0, 2] - -Before: [2, 1, 0, 1] -2 0 1 3 -After: [2, 1, 0, 1] - -Before: [3, 1, 2, 1] -12 1 2 2 -After: [3, 1, 0, 1] - -Before: [1, 1, 3, 2] -4 1 3 3 -After: [1, 1, 3, 0] - -Before: [2, 2, 1, 3] -7 1 3 0 -After: [0, 2, 1, 3] - -Before: [1, 3, 2, 1] -6 0 2 1 -After: [1, 0, 2, 1] - -Before: [2, 1, 2, 1] -13 1 3 1 -After: [2, 1, 2, 1] - -Before: [2, 1, 3, 0] -14 2 0 3 -After: [2, 1, 3, 1] - -Before: [1, 1, 2, 3] -6 0 2 3 -After: [1, 1, 2, 0] - -Before: [1, 1, 1, 3] -11 2 1 2 -After: [1, 1, 2, 3] - -Before: [2, 2, 3, 2] -0 3 3 0 -After: [0, 2, 3, 2] - -Before: [1, 2, 0, 2] -1 0 2 3 -After: [1, 2, 0, 0] - -Before: [2, 1, 0, 0] -2 0 1 3 -After: [2, 1, 0, 1] - -Before: [0, 2, 1, 1] -5 2 1 3 -After: [0, 2, 1, 2] - -Before: [0, 3, 2, 1] -10 3 2 3 -After: [0, 3, 2, 1] - -Before: [3, 3, 2, 2] -0 3 3 0 -After: [0, 3, 2, 2] - -Before: [1, 1, 2, 0] -12 1 2 0 -After: [0, 1, 2, 0] - -Before: [0, 2, 1, 3] -5 2 1 0 -After: [2, 2, 1, 3] - -Before: [0, 3, 2, 1] -8 0 0 0 -After: [0, 3, 2, 1] - -Before: [1, 1, 1, 3] -11 2 1 1 -After: [1, 2, 1, 3] - -Before: [0, 1, 1, 2] -11 2 1 2 -After: [0, 1, 2, 2] - -Before: [1, 1, 1, 1] -13 1 3 1 -After: [1, 1, 1, 1] - -Before: [1, 3, 0, 0] -1 0 2 1 -After: [1, 0, 0, 0] - -Before: [2, 2, 3, 1] -14 2 0 1 -After: [2, 1, 3, 1] - -Before: [0, 3, 0, 3] -8 0 0 3 -After: [0, 3, 0, 0] - -Before: [0, 0, 1, 1] -8 0 0 2 -After: [0, 0, 0, 1] - -Before: [0, 3, 2, 1] -8 0 0 2 -After: [0, 3, 0, 1] - -Before: [2, 1, 2, 3] -12 1 2 1 -After: [2, 0, 2, 3] - -Before: [3, 2, 2, 3] -14 2 1 2 -After: [3, 2, 1, 3] - -Before: [2, 2, 3, 0] -15 2 2 2 -After: [2, 2, 1, 0] - -Before: [2, 3, 3, 2] -15 2 2 0 -After: [1, 3, 3, 2] - -Before: [1, 1, 0, 0] -1 0 2 3 -After: [1, 1, 0, 0] - -Before: [3, 2, 2, 2] -0 3 3 3 -After: [3, 2, 2, 0] - -Before: [1, 3, 2, 2] -6 0 2 3 -After: [1, 3, 2, 0] - -Before: [2, 1, 0, 1] -3 0 3 1 -After: [2, 1, 0, 1] - -Before: [3, 3, 1, 3] -7 2 3 0 -After: [0, 3, 1, 3] - -Before: [0, 2, 1, 0] -5 2 1 3 -After: [0, 2, 1, 2] - -Before: [1, 1, 1, 2] -4 1 3 2 -After: [1, 1, 0, 2] - -Before: [0, 3, 1, 2] -8 0 0 1 -After: [0, 0, 1, 2] - -Before: [2, 1, 3, 3] -7 1 3 0 -After: [0, 1, 3, 3] - -Before: [3, 2, 2, 1] -10 3 2 0 -After: [1, 2, 2, 1] - -Before: [2, 1, 0, 1] -3 0 3 3 -After: [2, 1, 0, 1] - -Before: [2, 1, 1, 1] -13 1 3 2 -After: [2, 1, 1, 1] - -Before: [2, 2, 0, 3] -7 1 3 1 -After: [2, 0, 0, 3] - -Before: [2, 2, 0, 1] -3 0 3 0 -After: [1, 2, 0, 1] - -Before: [2, 2, 3, 1] -3 0 3 3 -After: [2, 2, 3, 1] - -Before: [1, 2, 0, 0] -1 0 2 1 -After: [1, 0, 0, 0] - -Before: [2, 2, 2, 2] -14 3 2 1 -After: [2, 0, 2, 2] - -Before: [3, 1, 1, 2] -4 1 3 1 -After: [3, 0, 1, 2] - -Before: [2, 1, 1, 1] -2 0 1 3 -After: [2, 1, 1, 1] - -Before: [1, 1, 0, 0] -1 0 2 1 -After: [1, 0, 0, 0] - -Before: [1, 3, 0, 2] -1 0 2 1 -After: [1, 0, 0, 2] - -Before: [1, 1, 1, 3] -9 1 0 2 -After: [1, 1, 1, 3] - -Before: [3, 1, 2, 2] -12 1 2 2 -After: [3, 1, 0, 2] - -Before: [0, 1, 2, 1] -12 1 2 2 -After: [0, 1, 0, 1] - -Before: [3, 2, 0, 3] -7 1 3 3 -After: [3, 2, 0, 0] - -Before: [2, 1, 2, 3] -7 2 3 2 -After: [2, 1, 0, 3] - -Before: [3, 1, 3, 1] -13 1 3 0 -After: [1, 1, 3, 1] - -Before: [2, 1, 1, 1] -11 2 1 0 -After: [2, 1, 1, 1] - -Before: [0, 1, 1, 0] -11 2 1 3 -After: [0, 1, 1, 2] - -Before: [2, 1, 3, 3] -7 1 3 2 -After: [2, 1, 0, 3] - -Before: [2, 3, 2, 1] -10 3 2 1 -After: [2, 1, 2, 1] - -Before: [1, 1, 2, 2] -4 1 3 1 -After: [1, 0, 2, 2] - -Before: [1, 3, 0, 1] -1 0 2 0 -After: [0, 3, 0, 1] - -Before: [1, 3, 0, 3] -1 0 2 3 -After: [1, 3, 0, 0] - -Before: [2, 3, 3, 1] -3 0 3 1 -After: [2, 1, 3, 1] - -Before: [2, 1, 1, 2] -11 2 1 3 -After: [2, 1, 1, 2] - -Before: [2, 1, 1, 1] -2 0 1 1 -After: [2, 1, 1, 1] - -Before: [3, 1, 2, 2] -4 1 3 0 -After: [0, 1, 2, 2] - -Before: [2, 0, 2, 1] -10 3 2 1 -After: [2, 1, 2, 1] - -Before: [1, 3, 0, 1] -1 0 2 1 -After: [1, 0, 0, 1] - -Before: [1, 1, 0, 2] -9 1 0 0 -After: [1, 1, 0, 2] - -Before: [2, 3, 2, 1] -3 0 3 2 -After: [2, 3, 1, 1] - -Before: [1, 2, 2, 1] -0 3 3 3 -After: [1, 2, 2, 0] - -Before: [3, 1, 2, 2] -12 1 2 1 -After: [3, 0, 2, 2] - -Before: [0, 2, 3, 1] -8 0 0 1 -After: [0, 0, 3, 1] - -Before: [0, 0, 2, 1] -10 3 2 2 -After: [0, 0, 1, 1] - -Before: [3, 2, 1, 3] -15 0 0 3 -After: [3, 2, 1, 1] - -Before: [1, 3, 2, 2] -6 0 2 2 -After: [1, 3, 0, 2] - -Before: [1, 2, 2, 3] -6 0 2 3 -After: [1, 2, 2, 0] - -Before: [1, 1, 3, 2] -4 1 3 2 -After: [1, 1, 0, 2] - -Before: [1, 2, 2, 1] -10 3 2 3 -After: [1, 2, 2, 1] - -Before: [1, 2, 2, 1] -6 0 2 2 -After: [1, 2, 0, 1] - -Before: [1, 2, 1, 3] -7 2 3 1 -After: [1, 0, 1, 3] - -Before: [1, 2, 2, 1] -10 3 2 0 -After: [1, 2, 2, 1] - -Before: [2, 3, 3, 1] -3 0 3 3 -After: [2, 3, 3, 1] - -Before: [2, 3, 2, 3] -14 2 0 2 -After: [2, 3, 1, 3] - -Before: [2, 1, 3, 1] -2 0 1 3 -After: [2, 1, 3, 1] - -Before: [0, 3, 3, 0] -8 0 0 1 -After: [0, 0, 3, 0] - -Before: [2, 1, 1, 3] -7 2 3 2 -After: [2, 1, 0, 3] - -Before: [0, 2, 2, 1] -10 3 2 3 -After: [0, 2, 2, 1] - -Before: [3, 2, 1, 3] -5 2 1 3 -After: [3, 2, 1, 2] - -Before: [3, 1, 1, 2] -0 3 3 2 -After: [3, 1, 0, 2] - -Before: [0, 3, 1, 3] -7 2 3 3 -After: [0, 3, 1, 0] - -Before: [2, 0, 2, 1] -10 3 2 3 -After: [2, 0, 2, 1] - -Before: [2, 2, 1, 0] -5 2 1 2 -After: [2, 2, 2, 0] - -Before: [2, 1, 2, 2] -4 1 3 3 -After: [2, 1, 2, 0] - -Before: [1, 3, 1, 1] -0 2 3 2 -After: [1, 3, 0, 1] - -Before: [1, 1, 0, 3] -1 0 2 3 -After: [1, 1, 0, 0] - -Before: [1, 0, 0, 3] -1 0 2 2 -After: [1, 0, 0, 3] - -Before: [2, 1, 1, 0] -11 2 1 0 -After: [2, 1, 1, 0] - -Before: [2, 0, 0, 1] -3 0 3 3 -After: [2, 0, 0, 1] - -Before: [3, 3, 0, 1] -14 0 2 2 -After: [3, 3, 1, 1] - -Before: [0, 1, 2, 0] -8 0 0 1 -After: [0, 0, 2, 0] - -Before: [2, 0, 1, 1] -3 0 3 2 -After: [2, 0, 1, 1] - -Before: [1, 3, 2, 0] -6 0 2 1 -After: [1, 0, 2, 0] - -Before: [3, 3, 2, 0] -2 0 2 3 -After: [3, 3, 2, 1] - -Before: [2, 1, 0, 1] -13 1 3 2 -After: [2, 1, 1, 1] - -Before: [1, 1, 2, 1] -13 1 3 2 -After: [1, 1, 1, 1] - -Before: [1, 3, 2, 0] -6 0 2 2 -After: [1, 3, 0, 0] - -Before: [3, 1, 3, 2] -4 1 3 1 -After: [3, 0, 3, 2] - -Before: [2, 3, 2, 2] -15 0 0 3 -After: [2, 3, 2, 1] - -Before: [2, 3, 2, 1] -3 0 3 3 -After: [2, 3, 2, 1] - -Before: [2, 1, 1, 2] -4 1 3 0 -After: [0, 1, 1, 2] - -Before: [1, 1, 1, 1] -13 1 3 0 -After: [1, 1, 1, 1] - -Before: [3, 1, 1, 0] -11 2 1 2 -After: [3, 1, 2, 0] - -Before: [3, 1, 1, 1] -11 2 1 0 -After: [2, 1, 1, 1] - -Before: [3, 1, 0, 2] -4 1 3 0 -After: [0, 1, 0, 2] - -Before: [3, 3, 1, 3] -15 0 0 3 -After: [3, 3, 1, 1] - -Before: [1, 2, 2, 1] -10 3 2 1 -After: [1, 1, 2, 1] - -Before: [1, 1, 1, 0] -11 2 1 3 -After: [1, 1, 1, 2] - -Before: [1, 1, 1, 2] -11 2 1 0 -After: [2, 1, 1, 2] - -Before: [3, 2, 2, 2] -14 2 1 2 -After: [3, 2, 1, 2] - -Before: [0, 0, 3, 3] -15 2 2 3 -After: [0, 0, 3, 1] - -Before: [0, 3, 2, 2] -0 3 3 0 -After: [0, 3, 2, 2] - -Before: [1, 0, 2, 1] -10 3 2 1 -After: [1, 1, 2, 1] - -Before: [2, 1, 2, 2] -14 3 2 1 -After: [2, 0, 2, 2] - -Before: [1, 0, 0, 3] -1 0 2 1 -After: [1, 0, 0, 3] - -Before: [3, 2, 1, 3] -7 2 3 1 -After: [3, 0, 1, 3] - -Before: [3, 1, 1, 2] -11 2 1 0 -After: [2, 1, 1, 2] - -Before: [1, 3, 2, 1] -6 0 2 0 -After: [0, 3, 2, 1] - -Before: [2, 0, 3, 1] -3 0 3 0 -After: [1, 0, 3, 1] - -Before: [3, 1, 2, 2] -12 1 2 0 -After: [0, 1, 2, 2] - -Before: [3, 1, 2, 0] -12 1 2 3 -After: [3, 1, 2, 0] - -Before: [2, 1, 2, 0] -2 0 1 3 -After: [2, 1, 2, 1] - -Before: [1, 1, 3, 1] -14 2 3 2 -After: [1, 1, 0, 1] - -Before: [1, 3, 2, 3] -6 0 2 0 -After: [0, 3, 2, 3] - -Before: [1, 1, 2, 3] -12 1 2 0 -After: [0, 1, 2, 3] - -Before: [3, 0, 2, 1] -10 3 2 1 -After: [3, 1, 2, 1] - -Before: [1, 0, 2, 0] -6 0 2 1 -After: [1, 0, 2, 0] - -Before: [2, 3, 1, 3] -7 2 3 2 -After: [2, 3, 0, 3] - -Before: [1, 1, 1, 1] -11 2 1 3 -After: [1, 1, 1, 2] - -Before: [2, 1, 2, 2] -2 0 1 0 -After: [1, 1, 2, 2] - -Before: [1, 2, 1, 3] -7 2 3 3 -After: [1, 2, 1, 0] - -Before: [1, 1, 2, 2] -12 1 2 0 -After: [0, 1, 2, 2] - -Before: [2, 0, 2, 1] -10 3 2 2 -After: [2, 0, 1, 1] - -Before: [0, 1, 2, 3] -12 1 2 2 -After: [0, 1, 0, 3] - -Before: [2, 1, 1, 3] -11 2 1 0 -After: [2, 1, 1, 3] - -Before: [2, 1, 3, 1] -13 1 3 3 -After: [2, 1, 3, 1] - -Before: [0, 2, 1, 1] -8 0 0 1 -After: [0, 0, 1, 1] - -Before: [1, 0, 0, 2] -1 0 2 1 -After: [1, 0, 0, 2] - -Before: [2, 1, 3, 3] -2 0 1 1 -After: [2, 1, 3, 3] - -Before: [0, 1, 2, 2] -4 1 3 2 -After: [0, 1, 0, 2] - -Before: [1, 1, 2, 1] -13 1 3 0 -After: [1, 1, 2, 1] - -Before: [1, 1, 3, 0] -9 1 0 1 -After: [1, 1, 3, 0] - -Before: [1, 1, 0, 1] -1 0 2 1 -After: [1, 0, 0, 1] - -Before: [2, 2, 3, 1] -3 0 3 1 -After: [2, 1, 3, 1] - -Before: [3, 2, 1, 2] -5 2 1 0 -After: [2, 2, 1, 2] - -Before: [1, 1, 2, 0] -12 1 2 1 -After: [1, 0, 2, 0] - -Before: [3, 0, 2, 3] -2 0 2 3 -After: [3, 0, 2, 1] - -Before: [2, 1, 3, 3] -2 0 1 2 -After: [2, 1, 1, 3] - -Before: [3, 1, 3, 1] -15 0 0 0 -After: [1, 1, 3, 1] - -Before: [0, 1, 3, 2] -4 1 3 1 -After: [0, 0, 3, 2] - -Before: [3, 2, 3, 3] -15 2 0 0 -After: [1, 2, 3, 3] - -Before: [1, 3, 3, 1] -0 3 3 0 -After: [0, 3, 3, 1] - -Before: [0, 0, 2, 3] -7 2 3 0 -After: [0, 0, 2, 3] - -Before: [0, 2, 1, 3] -7 2 3 2 -After: [0, 2, 0, 3] - -Before: [3, 0, 2, 1] -2 0 2 0 -After: [1, 0, 2, 1] - -Before: [2, 2, 2, 1] -10 3 2 2 -After: [2, 2, 1, 1] - -Before: [1, 2, 0, 1] -1 0 2 0 -After: [0, 2, 0, 1] - -Before: [1, 2, 0, 0] -1 0 2 2 -After: [1, 2, 0, 0] - -Before: [3, 1, 2, 1] -2 0 2 1 -After: [3, 1, 2, 1] - -Before: [0, 0, 3, 1] -8 0 0 1 -After: [0, 0, 3, 1] - -Before: [0, 1, 1, 2] -11 2 1 3 -After: [0, 1, 1, 2] - -Before: [0, 1, 3, 1] -13 1 3 2 -After: [0, 1, 1, 1] - -Before: [1, 1, 1, 2] -11 2 1 2 -After: [1, 1, 2, 2] - -Before: [2, 0, 3, 1] -3 0 3 3 -After: [2, 0, 3, 1] - -Before: [0, 2, 1, 2] -8 0 0 0 -After: [0, 2, 1, 2] - -Before: [1, 0, 2, 1] -6 0 2 1 -After: [1, 0, 2, 1] - -Before: [1, 1, 0, 2] -4 1 3 3 -After: [1, 1, 0, 0] - -Before: [2, 2, 1, 1] -3 0 3 2 -After: [2, 2, 1, 1] - -Before: [1, 2, 1, 2] -5 2 1 2 -After: [1, 2, 2, 2] - -Before: [2, 0, 2, 1] -3 0 3 3 -After: [2, 0, 2, 1] - -Before: [2, 1, 0, 1] -3 0 3 2 -After: [2, 1, 1, 1] - -Before: [2, 2, 1, 2] -5 2 1 1 -After: [2, 2, 1, 2] - -Before: [1, 1, 2, 2] -9 1 0 3 -After: [1, 1, 2, 1] - -Before: [2, 2, 1, 3] -15 0 0 3 -After: [2, 2, 1, 1] - -Before: [3, 1, 0, 1] -13 1 3 3 -After: [3, 1, 0, 1] - -Before: [3, 3, 2, 1] -10 3 2 2 -After: [3, 3, 1, 1] - -Before: [0, 1, 3, 2] -4 1 3 3 -After: [0, 1, 3, 0] - -Before: [0, 1, 1, 0] -11 2 1 2 -After: [0, 1, 2, 0] - -Before: [3, 1, 3, 1] -14 3 1 0 -After: [0, 1, 3, 1] - -Before: [0, 1, 3, 3] -8 0 0 3 -After: [0, 1, 3, 0] - -Before: [0, 1, 2, 1] -10 3 2 0 -After: [1, 1, 2, 1] - -Before: [2, 1, 2, 1] -3 0 3 2 -After: [2, 1, 1, 1] - -Before: [0, 2, 1, 3] -5 2 1 3 -After: [0, 2, 1, 2] - -Before: [1, 0, 0, 3] -1 0 2 0 -After: [0, 0, 0, 3] - -Before: [2, 3, 0, 1] -3 0 3 0 -After: [1, 3, 0, 1] - -Before: [2, 1, 2, 1] -12 1 2 1 -After: [2, 0, 2, 1] - -Before: [2, 1, 3, 2] -4 1 3 0 -After: [0, 1, 3, 2] - -Before: [1, 2, 1, 0] -5 2 1 3 -After: [1, 2, 1, 2] - -Before: [3, 1, 3, 1] -13 1 3 1 -After: [3, 1, 3, 1] - -Before: [1, 2, 1, 0] -5 2 1 1 -After: [1, 2, 1, 0] - -Before: [3, 1, 2, 1] -10 3 2 1 -After: [3, 1, 2, 1] - -Before: [1, 1, 1, 1] -13 1 3 2 -After: [1, 1, 1, 1] - -Before: [2, 1, 2, 1] -13 1 3 2 -After: [2, 1, 1, 1] - -Before: [1, 2, 1, 3] -7 1 3 1 -After: [1, 0, 1, 3] - -Before: [0, 0, 2, 2] -14 3 2 3 -After: [0, 0, 2, 0] - -Before: [2, 2, 1, 3] -15 0 0 1 -After: [2, 1, 1, 3] - -Before: [2, 1, 3, 2] -4 1 3 1 -After: [2, 0, 3, 2] - -Before: [1, 2, 1, 3] -5 2 1 2 -After: [1, 2, 2, 3] - -Before: [2, 2, 1, 0] -5 2 1 3 -After: [2, 2, 1, 2] - -Before: [2, 0, 2, 1] -3 0 3 2 -After: [2, 0, 1, 1] - -Before: [1, 0, 0, 1] -1 0 2 0 -After: [0, 0, 0, 1] - -Before: [2, 1, 1, 0] -15 0 0 0 -After: [1, 1, 1, 0] - -Before: [0, 0, 3, 3] -8 0 0 0 -After: [0, 0, 3, 3] - -Before: [1, 1, 1, 2] -4 1 3 3 -After: [1, 1, 1, 0] - -Before: [1, 2, 0, 3] -1 0 2 1 -After: [1, 0, 0, 3] - -Before: [1, 1, 0, 2] -9 1 0 1 -After: [1, 1, 0, 2] - -Before: [3, 1, 1, 1] -11 2 1 3 -After: [3, 1, 1, 2] - -Before: [1, 1, 0, 3] -7 1 3 1 -After: [1, 0, 0, 3] - -Before: [1, 1, 1, 3] -7 1 3 2 -After: [1, 1, 0, 3] - -Before: [1, 1, 2, 3] -6 0 2 1 -After: [1, 0, 2, 3] - -Before: [2, 1, 1, 2] -4 1 3 3 -After: [2, 1, 1, 0] - -Before: [2, 2, 2, 3] -7 1 3 2 -After: [2, 2, 0, 3] - -Before: [1, 3, 2, 1] -0 3 3 3 -After: [1, 3, 2, 0] - -Before: [0, 0, 3, 3] -8 0 0 3 -After: [0, 0, 3, 0] - -Before: [3, 1, 3, 1] -15 0 0 1 -After: [3, 1, 3, 1] - -Before: [1, 0, 0, 2] -1 0 2 2 -After: [1, 0, 0, 2] - -Before: [0, 0, 0, 1] -0 3 3 1 -After: [0, 0, 0, 1] - -Before: [1, 1, 1, 2] -9 1 0 0 -After: [1, 1, 1, 2] - -Before: [1, 3, 0, 1] -1 0 2 2 -After: [1, 3, 0, 1] - -Before: [1, 1, 3, 3] -9 1 0 0 -After: [1, 1, 3, 3] - -Before: [2, 1, 3, 1] -13 1 3 2 -After: [2, 1, 1, 1] - -Before: [2, 1, 3, 2] -4 1 3 3 -After: [2, 1, 3, 0] - -Before: [2, 1, 2, 1] -13 1 3 3 -After: [2, 1, 2, 1] - -Before: [1, 0, 2, 2] -6 0 2 1 -After: [1, 0, 2, 2] - -Before: [1, 1, 2, 1] -10 3 2 2 -After: [1, 1, 1, 1] - -Before: [3, 2, 1, 3] -5 2 1 2 -After: [3, 2, 2, 3] - -Before: [0, 1, 2, 0] -12 1 2 2 -After: [0, 1, 0, 0] - -Before: [2, 1, 1, 3] -2 0 1 0 -After: [1, 1, 1, 3] - -Before: [1, 2, 2, 3] -14 2 1 2 -After: [1, 2, 1, 3] - -Before: [1, 2, 0, 3] -1 0 2 0 -After: [0, 2, 0, 3] - -Before: [0, 1, 2, 2] -8 0 0 2 -After: [0, 1, 0, 2] - -Before: [0, 2, 1, 0] -5 2 1 1 -After: [0, 2, 1, 0] - -Before: [2, 0, 0, 1] -15 0 0 2 -After: [2, 0, 1, 1] - -Before: [2, 2, 1, 3] -5 2 1 0 -After: [2, 2, 1, 3] - -Before: [3, 2, 2, 1] -10 3 2 2 -After: [3, 2, 1, 1] - -Before: [0, 3, 2, 2] -14 3 2 2 -After: [0, 3, 0, 2] - -Before: [1, 2, 0, 1] -1 0 2 2 -After: [1, 2, 0, 1] - -Before: [0, 1, 1, 0] -11 2 1 0 -After: [2, 1, 1, 0] - -Before: [1, 2, 2, 3] -14 2 1 3 -After: [1, 2, 2, 1] - -Before: [2, 1, 3, 1] -3 0 3 3 -After: [2, 1, 3, 1] - -Before: [0, 1, 2, 3] -7 1 3 3 -After: [0, 1, 2, 0] - -Before: [2, 1, 2, 2] -2 0 1 1 -After: [2, 1, 2, 2] - -Before: [2, 2, 1, 0] -5 2 1 1 -After: [2, 2, 1, 0] - -Before: [3, 2, 1, 3] -5 2 1 0 -After: [2, 2, 1, 3] - -Before: [1, 1, 2, 1] -0 3 3 1 -After: [1, 0, 2, 1] - -Before: [1, 0, 2, 1] -6 0 2 3 -After: [1, 0, 2, 0] - -Before: [1, 3, 0, 2] -1 0 2 0 -After: [0, 3, 0, 2] - -Before: [0, 1, 1, 3] -11 2 1 2 -After: [0, 1, 2, 3] - -Before: [1, 1, 3, 3] -9 1 0 1 -After: [1, 1, 3, 3] - -Before: [3, 1, 2, 3] -12 1 2 1 -After: [3, 0, 2, 3] - -Before: [0, 1, 1, 1] -13 1 3 0 -After: [1, 1, 1, 1] - -Before: [1, 1, 2, 3] -9 1 0 1 -After: [1, 1, 2, 3] - -Before: [0, 3, 1, 3] -7 2 3 0 -After: [0, 3, 1, 3] - -Before: [3, 1, 2, 1] -13 1 3 2 -After: [3, 1, 1, 1] - -Before: [1, 0, 1, 3] -7 2 3 1 -After: [1, 0, 1, 3] - -Before: [1, 1, 0, 3] -1 0 2 0 -After: [0, 1, 0, 3] - -Before: [2, 1, 2, 2] -12 1 2 2 -After: [2, 1, 0, 2] - -Before: [3, 0, 1, 3] -14 3 0 0 -After: [1, 0, 1, 3] - -Before: [3, 1, 3, 3] -7 1 3 3 -After: [3, 1, 3, 0] - -Before: [1, 1, 0, 0] -1 0 2 0 -After: [0, 1, 0, 0] - -Before: [1, 1, 1, 1] -0 2 3 2 -After: [1, 1, 0, 1] - -Before: [2, 1, 0, 1] -2 0 1 2 -After: [2, 1, 1, 1] - -Before: [1, 1, 2, 1] -14 3 1 1 -After: [1, 0, 2, 1] - -Before: [0, 0, 2, 3] -7 2 3 3 -After: [0, 0, 2, 0] - -Before: [3, 2, 0, 0] -14 0 2 1 -After: [3, 1, 0, 0] - -Before: [0, 0, 2, 3] -8 0 0 0 -After: [0, 0, 2, 3] - -Before: [3, 1, 1, 0] -11 2 1 1 -After: [3, 2, 1, 0] - -Before: [1, 2, 1, 1] -5 2 1 2 -After: [1, 2, 2, 1] - -Before: [0, 2, 1, 3] -7 2 3 3 -After: [0, 2, 1, 0] - -Before: [3, 1, 2, 2] -15 0 0 3 -After: [3, 1, 2, 1] - -Before: [0, 0, 0, 2] -8 0 0 2 -After: [0, 0, 0, 2] - -Before: [3, 1, 3, 1] -13 1 3 2 -After: [3, 1, 1, 1] - -Before: [1, 1, 2, 3] -9 1 0 2 -After: [1, 1, 1, 3] - -Before: [1, 2, 0, 2] -1 0 2 2 -After: [1, 2, 0, 2] - -Before: [2, 1, 2, 3] -2 0 1 3 -After: [2, 1, 2, 1] - -Before: [1, 2, 0, 3] -1 0 2 2 -After: [1, 2, 0, 3] - -Before: [1, 0, 2, 0] -6 0 2 3 -After: [1, 0, 2, 0] - -Before: [1, 0, 3, 1] -0 3 3 2 -After: [1, 0, 0, 1] - -Before: [1, 3, 2, 1] -6 0 2 3 -After: [1, 3, 2, 0] - -Before: [1, 1, 1, 1] -9 1 0 3 -After: [1, 1, 1, 1] - -Before: [0, 3, 2, 1] -0 3 3 1 -After: [0, 0, 2, 1] - -Before: [1, 1, 3, 1] -13 1 3 3 -After: [1, 1, 3, 1] - -Before: [2, 2, 0, 3] -7 1 3 0 -After: [0, 2, 0, 3] - -Before: [0, 3, 2, 1] -0 3 3 0 -After: [0, 3, 2, 1] - -Before: [1, 0, 0, 1] -1 0 2 2 -After: [1, 0, 0, 1] - -Before: [2, 1, 2, 1] -2 0 1 2 -After: [2, 1, 1, 1] - -Before: [1, 2, 2, 2] -6 0 2 2 -After: [1, 2, 0, 2] - -Before: [0, 1, 1, 1] -13 1 3 3 -After: [0, 1, 1, 1] - -Before: [2, 1, 1, 0] -11 2 1 2 -After: [2, 1, 2, 0] - -Before: [0, 1, 3, 1] -13 1 3 1 -After: [0, 1, 3, 1] - -Before: [3, 2, 0, 2] -0 3 3 1 -After: [3, 0, 0, 2] - -Before: [1, 1, 2, 1] -10 3 2 3 -After: [1, 1, 2, 1] - -Before: [2, 1, 2, 1] -13 1 3 0 -After: [1, 1, 2, 1] - -Before: [2, 1, 0, 1] -13 1 3 1 -After: [2, 1, 0, 1] - -Before: [2, 1, 2, 2] -12 1 2 3 -After: [2, 1, 2, 0] - -Before: [0, 1, 2, 0] -12 1 2 1 -After: [0, 0, 2, 0] - -Before: [3, 1, 2, 2] -4 1 3 2 -After: [3, 1, 0, 2] - -Before: [1, 1, 0, 2] -1 0 2 1 -After: [1, 0, 0, 2] - -Before: [0, 2, 1, 1] -0 2 3 2 -After: [0, 2, 0, 1] - -Before: [1, 1, 2, 0] -6 0 2 0 -After: [0, 1, 2, 0] - -Before: [0, 3, 1, 2] -8 0 0 3 -After: [0, 3, 1, 0] - -Before: [1, 3, 0, 0] -1 0 2 2 -After: [1, 3, 0, 0] - -Before: [1, 1, 2, 0] -12 1 2 2 -After: [1, 1, 0, 0] - -Before: [2, 1, 0, 2] -0 3 3 1 -After: [2, 0, 0, 2] - -Before: [0, 3, 3, 3] -8 0 0 1 -After: [0, 0, 3, 3] - -Before: [3, 3, 0, 1] -0 3 3 0 -After: [0, 3, 0, 1] - -Before: [3, 1, 1, 2] -4 1 3 3 -After: [3, 1, 1, 0] - -Before: [2, 1, 2, 3] -12 1 2 3 -After: [2, 1, 2, 0] - -Before: [3, 1, 2, 1] -12 1 2 3 -After: [3, 1, 2, 0] - -Before: [1, 0, 2, 2] -6 0 2 3 -After: [1, 0, 2, 0] - -Before: [1, 1, 0, 1] -0 3 3 1 -After: [1, 0, 0, 1] - -Before: [1, 1, 0, 3] -9 1 0 2 -After: [1, 1, 1, 3] - -Before: [3, 0, 2, 1] -10 3 2 3 -After: [3, 0, 2, 1] - -Before: [2, 2, 3, 3] -14 3 2 3 -After: [2, 2, 3, 1] - -Before: [3, 1, 2, 2] -12 1 2 3 -After: [3, 1, 2, 0] - -Before: [0, 1, 2, 1] -10 3 2 1 -After: [0, 1, 2, 1] - -Before: [0, 1, 3, 0] -8 0 0 2 -After: [0, 1, 0, 0] - -Before: [3, 1, 2, 0] -12 1 2 1 -After: [3, 0, 2, 0] - -Before: [1, 3, 2, 0] -6 0 2 3 -After: [1, 3, 2, 0] - -Before: [2, 0, 1, 3] -7 2 3 3 -After: [2, 0, 1, 0] - -Before: [3, 2, 2, 1] -10 3 2 3 -After: [3, 2, 2, 1] - -Before: [1, 2, 0, 0] -1 0 2 3 -After: [1, 2, 0, 0] - -Before: [2, 1, 1, 1] -0 2 3 0 -After: [0, 1, 1, 1] - -Before: [3, 2, 1, 1] -5 2 1 3 -After: [3, 2, 1, 2] - -Before: [3, 1, 3, 1] -14 2 3 0 -After: [0, 1, 3, 1] - -Before: [2, 1, 1, 3] -14 2 1 1 -After: [2, 0, 1, 3] - -Before: [0, 1, 1, 2] -8 0 0 0 -After: [0, 1, 1, 2] - -Before: [2, 3, 3, 2] -15 2 2 2 -After: [2, 3, 1, 2] - -Before: [0, 1, 2, 3] -7 2 3 1 -After: [0, 0, 2, 3] - -Before: [1, 1, 0, 2] -4 1 3 2 -After: [1, 1, 0, 2] - -Before: [0, 2, 3, 0] -8 0 0 2 -After: [0, 2, 0, 0] - -Before: [0, 1, 1, 1] -11 2 1 1 -After: [0, 2, 1, 1] - -Before: [2, 1, 1, 1] -13 1 3 0 -After: [1, 1, 1, 1] - -Before: [2, 3, 1, 3] -7 2 3 0 -After: [0, 3, 1, 3] - -Before: [2, 1, 2, 3] -12 1 2 2 -After: [2, 1, 0, 3] - -Before: [2, 2, 1, 3] -5 2 1 3 -After: [2, 2, 1, 2] - -Before: [3, 1, 1, 3] -11 2 1 0 -After: [2, 1, 1, 3] - -Before: [0, 0, 1, 3] -7 2 3 1 -After: [0, 0, 1, 3] - -Before: [1, 3, 2, 1] -10 3 2 2 -After: [1, 3, 1, 1] - -Before: [3, 2, 1, 2] -15 0 0 2 -After: [3, 2, 1, 2] - -Before: [1, 2, 1, 1] -0 2 3 1 -After: [1, 0, 1, 1] - -Before: [1, 1, 1, 3] -9 1 0 3 -After: [1, 1, 1, 1] - -Before: [1, 1, 0, 3] -9 1 0 3 -After: [1, 1, 0, 1] - -Before: [0, 1, 1, 1] -11 2 1 2 -After: [0, 1, 2, 1] - -Before: [0, 1, 2, 1] -13 1 3 2 -After: [0, 1, 1, 1] - -Before: [1, 1, 2, 2] -4 1 3 2 -After: [1, 1, 0, 2] - -Before: [3, 1, 1, 2] -11 2 1 3 -After: [3, 1, 1, 2] - -Before: [2, 2, 3, 2] -0 3 3 3 -After: [2, 2, 3, 0] - -Before: [0, 0, 1, 1] -0 2 3 1 -After: [0, 0, 1, 1] - -Before: [0, 1, 2, 2] -12 1 2 1 -After: [0, 0, 2, 2] - -Before: [2, 0, 3, 1] -3 0 3 2 -After: [2, 0, 1, 1] - -Before: [1, 0, 2, 0] -6 0 2 0 -After: [0, 0, 2, 0] - -Before: [0, 2, 1, 1] -5 2 1 0 -After: [2, 2, 1, 1] - -Before: [1, 3, 3, 0] -15 2 2 0 -After: [1, 3, 3, 0] - -Before: [0, 3, 2, 0] -8 0 0 2 -After: [0, 3, 0, 0] - -Before: [2, 2, 2, 1] -0 3 3 1 -After: [2, 0, 2, 1] - -Before: [3, 1, 1, 2] -4 1 3 0 -After: [0, 1, 1, 2] - -Before: [1, 2, 1, 0] -5 2 1 0 -After: [2, 2, 1, 0] - -Before: [2, 2, 3, 3] -15 0 0 0 -After: [1, 2, 3, 3] - -Before: [2, 1, 0, 0] -2 0 1 1 -After: [2, 1, 0, 0] - -Before: [1, 2, 2, 3] -6 0 2 2 -After: [1, 2, 0, 3] - -Before: [1, 0, 0, 1] -1 0 2 1 -After: [1, 0, 0, 1] - -Before: [2, 2, 0, 1] -3 0 3 1 -After: [2, 1, 0, 1] - -Before: [3, 2, 1, 2] -5 2 1 1 -After: [3, 2, 1, 2] - -Before: [2, 1, 3, 2] -14 2 0 1 -After: [2, 1, 3, 2] - -Before: [1, 1, 0, 0] -9 1 0 2 -After: [1, 1, 1, 0] - -Before: [2, 2, 3, 3] -15 2 2 2 -After: [2, 2, 1, 3] - -Before: [0, 2, 1, 0] -8 0 0 2 -After: [0, 2, 0, 0] - -Before: [1, 1, 0, 1] -9 1 0 0 -After: [1, 1, 0, 1] - -Before: [0, 1, 2, 2] -4 1 3 0 -After: [0, 1, 2, 2] - -Before: [1, 1, 0, 0] -9 1 0 0 -After: [1, 1, 0, 0] - -Before: [2, 3, 2, 1] -3 0 3 1 -After: [2, 1, 2, 1] - -Before: [1, 2, 1, 3] -5 2 1 3 -After: [1, 2, 1, 2] - -Before: [2, 1, 1, 3] -11 2 1 2 -After: [2, 1, 2, 3] - -Before: [1, 1, 3, 0] -9 1 0 2 -After: [1, 1, 1, 0] - -Before: [2, 1, 1, 3] -11 2 1 1 -After: [2, 2, 1, 3] - -Before: [2, 1, 3, 2] -2 0 1 2 -After: [2, 1, 1, 2] - -Before: [0, 2, 1, 3] -5 2 1 2 -After: [0, 2, 2, 3] - -Before: [1, 0, 0, 2] -1 0 2 3 -After: [1, 0, 0, 0] - -Before: [1, 1, 1, 2] -9 1 0 3 -After: [1, 1, 1, 1] - -Before: [2, 1, 3, 2] -4 1 3 2 -After: [2, 1, 0, 2] - -Before: [1, 0, 2, 2] -6 0 2 2 -After: [1, 0, 0, 2] - -Before: [3, 1, 1, 3] -11 2 1 1 -After: [3, 2, 1, 3] - -Before: [3, 1, 2, 3] -2 0 2 0 -After: [1, 1, 2, 3] - -Before: [1, 2, 0, 2] -1 0 2 0 -After: [0, 2, 0, 2] - -Before: [3, 1, 2, 1] -10 3 2 2 -After: [3, 1, 1, 1] - -Before: [1, 0, 2, 3] -7 2 3 0 -After: [0, 0, 2, 3] - -Before: [3, 1, 2, 3] -12 1 2 0 -After: [0, 1, 2, 3] - -Before: [2, 1, 1, 3] -7 2 3 1 -After: [2, 0, 1, 3] - -Before: [0, 2, 1, 2] -5 2 1 3 -After: [0, 2, 1, 2] - -Before: [3, 1, 1, 0] -11 2 1 0 -After: [2, 1, 1, 0] - -Before: [1, 1, 3, 1] -9 1 0 0 -After: [1, 1, 3, 1] - -Before: [1, 1, 2, 2] -9 1 0 1 -After: [1, 1, 2, 2] - -Before: [2, 1, 1, 3] -11 2 1 3 -After: [2, 1, 1, 2] - -Before: [1, 1, 1, 2] -4 1 3 1 -After: [1, 0, 1, 2] - -Before: [3, 1, 0, 1] -13 1 3 0 -After: [1, 1, 0, 1] - -Before: [1, 2, 2, 3] -6 0 2 0 -After: [0, 2, 2, 3] - -Before: [1, 3, 0, 3] -1 0 2 0 -After: [0, 3, 0, 3] - -Before: [2, 1, 1, 0] -2 0 1 2 -After: [2, 1, 1, 0] - -Before: [0, 1, 2, 1] -12 1 2 3 -After: [0, 1, 2, 0] - -Before: [2, 3, 1, 1] -3 0 3 3 -After: [2, 3, 1, 1] - -Before: [2, 1, 3, 3] -2 0 1 3 -After: [2, 1, 3, 1] - -Before: [1, 3, 2, 1] -10 3 2 3 -After: [1, 3, 2, 1] - -Before: [1, 1, 3, 3] -9 1 0 3 -After: [1, 1, 3, 1] - -Before: [1, 1, 3, 2] -9 1 0 1 -After: [1, 1, 3, 2] - -Before: [1, 1, 0, 1] -13 1 3 2 -After: [1, 1, 1, 1] - -Before: [3, 0, 2, 0] -2 0 2 1 -After: [3, 1, 2, 0] - -Before: [2, 0, 0, 0] -14 0 1 2 -After: [2, 0, 1, 0] - -Before: [0, 1, 2, 1] -13 1 3 3 -After: [0, 1, 2, 1] - -Before: [2, 1, 3, 0] -14 2 0 1 -After: [2, 1, 3, 0] - -Before: [2, 1, 0, 1] -13 1 3 0 -After: [1, 1, 0, 1] - -Before: [2, 1, 0, 1] -2 0 1 1 -After: [2, 1, 0, 1] - -Before: [0, 3, 2, 1] -10 3 2 0 -After: [1, 3, 2, 1] - -Before: [0, 1, 3, 1] -0 3 3 2 -After: [0, 1, 0, 1] - -Before: [0, 2, 1, 1] -5 2 1 1 -After: [0, 2, 1, 1] - -Before: [2, 1, 1, 2] -15 0 0 3 -After: [2, 1, 1, 1] - -Before: [1, 1, 2, 0] -6 0 2 2 -After: [1, 1, 0, 0] - -Before: [1, 1, 2, 1] -6 0 2 0 -After: [0, 1, 2, 1] - -Before: [0, 2, 1, 3] -7 1 3 1 -After: [0, 0, 1, 3] - -Before: [1, 0, 0, 0] -1 0 2 3 -After: [1, 0, 0, 0] - -Before: [2, 1, 2, 3] -2 0 1 2 -After: [2, 1, 1, 3] - -Before: [0, 2, 0, 2] -0 3 3 1 -After: [0, 0, 0, 2] - -Before: [0, 2, 3, 0] -15 2 2 2 -After: [0, 2, 1, 0] - -Before: [1, 2, 2, 2] -14 2 1 3 -After: [1, 2, 2, 1] - -Before: [0, 1, 3, 1] -8 0 0 2 -After: [0, 1, 0, 1] - -Before: [3, 3, 3, 2] -15 0 0 3 -After: [3, 3, 3, 1] - -Before: [3, 3, 0, 2] -14 0 2 1 -After: [3, 1, 0, 2] - -Before: [0, 1, 1, 3] -11 2 1 0 -After: [2, 1, 1, 3] - -Before: [1, 1, 0, 1] -9 1 0 2 -After: [1, 1, 1, 1] - -Before: [0, 1, 2, 1] -10 3 2 3 -After: [0, 1, 2, 1] - -Before: [2, 2, 2, 1] -10 3 2 1 -After: [2, 1, 2, 1] - -Before: [0, 1, 2, 2] -4 1 3 3 -After: [0, 1, 2, 0] - -Before: [1, 2, 2, 1] -10 3 2 2 -After: [1, 2, 1, 1] - -Before: [2, 1, 1, 2] -11 2 1 1 -After: [2, 2, 1, 2] - -Before: [1, 1, 2, 1] -12 1 2 3 -After: [1, 1, 2, 0] - -Before: [3, 3, 1, 1] -0 2 3 1 -After: [3, 0, 1, 1] - -Before: [0, 1, 2, 2] -4 1 3 1 -After: [0, 0, 2, 2] - -Before: [0, 3, 2, 2] -8 0 0 3 -After: [0, 3, 2, 0] - -Before: [2, 1, 2, 1] -2 0 1 0 -After: [1, 1, 2, 1] - -Before: [1, 1, 0, 3] -1 0 2 1 -After: [1, 0, 0, 3] - -Before: [3, 3, 3, 2] -15 0 0 0 -After: [1, 3, 3, 2] - -Before: [0, 1, 1, 2] -4 1 3 2 -After: [0, 1, 0, 2] - -Before: [1, 3, 0, 3] -1 0 2 1 -After: [1, 0, 0, 3] - -Before: [1, 1, 0, 1] -1 0 2 2 -After: [1, 1, 0, 1] - -Before: [2, 1, 0, 2] -4 1 3 0 -After: [0, 1, 0, 2] - -Before: [3, 2, 2, 2] -2 0 2 2 -After: [3, 2, 1, 2] - -Before: [0, 2, 2, 1] -10 3 2 1 -After: [0, 1, 2, 1] - -Before: [0, 1, 0, 2] -4 1 3 2 -After: [0, 1, 0, 2] - -Before: [0, 1, 0, 2] -4 1 3 3 -After: [0, 1, 0, 0] - -Before: [1, 1, 2, 1] -10 3 2 1 -After: [1, 1, 2, 1] - -Before: [1, 1, 0, 1] -13 1 3 0 -After: [1, 1, 0, 1] - -Before: [1, 3, 2, 2] -6 0 2 1 -After: [1, 0, 2, 2] - -Before: [0, 1, 2, 1] -13 1 3 0 -After: [1, 1, 2, 1] - -Before: [0, 1, 1, 3] -11 2 1 1 -After: [0, 2, 1, 3] - -Before: [3, 2, 1, 0] -5 2 1 3 -After: [3, 2, 1, 2] - -Before: [2, 1, 2, 3] -7 2 3 3 -After: [2, 1, 2, 0] - -Before: [1, 1, 1, 1] -11 2 1 2 -After: [1, 1, 2, 1] - -Before: [2, 1, 1, 1] -3 0 3 2 -After: [2, 1, 1, 1] - -Before: [0, 1, 1, 3] -8 0 0 1 -After: [0, 0, 1, 3] - -Before: [3, 2, 3, 3] -7 1 3 3 -After: [3, 2, 3, 0] - -Before: [0, 3, 0, 0] -8 0 0 2 -After: [0, 3, 0, 0] - -Before: [1, 1, 2, 1] -6 0 2 1 -After: [1, 0, 2, 1] - -Before: [0, 1, 1, 2] -4 1 3 0 -After: [0, 1, 1, 2] - -Before: [1, 1, 2, 1] -9 1 0 1 -After: [1, 1, 2, 1] - -Before: [3, 1, 2, 0] -12 1 2 0 -After: [0, 1, 2, 0] - -Before: [1, 3, 0, 3] -1 0 2 2 -After: [1, 3, 0, 3] - -Before: [1, 1, 0, 3] -9 1 0 1 -After: [1, 1, 0, 3] - -Before: [0, 2, 2, 2] -8 0 0 1 -After: [0, 0, 2, 2] - -Before: [0, 1, 1, 1] -13 1 3 1 -After: [0, 1, 1, 1] - -Before: [1, 1, 3, 1] -13 1 3 0 -After: [1, 1, 3, 1] - -Before: [0, 1, 2, 1] -8 0 0 0 -After: [0, 1, 2, 1] - -Before: [2, 1, 2, 1] -12 1 2 2 -After: [2, 1, 0, 1] - -Before: [1, 0, 2, 3] -6 0 2 1 -After: [1, 0, 2, 3] - -Before: [3, 0, 3, 1] -15 2 0 2 -After: [3, 0, 1, 1] - -Before: [0, 1, 1, 1] -0 2 3 0 -After: [0, 1, 1, 1] - -Before: [3, 0, 0, 3] -14 0 2 1 -After: [3, 1, 0, 3] - -Before: [3, 1, 1, 1] -0 2 3 1 -After: [3, 0, 1, 1] - -Before: [0, 1, 2, 3] -7 2 3 3 -After: [0, 1, 2, 0] - -Before: [3, 1, 0, 1] -13 1 3 1 -After: [3, 1, 0, 1] - -Before: [0, 0, 3, 0] -8 0 0 1 -After: [0, 0, 3, 0] - -Before: [1, 1, 0, 2] -1 0 2 3 -After: [1, 1, 0, 0] - -Before: [2, 1, 1, 2] -4 1 3 1 -After: [2, 0, 1, 2] - -Before: [3, 2, 3, 0] -15 2 2 3 -After: [3, 2, 3, 1] - -Before: [0, 2, 0, 3] -7 1 3 0 -After: [0, 2, 0, 3] - -Before: [1, 1, 3, 2] -9 1 0 2 -After: [1, 1, 1, 2] - -Before: [0, 3, 1, 3] -8 0 0 1 -After: [0, 0, 1, 3] - -Before: [3, 1, 2, 1] -2 0 2 0 -After: [1, 1, 2, 1] - -Before: [1, 1, 3, 1] -9 1 0 2 -After: [1, 1, 1, 1] - -Before: [2, 1, 3, 0] -2 0 1 3 -After: [2, 1, 3, 1] - -Before: [2, 1, 1, 0] -11 2 1 1 -After: [2, 2, 1, 0] - -Before: [3, 1, 1, 1] -13 1 3 0 -After: [1, 1, 1, 1] - -Before: [2, 2, 1, 3] -5 2 1 1 -After: [2, 2, 1, 3] - -Before: [0, 0, 2, 1] -10 3 2 3 -After: [0, 0, 2, 1] - -Before: [3, 3, 0, 2] -0 3 3 1 -After: [3, 0, 0, 2] - -Before: [0, 2, 1, 0] -8 0 0 0 -After: [0, 2, 1, 0] - -Before: [3, 3, 0, 2] -15 0 0 3 -After: [3, 3, 0, 1] - -Before: [1, 0, 2, 3] -6 0 2 0 -After: [0, 0, 2, 3] - -Before: [0, 0, 1, 1] -8 0 0 1 -After: [0, 0, 1, 1] - -Before: [1, 0, 2, 1] -10 3 2 0 -After: [1, 0, 2, 1] - -Before: [1, 2, 1, 2] -5 2 1 1 -After: [1, 2, 1, 2] - -Before: [2, 1, 3, 1] -14 2 0 1 -After: [2, 1, 3, 1] - -Before: [2, 1, 2, 0] -2 0 1 0 -After: [1, 1, 2, 0] - -Before: [1, 1, 2, 2] -6 0 2 3 -After: [1, 1, 2, 0] - -Before: [2, 1, 1, 3] -2 0 1 2 -After: [2, 1, 1, 3] - -Before: [2, 3, 3, 2] -14 2 0 2 -After: [2, 3, 1, 2] - -Before: [1, 0, 0, 2] -1 0 2 0 -After: [0, 0, 0, 2] - -Before: [3, 3, 2, 2] -15 0 0 0 -After: [1, 3, 2, 2] - -Before: [0, 1, 1, 2] -4 1 3 3 -After: [0, 1, 1, 0] - -Before: [2, 2, 1, 2] -5 2 1 3 -After: [2, 2, 1, 2] - -Before: [2, 1, 2, 0] -12 1 2 0 -After: [0, 1, 2, 0] - -Before: [3, 1, 0, 1] -13 1 3 2 -After: [3, 1, 1, 1] - -Before: [1, 2, 1, 1] -5 2 1 1 -After: [1, 2, 1, 1] - -Before: [2, 1, 2, 2] -4 1 3 2 -After: [2, 1, 0, 2] - -Before: [0, 1, 0, 2] -4 1 3 0 -After: [0, 1, 0, 2] - -Before: [3, 1, 0, 2] -4 1 3 2 -After: [3, 1, 0, 2] - -Before: [1, 1, 3, 2] -4 1 3 1 -After: [1, 0, 3, 2] - -Before: [3, 1, 1, 1] -13 1 3 2 -After: [3, 1, 1, 1] - -Before: [0, 0, 2, 0] -8 0 0 3 -After: [0, 0, 2, 0] - -Before: [1, 1, 3, 2] -9 1 0 0 -After: [1, 1, 3, 2] - -Before: [3, 2, 1, 0] -5 2 1 1 -After: [3, 2, 1, 0] - -Before: [1, 1, 0, 2] -1 0 2 0 -After: [0, 1, 0, 2] - -Before: [2, 1, 0, 1] -13 1 3 3 -After: [2, 1, 0, 1] - -Before: [3, 1, 2, 0] -12 1 2 2 -After: [3, 1, 0, 0] - -Before: [3, 2, 2, 3] -2 0 2 0 -After: [1, 2, 2, 3] - -Before: [1, 1, 1, 0] -11 2 1 1 -After: [1, 2, 1, 0] - -Before: [0, 0, 1, 2] -8 0 0 3 -After: [0, 0, 1, 0] - -Before: [1, 1, 0, 0] -9 1 0 3 -After: [1, 1, 0, 1] - -Before: [1, 1, 3, 0] -9 1 0 3 -After: [1, 1, 3, 1] - -Before: [1, 1, 1, 1] -11 2 1 1 -After: [1, 2, 1, 1] - -Before: [3, 0, 0, 0] -14 0 2 3 -After: [3, 0, 0, 1] - -Before: [2, 1, 1, 3] -7 1 3 3 -After: [2, 1, 1, 0] - -Before: [0, 3, 3, 2] -8 0 0 2 -After: [0, 3, 0, 2] - -Before: [3, 1, 2, 1] -12 1 2 1 -After: [3, 0, 2, 1] - -Before: [3, 0, 2, 3] -7 2 3 0 -After: [0, 0, 2, 3] - -Before: [3, 1, 1, 1] -14 3 1 1 -After: [3, 0, 1, 1] - -Before: [1, 1, 1, 3] -9 1 0 0 -After: [1, 1, 1, 3] - -Before: [0, 0, 3, 3] -8 0 0 2 -After: [0, 0, 0, 3] - -Before: [3, 1, 3, 3] -7 1 3 1 -After: [3, 0, 3, 3] - -Before: [1, 1, 2, 2] -12 1 2 1 -After: [1, 0, 2, 2] - -Before: [1, 1, 0, 1] -1 0 2 3 -After: [1, 1, 0, 0] - -Before: [2, 2, 2, 1] -3 0 3 2 -After: [2, 2, 1, 1] - -Before: [2, 0, 3, 0] -14 0 1 1 -After: [2, 1, 3, 0] - -Before: [1, 1, 2, 2] -4 1 3 3 -After: [1, 1, 2, 0] - -Before: [1, 1, 2, 3] -12 1 2 2 -After: [1, 1, 0, 3] - -Before: [1, 2, 1, 3] -7 2 3 2 -After: [1, 2, 0, 3] - -Before: [3, 0, 0, 1] -14 0 2 2 -After: [3, 0, 1, 1] - -Before: [3, 2, 1, 0] -5 2 1 0 -After: [2, 2, 1, 0] - -Before: [2, 3, 2, 1] -3 0 3 0 -After: [1, 3, 2, 1] - -Before: [0, 1, 3, 2] -8 0 0 3 -After: [0, 1, 3, 0] - -Before: [2, 2, 1, 1] -3 0 3 3 -After: [2, 2, 1, 1] - -Before: [3, 2, 3, 1] -0 3 3 3 -After: [3, 2, 3, 0] - -Before: [2, 1, 1, 0] -14 2 1 3 -After: [2, 1, 1, 0] - -Before: [2, 2, 1, 3] -7 2 3 1 -After: [2, 0, 1, 3] - -Before: [2, 3, 3, 1] -3 0 3 2 -After: [2, 3, 1, 1] - -Before: [1, 1, 2, 1] -9 1 0 2 -After: [1, 1, 1, 1] - -Before: [0, 3, 2, 1] -10 3 2 1 -After: [0, 1, 2, 1] - -Before: [0, 1, 0, 1] -13 1 3 3 -After: [0, 1, 0, 1] - -Before: [1, 1, 1, 3] -11 2 1 3 -After: [1, 1, 1, 2] - -Before: [3, 1, 1, 2] -11 2 1 2 -After: [3, 1, 2, 2] - -Before: [1, 3, 2, 3] -6 0 2 3 -After: [1, 3, 2, 0] - -Before: [0, 1, 2, 3] -8 0 0 2 -After: [0, 1, 0, 3] - -Before: [3, 0, 1, 3] -14 3 0 2 -After: [3, 0, 1, 3] - -Before: [2, 1, 2, 0] -12 1 2 3 -After: [2, 1, 2, 0] - -Before: [0, 1, 1, 1] -11 2 1 0 -After: [2, 1, 1, 1] - -Before: [2, 3, 2, 1] -0 3 3 2 -After: [2, 3, 0, 1] - -Before: [1, 1, 0, 2] -0 3 3 3 -After: [1, 1, 0, 0] - -Before: [1, 0, 0, 1] -1 0 2 3 -After: [1, 0, 0, 0] - -Before: [3, 2, 1, 3] -7 2 3 3 -After: [3, 2, 1, 0] - -Before: [3, 1, 1, 3] -11 2 1 2 -After: [3, 1, 2, 3] - -Before: [0, 1, 2, 2] -12 1 2 3 -After: [0, 1, 2, 0] - -Before: [3, 3, 2, 1] -10 3 2 0 -After: [1, 3, 2, 1] - -Before: [1, 1, 3, 1] -13 1 3 1 -After: [1, 1, 3, 1] - -Before: [2, 2, 1, 1] -3 0 3 1 -After: [2, 1, 1, 1] - -Before: [2, 1, 2, 2] -4 1 3 0 -After: [0, 1, 2, 2] - -Before: [1, 1, 1, 1] -9 1 0 2 -After: [1, 1, 1, 1] - -Before: [1, 3, 2, 1] -10 3 2 0 -After: [1, 3, 2, 1] - -Before: [2, 0, 2, 1] -10 3 2 0 -After: [1, 0, 2, 1] - -Before: [1, 1, 0, 3] -1 0 2 2 -After: [1, 1, 0, 3] - -Before: [1, 2, 0, 1] -1 0 2 3 -After: [1, 2, 0, 0] - -Before: [1, 3, 0, 0] -1 0 2 0 -After: [0, 3, 0, 0] - -Before: [2, 1, 1, 3] -14 2 1 0 -After: [0, 1, 1, 3] - -Before: [1, 1, 1, 2] -9 1 0 1 -After: [1, 1, 1, 2] - -Before: [1, 1, 0, 1] -13 1 3 1 -After: [1, 1, 0, 1] - -Before: [2, 0, 0, 2] -15 0 0 0 -After: [1, 0, 0, 2] - -Before: [2, 3, 1, 1] -3 0 3 0 -After: [1, 3, 1, 1] - -Before: [0, 1, 2, 0] -12 1 2 3 -After: [0, 1, 2, 0] - -Before: [1, 2, 1, 2] -5 2 1 0 -After: [2, 2, 1, 2] - -Before: [2, 0, 2, 2] -14 3 2 2 -After: [2, 0, 0, 2] - -Before: [0, 2, 2, 1] -10 3 2 0 -After: [1, 2, 2, 1] - -Before: [2, 1, 0, 2] -4 1 3 3 -After: [2, 1, 0, 0] - -Before: [1, 3, 0, 2] -1 0 2 2 -After: [1, 3, 0, 2] - -Before: [0, 0, 2, 3] -8 0 0 1 -After: [0, 0, 2, 3] - -Before: [2, 1, 1, 3] -7 1 3 0 -After: [0, 1, 1, 3] - -Before: [3, 1, 2, 1] -13 1 3 0 -After: [1, 1, 2, 1] - -Before: [2, 0, 1, 1] -3 0 3 1 -After: [2, 1, 1, 1] - -Before: [1, 1, 2, 1] -13 1 3 1 -After: [1, 1, 2, 1] - -Before: [0, 1, 2, 1] -12 1 2 1 -After: [0, 0, 2, 1] - -Before: [2, 2, 3, 3] -14 3 2 2 -After: [2, 2, 1, 3] - -Before: [3, 1, 1, 1] -13 1 3 3 -After: [3, 1, 1, 1] - -Before: [3, 3, 3, 2] -15 2 0 1 -After: [3, 1, 3, 2] - -Before: [2, 1, 2, 1] -3 0 3 1 -After: [2, 1, 2, 1] - -Before: [3, 1, 2, 0] -2 0 2 3 -After: [3, 1, 2, 1] - -Before: [1, 2, 1, 2] -5 2 1 3 -After: [1, 2, 1, 2] - -Before: [3, 2, 1, 1] -5 2 1 0 -After: [2, 2, 1, 1] - -Before: [0, 1, 2, 1] -12 1 2 0 -After: [0, 1, 2, 1] - -Before: [2, 1, 1, 1] -3 0 3 0 -After: [1, 1, 1, 1] - -Before: [3, 1, 1, 2] -11 2 1 1 -After: [3, 2, 1, 2] - -Before: [1, 1, 1, 3] -11 2 1 0 -After: [2, 1, 1, 3] - -Before: [1, 1, 2, 0] -9 1 0 3 -After: [1, 1, 2, 1] - -Before: [0, 2, 2, 3] -8 0 0 3 -After: [0, 2, 2, 0] - -Before: [0, 0, 2, 1] -10 3 2 1 -After: [0, 1, 2, 1] - -Before: [0, 2, 3, 3] -14 3 2 0 -After: [1, 2, 3, 3] - -Before: [2, 1, 0, 3] -2 0 1 2 -After: [2, 1, 1, 3] - -Before: [3, 1, 2, 0] -2 0 2 0 -After: [1, 1, 2, 0] - -Before: [3, 1, 0, 2] -14 0 2 0 -After: [1, 1, 0, 2] - -Before: [2, 1, 3, 0] -2 0 1 1 -After: [2, 1, 3, 0] - -Before: [1, 1, 1, 0] -9 1 0 3 -After: [1, 1, 1, 1] - -Before: [1, 0, 0, 0] -1 0 2 1 -After: [1, 0, 0, 0] - -Before: [0, 3, 2, 2] -8 0 0 2 -After: [0, 3, 0, 2] - -Before: [3, 3, 2, 2] -2 0 2 0 -After: [1, 3, 2, 2] - -Before: [0, 2, 1, 2] -5 2 1 1 -After: [0, 2, 1, 2] - -Before: [3, 3, 2, 2] -2 0 2 3 -After: [3, 3, 2, 1] - -Before: [0, 2, 1, 2] -5 2 1 0 -After: [2, 2, 1, 2] - -Before: [1, 0, 2, 1] -10 3 2 2 -After: [1, 0, 1, 1] - -Before: [0, 1, 0, 1] -13 1 3 2 -After: [0, 1, 1, 1] - -Before: [3, 1, 1, 1] -14 2 1 1 -After: [3, 0, 1, 1] - -Before: [0, 1, 0, 1] -13 1 3 1 -After: [0, 1, 0, 1] - -Before: [2, 2, 0, 1] -3 0 3 2 -After: [2, 2, 1, 1] - -Before: [3, 2, 1, 3] -14 3 0 0 -After: [1, 2, 1, 3] - -Before: [1, 1, 2, 2] -4 1 3 0 -After: [0, 1, 2, 2] - -Before: [3, 1, 2, 3] -7 1 3 1 -After: [3, 0, 2, 3] - -Before: [3, 0, 3, 0] -15 2 2 1 -After: [3, 1, 3, 0] - -Before: [0, 2, 2, 2] -14 2 1 3 -After: [0, 2, 2, 1] - -Before: [1, 1, 2, 3] -12 1 2 1 -After: [1, 0, 2, 3] - -Before: [3, 1, 1, 1] -13 1 3 1 -After: [3, 1, 1, 1] - -Before: [2, 1, 1, 1] -13 1 3 3 -After: [2, 1, 1, 1] - -Before: [2, 2, 2, 3] -7 2 3 3 -After: [2, 2, 2, 0] - -Before: [2, 3, 3, 3] -15 0 0 2 -After: [2, 3, 1, 3] - -Before: [3, 1, 2, 1] -13 1 3 3 -After: [3, 1, 2, 1] - -Before: [3, 3, 3, 2] -15 0 2 0 -After: [1, 3, 3, 2] - -Before: [3, 1, 0, 2] -0 3 3 0 -After: [0, 1, 0, 2] - -Before: [2, 0, 3, 2] -14 0 1 1 -After: [2, 1, 3, 2] - -Before: [1, 0, 2, 1] -10 3 2 3 -After: [1, 0, 2, 1] - -Before: [1, 3, 3, 1] -0 3 3 2 -After: [1, 3, 0, 1] - -Before: [0, 2, 2, 1] -10 3 2 2 -After: [0, 2, 1, 1] - -Before: [2, 2, 1, 0] -5 2 1 0 -After: [2, 2, 1, 0] - -Before: [2, 3, 0, 1] -3 0 3 2 -After: [2, 3, 1, 1] - -Before: [1, 2, 2, 2] -6 0 2 1 -After: [1, 0, 2, 2] - -Before: [0, 1, 2, 2] -12 1 2 0 -After: [0, 1, 2, 2] - -Before: [1, 1, 0, 2] -9 1 0 2 -After: [1, 1, 1, 2] - -Before: [0, 1, 2, 2] -12 1 2 2 -After: [0, 1, 0, 2] - -Before: [2, 1, 2, 0] -12 1 2 2 -After: [2, 1, 0, 0] - -Before: [2, 3, 3, 0] -15 0 0 3 -After: [2, 3, 3, 1] - -Before: [2, 2, 0, 1] -15 0 0 0 -After: [1, 2, 0, 1] - -Before: [2, 0, 3, 2] -0 3 3 2 -After: [2, 0, 0, 2] - -Before: [3, 0, 3, 2] -15 2 2 3 -After: [3, 0, 3, 1] - -Before: [2, 3, 2, 1] -10 3 2 3 -After: [2, 3, 2, 1] - -Before: [2, 1, 2, 1] -3 0 3 3 -After: [2, 1, 2, 1] - -Before: [1, 3, 0, 0] -1 0 2 3 -After: [1, 3, 0, 0] - -Before: [3, 1, 2, 3] -2 0 2 3 -After: [3, 1, 2, 1] - -Before: [2, 1, 1, 2] -11 2 1 2 -After: [2, 1, 2, 2] - -Before: [1, 3, 2, 3] -7 2 3 1 -After: [1, 0, 2, 3] - -Before: [0, 0, 0, 0] -8 0 0 3 -After: [0, 0, 0, 0] - -Before: [1, 0, 3, 1] -14 2 3 2 -After: [1, 0, 0, 1] - -Before: [3, 2, 0, 3] -14 0 2 3 -After: [3, 2, 0, 1] - -Before: [3, 2, 2, 1] -2 0 2 1 -After: [3, 1, 2, 1] - -Before: [2, 1, 2, 1] -3 0 3 0 -After: [1, 1, 2, 1] - -Before: [2, 2, 0, 1] -3 0 3 3 -After: [2, 2, 0, 1] - -Before: [0, 3, 3, 2] -8 0 0 0 -After: [0, 3, 3, 2] - -Before: [3, 2, 0, 1] -14 0 2 1 -After: [3, 1, 0, 1] - -Before: [1, 1, 1, 3] -9 1 0 1 -After: [1, 1, 1, 3] - -Before: [0, 1, 0, 1] -13 1 3 0 -After: [1, 1, 0, 1] - -Before: [1, 1, 1, 0] -9 1 0 1 -After: [1, 1, 1, 0] - -Before: [1, 3, 2, 2] -6 0 2 0 -After: [0, 3, 2, 2] - -Before: [2, 1, 1, 1] -14 3 1 0 -After: [0, 1, 1, 1] - -Before: [1, 1, 3, 0] -9 1 0 0 -After: [1, 1, 3, 0] - -Before: [2, 1, 3, 1] -3 0 3 2 -After: [2, 1, 1, 1] - -Before: [2, 1, 1, 1] -3 0 3 1 -After: [2, 1, 1, 1] - -Before: [3, 2, 1, 3] -7 1 3 3 -After: [3, 2, 1, 0] - -Before: [2, 0, 3, 3] -15 0 0 2 -After: [2, 0, 1, 3] - -Before: [3, 0, 2, 1] -10 3 2 2 -After: [3, 0, 1, 1] - -Before: [1, 1, 2, 3] -9 1 0 0 -After: [1, 1, 2, 3] - -Before: [1, 2, 1, 1] -5 2 1 0 -After: [2, 2, 1, 1] - -Before: [0, 1, 2, 3] -12 1 2 1 -After: [0, 0, 2, 3] - -Before: [1, 3, 0, 1] -1 0 2 3 -After: [1, 3, 0, 0] - -Before: [2, 1, 0, 1] -2 0 1 0 -After: [1, 1, 0, 1] - -Before: [3, 2, 2, 3] -2 0 2 1 -After: [3, 1, 2, 3] - -Before: [1, 2, 0, 1] -1 0 2 1 -After: [1, 0, 0, 1] - -Before: [1, 2, 2, 0] -6 0 2 0 -After: [0, 2, 2, 0] - -Before: [2, 1, 1, 2] -11 2 1 0 -After: [2, 1, 1, 2] - -Before: [3, 1, 1, 3] -7 1 3 2 -After: [3, 1, 0, 3] - -Before: [2, 2, 1, 3] -5 2 1 2 -After: [2, 2, 2, 3] - -Before: [3, 1, 1, 1] -11 2 1 1 -After: [3, 2, 1, 1] - -Before: [2, 1, 2, 2] -4 1 3 1 -After: [2, 0, 2, 2] - -Before: [1, 1, 2, 1] -12 1 2 0 -After: [0, 1, 2, 1] - -Before: [1, 1, 0, 2] -9 1 0 3 -After: [1, 1, 0, 1] - -Before: [3, 3, 2, 3] -2 0 2 0 -After: [1, 3, 2, 3] - -Before: [1, 1, 2, 3] -9 1 0 3 -After: [1, 1, 2, 1] - -Before: [2, 1, 2, 1] -12 1 2 0 -After: [0, 1, 2, 1] - -Before: [1, 1, 0, 2] -4 1 3 1 -After: [1, 0, 0, 2] - -Before: [1, 2, 2, 0] -6 0 2 3 -After: [1, 2, 2, 0] - -Before: [2, 1, 1, 0] -11 2 1 3 -After: [2, 1, 1, 2] - -Before: [1, 1, 0, 1] -13 1 3 3 -After: [1, 1, 0, 1] - -Before: [3, 1, 2, 3] -7 1 3 3 -After: [3, 1, 2, 0] - -Before: [0, 2, 1, 3] -8 0 0 0 -After: [0, 2, 1, 3] - -Before: [3, 2, 1, 3] -7 1 3 0 -After: [0, 2, 1, 3] - -Before: [1, 2, 2, 2] -6 0 2 3 -After: [1, 2, 2, 0] - -Before: [1, 1, 1, 1] -13 1 3 3 -After: [1, 1, 1, 1] - -Before: [2, 1, 3, 2] -15 2 2 1 -After: [2, 1, 3, 2] - -Before: [2, 1, 0, 3] -2 0 1 0 -After: [1, 1, 0, 3] - -Before: [1, 1, 2, 1] -12 1 2 2 -After: [1, 1, 0, 1] - -Before: [1, 1, 3, 2] -4 1 3 0 -After: [0, 1, 3, 2] - -Before: [2, 3, 2, 3] -7 2 3 2 -After: [2, 3, 0, 3] - -Before: [2, 2, 1, 1] -5 2 1 3 -After: [2, 2, 1, 2] - -Before: [0, 0, 2, 1] -10 3 2 0 -After: [1, 0, 2, 1] - -Before: [3, 1, 0, 3] -7 1 3 2 -After: [3, 1, 0, 3] - -Before: [2, 1, 3, 2] -2 0 1 1 -After: [2, 1, 3, 2] - -Before: [2, 3, 1, 1] -3 0 3 1 -After: [2, 1, 1, 1] - -Before: [2, 2, 1, 3] -7 1 3 3 -After: [2, 2, 1, 0] - -Before: [3, 3, 3, 1] -15 0 2 1 -After: [3, 1, 3, 1] - -Before: [0, 1, 1, 0] -11 2 1 1 -After: [0, 2, 1, 0] - -Before: [1, 1, 1, 0] -11 2 1 0 -After: [2, 1, 1, 0] - -Before: [3, 1, 3, 1] -13 1 3 3 -After: [3, 1, 3, 1] - -Before: [0, 1, 3, 2] -8 0 0 1 -After: [0, 0, 3, 2] - -Before: [2, 2, 0, 3] -7 1 3 3 -After: [2, 2, 0, 0] - -Before: [1, 0, 2, 1] -6 0 2 2 -After: [1, 0, 0, 1] - -Before: [1, 3, 0, 2] -0 3 3 3 -After: [1, 3, 0, 0] - -Before: [1, 1, 0, 1] -9 1 0 3 -After: [1, 1, 0, 1] - -Before: [1, 2, 2, 3] -7 1 3 1 -After: [1, 0, 2, 3] - -Before: [1, 1, 2, 2] -12 1 2 3 -After: [1, 1, 2, 0] - -Before: [1, 1, 2, 0] -12 1 2 3 -After: [1, 1, 2, 0] - -Before: [0, 1, 0, 2] -4 1 3 1 -After: [0, 0, 0, 2] - -Before: [1, 1, 1, 0] -9 1 0 0 -After: [1, 1, 1, 0] - -Before: [1, 1, 2, 0] -9 1 0 0 -After: [1, 1, 2, 0] - -Before: [1, 2, 1, 1] -5 2 1 3 -After: [1, 2, 1, 2] - -Before: [3, 0, 3, 2] -15 2 2 0 -After: [1, 0, 3, 2] - -Before: [2, 2, 1, 3] -7 2 3 3 -After: [2, 2, 1, 0] - -Before: [3, 1, 2, 2] -4 1 3 3 -After: [3, 1, 2, 0] - -Before: [3, 1, 2, 1] -15 0 0 1 -After: [3, 1, 2, 1] - -Before: [2, 3, 2, 1] -10 3 2 0 -After: [1, 3, 2, 1] - -Before: [2, 1, 2, 2] -0 3 3 1 -After: [2, 0, 2, 2] - -Before: [1, 2, 0, 2] -1 0 2 1 -After: [1, 0, 0, 2] - -Before: [3, 3, 2, 0] -2 0 2 0 -After: [1, 3, 2, 0] - -Before: [0, 1, 1, 2] -11 2 1 1 -After: [0, 2, 1, 2] - -Before: [3, 1, 2, 1] -13 1 3 1 -After: [3, 1, 2, 1] - -Before: [3, 1, 3, 3] -15 2 0 3 -After: [3, 1, 3, 1] - -Before: [0, 1, 0, 1] -8 0 0 3 -After: [0, 1, 0, 0] - -Before: [2, 3, 2, 1] -0 3 3 3 -After: [2, 3, 2, 0] - -Before: [2, 1, 1, 2] -4 1 3 2 -After: [2, 1, 0, 2] - -Before: [0, 1, 3, 1] -13 1 3 0 -After: [1, 1, 3, 1] - -Before: [2, 2, 1, 1] -5 2 1 0 -After: [2, 2, 1, 1] - -Before: [3, 1, 2, 0] -15 0 0 0 -After: [1, 1, 2, 0] - -Before: [1, 1, 1, 1] -9 1 0 0 -After: [1, 1, 1, 1] - -Before: [1, 1, 2, 2] -12 1 2 2 -After: [1, 1, 0, 2] - -Before: [1, 1, 2, 1] -10 3 2 0 -After: [1, 1, 2, 1] - -Before: [2, 0, 1, 1] -3 0 3 3 -After: [2, 0, 1, 1] diff --git a/inputs/16_2.txt b/inputs/16_2.txt deleted file mode 100644 index 6f6f812..0000000 --- a/inputs/16_2.txt +++ /dev/null @@ -1,1014 +0,0 @@ -8 0 0 2 -5 2 2 2 -6 3 1 1 -8 0 0 3 -5 3 0 3 -9 2 3 1 -8 1 3 1 -8 1 2 1 -11 0 1 0 -10 0 0 1 -8 0 0 2 -5 2 3 2 -6 3 0 3 -8 2 0 0 -5 0 1 0 -12 3 2 0 -8 0 3 0 -11 1 0 1 -10 1 1 3 -6 1 2 0 -8 1 0 1 -5 1 0 1 -6 0 0 2 -5 0 1 1 -8 1 3 1 -11 3 1 3 -10 3 3 2 -6 3 0 3 -6 2 1 1 -4 3 1 0 -8 0 3 0 -11 0 2 2 -10 2 0 1 -8 1 0 0 -5 0 1 0 -8 3 0 2 -5 2 0 2 -6 2 1 3 -8 0 2 3 -8 3 3 3 -8 3 3 3 -11 3 1 1 -10 1 1 3 -6 3 3 2 -6 0 0 1 -8 0 2 0 -8 0 1 0 -8 0 1 0 -11 3 0 3 -10 3 0 0 -6 2 2 1 -6 1 0 3 -13 1 2 1 -8 1 2 1 -11 1 0 0 -10 0 3 2 -6 2 0 0 -6 3 1 1 -6 2 0 3 -9 0 3 1 -8 1 1 1 -8 1 3 1 -11 1 2 2 -10 2 0 0 -6 3 1 1 -6 2 1 2 -6 0 2 3 -7 3 2 1 -8 1 2 1 -8 1 2 1 -11 1 0 0 -10 0 3 3 -6 3 1 2 -6 1 2 0 -6 0 1 1 -6 2 1 1 -8 1 1 1 -11 3 1 3 -10 3 3 1 -6 2 0 3 -8 0 0 2 -5 2 0 2 -6 2 2 0 -15 0 3 0 -8 0 1 0 -8 0 2 0 -11 0 1 1 -10 1 0 0 -6 3 1 1 -6 0 0 3 -6 2 1 2 -7 3 2 2 -8 2 2 2 -11 2 0 0 -10 0 1 1 -6 1 0 3 -8 0 0 0 -5 0 2 0 -8 0 0 2 -5 2 0 2 -3 0 3 2 -8 2 3 2 -8 2 2 2 -11 1 2 1 -10 1 1 3 -8 2 0 2 -5 2 3 2 -6 3 2 0 -6 1 3 1 -8 1 2 2 -8 2 1 2 -11 2 3 3 -6 1 1 0 -8 1 0 2 -5 2 0 2 -6 2 0 0 -8 0 3 0 -11 3 0 3 -10 3 3 2 -6 2 1 0 -6 2 2 3 -6 0 1 1 -9 0 3 0 -8 0 1 0 -8 0 1 0 -11 0 2 2 -10 2 3 3 -6 3 1 1 -8 3 0 2 -5 2 1 2 -6 1 3 0 -5 0 1 0 -8 0 2 0 -11 0 3 3 -10 3 0 0 -6 1 3 3 -8 0 0 2 -5 2 0 2 -6 0 1 1 -5 3 1 2 -8 2 2 2 -11 0 2 0 -10 0 2 3 -6 2 1 1 -6 2 0 2 -6 3 3 0 -13 1 0 1 -8 1 2 1 -11 1 3 3 -10 3 2 2 -6 1 1 3 -6 0 2 1 -6 0 2 0 -5 3 1 3 -8 3 2 3 -11 2 3 2 -10 2 3 3 -6 1 3 0 -6 0 0 2 -6 3 1 1 -8 0 2 1 -8 1 3 1 -11 3 1 3 -10 3 0 1 -6 2 2 0 -6 2 1 3 -6 3 3 2 -9 0 3 2 -8 2 2 2 -8 2 3 2 -11 2 1 1 -10 1 3 3 -6 0 3 2 -8 2 0 1 -5 1 3 1 -2 0 1 1 -8 1 1 1 -11 1 3 3 -10 3 3 2 -6 3 0 1 -6 1 1 3 -3 0 3 1 -8 1 3 1 -11 2 1 2 -10 2 1 0 -6 2 1 1 -6 1 3 2 -6 2 0 3 -9 1 3 3 -8 3 3 3 -11 3 0 0 -10 0 3 2 -6 2 3 0 -6 1 0 3 -3 0 3 3 -8 3 2 3 -11 2 3 2 -10 2 2 1 -6 1 2 3 -6 2 3 2 -3 0 3 2 -8 2 1 2 -8 2 2 2 -11 2 1 1 -10 1 0 2 -6 3 2 1 -6 3 3 0 -11 3 3 1 -8 1 2 1 -8 1 2 1 -11 2 1 2 -6 2 1 1 -13 1 0 0 -8 0 3 0 -8 0 1 0 -11 0 2 2 -10 2 1 3 -8 1 0 0 -5 0 1 0 -6 0 0 2 -8 0 2 0 -8 0 3 0 -8 0 2 0 -11 3 0 3 -10 3 3 1 -6 3 3 2 -6 2 1 0 -6 2 2 3 -15 0 3 3 -8 3 2 3 -11 3 1 1 -10 1 3 2 -6 3 1 1 -8 2 0 3 -5 3 0 3 -4 1 0 1 -8 1 2 1 -11 2 1 2 -10 2 0 1 -6 3 1 2 -6 1 1 3 -6 1 0 0 -8 3 2 3 -8 3 2 3 -11 1 3 1 -10 1 2 3 -6 2 1 1 -6 2 1 2 -10 0 2 2 -8 2 1 2 -11 3 2 3 -6 0 0 1 -6 2 1 2 -10 0 2 0 -8 0 3 0 -11 3 0 3 -10 3 1 2 -8 2 0 3 -5 3 0 3 -6 1 1 0 -11 0 0 3 -8 3 2 3 -11 3 2 2 -10 2 3 3 -6 2 1 1 -6 3 2 2 -6 2 2 0 -0 0 2 0 -8 0 1 0 -11 0 3 3 -10 3 3 2 -6 2 1 3 -6 2 0 0 -6 3 0 1 -15 0 3 3 -8 3 1 3 -8 3 3 3 -11 3 2 2 -10 2 3 1 -8 1 0 0 -5 0 1 0 -6 3 3 2 -8 0 0 3 -5 3 1 3 -8 0 2 3 -8 3 1 3 -11 3 1 1 -10 1 1 3 -6 0 0 1 -6 2 1 2 -10 0 2 1 -8 1 2 1 -11 1 3 3 -10 3 2 0 -8 0 0 2 -5 2 0 2 -6 3 2 3 -6 3 3 1 -12 3 2 1 -8 1 1 1 -11 1 0 0 -10 0 0 3 -6 3 2 1 -6 2 2 0 -6 3 3 2 -0 0 2 0 -8 0 3 0 -8 0 1 0 -11 0 3 3 -10 3 3 2 -6 1 3 1 -8 1 0 3 -5 3 2 3 -8 0 0 0 -5 0 2 0 -1 1 3 0 -8 0 1 0 -11 2 0 2 -6 3 1 1 -6 2 0 0 -4 1 0 1 -8 1 2 1 -11 2 1 2 -10 2 1 1 -6 3 0 2 -6 1 2 3 -3 0 3 0 -8 0 1 0 -11 0 1 1 -8 3 0 2 -5 2 2 2 -6 2 0 3 -8 2 0 0 -5 0 3 0 -2 2 0 2 -8 2 1 2 -11 1 2 1 -10 1 2 0 -6 3 0 1 -8 0 0 2 -5 2 0 2 -14 2 3 1 -8 1 2 1 -11 1 0 0 -10 0 2 3 -6 3 3 2 -6 1 3 0 -8 3 0 1 -5 1 1 1 -11 1 0 2 -8 2 3 2 -8 2 3 2 -11 3 2 3 -10 3 3 1 -6 2 2 2 -6 0 2 3 -7 3 2 0 -8 0 2 0 -8 0 2 0 -11 1 0 1 -10 1 2 3 -6 3 2 0 -8 2 0 2 -5 2 0 2 -8 1 0 1 -5 1 3 1 -0 2 0 0 -8 0 3 0 -11 0 3 3 -10 3 2 1 -6 1 1 0 -8 3 0 3 -5 3 0 3 -6 1 1 2 -6 3 0 2 -8 2 2 2 -11 2 1 1 -10 1 3 2 -8 3 0 1 -5 1 1 1 -6 3 1 3 -11 0 0 1 -8 1 1 1 -11 1 2 2 -10 2 1 1 -6 1 2 2 -6 3 2 0 -6 2 1 3 -12 0 2 0 -8 0 3 0 -11 1 0 1 -10 1 1 2 -6 2 3 0 -8 2 0 3 -5 3 1 3 -6 3 1 1 -5 3 1 3 -8 3 2 3 -11 2 3 2 -6 0 3 3 -6 3 0 0 -8 2 0 1 -5 1 2 1 -13 1 0 0 -8 0 1 0 -11 0 2 2 -10 2 3 1 -6 2 1 2 -6 1 2 3 -6 3 0 0 -2 2 0 3 -8 3 3 3 -11 1 3 1 -10 1 2 3 -6 1 3 0 -6 3 0 1 -5 0 1 1 -8 1 2 1 -11 1 3 3 -10 3 3 2 -6 1 3 3 -8 0 0 1 -5 1 0 1 -8 1 0 0 -5 0 2 0 -3 0 3 1 -8 1 2 1 -11 2 1 2 -6 1 1 0 -6 0 2 1 -8 3 0 3 -5 3 2 3 -5 0 1 0 -8 0 3 0 -8 0 2 0 -11 0 2 2 -6 1 0 1 -6 2 1 0 -15 0 3 3 -8 3 3 3 -11 3 2 2 -6 0 2 1 -6 2 3 3 -6 3 3 0 -4 0 3 1 -8 1 2 1 -11 2 1 2 -6 0 1 3 -8 0 0 0 -5 0 2 0 -8 3 0 1 -5 1 2 1 -6 3 0 0 -8 0 2 0 -8 0 3 0 -11 0 2 2 -10 2 1 3 -8 2 0 2 -5 2 3 2 -6 1 1 1 -6 2 3 0 -1 1 0 2 -8 2 3 2 -11 3 2 3 -10 3 0 0 -6 0 3 3 -8 3 0 1 -5 1 0 1 -6 2 0 2 -7 3 2 2 -8 2 2 2 -11 0 2 0 -10 0 0 3 -6 2 3 1 -8 3 0 2 -5 2 0 2 -6 3 3 0 -13 1 0 2 -8 2 3 2 -8 2 3 2 -11 3 2 3 -8 3 0 2 -5 2 2 2 -2 2 0 1 -8 1 3 1 -11 3 1 3 -10 3 2 2 -6 1 3 3 -6 3 3 1 -6 2 0 0 -3 0 3 3 -8 3 3 3 -11 3 2 2 -10 2 2 0 -6 1 1 1 -6 2 1 3 -8 2 0 2 -5 2 0 2 -14 2 3 2 -8 2 2 2 -8 2 3 2 -11 2 0 0 -10 0 1 3 -6 3 0 1 -6 3 2 2 -6 2 0 0 -6 2 1 0 -8 0 2 0 -11 3 0 3 -10 3 0 1 -6 0 1 3 -6 2 3 2 -8 3 0 0 -5 0 0 0 -7 3 2 3 -8 3 3 3 -8 3 2 3 -11 1 3 1 -10 1 1 2 -6 2 0 0 -8 0 0 3 -5 3 1 3 -6 1 1 1 -1 3 0 1 -8 1 2 1 -11 1 2 2 -10 2 2 3 -6 0 2 1 -6 3 1 0 -6 2 2 2 -2 2 0 1 -8 1 3 1 -8 1 1 1 -11 1 3 3 -10 3 1 2 -6 1 0 1 -6 2 2 3 -1 1 3 0 -8 0 2 0 -8 0 3 0 -11 2 0 2 -10 2 3 1 -6 2 0 0 -6 2 0 2 -15 0 3 3 -8 3 1 3 -11 3 1 1 -10 1 0 3 -6 3 0 2 -6 1 3 1 -0 0 2 2 -8 2 3 2 -11 3 2 3 -10 3 3 0 -6 1 2 3 -6 3 1 1 -6 0 0 2 -12 1 2 3 -8 3 3 3 -8 3 3 3 -11 3 0 0 -10 0 3 1 -8 1 0 0 -5 0 2 0 -8 1 0 2 -5 2 2 2 -6 0 2 3 -7 3 2 2 -8 2 2 2 -11 2 1 1 -10 1 2 3 -6 2 3 1 -6 3 1 2 -13 1 2 0 -8 0 3 0 -11 0 3 3 -10 3 1 1 -6 1 2 3 -6 3 1 0 -8 3 2 0 -8 0 1 0 -11 1 0 1 -6 1 3 0 -6 2 2 2 -6 3 0 3 -10 0 2 0 -8 0 1 0 -11 0 1 1 -6 3 0 0 -2 2 0 3 -8 3 1 3 -11 3 1 1 -10 1 2 3 -6 1 2 2 -8 1 0 1 -5 1 1 1 -6 2 2 0 -1 1 0 0 -8 0 3 0 -11 3 0 3 -10 3 1 0 -6 2 0 3 -6 2 0 2 -1 1 3 3 -8 3 1 3 -11 3 0 0 -10 0 0 3 -6 3 2 1 -8 3 0 0 -5 0 2 0 -6 3 2 2 -0 0 2 2 -8 2 1 2 -11 3 2 3 -10 3 3 0 -8 0 0 3 -5 3 0 3 -6 1 3 1 -6 2 2 2 -7 3 2 3 -8 3 1 3 -8 3 3 3 -11 0 3 0 -10 0 0 3 -6 3 2 2 -6 2 1 0 -0 0 2 1 -8 1 3 1 -8 1 2 1 -11 1 3 3 -8 1 0 2 -5 2 2 2 -6 3 1 0 -6 3 3 1 -2 2 1 1 -8 1 1 1 -11 3 1 3 -10 3 1 1 -6 3 2 3 -6 2 0 0 -6 3 0 2 -13 0 2 3 -8 3 3 3 -8 3 1 3 -11 3 1 1 -10 1 2 3 -8 2 0 0 -5 0 1 0 -8 3 0 2 -5 2 2 2 -8 0 0 1 -5 1 0 1 -11 0 0 1 -8 1 2 1 -11 3 1 3 -10 3 3 0 -6 0 1 3 -6 3 3 1 -6 3 1 2 -14 3 2 3 -8 3 3 3 -11 0 3 0 -10 0 2 3 -6 1 0 1 -6 1 0 0 -6 2 3 2 -10 0 2 1 -8 1 1 1 -8 1 2 1 -11 1 3 3 -6 1 1 2 -6 0 3 1 -5 0 1 2 -8 2 3 2 -11 3 2 3 -10 3 2 1 -8 3 0 3 -5 3 2 3 -8 1 0 0 -5 0 2 0 -6 3 3 2 -0 0 2 3 -8 3 2 3 -8 3 1 3 -11 3 1 1 -10 1 2 0 -6 1 3 3 -8 3 0 2 -5 2 1 2 -6 0 1 1 -5 3 1 3 -8 3 1 3 -11 0 3 0 -10 0 3 1 -6 1 3 0 -6 0 3 3 -8 1 0 2 -5 2 2 2 -7 3 2 3 -8 3 2 3 -11 3 1 1 -6 0 0 2 -6 2 3 3 -6 0 3 0 -14 2 3 0 -8 0 1 0 -8 0 1 0 -11 0 1 1 -10 1 0 3 -6 3 0 2 -6 2 2 0 -6 2 0 1 -13 0 2 1 -8 1 3 1 -8 1 1 1 -11 3 1 3 -10 3 2 1 -6 3 1 3 -6 1 2 0 -8 0 2 2 -8 2 3 2 -11 1 2 1 -6 1 0 3 -6 3 3 2 -11 0 0 2 -8 2 2 2 -11 1 2 1 -10 1 2 3 -6 0 3 0 -8 1 0 2 -5 2 2 2 -6 3 2 1 -2 2 1 2 -8 2 1 2 -11 3 2 3 -6 0 0 2 -6 1 3 1 -8 1 2 0 -8 0 3 0 -8 0 2 0 -11 0 3 3 -10 3 2 2 -6 2 2 0 -6 1 2 3 -3 0 3 0 -8 0 2 0 -11 2 0 2 -10 2 3 3 -6 0 0 1 -6 2 0 0 -6 3 3 2 -0 0 2 2 -8 2 1 2 -8 2 1 2 -11 2 3 3 -10 3 1 0 -6 2 3 1 -6 2 3 3 -8 3 0 2 -5 2 0 2 -14 2 3 2 -8 2 3 2 -11 2 0 0 -10 0 0 1 -8 2 0 2 -5 2 0 2 -6 1 0 0 -1 0 3 3 -8 3 2 3 -8 3 2 3 -11 1 3 1 -6 2 2 0 -6 2 0 3 -6 1 3 2 -15 0 3 0 -8 0 2 0 -11 1 0 1 -10 1 2 0 -6 3 0 1 -6 0 3 2 -6 1 1 3 -12 1 2 1 -8 1 1 1 -11 1 0 0 -10 0 1 2 -6 3 1 1 -6 3 1 0 -5 3 1 3 -8 3 3 3 -11 2 3 2 -10 2 1 0 -6 0 2 3 -6 2 3 2 -8 1 0 1 -5 1 0 1 -7 3 2 3 -8 3 1 3 -8 3 1 3 -11 3 0 0 -6 2 1 1 -6 3 0 2 -6 0 1 3 -14 3 2 2 -8 2 2 2 -11 2 0 0 -8 2 0 2 -5 2 0 2 -6 1 1 3 -6 2 3 1 -8 1 3 1 -11 0 1 0 -10 0 0 1 -6 2 1 0 -6 3 1 2 -1 3 0 0 -8 0 2 0 -11 0 1 1 -10 1 3 0 -6 0 3 3 -6 1 1 1 -14 3 2 1 -8 1 2 1 -11 0 1 0 -10 0 3 2 -6 2 3 1 -6 2 0 0 -6 1 1 3 -1 3 0 0 -8 0 1 0 -11 0 2 2 -10 2 0 1 -6 0 2 2 -6 2 0 3 -6 2 1 0 -15 0 3 3 -8 3 2 3 -8 3 3 3 -11 1 3 1 -6 3 0 0 -8 0 0 3 -5 3 1 3 -11 3 3 3 -8 3 1 3 -8 3 1 3 -11 3 1 1 -10 1 3 3 -6 2 0 0 -6 3 0 2 -8 0 0 1 -5 1 2 1 -0 0 2 1 -8 1 1 1 -8 1 1 1 -11 1 3 3 -10 3 1 2 -6 2 0 1 -6 2 3 3 -15 0 3 1 -8 1 1 1 -8 1 1 1 -11 1 2 2 -10 2 1 0 -6 0 2 3 -6 3 3 1 -6 2 1 2 -7 3 2 3 -8 3 3 3 -11 3 0 0 -10 0 0 2 -6 2 3 0 -6 0 0 3 -2 0 1 3 -8 3 3 3 -11 2 3 2 -10 2 2 3 -6 1 0 2 -6 1 0 1 -1 1 0 1 -8 1 1 1 -11 3 1 3 -8 1 0 1 -5 1 3 1 -2 0 1 1 -8 1 3 1 -11 3 1 3 -10 3 0 2 -6 2 2 3 -8 2 0 1 -5 1 3 1 -15 0 3 1 -8 1 1 1 -8 1 1 1 -11 2 1 2 -10 2 3 0 -6 3 0 1 -6 1 0 3 -6 2 1 2 -2 2 1 2 -8 2 2 2 -8 2 3 2 -11 0 2 0 -10 0 0 1 -6 1 0 0 -6 2 2 2 -10 0 2 2 -8 2 1 2 -11 1 2 1 -10 1 2 0 -6 3 1 1 -6 2 0 3 -6 2 0 2 -9 2 3 2 -8 2 1 2 -11 0 2 0 -10 0 2 2 -6 1 1 3 -6 0 2 1 -8 0 0 0 -5 0 1 0 -5 3 1 3 -8 3 2 3 -11 3 2 2 -10 2 0 1 -6 1 2 2 -6 2 1 3 -1 0 3 2 -8 2 2 2 -11 2 1 1 -6 3 3 2 -6 2 3 0 -15 0 3 2 -8 2 2 2 -11 2 1 1 -10 1 2 0 -6 2 1 1 -6 3 3 2 -9 1 3 3 -8 3 3 3 -11 0 3 0 -10 0 2 1 -6 0 0 2 -6 2 0 0 -6 1 1 3 -1 3 0 2 -8 2 1 2 -8 2 1 2 -11 2 1 1 -10 1 0 0 -6 2 2 1 -6 0 0 3 -6 3 2 2 -13 1 2 2 -8 2 3 2 -11 0 2 0 -10 0 0 2 -6 2 2 3 -8 2 0 0 -5 0 0 0 -6 3 1 1 -6 3 0 0 -8 0 3 0 -11 0 2 2 -10 2 0 1 -6 0 1 2 -6 3 2 0 -6 0 1 3 -12 0 2 3 -8 3 1 3 -8 3 2 3 -11 3 1 1 -10 1 3 2 -6 2 2 1 -6 2 3 0 -6 3 2 3 -4 3 1 1 -8 1 2 1 -11 2 1 2 -10 2 0 0 -8 3 0 3 -5 3 1 3 -6 1 1 1 -6 3 3 2 -8 3 2 3 -8 3 2 3 -11 0 3 0 -6 2 3 2 -6 2 0 1 -6 2 0 3 -9 1 3 3 -8 3 1 3 -11 0 3 0 -10 0 1 2 -6 1 3 3 -6 2 2 0 -11 3 3 3 -8 3 2 3 -11 2 3 2 -6 2 0 3 -6 3 1 1 -15 0 3 0 -8 0 2 0 -8 0 2 0 -11 2 0 2 -10 2 2 3 -8 2 0 0 -5 0 1 0 -8 3 0 1 -5 1 1 1 -6 0 0 2 -8 1 2 2 -8 2 2 2 -8 2 1 2 -11 3 2 3 -10 3 2 0 diff --git a/inputs/17.txt b/inputs/17.txt deleted file mode 100644 index 1e2ccdd..0000000 --- a/inputs/17.txt +++ /dev/null @@ -1,1713 +0,0 @@ -y=1181, x=576..579 -y=434, x=498..503 -x=647, y=653..675 -y=1204, x=593..595 -y=268, x=475..498 -x=599, y=619..638 -y=1130, x=452..478 -x=439, y=1365..1377 -y=652, x=589..595 -y=1552, x=560..577 -x=439, y=852..867 -x=605, y=292..298 -x=489, y=709..718 -x=567, y=1087..1097 -y=1774, x=631..634 -x=649, y=592..612 -x=610, y=533..555 -x=564, y=996..1008 -x=651, y=416..441 -y=1106, x=502..519 -y=1015, x=479..487 -x=572, y=25..35 -x=630, y=849..865 -x=573, y=884..897 -x=614, y=667..688 -x=464, y=1542..1567 -x=645, y=258..270 -y=1029, x=656..662 -y=1502, x=483..511 -x=589, y=1553..1555 -x=535, y=1792..1795 -x=469, y=166..193 -x=484, y=1117..1142 -x=655, y=1277..1295 -x=598, y=162..170 -y=620, x=430..455 -x=665, y=1205..1212 -x=501, y=1347..1364 -x=661, y=664..684 -x=583, y=131..142 -x=542, y=722..727 -x=475, y=748..761 -x=602, y=1386..1393 -x=578, y=1651..1662 -y=1711, x=598..603 -y=164, x=642..660 -x=488, y=1176..1183 -x=644, y=207..221 -x=654, y=1678..1691 -y=1673, x=448..454 -x=630, y=1299..1312 -y=695, x=472..474 -x=465, y=1022..1045 -x=645, y=1216..1243 -x=623, y=423..437 -x=625, y=200..219 -x=565, y=1153..1166 -x=490, y=1510..1519 -x=553, y=941..947 -x=634, y=1101..1126 -x=515, y=111..113 -y=1146, x=427..438 -y=1096, x=451..460 -x=464, y=1339..1346 -x=612, y=1383..1396 -y=500, x=516..532 -x=555, y=941..947 -x=528, y=1243..1270 -x=646, y=1136..1146 -y=887, x=470..484 -x=617, y=316..343 -x=575, y=1060..1069 -y=1047, x=443..455 -y=1120, x=527..580 -x=514, y=126..135 -y=292, x=484..500 -x=556, y=75..91 -y=646, x=494..518 -x=644, y=552..568 -x=509, y=8..17 -y=735, x=591..614 -x=586, y=1215..1228 -y=1335, x=443..465 -y=495, x=522..526 -x=610, y=864..867 -y=221, x=639..644 -y=1346, x=464..469 -x=489, y=967..983 -x=602, y=1277..1289 -x=620, y=1348..1375 -x=575, y=1736..1744 -x=629, y=462..466 -y=270, x=645..652 -x=518, y=1244..1270 -x=576, y=1151..1162 -x=483, y=970..973 -y=1349, x=606..610 -y=1335, x=634..655 -y=1671, x=650..657 -x=619, y=243..265 -x=585, y=558..563 -x=536, y=1876..1887 -x=652, y=551..559 -x=593, y=1256..1268 -x=440, y=1480..1496 -y=1401, x=520..541 -x=624, y=1297..1306 -x=501, y=1510..1528 -x=587, y=567..575 -y=1470, x=560..580 -y=776, x=519..523 -x=601, y=981..983 -x=516, y=655..666 -y=1803, x=573..578 -x=504, y=1654..1677 -y=1931, x=537..667 -x=540, y=145..163 -x=616, y=204..210 -x=473, y=1856..1859 -x=547, y=241..259 -x=664, y=932..939 -x=475, y=306..316 -y=1572, x=622..628 -x=641, y=985..1001 -x=527, y=1572..1575 -x=447, y=1116..1124 -x=595, y=650..652 -y=1326, x=616..619 -x=626, y=822..835 -x=583, y=1063..1075 -x=576, y=1212..1222 -y=1206, x=486..495 -x=602, y=1885..1910 -x=460, y=1781..1805 -y=996, x=521..527 -x=591, y=1083..1103 -x=569, y=1563..1574 -y=785, x=560..579 -y=857, x=522..524 -x=599, y=804..805 -x=651, y=1724..1736 -y=637, x=449..467 -x=455, y=815..842 -x=476, y=1327..1345 -y=1533, x=615..624 -y=1268, x=633..655 -x=653, y=295..299 -x=522, y=388..415 -y=1365, x=462..487 -y=1430, x=428..438 -x=487, y=488..499 -y=1150, x=599..608 -x=559, y=1922..1927 -x=664, y=170..193 -y=1531, x=441..444 -y=1315, x=600..604 -x=603, y=1541..1543 -x=664, y=1401..1420 -x=580, y=322..345 -x=449, y=627..637 -y=1749, x=497..511 -x=577, y=1060..1069 -y=289, x=492..494 -x=443, y=1330..1335 -x=487, y=405..416 -x=603, y=18..33 -y=1312, x=612..630 -x=605, y=625..633 -x=546, y=1230..1232 -x=553, y=1126..1142 -x=441, y=936..943 -y=1715, x=544..641 -y=1693, x=594..596 -x=649, y=1151..1170 -x=490, y=405..416 -x=602, y=1602..1623 -y=142, x=580..583 -x=574, y=646..660 -y=789, x=479..485 -y=1093, x=640..655 -y=1200, x=501..508 -y=225, x=557..572 -x=591, y=727..735 -x=515, y=1653..1665 -x=467, y=489..499 -y=193, x=459..469 -x=593, y=1143..1162 -x=461, y=489..493 -x=547, y=198..217 -x=522, y=61..73 -x=626, y=1767..1779 -y=446, x=437..448 -y=840, x=443..451 -x=496, y=597..601 -x=650, y=1004..1013 -x=429, y=936..943 -x=557, y=812..822 -x=542, y=1633..1635 -x=469, y=1607..1615 -y=1654, x=624..626 -x=504, y=787..798 -x=569, y=1868..1875 -y=902, x=641..644 -y=1170, x=649..651 -x=606, y=532..555 -x=493, y=1509..1528 -x=452, y=1410..1425 -x=535, y=468..480 -x=599, y=1150..1158 -y=1486, x=429..437 -y=415, x=518..522 -x=511, y=1490..1502 -x=634, y=1765..1774 -x=539, y=869..879 -x=470, y=1413..1418 -x=516, y=1641..1648 -y=598, x=432..434 -x=494, y=807..818 -x=477, y=1875..1898 -x=577, y=77..98 -x=477, y=324..337 -x=451, y=1510..1535 -x=590, y=838..849 -x=565, y=1872..1898 -x=516, y=825..831 -x=541, y=869..879 -y=695, x=427..444 -x=437, y=1166..1194 -x=593, y=1279..1292 -x=518, y=469..480 -x=532, y=1851..1861 -y=1861, x=532..536 -y=1485, x=636..652 -y=1887, x=493..496 -x=436, y=749..766 -y=1268, x=593..610 -y=1145, x=512..520 -y=334, x=482..485 -y=1351, x=553..565 -x=491, y=1547..1556 -y=1908, x=530..549 -y=521, x=607..634 -x=602, y=1687..1698 -x=631, y=1725..1736 -y=1792, x=432..456 -x=530, y=1572..1575 -x=584, y=1154..1166 -x=620, y=1286..1292 -x=537, y=1918..1931 -x=608, y=1474..1489 -x=461, y=989..1006 -x=477, y=1672..1678 -y=1287, x=492..495 -y=1318, x=532..554 -x=463, y=12..30 -x=628, y=595..608 -x=560, y=778..785 -y=1624, x=472..480 -y=673, x=486..489 -x=475, y=1241..1254 -y=1479, x=472..485 -x=458, y=468..477 -y=1298, x=494..497 -x=641, y=1437..1447 -y=973, x=464..483 -y=1695, x=594..596 -x=460, y=1084..1096 -x=613, y=293..298 -x=503, y=1548..1556 -x=574, y=915..931 -y=25, x=482..501 -x=637, y=529..549 -x=441, y=1440..1453 -y=91, x=556..567 -x=432, y=1695..1711 -y=1375, x=620..644 -y=1912, x=553..556 -y=413, x=595..598 -x=584, y=1257..1281 -y=131, x=551..556 -x=493, y=573..576 -x=551, y=860..864 -x=469, y=79..91 -x=462, y=1144..1150 -x=513, y=812..814 -y=1789, x=582..607 -y=1246, x=590..592 -x=544, y=1703..1715 -y=677, x=480..496 -x=432, y=588..598 -x=566, y=556..559 -y=1926, x=511..515 -y=592, x=455..478 -x=610, y=1647..1659 -x=651, y=213..238 -y=1622, x=543..565 -x=451, y=90..104 -x=576, y=1174..1181 -y=1243, x=645..651 -x=553, y=1343..1351 -x=572, y=201..225 -x=648, y=947..970 -x=581, y=444..462 -x=459, y=36..59 -x=642, y=147..164 -x=561, y=1634..1635 -x=593, y=697..707 -x=557, y=200..225 -y=1077, x=457..461 -y=1429, x=600..626 -x=631, y=781..785 -x=565, y=1343..1351 -x=651, y=891..905 -x=445, y=1827..1843 -y=1711, x=432..460 -x=491, y=1819..1821 -x=558, y=725..730 -x=434, y=991..1012 -x=634, y=434..442 -x=452, y=527..540 -x=618, y=1479..1484 -x=644, y=621..626 -x=533, y=1526..1544 -y=831, x=490..516 -y=466, x=629..649 -y=1228, x=568..586 -x=567, y=1062..1075 -x=640, y=1747..1758 -x=579, y=777..785 -x=549, y=812..822 -y=1732, x=638..640 -y=490, x=576..594 -x=516, y=1495..1518 -x=620, y=1297..1306 -y=254, x=460..468 -x=475, y=254..268 -x=482, y=12..25 -y=1183, x=468..488 -x=587, y=666..675 -y=68, x=479..500 -x=524, y=1789..1801 -x=613, y=1046..1058 -x=580, y=567..575 -y=879, x=539..541 -x=448, y=533..537 -x=658, y=1363..1375 -y=410, x=427..438 -y=176, x=501..504 -x=491, y=783..794 -x=570, y=351..373 -y=259, x=521..547 -y=480, x=518..535 -y=633, x=605..607 -x=523, y=767..776 -y=898, x=552..556 -x=606, y=1340..1349 -x=494, y=631..646 -x=496, y=1688..1695 -y=821, x=634..642 -y=1393, x=602..605 -x=443, y=1175..1177 -x=531, y=851..861 -y=582, x=442..546 -y=864, x=551..570 -x=562, y=996..1008 -y=575, x=580..587 -x=529, y=1763..1775 -y=40, x=502..506 -y=73, x=522..529 -y=798, x=504..526 -y=628, x=513..529 -x=520, y=1657..1662 -y=1648, x=516..536 -y=1142, x=484..495 -x=492, y=302..315 -x=586, y=1176..1187 -y=512, x=516..518 -y=218, x=502..504 -y=515, x=516..518 -x=516, y=512..515 -x=444, y=690..695 -y=626, x=624..644 -x=637, y=1276..1295 -y=1370, x=592..595 -y=1860, x=609..620 -x=620, y=900..915 -x=614, y=727..735 -x=437, y=1464..1486 -y=1254, x=457..475 -y=910, x=583..585 -y=294, x=429..436 -y=398, x=481..501 -x=642, y=1768..1779 -y=1845, x=500..524 -y=1898, x=561..565 -y=712, x=571..573 -y=735, x=489..491 -y=887, x=586..589 -y=1518, x=516..521 -x=466, y=551..560 -x=472, y=1613..1624 -x=561, y=701..715 -y=33, x=599..603 -x=538, y=896..908 -x=568, y=1456..1464 -y=559, x=566..568 -x=515, y=328..356 -x=662, y=1020..1029 -x=624, y=355..377 -x=480, y=1612..1624 -y=1139, x=570..574 -y=1795, x=530..535 -x=516, y=490..500 -x=462, y=1830..1837 -x=437, y=202..223 -x=661, y=1504..1509 -x=451, y=470..481 -x=515, y=1836..1840 -x=633, y=189..191 -x=467, y=708..718 -x=528, y=900..902 -x=497, y=232..241 -x=588, y=1686..1698 -y=1306, x=620..624 -x=480, y=667..677 -x=493, y=9..21 -y=1416, x=490..515 -x=624, y=1507..1533 -x=436, y=290..294 -y=708, x=571..573 -x=462, y=601..615 -y=595, x=628..638 -y=1205, x=621..626 -x=582, y=1130..1142 -x=487, y=1000..1015 -x=651, y=1695..1703 -x=544, y=891..902 -x=459, y=165..193 -x=549, y=1897..1908 -y=1484, x=616..618 -x=556, y=1887..1912 -y=1868, x=462..480 -x=621, y=1177..1205 -x=561, y=1873..1898 -x=624, y=1475..1489 -y=1377, x=439..451 -y=943, x=429..441 -y=1553, x=610..615 -x=509, y=1048..1074 -x=483, y=915..928 -x=480, y=606..608 -x=580, y=1027..1043 -x=630, y=978..996 -x=516, y=1875..1887 -x=501, y=1190..1200 -y=377, x=624..632 -y=481, x=451..470 -y=555, x=606..610 -x=445, y=1542..1567 -x=514, y=1231..1233 -x=572, y=62..72 -y=1097, x=548..567 -x=593, y=1784..1786 -x=556, y=29..31 -x=514, y=34..44 -x=651, y=29..31 -x=601, y=1342..1352 -x=439, y=177..182 -x=522, y=853..857 -x=638, y=110..114 -y=1166, x=565..584 -x=549, y=447..457 -x=508, y=1896..1898 -x=525, y=1763..1775 -x=572, y=350..373 -x=583, y=273..301 -x=496, y=148..158 -x=427, y=690..695 -x=506, y=449..461 -x=622, y=592..612 -x=492, y=497..521 -x=554, y=962..972 -x=543, y=827..840 -y=91, x=469..487 -x=446, y=614..616 -x=477, y=453..456 -x=501, y=366..376 -y=487, x=564..568 -x=495, y=1188..1206 -x=530, y=1896..1908 -x=436, y=123..147 -x=471, y=1856..1859 -x=486, y=664..673 -y=770, x=573..583 -x=565, y=1403..1411 -x=599, y=18..33 -y=1599, x=556..577 -y=1411, x=565..567 -x=541, y=986..1012 -x=601, y=1083..1103 -y=1825, x=486..502 -y=1695, x=480..496 -x=440, y=122..147 -x=476, y=364..376 -y=409, x=449..463 -x=446, y=1143..1150 -x=536, y=1614..1619 -y=290, x=510..514 -y=600, x=454..459 -y=1837, x=562..579 -x=462, y=1851..1868 -x=544, y=278..297 -y=902, x=544..563 -x=580, y=1438..1447 -x=546, y=570..582 -x=644, y=1874..1875 -x=447, y=306..316 -x=556, y=277..297 -x=626, y=424..437 -y=806, x=549..557 -x=596, y=1693..1695 -y=936, x=444..451 -y=1156, x=486..510 -y=1567, x=445..464 -y=779, x=514..530 -x=536, y=1851..1861 -y=992, x=504..509 -x=535, y=329..356 -y=814, x=513..519 -y=210, x=604..616 -x=491, y=731..735 -x=558, y=1084..1093 -y=352, x=642..648 -x=425, y=591..601 -x=634, y=1586..1603 -x=554, y=599..608 -x=605, y=397..419 -x=514, y=267..290 -y=263, x=554..568 -x=473, y=911..937 -y=897, x=573..579 -x=595, y=1401..1409 -x=613, y=367..370 -y=1535, x=433..451 -x=573, y=767..770 -x=665, y=41..45 -y=1093, x=558..561 -x=454, y=1666..1673 -x=495, y=1662..1672 -x=566, y=220..222 -x=492, y=1268..1287 -x=534, y=808..818 -x=480, y=1852..1868 -y=282, x=590..616 -x=502, y=218..221 -y=1187, x=566..586 -x=598, y=317..343 -x=562, y=1833..1837 -x=499, y=470..481 -y=113, x=456..478 -y=1703, x=649..651 -x=454, y=598..600 -x=474, y=1058..1074 -x=498, y=434..436 -y=1680, x=481..483 -x=662, y=851..868 -y=987, x=563..565 -y=299, x=653..660 -y=1590, x=617..625 -y=608, x=476..480 -x=538, y=527..540 -y=246, x=488..504 -x=455, y=611..620 -x=490, y=345..356 -x=566, y=602..604 -y=1603, x=634..650 -x=608, y=1150..1158 -x=454, y=363..376 -y=1679, x=596..623 -x=483, y=1569..1571 -x=554, y=1309..1318 -x=660, y=146..164 -x=442, y=752..755 -x=514, y=850..861 -y=1142, x=531..553 -y=1509, x=653..661 -x=509, y=1836..1840 -x=604, y=1301..1315 -x=488, y=426..440 -x=475, y=1733..1758 -x=543, y=41..67 -x=527, y=1107..1120 -y=660, x=574..577 -x=502, y=1081..1106 -x=469, y=1428..1434 -y=564, x=488..492 -x=430, y=1435..1455 -x=547, y=919..929 -x=641, y=1560..1563 -x=480, y=646..657 -y=715, x=478..480 -x=622, y=193..215 -x=445, y=271..274 -x=612, y=1280..1292 -y=938, x=608..621 -x=526, y=1897..1898 -x=610, y=441..443 -x=610, y=666..688 -y=1887, x=516..536 -x=625, y=1287..1292 -x=512, y=1204..1207 -x=505, y=1292..1303 -y=1045, x=465..485 -x=485, y=327..334 -x=574, y=570..587 -x=463, y=394..409 -x=485, y=1460..1479 -y=457, x=549..552 -y=456, x=477..479 -x=453, y=758..770 -x=660, y=360..381 -y=1895, x=616..620 -x=530, y=93..101 -x=589, y=861..887 -x=657, y=41..45 -y=31, x=556..564 -y=1823, x=512..656 -x=542, y=381..398 -y=1897, x=616..620 -x=610, y=1922..1927 -y=675, x=635..647 -x=535, y=938..950 -x=525, y=180..188 -x=635, y=654..675 -y=356, x=515..535 -x=520, y=1525..1544 -x=469, y=1799..1801 -x=478, y=1780..1805 -x=604, y=204..210 -x=456, y=490..493 -x=504, y=1875..1898 -x=527, y=1013..1027 -x=521, y=974..996 -x=583, y=737..760 -x=598, y=410..413 -x=476, y=493..496 -x=478, y=588..592 -x=438, y=1134..1146 -x=639, y=172..182 -x=471, y=1826..1843 -x=489, y=731..735 -x=427, y=888..914 -x=490, y=215..224 -y=1287, x=644..649 -x=655, y=729..747 -x=493, y=1788..1792 -x=596, y=763..765 -y=1236, x=446..456 -x=442, y=590..601 -x=600, y=1277..1289 -y=1224, x=590..608 -x=452, y=1102..1130 -x=504, y=165..176 -x=494, y=1296..1298 -x=615, y=511..516 -x=512, y=1465..1469 -x=649, y=1280..1287 -x=656, y=1811..1823 -x=567, y=76..91 -y=111, x=502..510 -y=867, x=439..444 -x=638, y=595..608 -y=87, x=531..549 -x=484, y=278..292 -y=1364, x=501..511 -x=454, y=1848..1872 -x=607, y=821..835 -x=504, y=218..221 -y=1402, x=626..640 -x=468, y=244..254 -x=554, y=1735..1744 -y=540, x=452..538 -x=472, y=493..496 -x=434, y=1757..1760 -x=502, y=97..111 -x=630, y=1250..1254 -y=1479, x=616..618 -x=549, y=788..806 -x=522, y=198..217 -x=577, y=1539..1552 -x=639, y=206..221 -x=591, y=697..707 -x=514, y=1554..1581 -x=647, y=1325..1330 -x=597, y=192..215 -x=461, y=1058..1077 -y=1528, x=493..501 -x=503, y=191..203 -y=1348, x=431..435 -y=1898, x=477..504 -x=487, y=79..91 -y=1074, x=509..519 -x=601, y=1361..1373 -x=579, y=499..504 -x=640, y=243..265 -y=1922, x=435..438 -y=1267, x=429..448 -x=650, y=156..158 -x=449, y=1439..1453 -x=545, y=417..419 -y=521, x=492..504 -x=517, y=895..908 -y=315, x=492..510 -x=644, y=1280..1287 -y=666, x=512..516 -y=395, x=490..494 -x=433, y=1434..1455 -x=510, y=1595..1617 -x=588, y=763..765 -x=631, y=1550..1552 -x=612, y=1102..1126 -y=1635, x=542..561 -x=526, y=787..798 -x=580, y=1497..1511 -x=603, y=1709..1711 -x=471, y=947..963 -y=730, x=558..564 -x=496, y=168..180 -x=435, y=1331..1348 -y=983, x=489..501 -y=257, x=597..613 -x=617, y=1343..1352 -x=598, y=498..504 -x=580, y=78..98 -y=104, x=441..451 -x=500, y=279..292 -x=626, y=1419..1429 -x=613, y=254..257 -x=610, y=1552..1553 -y=1418, x=470..472 -x=470, y=1038..1041 -y=1375, x=652..658 -y=230, x=457..467 -x=547, y=1370..1395 -x=597, y=1324..1349 -x=504, y=235..246 -x=499, y=728..739 -y=1910, x=602..627 -y=1830, x=456..462 -x=487, y=445..459 -x=525, y=590..610 -y=238, x=651..654 -x=587, y=367..370 -y=1336, x=554..575 -y=462, x=566..581 -x=452, y=1167..1194 -y=798, x=626..643 -x=507, y=507..518 -x=554, y=1523..1525 -x=536, y=1766..1778 -x=539, y=1465..1469 -x=465, y=1329..1335 -x=516, y=1697..1722 -y=970, x=644..648 -y=739, x=483..499 -x=625, y=1584..1590 -x=631, y=1765..1774 -x=598, y=1709..1711 -y=1330, x=645..647 -y=914, x=427..455 -y=1177, x=443..445 -x=618, y=1142..1162 -x=434, y=588..598 -y=560, x=450..466 -x=621, y=921..938 -y=481, x=478..499 -x=620, y=1857..1860 -x=577, y=843..845 -x=486, y=1647..1649 -x=589, y=534..537 -x=576, y=216..223 -y=606, x=476..480 -x=500, y=1831..1845 -x=450, y=644..650 -x=490, y=1401..1416 -x=581, y=63..72 -x=547, y=543..563 -x=605, y=1386..1393 -y=1249, x=575..599 -x=518, y=632..646 -y=563, x=581..585 -y=1805, x=460..478 -x=551, y=125..131 -x=483, y=366..376 -y=1013, x=645..650 -y=1560, x=641..649 -x=664, y=1267..1295 -y=462, x=543..560 -y=221, x=502..504 -x=604, y=101..107 -y=1263, x=602..604 -x=624, y=621..626 -y=996, x=630..632 -y=1659, x=567..571 -y=851, x=606..608 -y=928, x=483..486 -y=840, x=523..543 -y=1649, x=463..486 -x=592, y=1358..1370 -y=1615, x=457..469 -y=1295, x=546..550 -x=581, y=855..868 -y=698, x=462..480 -x=594, y=864..867 -x=593, y=216..223 -x=552, y=723..727 -y=707, x=591..593 -y=1142, x=565..582 -x=496, y=127..135 -x=637, y=1197..1223 -x=608, y=839..851 -x=641, y=1703..1715 -y=745, x=506..518 -x=536, y=1205..1207 -y=1233, x=502..514 -x=447, y=1732..1758 -x=627, y=529..549 -y=1008, x=562..564 -y=1784, x=593..598 -x=496, y=407..421 -x=583, y=163..170 -x=595, y=1193..1204 -x=519, y=1049..1074 -x=509, y=971..992 -y=785, x=631..634 -x=495, y=1117..1142 -y=1563, x=641..649 -x=540, y=591..603 -x=572, y=838..849 -y=1898, x=508..526 -y=568, x=642..644 -y=1571, x=576..585 -y=1001, x=453..455 -x=448, y=1702..1704 -x=553, y=141..164 -y=559, x=647..652 -y=297, x=544..556 -x=451, y=925..936 -x=626, y=1400..1402 -x=467, y=1058..1074 -x=502, y=1230..1233 -y=376, x=454..476 -x=487, y=1354..1365 -x=537, y=1554..1581 -x=495, y=1269..1287 -y=1212, x=656..665 -x=519, y=1082..1106 -x=628, y=728..747 -x=552, y=1652..1662 -x=510, y=98..111 -x=640, y=1730..1732 -y=1035, x=539..558 -x=616, y=1479..1484 -x=472, y=1460..1479 -x=626, y=771..798 -x=520, y=1395..1401 -y=163, x=533..540 -y=931, x=574..578 -y=1455, x=430..433 -x=552, y=674..689 -x=579, y=1832..1837 -x=467, y=208..230 -x=650, y=1587..1603 -x=464, y=969..973 -x=565, y=1129..1142 -x=660, y=294..299 -y=180, x=496..513 -x=622, y=1566..1572 -y=1556, x=491..503 -y=516, x=612..615 -y=1006, x=445..461 -x=574, y=404..411 -x=485, y=787..789 -x=548, y=1086..1097 -x=538, y=7..25 -x=504, y=971..992 -x=517, y=9..17 -x=615, y=803..805 -x=570, y=998..1012 -x=519, y=767..776 -x=571, y=708..712 -y=1295, x=637..655 -y=215, x=597..622 -x=569, y=737..760 -y=1779, x=626..642 -x=549, y=81..87 -y=135, x=496..514 -x=644, y=848..865 -x=543, y=417..419 -x=551, y=591..603 -y=939, x=585..591 -x=498, y=947..963 -x=568, y=1214..1228 -x=588, y=1477..1489 -x=586, y=1196..1207 -x=514, y=749..761 -x=455, y=548..557 -y=1162, x=576..578 -x=481, y=1326..1345 -y=1069, x=575..577 -x=573, y=1777..1803 -x=483, y=1490..1502 -x=595, y=410..413 -x=636, y=1463..1485 -y=1001, x=641..655 -x=486, y=1189..1206 -x=488, y=190..203 -x=493, y=1883..1887 -x=560, y=1539..1552 -x=455, y=992..1001 -x=564, y=482..487 -y=1292, x=593..612 -y=587, x=559..574 -x=436, y=37..59 -x=549, y=872..885 -x=456, y=177..182 -y=991, x=552..572 -y=812, x=513..519 -x=469, y=1338..1346 -x=500, y=1570..1571 -x=518, y=721..745 -y=1821, x=491..493 -x=429, y=1239..1267 -x=430, y=749..766 -x=470, y=471..481 -x=532, y=491..500 -x=612, y=1796..1805 -x=478, y=1103..1130 -x=478, y=471..481 -x=647, y=931..939 -y=983, x=601..622 -x=628, y=1565..1572 -x=631, y=1197..1223 -y=1489, x=570..588 -x=460, y=926..934 -x=542, y=112..113 -x=444, y=482..503 -x=557, y=789..806 -x=446, y=12..30 -x=635, y=1557..1567 -x=660, y=1197..1200 -x=565, y=977..987 -y=549, x=627..637 -x=654, y=213..238 -y=504, x=579..598 -x=565, y=1627..1640 -y=885, x=531..549 -x=474, y=683..695 -x=531, y=380..398 -x=445, y=1175..1177 -y=1455, x=548..550 -y=1235, x=536..556 -x=627, y=1249..1254 -x=595, y=1358..1370 -x=459, y=598..600 -x=496, y=910..937 -x=580, y=1108..1120 -y=1840, x=509..515 -x=499, y=324..337 -x=575, y=1893..1914 -x=593, y=1892..1914 -x=599, y=1239..1249 -x=520, y=1137..1145 -y=343, x=598..617 -x=575, y=1238..1249 -y=947, x=553..555 -x=568, y=482..487 -x=556, y=1224..1235 -y=241, x=495..497 -x=454, y=124..138 -x=550, y=1438..1455 -x=645, y=1004..1013 -y=1722, x=514..516 -x=486, y=915..928 -y=768, x=547..561 -x=499, y=1789..1792 -x=531, y=871..885 -y=1805, x=606..612 -x=437, y=1757..1760 -y=1158, x=599..608 -x=480, y=713..715 -x=541, y=1396..1401 -x=441, y=89..104 -y=493, x=456..461 -x=648, y=359..381 -x=552, y=1043..1053 -x=634, y=1318..1335 -y=1345, x=476..481 -x=620, y=1895..1897 -y=223, x=437..442 -x=432, y=271..274 -x=429, y=1463..1486 -x=579, y=884..897 -x=577, y=1585..1599 -y=141, x=610..633 -y=1075, x=567..583 -y=1270, x=518..528 -x=572, y=980..991 -y=35, x=551..572 -x=656, y=1205..1212 -y=1914, x=575..593 -x=441, y=1516..1531 -y=1801, x=524..550 -x=439, y=614..616 -y=604, x=566..572 -y=222, x=563..566 -x=531, y=674..689 -y=1281, x=559..584 -x=590, y=1222..1224 -x=633, y=120..141 -x=451, y=1365..1377 -x=595, y=534..537 -y=219, x=625..635 -y=1413, x=588..608 -x=470, y=445..459 -y=615, x=462..486 -y=1659, x=610..632 -x=585, y=950..974 -x=603, y=1583..1596 -y=747, x=628..655 -y=1519, x=472..490 -x=643, y=771..798 -x=578, y=914..931 -y=1678, x=461..477 -x=498, y=1531..1542 -y=101, x=627..641 -x=667, y=1918..1931 -x=455, y=587..592 -x=632, y=979..996 -y=1331, x=603..625 -x=519, y=792..794 -y=1223, x=631..637 -x=560, y=1458..1470 -y=1511, x=556..580 -x=610, y=998..1020 -x=441, y=532..537 -y=608, x=628..638 -y=158, x=650..653 -x=568, y=253..263 -y=608, x=554..578 -x=488, y=552..564 -y=1778, x=520..536 -x=430, y=610..620 -x=493, y=1532..1542 -x=497, y=1743..1749 -y=223, x=576..593 -x=500, y=878..881 -x=512, y=427..440 -y=822, x=549..557 -x=551, y=181..188 -y=1640, x=565..618 -x=432, y=1788..1792 -y=437, x=623..626 -x=608, y=1403..1413 -y=1786, x=593..598 -y=1289, x=600..602 -x=477, y=1590..1599 -x=467, y=628..637 -x=513, y=627..628 -y=164, x=553..565 -x=658, y=1400..1420 -x=438, y=645..650 -x=554, y=1422..1437 -x=514, y=1696..1722 -x=492, y=553..564 -x=632, y=1136..1146 -x=648, y=1679..1691 -x=472, y=1412..1418 -y=421, x=479..496 -x=444, y=1745..1773 -x=454, y=645..657 -x=479, y=1000..1015 -x=493, y=1819..1821 -x=490, y=382..395 -x=472, y=683..695 -x=543, y=1609..1622 -x=616, y=1895..1897 -y=881, x=500..515 -y=557, x=455..459 -x=657, y=1656..1671 -y=356, x=468..490 -x=584, y=1028..1043 -y=537, x=589..595 -x=580, y=702..715 -y=657, x=454..480 -x=642, y=810..821 -x=572, y=602..604 -x=474, y=1038..1041 -x=655, y=985..1001 -x=563, y=890..902 -y=107, x=604..614 -x=571, y=1654..1659 -x=609, y=947..963 -x=526, y=488..495 -x=612, y=511..516 -x=466, y=925..934 -x=575, y=542..563 -x=456, y=1224..1236 -y=1927, x=559..610 -y=1124, x=428..447 -x=641, y=899..902 -x=490, y=824..831 -x=600, y=1302..1315 -x=616, y=172..182 -y=527, x=565..567 -y=1596, x=581..603 -y=21, x=491..493 -x=566, y=443..462 -y=1792, x=493..499 -x=607, y=493..521 -y=381, x=648..660 -x=545, y=1519..1530 -y=67, x=535..543 -x=506, y=37..40 -x=529, y=626..628 -y=1043, x=580..584 -x=464, y=784..794 -x=500, y=54..68 -y=934, x=460..466 -y=477, x=458..464 -x=550, y=1789..1801 -x=460, y=245..254 -y=274, x=432..445 -y=204, x=604..616 -x=591, y=919..939 -x=438, y=1915..1922 -x=592, y=1563..1574 -y=1623, x=592..602 -x=445, y=989..1006 -y=1150, x=446..462 -x=567, y=501..527 -x=474, y=125..138 -x=501, y=11..25 -y=1396, x=590..612 -x=652, y=1463..1485 -x=478, y=102..113 -x=479, y=408..421 -x=578, y=1151..1162 -x=461, y=122..135 -x=640, y=111..114 -x=461, y=1671..1678 -x=489, y=1654..1677 -y=135, x=461..466 -x=536, y=1225..1235 -x=579, y=843..845 -y=170, x=583..598 -x=524, y=1832..1845 -x=501, y=165..176 -x=457, y=1059..1077 -x=466, y=122..135 -x=652, y=1442..1456 -x=565, y=500..527 -y=1792, x=530..535 -y=1295, x=659..664 -x=427, y=386..410 -y=31, x=648..651 -x=509, y=597..601 -x=585, y=1324..1349 -x=623, y=1668..1679 -x=435, y=1849..1872 -x=445, y=147..158 -y=1544, x=520..533 -x=592, y=1243..1246 -x=556, y=1585..1599 -x=624, y=947..963 -y=781, x=631..634 -x=626, y=1654..1656 -x=527, y=973..996 -x=442, y=1340..1350 -y=1662, x=520..530 -x=602, y=1260..1263 -x=606, y=1796..1805 -x=633, y=890..905 -x=494, y=35..44 -x=456, y=1788..1792 -x=498, y=255..268 -y=1656, x=624..626 -y=1162, x=593..618 -x=510, y=1154..1156 -x=633, y=1258..1268 -x=547, y=765..768 -y=217, x=522..547 -x=444, y=926..936 -x=581, y=1582..1596 -x=593, y=1193..1204 -x=471, y=1799..1801 -x=483, y=1589..1599 -y=849, x=572..590 -y=1837, x=456..462 -x=496, y=666..677 -x=458, y=753..755 -x=468, y=345..356 -x=511, y=214..224 -x=444, y=853..867 -y=1469, x=512..539 -x=523, y=589..610 -y=761, x=475..514 -x=439, y=326..335 -x=597, y=255..257 -x=579, y=1212..1222 -x=426, y=954..975 -x=489, y=1293..1303 -x=615, y=1551..1553 -x=582, y=1541..1543 -x=650, y=1656..1671 -x=575, y=1324..1336 -x=568, y=1519..1530 -y=147, x=436..440 -x=638, y=189..191 -x=627, y=77..101 -x=518, y=512..515 -x=515, y=1400..1416 -y=684, x=657..661 -y=1654, x=567..571 -y=1856, x=471..473 -y=1875, x=631..644 -x=494, y=382..395 -x=524, y=853..857 -x=645, y=1478..1480 -x=552, y=447..457 -y=612, x=622..649 -x=645, y=169..193 -x=462, y=1354..1365 -y=1555, x=589..606 -x=428, y=1746..1773 -x=590, y=1383..1396 -x=647, y=552..559 -y=503, x=444..446 -y=25, x=523..538 -y=1672, x=495..498 -y=794, x=511..519 -x=663, y=1557..1567 -y=1012, x=425..434 -x=495, y=232..241 -x=478, y=713..715 -x=484, y=861..887 -y=1464, x=568..571 -x=655, y=1319..1335 -y=1373, x=584..601 -y=576, x=493..532 -x=574, y=1127..1139 -y=1456, x=652..665 -x=455, y=888..914 -y=1859, x=471..473 -x=649, y=461..466 -x=579, y=1174..1181 -y=1425, x=445..452 -y=1194, x=437..452 -x=556, y=124..131 -y=496, x=472..476 -y=718, x=467..489 -x=652, y=1363..1375 -x=627, y=1884..1910 -y=794, x=464..491 -y=1437, x=554..561 -x=550, y=999..1012 -x=578, y=598..608 -x=446, y=481..503 -x=581, y=558..563 -x=481, y=384..398 -x=559, y=1256..1281 -y=937, x=473..496 -x=585, y=1568..1571 -x=465, y=758..770 -y=867, x=594..610 -y=805, x=599..615 -y=1395, x=547..575 -x=511, y=792..794 -y=675, x=568..587 -y=1207, x=512..536 -y=845, x=577..579 -x=470, y=860..887 -x=481, y=1675..1680 -x=642, y=553..568 -y=974, x=585..599 -x=479, y=55..68 -x=583, y=768..770 -x=518, y=387..415 -x=443, y=1020..1047 -x=480, y=686..698 -x=616, y=620..638 -x=592, y=1602..1623 -x=612, y=1300..1312 -x=550, y=1273..1295 -y=461, x=506..525 -y=316, x=447..475 -x=638, y=1730..1732 -x=634, y=781..785 -x=521, y=1496..1518 -x=563, y=977..987 -y=1496, x=440..465 -x=510, y=266..290 -x=519, y=812..814 -x=497, y=1595..1618 -x=438, y=387..410 -x=448, y=436..446 -x=658, y=224..247 -x=455, y=1021..1047 -y=459, x=470..487 -x=479, y=453..456 -x=443, y=833..840 -x=528, y=1614..1619 -x=448, y=1240..1267 -x=542, y=1230..1232 -x=632, y=354..377 -x=511, y=1743..1749 -y=1027, x=513..527 -y=963, x=471..498 -x=464, y=468..477 -y=939, x=647..664 -x=433, y=1510..1535 -x=511, y=1346..1364 -x=553, y=1886..1912 -x=602, y=441..443 -x=551, y=26..35 -y=376, x=483..501 -y=1698, x=588..602 -x=640, y=1400..1402 -x=536, y=414..424 -x=506, y=722..745 -x=502, y=1809..1825 -y=1691, x=648..654 -x=449, y=395..409 -x=643, y=1478..1480 -x=600, y=1418..1429 -x=502, y=37..40 -y=908, x=517..538 -y=1074, x=467..474 -y=1662, x=552..578 -x=514, y=1596..1617 -y=441, x=651..663 -x=445, y=1411..1425 -y=894, x=552..556 -y=1058, x=613..628 -x=645, y=1325..1330 -y=1568, x=576..585 -y=370, x=587..613 -x=515, y=878..881 -x=442, y=203..223 -x=435, y=1914..1922 -y=1420, x=658..664 -x=530, y=1792..1795 -y=443, x=602..610 -x=598, y=1784..1786 -x=607, y=625..633 -x=537, y=1653..1665 -x=524, y=900..902 -x=561, y=1084..1093 -x=468, y=1175..1183 -y=766, x=430..436 -x=645, y=1891..1908 -x=663, y=416..441 -x=425, y=992..1012 -x=457, y=1608..1615 -y=1349, x=585..597 -y=1760, x=434..437 -y=1200, x=656..660 -x=513, y=1013..1027 -y=688, x=610..614 -x=523, y=828..840 -y=59, x=436..459 -y=715, x=561..580 -x=570, y=1127..1139 -x=585, y=998..1020 -x=501, y=385..398 -x=590, y=1243..1246 -x=536, y=1747..1758 -y=835, x=607..626 -y=424, x=536..552 -x=622, y=980..983 -x=604, y=1260..1263 -x=648, y=343..352 -x=645, y=435..442 -x=536, y=1640..1648 -y=770, x=453..465 -x=552, y=894..898 -x=606, y=839..851 -y=1736, x=631..651 -x=564, y=29..31 -y=1434, x=469..490 -x=521, y=242..259 -y=114, x=638..640 -y=765, x=588..596 -x=577, y=647..660 -x=606, y=1552..1555 -x=653, y=1505..1509 -y=1617, x=510..514 -y=499, x=467..487 -y=915, x=607..620 -y=1908, x=637..645 -x=463, y=1646..1649 -x=483, y=1674..1680 -y=1677, x=489..504 -y=373, x=570..572 -x=624, y=1654..1656 -x=453, y=1897..1912 -x=585, y=919..939 -x=626, y=1177..1205 -x=529, y=61..73 -x=531, y=1125..1142 -x=450, y=550..560 -y=1012, x=550..570 -x=583, y=906..910 -x=592, y=1869..1875 -y=865, x=630..644 -x=490, y=1428..1434 -x=582, y=1773..1789 -x=655, y=1258..1268 -x=608, y=1223..1224 -x=558, y=1023..1035 -x=486, y=601..615 -x=635, y=201..219 -x=659, y=1267..1295 -x=576, y=1568..1571 -y=1704, x=448..453 -x=503, y=434..436 -y=72, x=572..581 -x=657, y=663..684 -x=665, y=1443..1456 -x=453, y=1702..1704 -x=580, y=1459..1470 -x=588, y=1404..1413 -x=524, y=1854..1867 -y=905, x=633..651 -x=567, y=1044..1053 -x=499, y=701..713 -y=601, x=425..442 -y=1883, x=493..496 -x=492, y=276..289 -y=193, x=645..664 -y=442, x=634..645 -x=610, y=121..141 -x=570, y=1478..1489 -x=427, y=1133..1146 -x=652, y=257..270 -y=1126, x=612..634 -x=568, y=667..675 -x=559, y=403..411 -y=224, x=490..511 -y=537, x=441..448 -x=642, y=343..352 -y=518, x=507..529 -x=561, y=765..768 -x=586, y=862..887 -x=614, y=102..107 -x=451, y=1083..1096 -x=533, y=144..163 -x=522, y=488..495 -x=557, y=322..345 -y=1775, x=525..529 -x=585, y=906..910 -x=644, y=899..902 -y=610, x=523..525 -x=476, y=606..608 -y=1041, x=470..474 -y=603, x=540..551 -y=1574, x=569..592 -x=594, y=476..490 -y=1254, x=627..630 -x=610, y=1340..1349 -x=510, y=301..315 -x=535, y=40..67 -x=485, y=1023..1045 -x=644, y=948..970 -x=459, y=548..557 -y=1409, x=595..599 -y=1665, x=515..537 -x=653, y=156..158 -y=247, x=658..662 -x=483, y=728..739 -y=861, x=514..531 -y=1801, x=469..471 -y=17, x=509..517 -y=818, x=494..534 -x=610, y=1257..1268 -y=1489, x=608..624 -x=649, y=1560..1563 -y=950, x=535..561 -y=713, x=499..511 -y=301, x=570..583 -x=463, y=816..842 -x=573, y=961..972 -y=335, x=439..453 -x=496, y=1883..1887 -x=556, y=1523..1525 -x=515, y=1904..1926 -x=656, y=1197..1200 -x=456, y=103..113 -x=617, y=1583..1590 -y=1543, x=582..603 -x=570, y=274..301 -x=460, y=1696..1711 -y=1758, x=536..640 -x=437, y=435..446 -x=465, y=1479..1496 -y=1020, x=585..610 -x=641, y=77..101 -y=929, x=527..547 -x=618, y=1627..1640 -y=601, x=496..509 -x=651, y=1217..1243 -x=494, y=276..289 -x=656, y=1021..1029 -x=616, y=266..282 -x=619, y=1324..1326 -y=616, x=439..446 -x=514, y=770..779 -x=616, y=1324..1326 -y=899, x=641..644 -y=1103, x=591..601 -y=1710, x=659..663 -x=542, y=1853..1867 -x=488, y=234..246 -y=1352, x=601..617 -x=523, y=6..25 -x=630, y=1231..1233 -x=444, y=1339..1350 -y=975, x=426..434 -x=438, y=1412..1430 -x=546, y=1272..1295 -y=1530, x=545..568 -x=590, y=266..282 -y=868, x=656..662 -x=603, y=1320..1331 -x=457, y=1241..1254 -x=498, y=1662..1672 -x=573, y=856..868 -x=634, y=494..521 -x=552, y=979..991 -x=532, y=573..576 -x=428, y=1412..1430 -y=158, x=445..496 -x=644, y=1347..1375 -y=182, x=616..639 -x=491, y=9..21 -x=532, y=1309..1318 -x=442, y=1896..1912 -x=520, y=1765..1778 -x=497, y=1296..1298 -y=1233, x=620..630 -y=1296, x=494..497 -y=1447, x=580..641 -x=659, y=1709..1710 -x=615, y=1507..1533 -x=564, y=726..730 -x=462, y=685..698 -x=640, y=1075..1093 -x=632, y=1647..1659 -x=576, y=476..490 -x=482, y=327..334 -x=559, y=569..587 -y=345, x=557..580 -x=656, y=851..868 -x=456, y=1830..1837 -x=607, y=1773..1789 -y=755, x=442..458 -y=101, x=530..550 -x=561, y=939..950 -y=1744, x=554..575 -y=1567, x=635..663 -x=556, y=894..898 -y=1525, x=554..556 -x=655, y=1076..1093 -y=1618, x=490..497 -x=442, y=571..582 -x=649, y=1694..1703 -y=1453, x=441..449 -y=1575, x=527..530 -y=1843, x=445..471 -x=512, y=1811..1823 -y=650, x=438..450 -x=434, y=954..975 -x=662, y=223..247 -x=472, y=1511..1519 -x=568, y=556..559 -x=453, y=992..1001 -y=398, x=531..542 -x=619, y=1550..1552 -x=561, y=1421..1437 -y=337, x=477..499 -y=44, x=494..514 -x=457, y=208..230 -x=511, y=701..713 -x=620, y=1232..1233 -y=1146, x=632..646 -y=1872, x=435..454 -x=451, y=834..840 -x=565, y=142..164 -y=419, x=543..545 -y=1875, x=569..592 -y=1552, x=619..631 -x=490, y=1595..1618 -x=578, y=1777..1803 -x=543, y=434..462 -y=113, x=515..542 -y=1350, x=442..444 -y=963, x=609..624 -x=587, y=398..419 -y=1572, x=527..530 -x=501, y=966..983 -x=563, y=220..222 -x=566, y=1177..1187 -x=429, y=289..294 -y=972, x=554..573 -x=554, y=1323..1336 -x=584, y=1360..1373 -y=419, x=587..605 -x=565, y=1610..1622 -x=486, y=1810..1825 -y=1571, x=483..500 -y=30, x=446..463 -x=512, y=656..666 -y=1599, x=477..483 -x=530, y=1657..1662 -y=138, x=454..474 -y=1773, x=428..444 -y=1619, x=528..536 -x=486, y=1154..1156 -x=550, y=92..101 -y=1581, x=514..537 -y=440, x=488..512 -x=634, y=809..821 -x=599, y=1401..1409 -y=1222, x=576..579 -x=552, y=413..424 -y=265, x=619..640 -x=599, y=951..974 -x=504, y=496..521 -x=532, y=985..1012 -x=508, y=1189..1200 -y=188, x=525..551 -y=727, x=542..552 -x=631, y=1873..1875 -y=638, x=599..616 -x=556, y=1498..1511 -y=1292, x=620..625 -x=513, y=167..180 -y=1912, x=442..453 -x=531, y=82..87 -x=589, y=651..652 -x=637, y=1892..1908 -x=560, y=435..462 -y=411, x=559..574 -y=416, x=487..490 -y=1542, x=493..498 -x=602, y=1195..1207 -x=573, y=708..712 -x=575, y=1370..1395 -y=1480, x=643..645 -x=489, y=664..673 -x=428, y=1116..1124 -x=651, y=1152..1170 -x=625, y=1319..1331 -y=45, x=657..665 -x=453, y=325..335 -y=760, x=569..583 -x=628, y=1047..1058 -x=530, y=769..779 -y=842, x=455..463 -x=596, y=1669..1679 -x=571, y=1456..1464 -x=448, y=1667..1673 -x=648, y=29..31 -y=868, x=573..581 -y=1207, x=586..602 -y=1758, x=447..475 -x=444, y=1516..1531 -y=1303, x=489..505 -x=567, y=1404..1411 -y=689, x=531..552 -y=182, x=439..456 -x=570, y=861..864 -y=1012, x=532..541 -x=608, y=920..938 -y=563, x=547..575 -x=525, y=450..461 -y=1232, x=542..546 -x=539, y=1023..1035 -x=480, y=1689..1695 -y=191, x=633..638 -x=548, y=1437..1455 -y=1243, x=590..592 -x=431, y=1330..1348 -y=1053, x=552..567 -x=594, y=1693..1695 -x=479, y=787..789 -x=567, y=1654..1659 -y=902, x=524..528 -y=98, x=577..580 -x=554, y=253..263 -x=609, y=1856..1860 -y=203, x=488..503 -x=527, y=918..929 -x=607, y=901..915 -x=511, y=1905..1926 -y=436, x=498..503 -x=446, y=1224..1236 -x=580, y=131..142 -x=663, y=1708..1710 -x=512, y=1138..1145 -x=529, y=508..518 -y=298, x=605..613 -y=1867, x=524..542 diff --git a/inputs/18.txt b/inputs/18.txt deleted file mode 100644 index 9e354bc..0000000 --- a/inputs/18.txt +++ /dev/null @@ -1,50 +0,0 @@ -#.#.|..#|.||.#...|...#.|.......##|##..#..||.||.... -#.......#.....|##..#|..#.##..##|.|.#..|.#...|....# -.|..........#.|..|.....|..|#.#...##|#|.|#|##|...#| -#|....#|##..#|.|||.#.|.#...#.##.......#||..#...... -.#|....|.|..#..||...#||...|......###.#.#...##..#.. -..||#...|.#.|||||.....|.......##...#.#....|..#.... -###|..##...|.#|..|.#|#...|.#.|....||.|...#|.|#...# -|.#.|#.#.|###.|..#..|....#....#|.#..||.||.....#..# -.#..|.#..#|##..|.....|.#.|.#.#|.......#..|...#..|. -...|||##...|..#.#|#|..#.#..#|.|.|#..##........##.# -|#.#..||....|...|#..|....|#|...#.#.#.##|.|.#...... -|..|...|.|#.........|..#|...|.#.|##....|..|..|#.|| -|....#..||..|...#|......|||||.|#....||....|.#|.#.. -......#||.#.#.||..|.......|....||#||#.|.#.|.##||#| -.##.#....##.#.|....|...###..#...|.#....|.#...|..## -.##..#|#.#.##.||..|.#|..|.|.##|....|...#||||.|..#. -|.|..|#|....|.#.#..||.....|.....##....||....|.||.. -#|.|.##...||...........|..#.||.|.#..##..|#||...... -||..||.||..#.##.#...|.#|.....|###....#.....#...|.. -|.#.##|.|...||#.#...||....|.|#..|.#....##........# -..|....|.#.##|....|||#....#.|.|.##....|##|.|#..... -.|.....#|.#....|###|..#|||........||#.#..||..|..#. -#..#...|#|.#...|.||##..#.|..|.|.#.|..#.#.|.....#.# -|#||.##..#..|||.......#|..#...#..##....#||.#|..... -.|.#.....|..#...#...##...|.#...|.#|.......|..#...| -.||.......|..##..##.#|.|..|...#.|.#..#.|....#.|#.| -....#..#|##|....#..|.#..|||..#....#.#|...||.#..|.. -#......#|.##..|..|....|.##.#|...#..#.|..|..|..|##. -...|||.#|#.#.|..|||.#.#.#...||...||..##..#.....|.. -..#..|.|#.#..|..##|..#....#.|..|.......|||#.|.|.|# -.##|..#...#..||..|.........|#.|#.....|...##.|..||# -#.....||....#.....|#.||......|.#|.#|....||.||.#.#. -#..|#..|......|.#.#.#.##..||.|.#.|......#|#||#.|.# -..||..||.....|.#..###.#.|#..|.......|....#||.|..#. -.#...###|#|#|||...|...#.#|.#|..|...#..#.|#|.#...|. -...|..#||....##|..#...#....#||#.......|....#.|###. -..#....|#..#|.....|.#|..#..|#....||......|.|.#.|#. -..|##....#.|..#..#.|.#..||....#...|.....|..#.....| -.......#||..#||...|.#.|#...#....|.|.||.#.|...#.##| -.|.|||.....#............#..#..|..|..#.|.#..|...... -|...|.|####..#.....#..#..|#|#..#..|......|...|.#|# -|.|...#..#..|....|.....#|#||..#.||..|#|..|||.|.|.| -..#...|#.......||.#.#.#....#.........##|.|..#.##|| -#|#..|..|#|.##.|.|#......||......|.....#||###.|### -....#..#.|..|...#|#|..|#..|.#|....||#|.||.|#|..... -|..#.|..#.|#......#...#|.#|#|.....|#...###....##.. -...##..#..|..#..#.#...|.#..#|...|#.##|.#|..##..#.# -|.|.|...#.|..##.|.|....|..#..|...|..##|...|..|.... -.#|..|..|..|.|..#...|.||#...#......||.#.#......... -.#.##..|............|.||.....#||..|##.|..|.....#.| diff --git a/inputs/19.txt b/inputs/19.txt deleted file mode 100644 index 1207b7b..0000000 --- a/inputs/19.txt +++ /dev/null @@ -1,37 +0,0 @@ -#ip 4 -addi 4 16 4 -seti 1 7 2 -seti 1 1 5 -mulr 2 5 3 -eqrr 3 1 3 -addr 3 4 4 -addi 4 1 4 -addr 2 0 0 -addi 5 1 5 -gtrr 5 1 3 -addr 4 3 4 -seti 2 7 4 -addi 2 1 2 -gtrr 2 1 3 -addr 3 4 4 -seti 1 3 4 -mulr 4 4 4 -addi 1 2 1 -mulr 1 1 1 -mulr 4 1 1 -muli 1 11 1 -addi 3 3 3 -mulr 3 4 3 -addi 3 9 3 -addr 1 3 1 -addr 4 0 4 -seti 0 1 4 -setr 4 9 3 -mulr 3 4 3 -addr 4 3 3 -mulr 4 3 3 -muli 3 14 3 -mulr 3 4 3 -addr 1 3 1 -seti 0 6 0 -seti 0 7 4 diff --git a/inputs/2.txt b/inputs/2.txt deleted file mode 100644 index 1edb865..0000000 --- a/inputs/2.txt +++ /dev/null @@ -1,250 +0,0 @@ -krdmtuqjmwfoevnadixyclzspv -yrdmtuqjiwfoevnabfxyclzsph -kqjvtuqjgwfoevnabixyclzsph -krdmtuqjgwjoevnaolxyclzsph -krdmtnqjgwfoevnabiiyxlzsph -lrymtuqjgwhoevnabixyclzsph -krdmguqjgwfoevnabixkclzsah -krdmtuqjgwfoevnibinyclzdph -krdmtucjgwfoevnabhxyclzspv -krdmtuqjgwfoevtabixyulzsuh -krdmtuqqgwfoevnabixdblzsph -krdmtuqjawfsevnabiyyclzsph -krdmtuqjgwfoevnabzxccldsph -krdmtcqegwfhevnabixyclzsph -krdmtuqjgwforvnaxixycgzsph -krdmtuqjgwfoqvnaxixyclzskh -krdmtutjgwfoevyajixyclzsph -krdmtuqmgwfoevnabixycxzspc -krdptuqjgwhoevkabixyclzsph -krdttuqjhwfoevnabixyclzspa -krdmtuqjgwfoevnabibyhnzsph -krdmtuqjywfoevntbidyclzsph -krdmtojdgwfoevnabixyclzsph -krdmtuqjgpfuevnauixyclzsph -krdmtoqjgwfrevjabixyclzsph -krdmtuqjgwfoyvndbixyclzyph -krdmtxqjgwfomvnayixyclzsph -crdmtuqjgwfoevnabixyoxzsph -krdmtpqjgwfdevnabixycqzsph -krdmtuqjgwfoevuabfxsclzsph -krdmtuqjgwfoevnybixycdzskh -krdmtusjgwfoevnabixxclzdph -krdmtuqjgwfoevnaboxyglzjph -zrdmtuqjgrfoevnalixyclzsph -krdmtuqjclfoevnabixyclzsih -kqdmtlqjgwfoevnabtxyclzsph -krdmtuqggwpoevnabixyclzlph -krdmtuqjgwfobwnrbixyclzsph -krdmtuqjgwfoevwabkxycnzsph -kldmtuqjgwfogvyabixyclzsph -krdmtuqvgwfoevnabixtcrzsph -krdmtuqjgwroevnabixyrlzspw -krdmtuqjgjfoevnabixyelzrph -krdmtuqjgffoevnaaixyclzspa -krdmtuqjgwfoevxabifywlzsph -krdmtuqjgwfoevlabixycrzsrh -krdmtuqjgwfpevnabixocqzsph -krdmtuqjgwfoevdabixycnhsph -krdmtmqjgwfoevnajixyclvsph -krdmtuqjjvfoevnabgxyclzsph -krzmtuqjgwfoevnabioyckzsph -kodmtwqjgwfoevnabieyclzsph -ehdmthqjgwfoevnabixyclzsph -krdmtuqjxwioevnabixyclbsph -grdmkutjgwfoevnabixyclzsph -krdutuqjgwfoebnabixaclzsph -krdmtuqjgwfoebnabixyclcjph -krdmteqjgwfoevnlbixycizsph -krdmtegjgwhoevnabixyclzsph -krdmtuqjgwfdrvnabixbclzsph -krdmtuqjgyfoevidbixyclzsph -krdmtubjawfoevnabixyclzuph -krdmtuqjgwfoavjabixyclzssh -krdmtuqjgwfoeonabixyclzsvo -vrdmtuqjgwffevnabixpclzsph -krdmtuqonwfoevnabixycfzsph -krdmtumjgwfpevnubixyclzsph -krdmtutjgwfoevnaciyyclzsph -krdrtuqjgwfoevnwbixyglzsph -krdmtuqjgwfoevbabixyclesdh -krdmtuqcgwfoevnabixyqdzsph -krdmtuqjgwfogvnabrxycezsph -krdmujqkgwfoevnabixyclzsph -krdmtuqjgtooevnabixyclzzph -jrdntuqjgwfoevnabixyclrsph -krdmtuqjgzfoevkebixyclzsph -krdmtuqjgwfosvnaeixyclztph -krdmtuqjgwfoevzabixydlzaph -krdmtuqzgwfoavnabiqyclzsph -krdmtuqvgwfoevnabixycwzspv -krdmvuqjgwteevnabixyclzsph -krdmtujjgwfoevgybixyclzsph -kydmtuqjgwfoeunacixyclzsph -krdmtuqjgifoqvnabicyclzsph -krnltiqjgwfoevnabixyclzsph -krdmtuqjgwfoevnabhxyclzsgi -kfdmtuqjnwfowvnabixyclzsph -kmdmtuljgwfoevnabixycvzsph -krdmtxqjgwaoevvabixyclzsph -kramduqjgwfoevnabixyclzwph -krdutuqjgwfoennabixyclziph -krdmvuqfgwfoevnacixyclzsph -krdmtuqogwfoevnabmvyclzsph -krdmfuqjgwfoyvnabixyclzseh -krdmtuqjgweoelnabixyclzspd -krdmtumjgwfoevnabixyclzypo -krdmtuqjgkfoevhabixyclzsqh -kjdmtuqjgwfoevgabixyclzsah -krdmtuqjgwfoevnlbixyclzsbw -mrdmtxqjgwfoevnabgxyclzsph -krdmtuqpgwfoevnhbixycltsph -krdmtuqjgwfmqvnabixyclzslh -krqmtuqogwfoevnaqixyclzsph -krdmtusjggfoevnabicyclzsph -krcmtuljgwfoevlabixyclzsph -krdmtuojgwfoeknabixyclzsrh -krdmtuqjtwfoevnabiypclzsph -krvmtupjgwfoevnabixycldsph -krdmtuxjgwfoevaabxxyclzsph -krdmtvqlgwfoehnabixyclzsph -wrdmtuqjgwfoevnabixyclzdpy -krdatuqlgwfoevnabixyclzsjh -krdmtuqjgwfoevpabkxyclzsjh -krdmtuqjgwqvsvnabixyclzsph -krdmtwqjgwfoevnobixyclzspm -krdmtuqjgssoevnabixyclgsph -krdmtuqjgwfoevnafixyclzbpp -krdmtuqjowfoevxabiuyclzsph -krdmtuqrgwfoevntbixyclzspu -krdmtucjgwfoevnabixcnlzsph -krddtuojgwfoevnabixyclzzph -krdmtuqjgwuoevnabiqycldsph -kpdmpuqjgwfoevnabixyclzslh -krdmtuqjgwfoewnabixyzxzsph -krdmtuejswfoevhabixyclzsph -krdmtuqggwfoevntbikyclzsph -krdmtuqjgwfoevnabixydlhnph -krdmtcqjglfoevnaxixyclzsph -krumyuqjgwfoevnrbixyclzsph -kgdmmuqjgwooevnabixyclzsph -krdmteqjgwfqevwabixyclzsph -krdmfuqjgwfpevnabixyclzspq -erdmtycjgwfoevnabixyclzsph -krdmcuqjgwfoevnabixjglzsph -krdmtuqjgtfoeunabixiclzsph -krdmtuqjgwfoevmqbixyclzspu -krlmtuqjvwfoevnabikyclzsph -krdotuqjgwfoevnagrxyclzsph -krdmtuqbgwfoefnabixyclasph -kwdmtuqjgwfosjnabixyclzsph -kydmtuqjgwfoevcabixycezsph -crdmtuqjgwloevnabixkclzsph -krimtuqhgwfoevnbbixyclzsph -krdmjuqagwfoevnabicyclzsph -krdmtuqdgzfoevnabixydlzsph -krdmtuqjgwwoevnaqixyclzspf -krdmtuqjgwfoevnabdxyzvzsph -krdmtuqjgwaofvnabixyclzsnh -krdmturjgwfmevnabixyclzspn -krdmvuqjgwboevnabixyolzsph -krdmtuqjgwfomvnabijyclzspx -bedmtuqjgwfoevnabixyslzsph -krdmtenjgwfoevnabixyclzsqh -krdmtuqugwfoevnabixpcdzsph -krdmtuqjgiloevnabrxyclzsph -krdmtupjcwfoevnabixyclwsph -kremtuqjgwfoevnabixyyjzsph -krdmtuqjgwnoovnabixyclzshh -qrdmtuqjgwfoevnabixyciasph -krdituqjgbfoevnagixyclzsph -krdmnoqjgwfoqvnabixyclzsph -krdmtuqegwfoevhkbixyclzsph -krdmkucjgwfoevnabixnclzsph -krdmtuqbnwpoevnabixyclzsph -krdmttqjgwfoevnabixyclbspz -srdmtubjgwfrevnabixyclzsph -krdmruqjzwfoevnabixyclesph -ardmtuqfgwwoevnabixyclzsph -yrumtuqjgwhoevnabixyclzsph -rrdmtuqjgwfoevnabsxycwzsph -krpmtuqjgwfoevdabixyclzzph -krdmuuqjgwfoevnabixyclriph -krdmtuqjgwfobvnabixyvgzsph -krdmbuujgwfoevnabixycczsph -krhmtuwjgwfoeqnabixyclzsph -krdwtuqjgwfoevnkbixyclzzph -krdmtuqjgwkoeqnabixyvlzsph -kadmtuqjgwfoednabcxyclzsph -krdmtyqqgwfoevnabizyclzsph -krdmtuqjgnfoevnabiyycmzsph -krdmtuqjcwfouvnabixyclznph -krdmtuqjjwfcevnqbixyclzsph -krdmtuqfgbfoevgabixyclzsph -kkdmtuqjgwfoevnapixyclzsth -nrdmtuqjgwtoevnakixyclzsph -krdmtuqjglfoevlabixdclzsph -zrdmtuqjgwfoevndbixbclzsph -krdmeuqjgwfoeenabixyclrsph -krdmoaqjzwfoevnabixyclzsph -krsmtuqjgwfoevnwbixyclzsfh -kadmtuqjgwfoqdnabixyclzsph -krsmtuqjgofoevnabixkclzsph -krdmtuqjdwfoevnibixdclzsph -mrdmtuqjgwfouvnabixyclzfph -trdmtlqjgwfoevnabixyclzjph -trdmyuqjgwfozvnabixyclzsph -krdmtiqjgwroevnabixyclzspk -erdmtutjgwftevnabixyclzsph -krdwyuqjgwfoevnaaixyclzsph -krdmthqbgwfoevnabixyclksph -krdmttqjgwfoivnabixyclvsph -krdmtuqjgwfoefnabixyflgsph -khdmtuqjgwfoevnajixyvlzsph -krdmtuqvgwfoevnasixyclzspt -krdmtuqjgkwogvnabixyclzsph -krdmtuqjgwfoevnaboxpglzjph -kadmtuqjgwfoxvnabixyclziph -krdmtuqjfwfoevnabaxycbzsph -krdjtuqjgwfoevnabiryhlzsph -krdvtuqjgpfoevnabcxyclzsph -brdmtuqjgwfoevnafixyqlzsph -krdmtuqjgwfoevnavixxcllsph -krdhtuqjkwfoevfabixyclzsph -krdmtuqjgjfoevnawixyclzsuh -krddtuqjgwfoeqnabiwyclzsph -krhmtuqjgwfnevnabinyclzsph -kedmtuqjgzfmevnabixyclzsph -qrdmtuqjgwfoevntbixyclzxph -krdmtuqsgwfoevnabixvclzrph -scdmtuqjgwfoevnabixtclzsph -krymtuqjgjfolvnabixyclzsph -krdmtuqjgwfkevnablxyclzskh -krymtuqjswfoevnabixyclzvph -krdmtuqjhwfoevnabixycwzspd -krdmtuxjgwfoevnabyxyclzzph -krdmtlqjgwfovvnabilyclzsph -krdmtuqjgwfoevnaaijcclzsph -krdatrqjgwfokvnabixyclzsph -krdmtuqjgwfoevnaxifyclzkph -krddtuqjgwfoevnabixccozsph -krdmtuqngwfoevnabiyycxzsph -krdmtumdgwfoevnqbixyclzsph -krdmtuqjgwfoevnabixyxlmsch -krdmtudzgwfoevnabixtclzsph -krdmtuqjgwfoevnpbixyclhspl -krdmtqqjgwjoevnabexyclzsph -kydmtuqzgwfoevnabixyclwsph -krdmeucjgwqoevnabixyclzsph -krdmtuqjghfoevjabixyclzspp -krdmtuqjgjfwevnabixyclzskh -krdmkuhjgwfoevnabipyclzsph -krdytuqjgwfoevnabibyclztph -krdmtuqjgwfpevnabisyzlzsph -kmdmtgqjgwfsevnabixyclzsph -krdmtuqjgsfoevnabijyclzszh -krdmtuqjgwfoevnabivyclzuuh -krdstuqjgrfoevnabixyclzspu -jrdmtuqjgwfotvnabixyclzspj -krdmrumjgwfoevnabixeclzsph -krpmtusjgwfoevnabioyclzsph diff --git a/inputs/20.txt b/inputs/20.txt deleted file mode 100644 index 620f018..0000000 --- a/inputs/20.txt +++ /dev/null @@ -1 +0,0 @@ -^ESEEEESSWNWSWSEESESENENNNW(SSWENN|)NENWWWWWNWNWWS(SWSEESE(SSWSWNWSSSESWWSSSSEEESWWSESSEENN(WSNE|)NENEEEEESSSEENNNNENEEENNWWS(WWNNNENWW(NENNNNNEEENWNNWWWWWWWSWNNNWNNEES(SENNNWNNWNNNWWNWSWNWNNENNEENNNWSWNNNWWNWWWSWWSEEEE(NWES|)SENESSS(EE|WNWSSSSE(NNESNWSS|)SWWNNNNNWN(E|WWWWNNWSWWSWWWWWNNESEENNEEE(SWWSNEEN|)NWWNWNNWWSESWSE(E|S(WWNNNNWNWWNNENNWNWNNNNWSSWWNENWWWNWSSSWSSENESEEEE(NWWWNWNE(WSESEEWWNWNE|)|SSE(SWSWNNNWSSWSSSWNWSWNNWNNN(NWSWWNENWWNWWNWWNNNESSEEES(W|ENNENNESENNWWNNWWNWNNNWWWSEESSWSSENESESE(N|SSWSWNW(S|NWN(EESEWNWW|)WWNNE(NWWNNE(SEEWWN|)NWWSWWWN(WSWSEEEEESSSE(SSSSWSSWNWSSWNWWWNENEE(SWEN|)ENE(S|NN(ESSNNW|)NWSWNWSWWSW(NNNEN(NNN(WSSSNNNE|)E|ES(SWEN|)EEEN(ESNW|)WW)|SE(SWSSSEEESWSSESSSENNNENEN(WWSWENEE|)EEESSWW(NEWS|)WSWSEENESSEEENNNW(SWSEWNEN|)NNE(SESEE(NWNWESES|)SSSWSW(NNNESNWSSS|)WSWSSWWNENWN(EE|WSSSWSWWNWWNWSW(NNNNNESSE(NNNWWNNE(NWES|)S|EEENE(SSSW(S|WN(W(WW|S)|E))|E))|SESWSSSESESEEEESWWWSSWWNENWNW(N|SSSSSSEEENN(WSWNSENE|)EEENWWNEEESSSSSENENNENNNNWWW(SEESSW(N|SS)|NNNWWSS(ENSW|)WNW(NW(S|WNENNESSE(S|NEEENEEEESWSWNWS(WWW|SSSEENN(WSNE|)EEN(W|NEENENEEEEESSWWN(WWSWSEE(SENEESENNENEESSW(N|SEENNNEEEE(SWWSEESWSWSSSSSSESSENNEESESSWSWWWSWNWSWNWSSWNWWWWWSWWNWNWSWWNNE(NWWW(NENNNENEENNNEE(NWWNWSSSSWNW(NEWS|)SS|ESWWSEESSWNWSSESWWNNWSSW(SEESES(W|EENN(NNEESWSSEEN(W|NEENESENENE(NWWWNWSS(EE|WSWNNWNNESE(NN(E(SEEES(ENN(N(E|NN)|WWW)|W)|NN)|WW(WSSSSE|N))|S))|SSWSSEE(NWES|)S(WWWWNWSW(NNEEES|WS(WNWSW(S|W)|EEE))|EEEN(N|E))))|W(S|W)))|N))|SWSESWSWNNWWSWNWWWN(WWSESWSESESSEEEEENESSWSESWSESSENESENNNNWSW(SEWN|)NNENENENN(W(WS(SW(S|NWWN(WSSWWNENWW(SS|N(WSNE|)E)|N))|E)|NNN)|ESEE(NWES|)SSWW(NEWS|)SESSSWNW(N(N(N|W)|E)|SSESSESSSSSWWNENNNWN(WWWWWSWSESWWWNWWWNNW(NEEEEES(WS(WWNE|ES)|ENN(ESNW|)NNWSWS(WNWSWWNNE(S|EENE(S|N(EESWENWW|)WWSWNW(NN(ESNW|)N|S)))|E))|SSSEESE(ESSWNWWW(NEWS|)SSESEESSENESESWWWWWW(SSSSSSSSEESESSEENESEENENENESSWSESSESWSEENESSWSEENEESENNENWNNENEEEEENWWNWNWWNWNNEENNWSWWWSESSSSSE(SWSWSESSWNW(S|NWNENNNE(NWWWW(NEENWNNWNWSSWNNWSSSES(ENENSWSW|)WWWWWNNNENEE(NWN(ENNW(NNNWS(S|WWN(WWNWESEE|)ENNNESES(W|EEEE(NWWWN(W|NESENNE(NWWSWN|S(ENSW|)S))|ESSESENENN(WSWNSENE|)NNNNESENEENWWNNENEEEENEENNNNESSEESSENNNWWNNWN(WWS(E|WSWSWWSWNWSWSW(SSWSESSENNNEN(W|NESENENES(SWEN|)ENNE(N|SS))|NNENEENESENENWN(EESNWW|)WSWWWSE(WNEEENSWWWSE|)))|EN(ESSSENESENEEEEESESENESENEESSENNNESSSESESWWSSENES(ENNNNENENE(NNNNWNN(WWNWWWSESE(SSEE(NNWSNESS|)ESWWWSSW(SE(ENEN(E|W)|S)|NNWWWSWWWWWNWNENNNNWNWW(NEENWWNEEESEESWS(WNSE|)ESSSW(SSES(EENNNW(S(W|S)|NENEE(N(EEE|NNWSWNNEENWN(WSWWNWN(EE(EE|S)|W(NEWS|)SWS(WNWSWNWWSWNW(NE(EEEEEE|N)|SSES(W|ENE(SE(N|S)|N)))|EESEESSS(S|EE)))|E))|SSW(N|SSENE(SENSWN|)N)))|W)|NN)|SESESSWSSWNNN(WSSSWWWN(WS|EENWW)|N|E)))|N)|EES(SSESWENWNN|)W)|SSWSWSEEE(SESEEN(EN(EES(EENWESWW|)S(SSSS|W(N|W))|W)|W)|N(W|N)))|SSWSWWSWSEEEE(N(NESE(E|N)|WW)|SSSWWNENWWSSSWSSESENN(W|NESSSSWWWNWWSESESSESENNWNEEESWSSESWSWWWSESENEENEN(NNWESS|)EEESSEEEENWWNW(S|NNEEEE(NNWWWS(EE|W)|SS(WNW(S|W)|EEN(EEENWNENN(WSNE|)NESENESEENNNEESWSSEEN(W|NEESENENENWNNWWNWNENESEENNENWWWS(ESNW|)WNWNEEENNESSEENWNENNENESSEESEESWSWSWNN(WSW(NN(N|EE)|SSSW(SSW(SS(WNNWWEESSE|)EEENNN(WSSWENNE|)EENESENNN(WSWWSWNN(SSENEEWWSWNN|)|NESSSEENWNENWNWNNNESSENNNWNWSWSSWNNWW(SEWN|)NNNWWNENNWNENESSEENNNW(SS|NNWWNENEEENNEESSW(SESSWSW(SSESSEENNW(S|N(W|NEES(ENENWNENEENWNWSWWW(NNENNWNWNEENNWSWWWSESSS(E(N|E)|WWWWSS(EENWESWW|)WSWSWWNNNWNNENNWSWWNWWWSWSWSWWSESEEN(NESESSENENE(NNWWNWS(SE(S|E)|W)|SSSE(SSWWWSESSSSSSWWWSEESENESSSENNNNESE(NNWNNNE(SSEWNN|)NENWNW(SWS(SSSW(S(S|E)|NNNN)|E)|NEESEESW(ENWWNWESEESW|))|EESWWSW(SSWWWSWS(E|WWSWWSWNNENWNNWNEENE(ESE(N|SE(ENWESW|)SWWS(E|W(S|NN(WSNE|)(N|E))))|NNWNWNEEENWNNENWNWWSWWSEEE(SWWS(EE|SWSESSE(E|SWWWSW(SSEE(N(N|W)|ESWWSESWSSWNNWSW(SSSEN(N|ESEESENENN(WSW(NNENNSSWSS|)W|ESSEE(SSESSENESSWWWNWN(NWSWS(E|WSS(WNNNEN(ENEEWWSW|)WWSWNW(SWS|NEE)|S))|E)|NENWW(NEWS|)S)))|N))|WNWSWNNEEE(EN(ESNW|)WWNNNEE(SWSEWNEN|)N(ESNW|)NWNNNWWWWWNWNNNEENNENWWSSWWSWWSESSWWWS(ESEEEN(NNN|ESSSEEENWWNEEEESSS(W(NN|WWWWSEEESSWWN(E|W(SSSSES(ENNWNEEENNN(SSSWWWEEENNN|)|WWW)|WNNNW(NEWS|)S)))|E)|WW)|W(W|NNEE(E|NNNNNEENESS(WWSEWNEE|)ENNNWWNWWSS(ENSW|)WNW(SSEWNN|)NWNNNEENNESESSS(WW(S|N(EN|WS))|ENNEENNWNWNWS(SESEWNWN|)WNNENNWNNESEENWNEESSESEENWNNNW(SS|WWWNNESEEEEEENNNEENNNNWWWN(EEEESSSSSENNENWNEN(EEESESSWWN(E|W(NEWS|)SSSSSSSENESSWWWWWSEEESESWSESENENWNEN(NEEESENNWWWNW(NWNENWW(NEEESESEEENWNNENESESW(W|SEEEEENNNENESSSSENENNESEESESESSENNNESESWSSWSEEENWNEESENNWWNEENNNESESWSSSESENNWNEESE(SWSESWWWSESWSESSSSWNNNWNNNN(WSSWN(N|WSSEESSSSSWSSEEN(N(NNN|ESENESE(NNWNENNW(NNNESS|S)|SSSSSSSWNNWSSSEESSSSSWNWSWWNENWWSWWNNWWNWNENWNWSSSWSWNNW(NNENNNWS(S|WNNEENENESENENESE(SSESSEEE(ENE(NWW(NEE|SWNWS)|S)|SSSSSES(SENNSSWN|)WWNNNWSSSW(NNNNEENWWWNWWWS(EES(SE(SSWNSENN|)N|W)|WNNN(WSSSSS(W|S)|EEE(NWES|)S(E|WW)))|S))|NNENWWNWNWSWSES(WS(WWWS(E|WWS(EE|WWNENEENNENENE(ENNWSWWSWWNWWWSWWWWWWSEEESWWWWSEEESENENEESS(W(N|WSEESWWWSWWWSESSWS(WWNEN(E|WWWWWSS(ENESE(S|N)|WNNWSSWS(SWWWWNENNNWSWNNWNNNESSEENWNNNNNWWSSWNN(NEENNNN(WWWSSENESSW(ENNWSWENESSW|)|NES(ENNN(WSWNSENE|)ESSSENNNNN(SSSSSWENNNNN|)|SSSSEESWSSESEESSWNW(WNSE|)SSS(WW|SES(WSESWENWNE|)ENNN(WSNE|)EES(EENNNENNWSWSWW(SEESNWWN|)NEN(WWNW(NNNWWEESSS|)(S|W)|ENEEESE(SWSESWWSSENESENNENE(SENE|NWWS)|NNWWWNNNESSEEE(N(ENWNENWNN(ENESENESEESWWSWSW(SSENESENN(W|EEENESENNESENNEE(NWNWNWSWSWS(EENEWSWW|)WW(N(WW|NNN|E)|S(SWWEEN|)EE)|SESWW(N|S(EEESEE(NWES|)S(SESENSWNWN|)WW|SWW(NEWS|)(S|WWWWWS)))))|NN(E|W))|WSWWN(WNSE|)E)|WW)|S)))|W))))|WWSWWS(WNNE(NWWSSNNEES|)E|SEESEN(N(WW|N)|E(EENNSSWW|)SSWWSW(SWSS(WNNSSE|)ESENENN(WSWENE|)E(NWES|)SESWSEE(E|SSSESWSWSWNN(WSSSES(EEESES(WSNE|)ENENEN(WWSWNN(E|W(WS(W|E)|NENNEE))|ESE(NN|EEE(N|S(WWS(WNWWEESE|)SSESW(W|SESWS(E|WW))|E))))|WWNWNE)|NNE(NWW(WW|N)|SS)))|NN))))|E)))|SENENNEN(W|ENESENESEE(NWES|)SWWS(WWN(WSWSESE(N|SS(ENSW|)WNWSWN(NEWS|)WWSS(SE(ENWN|SWS)|W))|E)|E))))|ENEENN(WNWS(SEWN|)WWW|E))|SSSW(N|W))))|E)|E(E|N))))|SSS(SWEN|)EEESESESESENN(WNWN(WNWESE|)E|ESE(N|SWSWSSWSSSWSWWNNE(S|NWNW(NENN(WSNE|)E(ESWSSE(NENSWS|)SS|N)|WSWWSESSSWSW(WWWSWNW(S|NNWNEESE(NN|S(W|ENEE(SW|EN))))|SESSSESWS(W|SSSENEESESESESSWSSESSENNN(W|NENNESESEEESWSWWWN(N|WSSEEESSSWWNENWWSSWWN(E|WNWWNWSSSSSWNWNNE(NNWSWSSWWSEESWSEE(N|SSSWSEESENNESEESENNWNEENENNESENN(WWWSWNWNWW(NEWS|)SSE(N|SE(N|E(E|SWWS(S|WNNWSW(N|S(E|S))))))|EEENWNNEN(W|ESE(NNNW(SWEN|)NNWNENE(SSS|NWWSWSSWNNNENNNENESE(NNWWNNWWSSS(ENNSSW|)SWSWWSWSW(SE(ENEE(S(S|W)|N(ENSW|)W)|SS)|WNNW(S|NEEE(SWSNEN|)NWNWWS(WSSWWNENNENENENEEENENNNEESEESESS(SE(SWEN|)NNNNNNNWNENNWWS(SSWWS(EES(E(S|N)|W)|WNNW(SWS(SSWS(E|SWWN(E|WSWS(WN(NENNW(NENSWS|)S|WSSSENE(WSWNNNSSSENE|))|E)))|E)|NEEE(SWEN|)NNEN(WWSSW|EESW)))|E)|WWWNN(ESEWNW|)W(SSSSSSWNW(SSEWNN|)WNEN(WWSWENEE|)E(S|N)|N))|E)))|SWWSEE))|SSSW(NNWESS|)SESSWWN(E|NWWSESSSSWSWNWNN(ESENNWW(EESSWNSENNWW|)|WSSSESEEESWWSWWWWWNWSSSWNNNWN(ENESEESEN(ESEWNW|)NNN|WSWWWSWNWNWSWSESSEN(N|EEESEEE(SEESENESSSENESESEESESESWSSWWSESESEENE(NNWSW(S|W|NNEENNW(S|NENNNNNWSSWNNWNNN(ESSENE(S|NWNWNN(ENE(NNWSW(S|N)|SS(S|W))|W))|WSWWSSEE(NWES|)SESWW(WN(E|WNW(S|NENWWWSE(WNEEESNWWWSE|)))|SEEEESW(W|S)))))|SSSSSWSSWSESE(SSSWNNWWSESWWWS(WNNNENWNNNESSES(SSWENN|)E(E|NNWNNENWNEN(WWSWSS(ENSW|)WNNNWWSSE(SSWSWWWNENWWWSSWSESEESESENESSS(ENNE(SS|NWNWWN(EEE(N(W|N)|S)|W(WWNNSSEE|)S))|WNWWS(E|WNN(NWSWNWN(WSSWSES(WWWWNEENNENWNNWSWWNNE(NNWWWNENENNNWSWWWNEENNWNENNNNEEESSEEESEENNW(NENNWWS(E|WNWN(EENESEESE(N|EESESSSESWWSEESWWSESSWNWWSESESESS(WWN(WSWNNWWNWNWWSSS(W(NNNNEEENNEN(WWSSWWNENN(WWW(NNESNWSS|)SE(SSWNSENN|)E|E)|ESSWSSEE(S(ESEWNW|)W|N(NNNEE(SWSEWNEN|)NNNN(ESSNNW|)NWWSSE(SSWNSENN|)N|W)))|W)|SSEENWNE(NWNSES|)ESSE(ESWWSW(NWW|SEEN)|NN))|E)|E(S(E|S)|NNN(W|NNESSEENE(NWNW(NNW(SSWENN|)NEESES(S|W|EENWN(E|NW(WNWSWNWNN(SSESENSWNWNN|)|S)))|SS)|ES(WSNE|)E)))))|WWNENWNNWWNNENNNNWNENESSEENEE(SSW(N|WWWSEESWS(EEESEN(EESWENWW|)NN(NNES|WWSE)|SW(W|NN)))|NWWW(S|NEENNENE(NNNWSSWNWSS(SWS(WNWNEENNW(WS(E|WSSWNW(NNE(S|E)|SSESWWNW(NENSWS|)SWWSWSSWSESWSSESSSESSSSESSEENWNNNEESENNN(EESWSSE(SWS(WSSSSWNN(NNN(WNSE|)E|WSSSSWWSESWSWWNWNENNNES(EENWNENWWSWNNWSSWSESSWNWNWWNEENWNNNNESSSE(S|NNEE(NWWNEENWNWWWNEEN(ESNW|)NWSWWWWNEENE(S|EENWNWNNWSWSS(E(E|N)|WNNW(SWSSSSE(NN(EE|N)|SESWWSSWNNWWWNWNN(EEENWN(WSWNSENE|)EE(NWES|)SSSWW(SEEEWWWN|)W|WSWSWWWNWSWSEEEEESSSENNE(NWNSES|)SSSSSWNNWSSWNNWSWWSSSWWWWSESWSESEEEENWWNW(NEESEENWNEESSSEESWSEESESESEENWNEEENNNENE(NWNWSWWSSWWNWSS(EEEE(NNEWSS|)SWWW(W|S)|WNNNWNN(W(WWWNE|SSSE)|ESENENNENN(ESSSWSS(ENE(ENESE(ENWNNWSWW(NNE(EENWN(WSNE|)ENE(NWES|)SES(WSSS|ENE)|S)|S)|S)|S)|WS(ESNW|)W)|NWN(WSSS(ENSW|)SS|E))))|SENESSSEN(ESSWWWNWSW(NNEEWWSS|)SWWSESESWSESENENWNN(NEESS(WNSE|)EESSEEEENWWWNNEN(W(WSWNSENE|)N|ESS(ENEESWSESWSEESWWWWN(E|WSWSWWNEN(E|WW(NNESNWSS|)WSSSSEESENN(WWNNSSEE|)ESSENNNESSENEN(ESESENEE(SSW(N|WSS(EEEN(WW|NEENNWSWN(SENESSNNWSWN|))|WWWWNN(ENESESWW(EENWNWESESWW|)|WSSWNWSWNWSWWWWWWWNENENESS(W|EN(ESENSWNW|)NNNWWWWSWNWSWWNENEENEE(NWWNN(ESENSWNW|)WSSSWWWNNESENNWWNE(NWNWWSWWNWWWWSSWWSWWWNNESENEENWNE(EEEEEE(ENWNSESW|)S|NWNNWWSESWSWWS(EEENSWWW|)WSSWSWSSESWSESESWWWSSWWNWWNNWSSSWWNNNE(SS|NWNENENNWWS(E|WS(E|SWWWWSSSESWSSES(ENN(ENWNENN(WSWNSENE|)ESSSSSEEES(WWWWNSEEEE|)EEEN(WWNEWSEE|)EEEES(EENENNW(SW(S|WN(WSNE|)E)|NEESSSS(W|ENESEEENEENWWNWNNEENWNEENNWNNW(NEESSENESSSW(SSWSEEESSEE(SEEN(W|ESE(EN(ENEEWWSW|)W|SSWNWSWWN(E|WSWNN(E|WW(SS(ENSW|)WW|NN(ESNW|)WW(SEWN|)W)))))|NWNN(E(E|S)|WN(WSNE|)ENNW(NNE(N|S)|S)))|N)|SSS(WSSWSWNWS(WWNENEENWWN(EEE(ENWESW|)SS|WSSWS(WNNN(W|NE(SS|NN))|S))|SEESWWSEESEN(SWNWWNSEESEN|))|E))))|WWW)|W)|WWWNENNNWWSS(ENSW|)WWNNWSSWSES(WWWWNENE(S|NWWSWSSWNWSWNNWSWNWNEENWWWWWSESSS(WNWWW(SEEWWN|)NNNENWNEENNNENNWNNWSW(SSSE(SSWNSENN|)N(E|N)|NNENNW(S|NENESSSSENENENNNWSW(S(S|E)|NWNWNW(NNNEESWSEES(W|ES(EEEEESWWWSESEEN(W|ESSSWWWSWW(SSESSENEENNW(W(SEWN|)W|NEESSSEESSSWSEESENEESWSE(S(S|WWWN(WSSWNNN(WWNWNEE(S|NENWWWS(E|WWSESSWS(EE(N|ESSE(SEWN|)NN)|WWNEN(E|WW(SSWSSS(WNSE|)E|NENE(NWN(E|NN(WSNE|)N)|S))))))|E)|E))|EEE(SS|ENWNENNNEEESWS(EENENWNEENNWWWNWNNNNNNWNENESSESENNWNNENNWWS(WWS(W(NNENN(WSWENE|)EES(WSNE|)ENESEESWSSS(SSSSSSESWWNWW(SESEEEENNESSSSENNNNNNNESENEEENENNNNNWWNWWSESWSSWWNNWSSWNW(SSEEES(WWWSSEE(SWW|NW)|ENEEE(SWWEEN|)ENWN(WS|ENW))|NENNNEESS(WNSE|)E(SS|NNENNEEEESWS(WWNEWSEE|)SEESESSSSW(NNN|SSWSSWWSWSWNW(NEENEE|SSESWSS(SSEESESSE(NNNWNNNW(NEN(NESESE(NNE(EENWNENENNNNNENWWNW(NEENWWW(W(NNNNNEENE(SSWWSSSEENN(WSNE|)ESES(W|SEEEE(SWSEESWWSEE(EENNW(N(EESE(SWEN|)N|W)|S)|SSWWWN(EE|NNNW(SSSSW(SE(SWSEWNEN|)EEEE|N)|N(WSWENE|)E)))|NWNW(SWNSEN|)NEENEE(NWES|)S(WSWENE|)EEE(SWEN|)E))|E(NWNNWNWWWWWWNNNESSENNEEE(SSWWNE|NWNNWSSWNNNENENEENNE(ENNWSWWWNNNWSWWNENEENN(WWNWNWSSES(WS(SWSSSEEEN(WWNSEE|)ESSS(ENESNWSW|)SWSWWNENENWWWWNWSWSWNNENEENNNWNW(NEN(W|EE(SWSES|NW))|SSWWWW(NENWESWS|)WSSWWSESSWWSSWSWNWN(WWSSE(N|ESESWSSSWNNNW(NEWS|)SSW(SESESS(ENNESENNWNEENEENWNEESESESEESENNEEE(SWSSW(WSWSWWSSESSEEESWSEE(NNESENNESSES(ENNWNNNN(EESWSEE(ENWN|SWW)|WSWS(WNN(E|N(WSSSS(WWNW(N(EE(S|N(N|W))|W)|S)|E)|NN))|E))|WWW)|SWWWNNWWNWSS(WWNENWW(NW(SWNWESEN|)NNNNEESSW(SEES(E(NNWNENENWN(EES(S|E)|WN(E|WWSS(WNSE|)E(ESNW|)N|N))|E)|W)|N)|S)|ESWSESEN(NN|EEEE)))|NN)|EENNWSWNWWS(E|WWNNNEEENN(WSWWWSWWWN(NENN(WSNE|)NNESE(SWSS(EN|SW)|EN(EENSWW|)W)|WWSES(WWSWS(SWEN|)E|EEEESS(SE|WNW)))|E(SSS(WWWSNEEE|)EE|E))))|WWN(NWWS(WNWSWWNNE(S|NEN(NNWSWNWSSE(E|S)|ESEESWWW(EEENWWEESWWW|)))|SE(SES(SSENSWNN|)W|N))|E))|N))|NESENNNE(SEWN|)NWW(W|NEEEEN)))|E)|EE)|EESE(NN|EE(E|SWSWWN(E|W(N|SSSENEEE(SSENEWSWNN|)N)))))|SSSWWS(ESWSEE(SWSEWNEN|)NEN(W|N)|W)))|EE))|W)|S)|SSESWSSS(ENNSSW|)W(S(SW(N|S(W(S|W)|E))|E)|N))|S)|SWSW(NN|S))|W)|SW(SEWN|)N)|S(WS(WNNW(SS|WN(NESE|WS))|S)|E))|WWWW(SWSSW|NENW))))))|NEENWWN(SEESWWEENWWN|))|W)|WSE(SSWNWSWNW(N|WSWSEE(N|SSWNWSSSESESSSENNNNWN(EENNN(WSSNNE|)ESESE(NNWESS|)SSWNW(N|SWSSEESES(EN(NWNWWEESES|)E(EE|S)|WWW(NEWS|)SESWS(E|SSWNNNWSWWWNENNW(S|NWNEE(NWWNW(SSS|NNESE(NNWNNE(S|N(WWSS(WNNWWWNEENNWSWWWW(SESENSWNWN|)WNENNWSWWNEN(EEESESWSEENNN(ESES(E(NNWNSESS|)SSES(ENSW|)W|W)|W)|NNWW(NEWS|)SESWSS)|S)|E))|S))|SE(N|SS(EE|S)))))))|W)))|E))|EE)|E)|SW(SESWENWN|)NN))))|NEN(EEE|N)))|W))|SS(S|E)))))|EE(NWNNSSES|)EE))|EEENWW))))))|E)|ES(WW|EE))))))|NWW(W|NNESENN(E|WWWNNNE(EN(E|WWWW(NENNE(E|NN)|W))|SS))))|W)))|W))|W)|N))|S)))|NENN(WSNE|)ES(ENEES(W|ENE(SSWS(WNSE|)S|EN(EE|N)))|S))))|S(ESNW|)W))|SSS))|EEE(NWES|)ESEESWW(EENWWNSEESWW|))|N)|WWS(WNW(NENWNNEEESSS(WNNWESSE|)ENNNNWWNNWNEESE(NN(ENNESE|WWWWSSW(N|SS(EENWESWW|)S(SSS|W)))|S(ESSNNW|)W)|SSS)|E))))|NNNEEEES(WSWNWS|EESS(EEEEE(SEWN|)NWNEN(WN(NW(SSSWW(SEEWWN|)NWN(W(S|W)|EE(NWES|)S)|N)|E)|E)|S)))|E)|E)|S)))))|S)|S)|EN(EESWENWW|)N)|E)|E)))|N)|ESE(SWSSWENNEN|)N))|EEEEE)|NNN))|NNWW(SEWN|)W)))))))))|S))|EE))))))))|W)))|W))|N)|NNNNWNN(ESNW|)WWS(ES(SSENSWNN|)W|WWWSWSW(SEENSWWN|)WNWNWSS(E|WNWNN(E(S|EEEES(ENEEEWWWSW|)(S|W))|WS(WNWW(S(SS|E)|WWWSWWSESSWNW(S|NNW(S|WN(WSWSWSW(SESNWN|)NW(S|NN(ESENEWSWNW|)W)|EEEE))))|S))|S))))|SS)|S)|WW))|W)|WWSWNWSSSWWNNN(ESSNNW|)WWSESSWWN(NNWSWWSEESSSEEEN(WW|ESS(WWWWSSESENN(ESSSWWSWNNWSSWNWWNNENENWNNN(ESE(S(W|SSSWSW)|N)|NWNWWSWNN(EEEE(EE|S)|WWWWSWNWSSWSEEEN(W|ENESE(SWWSSEEN(W|EESSSWWSESWWNWSWSWSESENESEENESSENESEN(NWWNW(NNE(NNE(S|NNNW(N|SS|WW))|S)|WW(WW|S))|EEESE(S(E|WWNWSSESWWSWNNENWWWWWWN(EE|WWSWNNWWSWSWNWNNWNEENNENNEENN(WSWNWNWSSWSWWNWNEE(S|ENNNN(WWSSS(ENNSSW|)WNWNWN(EESNWW|)WSWSEESWWWSWSWNNWSWNW(WWNNESEEEEE(ENN(E|WSWWN(WSWNWWWSS(NNEEESNWWWSS|)|E))|S)|SSEESSENESS(EENENEE(ESESES(ENN(W|E(SS|EN(W|N)))|SSWNW(SSSEEN(ESSSE(N|SENEEE(ESSSWSW(SEESW(W|SEEENNNW(NEENNN(EEEESSSSESWWWWSSSE(EEEEE(SEWN|)NNNNW(N(W|ENEE(SWSE|ENNWS))|SSWS(WWN(WSNE|)E|E))|SWW(N(WWSEWNEE|)NNNNENESENNWWNEE(WWSEESNWWNEE|)|SS))|W(WSSENSWNNE|)N)|SS|W))|WNENN(ESNW|)WSWWWW(S(ESENES|W)|N(NNWESS|)E))|N(W|N)))|W)|N(NWSWW(NENEWSWS|)WW|E)))|NWN(ENSW|)WWS(WS(S|E)|E))|WWSWWSSW(S(ESENNENW(ESWSSWENNENW|)|W)|N)))|EEES(ENSW|)S(WNWSNESE|)S))|EESWSSWWSSE(EN(ENEN(E(EENSWW|)S|W)|W)|SSWW(WSEWNE|)N(N|E)))))|N)))|N))))|W)|EESEENNEE(SWSEWNEN|)NNEE(SWEN|)NWWW(N|WWSES(ENSW|)WWWSEES(NWWNEEWWSEES|))))|E)))))))|S))|N))|N)))|N))|NN))|W))|SE(SWSEWNEN|)E)|W)))|NN(E|NW(W|SS)))|N)))|NN)|NN))|E))|W)))))))|W)))))|S)|WWS(E|SWNWN(WWSESESESSWS(WWNEN(WN(E|N)|E)|ES(W|S(EEN(EE(SWSNEN|)E|W)|S)))|E)))|SSW(WSEEWWNE|)N)|SSEE(NWES|)SWWSES)|SS))|EN(WN|ESE))|NN(EESWENWW|)N)|N))|N)))|EEENWNEESS(NNWWSEWNEESS|)))|S)|NNWNWWSS(E(E|N)|WWWWW(N(EENN(N|ESE(NEN|SW))|WWWNWWNNW(SWSES(EE|WSWW(SEWN|)N(ENW|WS))|NNESE(SSEWNN|)N))|S))))|N)|E)))))|S)))))|NWWNW(SWWEEN|)NENNNE)|EEEN(WW|E))))|N)|EE)|S))))|ESSEE(SWEN|)NN(WS|ES))|E|N))|S))))|W)|SWSESSWNWWSWSWS(WW(S|WWWNEEEENWNNEES(S|W|EN(EE|NWNWSW(W(SSSWWEENNN|)W|N))))|EEEEE(SSS|N(WW(W|N)|E))))|E)|E)|E)$ diff --git a/inputs/21.txt b/inputs/21.txt deleted file mode 100644 index aaebbac..0000000 --- a/inputs/21.txt +++ /dev/null @@ -1,32 +0,0 @@ -#ip 2 -seti 123 0 4 -bani 4 456 4 -eqri 4 72 4 -addr 4 2 2 -seti 0 0 2 -seti 0 1 4 -bori 4 65536 1 -seti 16031208 7 4 -bani 1 255 3 -addr 4 3 4 -bani 4 16777215 4 -muli 4 65899 4 -bani 4 16777215 4 -gtir 256 1 3 -addr 3 2 2 -addi 2 1 2 -seti 27 3 2 -seti 0 9 3 -addi 3 1 5 -muli 5 256 5 -gtrr 5 1 5 -addr 5 2 2 -addi 2 1 2 -seti 25 7 2 -addi 3 1 3 -seti 17 4 2 -setr 3 1 1 -seti 7 5 2 -eqrr 4 0 3 -addr 3 2 2 -seti 5 1 2 diff --git a/inputs/22.txt b/inputs/22.txt deleted file mode 100644 index e2e94a0..0000000 --- a/inputs/22.txt +++ /dev/null @@ -1,2 +0,0 @@ -depth: 7863 -target: 14,760 diff --git a/inputs/23.txt b/inputs/23.txt deleted file mode 100644 index 306c4ad..0000000 --- a/inputs/23.txt +++ /dev/null @@ -1,1000 +0,0 @@ -pos=<61981295,70302690,50074583>, r=86817788 -pos=<-39574082,11593440,52034024>, r=86226353 -pos=<-22613800,41560771,22762338>, r=83067593 -pos=<-12414843,51978293,68300191>, r=85018769 -pos=<-12727191,34870716,52975971>, r=52899633 -pos=<-32063168,40924402,49558575>, r=74871596 -pos=<18752046,16372097,-9651854>, r=70068867 -pos=<3474631,29804741,98417262>, r=77072884 -pos=<18354169,57026789,74027645>, r=65025959 -pos=<22104105,74882695,61927007>, r=67031041 -pos=<-42133805,38530007,57591711>, r=90581205 -pos=<-47869746,22599340,42855147>, r=77956291 -pos=<-27020782,-4791281,34203354>, r=93149809 -pos=<-18487970,40655084,49627122>, r=61095611 -pos=<10137288,54171533,97007570>, r=93367254 -pos=<21836035,43430190,47217893>, r=78376026 -pos=<8216569,21003453,101684850>, r=78676489 -pos=<-40466865,34952266,70038151>, r=97782720 -pos=<72670731,-8427298,58419388>, r=97862747 -pos=<-26904810,19437248,39548346>, r=63460381 -pos=<-14862223,38537164,6158587>, r=88895667 -pos=<-4093645,28809183,65079634>, r=50307904 -pos=<-13276886,43613687,45971502>, r=55187766 -pos=<49089034,29003918,14560017>, r=57321614 -pos=<-13807521,-29104885,50131321>, r=99255387 -pos=<48476757,37188242,72540714>, r=62665037 -pos=<7140081,51751715,-8561127>, r=94827577 -pos=<-43249072,32737116,53752441>, r=82064216 -pos=<6641528,98591490,47271959>, r=91547386 -pos=<-23305462,10475650,56073326>, r=75115096 -pos=<6053316,21990329,84119652>, r=62287689 -pos=<7023331,60698763,57949984>, r=63950985 -pos=<-36608889,31399128,35446137>, r=74217136 -pos=<6817093,34966536,98116734>, r=78591704 -pos=<4957605,61740316,52702032>, r=61810336 -pos=<-2269508,-8851147,43341014>, r=63321024 -pos=<12839874,52090204,58609561>, r=50185956 -pos=<-24117273,33915884,49793440>, r=60152075 -pos=<74759590,28034712,42456610>, r=54126256 -pos=<-48197949,37668470,48713802>, r=86905688 -pos=<-465248,41562365,60498029>, r=54851108 -pos=<10694430,32208520,48027772>, r=61692668 -pos=<-8548512,14246214,83247198>, r=83761331 -pos=<43950964,33755026,90173201>, r=72338199 -pos=<-14628694,43441676,58236468>, r=68632319 -pos=<106381567,34503222,46141825>, r=91485627 -pos=<-42403687,53189612,46049581>, r=93968393 -pos=<3940021,35797440,82233626>, r=66416478 -pos=<-12215361,4082478,43661351>, r=60012674 -pos=<19860123,68466722,60165468>, r=61097501 -pos=<70777186,32758921,32118468>, r=65206073 -pos=<-38591125,46522298,54596946>, r=92035892 -pos=<22636563,105345403,45688673>, r=80723037 -pos=<-3951303,29434316,22353040>, r=52688125 -pos=<-176419819,31194464,52039201>, r=76587195 -pos=<-3596358,48726226,78390625>, r=83038642 -pos=<7182613,37282188,20126279>, r=51628082 -pos=<-25240363,51483969,55323702>, r=84373768 -pos=<21428319,64401806,57994375>, r=53293330 -pos=<-5939048,7790261,21935573>, r=71754303 -pos=<-14391272,30291007,70042112>, r=67049881 -pos=<-22323827,29920141,55916312>, r=60485891 -pos=<13475129,52193445,63897921>, r=54942071 -pos=<-3994272,15505795,89454649>, r=84155011 -pos=<475865,1537450,69193888>, r=73392255 -pos=<-10815135,44879964,69035166>, r=77056155 -pos=<11306358,28884419,64442081>, r=91273574 -pos=<14678811,33694651,48185622>, r=71901550 -pos=<3756099,71276526,21743645>, r=87431573 -pos=<40262582,59466852,61256380>, r=65445301 -pos=<11616060,70966185,64722364>, r=76397938 -pos=<3872060,39650278,107716165>, r=95819913 -pos=<9586133,45083261,78735554>, r=66558242 -pos=<77865670,42917012,73695024>, r=98936729 -pos=<-1745961,55327607,42088395>, r=56640112 -pos=<26855240,67981174,26878283>, r=61746856 -pos=<-14224458,28877026,31495228>, r=53261041 -pos=<15850501,66941649,70246547>, r=73663230 -pos=<-22483771,25856673,49504583>, r=52343508 -pos=<9442908,53159770,55875115>, r=51917541 -pos=<1959101,903989,50510107>, r=53859027 -pos=<7569188,-24881655,45995388>, r=69519533 -pos=<1336123,50534199,50773018>, r=52296589 -pos=<-6780305,30188574,97998637>, r=87293233 -pos=<-27347231,32710526,48539527>, r=60922750 -pos=<-54109318,45563567,46755290>, r=98753653 -pos=<-23931716,34591305,51177382>, r=62025865 -pos=<1842700,54313361,57870403>, r=62666497 -pos=<9906862,47176518,46588813>, r=49926624 -pos=<-5650338,36212767,99081721>, r=93270578 -pos=<-9210222,73861103,51071528>, r=86469031 -pos=<-48605170,28058111,39410284>, r=78908074 -pos=<6277738,31698726,83207681>, r=60954109 -pos=<5935953,25376812,52194560>, r=66482724 -pos=<-33349449,32090950,46515684>, r=64281651 -pos=<-1144497,68829923,72349587>, r=94649606 -pos=<68150356,106204720,129297951>, r=83514523 -pos=<8426203,98908672,49758875>, r=92566786 -pos=<16538168,48418035,65737293>, r=49942650 -pos=<19573131,82515397,58801909>, r=74069662 -pos=<98906639,46422007,45986912>, r=95774562 -pos=<12340098,62609442,59505078>, r=62099865 -pos=<-28251146,31055125,25461712>, r=75499853 -pos=<19758085,59632651,60443124>, r=52643379 -pos=<-63046046,25663836,40121278>, r=92801960 -pos=<-37359413,31532323,71313730>, r=92530910 -pos=<53387378,31226416,70902974>, r=59975761 -pos=<-111343725,90010574,65438544>, r=96905196 -pos=<39565178,36023094,48981621>, r=96285986 -pos=<-18425354,35959496,54078093>, r=60788536 -pos=<4117058,66844365,17924670>, r=86457430 -pos=<4823188,-14314294,64385895>, r=80088678 -pos=<20323219,61060408,10757887>, r=71634602 -pos=<89860271,38268711,51332073>, r=83920073 -pos=<6829746,30401653,100430131>, r=76327501 -pos=<-18163621,73955629,42658058>, r=91116552 -pos=<-9868198,28983545,82688052>, r=73865474 -pos=<-3955635,32776886,7789254>, r=70598099 -pos=<22115720,88382733,50485824>, r=69078561 -pos=<-25241164,31938266,56917737>, r=66422608 -pos=<14985873,-15753032,55823238>, r=62802267 -pos=<16643466,61628684,29386869>, r=57253552 -pos=<21580242,42328478,123256438>, r=96330398 -pos=<-25199672,13587085,61865724>, r=79689986 -pos=<25598120,-21677261,57401363>, r=63021973 -pos=<20683805,43416073,80207144>, r=55264851 -pos=<-12206963,28525784,76317729>, r=69375956 -pos=<66517337,40023722,63765750>, r=74765959 -pos=<21046583,32632182,66997632>, r=92540759 -pos=<-13138431,65411819,48286547>, r=79162230 -pos=<-33524737,76477821,155964131>, r=73103463 -pos=<-33331228,9961241,69359006>, r=98940886 -pos=<39564979,28572472,53811503>, r=61407169 -pos=<-48869811,21665479,51245298>, r=84661484 -pos=<-8710194,53780076,47547665>, r=62363657 -pos=<-7314943,55087956,46146524>, r=60875047 -pos=<-61837954,25859003,56641091>, r=98831768 -pos=<-5695240,58983811,70577156>, r=87581649 -pos=<-25981379,35101300,31842886>, r=70894580 -pos=<3669996,59130810,1907555>, r=95208068 -pos=<34776272,-4188188,70499131>, r=67808809 -pos=<-35530241,30475154,50076449>, r=68407314 -pos=<-8155622,43149031,72681791>, r=76311918 -pos=<6666752,64359993,46401448>, r=56420132 -pos=<14935236,11018971,47709423>, r=95072999 -pos=<-31457362,28416643,49636691>, r=61836519 -pos=<-16109927,48371152,51014763>, r=67821289 -pos=<42694611,33011663,86560963>, r=66726260 -pos=<10684191,49511278,21069239>, r=59412987 -pos=<-423180,40569321,15553431>, r=67093941 -pos=<-32350990,31916431,66781337>, r=83374335 -pos=<-40417062,33333028,20729982>, r=94675000 -pos=<-5784232,29640751,62496121>, r=50246685 -pos=<-15428974,17471422,52568175>, r=56737766 -pos=<-2932788,33823267,68046768>, r=57128261 -pos=<63579456,43455645,46047101>, r=57541191 -pos=<15403015,31974701,112979009>, r=81876224 -pos=<-24087841,19769551,56050682>, r=66580826 -pos=<-11649390,82772147,39945831>, r=96130620 -pos=<20266288,41030544,49627298>, r=52471876 -pos=<15271488,104802139,55747920>, r=97604129 -pos=<-17294454,29095937,38121063>, r=49924113 -pos=<-28047432,15028531,34900811>, r=73659132 -pos=<63036558,50019938,71871561>, r=89387198 -pos=<-34801957,36642230,53036734>, r=76806612 -pos=<-38144076,30407351,68440798>, r=89317810 -pos=<3512495,54767308,49076598>, r=52656960 -pos=<14274088,34274498,46377106>, r=89548213 -pos=<39329258,25136254,46456590>, r=73770931 -pos=<-43496380,31317940,30852295>, r=85616814 -pos=<14184631,31298574,54769039>, r=52386260 -pos=<80496193,20583845,74488856>, r=92746549 -pos=<-23389071,63823214,32693625>, r=96173548 -pos=<-25690209,44737890,68493032>, r=91246752 -pos=<-27606431,29594954,78055471>, r=87582356 -pos=<72441600,37663099,5449732>, r=98443349 -pos=<64033149,70075201,56633740>, r=95201164 -pos=<-41252112,41584295,58764742>, r=93926622 -pos=<-12824950,60182885,70449830>, r=95783330 -pos=<63858499,1902299,56897189>, r=77198605 -pos=<-35302433,28371559,42263514>, r=63065421 -pos=<-50193553,13029004,178032706>, r=87155339 -pos=<-10241339,30475433,65035094>, r=58077303 -pos=<27176667,88255399,39199151>, r=70021298 -pos=<3789738,63200642,58556644>, r=70293009 -pos=<-29026962,17065408,63626804>, r=81800634 -pos=<-15528112,28599049,55171449>, r=51624044 -pos=<67553889,-12734884,46684710>, r=85318716 -pos=<-22058789,25579659,47800035>, r=50491043 -pos=<65502868,77153034,48367762>, r=95482653 -pos=<52012555,29111973,69892338>, r=55475892 -pos=<7094796,39275693,83735416>, r=68242166 -pos=<1860284,40455320,92877446>, r=83797940 -pos=<11928924,-2446863,70048662>, r=66778312 -pos=<7667696,94196419,41409153>, r=86774357 -pos=<-47571004,37469854,46817463>, r=84183789 -pos=<-4156736,84010739,52365610>, r=92858630 -pos=<6056924,12888978,84519517>, r=71785287 -pos=<-47345906,30387796,45986301>, r=76045882 -pos=<-14305750,38815805,53464135>, r=58911123 -pos=<-5509681,53176769,46879448>, r=57891332 -pos=<-12499446,35923605,56390435>, r=57139055 -pos=<-52764985,37485922,49356853>, r=91933283 -pos=<-995676,157395073,-3073485>, r=52828911 -pos=<20007537,18034710,53163539>, r=53689323 -pos=<14489164,16396768,90904833>, r=66230860 -pos=<-56656961,29846250,59765242>, r=98593988 -pos=<12580077,72518760,77049199>, r=89313340 -pos=<100504676,32770164,49001641>, r=86735485 -pos=<56363428,40982042,51325603>, r=53130348 -pos=<67579027,45292106,26873551>, r=79786057 -pos=<26991023,51464352,68172728>, r=51087111 -pos=<-2477721,38040811,90549029>, r=83393046 -pos=<39812282,49420172,27946843>, r=55074069 -pos=<-7592987,58715561,48320434>, r=66954427 -pos=<7777052,28459937,51985707>, r=53419415 -pos=<-34825568,30793001,25736210>, r=81537269 -pos=<-24303136,54965408,48394944>, r=79988927 -pos=<-23117889,8738217,68644161>, r=89235517 -pos=<-25024083,8306905,47947646>, r=70876621 -pos=<2007442,56985136,59636415>, r=66939562 -pos=<-13687550,71578246,57121637>, r=94712935 -pos=<-16345760,32983233,89061217>, r=90715694 -pos=<86368374,35824210,61445425>, r=88097056 -pos=<-35743614,53334234,57645839>, r=99049305 -pos=<-15191744,62377081,28606960>, r=90616727 -pos=<15180924,74088799,62177344>, r=73410680 -pos=<87747671,31399471,31905651>, r=81030076 -pos=<490300,35168974,87629502>, r=74633619 -pos=<-7639730,47107985,53037366>, r=60110529 -pos=<-15154000,47565888,46724248>, r=61769578 -pos=<-15930553,8949295,49890450>, r=63083820 -pos=<-2085646,59550216,190147611>, r=69262241 -pos=<7225777,50890764,62861738>, r=58852281 -pos=<90275849,20142660,46920592>, r=75399045 -pos=<-26764544,42182428,46746825>, r=68019674 -pos=<76321467,29233298,55996378>, r=66010239 -pos=<-72399950,54572749,137176788>, r=75623903 -pos=<20511710,69381130,54777605>, r=55972482 -pos=<11171812,-1838585,60251989>, r=57130513 -pos=<-15322219,34977106,95397324>, r=98022178 -pos=<45186029,75515109,54316351>, r=79476635 -pos=<-33243023,32685580,54621141>, r=72875433 -pos=<-61584462,35077699,48778369>, r=97765970 -pos=<-2080973,32701858,77315532>, r=64423903 -pos=<-28378799,39591108,22227847>, r=87396852 -pos=<-8099746,62641467,55946146>, r=79012806 -pos=<-24720179,45274695,48132554>, r=70452861 -pos=<20784250,45013508,95099754>, r=71654519 -pos=<-30064753,33988072,46097252>, r=62475758 -pos=<34563348,30488217,55672227>, r=86287854 -pos=<-16742541,7677207,74209817>, r=89487059 -pos=<48717911,60141573,64839376>, r=78157946 -pos=<11980231,77201897,12503508>, r=94373076 -pos=<-35767666,29757894,59267775>, r=77118779 -pos=<-22126819,32362172,682297>, r=95461509 -pos=<-20183006,18654168,80542091>, r=88282618 -pos=<29158741,90530365,43109268>, r=70368234 -pos=<78589607,47357015,57145573>, r=87551217 -pos=<53822697,51713673,83991488>, r=93986944 -pos=<-37287747,28688663,72807970>, r=91110215 -pos=<13542941,37989744,51992083>, r=61754737 -pos=<14525371,30291586,55624740>, r=74352172 -pos=<65594982,25847880,72811378>, r=70903881 -pos=<85028254,32319009,59775298>, r=81581589 -pos=<-47952231,24568531,49936283>, r=79531659 -pos=<-21321958,21913518,49475661>, r=55095834 -pos=<-48453939,34233126,49830769>, r=84843339 -pos=<99391685,35202974,43142729>, r=85240537 -pos=<22710331,34170304,55092906>, r=91207796 -pos=<-12135705,32243191,63938331>, r=60642766 -pos=<-12338157,43480193,54115729>, r=62259632 -pos=<8622864,24881999,3805702>, r=58230495 -pos=<34000374,4364405,71395390>, r=59376643 -pos=<-19712623,50327429,47038637>, r=69404671 -pos=<-8596487,17062414,87164926>, r=84910663 -pos=<-18913938,45008114,51843283>, r=68090880 -pos=<19472967,181579393,106030809>, r=56142937 -pos=<-17173370,-3226764,55066991>, r=81678816 -pos=<63850431,62835473,23871657>, r=96602589 -pos=<-3798894,30299579,101412001>, r=87836232 -pos=<9068586,62089120,57368844>, r=62714847 -pos=<-22474207,29499886,47923819>, r=52223751 -pos=<-45651602,35036414,46323892>, r=79337438 -pos=<-12419250,32111741,56514558>, r=53370983 -pos=<12664542,52854651,103268523>, r=95784065 -pos=<22357114,12328694,108875611>, r=80401468 -pos=<-6746842,50055566,49180574>, r=58308458 -pos=<-27320265,33686937,48286622>, r=61619350 -pos=<-5359976,29458721,92619986>, r=79764181 -pos=<10052919,30248699,46342959>, r=64500134 -pos=<31603672,24458394,109318746>, r=74809324 -pos=<15363324,39635782,101274262>, r=77872183 -pos=<13846270,53578231,29556061>, r=51830690 -pos=<-15354477,46149883,46658194>, r=60488156 -pos=<-569362,85626876,46006904>, r=84528844 -pos=<10749296,42284246,82711135>, r=66571646 -pos=<-14856420,53289609,77345425>, r=97817094 -pos=<-23825436,15929136,64937891>, r=79045870 -pos=<89568342,30383137,46009564>, r=70420359 -pos=<13145554,32649278,85217834>, r=57047183 -pos=<554467,16643477,85598183>, r=74612189 -pos=<36666635,41828463,88364574>, r=71318747 -pos=<12602990,89529451,67821002>, r=97072935 -pos=<-33112360,18329619,59694200>, r=80688742 -pos=<-15561603,38236853,67667639>, r=73791835 -pos=<3519076,58523179,5256274>, r=91402635 -pos=<37058015,73816180,6497217>, r=98165326 -pos=<-485820,34664283,76480969>, r=63956703 -pos=<8046540,50222182,60417372>, r=54918488 -pos=<6698732,2095928,57478145>, r=54895175 -pos=<-110267625,103715108,49404770>, r=83596582 -pos=<14488717,37517183,47868787>, r=90880734 -pos=<11594929,31481958,92334208>, r=64546675 -pos=<13142664,33433973,51871828>, r=78783673 -pos=<14725843,21079396,84588725>, r=54995145 -pos=<17991922,28746415,53178977>, r=62665596 -pos=<21345476,109893878,54658351>, r=95532225 -pos=<99514509,32213492,45962288>, r=82149323 -pos=<37772543,40405568,108402968>, r=91040181 -pos=<16477866,1889108,-9755558>, r=86930037 -pos=<6066766,45074819,93307079>, r=84640752 -pos=<63259627,39790194,63298460>, r=70807277 -pos=<85870661,25697065,48142683>, r=66661876 -pos=<-20063299,13270466,81943036>, r=94947530 -pos=<9219021,14187810,110350611>, r=93155487 -pos=<11396690,79601451,29059476>, r=80800086 -pos=<-5992626,63895408,63403216>, r=85617223 -pos=<13745746,56178190,15154849>, r=68932414 -pos=<-19200598,41415603,54301128>, r=67242872 -pos=<66801369,67709049,33790327>, r=94508881 -pos=<-58054899,31429373,50412427>, r=92222250 -pos=<17725131,19747008,101361033>, r=70100661 -pos=<16315702,21937157,109577476>, r=77536345 -pos=<-21450279,31429149,47689387>, r=52894343 -pos=<16503867,46780903,71008828>, r=53611297 -pos=<-10617311,71781674,53581209>, r=88305651 -pos=<-18369624,34464166,58808640>, r=63968022 -pos=<-44338154,47516775,49329347>, r=93509756 -pos=<7546939,23561808,74615854>, r=49718921 -pos=<-23553075,43233473,30179868>, r=78262286 -pos=<-33728549,33419608,75400040>, r=94873708 -pos=<4130401,-415851,60422323>, r=62919529 -pos=<12199308,42656684,46658363>, r=62914010 -pos=<-10823045,40017720,87358982>, r=90525236 -pos=<54855928,43498518,54679995>, r=57493498 -pos=<12261573,29515175,45893575>, r=97366173 -pos=<15817533,48376146,72425161>, r=57309456 -pos=<22499943,43484899,49303866>, r=84870164 -pos=<15087449,40820405,15442472>, r=51945357 -pos=<2380830,39189079,87564730>, r=76698440 -pos=<10292232,61644825,58639264>, r=62317309 -pos=<-25063352,29824290,49726684>, r=56939825 -pos=<9247300,60592893,82851862>, r=86522910 -pos=<34974237,51631378,71206261>, r=62271044 -pos=<11115341,39008866,88216499>, r=68435471 -pos=<-47347839,33255463,54507917>, r=87436830 -pos=<-12385471,35476634,66586332>, r=66774052 -pos=<40297014,43609070,76102045>, r=64467152 -pos=<-25028316,48459326,70188306>, r=96001387 -pos=<29716238,95743100,36047260>, r=83200834 -pos=<-2195894,57161709,59974579>, r=71657615 -pos=<-34897564,36092514,37195303>, r=75449626 -pos=<-34350080,30930206,62762967>, r=80368703 -pos=<-13299160,-1305686,52546724>, r=73363335 -pos=<74203994,40071747,39943051>, r=68121068 -pos=<-30255218,53252625,55149209>, r=90982504 -pos=<-23708755,36047177,30518158>, r=70892646 -pos=<-42225041,28551593,47086408>, r=70188476 -pos=<45093813,91953991,40089158>, r=90747011 -pos=<20989497,-9578662,65146013>, r=59947021 -pos=<-9469151,9360043,19787978>, r=75862353 -pos=<-10455182,76182076,47046337>, r=86009032 -pos=<1489674,30920418,49075947>, r=50871653 -pos=<-1805815,40895592,59548754>, r=54575822 -pos=<22434664,50411195,76723826>, r=57025799 -pos=<1351173,-35240030,57415985>, r=97516622 -pos=<-32995557,45695405,31582059>, r=88763841 -pos=<96147879,48598772,48672050>, r=97877850 -pos=<71556712,165083816,80525352>, r=61212474 -pos=<-26738516,51821211,51973287>, r=82858872 -pos=<-45126452,24625563,45768892>, r=72481504 -pos=<-1724534,91435747,47738636>, r=93224354 -pos=<-42642617,17009143,50075464>, r=81920769 -pos=<52222152,55156460,54199932>, r=66037534 -pos=<8639285,85433958,47459393>, r=76579513 -pos=<10141717,61817092,48597374>, r=52598556 -pos=<47916267,47143215,50290112>, r=49808644 -pos=<-1999143,50275699,76700962>, r=81301257 -pos=<-41681257,20679616,56340422>, r=83553725 -pos=<35884408,41646080,79776061>, r=61765620 -pos=<4301038,52856724,21630776>, r=68579717 -pos=<-40960612,30439627,37255922>, r=75799466 -pos=<35444048,43762938,84706440>, r=68372926 -pos=<79975658,29137911,50197120>, r=63769730 -pos=<93007,44307904,61961116>, r=58501565 -pos=<-32671755,39076539,66101849>, r=90175907 -pos=<-19991034,51969552,46041742>, r=70328104 -pos=<-35314188,37602800,46861313>, r=72103772 -pos=<37201145,71666894,82972323>, r=96299533 -pos=<-49234235,28079826,57132180>, r=86771712 -pos=<8312877,40022919,72604965>, r=56640475 -pos=<39181205,52790049,92153926>, r=88584204 -pos=<7068698,47606987,62510305>, r=55374127 -pos=<30603349,56814294,106942634>, r=98819430 -pos=<16115552,28332758,35601360>, r=54887656 -pos=<10074393,95989908,47950308>, r=86191298 -pos=<-5591354,49710053,47446079>, r=55073040 -pos=<-16059874,70092354,52417407>, r=90895487 -pos=<-3286599,20110685,83441267>, r=72828890 -pos=<-6936335,22574502,22140566>, r=57762340 -pos=<32992478,36116750,76761537>, r=50329801 -pos=<-89483882,3641127,125934475>, r=84985845 -pos=<45083402,48971622,84039680>, r=82553733 -pos=<16543763,-12232511,59927146>, r=61828172 -pos=<-128930120,71482570,52773218>, r=59057806 -pos=<-3321066,36249470,10553454>, r=70672189 -pos=<11035114,-4452527,60224262>, r=59853336 -pos=<-26291008,49849603,66835908>, r=95302073 -pos=<7937807,81400916,47819246>, r=73607886 -pos=<16576233,48187487,42040402>, r=56973312 -pos=<4344158,75290424,35788694>, r=76812485 -pos=<32189900,-55403075,49857150>, r=95795351 -pos=<17696418,36185949,87820170>, r=58635317 -pos=<777488,12020182,61326632>, r=54740630 -pos=<33863194,35023084,109647702>, r=82992971 -pos=<27201238,50703815,113905343>, r=96269385 -pos=<13342983,51362786,14113529>, r=65561106 -pos=<-3406344,1514525,71500197>, r=79603699 -pos=<-4003952,88211664,52599168>, r=97140440 -pos=<7364870,66805533,30929588>, r=70166122 -pos=<4337235,69741240,49137686>, r=66867686 -pos=<39289283,41543331,80086140>, r=65377837 -pos=<31061019,37187231,96617615>, r=69325024 -pos=<12227872,90873558,49623164>, r=80594302 -pos=<-29205869,34879980,48574906>, r=64986227 -pos=<-23428908,25034353,70988758>, r=75595080 -pos=<31236415,75651801,72043812>, r=83391270 -pos=<-35663336,33550704,50545521>, r=72085007 -pos=<-25373194,33271630,48939058>, r=59909386 -pos=<81186014,21770112,48774152>, r=66535373 -pos=<-36266473,21205391,64408172>, r=85681063 -pos=<46509791,41930052,-8736829>, r=90965014 -pos=<-22028107,15234691,51487555>, r=64492638 -pos=<-20542339,31539802,48757530>, r=53165383 -pos=<13662571,56928981,15523678>, r=69397563 -pos=<-12746344,18867316,85938166>, r=86028894 -pos=<-301007,47558794,60352290>, r=60537813 -pos=<32207624,60299805,78729522>, r=75695968 -pos=<100081770,31328053,46754080>, r=82623316 -pos=<-48070787,30652729,47098499>, r=78147703 -pos=<3499835,47702960,54008261>, r=50536940 -pos=<-30212070,27990135,63986849>, r=74514607 -pos=<-15832151,28224015,56445561>, r=52827166 -pos=<-67978767,28737500,46365512>, r=95407212 -pos=<-30015019,22627881,66498575>, r=80097431 -pos=<-3376964,87518399,46889764>, r=90110663 -pos=<-12133745,41888151,15297059>, r=80379652 -pos=<-3430750,43859378,-4475364>, r=93420295 -pos=<10612582,58698878,71450281>, r=71862044 -pos=<-16853417,30239412,55512427>, r=54930714 -pos=<9856655,-15034177,76105296>, r=87495006 -pos=<19700487,14896792,94233323>, r=65848189 -pos=<90908533,40366432,47407308>, r=83141710 -pos=<53053613,45815347,47231085>, r=50559042 -pos=<91606120,30241005,62870344>, r=89176478 -pos=<6549177,28253488,45947118>, r=89716871 -pos=<-54966251,31984766,51327953>, r=90604410 -pos=<11739879,47302011,70593259>, r=58480946 -pos=<17782015,-43385757,45900297>, r=77715722 -pos=<-22321136,33175591,26785779>, r=70365922 -pos=<7447288,64317364,46803776>, r=55999602 -pos=<7212096,101522192,49782085>, r=96417911 -pos=<9756698,57513943,50726200>, r=50809212 -pos=<53938302,42703477,85380074>, r=86480889 -pos=<6127018,32634301,81765609>, r=60598446 -pos=<16024259,75089269,42148970>, r=58570841 -pos=<-14467950,30833664,53148474>, r=50775521 -pos=<1055620,-8213227,49647151>, r=63016576 -pos=<20109959,34289334,98011242>, r=64516119 -pos=<-51406886,30261849,39781808>, r=83541835 -pos=<21609187,48166640,103039225>, r=81922186 -pos=<-37318020,42076555,46223326>, r=77943551 -pos=<-9802864,50149053,57309602>, r=69587023 -pos=<8892924,30956296,4508427>, r=59209772 -pos=<17951962,38815438,50096954>, r=68485096 -pos=<12306030,97501425,46533603>, r=84054466 -pos=<-37463875,31083117,49553934>, r=70426366 -pos=<92230728,52683980,47015111>, r=96388808 -pos=<9364608,56647782,54993450>, r=54602057 -pos=<8684942,36838535,105538060>, r=86017275 -pos=<-35827611,42789189,57956518>, r=88898907 -pos=<5807845,31720781,7757680>, r=59810369 -pos=<-25365859,48253374,51239130>, r=77183993 -pos=<-13706311,23188045,2328735>, r=83730603 -pos=<-1053434,40958215,58697392>, r=53034540 -pos=<16686564,43884661,76779893>, r=56303739 -pos=<94046858,44171067,48044994>, r=90722205 -pos=<-59177933,25088148,47504944>, r=87806389 -pos=<-18654288,54793837,56331529>, r=82105172 -pos=<113519092,134203172,41554166>, r=95154840 -pos=<9436438,34715386,46078979>, r=73810378 -pos=<49732913,61362619,75247356>, r=90801939 -pos=<-54495041,22320842,50939618>, r=89325794 -pos=<12427539,17900057,11259909>, r=53954136 -pos=<16888421,45562882,95425764>, r=76425888 -pos=<-13394846,17877372,48322242>, r=50051600 -pos=<-20925432,28703245,52084455>, r=54038872 -pos=<8561924,38380609,101695915>, r=83840427 -pos=<76633366,35686884,48280680>, r=65060182 -pos=<15355031,32838431,53406732>, r=83822095 -pos=<-22241568,21612015,21308708>, r=74861862 -pos=<-45540364,39478825,56854957>, r=94199599 -pos=<-130761639,-7225545,18556230>, r=71625415 -pos=<12371981,60358241,50483820>, r=50795545 -pos=<-52881118,38556375,50525246>, r=94288177 -pos=<-5508845,44982595,39309821>, r=52836406 -pos=<-12223578,42705080,48054452>, r=55308618 -pos=<19782229,-391087,65138940>, r=51959480 -pos=<11688897,65712575,56641017>, r=62990663 -pos=<26728983,4877916,77607591>, r=57803924 -pos=<-66749809,31885857,41453884>, r=98836603 -pos=<12947494,40474371,72186292>, r=52038612 -pos=<22710949,73206326,90156950>, r=92977765 -pos=<21418285,58754538,74497516>, r=64159328 -pos=<-14006029,39388620,45791459>, r=51511854 -pos=<32331392,-9548718,53912995>, r=54138363 -pos=<-11103143,48665873,60597818>, r=72692378 -pos=<8404016,40264319,-15387292>, r=88902405 -pos=<-60697351,19761606,51535474>, r=98682907 -pos=<113332017,31654847,49314512>, r=98760760 -pos=<-17968649,23774520,26514627>, r=63220547 -pos=<-7891448,38548696,51246202>, r=50011819 -pos=<-36243928,28580831,31232834>, r=75246710 -pos=<2236746,78152395,33336820>, r=84233689 -pos=<-42646767,27988371,50996303>, r=73957310 -pos=<-12975938,19343337,62716304>, r=62560618 -pos=<-6698310,59281250,50138827>, r=68443906 -pos=<-29169469,6610144,55165008>, r=83936144 -pos=<-859099,48228088,68790664>, r=70203324 -pos=<-53259426,43091307,49454062>, r=98130240 -pos=<40051035,15273208,52961854>, r=55405641 -pos=<8599969,22173989,57555102>, r=96158345 -pos=<11561358,34996323,107452493>, r=83213190 -pos=<12971841,75769901,53455514>, r=68579059 -pos=<-24609077,31137632,12599716>, r=84801836 -pos=<39964941,58818274,67271078>, r=70513393 -pos=<11590874,44091058,16246818>, r=57908243 -pos=<11534010,42492557,73281128>, r=56565109 -pos=<46029692,44356665,33034407>, r=51140346 -pos=<230818789,28332006,48666836>, r=77009932 -pos=<-49307134,28877489,51162598>, r=81672730 -pos=<-24858611,61344602,49583599>, r=88112245 -pos=<-33971422,31026034,46645662>, r=63968617 -pos=<-14920621,60364341,48024490>, r=75635084 -pos=<-18886432,44383739,46645651>, r=62241356 -pos=<63367787,57050728,56716295>, r=81594314 -pos=<-29235501,30020585,46865414>, r=58446946 -pos=<-1116549,51739608,46803263>, r=51985095 -pos=<-12898335,8922965,49532990>, r=59720175 -pos=<11377440,35121435,54012286>, r=63237886 -pos=<-28362629,38084006,47961632>, r=66733755 -pos=<-32732759,53759806,34185847>, r=93961530 -pos=<-2049132,35100887,26872869>, r=51932182 -pos=<10307391,63192491,78308824>, r=83519668 -pos=<-11173886,50879581,47031969>, r=61411041 -pos=<-6714487,69428860,48945046>, r=77413940 -pos=<-35145310,126288277,94537390>, r=86514887 -pos=<15372059,77344628,57152598>, r=71450857 -pos=<-5534049,28501573,47802916>, r=70800310 -pos=<30282369,-27855631,57777471>, r=74260879 -pos=<27578388,34577846,94631718>, r=61246950 -pos=<5377307,28529784,46392652>, r=82994735 -pos=<-9288964,40034367,85892017>, r=87541479 -pos=<32663376,50111633,96347262>, r=83581281 -pos=<64590061,24883190,74402048>, r=72454312 -pos=<6011059,52895297,-9651139>, r=98190405 -pos=<-40075559,29164760,46796031>, r=68361786 -pos=<-27324257,33280398,58797836>, r=71727947 -pos=<65478625,51242475,73962244>, r=95142344 -pos=<-8161052,44514515,51881665>, r=56882708 -pos=<37117480,70516429,65453164>, r=77546136 -pos=<-66556175,24793456,46807708>, r=94782274 -pos=<6745175,-9697218,46249405>, r=55413236 -pos=<-15842202,54067556,49741202>, r=71976478 -pos=<-26234670,32761687,62384539>, r=73706383 -pos=<27047080,45210798,96262259>, r=72979567 -pos=<-54875381,19475504,41999639>, r=88941400 -pos=<15588049,51830394,45712337>, r=63164637 -pos=<78521098,9084198,53510654>, r=81292772 -pos=<-35117158,30884180,40930824>, r=66725315 -pos=<38517388,31310367,53377273>, r=93263507 -pos=<-34824848,35863485,57039123>, r=80052924 -pos=<87999262,21593229,36952685>, r=77127999 -pos=<-14970039,39281480,31602555>, r=64303877 -pos=<30996868,32710257,-7944148>, r=65439616 -pos=<-46544578,32730823,48455778>, r=80056612 -pos=<-25655223,54235827,24268664>, r=97277174 -pos=<-31661104,34739101,46810221>, r=65535871 -pos=<-15725105,33623089,58648908>, r=60322582 -pos=<30366481,48524611,105759957>, r=89110268 -pos=<7896511,67058144,60224279>, r=71711348 -pos=<8886133,36820409,69879921>, r=50139913 -pos=<-35009499,24967338,48346229>, r=64600051 -pos=<12236743,61232811,36406256>, r=54244674 -pos=<32133015,71147471,65672434>, r=73411928 -pos=<-4312430,48491142,58819757>, r=63948774 -pos=<-11255504,48618070,49019953>, r=61218979 -pos=<-36126448,28661597,45905741>, r=63019487 -pos=<6995492,-14641677,39110487>, r=64076982 -pos=<-494882,62507397,74981307>, r=90309172 -pos=<21658971,20515757,32538766>, r=68078733 -pos=<-42721200,2165630,50987236>, r=97754561 -pos=<-46441522,14810192,60365689>, r=98209160 -pos=<48051150,31166319,50307623>, r=70921992 -pos=<28821739,29694631,-1122960>, r=53427671 -pos=<-54273229,34572094,50463893>, r=91634895 -pos=<14673784,34863932,82993530>, r=55509157 -pos=<-32934723,17649588,51138183>, r=72635067 -pos=<-50994378,41060824,52259311>, r=96639953 -pos=<-13412903,29052830,62027839>, r=56819094 -pos=<16028543,72922360,86313287>, r=95532757 -pos=<-29190239,30088199,43593943>, r=57339282 -pos=<-67676350,28809916,49909454>, r=98721154 -pos=<-43374507,39597274,53913745>, r=89211024 -pos=<-27366900,30364601,50115222>, r=60172177 -pos=<16917628,52399768,64291470>, r=52099066 -pos=<41279617,21014635,54307699>, r=93725431 -pos=<1365818,19740622,70504983>, r=55610202 -pos=<-54647289,29012271,49857475>, r=85842468 -pos=<44221414,66917783,53886884>, r=69485079 -pos=<-9940873,70529264,26788845>, r=95336159 -pos=<-2891536,43027095,81243592>, r=79487809 -pos=<16856578,70770998,65638794>, r=71878974 -pos=<48647431,57474901,3221288>, r=96689472 -pos=<18398962,37387340,106423442>, r=77737407 -pos=<6875506,40281303,93455690>, r=79187050 -pos=<2454291,28249463,81600089>, r=59720809 -pos=<-1468549,29220087,631469>, r=71712205 -pos=<1576323,77863026,52114347>, r=80726896 -pos=<11328724,-1103809,57250256>, r=53237238 -pos=<14166873,32412130,88906135>, r=59476952 -pos=<68172516,66679724,50794113>, r=90105431 -pos=<-4882904,63239852,64521058>, r=84969357 -pos=<-39573626,43281992,58908860>, r=94089955 -pos=<47082853,25450033,45728957>, r=77686997 -pos=<30259034,36081601,79825507>, r=50625134 -pos=<13485963,34007713,111156423>, r=84003646 -pos=<-103414983,93539548,30098680>, r=85922019 -pos=<-6802701,-3790574,59234245>, r=76039201 -pos=<82390172,51540341,50478214>, r=88867872 -pos=<5396715,-12159909,37977747>, r=64326869 -pos=<60082922,38998779,61741375>, r=65282109 -pos=<-16364819,10714145,61687053>, r=73549544 -pos=<-58301485,30719708,55794510>, r=97141432 -pos=<16352057,56953747,89166657>, r=82093799 -pos=<-34630538,59464956,51639108>, r=98060041 -pos=<490228,30703545,109025168>, r=91563918 -pos=<-6013632,8426824,52874814>, r=56673453 -pos=<-36209880,25159205,51113229>, r=68375671 -pos=<17796723,1411910,80111570>, r=67114697 -pos=<-31889116,28510083,45862954>, r=58587653 -pos=<19168448,33254095,39684567>, r=98395168 -pos=<-6095859,46062067,73594989>, r=78078378 -pos=<-304797,59105732,57302395>, r=69038374 -pos=<55099745,36449947,86305322>, r=82314003 -pos=<33473188,6098096,-4438050>, r=79487709 -pos=<-31472777,36089404,51315048>, r=71202749 -pos=<15962314,28423814,-7317040>, r=61433573 -pos=<7998189,2801039,69890583>, r=65303215 -pos=<130870385,104831832,11196492>, r=68126888 -pos=<-5327566,58947831,12940865>, r=92989660 -pos=<3824920,57094208,49926985>, r=55521839 -pos=<-1717656,36673098,102114555>, r=92830763 -pos=<-6542148,37528701,53564176>, r=49960544 -pos=<-14811298,29054822,83783336>, r=79975290 -pos=<-37201984,61523961,41570442>, r=98810391 -pos=<20636169,30198837,103026121>, r=64914223 -pos=<10371395,31519349,55590694>, r=62337567 -pos=<31884149,40789942,72870652>, r=50003827 -pos=<-30398435,29198407,42512686>, r=58738952 -pos=<43939568,28346223,78157090>, r=54901870 -pos=<9128846,67552702,83250788>, r=94000232 -pos=<-2588856,30760371,91977867>, r=77653177 -pos=<15962420,82995471,76760935>, r=96119428 -pos=<-33661280,31365698,48813484>, r=66166075 -pos=<-16115499,43852463,46308402>, r=58601848 -pos=<-6987272,33841983,84781289>, r=77936013 -pos=<-485860,34594456,81980122>, r=69386193 -pos=<-15363694,37898885,53146470>, r=58734501 -pos=<-17124380,71830052,45774058>, r=87053925 -pos=<8219084,70226598,55923252>, r=70256199 -pos=<-3903209,29453615,46544603>, r=75288840 -pos=<-9159457,25097083,71581481>, r=61856037 -pos=<-6436575,16618931,70357346>, r=66386656 -pos=<-8806699,29246129,72352585>, r=62730916 -pos=<68862343,36688765,49225208>, r=59235344 -pos=<-79171684,112113447,67348279>, r=92995215 -pos=<2638935,25190324,85791990>, r=64174419 -pos=<14827988,29466545,48474491>, r=98818958 -pos=<-14381380,32037768,62743833>, r=61488450 -pos=<3154619,88011848,41382872>, r=85129150 -pos=<51747013,31306559,79606148>, r=67118845 -pos=<4782291,34063349,70169217>, r=51776099 -pos=<-39091050,45657329,51675336>, r=88749304 -pos=<-26634338,29826468,49344705>, r=58131168 -pos=<28955639,11886714,83389681>, r=58803847 -pos=<-13895377,39956378,49929456>, r=56106810 -pos=<-20174467,38776446,18529455>, r=82076331 -pos=<11908029,50316295,76200518>, r=66934331 -pos=<79036827,16924288,76062556>, r=96520365 -pos=<9584540,67893747,64596741>, r=75231780 -pos=<1999297,28072699,90660851>, r=69059706 -pos=<-4999516,1406744,49697518>, r=59502059 -pos=<-12138046,52832626,53760320>, r=71057036 -pos=<14911107,50532270,74102432>, r=62049081 -pos=<-28076669,-5209886,42939079>, r=85888492 -pos=<-1381979,35962916,89448258>, r=79118686 -pos=<-27555180,38443112,78090455>, r=96414564 -pos=<-45684157,22499678,51249216>, r=80645467 -pos=<-33262343,42412693,21018032>, r=96311801 -pos=<-24933943,30266769,36206604>, r=60648927 -pos=<47087640,55749463,76069992>, r=83366515 -pos=<40948562,39725308,77828570>, r=62961879 -pos=<-21047756,32265813,60780681>, r=66419686 -pos=<37924327,42452651,67877724>, r=52713763 -pos=<-58689938,30781189,50489915>, r=92286565 -pos=<13216582,64885410,61404468>, r=65398749 -pos=<-43382614,29830485,70345833>, r=95884395 -pos=<-20520219,36470699,75190567>, r=84507131 -pos=<14237854,59338973,85949685>, r=83376237 -pos=<-450228,37867875,64907958>, r=55551952 -pos=<17760677,61033651,84995936>, r=80594372 -pos=<22176975,82022403,46533128>, r=58704060 -pos=<22779974,94329178,17857701>, r=95346900 -pos=<-38001053,34049218,49600706>, r=73976424 -pos=<16848379,29946291,48116237>, r=55533891 -pos=<-42631692,35454176,53098888>, r=83510344 -pos=<4649340,48178580,58429391>, r=54284128 -pos=<847183,51607513,81674534>, r=84760407 -pos=<-21437870,4973092,57201053>, r=79877495 -pos=<-31919810,30134447,55487065>, r=69866771 -pos=<-27341158,67125553,48484104>, r=95276520 -pos=<34772295,-8690710,66519732>, r=68327958 -pos=<-31969415,39408252,48343122>, r=72046242 -pos=<102875003,13271850,46851582>, r=94799961 -pos=<-12487583,35034265,55339911>, r=55187220 -pos=<9093156,39769707,84017977>, r=67020115 -pos=<-16380910,41574541,66165228>, r=76446125 -pos=<78145797,37164108,49128463>, r=68897409 -pos=<12696275,29248422,93349910>, r=62227566 -pos=<3806267,80300805,32983373>, r=85166064 -pos=<96882526,36942217,48757938>, r=87041670 -pos=<-171249798,39499790,57712028>, r=97294519 -pos=<-2013420,51530722,55656270>, r=61525906 -pos=<10506453,22608309,43074519>, r=92987198 -pos=<-12980027,57643628,73634339>, r=96583452 -pos=<9759074,34807718,46383535>, r=76510831 -pos=<-46481921,33185083,62928260>, r=94920705 -pos=<-41982125,32478135,69194276>, r=95980083 -pos=<6066850,16557724,-23317282>, r=96233732 -pos=<-27420476,39804614,13027130>, r=95852751 -pos=<-35598484,27994414,43416148>, r=61831662 -pos=<53497255,74968025,34467126>, r=87786515 -pos=<5629165,76030721,52476464>, r=75203884 -pos=<-52112524,15110086,40185629>, r=92357875 -pos=<-23905340,18683396,67786661>, r=79220265 -pos=<1204692,65009004,78621903>, r=94751674 -pos=<-10066560,46695198,48547405>, r=57634798 -pos=<10289802,-10697128,21104545>, r=74844012 -pos=<-40310292,28833507,46959457>, r=68428878 -pos=<-13764816,49841026,61895287>, r=77826610 -pos=<-19679027,58605601,66152788>, r=96763074 -pos=<8809311,33356810,46152100>, r=63432984 -pos=<-29709153,29461995,49058531>, r=60555118 -pos=<-13129092,-9705209,46828679>, r=75874660 -pos=<102118197,31480871,42422516>, r=84965146 -pos=<-32517383,30565130,33503263>, r=71234788 -pos=<9534874,52896280,70697014>, r=66384094 -pos=<16880678,65311318,51702479>, r=52458646 -pos=<-36132788,43209378,55775064>, r=87442665 -pos=<22744530,34380596,134099136>, r=98061118 -pos=<-26547963,41862023,60462772>, r=81198255 -pos=<-545734,40978449,60677738>, r=54527403 -pos=<16538063,68562231,28273188>, r=65405796 -pos=<14494679,58745235,31512009>, r=54393346 -pos=<7791169,67262375,35493930>, r=65632071 -pos=<8485973,48520508,103076567>, r=95436538 -pos=<8214274,28745216,50655896>, r=92680074 -pos=<-6937397,27971689,49092605>, r=65350532 -pos=<-22481435,9380958,40012423>, r=68629066 -pos=<62129884,16597211,12546768>, r=80660497 -pos=<6258688,62081024,87730516>, r=95878363 -pos=<-32278381,28495170,53585234>, r=66684251 -pos=<8040391,72063718,51083757>, r=67432585 -pos=<-5673174,25046673,73686241>, r=60524423 -pos=<-8001243,63756911,61002978>, r=85086692 -pos=<-26577068,41949907,46813510>, r=67665926 -pos=<27314118,87945331,52949180>, r=72667621 -pos=<-20191543,30416348,7242015>, r=85020749 -pos=<-40509210,25805511,61018374>, r=81933846 -pos=<-27572422,16102428,56368833>, r=74050704 -pos=<-11240828,50248391,27895560>, r=75248609 -pos=<34613570,41153477,100115019>, r=80341645 -pos=<15579024,9723842,69284527>, r=50193328 -pos=<-46066212,37488646,47288596>, r=83168980 -pos=<16651399,81480864,60218612>, r=77373965 -pos=<-4490123,12256693,29836426>, r=57938091 -pos=<-9722027,38414943,53203837>, r=53666284 -pos=<-17608773,53047624,65044179>, r=88026024 -pos=<-46201175,24018662,58511638>, r=86905837 -pos=<83707615,22862590,47033198>, r=66223477 -pos=<75278564,31837146,46877582>, r=58452382 -pos=<66228245,28297748,1246309>, r=87068293 -pos=<-41563889,138361221,22834552>, r=92320836 -pos=<-15149458,41692211,57568440>, r=66735557 -pos=<-29959760,29199939,50714596>, r=62199729 -pos=<42142694,49570710,97616140>, r=93788536 -pos=<61202922,61131481,71470186>, r=98263590 -pos=<29827492,38051686,24415070>, r=56692483 -pos=<17592777,73628928,77556835>, r=85918423 -pos=<-20783874,35242533,54629155>, r=62981079 -pos=<64237574,1302210,73405037>, r=94685683 -pos=<-21188594,47968883,69462691>, r=90945802 -pos=<30657831,49880981,-20723938>, r=95051093 -pos=<22864844,93114017,56937539>, r=79512153 -pos=<36531726,66041045,59031978>, r=66063917 -pos=<19846259,-13074428,65015549>, r=64455431 -pos=<-7113733,38738967,15168250>, r=72339348 -pos=<-25341686,54431754,46334838>, r=78433824 -pos=<20656999,57196763,75771625>, r=64636928 -pos=<-22838713,34493030,27829494>, r=71157081 -pos=<-27835555,38366205,61876949>, r=80404149 -pos=<79754868,48144480,60613367>, r=92971746 -pos=<20721233,45043536,93948762>, r=70596524 -pos=<-46680111,37879564,53763782>, r=90648947 -pos=<16009840,86125003,58588086>, r=81028766 -pos=<20025736,5391570,85015946>, r=65810395 -pos=<33720066,104264468,55486952>, r=97930498 -pos=<-63554526,31193768,49947114>, r=97020908 -pos=<-55699886,23371204,32454537>, r=95415201 -pos=<73230725,36900143,48087090>, r=62677110 -pos=<-32963671,28309367,52478944>, r=66077418 -pos=<5939165,55024902,62755578>, r=64166779 -pos=<-24917309,29082130,46444648>, r=52769524 -pos=<7735621,49034186,60918429>, r=54542530 -pos=<4877732,8430499,59198278>, r=52101779 -pos=<83731770,35839732,49766995>, r=73797528 -pos=<-11074931,33743791,62322816>, r=59467077 -pos=<47699715,55835903,55060273>, r=63055430 -pos=<37657191,-9104085,74776203>, r=79882754 -pos=<-46744861,30151111,64292721>, r=93514232 -pos=<-13186319,46003906,17086538>, r=83758581 -pos=<32840031,56015193,64841941>, r=58156157 -pos=<6062205,42632964,47615029>, r=73781872 -pos=<-19799971,51835559,58790016>, r=82751306 -pos=<-30893469,30656893,46300617>, r=60176438 -pos=<-55830501,22240501,57274377>, r=97076042 -pos=<15868849,46019629,96676898>, r=79153313 -pos=<-16265649,52075245,75590161>, r=96256506 -pos=<14624864,56207969,57618910>, r=51527552 -pos=<318934,59504614,60032696>, r=71543938 -pos=<-23487442,41093331,19776590>, r=86459237 -pos=<67237678,41609284,51037661>, r=64343635 -pos=<-19179700,33732993,56360250>, r=61598596 -pos=<-34730837,5580174,61364913>, r=96727618 -pos=<53061020,1668645,85754857>, r=95492537 -pos=<3877306,43959248,85023639>, r=77431037 -pos=<-10413451,33996655,77197477>, r=73933065 -pos=<-15270541,18375898,55749133>, r=58855471 -pos=<37599773,64150517,58789624>, r=64998919 -pos=<6641382,32884368,86779494>, r=65348099 -pos=<-28989825,39572241,63995218>, r=84883334 -pos=<12972158,71582537,87975353>, r=98911274 -pos=<41852603,48069590,65721204>, r=60103061 -pos=<-12895423,34234299,51393776>, r=50848940 -pos=<76683281,42692313,48821155>, r=72655746 -pos=<9795431,-286238,55311954>, r=52014423 -pos=<-12408641,28693619,67844073>, r=61271790 -pos=<18776047,80030396,38475557>, r=64433947 -pos=<75995398,33442514,24888484>, r=78338116 -pos=<-22764877,22172460,58097441>, r=64901579 -pos=<10239772,40250323,68821851>, r=51158213 -pos=<-6984206,11263546,-3408779>, r=94670545 -pos=<-25723496,46861709,48289286>, r=73199930 -pos=<5729735,28403922,117678625>, r=92678286 -pos=<11079147,38654325,86908021>, r=66808654 -pos=<19012903,51490161,13432661>, r=60699507 -pos=<-19708767,24665073,51422478>, r=52677853 -pos=<2549542,80274103,46746108>, r=76796138 -pos=<-48466554,29995042,56395431>, r=87182744 -pos=<86083343,46696534,52688635>, r=89927531 -pos=<19978558,94248897,26059694>, r=89865438 -pos=<21928133,43444423,89266701>, r=63108468 -pos=<-32662150,34466095,53616954>, r=73070642 -pos=<-4767571,24202491,48306992>, r=52750940 -pos=<-6049891,44411137,66256832>, r=69043725 -pos=<14845730,-1633797,-11680131>, r=94009220 -pos=<65363,73430740,49753549>, r=75444608 -pos=<10919543,55374161,60523054>, r=57303105 -pos=<-33344704,36874381,61740346>, r=84284898 -pos=<90823294,32581102,47524970>, r=75388376 -pos=<56762466,39329407,28284461>, r=61595785 -pos=<14326905,38412743,-13806339>, r=79547110 -pos=<-27408929,29564102,49418580>, r=58717093 -pos=<72828690,34540465,56644790>, r=68473289 -pos=<-23879984,-80533415,-13926388>, r=52569551 -pos=<623363,23117915,46129959>, r=71699945 -pos=<-21310687,28343530,48201114>, r=50180986 -pos=<-11268087,54197123,60947343>, r=78738009 -pos=<62637156,43374891,28845119>, r=70955785 -pos=<101486863,29252465,58609523>, r=93807860 -pos=<-7121743,-17618647,50972485>, r=81924604 -pos=<33712412,33093334,104500328>, r=75765083 -pos=<70057598,30520257,59928664>, r=64965508 -pos=<13577885,32272356,41344051>, r=98076208 -pos=<8955771,46905424,22660149>, r=56944295 -pos=<-31671198,35282234,47777117>, r=67056086 -pos=<-28701991,29968381,30147369>, r=70177802 -pos=<46883174,34145057,15459578>, r=59357035 -pos=<-21541824,-3738229,54506228>, r=85997940 -pos=<-7165905,-13698956,55634555>, r=82711088 -pos=<-42136026,37824576,54914702>, r=87201260 -pos=<75444044,34090961,64356096>, r=78350113 -pos=<27070208,76993574,17498441>, r=80354253 -pos=<-24556265,40605071,29335340>, r=77481284 -pos=<7679148,40322729,74549753>, r=59518815 -pos=<64743952,34069862,51081505>, r=54354571 -pos=<7888777,51012156,-6093924>, r=90872090 -pos=<-38312643,6053130,45786004>, r=84257215 -pos=<-10907447,30880694,71717384>, r=65831363 -pos=<-21415341,33770607,55616361>, r=63127773 -pos=<-9268341,12931923,58776983>, r=61325095 -pos=<53680780,36878021,92991425>, r=88009224 -pos=<16325289,32873290,52486621>, r=50056228 -pos=<2379678,52409295,64101601>, r=66456683 -pos=<12407570,48986679,9677595>, r=68556317 -pos=<-23196672,47847216,47491952>, r=70861580 -pos=<17092834,24513176,91350037>, r=55955816 -pos=<8752629,37508985,49239757>, r=72585978 -pos=<52794942,76928483,47757542>, r=81940023 -pos=<12527582,-6613411,50632808>, r=50930382 -pos=<-70810892,45621857,-48305364>, r=62008194 -pos=<-18412210,36869794,57144258>, r=64752285 -pos=<87656632,20763685,66883781>, r=92122439 -pos=<61764769,33809145,-512978>, r=89875236 -pos=<-21591807,57503330,27237264>, r=93512809 -pos=<-8980322,48822102,24813214>, r=74644293 -pos=<-13586166,29673545,54387395>, r=49972553 -pos=<-21336027,12684379,50240160>, r=65103467 -pos=<15312696,61249932,61078049>, r=59340843 -pos=<3820682,55264026,85971673>, r=89740512 -pos=<-8720944,7901096,48785694>, r=55817204 -pos=<46676113,42744663,57067759>, r=50947525 -pos=<63180707,54936070,46238435>, r=68814227 -pos=<-59988823,31676130,52904181>, r=96894648 -pos=<-55767575,34582277,42911408>, r=89093361 -pos=<-24727493,22617024,22771261>, r=74880311 -pos=<30402823,52581940,78464394>, r=65908330 -pos=<-12446120,14245346,47969322>, r=52381926 -pos=<13932111,12087077,52306416>, r=71083363 -pos=<12361114,5008235,62369519>, r=51211858 -pos=<62655763,37235551,16180822>, r=77498932 -pos=<5158458,57101119,21414371>, r=72183092 -pos=<2908218,33006742,52557556>, r=82743046 -pos=<57439166,18173939,101222852>, r=98833513 -pos=<52238468,31780002,45678724>, r=78491149 -pos=<-45793920,10537217,50965371>, r=92433881 -pos=<-13743952,64107054,54632417>, r=84808943 -pos=<-170006460,33686904,57787874>, r=58950081 -pos=<-26862218,29083237,47085032>, r=55356188 -pos=<794530,52505491,57994889>, r=62031400 -pos=<62469765,31544111,56755533>, r=55228669 -pos=<33597386,32945456,56175425>, r=60893404 -pos=<67662625,38142990,51575060>, r=61839764 -pos=<-48808932,29332298,47264670>, r=77731645 -pos=<-13897506,80448804,52473065>, r=99144940 -pos=<-41499426,33500208,34694650>, r=81959864 -pos=<21500730,1820261,108639134>, r=91529831 -pos=<37273144,59821099,54577329>, r=56130643 -pos=<-21429926,6902774,61057229>, r=81796239 -pos=<3340434,50630706,26961101>, r=61983979 -pos=<20112657,-7766263,32920789>, r=50273913 -pos=<66869619,52342243,67598868>, r=91270061 -pos=<6129880,42603189,67116575>, r=55915349 -pos=<6398878,1688559,79467734>, r=77591971 -pos=<14501207,33194081,103787164>, r=74805573 -pos=<-41363813,41379031,51239687>, r=86308022 -pos=<-5072359,37511009,73502277>, r=68411104 -pos=<9979161,47203323,76860857>, r=66410591 -pos=<8272810,70008182,48415971>, r=62477175 -pos=<16131738,39072448,57020881>, r=66650334 -pos=<-18513223,15536711,73318828>, r=82507011 -pos=<-53344764,29150642,46822282>, r=81643567 -pos=<-19488382,39476575,49309757>, r=60600153 -pos=<17795545,86761153,34350936>, r=76269651 -pos=<-39860391,37740470,42830687>, r=76425286 -pos=<75357927,42659157,48122833>, r=70599033 -pos=<67060727,20786860,43203283>, r=50745152 -pos=<11307310,64243278,77782998>, r=83044472 diff --git a/inputs/24.txt b/inputs/24.txt deleted file mode 100644 index 0c90bb1..0000000 --- a/inputs/24.txt +++ /dev/null @@ -1,23 +0,0 @@ -Immune System: -2991 units each with 8084 hit points (weak to fire) with an attack that does 19 radiation damage at initiative 11 -4513 units each with 3901 hit points (weak to slashing; immune to bludgeoning, radiation) with an attack that does 7 bludgeoning damage at initiative 12 -5007 units each with 9502 hit points (immune to bludgeoning; weak to fire) with an attack that does 16 fire damage at initiative 2 -2007 units each with 5188 hit points (weak to radiation) with an attack that does 23 cold damage at initiative 9 -1680 units each with 1873 hit points (immune to bludgeoning; weak to radiation) with an attack that does 10 bludgeoning damage at initiative 10 -1344 units each with 9093 hit points (immune to bludgeoning, cold; weak to radiation) with an attack that does 63 cold damage at initiative 16 -498 units each with 2425 hit points (immune to fire, bludgeoning, cold) with an attack that does 44 slashing damage at initiative 3 -1166 units each with 7295 hit points with an attack that does 56 bludgeoning damage at initiative 8 -613 units each with 13254 hit points (immune to radiation, cold, fire) with an attack that does 162 radiation damage at initiative 15 -1431 units each with 2848 hit points (weak to radiation) with an attack that does 19 cold damage at initiative 1 - -Infection: -700 units each with 47055 hit points (weak to fire; immune to slashing) with an attack that does 116 fire damage at initiative 14 -2654 units each with 13093 hit points (weak to radiation) with an attack that does 8 radiation damage at initiative 19 -5513 units each with 18026 hit points (immune to radiation; weak to slashing) with an attack that does 6 slashing damage at initiative 20 -89 units each with 48412 hit points (weak to cold) with an attack that does 815 radiation damage at initiative 17 -2995 units each with 51205 hit points (weak to cold) with an attack that does 28 slashing damage at initiative 7 -495 units each with 21912 hit points with an attack that does 82 cold damage at initiative 13 -2911 units each with 13547 hit points with an attack that does 7 slashing damage at initiative 18 -1017 units each with 28427 hit points (immune to fire) with an attack that does 52 fire damage at initiative 4 -2048 units each with 29191 hit points (weak to bludgeoning) with an attack that does 22 bludgeoning damage at initiative 6 -1718 units each with 15725 hit points (immune to cold) with an attack that does 18 slashing damage at initiative 5 diff --git a/inputs/25.txt b/inputs/25.txt deleted file mode 100644 index d359c48..0000000 --- a/inputs/25.txt +++ /dev/null @@ -1,1248 +0,0 @@ --6,2,-8,3 -7,8,-1,-8 -7,-2,-4,-2 -4,-4,2,7 -5,8,-1,6 --1,6,-4,-5 --2,-6,-6,-6 -1,4,7,0 --1,-3,-8,2 -5,-6,-5,-2 --5,7,4,-2 --2,6,-1,6 -5,4,0,-7 -1,5,-8,-3 --3,3,8,2 -4,0,0,6 -4,-8,-3,3 -0,0,-7,-5 --2,0,5,-3 -2,1,7,-1 -1,6,2,2 -4,4,7,-6 --1,0,-1,1 -2,4,4,6 --4,3,-7,2 --5,-2,8,-7 -6,-8,-1,3 --8,-6,-7,-3 -4,1,-7,-1 --7,-5,-4,4 -5,-2,8,-5 --5,-1,4,-4 -3,-3,8,4 -3,8,-8,-7 --3,7,7,0 --7,-5,-3,5 --4,-5,-3,-2 -6,-8,3,8 --2,0,8,7 --4,3,5,7 --6,3,5,0 -5,2,-3,-3 -0,8,0,5 --5,-8,-1,-8 -2,6,0,6 -5,-4,0,0 -3,-2,-8,-5 -8,-4,-7,-7 --3,-7,-8,-2 -6,7,-2,3 -5,0,-6,0 -0,-6,0,2 -8,-4,6,-3 --5,-4,4,-4 -2,0,3,-1 -3,-5,8,5 -6,-1,5,5 --6,-5,-4,8 -7,-4,0,5 -5,3,1,6 --7,2,-3,1 --4,1,-6,-7 --4,4,0,8 --6,4,1,-8 -3,-6,-6,5 -2,-4,-3,2 --2,2,-2,1 -2,-4,0,0 -3,1,4,8 --1,3,-7,-5 --3,-7,2,0 --2,-2,-8,0 -1,6,0,7 --6,-3,0,-1 -7,0,-2,-7 -5,-5,-3,0 -7,0,0,5 --6,5,6,2 -0,8,3,-1 -0,-8,-7,-1 -3,6,7,-7 --2,4,-8,-3 -3,-3,-6,-4 --1,-5,0,2 --7,2,4,0 --2,7,4,-2 -2,4,-1,5 --1,-6,-6,4 -4,-6,-7,-2 --6,6,-4,-2 -5,-5,-2,-6 -4,5,4,0 -3,3,0,-5 --5,4,3,-2 --6,1,7,-6 -3,5,-8,5 --2,8,-2,-2 --5,6,-2,-7 --3,-6,7,-4 --8,-6,7,7 --5,-7,4,-4 --8,-8,-6,7 --7,-1,-2,-1 -3,-1,4,0 -3,6,1,-8 -2,6,-4,0 --6,4,4,6 -7,7,6,-5 -4,-3,-2,7 --1,8,2,-2 -3,-1,-4,5 --2,1,-6,-8 --3,1,7,-1 --7,-1,8,6 -4,2,6,-6 -8,-1,8,-8 -4,6,-1,4 -7,-1,6,5 -0,-6,2,3 --2,-8,-8,-6 -0,6,-4,-8 -4,-8,-7,6 --3,-3,2,2 -2,1,4,7 --3,7,-1,-8 -1,1,-2,-5 -3,-6,-4,7 --3,5,0,8 -3,3,1,0 -1,5,4,6 -7,0,-2,-5 -1,5,-3,7 --1,-4,3,4 --4,3,-2,0 --1,-8,2,0 --8,-8,3,-3 --2,-6,5,2 -8,-1,-3,-6 -2,-8,3,-5 --8,-8,3,4 --3,-5,-7,0 -0,3,1,3 --8,5,-6,4 -2,0,4,-2 --5,1,-7,0 --5,0,-2,1 -4,-7,0,3 -7,0,4,-1 -0,-3,5,4 --8,-8,-2,3 -2,5,4,6 -7,0,-8,-7 --1,8,3,-3 -1,-2,2,-4 --1,-3,3,-2 -4,6,7,-1 -3,8,2,-3 --1,-8,8,7 --8,4,7,-2 --8,2,-8,-7 --2,5,0,-5 --1,-2,-5,-5 -4,6,-2,0 -0,8,0,-4 -2,0,-2,-1 --8,0,-5,0 --2,-8,-5,6 -2,0,5,7 -6,0,7,0 --6,-8,3,-1 -2,2,6,-8 --8,7,-8,7 -5,0,7,-6 -0,-3,6,-4 --5,7,-6,-6 -2,5,0,-6 --6,8,-3,3 --8,-7,-1,-8 --1,3,0,0 -1,2,3,-7 --5,-1,7,2 -4,2,0,2 --6,-6,-1,-2 -1,0,8,-1 -0,-1,-8,7 -2,2,-6,-4 --2,3,2,6 --6,-6,-2,-3 --2,6,-2,1 -4,0,-8,7 -4,8,1,-1 -4,2,-2,5 -1,-2,-6,1 -1,5,-5,-4 -0,8,7,-6 -8,8,2,-3 --3,-4,-5,3 --2,6,-8,-1 --2,-2,-4,2 -0,6,-3,7 -8,3,-3,7 -6,0,-1,-6 -8,8,3,0 --7,0,8,7 --5,7,-2,0 -2,-7,7,3 -8,-5,0,0 --6,-8,1,-7 --7,-3,0,5 -5,6,1,-7 --3,8,-3,6 --4,0,-4,-5 -7,4,2,1 --7,-7,-8,6 -7,-7,4,4 --6,-2,-1,1 -5,7,-6,-5 -1,6,-2,5 --6,5,-6,3 --6,-8,0,0 -2,-4,2,8 -0,0,0,-8 --8,0,-2,2 -0,-4,-8,-8 -1,-5,-8,5 -6,-4,-5,6 -8,4,-5,-1 -8,-7,4,-4 --7,-6,-8,0 --2,3,-2,3 --8,-3,-6,-3 -0,5,5,0 -3,7,-8,6 -0,-7,-5,-1 -1,6,-4,-3 --4,5,-3,5 -7,-5,-5,8 --4,4,0,-8 -7,-7,0,2 -6,0,2,-8 --6,-4,1,0 --1,0,-2,4 --4,-8,5,7 --8,4,-5,-2 -2,8,-8,-8 --4,7,1,6 --2,-2,-7,3 -6,4,-1,0 --1,-7,-4,0 --4,0,3,0 -0,3,5,2 --4,-5,-1,0 -8,2,-6,0 --2,5,-3,8 -7,0,3,-2 -6,0,-5,0 -4,-6,-5,6 --7,8,0,-1 -8,-2,3,-4 -7,0,-4,7 --4,-6,-7,-7 -2,8,0,4 -1,-6,5,-6 -4,-7,-2,-2 -4,1,-6,2 -0,7,4,3 -4,1,-1,-5 -1,-4,6,-6 -1,2,-2,-2 -2,-2,6,-5 --8,6,-6,6 -0,6,8,2 --3,-2,0,-8 --6,-5,2,-6 -0,5,-8,-5 -1,-1,7,6 --6,-3,-7,-3 --4,-6,-1,0 -8,-3,-6,-2 --5,-2,6,-1 --1,0,3,1 -0,2,-6,7 -3,3,5,-2 -8,4,5,-1 --5,-1,0,-1 --6,-1,0,6 -2,6,-3,-3 -8,7,-8,4 --6,-8,-3,0 --1,-1,0,7 -6,-2,-8,4 --3,8,3,-1 -6,2,0,4 -0,-3,7,3 --5,3,-2,-1 --6,-7,-2,-3 -4,-5,-3,-6 --7,6,-2,4 --2,-5,7,0 -1,8,-8,7 -8,3,-3,4 --3,3,2,-4 -5,-7,4,1 -8,-3,-5,0 --5,-4,-1,-8 -2,1,-2,-3 --1,-4,-1,-7 --7,-8,-7,-2 -3,0,7,4 -6,3,7,7 -0,-2,-4,2 -0,-1,-6,7 --3,-8,-1,-7 --8,-6,-6,-4 --5,-4,-4,0 -0,7,-7,3 --8,-7,-6,-8 --5,3,0,-3 --7,-6,0,7 --7,6,-6,-2 --2,8,2,-4 -2,0,0,5 -0,5,-2,0 -8,-7,-7,-1 --1,3,2,-7 --3,4,-7,-4 --6,-3,2,-7 --7,5,4,3 -5,-1,-6,-2 -3,-7,1,0 --7,0,-4,-3 --6,8,-1,0 -3,8,4,-2 --1,-4,-8,-7 -3,3,8,1 --5,1,4,5 -8,8,-1,2 --3,-3,7,-4 -8,-3,2,-4 -6,-8,-6,8 -3,6,3,-2 --7,-2,6,-4 --6,-8,-8,5 -6,0,0,7 --6,7,0,7 -8,0,-6,-3 -0,-3,-7,0 --2,6,-7,-7 -5,-1,-3,0 -2,3,4,-5 -1,7,-6,0 -3,3,0,-3 --1,0,-8,-8 --2,5,-7,4 -7,-1,-8,5 --2,-1,-1,6 --2,-6,5,1 -4,-2,5,5 --7,8,4,7 --2,-2,6,5 --6,1,-5,3 --8,4,0,7 -8,-4,5,5 --4,8,-4,1 --8,0,5,4 -8,1,0,0 --6,-8,-6,-2 -2,-5,0,0 -5,-6,5,-4 -1,2,7,2 -8,-4,6,5 --6,0,7,6 -6,5,7,-6 --2,-6,-2,5 --6,-4,3,1 -6,-8,4,-4 -8,6,1,2 -7,5,7,-2 -7,-2,-6,-1 -4,-2,1,2 -1,1,-3,5 -0,-4,8,4 -5,2,-3,-4 -8,4,1,-3 --1,1,-8,1 --1,-1,0,5 --4,4,6,0 -0,6,-2,6 --3,4,5,5 --7,5,4,-4 -2,2,-2,-4 -8,-1,2,-5 --5,-2,6,-2 -7,2,1,6 --3,-2,4,-5 -8,8,-7,-8 -0,1,-8,-4 --3,-6,-3,3 --4,-4,8,4 --3,2,-4,-6 --6,5,-5,-2 --3,-7,-3,8 -0,6,-1,8 -8,0,7,1 -1,1,-8,-2 -6,-6,-7,3 -4,-5,8,-8 --3,-6,6,7 -8,-5,2,4 -2,5,-3,-4 --3,0,-6,7 --1,-7,7,0 -2,-3,-5,5 --7,-7,0,-2 -0,-4,7,8 -5,3,7,2 --2,-7,5,5 --6,-1,0,-8 --3,0,8,-5 --8,-1,1,1 -1,0,-6,8 --1,-5,8,4 --5,-4,4,8 -2,-3,0,-4 --4,-3,0,7 -5,6,5,-5 --3,-8,-3,-2 -5,8,-8,5 --7,-2,-2,-2 -7,6,8,6 -0,-6,4,-7 --1,-4,-7,0 -8,7,-6,6 -6,-5,-1,-3 -5,-2,-2,-3 -6,-3,-5,0 --8,5,6,-5 -3,-7,7,8 -1,3,-8,0 --6,8,-5,6 -6,-5,-5,-2 -3,8,1,-8 --8,5,2,0 -0,5,-3,6 --5,-7,-8,4 -0,7,0,0 --5,6,-5,6 --5,1,6,5 -6,1,-2,-8 -0,-8,3,1 -0,-3,-8,-3 -0,6,0,-2 --8,0,-7,-5 --8,2,0,6 -1,6,3,-4 -8,-5,0,-4 --6,7,0,0 -5,0,1,0 --8,8,2,8 --7,4,2,4 -0,3,-2,-4 --5,5,7,0 -5,0,-1,5 --7,8,-6,8 --8,-1,3,-3 -0,-7,-7,-7 --4,4,8,-2 -1,2,1,-4 -1,-5,-1,8 --3,8,-2,-2 -8,0,4,-4 --8,5,-5,3 --7,-7,-6,-2 -0,-6,-8,-8 --1,-2,-3,0 --4,0,1,7 -1,-6,-8,4 -0,8,6,-1 --8,-5,-7,8 -2,7,-8,4 --8,4,-3,2 -3,-1,-7,3 -4,-2,-6,-6 --1,-4,1,-2 -3,-4,2,-6 -2,4,5,-3 --7,7,1,6 -8,-6,-5,-3 --7,1,-6,0 --3,-6,-6,-8 --8,-5,-6,4 --5,-1,7,8 -0,7,6,2 -6,-2,-1,5 -0,4,-8,8 --3,-5,-8,0 -2,-6,-2,-1 -5,8,-6,4 --5,-1,0,-6 --8,-5,8,2 -5,6,-3,-3 --4,-7,2,6 -0,-3,-6,7 --4,-6,-8,-8 -6,7,1,3 -7,-2,4,-3 -4,2,3,1 -0,8,-3,-8 --8,0,1,0 -4,5,-4,-2 --2,-6,4,2 --4,0,-4,0 -8,-1,2,-2 -5,-7,8,1 --2,5,-6,1 -6,-7,3,-7 -2,1,0,6 --8,-3,-1,0 -8,-1,8,-3 -0,-6,6,0 -7,3,7,3 --8,0,6,-1 --5,-4,-5,0 --2,0,3,-7 -0,2,0,0 --3,6,6,3 --6,-3,-1,-3 -8,0,1,5 --7,4,-8,0 -8,8,-5,4 --2,0,-7,-4 --8,5,-7,-7 -8,0,-1,4 -8,-7,5,0 --6,-1,-4,2 --8,-8,6,-5 -7,2,-3,1 -2,0,2,6 -8,-7,-8,3 --2,-7,-8,0 -0,3,-1,4 --8,7,5,3 -0,-4,0,3 -6,6,-2,-6 --4,8,6,-3 -0,3,0,-4 -6,-2,1,5 -1,4,4,3 -0,-7,4,-1 -1,3,-8,-2 --5,0,4,0 -8,2,-6,-4 --8,8,-2,6 --5,7,-7,-2 -5,0,-4,-4 --1,-5,3,7 --2,-3,7,3 --3,4,2,0 --7,-8,1,3 --8,-8,-3,2 -0,5,-8,7 -1,7,-6,5 -2,-6,-5,0 --8,4,4,2 -7,3,1,-6 --5,-4,8,2 --7,7,0,0 -8,6,-1,6 -2,5,3,-7 --7,3,1,5 --8,-3,-4,3 -0,-2,0,8 --7,-7,-5,8 -3,6,3,0 --4,2,8,-4 --6,2,6,-3 -0,-7,-6,-7 -0,-6,3,-6 --4,-5,-5,-2 -1,-7,-2,-5 -5,7,0,4 -2,-1,3,-3 -7,1,-5,8 -0,3,0,2 -5,0,-5,-3 --2,6,2,5 -6,4,-4,-7 -4,-8,4,8 --5,-2,-6,7 --1,-4,-4,5 --2,-7,3,7 --3,-8,-2,2 -1,-2,-5,-3 -0,-4,-1,3 -4,8,2,-5 -8,6,-6,1 --8,-1,1,-4 -5,6,4,-8 --7,-6,-5,4 --3,-3,5,0 --6,7,2,1 --5,5,-1,0 -1,-8,2,0 -0,-3,-7,6 -4,-4,1,0 --4,-6,0,4 -4,0,4,0 -4,-7,3,-2 -0,-3,0,4 -2,-3,2,2 -2,0,0,-4 --8,6,6,4 -7,7,4,-2 -0,5,0,-1 -5,7,3,6 -5,2,4,-3 -5,4,-7,-6 --8,1,7,2 -0,5,8,-1 -5,-3,-6,0 --6,0,4,6 --2,-2,6,-6 --6,3,5,2 -8,-2,-3,-1 --8,1,3,-4 -1,-6,-5,-6 -8,-4,6,-1 --5,-7,-7,-5 --1,-6,1,-4 -4,2,-3,0 -7,1,-4,4 -2,6,-8,0 -7,7,2,-5 -5,-2,-8,-3 --5,0,3,2 --1,6,-1,-4 -6,4,-3,-4 -4,1,4,-6 -3,5,0,-1 -5,-3,7,2 -3,-3,-7,5 --3,-6,-1,2 --7,-6,5,5 --3,-7,1,-7 -5,5,-4,3 -6,-4,0,-1 --7,-8,-1,7 -6,1,3,8 -8,-3,-5,2 --3,1,-2,7 --3,8,3,-4 -0,-8,7,3 -5,0,-4,-3 -3,-8,2,4 --8,-3,6,-3 -0,6,-5,4 --2,-8,-2,0 --4,-4,-4,8 --6,8,-5,-1 --8,0,1,1 --4,3,1,-2 --1,-7,4,8 -3,0,7,-4 -5,7,3,-1 -7,-8,-3,1 -5,5,0,1 --3,-1,0,8 --6,-8,-4,1 --3,-1,-6,0 -0,-1,0,0 -6,0,0,8 -3,-1,-4,6 --4,4,0,-5 -3,7,1,7 --5,0,6,7 -5,-5,2,3 -5,-7,2,1 --6,1,-3,-6 -7,8,-2,8 -5,4,0,6 --8,-3,4,-3 --3,-6,2,6 -1,4,2,5 -0,7,6,-5 --1,7,5,4 -4,-5,-4,0 --2,1,4,-7 --2,0,0,8 -7,0,1,1 --3,-7,8,6 --2,-8,6,7 -6,3,-4,5 -5,2,-5,8 -4,-2,5,-2 -8,5,-4,-4 -2,6,-7,6 --4,-2,-6,-5 -0,5,-6,-1 -5,3,4,3 -4,2,1,5 -6,-6,-8,3 --7,2,3,-2 -0,2,2,1 -0,1,2,3 --6,4,1,-4 -7,-4,-1,4 --5,3,-3,0 -3,8,-3,-4 --2,-3,4,2 -4,7,-2,4 -4,-4,-3,-8 -1,0,-2,-6 -6,7,-4,0 --2,-7,2,-2 -0,4,2,2 --4,8,-1,0 --4,5,1,1 --2,-8,-1,4 -2,3,-3,4 --8,-4,-5,0 --6,3,0,2 -6,-5,1,0 -4,-2,-8,4 -0,7,-5,-2 --7,-3,5,-1 -5,7,-4,1 --3,-3,3,5 -2,0,-4,-4 --7,0,6,6 -4,-4,-3,-1 --6,6,-1,-6 --1,2,1,-8 --2,3,4,6 -5,8,-4,-8 -0,5,0,-4 --5,-3,7,7 -5,4,5,-2 -4,-2,8,-5 --4,2,-7,4 -1,-8,4,-4 -7,8,-7,3 -2,7,-8,-5 --1,-5,6,-7 -5,-4,7,-2 -0,-3,0,6 -0,-7,-2,2 -4,8,0,-1 -0,-3,5,-3 -5,-6,0,4 -1,-7,2,-2 --1,0,-3,1 --4,0,4,-6 -5,3,7,3 -7,-4,7,-8 --3,-5,3,7 -0,-6,8,2 -4,-6,-1,8 -0,-7,0,-8 --4,5,0,6 -7,6,-6,2 --6,-5,-7,3 -0,-1,4,-8 -4,6,-4,4 --4,-2,5,4 --8,-8,0,4 -2,-8,4,-1 -2,4,0,0 --6,-1,8,7 --6,5,8,-5 --3,-5,-7,-3 -3,-1,-5,-7 -0,4,-4,-7 -2,-4,-1,-6 --6,-6,0,5 -0,6,3,-5 -0,-3,8,2 -7,-6,6,-1 --3,7,-4,-5 --3,1,3,7 -5,-2,-6,-7 --6,3,-1,8 -0,0,-4,-2 --8,2,3,-4 -0,-2,-4,0 -1,8,-3,-7 --2,-4,3,0 -3,-8,7,0 --1,-6,3,-4 -3,0,8,4 -3,3,-5,-6 -5,0,-1,-2 -7,1,-4,8 -4,-5,3,-2 -4,-4,0,8 --4,2,1,-8 --8,0,-7,-2 -4,-2,0,0 --8,3,7,-8 -8,-8,6,-5 --8,0,3,-5 -6,3,-2,-3 -4,0,-5,7 --1,-5,-6,2 -4,-1,-7,2 --8,-1,-2,0 -1,7,-7,-2 -5,0,-5,-7 -8,-3,6,-2 -1,-6,2,-3 -6,-1,6,3 --7,4,3,4 --7,-5,-5,-4 --7,2,-8,-4 --5,8,3,-3 -1,2,-3,4 --6,-5,-4,1 -5,4,5,7 -0,0,-1,-4 -5,-8,3,-1 -5,6,-5,0 --7,-3,-6,0 -2,-8,0,1 -1,4,-7,-8 --4,-7,-6,3 -0,1,-1,0 --6,-1,6,0 -1,6,-4,-2 -8,-3,0,0 --2,0,-3,7 -3,8,-4,3 --8,7,2,0 -1,4,-6,3 -5,-3,4,-4 --3,-5,5,5 --6,4,-2,2 --4,0,2,4 --7,1,6,1 --2,2,4,6 --5,-2,6,0 --1,4,8,0 -0,8,6,-6 --6,6,-4,-7 --6,-7,3,0 -4,-1,3,4 -0,-7,-4,-6 --6,-5,-5,0 --2,-5,-4,0 -2,0,-8,6 --1,1,0,0 --6,-4,-3,-1 -7,5,-7,1 --5,-1,3,3 -6,1,0,1 -6,7,6,7 --3,1,0,-3 --5,-1,-6,4 --5,1,1,8 -8,-1,-2,-6 -3,0,6,7 -0,8,4,0 --8,0,-2,5 --4,-3,-5,5 --5,3,2,5 --2,-3,0,-6 --3,-4,1,-2 -8,-4,-7,-6 -2,8,6,-7 -3,-1,1,-6 -0,-8,1,3 --2,-4,8,0 -7,-7,-3,5 -8,5,6,-5 --3,7,2,8 -6,-1,-7,1 --4,0,-2,-2 -7,8,1,-3 --2,5,8,6 --7,-5,0,3 --7,3,-1,6 -2,-1,-4,0 --8,-6,2,-8 --7,-5,-5,1 -0,-5,-4,4 -5,-2,-3,-8 --5,-8,1,4 -5,0,7,-4 -8,7,1,-1 --4,-1,-5,2 -4,8,-6,1 --3,2,3,4 --5,-2,1,3 --3,5,5,4 --6,4,-1,5 -6,1,3,0 -0,-4,-5,0 --4,4,2,6 --7,-8,-6,7 -8,4,5,1 -0,5,-3,-1 -3,6,5,-8 -1,8,3,-6 -3,-3,-5,-8 --7,5,-5,0 --6,4,0,-6 --7,7,6,-3 --3,-1,7,8 --7,-7,1,-4 --7,-1,-8,6 -6,0,-2,2 --5,-8,0,7 --5,-4,8,4 -1,5,4,2 -8,8,-2,6 --3,2,-2,1 --5,-2,1,-2 -8,8,-8,-4 --7,-8,8,-4 -0,-6,8,-2 --6,8,1,0 --8,0,8,-4 --6,5,1,2 -1,7,5,-2 --4,1,0,-7 -2,-8,3,7 --1,-6,-2,-1 -3,-5,-1,7 -0,-7,2,1 -0,8,2,0 --1,-2,-8,-2 -6,2,5,0 -7,-8,-8,0 --2,1,2,6 --3,-7,-4,2 -7,1,4,-3 -5,4,-1,1 -8,-8,8,-7 -3,7,7,-1 -0,-7,0,-4 --4,2,7,-7 --7,2,-5,7 -7,-3,2,0 --8,1,2,0 -5,8,8,-3 -0,7,-2,7 --3,0,0,-1 -6,8,3,-1 -1,0,-8,0 -8,-5,6,6 -3,0,0,3 -1,4,-4,4 --2,-5,-3,3 -7,3,-1,-1 -2,-5,1,-5 --3,-2,6,6 -0,7,-2,-2 -0,0,3,-7 --1,-7,2,-2 --6,-1,0,1 --4,1,1,8 --4,-6,1,1 -5,7,3,-3 -8,-2,4,2 -0,-6,5,-8 -4,5,0,-6 -1,0,-2,-1 --6,0,0,-6 --5,-7,-4,-6 --8,8,-5,-2 -1,-7,0,4 -4,6,8,1 --2,-6,6,6 -7,1,-6,0 --5,6,-4,0 --4,1,1,4 -8,-7,-1,4 --7,8,4,-2 -8,5,-7,3 -2,-5,5,-1 --5,-5,3,8 --5,-3,-7,6 -5,2,2,1 --1,-7,-5,2 -0,7,8,-5 -6,-4,5,0 --1,5,-2,8 --8,7,0,7 --4,8,-1,1 -5,-1,1,-2 -2,-3,8,0 -0,6,-1,1 --2,7,-7,8 --6,1,-1,6 -5,7,-6,0 --5,-1,-6,-6 --2,3,-8,-5 -1,5,-7,-8 -7,-5,-2,5 --5,7,5,-2 --5,0,0,7 --4,-4,0,0 --3,0,2,-7 -5,4,3,-1 --5,-7,7,5 --2,-3,4,5 --5,-3,4,2 --7,0,-5,3 -0,0,-8,8 -0,5,-7,4 --8,-3,8,-2 --5,8,-2,-5 --8,8,0,0 --8,-3,5,-1 --6,1,8,-3 -3,7,-6,3 --6,6,2,5 -1,-4,-3,0 --8,-8,5,3 -1,-4,8,-2 -4,7,3,1 -7,0,4,0 -0,3,-4,-2 --7,3,7,4 --4,-7,-1,3 -1,-7,2,1 -3,3,-5,-1 -5,-7,2,2 -1,-4,-4,0 --8,5,-3,-1 -3,-3,4,0 -7,0,4,-5 -0,1,1,2 -1,-5,6,-5 --3,2,7,7 --3,-3,6,2 -2,-2,0,-3 -3,8,-3,2 --1,1,3,-4 -2,7,4,8 -7,6,-1,6 -8,8,6,5 -2,8,-6,-7 --1,-3,-3,3 -4,0,-5,-1 --4,-4,-1,2 -2,-1,-2,-3 -3,3,-3,1 --1,3,2,2 -4,1,4,7 --1,-6,-4,2 --5,-5,2,-1 --2,2,0,-5 --1,-8,5,-2 --6,1,-1,-1 --8,-8,0,2 -7,8,-7,-1 --6,7,0,-6 --4,4,8,-7 -7,1,5,7 --5,2,2,-5 -1,-2,-3,0 -0,7,-8,-5 --1,0,-5,6 --6,1,-4,-3 -8,2,4,-7 -0,-3,0,-7 -6,-5,-8,-4 --3,4,-3,7 -0,-1,-8,2 -3,1,-8,0 --8,1,3,7 --7,1,8,6 -7,7,-3,7 -4,0,2,-3 -0,-2,1,-7 --7,6,-3,7 --3,8,-7,4 -6,4,2,5 -3,-3,6,-7 -6,-8,-3,-1 --2,-8,-8,4 --3,-2,1,6 -3,1,-1,-1 -8,6,7,5 -5,7,7,-8 --7,3,3,4 -8,6,-5,-4 -1,-4,-5,-3 -4,6,-6,-6 --3,4,0,7 -1,-4,-3,8 -3,-7,-2,1 -2,-4,4,8 --5,1,-7,5 -0,-5,0,3 -0,7,-8,5 --8,-2,1,3 --5,8,8,6 -0,5,4,-1 -0,-8,-7,8 -3,2,1,-7 -2,-3,4,1 -5,4,7,-3 --8,-3,7,-3 --2,5,6,-5 -5,0,0,-3 --4,6,6,1 -8,-2,-5,2 -0,4,-2,3 --8,-5,-8,6 --5,0,5,7 --7,1,-8,4 -7,2,6,-2 --2,-7,-2,6 --7,7,0,5 --5,-3,1,4 --4,8,2,3 --7,0,0,-6 -2,4,0,8 -2,7,7,0 -7,4,-4,-3 -2,7,5,7 --3,4,1,3 --2,-3,-3,1 -2,8,-1,8 -0,-7,6,8 -1,6,5,5 --8,-6,-6,-5 -6,-8,-8,-1 --8,3,3,3 -5,-7,7,-2 -5,8,1,6 -0,2,3,5 --2,7,-7,-3 --5,6,1,-5 -6,7,-1,4 -8,-3,6,-7 -5,0,-8,3 -0,6,2,0 --8,-6,-6,5 -0,7,2,-3 -1,-4,6,-7 --6,7,0,4 -4,-4,0,4 -6,3,7,-2 -3,-8,2,3 -0,5,3,-8 -2,6,7,4 -2,-7,-5,1 --8,-3,-2,4 --7,-7,0,4 --4,-5,-6,1 --6,-6,0,-3 --8,8,-3,-4 --6,7,1,-6 --5,4,0,7 --4,-1,5,3 -5,-7,3,1 -0,-4,-6,-3 -6,-6,-1,-5 -3,1,5,-3 --1,1,2,-3 -0,7,-1,-7 --8,0,8,0 -0,8,0,-6 -2,-7,2,0 -0,-1,-2,-7 --2,0,1,1 -1,-7,8,4 -3,-6,0,7 -0,0,-5,4 -2,-7,0,6 --6,4,5,-7 --3,5,7,4 --2,-1,7,8 --7,0,-2,-4 -3,-6,6,0 -5,-4,-4,4 -6,8,8,-3 -6,-6,-6,3 -2,-3,-3,-3 -8,-5,-2,0 --3,5,7,-4 --7,-8,1,5 -0,-1,-1,-1 -8,1,7,-8 -4,4,2,4 -6,2,-1,2 --5,6,-6,5 --2,-5,-3,4 -6,-3,-4,0 -8,8,-5,-7 -2,2,0,-3 --5,-8,1,2 -7,-6,-2,8 --5,0,-3,3 --2,7,-4,-5 -8,-1,-6,1 -7,6,-1,-4 --3,0,2,1 -0,0,5,0 --1,8,-2,3 --3,2,1,-8 -1,7,-7,0 -1,4,-1,0 -6,-4,3,-2 --1,-6,-2,2 --2,2,2,2 -2,0,-3,5 --4,1,-8,-3 --4,1,5,-7 --6,8,1,4 -5,3,0,1 --8,-7,7,-1 --8,-3,1,-7 -0,2,4,7 -6,7,2,-8 -4,1,2,8 -3,-2,1,-5 -8,2,-7,6 -8,0,5,3 --7,4,8,-7 -3,8,-1,-7 --1,-5,-2,0 --3,0,6,3 -6,5,-3,-2 -1,8,7,-2 --4,-1,-7,-2 --6,-1,8,3 -8,-1,5,-6 -5,0,5,2 --4,8,0,-1 --5,2,7,-3 -5,-2,-6,5 -4,-4,4,0 --7,-1,-5,-5 --8,-5,4,5 -4,-6,-8,3 -7,2,7,-5 -1,6,2,-3 --3,3,-8,0 -1,-6,7,-3 --5,8,6,-3 --3,-2,-4,-6 -7,-7,-2,1 -5,4,-7,-1 -3,-4,-5,-1 --1,-5,6,-1 --8,4,-5,1 diff --git a/inputs/3.txt b/inputs/3.txt deleted file mode 100644 index 4701818..0000000 --- a/inputs/3.txt +++ /dev/null @@ -1,1385 +0,0 @@ -#1 @ 342,645: 25x20 -#2 @ 124,968: 28x19 -#3 @ 680,765: 26x20 -#4 @ 832,699: 12x15 -#5 @ 4,746: 29x14 -#6 @ 926,115: 19x17 -#7 @ 662,587: 28x12 -#8 @ 532,568: 27x23 -#9 @ 860,23: 16x21 -#10 @ 530,562: 12x27 -#11 @ 15,254: 10x27 -#12 @ 375,611: 18x10 -#13 @ 357,389: 22x23 -#14 @ 483,392: 14x16 -#15 @ 426,705: 17x13 -#16 @ 273,918: 23x28 -#17 @ 873,722: 13x13 -#18 @ 429,749: 12x25 -#19 @ 701,937: 14x11 -#20 @ 89,231: 23x26 -#21 @ 704,220: 10x27 -#22 @ 481,847: 21x24 -#23 @ 9,378: 14x19 -#24 @ 682,442: 10x21 -#25 @ 242,63: 21x23 -#26 @ 748,871: 20x13 -#27 @ 784,338: 25x25 -#28 @ 966,669: 20x20 -#29 @ 589,833: 22x25 -#30 @ 489,489: 16x24 -#31 @ 976,478: 4x4 -#32 @ 739,826: 13x15 -#33 @ 783,753: 21x17 -#34 @ 433,367: 22x11 -#35 @ 32,841: 10x20 -#36 @ 258,497: 26x28 -#37 @ 632,776: 18x25 -#38 @ 517,389: 20x14 -#39 @ 446,740: 19x26 -#40 @ 667,455: 15x14 -#41 @ 664,252: 25x26 -#42 @ 227,45: 29x21 -#43 @ 127,138: 29x27 -#44 @ 466,308: 19x17 -#45 @ 356,134: 12x19 -#46 @ 609,640: 28x24 -#47 @ 677,228: 16x27 -#48 @ 149,610: 10x28 -#49 @ 863,498: 21x28 -#50 @ 913,511: 12x27 -#51 @ 748,761: 24x11 -#52 @ 802,288: 10x22 -#53 @ 26,442: 29x20 -#54 @ 85,464: 20x21 -#55 @ 262,944: 21x18 -#56 @ 876,753: 15x10 -#57 @ 105,199: 23x19 -#58 @ 335,848: 23x24 -#59 @ 467,537: 24x22 -#60 @ 552,217: 14x13 -#61 @ 534,820: 10x19 -#62 @ 261,579: 25x13 -#63 @ 541,445: 19x17 -#64 @ 869,769: 28x11 -#65 @ 447,668: 25x26 -#66 @ 42,734: 18x16 -#67 @ 553,233: 13x13 -#68 @ 47,861: 12x16 -#69 @ 33,834: 21x14 -#70 @ 240,174: 29x13 -#71 @ 611,362: 24x14 -#72 @ 899,371: 21x21 -#73 @ 340,5: 23x23 -#74 @ 69,246: 14x18 -#75 @ 432,558: 11x10 -#76 @ 737,175: 27x20 -#77 @ 623,365: 15x22 -#78 @ 666,453: 26x28 -#79 @ 368,774: 25x10 -#80 @ 923,879: 18x16 -#81 @ 37,315: 16x23 -#82 @ 119,279: 18x26 -#83 @ 928,850: 20x18 -#84 @ 896,902: 18x16 -#85 @ 332,590: 28x13 -#86 @ 902,815: 27x21 -#87 @ 215,508: 19x12 -#88 @ 981,57: 10x15 -#89 @ 706,393: 21x24 -#90 @ 975,369: 10x11 -#91 @ 635,845: 29x18 -#92 @ 831,543: 15x16 -#93 @ 296,865: 19x10 -#94 @ 889,189: 24x19 -#95 @ 59,749: 11x22 -#96 @ 739,946: 24x27 -#97 @ 536,759: 27x29 -#98 @ 982,234: 17x11 -#99 @ 639,615: 26x25 -#100 @ 867,397: 26x29 -#101 @ 881,784: 19x19 -#102 @ 215,912: 22x28 -#103 @ 127,336: 10x15 -#104 @ 313,729: 15x12 -#105 @ 695,74: 17x28 -#106 @ 748,187: 11x16 -#107 @ 809,2: 16x27 -#108 @ 891,192: 17x18 -#109 @ 72,920: 16x20 -#110 @ 41,967: 22x28 -#111 @ 91,733: 22x20 -#112 @ 464,641: 13x13 -#113 @ 464,860: 17x10 -#114 @ 623,106: 13x28 -#115 @ 358,85: 24x21 -#116 @ 774,944: 19x28 -#117 @ 752,587: 11x20 -#118 @ 635,103: 25x11 -#119 @ 498,36: 17x11 -#120 @ 227,659: 15x13 -#121 @ 924,553: 13x13 -#122 @ 775,297: 23x24 -#123 @ 479,866: 10x11 -#124 @ 387,798: 11x28 -#125 @ 526,847: 19x27 -#126 @ 747,861: 11x25 -#127 @ 789,652: 14x10 -#128 @ 419,7: 17x13 -#129 @ 356,142: 26x10 -#130 @ 436,239: 14x27 -#131 @ 555,710: 14x23 -#132 @ 871,447: 13x27 -#133 @ 473,730: 14x14 -#134 @ 558,170: 16x18 -#135 @ 888,882: 29x25 -#136 @ 834,147: 24x18 -#137 @ 721,467: 28x12 -#138 @ 223,105: 28x26 -#139 @ 285,326: 28x23 -#140 @ 584,300: 3x6 -#141 @ 710,754: 23x21 -#142 @ 283,892: 21x14 -#143 @ 448,894: 18x3 -#144 @ 380,479: 16x15 -#145 @ 703,57: 16x20 -#146 @ 692,448: 24x11 -#147 @ 926,350: 20x26 -#148 @ 167,528: 25x12 -#149 @ 444,722: 28x21 -#150 @ 166,183: 15x18 -#151 @ 546,472: 29x18 -#152 @ 532,900: 12x22 -#153 @ 215,490: 29x20 -#154 @ 678,458: 25x23 -#155 @ 601,462: 24x11 -#156 @ 484,514: 12x11 -#157 @ 863,763: 10x18 -#158 @ 653,452: 16x23 -#159 @ 464,302: 13x21 -#160 @ 868,65: 21x18 -#161 @ 227,824: 20x11 -#162 @ 111,629: 29x19 -#163 @ 55,554: 27x21 -#164 @ 0,757: 21x17 -#165 @ 418,861: 13x16 -#166 @ 932,903: 12x16 -#167 @ 429,772: 11x14 -#168 @ 706,805: 11x23 -#169 @ 487,24: 26x15 -#170 @ 806,900: 16x16 -#171 @ 580,719: 24x22 -#172 @ 458,481: 20x17 -#173 @ 343,488: 18x11 -#174 @ 734,342: 12x27 -#175 @ 320,439: 4x3 -#176 @ 446,635: 26x25 -#177 @ 552,683: 11x23 -#178 @ 181,168: 26x24 -#179 @ 851,583: 27x28 -#180 @ 879,363: 10x11 -#181 @ 884,139: 11x21 -#182 @ 912,88: 24x27 -#183 @ 52,35: 22x18 -#184 @ 657,705: 11x14 -#185 @ 370,777: 11x17 -#186 @ 801,354: 21x24 -#187 @ 773,546: 16x20 -#188 @ 888,322: 19x11 -#189 @ 807,788: 27x13 -#190 @ 465,956: 19x29 -#191 @ 369,770: 13x21 -#192 @ 311,137: 12x14 -#193 @ 148,150: 19x29 -#194 @ 389,613: 28x25 -#195 @ 429,373: 10x25 -#196 @ 892,148: 20x15 -#197 @ 890,271: 11x19 -#198 @ 58,861: 18x19 -#199 @ 449,255: 9x5 -#200 @ 257,887: 27x15 -#201 @ 383,616: 20x18 -#202 @ 663,657: 18x21 -#203 @ 331,648: 25x13 -#204 @ 509,53: 10x28 -#205 @ 86,287: 15x20 -#206 @ 753,190: 20x20 -#207 @ 922,527: 19x12 -#208 @ 132,948: 20x26 -#209 @ 883,786: 15x21 -#210 @ 117,592: 27x15 -#211 @ 960,611: 13x22 -#212 @ 829,769: 14x19 -#213 @ 669,686: 17x13 -#214 @ 276,787: 27x10 -#215 @ 619,909: 18x22 -#216 @ 418,209: 21x25 -#217 @ 231,831: 27x18 -#218 @ 336,538: 22x18 -#219 @ 180,783: 14x23 -#220 @ 609,263: 22x10 -#221 @ 360,982: 21x16 -#222 @ 775,813: 14x26 -#223 @ 906,198: 10x24 -#224 @ 937,144: 28x28 -#225 @ 475,903: 24x12 -#226 @ 887,149: 11x16 -#227 @ 927,259: 20x25 -#228 @ 71,862: 29x26 -#229 @ 136,954: 26x17 -#230 @ 721,827: 15x13 -#231 @ 769,931: 21x25 -#232 @ 728,119: 13x28 -#233 @ 654,942: 13x27 -#234 @ 434,737: 18x13 -#235 @ 672,331: 27x20 -#236 @ 816,17: 25x21 -#237 @ 251,781: 28x20 -#238 @ 342,209: 16x10 -#239 @ 581,434: 23x22 -#240 @ 782,100: 14x11 -#241 @ 878,831: 14x12 -#242 @ 667,233: 19x28 -#243 @ 237,650: 28x24 -#244 @ 425,738: 11x15 -#245 @ 936,470: 23x23 -#246 @ 68,321: 21x19 -#247 @ 356,539: 27x29 -#248 @ 945,353: 18x23 -#249 @ 906,933: 22x28 -#250 @ 360,812: 10x29 -#251 @ 884,774: 17x27 -#252 @ 413,769: 23x20 -#253 @ 594,75: 21x15 -#254 @ 676,702: 15x11 -#255 @ 233,529: 27x25 -#256 @ 173,236: 15x17 -#257 @ 907,949: 16x13 -#258 @ 809,570: 24x10 -#259 @ 67,678: 29x22 -#260 @ 176,951: 25x18 -#261 @ 754,625: 10x18 -#262 @ 142,270: 26x29 -#263 @ 558,673: 24x19 -#264 @ 224,27: 24x14 -#265 @ 725,829: 7x6 -#266 @ 703,941: 9x3 -#267 @ 880,864: 28x27 -#268 @ 727,445: 25x24 -#269 @ 747,520: 17x15 -#270 @ 850,410: 26x21 -#271 @ 363,964: 10x16 -#272 @ 752,721: 23x16 -#273 @ 295,351: 26x20 -#274 @ 899,877: 26x16 -#275 @ 95,804: 20x28 -#276 @ 543,866: 20x16 -#277 @ 917,887: 19x27 -#278 @ 449,474: 16x22 -#279 @ 673,459: 28x23 -#280 @ 971,786: 13x17 -#281 @ 42,176: 21x18 -#282 @ 531,886: 15x13 -#283 @ 679,438: 15x22 -#284 @ 161,659: 19x25 -#285 @ 838,148: 15x23 -#286 @ 496,732: 26x14 -#287 @ 482,256: 19x26 -#288 @ 389,941: 27x25 -#289 @ 352,255: 23x15 -#290 @ 825,688: 25x24 -#291 @ 894,313: 23x20 -#292 @ 906,553: 21x17 -#293 @ 293,130: 21x13 -#294 @ 549,80: 25x18 -#295 @ 85,871: 20x10 -#296 @ 876,734: 20x24 -#297 @ 831,935: 14x17 -#298 @ 618,819: 23x20 -#299 @ 750,70: 24x14 -#300 @ 749,711: 22x17 -#301 @ 555,801: 17x12 -#302 @ 544,64: 28x21 -#303 @ 114,413: 21x22 -#304 @ 215,526: 13x21 -#305 @ 147,31: 25x12 -#306 @ 679,427: 18x17 -#307 @ 634,930: 23x24 -#308 @ 41,419: 21x28 -#309 @ 892,162: 18x24 -#310 @ 812,886: 19x14 -#311 @ 440,700: 28x13 -#312 @ 586,832: 28x21 -#313 @ 255,687: 13x22 -#314 @ 945,879: 22x16 -#315 @ 480,731: 18x11 -#316 @ 738,731: 15x10 -#317 @ 528,621: 11x16 -#318 @ 243,787: 28x26 -#319 @ 512,493: 22x13 -#320 @ 762,692: 27x11 -#321 @ 316,57: 12x14 -#322 @ 410,860: 17x12 -#323 @ 772,591: 14x24 -#324 @ 813,221: 13x11 -#325 @ 161,271: 12x14 -#326 @ 520,597: 26x19 -#327 @ 577,129: 25x20 -#328 @ 448,31: 10x15 -#329 @ 594,33: 16x27 -#330 @ 170,498: 25x19 -#331 @ 882,833: 6x4 -#332 @ 190,548: 12x26 -#333 @ 639,879: 28x25 -#334 @ 473,817: 19x26 -#335 @ 543,458: 11x23 -#336 @ 676,657: 26x25 -#337 @ 786,353: 28x17 -#338 @ 873,508: 14x17 -#339 @ 208,782: 17x27 -#340 @ 392,542: 10x26 -#341 @ 672,650: 29x23 -#342 @ 446,637: 20x18 -#343 @ 534,58: 16x15 -#344 @ 696,760: 23x17 -#345 @ 265,767: 18x15 -#346 @ 105,750: 12x16 -#347 @ 731,438: 28x10 -#348 @ 535,833: 24x21 -#349 @ 72,531: 18x28 -#350 @ 640,734: 27x21 -#351 @ 156,265: 15x16 -#352 @ 227,299: 24x22 -#353 @ 552,492: 11x29 -#354 @ 605,95: 14x20 -#355 @ 665,490: 11x25 -#356 @ 456,289: 25x12 -#357 @ 876,516: 13x18 -#358 @ 26,163: 20x28 -#359 @ 228,769: 19x11 -#360 @ 766,766: 16x12 -#361 @ 167,654: 13x28 -#362 @ 728,185: 20x25 -#363 @ 321,340: 23x20 -#364 @ 327,175: 18x14 -#365 @ 83,860: 10x19 -#366 @ 361,177: 20x24 -#367 @ 282,505: 18x16 -#368 @ 780,44: 29x28 -#369 @ 854,406: 15x25 -#370 @ 142,928: 10x19 -#371 @ 114,594: 11x20 -#372 @ 775,78: 26x24 -#373 @ 264,791: 28x12 -#374 @ 789,217: 24x20 -#375 @ 931,559: 19x22 -#376 @ 523,549: 22x20 -#377 @ 744,356: 23x24 -#378 @ 630,746: 25x11 -#379 @ 339,201: 11x28 -#380 @ 777,698: 25x14 -#381 @ 198,933: 29x21 -#382 @ 222,919: 27x25 -#383 @ 356,648: 16x19 -#384 @ 237,915: 10x12 -#385 @ 10,864: 17x26 -#386 @ 494,808: 29x23 -#387 @ 440,547: 24x25 -#388 @ 688,247: 10x16 -#389 @ 95,580: 16x19 -#390 @ 374,8: 12x27 -#391 @ 287,332: 20x26 -#392 @ 453,940: 24x22 -#393 @ 344,878: 10x22 -#394 @ 541,277: 16x18 -#395 @ 965,360: 24x12 -#396 @ 280,878: 21x20 -#397 @ 680,384: 25x19 -#398 @ 670,76: 12x12 -#399 @ 540,457: 18x20 -#400 @ 524,406: 17x16 -#401 @ 625,272: 25x22 -#402 @ 100,906: 26x12 -#403 @ 281,871: 7x10 -#404 @ 275,849: 21x26 -#405 @ 357,559: 13x13 -#406 @ 918,753: 25x21 -#407 @ 270,837: 25x17 -#408 @ 780,84: 20x20 -#409 @ 503,893: 11x13 -#410 @ 154,609: 12x23 -#411 @ 871,739: 21x22 -#412 @ 529,698: 27x27 -#413 @ 376,844: 14x23 -#414 @ 498,876: 13x21 -#415 @ 893,958: 15x27 -#416 @ 635,498: 20x20 -#417 @ 571,884: 24x21 -#418 @ 336,586: 24x24 -#419 @ 0,206: 29x16 -#420 @ 655,64: 24x11 -#421 @ 436,648: 28x16 -#422 @ 952,593: 17x11 -#423 @ 643,6: 17x18 -#424 @ 224,166: 29x11 -#425 @ 818,905: 15x14 -#426 @ 18,863: 18x11 -#427 @ 497,902: 15x10 -#428 @ 564,545: 16x29 -#429 @ 657,446: 18x20 -#430 @ 245,25: 17x11 -#431 @ 936,346: 23x24 -#432 @ 127,152: 24x19 -#433 @ 563,928: 19x27 -#434 @ 684,407: 27x13 -#435 @ 737,584: 15x15 -#436 @ 644,837: 16x14 -#437 @ 702,978: 20x15 -#438 @ 422,65: 11x16 -#439 @ 121,142: 13x20 -#440 @ 68,437: 19x16 -#441 @ 121,382: 24x28 -#442 @ 805,910: 29x14 -#443 @ 795,432: 21x20 -#444 @ 269,735: 25x22 -#445 @ 226,877: 11x17 -#446 @ 550,450: 29x18 -#447 @ 606,726: 14x25 -#448 @ 46,546: 10x19 -#449 @ 320,95: 11x25 -#450 @ 935,419: 12x15 -#451 @ 453,862: 13x16 -#452 @ 315,500: 23x12 -#453 @ 181,127: 17x18 -#454 @ 243,907: 19x13 -#455 @ 263,960: 29x22 -#456 @ 509,159: 14x17 -#457 @ 486,810: 23x21 -#458 @ 560,945: 25x13 -#459 @ 6,400: 24x28 -#460 @ 368,783: 17x23 -#461 @ 75,792: 26x29 -#462 @ 543,395: 22x23 -#463 @ 47,464: 19x10 -#464 @ 342,494: 27x24 -#465 @ 911,861: 19x25 -#466 @ 94,272: 23x23 -#467 @ 420,516: 15x26 -#468 @ 146,233: 20x27 -#469 @ 201,907: 10x23 -#470 @ 446,887: 23x16 -#471 @ 468,702: 14x27 -#472 @ 799,865: 23x25 -#473 @ 451,242: 27x20 -#474 @ 915,801: 28x27 -#475 @ 471,445: 23x16 -#476 @ 381,751: 26x28 -#477 @ 903,539: 23x21 -#478 @ 621,280: 13x26 -#479 @ 658,132: 27x19 -#480 @ 136,639: 22x26 -#481 @ 24,185: 22x23 -#482 @ 732,779: 25x25 -#483 @ 760,858: 20x22 -#484 @ 24,408: 26x19 -#485 @ 457,627: 20x16 -#486 @ 353,284: 20x10 -#487 @ 920,899: 10x3 -#488 @ 436,694: 11x17 -#489 @ 849,162: 17x16 -#490 @ 786,236: 27x20 -#491 @ 709,245: 11x28 -#492 @ 462,389: 13x17 -#493 @ 738,88: 27x21 -#494 @ 111,617: 24x24 -#495 @ 896,764: 11x23 -#496 @ 473,321: 23x16 -#497 @ 589,67: 17x16 -#498 @ 183,298: 18x17 -#499 @ 557,675: 10x11 -#500 @ 875,298: 21x17 -#501 @ 128,420: 18x25 -#502 @ 158,17: 27x26 -#503 @ 966,380: 13x29 -#504 @ 571,449: 15x28 -#505 @ 968,404: 12x27 -#506 @ 722,350: 10x24 -#507 @ 247,595: 17x25 -#508 @ 65,734: 22x21 -#509 @ 411,715: 25x12 -#510 @ 123,742: 15x12 -#511 @ 439,687: 19x12 -#512 @ 829,932: 12x13 -#513 @ 893,146: 23x19 -#514 @ 861,131: 15x23 -#515 @ 551,85: 20x7 -#516 @ 957,437: 22x17 -#517 @ 777,65: 22x24 -#518 @ 638,851: 24x21 -#519 @ 116,492: 12x29 -#520 @ 187,785: 3x18 -#521 @ 791,56: 17x27 -#522 @ 406,108: 28x28 -#523 @ 695,252: 21x16 -#524 @ 498,247: 24x17 -#525 @ 301,235: 19x27 -#526 @ 14,173: 13x10 -#527 @ 116,587: 11x29 -#528 @ 170,247: 18x22 -#529 @ 714,745: 20x23 -#530 @ 682,474: 27x19 -#531 @ 838,605: 23x22 -#532 @ 684,330: 20x18 -#533 @ 754,852: 27x25 -#534 @ 885,197: 24x26 -#535 @ 97,256: 16x18 -#536 @ 604,669: 20x19 -#537 @ 612,14: 18x29 -#538 @ 278,738: 8x14 -#539 @ 102,976: 13x15 -#540 @ 50,860: 16x12 -#541 @ 574,411: 16x22 -#542 @ 124,894: 26x20 -#543 @ 848,521: 25x25 -#544 @ 271,287: 25x27 -#545 @ 253,656: 21x16 -#546 @ 547,979: 18x11 -#547 @ 444,332: 12x26 -#548 @ 106,753: 15x16 -#549 @ 886,615: 14x15 -#550 @ 549,216: 27x24 -#551 @ 481,720: 23x13 -#552 @ 505,7: 17x22 -#553 @ 539,106: 28x27 -#554 @ 395,174: 24x12 -#555 @ 547,490: 10x22 -#556 @ 950,79: 21x12 -#557 @ 529,817: 12x23 -#558 @ 40,270: 19x24 -#559 @ 556,127: 25x14 -#560 @ 407,39: 16x26 -#561 @ 130,852: 29x14 -#562 @ 144,368: 27x22 -#563 @ 980,174: 18x22 -#564 @ 285,98: 16x24 -#565 @ 648,686: 16x26 -#566 @ 361,487: 21x16 -#567 @ 471,380: 23x14 -#568 @ 167,331: 23x25 -#569 @ 768,773: 14x16 -#570 @ 328,13: 29x15 -#571 @ 444,697: 14x17 -#572 @ 215,301: 27x27 -#573 @ 238,207: 23x14 -#574 @ 252,346: 21x20 -#575 @ 910,272: 11x18 -#576 @ 751,833: 18x13 -#577 @ 781,221: 10x17 -#578 @ 538,775: 14x26 -#579 @ 982,705: 11x21 -#580 @ 205,805: 25x27 -#581 @ 948,713: 21x12 -#582 @ 647,249: 11x20 -#583 @ 841,156: 19x21 -#584 @ 401,835: 13x28 -#585 @ 637,819: 24x12 -#586 @ 286,241: 19x23 -#587 @ 661,878: 15x24 -#588 @ 115,774: 19x14 -#589 @ 353,655: 22x14 -#590 @ 838,616: 25x23 -#591 @ 573,395: 28x27 -#592 @ 321,67: 26x13 -#593 @ 371,931: 17x19 -#594 @ 765,719: 24x10 -#595 @ 595,574: 21x21 -#596 @ 346,497: 10x16 -#597 @ 67,869: 16x19 -#598 @ 133,284: 10x25 -#599 @ 464,174: 20x25 -#600 @ 613,82: 29x28 -#601 @ 98,519: 27x12 -#602 @ 896,934: 14x17 -#603 @ 645,205: 23x23 -#604 @ 810,96: 9x15 -#605 @ 91,464: 14x23 -#606 @ 798,67: 18x21 -#607 @ 560,243: 27x20 -#608 @ 486,52: 14x12 -#609 @ 623,174: 11x20 -#610 @ 203,404: 10x14 -#611 @ 927,293: 12x10 -#612 @ 457,860: 26x14 -#613 @ 690,648: 13x15 -#614 @ 673,615: 23x22 -#615 @ 399,718: 16x14 -#616 @ 309,695: 23x17 -#617 @ 881,450: 10x24 -#618 @ 879,295: 12x29 -#619 @ 914,865: 5x4 -#620 @ 692,653: 28x26 -#621 @ 468,183: 19x11 -#622 @ 487,258: 13x25 -#623 @ 458,724: 13x16 -#624 @ 793,416: 28x23 -#625 @ 804,843: 28x13 -#626 @ 345,711: 15x20 -#627 @ 679,461: 28x23 -#628 @ 652,655: 20x20 -#629 @ 330,343: 12x13 -#630 @ 919,801: 16x11 -#631 @ 974,473: 10x28 -#632 @ 112,537: 11x18 -#633 @ 680,494: 23x25 -#634 @ 307,283: 16x28 -#635 @ 904,314: 11x25 -#636 @ 718,778: 12x22 -#637 @ 30,550: 23x25 -#638 @ 146,964: 14x18 -#639 @ 167,242: 28x19 -#640 @ 228,443: 17x15 -#641 @ 914,547: 10x15 -#642 @ 931,708: 23x23 -#643 @ 105,180: 16x10 -#644 @ 455,283: 14x16 -#645 @ 491,723: 28x17 -#646 @ 618,6: 17x27 -#647 @ 635,361: 24x25 -#648 @ 883,585: 26x16 -#649 @ 131,346: 17x26 -#650 @ 78,25: 22x12 -#651 @ 611,643: 28x22 -#652 @ 647,114: 15x23 -#653 @ 229,550: 21x28 -#654 @ 190,124: 15x14 -#655 @ 903,330: 13x16 -#656 @ 750,722: 20x19 -#657 @ 26,456: 25x13 -#658 @ 414,283: 16x16 -#659 @ 940,221: 28x25 -#660 @ 585,932: 20x18 -#661 @ 96,398: 20x17 -#662 @ 371,915: 12x19 -#663 @ 819,706: 22x25 -#664 @ 347,500: 15x9 -#665 @ 275,85: 24x10 -#666 @ 435,743: 26x26 -#667 @ 535,568: 22x20 -#668 @ 46,389: 17x25 -#669 @ 584,880: 24x18 -#670 @ 630,266: 18x18 -#671 @ 431,377: 26x14 -#672 @ 559,677: 4x3 -#673 @ 701,439: 16x14 -#674 @ 829,446: 20x11 -#675 @ 555,565: 20x13 -#676 @ 917,846: 14x17 -#677 @ 593,676: 18x16 -#678 @ 542,798: 20x19 -#679 @ 6,372: 24x29 -#680 @ 578,809: 24x24 -#681 @ 64,522: 11x4 -#682 @ 591,896: 13x26 -#683 @ 932,572: 11x25 -#684 @ 867,131: 27x19 -#685 @ 495,889: 23x22 -#686 @ 367,827: 21x13 -#687 @ 232,45: 18x28 -#688 @ 704,711: 11x27 -#689 @ 309,517: 23x13 -#690 @ 429,199: 17x11 -#691 @ 717,52: 20x15 -#692 @ 912,877: 27x25 -#693 @ 447,764: 16x11 -#694 @ 799,769: 28x22 -#695 @ 361,912: 27x26 -#696 @ 891,829: 10x28 -#697 @ 233,895: 20x23 -#698 @ 806,276: 16x13 -#699 @ 377,966: 21x18 -#700 @ 792,875: 20x22 -#701 @ 255,807: 18x19 -#702 @ 634,238: 15x26 -#703 @ 492,519: 13x24 -#704 @ 953,632: 19x26 -#705 @ 684,587: 10x17 -#706 @ 391,424: 16x17 -#707 @ 654,158: 14x27 -#708 @ 118,638: 23x11 -#709 @ 302,282: 17x13 -#710 @ 662,54: 14x19 -#711 @ 909,835: 14x23 -#712 @ 558,971: 18x11 -#713 @ 90,774: 11x28 -#714 @ 745,346: 15x11 -#715 @ 488,860: 22x14 -#716 @ 848,568: 26x23 -#717 @ 6,625: 28x25 -#718 @ 34,388: 15x18 -#719 @ 965,778: 23x24 -#720 @ 103,500: 20x18 -#721 @ 506,222: 29x17 -#722 @ 226,197: 24x25 -#723 @ 129,939: 15x25 -#724 @ 140,644: 11x18 -#725 @ 905,904: 20x25 -#726 @ 423,276: 13x12 -#727 @ 62,511: 17x24 -#728 @ 932,814: 19x26 -#729 @ 9,810: 11x26 -#730 @ 32,624: 16x20 -#731 @ 967,236: 28x18 -#732 @ 616,948: 27x12 -#733 @ 714,733: 15x17 -#734 @ 277,783: 25x24 -#735 @ 482,675: 16x12 -#736 @ 862,11: 19x26 -#737 @ 667,668: 27x15 -#738 @ 131,406: 13x28 -#739 @ 707,788: 26x27 -#740 @ 859,505: 21x21 -#741 @ 968,785: 4x6 -#742 @ 813,939: 11x27 -#743 @ 611,781: 28x17 -#744 @ 298,82: 28x27 -#745 @ 352,828: 16x27 -#746 @ 920,831: 20x23 -#747 @ 967,694: 19x29 -#748 @ 370,50: 25x18 -#749 @ 545,724: 13x16 -#750 @ 102,391: 13x22 -#751 @ 904,122: 22x19 -#752 @ 118,439: 23x10 -#753 @ 793,859: 23x27 -#754 @ 722,798: 27x29 -#755 @ 97,774: 24x10 -#756 @ 326,707: 26x14 -#757 @ 559,909: 28x14 -#758 @ 33,822: 29x21 -#759 @ 508,227: 24x7 -#760 @ 115,427: 26x16 -#761 @ 665,766: 27x25 -#762 @ 303,847: 19x28 -#763 @ 157,535: 19x12 -#764 @ 968,680: 18x10 -#765 @ 668,464: 20x9 -#766 @ 114,534: 27x10 -#767 @ 841,609: 17x21 -#768 @ 972,671: 20x13 -#769 @ 490,506: 27x18 -#770 @ 0,407: 13x26 -#771 @ 626,219: 11x14 -#772 @ 174,512: 12x24 -#773 @ 162,251: 10x18 -#774 @ 612,206: 11x25 -#775 @ 97,517: 11x10 -#776 @ 31,916: 11x17 -#777 @ 261,148: 17x16 -#778 @ 815,577: 26x24 -#779 @ 545,521: 29x23 -#780 @ 842,800: 25x23 -#781 @ 391,437: 23x20 -#782 @ 333,886: 20x14 -#783 @ 109,171: 11x14 -#784 @ 344,483: 28x16 -#785 @ 581,195: 15x24 -#786 @ 608,372: 12x13 -#787 @ 740,279: 14x18 -#788 @ 653,626: 27x22 -#789 @ 308,182: 24x20 -#790 @ 899,219: 16x12 -#791 @ 515,556: 21x11 -#792 @ 171,0: 18x29 -#793 @ 204,304: 27x14 -#794 @ 488,289: 25x25 -#795 @ 479,382: 14x18 -#796 @ 626,889: 25x11 -#797 @ 604,948: 16x10 -#798 @ 182,277: 21x18 -#799 @ 623,205: 24x20 -#800 @ 720,654: 11x25 -#801 @ 731,103: 26x17 -#802 @ 829,581: 14x25 -#803 @ 431,738: 17x29 -#804 @ 524,620: 15x12 -#805 @ 512,539: 23x23 -#806 @ 829,943: 29x18 -#807 @ 93,176: 13x26 -#808 @ 883,796: 12x12 -#809 @ 214,543: 28x16 -#810 @ 518,231: 15x14 -#811 @ 213,502: 21x20 -#812 @ 255,598: 10x22 -#813 @ 352,477: 24x16 -#814 @ 664,653: 15x20 -#815 @ 741,338: 28x26 -#816 @ 361,174: 25x22 -#817 @ 101,582: 14x27 -#818 @ 237,103: 13x12 -#819 @ 814,157: 20x17 -#820 @ 182,216: 28x21 -#821 @ 194,282: 17x18 -#822 @ 247,657: 20x14 -#823 @ 0,647: 14x29 -#824 @ 899,959: 12x23 -#825 @ 151,90: 20x20 -#826 @ 341,562: 25x22 -#827 @ 895,137: 28x18 -#828 @ 853,703: 16x11 -#829 @ 8,934: 11x17 -#830 @ 395,528: 28x13 -#831 @ 874,122: 13x28 -#832 @ 605,187: 19x17 -#833 @ 684,219: 24x24 -#834 @ 382,885: 13x21 -#835 @ 751,858: 19x21 -#836 @ 518,38: 11x27 -#837 @ 812,383: 21x28 -#838 @ 904,886: 21x19 -#839 @ 356,751: 25x24 -#840 @ 586,554: 28x20 -#841 @ 98,582: 10x25 -#842 @ 438,552: 11x21 -#843 @ 231,601: 20x20 -#844 @ 906,176: 11x21 -#845 @ 237,52: 12x23 -#846 @ 81,19: 15x21 -#847 @ 600,731: 19x14 -#848 @ 553,43: 10x22 -#849 @ 703,825: 14x21 -#850 @ 193,283: 10x26 -#851 @ 73,407: 22x26 -#852 @ 226,602: 25x21 -#853 @ 515,223: 26x15 -#854 @ 95,363: 28x13 -#855 @ 927,2: 28x22 -#856 @ 457,470: 16x13 -#857 @ 67,23: 24x14 -#858 @ 435,244: 10x16 -#859 @ 640,450: 29x22 -#860 @ 385,778: 16x23 -#861 @ 734,157: 23x25 -#862 @ 516,727: 11x15 -#863 @ 488,733: 16x12 -#864 @ 83,719: 19x21 -#865 @ 530,287: 15x15 -#866 @ 729,671: 24x16 -#867 @ 240,320: 26x18 -#868 @ 311,583: 13x24 -#869 @ 224,956: 10x13 -#870 @ 662,482: 17x14 -#871 @ 533,896: 12x17 -#872 @ 844,440: 10x26 -#873 @ 104,625: 16x11 -#874 @ 632,431: 25x17 -#875 @ 735,292: 22x24 -#876 @ 74,625: 22x24 -#877 @ 752,738: 24x25 -#878 @ 599,594: 18x10 -#879 @ 220,951: 15x26 -#880 @ 339,67: 14x19 -#881 @ 856,704: 15x22 -#882 @ 829,158: 10x13 -#883 @ 823,838: 27x11 -#884 @ 368,952: 10x15 -#885 @ 32,281: 23x28 -#886 @ 700,84: 11x26 -#887 @ 800,342: 23x9 -#888 @ 392,728: 18x10 -#889 @ 488,802: 22x26 -#890 @ 206,785: 18x25 -#891 @ 411,294: 24x11 -#892 @ 566,932: 24x10 -#893 @ 529,409: 15x17 -#894 @ 477,549: 24x24 -#895 @ 816,957: 14x22 -#896 @ 256,719: 23x20 -#897 @ 860,304: 15x16 -#898 @ 881,268: 27x10 -#899 @ 470,387: 17x10 -#900 @ 173,25: 24x13 -#901 @ 144,28: 26x16 -#902 @ 685,372: 14x23 -#903 @ 695,681: 22x14 -#904 @ 748,874: 29x22 -#905 @ 897,765: 18x17 -#906 @ 880,756: 24x12 -#907 @ 627,112: 24x18 -#908 @ 655,479: 16x11 -#909 @ 392,560: 15x16 -#910 @ 61,740: 23x20 -#911 @ 696,232: 11x20 -#912 @ 452,30: 11x24 -#913 @ 581,289: 16x23 -#914 @ 786,561: 16x19 -#915 @ 774,346: 23x28 -#916 @ 537,171: 25x11 -#917 @ 326,723: 11x27 -#918 @ 224,914: 17x16 -#919 @ 906,176: 25x18 -#920 @ 878,572: 27x25 -#921 @ 391,561: 19x27 -#922 @ 715,976: 19x12 -#923 @ 275,748: 23x19 -#924 @ 381,802: 10x14 -#925 @ 940,217: 24x23 -#926 @ 741,53: 27x15 -#927 @ 104,445: 16x18 -#928 @ 519,127: 27x20 -#929 @ 445,598: 23x21 -#930 @ 126,601: 29x13 -#931 @ 658,225: 24x19 -#932 @ 920,952: 26x23 -#933 @ 110,776: 16x14 -#934 @ 896,945: 24x14 -#935 @ 733,125: 11x17 -#936 @ 849,555: 23x17 -#937 @ 376,546: 24x18 -#938 @ 153,930: 24x24 -#939 @ 470,855: 22x21 -#940 @ 45,321: 27x10 -#941 @ 773,553: 26x14 -#942 @ 749,180: 12x14 -#943 @ 736,631: 28x26 -#944 @ 737,871: 11x14 -#945 @ 447,253: 14x11 -#946 @ 825,628: 27x26 -#947 @ 749,435: 11x20 -#948 @ 919,271: 10x14 -#949 @ 556,558: 10x14 -#950 @ 258,595: 14x28 -#951 @ 324,858: 12x15 -#952 @ 54,735: 24x20 -#953 @ 718,354: 25x10 -#954 @ 954,20: 22x17 -#955 @ 625,176: 15x28 -#956 @ 828,374: 26x14 -#957 @ 946,677: 29x25 -#958 @ 94,678: 12x26 -#959 @ 657,251: 16x22 -#960 @ 537,124: 26x14 -#961 @ 893,609: 14x11 -#962 @ 131,596: 12x13 -#963 @ 436,44: 18x17 -#964 @ 359,651: 18x21 -#965 @ 427,288: 29x14 -#966 @ 521,545: 13x22 -#967 @ 558,231: 17x28 -#968 @ 179,334: 26x28 -#969 @ 801,166: 20x29 -#970 @ 542,41: 25x27 -#971 @ 545,606: 24x29 -#972 @ 278,868: 20x17 -#973 @ 46,956: 16x25 -#974 @ 62,784: 26x15 -#975 @ 346,55: 13x26 -#976 @ 772,213: 22x28 -#977 @ 581,146: 29x17 -#978 @ 283,845: 16x13 -#979 @ 961,683: 19x13 -#980 @ 968,686: 25x17 -#981 @ 637,18: 29x22 -#982 @ 558,932: 24x10 -#983 @ 376,193: 26x10 -#984 @ 884,430: 15x10 -#985 @ 317,13: 21x18 -#986 @ 568,56: 28x13 -#987 @ 661,718: 25x15 -#988 @ 715,672: 20x20 -#989 @ 861,782: 17x26 -#990 @ 455,852: 12x25 -#991 @ 889,802: 17x11 -#992 @ 879,106: 25x23 -#993 @ 867,347: 15x21 -#994 @ 924,422: 18x10 -#995 @ 814,942: 18x29 -#996 @ 84,858: 12x22 -#997 @ 581,427: 28x24 -#998 @ 247,182: 27x21 -#999 @ 971,182: 23x21 -#1000 @ 978,776: 11x17 -#1001 @ 1,786: 13x26 -#1002 @ 977,224: 20x25 -#1003 @ 576,413: 12x12 -#1004 @ 892,182: 23x11 -#1005 @ 680,350: 26x15 -#1006 @ 489,881: 21x15 -#1007 @ 900,891: 21x17 -#1008 @ 591,883: 12x22 -#1009 @ 826,602: 14x24 -#1010 @ 366,486: 23x22 -#1011 @ 711,115: 19x19 -#1012 @ 707,116: 27x10 -#1013 @ 826,817: 27x19 -#1014 @ 315,770: 14x11 -#1015 @ 296,676: 21x26 -#1016 @ 713,373: 19x18 -#1017 @ 7,925: 28x26 -#1018 @ 821,893: 26x19 -#1019 @ 679,85: 28x11 -#1020 @ 2,802: 27x12 -#1021 @ 335,491: 27x22 -#1022 @ 299,337: 12x21 -#1023 @ 804,708: 20x18 -#1024 @ 903,888: 26x19 -#1025 @ 264,744: 29x26 -#1026 @ 813,823: 18x29 -#1027 @ 757,36: 12x18 -#1028 @ 589,217: 14x29 -#1029 @ 761,553: 16x15 -#1030 @ 632,430: 10x13 -#1031 @ 855,795: 28x27 -#1032 @ 93,625: 15x26 -#1033 @ 139,934: 19x20 -#1034 @ 561,850: 12x17 -#1035 @ 834,159: 23x13 -#1036 @ 479,845: 29x16 -#1037 @ 767,935: 10x29 -#1038 @ 506,816: 18x17 -#1039 @ 670,548: 25x22 -#1040 @ 415,58: 14x27 -#1041 @ 943,188: 12x26 -#1042 @ 7,381: 22x17 -#1043 @ 674,568: 12x17 -#1044 @ 410,2: 12x10 -#1045 @ 685,688: 13x23 -#1046 @ 609,566: 18x10 -#1047 @ 484,48: 29x22 -#1048 @ 676,659: 27x14 -#1049 @ 0,812: 12x28 -#1050 @ 282,572: 20x23 -#1051 @ 898,860: 17x25 -#1052 @ 892,949: 14x20 -#1053 @ 580,906: 14x16 -#1054 @ 65,234: 20x19 -#1055 @ 856,479: 10x24 -#1056 @ 475,143: 13x13 -#1057 @ 822,556: 14x27 -#1058 @ 970,678: 22x16 -#1059 @ 488,191: 19x10 -#1060 @ 843,298: 23x10 -#1061 @ 686,225: 17x12 -#1062 @ 224,784: 24x19 -#1063 @ 104,978: 6x10 -#1064 @ 809,756: 29x23 -#1065 @ 851,756: 28x21 -#1066 @ 144,943: 13x26 -#1067 @ 491,667: 10x27 -#1068 @ 383,574: 29x19 -#1069 @ 525,485: 13x11 -#1070 @ 494,721: 21x14 -#1071 @ 670,473: 16x16 -#1072 @ 923,103: 20x23 -#1073 @ 425,367: 27x11 -#1074 @ 975,667: 18x23 -#1075 @ 607,94: 16x25 -#1076 @ 29,617: 10x14 -#1077 @ 741,763: 27x15 -#1078 @ 907,281: 24x21 -#1079 @ 527,545: 21x24 -#1080 @ 751,599: 26x28 -#1081 @ 129,945: 10x28 -#1082 @ 545,718: 17x21 -#1083 @ 833,143: 14x23 -#1084 @ 678,337: 13x22 -#1085 @ 450,473: 10x20 -#1086 @ 883,388: 17x28 -#1087 @ 865,314: 16x21 -#1088 @ 861,408: 20x22 -#1089 @ 582,264: 15x26 -#1090 @ 612,913: 10x11 -#1091 @ 868,575: 11x15 -#1092 @ 854,596: 14x18 -#1093 @ 551,232: 22x24 -#1094 @ 675,898: 24x10 -#1095 @ 70,425: 12x16 -#1096 @ 325,763: 29x19 -#1097 @ 907,855: 16x21 -#1098 @ 770,817: 11x25 -#1099 @ 370,788: 20x22 -#1100 @ 883,426: 22x13 -#1101 @ 718,42: 10x23 -#1102 @ 670,568: 19x28 -#1103 @ 556,702: 23x27 -#1104 @ 224,245: 17x19 -#1105 @ 861,50: 18x25 -#1106 @ 840,622: 21x16 -#1107 @ 827,711: 13x21 -#1108 @ 211,46: 12x16 -#1109 @ 243,918: 19x19 -#1110 @ 855,323: 17x14 -#1111 @ 409,758: 27x24 -#1112 @ 337,193: 26x24 -#1113 @ 272,288: 12x26 -#1114 @ 197,340: 22x21 -#1115 @ 950,574: 16x21 -#1116 @ 311,508: 27x13 -#1117 @ 798,339: 29x17 -#1118 @ 892,173: 10x15 -#1119 @ 779,604: 11x12 -#1120 @ 225,818: 13x15 -#1121 @ 784,25: 19x11 -#1122 @ 88,25: 25x27 -#1123 @ 246,755: 25x28 -#1124 @ 239,175: 26x24 -#1125 @ 398,547: 18x23 -#1126 @ 756,193: 29x25 -#1127 @ 96,680: 4x20 -#1128 @ 916,826: 20x12 -#1129 @ 457,578: 29x29 -#1130 @ 91,576: 23x27 -#1131 @ 618,39: 29x18 -#1132 @ 621,960: 25x21 -#1133 @ 275,936: 14x27 -#1134 @ 130,144: 29x16 -#1135 @ 400,747: 15x29 -#1136 @ 619,221: 20x15 -#1137 @ 734,169: 17x11 -#1138 @ 359,635: 18x16 -#1139 @ 244,349: 29x22 -#1140 @ 202,270: 14x29 -#1141 @ 461,556: 29x28 -#1142 @ 503,155: 24x21 -#1143 @ 857,610: 18x15 -#1144 @ 660,592: 29x27 -#1145 @ 218,446: 12x13 -#1146 @ 149,850: 28x14 -#1147 @ 564,679: 16x11 -#1148 @ 709,112: 28x22 -#1149 @ 465,713: 17x19 -#1150 @ 36,827: 17x21 -#1151 @ 755,284: 14x29 -#1152 @ 313,74: 12x28 -#1153 @ 371,863: 25x26 -#1154 @ 908,817: 10x28 -#1155 @ 561,136: 17x13 -#1156 @ 449,55: 25x14 -#1157 @ 229,617: 18x11 -#1158 @ 841,529: 23x27 -#1159 @ 946,219: 4x17 -#1160 @ 255,612: 15x28 -#1161 @ 617,908: 28x23 -#1162 @ 830,821: 10x15 -#1163 @ 936,168: 15x27 -#1164 @ 275,84: 11x24 -#1165 @ 182,337: 22x18 -#1166 @ 722,642: 17x19 -#1167 @ 120,542: 20x22 -#1168 @ 377,916: 20x26 -#1169 @ 407,724: 25x10 -#1170 @ 380,470: 23x27 -#1171 @ 235,732: 28x15 -#1172 @ 485,445: 19x21 -#1173 @ 8,248: 11x10 -#1174 @ 96,594: 28x10 -#1175 @ 417,110: 13x17 -#1176 @ 316,128: 15x28 -#1177 @ 895,164: 11x10 -#1178 @ 720,148: 28x22 -#1179 @ 932,807: 13x25 -#1180 @ 615,487: 23x12 -#1181 @ 291,846: 21x21 -#1182 @ 931,467: 13x21 -#1183 @ 766,736: 27x13 -#1184 @ 345,728: 19x12 -#1185 @ 781,161: 17x27 -#1186 @ 262,891: 15x25 -#1187 @ 219,755: 12x20 -#1188 @ 681,109: 23x11 -#1189 @ 941,959: 29x16 -#1190 @ 800,13: 23x25 -#1191 @ 51,902: 28x24 -#1192 @ 261,704: 18x12 -#1193 @ 63,438: 20x17 -#1194 @ 428,339: 22x23 -#1195 @ 732,860: 18x25 -#1196 @ 132,750: 23x12 -#1197 @ 771,59: 26x18 -#1198 @ 19,322: 24x17 -#1199 @ 558,119: 11x22 -#1200 @ 213,33: 13x14 -#1201 @ 746,843: 13x12 -#1202 @ 607,223: 15x25 -#1203 @ 744,185: 13x16 -#1204 @ 896,863: 14x11 -#1205 @ 781,653: 20x16 -#1206 @ 519,411: 14x10 -#1207 @ 587,708: 27x14 -#1208 @ 353,41: 29x16 -#1209 @ 555,555: 14x11 -#1210 @ 408,553: 25x22 -#1211 @ 639,190: 27x29 -#1212 @ 149,88: 12x27 -#1213 @ 988,44: 10x20 -#1214 @ 617,812: 26x19 -#1215 @ 308,435: 25x12 -#1216 @ 629,405: 11x29 -#1217 @ 732,761: 11x25 -#1218 @ 802,229: 16x17 -#1219 @ 302,310: 28x26 -#1220 @ 918,368: 16x10 -#1221 @ 66,423: 12x16 -#1222 @ 917,267: 23x28 -#1223 @ 601,956: 3x10 -#1224 @ 653,919: 14x24 -#1225 @ 144,271: 20x16 -#1226 @ 508,421: 27x15 -#1227 @ 519,505: 18x11 -#1228 @ 530,385: 12x13 -#1229 @ 665,446: 18x16 -#1230 @ 520,399: 19x25 -#1231 @ 637,653: 22x29 -#1232 @ 583,956: 14x11 -#1233 @ 484,567: 23x21 -#1234 @ 216,301: 17x12 -#1235 @ 691,507: 12x17 -#1236 @ 854,476: 12x11 -#1237 @ 64,49: 11x16 -#1238 @ 863,564: 16x10 -#1239 @ 360,381: 16x17 -#1240 @ 925,888: 10x18 -#1241 @ 665,330: 12x18 -#1242 @ 228,601: 16x13 -#1243 @ 574,908: 17x13 -#1244 @ 597,953: 14x20 -#1245 @ 954,866: 17x19 -#1246 @ 791,870: 14x12 -#1247 @ 667,476: 13x28 -#1248 @ 662,488: 10x12 -#1249 @ 497,34: 10x27 -#1250 @ 110,132: 22x24 -#1251 @ 177,93: 4x11 -#1252 @ 721,114: 10x20 -#1253 @ 476,376: 21x27 -#1254 @ 384,888: 6x14 -#1255 @ 698,514: 16x26 -#1256 @ 779,308: 16x11 -#1257 @ 701,777: 26x22 -#1258 @ 933,733: 15x26 -#1259 @ 934,70: 24x26 -#1260 @ 72,787: 22x27 -#1261 @ 449,652: 18x15 -#1262 @ 425,558: 16x22 -#1263 @ 622,445: 15x16 -#1264 @ 157,175: 20x23 -#1265 @ 887,212: 21x21 -#1266 @ 514,490: 16x20 -#1267 @ 368,488: 4x6 -#1268 @ 797,41: 18x27 -#1269 @ 91,685: 22x23 -#1270 @ 277,115: 27x28 -#1271 @ 297,360: 27x20 -#1272 @ 195,559: 3x11 -#1273 @ 719,686: 23x10 -#1274 @ 397,818: 29x15 -#1275 @ 487,267: 27x10 -#1276 @ 711,388: 20x18 -#1277 @ 309,496: 27x27 -#1278 @ 414,173: 29x11 -#1279 @ 857,568: 12x18 -#1280 @ 165,155: 19x28 -#1281 @ 656,714: 12x26 -#1282 @ 255,921: 3x12 -#1283 @ 276,163: 12x14 -#1284 @ 634,812: 16x29 -#1285 @ 340,248: 23x23 -#1286 @ 193,268: 12x10 -#1287 @ 383,629: 21x26 -#1288 @ 933,297: 8x16 -#1289 @ 613,167: 13x25 -#1290 @ 852,118: 15x25 -#1291 @ 661,343: 11x20 -#1292 @ 827,119: 14x28 -#1293 @ 636,46: 27x11 -#1294 @ 629,202: 11x15 -#1295 @ 361,286: 18x23 -#1296 @ 539,925: 10x26 -#1297 @ 489,869: 15x18 -#1298 @ 415,45: 26x17 -#1299 @ 94,358: 20x17 -#1300 @ 413,552: 13x17 -#1301 @ 529,918: 16x24 -#1302 @ 400,808: 10x21 -#1303 @ 940,370: 21x27 -#1304 @ 813,185: 29x14 -#1305 @ 95,28: 24x11 -#1306 @ 249,327: 24x16 -#1307 @ 760,926: 26x12 -#1308 @ 732,957: 13x12 -#1309 @ 582,910: 13x13 -#1310 @ 0,162: 17x20 -#1311 @ 747,594: 10x11 -#1312 @ 712,513: 20x23 -#1313 @ 489,795: 26x29 -#1314 @ 474,335: 11x11 -#1315 @ 928,854: 27x16 -#1316 @ 7,377: 14x23 -#1317 @ 923,373: 20x22 -#1318 @ 411,954: 16x11 -#1319 @ 9,935: 20x14 -#1320 @ 887,848: 26x10 -#1321 @ 404,860: 11x11 -#1322 @ 475,281: 24x22 -#1323 @ 710,774: 21x22 -#1324 @ 794,158: 17x24 -#1325 @ 513,797: 25x28 -#1326 @ 707,755: 26x26 -#1327 @ 53,33: 29x24 -#1328 @ 506,184: 13x26 -#1329 @ 829,145: 20x10 -#1330 @ 891,774: 16x12 -#1331 @ 807,597: 26x27 -#1332 @ 375,313: 16x25 -#1333 @ 918,895: 16x11 -#1334 @ 884,128: 24x23 -#1335 @ 340,833: 25x24 -#1336 @ 202,485: 26x10 -#1337 @ 279,681: 21x10 -#1338 @ 199,913: 19x14 -#1339 @ 537,813: 26x29 -#1340 @ 89,723: 10x24 -#1341 @ 286,935: 22x27 -#1342 @ 347,72: 22x25 -#1343 @ 805,893: 11x28 -#1344 @ 917,81: 18x11 -#1345 @ 630,949: 21x16 -#1346 @ 526,905: 22x17 -#1347 @ 908,578: 17x15 -#1348 @ 235,237: 10x25 -#1349 @ 224,798: 20x23 -#1350 @ 759,525: 24x27 -#1351 @ 738,299: 25x16 -#1352 @ 224,888: 25x14 -#1353 @ 319,601: 28x26 -#1354 @ 212,397: 11x25 -#1355 @ 102,538: 21x28 -#1356 @ 457,251: 14x17 -#1357 @ 931,293: 13x24 -#1358 @ 808,93: 14x22 -#1359 @ 593,814: 12x23 -#1360 @ 468,131: 10x21 -#1361 @ 593,251: 15x15 -#1362 @ 362,16: 20x19 -#1363 @ 862,511: 14x11 -#1364 @ 671,626: 17x16 -#1365 @ 473,697: 16x14 -#1366 @ 368,329: 28x18 -#1367 @ 925,194: 24x29 -#1368 @ 875,511: 12x12 -#1369 @ 967,411: 25x27 -#1370 @ 89,411: 15x18 -#1371 @ 307,943: 12x28 -#1372 @ 119,13: 29x16 -#1373 @ 806,710: 15x11 -#1374 @ 544,534: 13x18 -#1375 @ 672,698: 14x17 -#1376 @ 645,848: 23x20 -#1377 @ 889,954: 25x13 -#1378 @ 378,24: 12x14 -#1379 @ 542,442: 22x15 -#1380 @ 42,454: 18x28 -#1381 @ 175,91: 11x22 -#1382 @ 840,533: 12x21 -#1383 @ 792,736: 24x27 -#1384 @ 731,713: 17x27 -#1385 @ 614,449: 22x20 diff --git a/inputs/4.txt b/inputs/4.txt deleted file mode 100644 index 4a0ff6e..0000000 --- a/inputs/4.txt +++ /dev/null @@ -1,1088 +0,0 @@ -[1518-09-17 23:48] Guard #1307 begins shift -[1518-06-03 00:00] Guard #3217 begins shift -[1518-07-28 00:49] falls asleep -[1518-03-30 00:57] falls asleep -[1518-07-01 23:58] Guard #409 begins shift -[1518-04-13 00:25] wakes up -[1518-04-09 00:22] wakes up -[1518-11-02 00:41] falls asleep -[1518-11-21 00:23] falls asleep -[1518-05-03 00:59] wakes up -[1518-11-21 00:02] Guard #1459 begins shift -[1518-08-18 00:27] wakes up -[1518-08-09 00:48] falls asleep -[1518-09-23 00:23] falls asleep -[1518-03-29 23:57] Guard #113 begins shift -[1518-04-16 00:43] wakes up -[1518-05-13 00:33] falls asleep -[1518-05-19 00:58] wakes up -[1518-07-09 00:44] wakes up -[1518-04-26 00:03] falls asleep -[1518-08-24 00:55] falls asleep -[1518-06-30 00:51] falls asleep -[1518-10-14 00:06] falls asleep -[1518-04-28 00:23] falls asleep -[1518-10-05 00:57] wakes up -[1518-09-02 00:56] wakes up -[1518-03-11 00:38] falls asleep -[1518-07-30 00:54] wakes up -[1518-09-15 23:58] Guard #1811 begins shift -[1518-08-08 23:58] Guard #1033 begins shift -[1518-08-07 00:08] falls asleep -[1518-06-13 00:46] wakes up -[1518-10-08 00:54] falls asleep -[1518-06-08 23:46] Guard #557 begins shift -[1518-06-01 00:22] wakes up -[1518-08-05 00:59] wakes up -[1518-03-08 00:03] Guard #3271 begins shift -[1518-07-18 23:59] Guard #449 begins shift -[1518-09-24 00:00] Guard #389 begins shift -[1518-04-22 00:45] wakes up -[1518-07-31 00:41] falls asleep -[1518-03-24 00:02] falls asleep -[1518-05-21 00:29] falls asleep -[1518-05-27 23:59] Guard #449 begins shift -[1518-10-30 00:52] wakes up -[1518-08-09 00:51] wakes up -[1518-03-16 00:54] wakes up -[1518-04-11 00:28] falls asleep -[1518-04-25 00:58] wakes up -[1518-10-06 00:07] falls asleep -[1518-08-15 23:49] Guard #557 begins shift -[1518-10-17 23:51] Guard #739 begins shift -[1518-06-27 00:00] Guard #3217 begins shift -[1518-06-30 00:01] Guard #1237 begins shift -[1518-04-29 00:01] Guard #3271 begins shift -[1518-11-12 00:19] falls asleep -[1518-07-27 00:50] wakes up -[1518-03-06 00:42] falls asleep -[1518-11-17 00:57] wakes up -[1518-07-21 00:48] wakes up -[1518-03-04 00:28] falls asleep -[1518-08-24 00:37] falls asleep -[1518-09-19 00:21] wakes up -[1518-11-05 00:24] wakes up -[1518-06-24 00:02] falls asleep -[1518-10-24 00:55] falls asleep -[1518-06-14 00:56] wakes up -[1518-06-29 00:47] wakes up -[1518-04-15 00:14] wakes up -[1518-08-21 00:08] falls asleep -[1518-09-16 00:48] falls asleep -[1518-10-11 00:42] wakes up -[1518-03-04 00:09] wakes up -[1518-03-13 00:18] falls asleep -[1518-10-28 00:56] wakes up -[1518-03-27 00:20] wakes up -[1518-05-24 00:03] Guard #739 begins shift -[1518-08-31 00:54] wakes up -[1518-06-22 00:50] falls asleep -[1518-06-15 00:45] wakes up -[1518-07-22 23:47] Guard #2647 begins shift -[1518-09-02 00:00] falls asleep -[1518-05-04 00:14] falls asleep -[1518-03-06 00:51] wakes up -[1518-10-02 00:35] wakes up -[1518-10-05 00:20] falls asleep -[1518-05-06 00:53] falls asleep -[1518-10-12 00:47] wakes up -[1518-04-08 00:30] wakes up -[1518-11-19 00:40] falls asleep -[1518-11-13 00:32] falls asleep -[1518-08-21 23:46] Guard #3271 begins shift -[1518-05-31 00:56] falls asleep -[1518-05-18 00:57] wakes up -[1518-05-17 00:56] wakes up -[1518-05-24 23:51] Guard #601 begins shift -[1518-10-30 00:32] wakes up -[1518-10-05 00:13] wakes up -[1518-11-02 00:03] Guard #2647 begins shift -[1518-05-02 00:36] wakes up -[1518-07-29 00:40] wakes up -[1518-07-16 00:53] wakes up -[1518-09-04 00:18] wakes up -[1518-05-11 00:33] falls asleep -[1518-03-09 00:00] Guard #1811 begins shift -[1518-10-24 23:57] Guard #827 begins shift -[1518-11-18 00:46] wakes up -[1518-08-14 00:27] falls asleep -[1518-05-25 00:17] wakes up -[1518-03-03 00:02] Guard #947 begins shift -[1518-05-29 00:00] falls asleep -[1518-06-05 00:04] wakes up -[1518-07-26 00:42] wakes up -[1518-10-01 00:39] falls asleep -[1518-06-22 00:54] wakes up -[1518-09-06 00:24] wakes up -[1518-08-04 00:24] falls asleep -[1518-04-25 00:35] wakes up -[1518-11-11 00:11] falls asleep -[1518-09-27 00:58] wakes up -[1518-09-16 00:15] falls asleep -[1518-07-25 00:55] wakes up -[1518-08-28 00:27] falls asleep -[1518-08-12 00:39] falls asleep -[1518-11-05 00:32] falls asleep -[1518-05-29 23:52] Guard #3209 begins shift -[1518-04-27 00:35] wakes up -[1518-04-20 00:06] falls asleep -[1518-03-21 00:47] falls asleep -[1518-10-18 00:55] wakes up -[1518-09-29 00:31] falls asleep -[1518-09-17 00:40] wakes up -[1518-04-22 00:19] falls asleep -[1518-06-14 00:32] falls asleep -[1518-10-07 23:59] Guard #1307 begins shift -[1518-04-25 00:55] falls asleep -[1518-08-27 00:24] falls asleep -[1518-08-01 23:56] Guard #389 begins shift -[1518-09-04 23:56] Guard #409 begins shift -[1518-09-29 23:56] Guard #449 begins shift -[1518-10-05 00:23] wakes up -[1518-04-04 00:58] wakes up -[1518-08-05 00:54] falls asleep -[1518-07-20 00:46] wakes up -[1518-04-08 00:46] wakes up -[1518-06-18 00:52] wakes up -[1518-05-03 23:59] Guard #1033 begins shift -[1518-11-01 00:37] wakes up -[1518-03-11 00:30] wakes up -[1518-06-06 00:42] wakes up -[1518-06-20 00:06] falls asleep -[1518-04-05 00:55] wakes up -[1518-09-13 23:57] Guard #3217 begins shift -[1518-04-21 00:00] Guard #1459 begins shift -[1518-03-18 00:00] Guard #1307 begins shift -[1518-09-13 00:03] Guard #557 begins shift -[1518-05-28 23:51] Guard #3217 begins shift -[1518-10-23 23:49] Guard #113 begins shift -[1518-03-11 23:59] Guard #113 begins shift -[1518-09-06 00:07] falls asleep -[1518-03-03 00:42] falls asleep -[1518-07-21 00:57] falls asleep -[1518-06-12 00:08] falls asleep -[1518-10-04 23:59] Guard #1237 begins shift -[1518-08-19 00:36] falls asleep -[1518-10-13 00:09] falls asleep -[1518-08-18 00:57] wakes up -[1518-08-28 23:52] Guard #1307 begins shift -[1518-09-09 00:58] wakes up -[1518-10-11 00:14] falls asleep -[1518-07-25 23:50] Guard #1559 begins shift -[1518-07-14 23:59] Guard #1237 begins shift -[1518-09-26 00:58] wakes up -[1518-05-22 23:59] Guard #3067 begins shift -[1518-05-22 00:57] falls asleep -[1518-05-02 00:58] wakes up -[1518-05-14 00:52] wakes up -[1518-04-18 00:51] wakes up -[1518-06-17 00:35] wakes up -[1518-05-18 23:59] Guard #389 begins shift -[1518-08-16 00:12] wakes up -[1518-11-08 00:49] wakes up -[1518-08-18 00:04] Guard #1307 begins shift -[1518-07-13 00:48] wakes up -[1518-08-18 23:58] Guard #1459 begins shift -[1518-03-09 00:52] wakes up -[1518-03-16 00:00] Guard #1237 begins shift -[1518-06-13 00:24] falls asleep -[1518-08-16 00:04] falls asleep -[1518-09-19 00:55] wakes up -[1518-10-04 00:47] wakes up -[1518-05-04 23:50] Guard #389 begins shift -[1518-07-03 00:57] wakes up -[1518-04-24 00:14] falls asleep -[1518-09-03 00:22] wakes up -[1518-11-09 00:54] falls asleep -[1518-09-02 00:36] wakes up -[1518-06-30 00:56] wakes up -[1518-08-26 00:51] wakes up -[1518-04-27 23:56] Guard #1307 begins shift -[1518-11-02 00:10] falls asleep -[1518-09-20 23:57] Guard #1811 begins shift -[1518-03-14 00:48] wakes up -[1518-05-31 00:30] wakes up -[1518-08-07 00:03] Guard #3209 begins shift -[1518-08-07 00:50] falls asleep -[1518-09-25 00:57] wakes up -[1518-10-18 00:08] wakes up -[1518-10-03 00:56] wakes up -[1518-05-27 00:46] wakes up -[1518-06-07 00:18] falls asleep -[1518-06-06 00:55] wakes up -[1518-03-18 00:56] wakes up -[1518-04-04 23:59] Guard #449 begins shift -[1518-09-28 00:59] wakes up -[1518-08-10 00:12] wakes up -[1518-05-30 00:21] wakes up -[1518-11-09 00:57] wakes up -[1518-11-15 00:13] falls asleep -[1518-06-10 23:57] Guard #1811 begins shift -[1518-11-04 00:01] falls asleep -[1518-05-21 00:47] falls asleep -[1518-10-07 00:05] falls asleep -[1518-03-12 00:36] wakes up -[1518-08-09 00:37] wakes up -[1518-09-23 00:58] wakes up -[1518-04-14 00:22] falls asleep -[1518-07-07 00:35] falls asleep -[1518-03-15 00:59] wakes up -[1518-03-14 00:44] falls asleep -[1518-11-06 00:04] Guard #3067 begins shift -[1518-07-14 00:01] Guard #3217 begins shift -[1518-10-23 00:09] falls asleep -[1518-07-01 00:38] wakes up -[1518-11-05 00:51] wakes up -[1518-04-08 00:52] falls asleep -[1518-09-22 00:40] falls asleep -[1518-09-08 00:20] falls asleep -[1518-05-09 00:49] falls asleep -[1518-10-17 00:02] Guard #3067 begins shift -[1518-10-01 23:56] Guard #3217 begins shift -[1518-05-10 00:58] wakes up -[1518-11-11 23:57] Guard #3271 begins shift -[1518-09-27 00:49] falls asleep -[1518-09-30 00:48] wakes up -[1518-06-06 00:01] Guard #601 begins shift -[1518-03-18 23:59] Guard #3217 begins shift -[1518-03-20 23:57] Guard #2647 begins shift -[1518-07-29 00:52] falls asleep -[1518-04-01 23:51] Guard #1459 begins shift -[1518-03-23 00:14] falls asleep -[1518-07-28 00:38] wakes up -[1518-09-04 00:49] wakes up -[1518-06-10 00:57] wakes up -[1518-10-26 00:57] wakes up -[1518-04-01 00:52] wakes up -[1518-07-10 00:47] wakes up -[1518-03-24 23:56] Guard #3217 begins shift -[1518-07-07 00:58] wakes up -[1518-08-10 00:11] falls asleep -[1518-08-22 00:56] falls asleep -[1518-11-03 00:21] wakes up -[1518-03-28 23:59] Guard #947 begins shift -[1518-07-29 00:35] falls asleep -[1518-09-09 00:05] falls asleep -[1518-04-11 00:58] wakes up -[1518-10-12 00:55] wakes up -[1518-11-14 00:44] wakes up -[1518-03-17 00:47] wakes up -[1518-03-29 00:13] falls asleep -[1518-06-04 00:40] falls asleep -[1518-11-16 00:14] falls asleep -[1518-05-11 00:04] Guard #1459 begins shift -[1518-06-03 00:11] falls asleep -[1518-10-22 00:58] wakes up -[1518-04-15 00:57] falls asleep -[1518-07-12 00:59] wakes up -[1518-05-21 00:31] wakes up -[1518-06-27 00:09] falls asleep -[1518-08-07 00:41] wakes up -[1518-10-22 00:11] falls asleep -[1518-09-02 00:43] falls asleep -[1518-05-31 00:28] falls asleep -[1518-05-25 00:07] falls asleep -[1518-07-25 00:13] wakes up -[1518-06-13 00:35] wakes up -[1518-08-17 00:40] falls asleep -[1518-08-02 00:58] wakes up -[1518-03-26 00:23] falls asleep -[1518-11-04 00:59] wakes up -[1518-03-28 00:38] falls asleep -[1518-10-29 23:57] Guard #113 begins shift -[1518-09-11 23:59] Guard #2647 begins shift -[1518-03-09 00:48] falls asleep -[1518-08-18 00:53] wakes up -[1518-09-02 00:46] wakes up -[1518-06-18 00:02] Guard #739 begins shift -[1518-10-22 00:00] Guard #1811 begins shift -[1518-09-23 00:27] wakes up -[1518-08-31 00:38] falls asleep -[1518-09-25 00:39] falls asleep -[1518-08-08 00:03] Guard #2647 begins shift -[1518-09-14 00:23] falls asleep -[1518-08-21 00:04] Guard #877 begins shift -[1518-10-09 00:31] wakes up -[1518-06-20 00:51] wakes up -[1518-06-06 00:17] falls asleep -[1518-08-10 00:17] falls asleep -[1518-05-08 00:57] wakes up -[1518-11-10 00:06] falls asleep -[1518-05-30 23:58] Guard #1559 begins shift -[1518-10-12 00:44] falls asleep -[1518-09-08 00:53] wakes up -[1518-04-08 00:28] falls asleep -[1518-08-17 00:52] wakes up -[1518-05-02 00:57] falls asleep -[1518-05-06 00:56] wakes up -[1518-03-23 00:00] Guard #1811 begins shift -[1518-04-27 00:10] falls asleep -[1518-06-09 00:04] falls asleep -[1518-08-18 00:10] falls asleep -[1518-07-25 00:46] falls asleep -[1518-10-10 00:43] wakes up -[1518-04-19 00:48] wakes up -[1518-10-20 00:49] wakes up -[1518-04-17 00:01] Guard #1237 begins shift -[1518-05-21 00:06] falls asleep -[1518-11-15 00:37] wakes up -[1518-05-04 00:24] wakes up -[1518-10-04 00:01] Guard #2647 begins shift -[1518-03-26 00:00] Guard #389 begins shift -[1518-08-29 00:23] wakes up -[1518-04-02 00:03] falls asleep -[1518-05-14 00:12] falls asleep -[1518-04-14 00:57] wakes up -[1518-06-01 23:56] Guard #449 begins shift -[1518-08-11 23:56] Guard #1811 begins shift -[1518-07-04 00:01] Guard #3271 begins shift -[1518-07-22 00:38] falls asleep -[1518-11-13 23:58] Guard #2647 begins shift -[1518-05-07 00:59] wakes up -[1518-06-22 00:26] falls asleep -[1518-08-28 00:01] Guard #3067 begins shift -[1518-10-31 00:03] Guard #113 begins shift -[1518-06-24 00:48] wakes up -[1518-03-18 00:28] falls asleep -[1518-03-16 00:13] falls asleep -[1518-04-27 00:57] falls asleep -[1518-07-14 00:24] wakes up -[1518-11-18 00:59] wakes up -[1518-05-01 00:00] Guard #739 begins shift -[1518-11-08 23:56] Guard #3209 begins shift -[1518-06-20 00:36] falls asleep -[1518-09-21 00:20] falls asleep -[1518-05-28 00:21] wakes up -[1518-03-05 00:23] falls asleep -[1518-03-30 00:38] wakes up -[1518-07-12 00:56] falls asleep -[1518-04-03 00:25] wakes up -[1518-03-21 00:58] wakes up -[1518-08-11 00:17] falls asleep -[1518-08-12 23:59] Guard #947 begins shift -[1518-04-29 23:53] Guard #947 begins shift -[1518-05-10 00:03] Guard #3209 begins shift -[1518-03-04 00:38] wakes up -[1518-05-14 00:03] Guard #947 begins shift -[1518-03-22 00:57] wakes up -[1518-07-15 00:37] falls asleep -[1518-06-11 00:48] wakes up -[1518-04-14 00:01] Guard #557 begins shift -[1518-07-24 00:49] wakes up -[1518-09-01 00:56] wakes up -[1518-08-26 00:59] wakes up -[1518-08-25 00:15] falls asleep -[1518-07-06 00:04] falls asleep -[1518-07-03 00:03] Guard #557 begins shift -[1518-10-20 00:45] falls asleep -[1518-10-18 00:53] falls asleep -[1518-06-19 00:53] wakes up -[1518-03-27 00:51] falls asleep -[1518-07-11 00:43] falls asleep -[1518-05-03 00:55] falls asleep -[1518-09-21 00:49] falls asleep -[1518-09-20 00:54] wakes up -[1518-06-01 00:04] falls asleep -[1518-05-13 00:37] wakes up -[1518-06-27 00:46] wakes up -[1518-04-03 00:01] Guard #601 begins shift -[1518-03-13 00:55] falls asleep -[1518-10-10 00:13] falls asleep -[1518-10-31 00:21] falls asleep -[1518-03-14 00:54] falls asleep -[1518-04-06 00:02] Guard #1237 begins shift -[1518-10-15 00:48] wakes up -[1518-03-27 00:02] Guard #1559 begins shift -[1518-10-12 00:14] falls asleep -[1518-07-11 00:25] falls asleep -[1518-03-04 00:43] falls asleep -[1518-04-16 00:53] falls asleep -[1518-06-11 00:54] falls asleep -[1518-06-16 00:15] falls asleep -[1518-10-18 00:46] falls asleep -[1518-07-24 00:02] Guard #389 begins shift -[1518-04-04 00:26] wakes up -[1518-04-07 00:21] falls asleep -[1518-04-12 23:56] Guard #2647 begins shift -[1518-07-18 00:49] wakes up -[1518-05-07 00:04] falls asleep -[1518-10-06 00:04] Guard #947 begins shift -[1518-09-18 00:43] wakes up -[1518-04-29 00:33] wakes up -[1518-07-29 00:57] falls asleep -[1518-08-27 00:42] wakes up -[1518-03-16 23:46] Guard #739 begins shift -[1518-05-20 00:23] falls asleep -[1518-07-27 00:09] falls asleep -[1518-08-18 00:37] falls asleep -[1518-06-26 00:01] Guard #1307 begins shift -[1518-09-30 00:20] falls asleep -[1518-04-11 00:44] falls asleep -[1518-04-09 00:12] falls asleep -[1518-03-31 00:03] Guard #1559 begins shift -[1518-06-08 00:00] Guard #449 begins shift -[1518-11-07 00:46] wakes up -[1518-04-11 00:04] Guard #409 begins shift -[1518-03-04 00:56] wakes up -[1518-07-24 00:47] falls asleep -[1518-08-25 00:21] wakes up -[1518-05-24 00:06] falls asleep -[1518-05-08 00:52] falls asleep -[1518-08-29 23:57] Guard #3067 begins shift -[1518-05-18 00:00] falls asleep -[1518-08-19 23:59] Guard #1459 begins shift -[1518-05-31 00:58] wakes up -[1518-06-13 00:00] Guard #947 begins shift -[1518-10-28 00:48] falls asleep -[1518-05-20 23:58] Guard #877 begins shift -[1518-08-20 00:28] falls asleep -[1518-06-17 00:12] falls asleep -[1518-08-19 00:51] falls asleep -[1518-03-03 23:48] Guard #557 begins shift -[1518-10-28 00:30] falls asleep -[1518-03-30 00:11] falls asleep -[1518-06-07 00:53] wakes up -[1518-07-22 00:01] Guard #557 begins shift -[1518-11-11 00:58] wakes up -[1518-08-27 00:00] Guard #3067 begins shift -[1518-06-06 00:19] wakes up -[1518-10-24 00:59] wakes up -[1518-11-03 00:26] falls asleep -[1518-08-19 00:41] wakes up -[1518-03-19 00:33] falls asleep -[1518-10-02 00:53] wakes up -[1518-07-31 23:58] Guard #1723 begins shift -[1518-08-23 00:53] wakes up -[1518-03-13 00:59] wakes up -[1518-10-20 23:59] Guard #449 begins shift -[1518-05-12 00:09] falls asleep -[1518-05-17 23:54] Guard #1811 begins shift -[1518-06-25 00:53] wakes up -[1518-06-17 00:55] wakes up -[1518-05-09 00:24] falls asleep -[1518-08-14 00:01] Guard #739 begins shift -[1518-03-20 00:06] falls asleep -[1518-11-20 00:28] falls asleep -[1518-04-15 00:58] wakes up -[1518-05-22 00:36] wakes up -[1518-04-12 00:04] Guard #877 begins shift -[1518-06-04 23:52] Guard #877 begins shift -[1518-10-09 00:07] falls asleep -[1518-06-05 00:15] falls asleep -[1518-06-28 00:34] wakes up -[1518-11-13 00:37] wakes up -[1518-09-24 00:48] wakes up -[1518-05-15 00:02] Guard #557 begins shift -[1518-05-27 00:21] falls asleep -[1518-11-12 00:34] wakes up -[1518-06-06 00:51] falls asleep -[1518-11-21 00:43] wakes up -[1518-09-01 00:28] falls asleep -[1518-10-13 00:00] Guard #947 begins shift -[1518-11-20 00:46] wakes up -[1518-05-22 00:01] Guard #1559 begins shift -[1518-04-05 00:07] falls asleep -[1518-06-11 23:56] Guard #3209 begins shift -[1518-07-11 00:51] wakes up -[1518-08-30 00:17] falls asleep -[1518-05-12 23:57] Guard #3271 begins shift -[1518-03-15 00:24] falls asleep -[1518-04-26 23:59] Guard #3067 begins shift -[1518-03-09 00:06] falls asleep -[1518-03-09 00:57] wakes up -[1518-03-08 00:58] wakes up -[1518-04-13 00:22] falls asleep -[1518-04-14 23:46] Guard #1033 begins shift -[1518-07-28 00:54] falls asleep -[1518-09-20 00:00] Guard #3067 begins shift -[1518-05-09 00:43] wakes up -[1518-11-01 00:03] Guard #3067 begins shift -[1518-05-12 00:55] wakes up -[1518-03-08 00:09] falls asleep -[1518-03-10 00:40] wakes up -[1518-03-28 00:00] Guard #1459 begins shift -[1518-10-14 00:34] falls asleep -[1518-09-22 00:26] falls asleep -[1518-10-30 00:26] falls asleep -[1518-09-12 00:07] falls asleep -[1518-03-26 00:58] wakes up -[1518-07-20 00:20] falls asleep -[1518-06-28 00:25] falls asleep -[1518-09-12 00:24] wakes up -[1518-05-22 00:13] falls asleep -[1518-08-13 00:42] wakes up -[1518-08-22 00:04] falls asleep -[1518-07-28 23:59] Guard #1559 begins shift -[1518-08-24 23:59] Guard #2647 begins shift -[1518-10-24 00:05] falls asleep -[1518-06-22 00:47] wakes up -[1518-10-26 00:35] falls asleep -[1518-08-10 00:58] wakes up -[1518-03-14 00:57] wakes up -[1518-07-09 00:32] falls asleep -[1518-04-28 00:55] falls asleep -[1518-10-13 00:41] wakes up -[1518-07-02 00:17] falls asleep -[1518-04-17 00:58] wakes up -[1518-05-22 00:58] wakes up -[1518-09-01 00:48] wakes up -[1518-04-01 00:48] falls asleep -[1518-07-01 00:00] Guard #557 begins shift -[1518-04-18 00:40] falls asleep -[1518-03-13 23:57] Guard #449 begins shift -[1518-04-08 00:00] Guard #877 begins shift -[1518-09-16 23:57] Guard #1459 begins shift -[1518-11-06 00:57] wakes up -[1518-07-19 23:56] Guard #1459 begins shift -[1518-03-07 00:42] falls asleep -[1518-06-10 00:02] Guard #1559 begins shift -[1518-06-20 00:25] wakes up -[1518-04-08 00:44] falls asleep -[1518-06-22 00:01] Guard #113 begins shift -[1518-07-08 23:46] Guard #1811 begins shift -[1518-07-23 00:03] falls asleep -[1518-04-23 00:31] falls asleep -[1518-08-20 00:58] wakes up -[1518-09-30 23:57] Guard #3217 begins shift -[1518-10-28 00:00] Guard #449 begins shift -[1518-06-02 00:30] falls asleep -[1518-09-04 00:36] falls asleep -[1518-07-24 00:56] falls asleep -[1518-04-16 00:04] Guard #601 begins shift -[1518-05-20 00:38] wakes up -[1518-10-29 00:33] falls asleep -[1518-07-17 00:42] wakes up -[1518-04-07 00:01] Guard #449 begins shift -[1518-08-29 00:54] wakes up -[1518-04-08 00:54] wakes up -[1518-03-12 00:32] falls asleep -[1518-05-06 00:43] wakes up -[1518-03-05 00:00] Guard #3271 begins shift -[1518-07-30 00:04] Guard #389 begins shift -[1518-07-26 00:00] falls asleep -[1518-10-17 00:23] falls asleep -[1518-09-06 23:53] Guard #389 begins shift -[1518-03-08 00:56] falls asleep -[1518-09-13 00:55] wakes up -[1518-07-20 00:31] wakes up -[1518-10-14 00:02] Guard #557 begins shift -[1518-05-26 00:01] Guard #1811 begins shift -[1518-05-29 00:29] wakes up -[1518-07-08 00:57] falls asleep -[1518-07-10 00:21] falls asleep -[1518-08-24 00:50] wakes up -[1518-03-09 00:09] wakes up -[1518-08-16 00:22] falls asleep -[1518-05-01 00:52] wakes up -[1518-06-01 00:25] falls asleep -[1518-07-01 00:26] wakes up -[1518-09-08 23:52] Guard #389 begins shift -[1518-09-17 00:35] falls asleep -[1518-05-30 00:58] wakes up -[1518-11-11 00:54] wakes up -[1518-04-30 00:37] wakes up -[1518-05-06 23:54] Guard #1033 begins shift -[1518-11-08 00:25] falls asleep -[1518-11-15 23:58] Guard #3217 begins shift -[1518-11-01 00:14] falls asleep -[1518-10-08 00:57] wakes up -[1518-08-18 00:56] falls asleep -[1518-11-10 23:57] Guard #2647 begins shift -[1518-03-21 23:57] Guard #389 begins shift -[1518-09-22 23:59] Guard #3209 begins shift -[1518-08-24 00:58] wakes up -[1518-10-19 23:57] Guard #389 begins shift -[1518-09-07 23:48] Guard #3209 begins shift -[1518-08-10 23:57] Guard #1033 begins shift -[1518-03-13 00:03] Guard #3271 begins shift -[1518-03-19 00:37] wakes up -[1518-06-18 23:59] Guard #877 begins shift -[1518-10-04 00:51] falls asleep -[1518-09-28 00:42] falls asleep -[1518-05-06 00:00] Guard #1459 begins shift -[1518-05-03 00:26] wakes up -[1518-06-26 00:55] wakes up -[1518-09-15 00:59] wakes up -[1518-07-22 00:35] wakes up -[1518-09-03 00:51] wakes up -[1518-07-22 00:58] wakes up -[1518-04-29 00:15] falls asleep -[1518-10-29 00:58] wakes up -[1518-07-27 00:46] falls asleep -[1518-07-29 00:54] wakes up -[1518-11-23 00:54] wakes up -[1518-04-25 23:48] Guard #877 begins shift -[1518-08-16 23:57] Guard #1559 begins shift -[1518-09-25 00:47] falls asleep -[1518-03-06 00:18] wakes up -[1518-10-18 00:00] falls asleep -[1518-10-01 00:48] wakes up -[1518-04-12 00:59] wakes up -[1518-11-13 00:50] falls asleep -[1518-09-10 23:58] Guard #3209 begins shift -[1518-09-27 00:00] Guard #409 begins shift -[1518-09-21 23:51] Guard #3209 begins shift -[1518-11-03 00:11] falls asleep -[1518-11-18 00:06] falls asleep -[1518-03-06 00:56] falls asleep -[1518-07-14 00:17] falls asleep -[1518-08-05 00:40] falls asleep -[1518-04-23 00:43] falls asleep -[1518-09-18 00:00] falls asleep -[1518-08-02 23:56] Guard #2647 begins shift -[1518-09-22 00:34] wakes up -[1518-06-19 00:08] falls asleep -[1518-06-01 00:41] wakes up -[1518-09-08 00:11] wakes up -[1518-04-17 00:54] falls asleep -[1518-05-27 00:02] Guard #3271 begins shift -[1518-08-07 00:53] wakes up -[1518-07-20 00:39] falls asleep -[1518-11-07 23:58] Guard #449 begins shift -[1518-09-24 23:57] Guard #1459 begins shift -[1518-04-28 00:57] wakes up -[1518-08-28 00:53] wakes up -[1518-04-16 00:29] falls asleep -[1518-07-12 00:42] wakes up -[1518-06-22 23:56] Guard #3067 begins shift -[1518-03-20 00:46] wakes up -[1518-05-07 23:50] Guard #409 begins shift -[1518-08-25 00:48] wakes up -[1518-04-06 00:56] falls asleep -[1518-09-03 00:06] falls asleep -[1518-09-10 00:01] falls asleep -[1518-07-17 00:11] falls asleep -[1518-10-23 00:49] wakes up -[1518-05-30 00:03] falls asleep -[1518-10-12 00:51] falls asleep -[1518-11-17 00:00] Guard #1307 begins shift -[1518-03-23 00:28] wakes up -[1518-08-02 00:54] falls asleep -[1518-08-16 00:53] wakes up -[1518-06-09 00:43] wakes up -[1518-04-23 00:50] wakes up -[1518-11-02 00:51] wakes up -[1518-08-25 00:46] falls asleep -[1518-06-27 00:36] wakes up -[1518-04-08 23:57] Guard #1559 begins shift -[1518-07-09 00:58] wakes up -[1518-10-28 23:56] Guard #449 begins shift -[1518-04-02 00:53] wakes up -[1518-05-17 00:45] falls asleep -[1518-03-15 00:04] Guard #601 begins shift -[1518-03-17 00:15] wakes up -[1518-05-05 00:59] wakes up -[1518-05-25 00:03] wakes up -[1518-10-18 23:57] Guard #1559 begins shift -[1518-10-21 00:27] falls asleep -[1518-05-12 00:40] wakes up -[1518-04-06 00:58] wakes up -[1518-05-23 00:20] falls asleep -[1518-07-16 23:56] Guard #1459 begins shift -[1518-06-12 00:51] wakes up -[1518-04-19 00:34] falls asleep -[1518-06-14 00:09] falls asleep -[1518-08-08 00:19] falls asleep -[1518-09-04 00:02] falls asleep -[1518-05-23 00:57] wakes up -[1518-03-27 00:17] falls asleep -[1518-04-15 00:28] falls asleep -[1518-09-23 00:30] falls asleep -[1518-10-08 00:44] wakes up -[1518-08-29 00:29] falls asleep -[1518-08-03 00:52] falls asleep -[1518-10-24 00:45] wakes up -[1518-05-12 00:45] falls asleep -[1518-09-12 00:29] falls asleep -[1518-04-16 00:59] wakes up -[1518-07-11 00:31] wakes up -[1518-07-04 00:39] wakes up -[1518-05-16 00:44] wakes up -[1518-06-21 00:45] wakes up -[1518-07-26 23:58] Guard #3209 begins shift -[1518-05-08 23:58] Guard #877 begins shift -[1518-11-07 00:20] falls asleep -[1518-08-26 00:04] Guard #389 begins shift -[1518-03-11 00:16] falls asleep -[1518-11-17 00:20] falls asleep -[1518-09-10 00:49] wakes up -[1518-05-10 00:36] falls asleep -[1518-05-16 00:55] wakes up -[1518-08-04 00:01] Guard #409 begins shift -[1518-04-26 00:45] wakes up -[1518-09-07 00:46] wakes up -[1518-10-21 00:47] wakes up -[1518-05-15 00:46] wakes up -[1518-08-21 00:50] wakes up -[1518-08-08 00:58] wakes up -[1518-08-26 00:57] falls asleep -[1518-07-02 00:51] wakes up -[1518-03-25 00:16] falls asleep -[1518-08-11 00:59] wakes up -[1518-04-19 00:58] wakes up -[1518-10-15 00:56] falls asleep -[1518-06-15 00:14] falls asleep -[1518-04-03 00:42] wakes up -[1518-11-14 00:18] falls asleep -[1518-05-12 00:02] Guard #947 begins shift -[1518-04-15 00:05] falls asleep -[1518-04-23 00:39] wakes up -[1518-07-22 00:19] falls asleep -[1518-07-31 00:44] wakes up -[1518-10-27 00:43] wakes up -[1518-09-22 00:03] falls asleep -[1518-03-07 00:02] Guard #3067 begins shift -[1518-03-03 00:55] wakes up -[1518-06-02 00:56] wakes up -[1518-03-04 00:23] wakes up -[1518-08-06 00:37] falls asleep -[1518-06-23 23:50] Guard #1559 begins shift -[1518-09-27 00:50] wakes up -[1518-07-08 00:19] falls asleep -[1518-05-09 00:52] wakes up -[1518-03-06 00:02] falls asleep -[1518-06-05 00:01] falls asleep -[1518-05-03 00:47] wakes up -[1518-05-29 00:41] falls asleep -[1518-10-25 23:58] Guard #947 begins shift -[1518-10-14 23:59] Guard #3209 begins shift -[1518-03-04 00:02] falls asleep -[1518-07-28 00:03] Guard #3217 begins shift -[1518-09-12 00:09] wakes up -[1518-03-09 00:35] wakes up -[1518-10-27 00:00] Guard #739 begins shift -[1518-07-29 00:59] wakes up -[1518-11-10 00:34] wakes up -[1518-05-25 00:02] falls asleep -[1518-03-10 00:30] falls asleep -[1518-07-08 00:48] wakes up -[1518-05-19 23:57] Guard #3217 begins shift -[1518-03-31 00:40] wakes up -[1518-08-02 00:28] falls asleep -[1518-11-11 00:57] falls asleep -[1518-06-27 00:45] falls asleep -[1518-07-05 23:53] Guard #1559 begins shift -[1518-10-02 00:17] falls asleep -[1518-06-13 00:45] falls asleep -[1518-10-04 00:18] falls asleep -[1518-06-03 00:59] wakes up -[1518-06-11 00:57] wakes up -[1518-04-04 00:02] Guard #947 begins shift -[1518-04-24 00:45] falls asleep -[1518-03-20 00:00] Guard #1307 begins shift -[1518-11-16 00:58] wakes up -[1518-05-01 23:58] Guard #389 begins shift -[1518-08-06 00:00] Guard #1559 begins shift -[1518-03-05 23:49] Guard #113 begins shift -[1518-06-23 00:56] wakes up -[1518-09-28 00:48] wakes up -[1518-07-19 00:49] wakes up -[1518-07-08 00:58] wakes up -[1518-04-03 00:41] falls asleep -[1518-09-14 00:57] wakes up -[1518-07-25 00:05] falls asleep -[1518-11-12 23:57] Guard #1811 begins shift -[1518-06-10 00:29] falls asleep -[1518-08-21 00:58] wakes up -[1518-03-17 00:43] falls asleep -[1518-03-06 00:59] wakes up -[1518-08-06 00:44] wakes up -[1518-07-04 23:56] Guard #2389 begins shift -[1518-06-21 00:03] falls asleep -[1518-04-10 00:27] falls asleep -[1518-03-30 00:59] wakes up -[1518-03-31 23:57] Guard #449 begins shift -[1518-09-08 00:01] falls asleep -[1518-04-10 00:58] wakes up -[1518-05-30 00:45] falls asleep -[1518-09-26 00:51] falls asleep -[1518-09-20 00:16] falls asleep -[1518-05-08 00:05] falls asleep -[1518-09-13 00:23] falls asleep -[1518-09-12 00:23] falls asleep -[1518-03-31 00:39] falls asleep -[1518-06-08 00:40] falls asleep -[1518-08-23 23:59] Guard #409 begins shift -[1518-09-03 00:35] falls asleep -[1518-06-04 00:00] Guard #1237 begins shift -[1518-11-05 00:01] Guard #3209 begins shift -[1518-07-21 00:36] falls asleep -[1518-10-11 23:59] Guard #601 begins shift -[1518-11-19 00:59] wakes up -[1518-11-17 23:57] Guard #1559 begins shift -[1518-06-07 00:04] Guard #3209 begins shift -[1518-10-15 00:21] falls asleep -[1518-04-07 00:58] wakes up -[1518-07-09 00:19] wakes up -[1518-08-05 00:51] wakes up -[1518-05-01 00:22] wakes up -[1518-03-07 00:59] wakes up -[1518-08-12 00:33] wakes up -[1518-05-03 00:18] falls asleep -[1518-03-10 00:04] Guard #3271 begins shift -[1518-10-31 00:55] wakes up -[1518-07-03 00:48] falls asleep -[1518-05-31 23:52] Guard #3271 begins shift -[1518-05-23 00:37] wakes up -[1518-06-13 00:59] wakes up -[1518-11-06 00:29] falls asleep -[1518-10-27 00:09] falls asleep -[1518-05-07 00:50] falls asleep -[1518-06-28 23:53] Guard #1459 begins shift -[1518-04-04 00:37] falls asleep -[1518-10-09 23:56] Guard #3209 begins shift -[1518-06-29 00:02] falls asleep -[1518-09-16 00:56] wakes up -[1518-05-08 00:31] wakes up -[1518-10-08 00:20] falls asleep -[1518-04-21 00:58] wakes up -[1518-03-09 00:56] falls asleep -[1518-06-13 23:58] Guard #1033 begins shift -[1518-07-22 00:42] wakes up -[1518-05-28 00:11] falls asleep -[1518-06-17 00:00] Guard #3271 begins shift -[1518-09-27 00:56] falls asleep -[1518-04-18 00:00] Guard #947 begins shift -[1518-09-19 00:04] Guard #3209 begins shift -[1518-11-18 00:49] falls asleep -[1518-08-25 00:42] wakes up -[1518-04-20 00:56] wakes up -[1518-08-22 00:47] wakes up -[1518-10-07 00:59] wakes up -[1518-04-18 23:59] Guard #389 begins shift -[1518-07-16 00:23] falls asleep -[1518-07-30 00:17] falls asleep -[1518-04-24 00:03] Guard #877 begins shift -[1518-05-06 00:38] falls asleep -[1518-05-28 00:44] falls asleep -[1518-05-02 23:56] Guard #557 begins shift -[1518-11-17 00:47] falls asleep -[1518-06-18 00:44] falls asleep -[1518-11-04 00:14] wakes up -[1518-06-16 00:30] wakes up -[1518-11-02 00:22] wakes up -[1518-04-22 23:57] Guard #601 begins shift -[1518-06-20 23:50] Guard #3067 begins shift -[1518-07-28 00:06] falls asleep -[1518-08-25 00:28] falls asleep -[1518-11-06 00:47] falls asleep -[1518-05-16 00:49] falls asleep -[1518-09-15 00:40] falls asleep -[1518-09-25 00:44] wakes up -[1518-06-04 00:58] wakes up -[1518-03-08 00:50] wakes up -[1518-10-30 00:58] wakes up -[1518-05-01 00:25] falls asleep -[1518-11-13 00:51] wakes up -[1518-10-06 00:54] wakes up -[1518-04-28 00:51] wakes up -[1518-04-24 00:33] wakes up -[1518-03-25 00:51] wakes up -[1518-11-02 23:58] Guard #877 begins shift -[1518-07-12 00:00] Guard #1459 begins shift -[1518-09-12 00:45] wakes up -[1518-11-11 00:47] falls asleep -[1518-10-08 23:57] Guard #947 begins shift -[1518-06-08 00:59] wakes up -[1518-07-10 00:04] Guard #3217 begins shift -[1518-09-03 23:50] Guard #1459 begins shift -[1518-09-01 23:50] Guard #3271 begins shift -[1518-11-19 23:56] Guard #113 begins shift -[1518-04-22 00:00] Guard #3217 begins shift -[1518-07-20 23:58] Guard #877 begins shift -[1518-09-28 00:03] Guard #3217 begins shift -[1518-03-04 00:18] falls asleep -[1518-09-03 00:03] Guard #1307 begins shift -[1518-09-14 00:48] falls asleep -[1518-09-02 00:49] falls asleep -[1518-03-24 00:46] wakes up -[1518-07-24 00:59] wakes up -[1518-09-01 00:02] Guard #449 begins shift -[1518-04-25 00:24] falls asleep -[1518-06-11 00:28] falls asleep -[1518-07-09 00:49] falls asleep -[1518-08-31 00:02] Guard #409 begins shift -[1518-08-05 00:02] Guard #389 begins shift -[1518-08-22 00:58] wakes up -[1518-09-29 00:52] wakes up -[1518-09-07 00:01] falls asleep -[1518-10-19 00:15] falls asleep -[1518-07-18 00:39] falls asleep -[1518-07-06 23:58] Guard #113 begins shift -[1518-11-10 00:04] Guard #1033 begins shift -[1518-08-15 00:01] Guard #1559 begins shift -[1518-04-12 00:13] falls asleep -[1518-06-05 00:56] wakes up -[1518-10-17 00:54] falls asleep -[1518-10-10 23:58] Guard #1459 begins shift -[1518-08-13 00:14] falls asleep -[1518-10-16 00:02] Guard #2389 begins shift -[1518-07-11 00:01] Guard #557 begins shift -[1518-10-02 00:42] falls asleep -[1518-07-15 23:57] Guard #449 begins shift -[1518-03-07 00:45] wakes up -[1518-11-19 00:02] Guard #389 begins shift -[1518-11-03 00:51] wakes up -[1518-10-22 23:59] Guard #1459 begins shift -[1518-07-08 00:02] Guard #3271 begins shift -[1518-09-16 00:18] wakes up -[1518-05-05 00:00] falls asleep -[1518-09-15 00:01] Guard #2647 begins shift -[1518-05-19 00:46] falls asleep -[1518-10-17 00:48] wakes up -[1518-03-07 00:57] falls asleep -[1518-09-11 00:52] wakes up -[1518-10-13 00:53] falls asleep -[1518-07-13 00:43] falls asleep -[1518-06-26 00:30] falls asleep -[1518-07-28 00:59] wakes up -[1518-08-12 00:15] falls asleep -[1518-06-25 00:21] falls asleep -[1518-05-26 00:38] falls asleep -[1518-07-12 23:59] Guard #1811 begins shift -[1518-05-28 00:47] wakes up -[1518-10-02 23:56] Guard #1307 begins shift -[1518-09-22 00:47] wakes up -[1518-05-07 00:35] wakes up -[1518-08-09 00:17] falls asleep -[1518-10-30 00:42] falls asleep -[1518-04-04 00:18] falls asleep -[1518-03-22 00:44] falls asleep -[1518-06-13 00:57] falls asleep -[1518-05-02 00:29] falls asleep -[1518-08-15 00:55] wakes up -[1518-04-19 00:57] falls asleep -[1518-04-19 23:59] Guard #947 begins shift -[1518-05-02 00:46] falls asleep -[1518-11-15 00:00] Guard #3209 begins shift -[1518-10-13 00:57] wakes up -[1518-04-03 00:07] falls asleep -[1518-08-15 00:20] falls asleep -[1518-03-13 00:47] wakes up -[1518-09-19 00:09] falls asleep -[1518-11-17 00:21] wakes up -[1518-10-19 00:35] wakes up -[1518-05-15 00:40] falls asleep -[1518-11-03 23:48] Guard #1307 begins shift -[1518-04-10 00:04] Guard #1307 begins shift -[1518-06-20 00:04] Guard #3217 begins shift -[1518-05-16 00:04] falls asleep -[1518-07-19 00:12] falls asleep -[1518-10-12 00:23] wakes up -[1518-03-11 00:56] wakes up -[1518-05-23 00:56] falls asleep -[1518-06-28 00:32] falls asleep -[1518-05-11 00:45] wakes up -[1518-04-09 00:33] falls asleep -[1518-10-05 00:10] falls asleep -[1518-06-30 00:37] wakes up -[1518-07-04 00:06] falls asleep -[1518-05-02 00:53] wakes up -[1518-10-06 23:54] Guard #557 begins shift -[1518-08-23 00:17] falls asleep -[1518-09-11 00:19] falls asleep -[1518-03-27 00:58] wakes up -[1518-09-06 00:01] Guard #1237 begins shift -[1518-07-06 00:45] wakes up -[1518-08-04 00:48] wakes up -[1518-09-19 00:25] falls asleep -[1518-04-11 00:31] wakes up -[1518-04-21 00:20] falls asleep -[1518-10-30 00:57] falls asleep -[1518-08-03 00:58] wakes up -[1518-04-27 00:58] wakes up -[1518-10-15 00:58] wakes up -[1518-11-23 00:42] falls asleep -[1518-06-15 00:01] Guard #1559 begins shift -[1518-04-24 00:49] wakes up -[1518-09-21 00:31] wakes up -[1518-05-26 00:41] wakes up -[1518-07-28 00:51] wakes up -[1518-11-22 23:58] Guard #2647 begins shift -[1518-10-28 00:39] wakes up -[1518-09-14 00:37] wakes up -[1518-05-15 23:51] Guard #3217 begins shift -[1518-07-01 00:33] falls asleep -[1518-03-29 00:44] wakes up -[1518-05-22 00:51] wakes up -[1518-10-14 00:54] wakes up -[1518-07-15 00:45] wakes up -[1518-06-14 00:27] wakes up -[1518-07-13 00:55] wakes up -[1518-09-28 00:54] falls asleep -[1518-10-18 00:50] wakes up -[1518-08-26 00:27] falls asleep -[1518-11-04 00:53] falls asleep -[1518-05-01 00:10] falls asleep -[1518-08-02 00:47] wakes up -[1518-04-30 00:05] falls asleep -[1518-09-05 00:56] wakes up -[1518-09-01 00:55] falls asleep -[1518-06-15 23:56] Guard #1559 begins shift -[1518-09-09 23:46] Guard #947 begins shift -[1518-06-06 00:36] falls asleep -[1518-07-24 23:48] Guard #1237 begins shift -[1518-07-01 00:08] falls asleep -[1518-07-12 00:37] falls asleep -[1518-03-30 00:54] wakes up -[1518-06-17 00:48] falls asleep -[1518-11-07 00:03] Guard #1459 begins shift -[1518-03-28 00:58] wakes up -[1518-08-03 00:48] wakes up -[1518-06-09 00:32] falls asleep -[1518-11-05 00:11] falls asleep -[1518-11-21 23:52] Guard #409 begins shift -[1518-11-22 00:04] falls asleep -[1518-08-22 23:59] Guard #113 begins shift -[1518-11-06 00:41] wakes up -[1518-10-03 00:40] falls asleep -[1518-06-25 00:00] Guard #877 begins shift -[1518-05-17 00:00] Guard #449 begins shift -[1518-06-28 00:03] Guard #3271 begins shift -[1518-09-29 00:03] Guard #2647 begins shift -[1518-05-21 00:19] wakes up -[1518-03-30 00:53] falls asleep -[1518-08-14 00:49] wakes up -[1518-06-23 00:37] falls asleep -[1518-07-31 00:00] Guard #3217 begins shift -[1518-06-09 00:29] wakes up -[1518-03-11 00:00] Guard #389 begins shift -[1518-11-11 00:27] wakes up -[1518-08-21 00:57] falls asleep -[1518-08-09 23:56] Guard #1811 begins shift -[1518-04-25 00:04] Guard #2647 begins shift -[1518-07-09 00:03] falls asleep -[1518-09-25 23:58] Guard #1033 begins shift -[1518-07-17 23:58] Guard #409 begins shift -[1518-05-22 00:47] falls asleep -[1518-08-30 00:32] wakes up -[1518-10-14 00:23] wakes up -[1518-10-17 00:56] wakes up -[1518-08-12 00:59] wakes up -[1518-09-21 00:58] wakes up -[1518-09-22 00:22] wakes up -[1518-05-29 00:52] wakes up -[1518-09-05 00:51] falls asleep -[1518-10-05 00:52] falls asleep -[1518-03-09 00:29] falls asleep -[1518-04-09 00:50] wakes up -[1518-10-04 00:59] wakes up -[1518-07-27 00:33] wakes up -[1518-07-13 00:51] falls asleep -[1518-06-28 00:29] wakes up -[1518-07-23 00:44] wakes up -[1518-05-24 00:58] wakes up -[1518-09-24 00:07] falls asleep -[1518-08-19 00:55] wakes up -[1518-04-15 00:53] wakes up -[1518-08-29 00:04] falls asleep -[1518-07-21 00:59] wakes up -[1518-05-03 00:45] falls asleep -[1518-03-17 00:01] falls asleep -[1518-03-05 00:51] wakes up -[1518-07-22 00:46] falls asleep -[1518-06-30 00:14] falls asleep -[1518-08-03 00:32] falls asleep -[1518-11-22 00:08] wakes up -[1518-05-21 00:58] wakes up -[1518-03-23 23:46] Guard #3209 begins shift diff --git a/inputs/5.txt b/inputs/5.txt deleted file mode 100644 index 4d4b703..0000000 --- a/inputs/5.txt +++ /dev/null @@ -1 +0,0 @@ -XxSsdDIijNnJACszZScZfFhHQyYrRqzdXTtxDEeNnGgOaAcCMcCLlMmogQeEqGgFfGyYuUOIiYyhHlLmUulAUKkudDOoDdaLGRrgoDdDdGgRruUhJLljQqdwWDZzHXxppPTwWCcZzDmfFlLPpdDSsgGtFfTEeTOotyYMOGgkJjKZUuQdNnDhHvVntKkTNqTjJeEVkZzttTYyTDdIiRrqQyYYyxbBXLlKHhvtYyzoKMmiIkaAUvVuvEejoOJUuQoOLlLloOxoOXaAqYYXxyzMmZyoOVhHIiIKfFkiIKAaUukRrKQqASsakLgGlGgLxXhHmcCzZxXMWdUulLJjDwnNYkKFfZzpPVuUvHhbQqIiLRrlEeVvBQJjlLGgjYyJoAalxXuUqgGQLQqOqNJjzZnyOusSUeEFfodcLuUlCcCIiNnGgaADVwWGgvZtTewWENnSszBKkDdeEYytTzpPsSjJpPZkNnIiPpDIideEcCKCcNABbKnpPGgtTNqQGgklLtTuUgGQqaNnnVveEgjJJEejGkKziIAaZmMbopPOgDdGubBIiUZGgzuUoOkMYymvBbVPpmMqQKDdCiDdIcpDjHhIiqQJLlFCcfqxXwWQdsSKkPgdqQDGjcFfCCceEsSkKjJkKKlcuUCsaUuASLAaEekmYqyXxkKYBbeEQuUZzpPeEdeEDKkNnuUQsSTtqufFUNIGginpAXZiJjJjhOWwkKBbogGHsSRNnqQrIzZxXhEeHKlLtTrpPsbBSbBDdlkSsKZXxnwTtWCrRcNfMmPpFzNbBneFfVYyvuUBjJbEzKkZuUkCcKTPptehHfJjEeBbuUioOIIiqQFDdFfvLUVDZaAkKHhEeAaHRrOohVxXHhvNnzQqdoOaAOxsSXogiEeIGvhWwHROoruVtTvaAUDdPpuImMVePCcpEUuFfptFMmfTVvhaAHUuoQwWlLqmMKkONnhNnIisSgGHPwWQVvroDOodgGORqvGgZRrEeMeEkKBbRyYrrzZREepPCcmJSstTNntTjvOoyyxXYzZIiYVUuUunzZBbNWvVPwnNWeVvLnNlpxvVXjJPDdZOozItTiYzRrKkZngGNiIyXiIxYyCcSsEOmMUeEqQAaINCcxXniuOeAamMmMmMRFfoOHhaArMmpPRGgrVVvvIiUudwPpWDuVvspPSbBUzrJmMjjJnNRAamVvfFMaCTTVYyvXxGRrgttkJjYmkKPpMyTtkKHoOhJnNjifFIKTmMuLFftTlwWUtAyYajJyZzmMhHhrRsSHGtTiIgBmEeXxMnNpKkSsDdbBpPPZJjHRrhKQquUkzvQdDVaAWwveEqAaVSAasBbFftQqCcTuuUOVvoUccAaIiCnNCHhXxpPWfybBYOoFwarPptTRRrArRrRusScOoCUMqpPLlfFMmjJHhDdpDOpPoAabBwWdQqfFPDdeCHSHRrhlLszqQZhVvnNodDQqOPVvpcAnNLlfFSoOsiIOoSsJvOoNnVJjxXjkKuEsSEeWbBnNEewpPbBANnakKkKHhMNnrXxjJREyYemoOqQeTbgGBtIWwiIFfHhiCcEKkeHZzhhHRshzkAajlLJKZVvEeCgGdDhHSPpEQqOoescCuUcPYypJaQqFfGgPpAPpeEjZzXxbBNqQfFRPTIRraAFJjsSfibBZztJjrRprlLiIycCBbYKknrvVHNmMneEhSshHGgSbnNgGBqQDwWdUutxXxFfXGNngaYyGgHSshfFrRjAaJAVTKktzMuviJjIVUmbTtgGBzZmMFfwlwWtHhTLfFWYycXxCrEeNsHhSrECceRTJjtyYRrGgrRZsSiIzpjJgGPeEhHWNnwSsZmOoRrMzxSsQqaAzZKtTkWsSyuvVbBVvUYChHOCcoeEciIwZzWlqQLnNpnNmMPwIiTbNnBLaAlJPpSaAsjGTtyYMZzfFmiaOBboAOAalLEejIikKqQSsXxAaJJpzZwBbBbnEearRAmMNDSsdyxqJjlLQHhpSsPEqQeAauUJKkmkKLlMjvVoOPpPpCBbGgoORrtTXuUxfaIwWiAsIKkpPifFSQqZpPAXxazEpKkPtTqQeaAnLdKOokLlDlpNngGcCmhHMrRiIqWwqQVabBARrcCUuviIvpPbBwnNWHONnIioGgOoIiVvAuUaoMrZzRugGUmMmxXMmaANLAalnOhbZBbzMmZzmMuWwnNUJjdDBqQHjJqQaAbBhNdDnzZZztThHeTtDUTtQquaAkCcGgKkjdDJKZzbcCBwWjBacCAYygGiILtTfdDEeLlFkKiQqItkKDAaKkaloOLARraApFfzZtTYkKcJjdDGgDdfFCPpQzZqvVcCgGfTtJjbBCLlAgGacYyFFfyqQYyPVvvCcrRQqVwWkEeFfpPKBcEeCnBbAarRNnNnCcTtNbYyhHGgPOGZzgopHMmNnIdDihyYHhEeLplLPieENnfFXxAavVIJjJLlAavVJjBHqQmMhbiImMbBEejrRQBbjJKkwiIWqKnpYyPVvNbCcZzBrGgRPpiISszZAazZBbzGgZUuyYbBKkoQXxIiTtOolLfFNnUuqjKRLlbBrNnMmkyOoyYWgOozZlLBbYyOojJDaAkKmMtOoXxqQAaTncCBCcaAevVEeMIQqiQqXxsSmEDdWIiwWIiqYyQwhHXJjxxMmXNwWFfnxRrXXtoOTxzZpPrmMsSRpPbefFEkBbKtTMmYyXgGVvWOowRWwreExUuyYFpPfztTGgNoOFfMmnXoEeOBbxRrUuZzxZCczrdDRxMmZzWOowTtJjanfkZzwWoOfFKuoOUFUuHhFfKLlkyHOovVrvVRHhRrSsJTAPiIpjJoSsOQnNqaQxXLlfnNhHnNlLFiIsSqtVvltcPOozSsjJHhLbBlZrLifFIhBbkKHldDsvVcCSMmtTlLBbumMOovVUWyYcCNnRQqrKkwRpmMBUuASsoOqQabAayuUFfEeVvUuTtJjxXmcYyFfCEeUuPzdDZDdpOWwZyVvQqYfWwNnFzWVvwaAARrkKaoiIcCsWFfbQqBGgnNZzyYcjGgJCrkKFfRZFfzZHhzvVUbBumEkaAlLKsEeVvSIiezZhHisSsSeLlEIxXcLlCMFQqfGgmsLlaAMmaACctTAaYySENoODdEeutHhTKFfTtkkgVvWfiIDdLllSSssLbIhHmMeEgRrGiiIufCZzcFUBFMmdDHhqpOoNnWWwKYySseEKkxZKkzXiIdGgzZMmDhyYHsMmIiCcnbHSXxsTTtthRjJhXxJXxjBbUuPQqUTtupLNnVvtTlHjJqQrBJhHHbBkKhyuUYKknNoOcvVTtyYeESsCqQQKkqQqQRrqHmMZfFnNXVvCcXxgGxzmaAMjJvVTtTtRzZjJrPVpPkaAzZnCtTLlTMmtuUAazXJtgGTjRrSsrRqQqWJnQuUjfGHbBRQqhrRHrtTdyAaKkOoSsYQarRxVqkKngQqGpPHfYyPoOvJvVjVrRpMmFcCkwWaAYfQqtDdNMbBmVvqQpSMdDmgGsPEeyHgBbPZDdGgrPsSsGgrRCcSequTtUQoOKkSsfFflPpLFILliWwEkKcCxnNXYeErRyZztTpHhSBbsmMgXxGRrmMReNnEHheGWwgvVgGEzhHRrlHhhRrhHqQHLwtYwQqWbBjJeQqRZzrEfMmKoOXXxxkYObBoqaAQRrCcLlyhNnEOoebNnKrRTaAtuUkbBbBNuAaoOUnbDdGgZzYyKkbBuCXrRxcAaPfFpGFNZznkBboOsSggGiItXxEeTgGGKsSfrRvbcqQCBVbBqWvVbBIiAaRryYTOotHhwMmSqQjaJVJjvcaACrTjJcCSsQqDUTtucCdtIiHhQVxXdDvVkKvLlqPgYdmMDKrRjrRTKktQqOoAawBbDivVIdWnqFBbfZoOzQOoDRrdYLlhHxNhHnGghsSHVUuvsvuUuoOlEefNnFfWwCclLYyYyZzRroOTtFNnhkKiIHKkqMmwWYyMmPGTpIiwWzZTtpPhnNHmToOTttfFYKkPplPpOoLVUBbuRrVfFFJjffSTtsVvJjFcCgCUueEcoQqyYNnqIeEiTtQpCcWtTpPYyycaACYSyYsJiGgrRIGGgDNGgxyuUYXXxhvVHqQnDDsSukKiIEeUeJjmMGgLlGgtTKwWkxXxEeXEHNTtnhSXDbLlBddLlDzZNyYKYDRrXxGgzZdVvSgaAGsWwlbBIWwzZiiIXxLYyuUllLlXxSsvVLVvQqIgOoGeehzwWdDyiICpPIgGNnanNJjWDdwOoiIAicCxXWYEDbBavuUQQqUbBuuiIUHhWzZZzmMwKkqiiIIhYTtyvwPpTtKksSmMnGgDdNRrHhKhxXOXxpIiPzTteEZVWwvRaArCSIixXFfTtQqsclLmMPpCmxmMBbXMQYfYyPCczpPZqvFlLlyHhYHhjlLlLJOkKdsSDXxovMCcmmCcMqQLlVHLlFfhwWADdREerBbpVmlLMJjIiqQvPbeEBqQJjNnvdDVxZzXYVOFTiImkJjKNnDdMkKqQFfUueWwEhHSsxXKkmnVoOrWAawRvglLPpZCcpPYASstTGyLlSsYCcqQeEgIiVvauZzUnZcCzKkNFfTtWstTSWwzZlrRLMmEwWBRrPpbsSCgcWwJcCIAaijCRrmMdBLlrffFFBbdaAkpPKDRPpBwWbuUGgMmpsSPCcQKvVyYwCcSsuIiLlUHHhDTtlLvVkKIidYyhiIXxxXuLlUzwWiITteEmMiINFfnNnZNDnNcGgdDCveEVdjJnYyBbVvhHyYrRwAKkaChHIiMmcCcICcuKkUjNnJyZzYyYoOrRrRWwefFaAHhPpNvfdeEgGdDbFfBbmMJEejAwWaDnNvVdpPRrMrmIBvVbSsiaJjqmCcMQudDfxXPpIihrRkYylLRruRrUaAKoOyYbvVHuuxXUUxGgXSAPpNnKicCXWuUYyweEuaAUlLOgaAGXxtOoTgBbGCczIiZUuXKkXClLeErUVaAvwWlLXcCxnoQPpqFfOecCjJLlEoOzDdZSzZiuUFUuIifbBiISSlLsQoOqEeBqQbrRxXaAIiOojjJJVzqSsrRwWBqQYybQUCeFfclLCspPSEPGgYyfFpGgnNNtTnQqeKkUuMxXvVmRrhQDdCZzcCCUuccoOeEJjxXMmqHDtnNAvVEezfFAaZUuLlDdcIiZzZzCrTtdDRVdDvLsSlTmMGnNfFeEvVqyfaAFQqBbehHELyjFfJGgNyYTtxSsXkKOoSsJjKkQEebsSGQqNnFfYygmMUbBKggOohHWhHXzburReEUyYRroOnNpPBtfRZzrMEemWwFTklLZzZOozSseESYysszZSqHhQRrnNKpPfFDqBCxXcmMgGbQdsSAadDEAoOoOGeObBoLlEgaUDdVvOooOrUaAOouXhHRrdDUHhudDLlPpsVvSxRrUrNBbTtTwWtCyYcqQrRJTtJjWwXxFfHhseEzEemEkKxXtTerRiIHhamaAbcCTtBteETzZINXxniiRrIMYaAyxKkWwzbcCwuUWBMfRruUFVvvVXxmBbCcpfFOoPQcMmMmBbLljJwWVcCSsPpsSvCMoODdYDeEdyPqQplLlFfxXLmJSsVnNvTtIiUuOoFRHRrhwAXxukCcwWfFQuUcgpPGCqWTkYyjWwJKmMAZvVzaBbaQqACmMcnIiNweEWSoOstTBvcCVouqQUkKdzZNqQnHDwnNNnhHuVvJoOcCskKSPpXWVvxyYXwCBPpIibcesSExqbBqmFRxXrhZYCckUAaaXUrlnNLJxXUUvUMmPiQqZkZztTJWwyMmKkSMSaJjNnpPAQfWTtKKkoOBWwbhDDddQAaqHWwBbhrYyRNnAaNRIireEoObBWUuwnoOBbPlLpwyRrYDdTthHNrRnUTEetWwSbBnMmNgHhGsKkdDErRHbBoraAROpvVVvPGEegrRrdDNRrNndLywWYpTtKkPpTILliAatPlDLvVlFsSfKYTcCIxXVvnfFRrWwWwmmMMmMbRrBVvDdRrsSeiIEUpGtVvTCXxcbPpBjbBJBAVvaDqPpcgGCQOoPjJXxpftNXxVvRAaeEKkpPMHhdDbBiImkKKcCsFVvfvVkKSDdQqAafFAaZxXwWNnzlLnMbBmmMqAaQwTKnkMdDdlLzZDCcmuIcCGgzZiWwGRCcrgUiILUAWwaeEXxFfCciXeEfbBlqaAEBbVQqIYyifZzsSFItTDdanEeNsSlLldDoOeEHhMqSsQaAsmRrMjCcJXRrxScCkKJjfvFbBfVvVlXlgGLbBiQiEyzZYyYehtrRTHiIGpOaAokKkGgKTtVvCtUuTfFcCcuUEmMixXITsSwWgExXYBbBvVbaAfJjLdDSsKkDdAaVRrvpPBbZzjJQqSAaNnsyHhsdDzZlLSYbBdxXetTEgGSsYymlauUeYyEfFaNnAALiIXlJjLxjwWPCcoEecCOJjhpwWPbWKFfIizTeEMmlLteEtTRrCcGgrWCcYgGTHhtydNgAaGnDwTiItYWwUhHwLFKksSflWnXxNaABLTtAaMmlPaAheEHpnNOAaSRrCGDdxKkXlKknNIDdiqQqQoOuTJjtUTtXxUUumMtNnTYmMoWWGgwCcYUumMmMPpvnXxnJjjJNNDdXiBbIxVwWTtFfWwLIiSslqLQqNnXxwfFWyYGgDdQevVARryVoKWCcNnwkGgOMmvVwOocCXkKEehHtBhHbICsSciYytTZaAUGgbBuZbBzzsSTDdPpJXxlLNnzZwygpzZwWtTsAaQqvUpiIiIiIPRrgFMmJjWESseEbBewTtfWwrjJYVSanNhHAfFsVvzZbFfzZBhFKgGKoOkcBEeWwoeEObCpnNPpPlEOCczMmGgZoewNnJjUPkKpkPpRrZzAQqaumMqrXtOoTcCNoFfOnNTtnAaPUuEeesSEwWVvpAaeENhbBHnJjNnZvaAAaVQqQqPpgbBGlukAiIaRFpPfrxXaMsBcCaAbBIiPpbOojUutTbhHXcCrZzoOZzRJjmgGMeGgeNnyYmyYdwWDMVklLKrRvVvjJrtTuUWbBUcCuDdlLyoOYyYmMjRrsVcCPpjniSsOoCcgXCcfNnwWFFVvfnWzZkLlgGwWKdDSsGEhHWsAaSZEUXxLlyYMmdDMmrRupPeAaCcWwzwDQqiIqQfVvQHhwWbTobBsSZXUuXxbsSyFtTjGgSkBbnNKGgtWyYEwWevAaEeVMmDdQqOUuiIbBhHqvVQHAgJjGaAjJbBonHwYyUpPnNuJgGjSsTmImMZuFfmPpsSTccCCiIpfiIFPHhTtPpKkUTlwWLtnNSsdRrXxKkAMqQoOrZYywWzOoqQNFfYyjJnNjJZYyvEeVzfjJZzVVvFdDYQqysSfNwkKWrRdTiAWwahHqcCQRrrbTtJNXxnZmmMJjJjgwFmRrRrAaquUKkXTUuDdbtTBkKmMqQlLEeSsGtlTtoOHhSdDKMmsLlPpgjJGvVSoOPpGggGwWhJaASszZaAPpUqeEVacCAfQqiqpPSstEDdxkKaAxXXenleGguflLRDdrqQwWDdVdeEjRrqHhQuAaOoUgBzZAFfajyJjJXxvVvKrNnplGgpPXiIHhxBlHhHtThLNnnNzZbLCYycSdDsCceuzEIielLCcZiUuEqQtTqQiIIioODXxxXdUlLUiIPZhXFfqQzTtZaomMeEvVDBboOdOxXaAWzsRkyYgSqatTAQsOoGCQqcEedDKMNtXxmuUMgdDGpPTgGWwuUmMncCmslCaUuAcLSrMSwAakZzpzZMmeXQlLwLlWAaBqQNnhoOrCcxXLlRMRrKOorQiwWIlOAaoBBbsSTtbqnMmYcChHUYlRkKqQHkaxpPriIoOPpXvhiYyRrqQqQIHUxXjMmmMrRxcnNeAXUpNnPIipoQqOZWweEXQqDvVSsdtOZzogaAaAUqjAaJhFFYykeEKXWwxQJjfFWzGgugGTJXGgKkgpPGSWwSsPiFpMmPvVfIwHhWpelXxLdDqQwWxXiIVrqyYLOfYyFtOoWHhwDJjGgqkZzKPpsyIQqHXxhNniQUuqcCzZzyaJjvVqgGnDVvnGgKkEevVIxXNniVvTndDQhHpPqmpPMqdpdDWwRrPeEiEeOBboZzZZiIVvzzzZhHIDAaMmXxNnQNRrhHtiLsSCDMjJqQmfFPplIiRreEMPKkpNnzZGgPRrQqpBbDdWtHdDqQhzSLlsZMffSsFFmukKbsSQRrqadDXUuxAXYiIyWwpuUgGHpGgAaPHhXxKklLhfFKzZIikPLlxXjJHhtjJTHhNnNnxMfexkKqQsStpEehJjhvVIRrTtkKNvqQVfFAKdvkCuUKkcOJmTtUqQlLtRKkrXjJoOxLKaAhHTttTkYgsSGyBbXxQqpjdjxFfYyXJDFfVvadkSuUmqSshHQqAaBbAaUxXuXxtNnEeaoOyXxYbBkCcgGFNnPhnNHTnNYyoOxXFBuOowWUbCaAthxfFXjJhHHCcYdQvVOkCLlLlcoOEpPGgLleqfwWFQTTtNRluULrntNdyYJDdyYDdaYpPjrvMoOpIitTPaAqQssaUuLlAkKCcSRHcefCSsOoevVrREvVcdwWwWabBADkKgdTIgGiteTtWtbBTwCeEJkIQkKlLMIlLiGgpTiInaAvOkLDvAaFAdDaXzZxwWuUOnzZlLEcCemzZwVvyEePpYWuUbIitOoeETyNndDYOoyiIYmMIoOeFfEVviWyYwUutQqQzQYyYypuQqkKrRLlDrZKkXOLsSeMmrRFfipPJjnfFLfFSLqQCcwMmKkWuUmSarRAsruXpSsPJMmDdPTtpTtpcCcZzCmMVbBlLXxAamMmjuABbauUddfFmMWUiIfEhHEeseETjpPOoHJZruAaUtLrRlgMmodLlyYOoVvuUDdnNSkuUgGwIKKkYyjsPpmJKJjCcFHhfUYyFfeyfRrJmMjFTthqvBfFdocCnFfRcCgGYyBbrRrEqaAsUulLSKMRrOokKRrKkKlLJWIjJiwdDWwcCGgIixGJrRRrAGgaqOogghHGrRKIcEegdJjDGVKWwfFkxQqmeEMCcXIivmMtYyTGuWtTlRyJjYrXxRrZtTFfzLKHhCAacgGuRrAajbpPBTBbtQqrTtOoeEJjXLmMyYeElbBZzlMwIAaOoUuKkiXGghHxWUiVuvVUvvVrwVaEeOghHGEeHhoAwBIUpAagUuuUGfFqQRNnjJhPeEjKkGDdgIZzKpLlaoOKgGALlaFfLDCcLeECOUubBotgGiINnTjJcEBbelIiTlLeEXmAaMxuUtMzZmYyuRrpPOojJcPxIiXEeaAYKkyEeeEBjJwWExfFXejtTJNVqQoOtTfFvRSsrQEjCDdgGcSsgGJXUuxhHlqQthxXkuytTYUKVsIiwWSNPpnBbZHhzFQqflzZMmGgkcOcCGYyEeWwhHDdgANVvNnBbVLeEmMiFpPfLlKksIMRrmUIiKQqkIiZzuTXeExQqSrFqQPpFbByYTuUlMmThHrEFLZzlZnNzfIsdYhJjHWcCRxXEeSueXpPjyYmMnrRNxXrZzmMPpIiiInNRIhHDpPQqdVxXutTUJLYOodrRDxXmlLEgGeMyDVvdikGgbBRriRrdOouvVdXxRvIlLPpwKsSMmHlLhfvVJmMOiRxXjJaAjJrxAaYyEezZDznSssSQqjlsSWwCMAamiIcqKzEzZZzeBbTESsTnqfFprRPZnNGuUmSfFIkQPqQHhjJpqqQQRfyoLLllnPkcKkSXxTtsxXCgPPsSppNnPdAeQqBbvVcZDdOiMmyqJBiIQTklLKPpsbBGgMntTLlNfFTtWwtPsSppzZSjJsnNTAZOxHRrkKvHUutIsEeJjSiBETCctyvVrUrRRAUuXxarNnuIQqYJjwVsSIiZzdTsnmCcQNnTAHhatHhnkKcYDdyCKbByYkGgYywWuuUQLlqxmIZziJJjLAlgGLacXxYyCKwfFxXxXWCchHkKkpPdDgaALlOqUuFfLlcSsqUuPTtEeMWwMnNmJjNnvKkAaiIKhtjJIaAFfrjJQqrRtTRxvVxXWuUPIiTtpAwWeEaKkwlgGLuUIuUjMgGlwWtTFCdDcxXIbdFCcIwEeWjJiCxXTNzZvVdbvVbBBkKCWwFgGfcRAarmuUNRrGgfVbmEeMHhyLlsOefFEQDaAxXXZmMztKqQlLktTYyLlnNrlLVvRTuUPiIHhXuUagGulVvoVeZztbBUuAKTzZtjJkgZxqQXOqQoFrRzaAGgBbPpVsScCMDdpPGgmEeGIWKkrRnNXxwVoOvPpCcbBZziaAEFfEuUeERreYqeEYgyYQBbqGKknNLzOopPCtcCRrAulLhTtuqQnNtTaAFkWdDMmEepPdDJjssfXtTzwaAZiIzYnlLZzvHhbBUpOEXxeyYyYvVIiwWITgjLlJNnXxfFdEeKbBUuZztTRAafFrkPtfFcCTtTdDhHNEzxXZeeurDdRMzZQqmrvVLlRvKkQaApPlLWwLDdEeOoEZtKkTWYSsFfypPbBqnNmnnNNUuMeEGaAgKEekFfEBbGZzvVmMEegKPpkYyzJjRsAaSoqFcCjFxyAajJYRrCYyXIicCXxvqQVEJKqQBbkYpPyjeEhrrRYEeJwpPWlVvLwWRrAzTKzQqxjJPNsSMmYybqQiUXuUhHFyYfbBKCcksSiIxucCvzYGVvjSPpnzYuuUAaUWwYyuEeUFfzFcqSsjYyBbgmqQMWwkKeEdDsyCgCcGWwRrZzIgGiLrVvtYyDXgNfGgPpnNbBDIiqjJQdzZgMJaMJsSGgjVviINuPIZzJCcooOlLqnNQTtOXxrRyTgGkKABbRrUukKrRsdDSGdPEsSepDoceAaEgwWWwhfVvoSsOeEtZiIMkKpPYqQVDoOdvEetTyMmnNjJwVPbytXxjJTyYFTXxtzKzZkbBhIZOnEeYyywWEeYeESUusudDpQqNiInPAlDdkJlOBbaAqQMFfbZzGgTtBieZpPQqEeoQMMhAakSsKHAakKWUuGoOGgKkgoEehHeEQqlLOVvWwPkHNEBOVLpPAamRTtDdrSswWMWwEeqQxRrXeEPLgLQeZyYzERlHhPqmMQOtIvVwaNncJjuUnNzZOqQWRrQqsgGRrSOmCSEOKSHhseHcHhKkCzLXpRrPrIKHhtmQKHnNVxXOMlFdDkcCKTtQVHhyjJUVZNFflLngGgGuUpPkKkrMXxXnerREhbHhpGFyudwvzaAZKkBbALDYpPSHhsjXwqOodDwfFWQWrtWoMmOwKyYiVqQvPpPubHfFUuYcKYyiIqOSsPpovQQSsoEAwWUuvekKueEAAaUuKXxNEeWgGwcbBCKXxhHQAaFQqWmgrUAJjlNAtTanIZbBDdiIzZggTDdnNJjtCtTIpzQqgMFfCcaAmcChiFfUuHhMYBbymMnuMmUqrRFROEeoEeJjhZzahHJjlFYygGAPtmmMnNdDRrZEzOoZaAaFYpHhPzZyAavbBzZPtrFKtJyYjnYyXWwxZzNdDTNOohHFfquzDdZhkKHUCchsSJYQMmDJjuMmCZzbBcoiwWIiIHJjtTtFfSsHxXhTVvIiaUuhAadyOOeEoWDdeXxoOpSsPEZzCcsSipmSLyKksuUSJTonNOXxGVpPczEebQqkKoKOoXdDxKOnaAECcAxXAGgsWwSaZUwWxcCXuKkwehHXxUuUadDAFHORrohfuaMmASsEjcKTDdDdKNgGksYylLsmMnqeXxPxXceEPpCIlLANqQyYEensSTZiImMzSVJBhHBBbBbKktTJIJMmYyGgSsayJYJxkqdDFfQKPpMmWwXjSprRkKDdnIcCbgGBikgUucCGnSCcsfFJLEDKlAagaJjAjrqQRJZzTGlTtjJfFrHWwhRfqRwXxAaPpWcMmZuULZhHzpPmureEjSsJSJjnNnNcoOCOnNdDEeJjBEHwWcCEzwEkhHAPpnNjPpAYykxVlLlLvWwXXPpxGgmMxXOoFfyYPpPpzgGiBuUYgjYyJVvVvtSMYhAJcgGZXemdRCgmXxMFdDpPzZIvQqBYybVxIiXtVPvHxXBGCcuUgbbeERbBPriIWwRYyMEepPmJAawkKaRyoIiOfZGncCrIifqQKkJOojfHbBlLhFyVvPaGgwyYBFXxpPnNuUNnhSsbBlLpPEMmFffFeHPmdDNnMpwWfjpPLyNnqcuWXzOoZtTzZxjJLlUuXxGgQqVEeFBJjoxfFXeLlMmHCcLGbBqvswbnaZoOzCcVvCGXABBbziITmMUutwWKjJfUuuUMwWaAlLiNsSnAaCcEhHmMHhJOoKkjeIrIEUuyFbiaAIWUuwDeEFrRTtFfLoFTtDSsjUuWwWuUcykKTdvBbFyYfVuBSsbUaAdbBDrYBWwbyVNnGNneEgYONnrRIdmVbOxhWhBbuUoOaBAsbhbBvFfVzLlhOLloZzuMmomtTMiSsiZuUoOBkKbPJYyjISsSshHgxXkaAAaKBDdfbBFfFKfuUsYyiqQXxItEeBFdDhHnNyEevHHFPpvVZzLDdlDHhkKnNqgXwWbBZzPJLlKkMJjjJWDdmMWwwKkFDdjSsoEeRzZeBZzNuHhdOoDJdDDWwqIfFiSsXxKxWmMwXqQjJNpjXRMmsnaArJjCcsSpPlLCclXxdpmMmMbBwPpMbBteCcDTeljbfiIGKkbtcVvCTrRfFrnNmrRHTtXxLVFnTtCcCUTKVcCpPVvwWvxXoXxOvaUAagCcTtQzZFcRrAaAxpPxXhHkKJSsugGlgGLbgVvVKkYRrJjlCQqaHKkeEhHIyixUuMmkKqnNczOgyYexbcCBIibBRWkBbKoXDFPcSseaAKkfbBEeAEeHhqQylLCcHhPpEJxXRrSHhUZzzYyTtnNZzEBxmtTtdtTIiDgoORgGuBbDgeksSzbBPsSPWMmITtFfiKkmjUujJlLJMEcsnNNnIwWJYyxWPpSCcsGgCgMbWrRwRrOdDwWHcChGgoIiBDxFfzFAafnuUzmMjJmMgGInNievVEKMmIGgiuwWUhcAaOeGnCcLUulaAXMmxCctKXxkXRrUowVrYyRlLzlpPyYZUojMYyqhkKHzeMmEMdDmrRAJjDdRYlKkPpaREehHxHhtTLjJIilcJjoZzOEIWwrRDdimoOMsSRJCwWMmMmmIiMmMNNnnSNgGThHtnnNmWwvNMOWOdDonjcCcROoOoFPxUPpHhsSuXSvVsMmVvtTJZWGJjDHIkJZzzZoOTNnaCghyYxgZfnNJDdKUNnBPbBplwNeXxbFfcYPRjJrtTpLXxebBEhNnhHzFUEeriXxZZAogGVvzhbBHIECcBbVvZzDMmKgcCDcCdLxDdcCXlwQqjJWVaknNmMdDLJjlIHhLnsSaAJjrrSpbBPwIMZzYeuUUuBHhbwGQqHhZvfFVvVgGsCUuuHhweNRrqipDIidWbBwDddDZYhHlxKfQwUugVLMDdxXfFPpmhiVeWwrlJLlYyvzPpzVfFvZOogmYXpaAPruUAfoPOomFfRXxjtqnfFNOSsoXBXxLlNnaANnbylLxZkRXvgGZziIZyYpmMPxXaAuOoTtVgaAEeGPGgLlzzGgHhSnNsYxtpPTpvxXkHUuoOVjuUJvMmLlbraglLfFqEezWZzuUfFwkhJjBbhgWwewZzWECWREdDmOoJjwWJjxaAXkTQLlqOofCqQetTOgWxXwvVGtAaesSETyFfYxXoxtkKwxXWCcTdKiIkYyDlFEefFyYMPaPpPCcklLXkKnNoOlAdJOSUuYyrRrThHBbqLMxbBhfFOoHCUucmMeXxdDjnuJcCgiInNrfFvVQsSpPAaAmbBMdadRidDYyRrfZzdbBDLlSopPJjXyRiIMCIMojJXxIxeGtiyYKkioldDdDFTbutTUSsKlLmMXxksSLlrJIaKkOoSNnoOUbucyAjeCcXCctTanNnNAWDjJDNndGgVFsCuUcSwWfBpJjxXBbWYyzZvyhUuHYvhHuUftTFCDRSXyYxseEMmnNZQqOYymXxEeyYbRzaIywWxXSsgsSGtaLlNrRDzwWZdAanZzqQpMmJrqPFElTUutJjwzZlwSaAmzZZrRzoSbBsOCpmMPccnNuUOocMYMnNOTtcLlCPpwWyqQeNGgnMmEEPAaKkZRhHrsSjYyJgiIUtLGgTpgTSQGgqZlowWOLzvzkcCrDjIXxkdDKaAEeElIiCTtcIGMmbBVvIjJJeSkuoBPpzZbphHTxXtoGqScBbElLheXxrREeromMORGgyALXxqjkKJnNSDdNnKlLLlkotgLEelPpmSsMqmDdTtVeEvWLFfloOJiIiTtzWwJkiIKrRrRrlLQqOUxsSXxoOlLoOTvbBVBUulLPLlAxIiqQFzZPpDmMdVvoqdDqQNjJnQwlLFfTtWkIZziKfFhgYueEUjJuZlOrRrHhoOxlLOoXpPRooqxXrRQSsOvzZjhHdyYDWwJTYytwWuUXxMbBmAiInNFQqQKtXxRKUuBkgTtGKxoOcCEsctTCPwWpHhbBfiXDpPIiTtdyYFfwWxdnpPqFTPFfpGQZzJetTPUuplLTtwlLtKkaxMiIfMmOoPrLlfFVJFfPCcloOLSsrRejBbSjJsJUuEHLluvVrHAAadiIgIiaAGqTtxDJfoTBbtCcVvbnmMNPpBSsaeUSLhHjSsEvlLVvVjAaLzZYywUDdWNnwcCKkSyYKuULUDdnsRrSrRNuoTtdDSsprRtTTuUPxNCcBbzZrXVMmQqbBkJjMMmmKCTcmwWpPQhHetTjJUucCUHoPpRLlhHrkIWwWRrhbBftzZTmMFPGgnNuVvrFfxXRciqESsYkKyYymPpMeZzucbBSgGwWvVeLlBbzFfhbiILPpxrRrRQqVdGgjJGxXGgmMLlnNJjqnTtNYyvQrxXRZzOVusGCcPmMpgSDdkuoOxcBbChvrSsYfHcChDdFPUzZnNiWeqQvVkcCKEwzZIbIeELlqWDdPtgGjMmPpFfVLlvZzGFfMOmJjIiykcCFfdRrdDDEOTtoDeWwHhdFfDpsSPzZlawWAVvjNEeyHsSRzzJRUurjPpFiWwnfFsoeETbYbBRiIrOoIiOEqQKSwJhHhHEwWncCPpntMmQKkqmccCwvcCcRBcCzNyMmvOoVvjJLYyloOVNnMjGgyAVpPxXqQgrvVxsCbdDBcGQIipPNDdspQNnqPaARrpnsScCTrRXZKsVbBeDkKdZQtTqhpGvVLDidDEnNeydTVcfLlFImWYQZhhawojJjJQORrousSVwfFPenAaAaPpkgGUuKMmAaNpceEVGKkXxXePjTUgLnNlGGgLNnqpNimMvVOtkAlLayYkUuKrRxTBbAatBkKdDknNKkMmnUgOBbooOMmMeEpjvLlSsIqxLlJjZzUKkTtYyAawuUNEJuUjfLkINVuCArRQqkKJZKTRDhkpPIiBtTCvVHAahcLJjaxBbeEBFYSQqxHhdCUlLAmiaAjLlaAJgLlimMITtFfjZYzuDdoPlLIwWaAIipqsxXBAaVvbjJuUGgFXYyadsBbSYXeIYyeEvVijYAQIiOozZcgGBbcvkBLluURVvAdfzWhHwPbRrvVjKkBdrRDguHkKoOAZVPUDdIYrTLlQPpqsSNZcSsdAWziFfLlqQwWmaAMmMQBZzbUpMVvmoiIsyNeGgkKeEFvVrRMVBhHCcMcljMQkPbLzZwJASMmHpPtTHcBbYPpgGsxXZzUuZlkBbKjJgYyDPpSXxghHCuUGpPggfyYOoLnBVvzTIrGchotThHJRlFBvgghHGXxzPLlpHeLgiIiIVgNnGnYWwySDdpSsMglLzZGkavMPDdBbGUrKkaARuqjJQJwWjbBgPpqQQuoaAOnAduDqHhQdUtOoGsSYynEpLlQqbBMmgyrUDMmnKpPkNdTtLacDgGAaxZqQNnOoAKdFfFHTVBafFAbptTFfOoRLihKkccLEiPLAZFCcYfFyImQLlqZcEVveHMDddnMTwWsKwxRnNYWwyugQqGwWPpIKbBPpkjRrSOoExVvJjNPBodDUukKTwhfFpNnWXxIilyHhzxBGOoYPpDdDayXxzRrZkbaPAhqQzZHfgkkKQBrhJjroHfSsCcNiIcCFjUwWPpsSjJVGMhaALVvlHEeyYuUNnLwWDEeIPfFpvVAPpagGJIihGgaCcFfAzZIZDeNnEdzMmUkyVvWcCGwQEYygKkGNukwWymMYcWqQSrRWEIEeYyEJjMmRreZctbAavVECphHXUuxYtoOTHDdhIiWcCrMmRwvVDdAirRCTVsUuSDvVJwWjMmdkKFfwWuoOYduBdaLVyYbfoLyYlEPpFjCmOoMlLMwWmyJjmMVOafFDIBbLoDdbBLlIiUwWuLxvVXlnNkDzZnNcZhHrRMmzllzNnqTeEmvpPCcWBklLDdrqQoUXxZmMxDfeicCUNqmVvGDoOevBUWwusVyRhGgOocCLQDdqhzgNuUwWaAyqFFLLzZZfbBNnFzISjyYQqWwWwhiIHIiJOoYyskQDpPtTBAaMbRbYyBuUrBSZzJYbqCtpAaPTcAqQawDdZcyOxXzHhzZSssbBdPdRUuBeEbrsRarzkLBQqIYoOpPNnbhfFHcGvVgSsShHYynYyKkiIwWHhNGNPtBkKWbyzlIZzoVvwWiIVvbBRrOPVvNnwWpurIyHYHhPpyfHCMmIiJrrRRjNnSstmRXOoOoSBlJjlrIivNrRngPpGNEVvSLpUvVhHXxfFnNPpzpPZtNAoOYyIOoJjQpJjPiIhcCmMXDdYyYgFkZEIidoOdDmNnJlXiIhnDdQqtWjAIiIbBIiiIgGWLlGoOKruFfUTtTtutTUdQqXOAaMQqmEeGsTKkaArTZoWwOsPwWpVvJjFiumhHAaNSsbBzZblLIfFVviBUMmYskCsSMeEbsGgGYyQqgSgGrsSSmMshKkHRKkVvvzwBwjcCJEPqNvsSCRwuCcUHhcSsOMGPJNCcnMmjHhNnRrtTiQqnNZqtmzZMiNNNnnoHCcuZzgogxXgNnGGgBbUuGPpYpHhnNPsDhCcTNqcCKGhPqQSjkgxFfXwUlCcDdozZCXasRuUQGArgOxXGTtznNZxXgoGRFqQmMKkxjJAwMcTtCUkyYKQPpSspUnNAazZLlnNyWwYKkueMBoOmxUuiISsdDbBDVMwWmnRroiqQBIzjCZDdSsVviNIsQqMmHcRrMzpHhCcPdbDXsuFTPjPpqYuUkKsSfFtTUuuicCiIIULAaiFVBsSmQqDkBHhbUdIiBjyWwDtJjcMwWzbBZhgGrvVMJjJfnNenNulLByaAYcZzgGpkXeZziSQqEnsSGgnNNCgYyPqQvWwOoVcCTiuUrROZEkJjGvVkDdzZbaUWnLppPKyYTtkPRrgYYLfiJZNnzYTbroXKbFwWfXGgUnNJpmMPvoOmMbZzbBkNyvmMVtkKTxXEyOBrEeRbMsSmIiMmdDpgFfGPDbBdmMWwpPPVBzZbKfdlLQqrRlHnoXEeVvaAxXJjxPvOtTwWiWxNrRnXYGgyYzZUxLtTIVTtHsiUmaMmeEAaRluiIUfFvpPvhMXxRrVBMmhHblLtiKDKkgaApPcCNwzWvfFeEeHhWMmwvjAaWwoeLlEgbXxQZAFsxXSfHfFkrLDAaIjJvGuUgBbVEffFjnkwLFjxgGcCVTOotjJeEnVvZRrzkIeEaAIiVBbvLewmMWEcRxXaAtyYtcCyYNRrwWBwWbCchsSzZtbBlLhHhLBblbBemOdCVmMvTtWwcCDdBSXGsOvVZoFNtrRuCbBKkfFcUfxkVvVOalvbBVLduULlpnNhgUMmPpRrulLlLHWoYwWLkVbBHfFKUuAaqhwBIibhHIiOpgGkDDdqQZEscxoOfFXCSiIezZPUMmPMtTebqQMHhzujJtTBnNKjogGsyszcMPIoOvAaSTcORXOTtoOhQaqZzWlWwNzZIiPEfYmRIiUuDdbMsSpPDIwWjJeyYEryYzekKEGgsjUxXuYbTtYVIVJFfojkYDdyaAxoOusYkKErmxaWzCzhHZcLkXAlCjJcRrJAZGgzaeEfPyYQTWbBwuUSXOoFfuSVBbcCviUuxitTSokKuUHXYKGZzPpjHhbXECbBVvcDyVlIqnCcEeyfIoOiHYzSWwqSWwsMztHWwbQcCnbBoKuDlyYPpgRVUayYAFWwfbKnNkrRUukIruuYyyYsSoOUbaABCJjZbDdBbnuzzZgmzAaWfrFLiISVvsCNQNjaAUEKkegGuDyYdgGWwJWnxWJtlBLqQlJCOodNnQCVsTNyYpPJjntetlMmBbkvVcCDdQyjJqQHknTtNsxXWKkoIiOfTXyYvoOVprXWifFIwWwWwLrKEeksZztTOHHhZMKbBZmMJjuTqNwRrWohHOzrBbXxHjZzJhMFpwpAaAahLluUlLHRTtDrcCRbZzmeELrRiIldDEmeEIuUjYjJtTtTIrOoRisSIqQpclLOdDoOoftTrxWlMLtzszUuZPpMIiQqrRmgGgWXnNVvFAUNKhHkWCcAFAtTucCRCrRZPOoYOTOhDJjVvhrRkTtKHzjEQfMKScLlYyWsSwfQFZzfspPVgGbTZKUunNIlRoMmDZbBiManLlIHhibrCsHKeElqKkXrmMCJFUrRcCgNMaTDRNnNVCTjcGgCHeytNnSPlPKkpwshXTbFhZzJKAjMmJgwTfpPkkKKxXRrZzRfzZzZvVflLqQLFfBoObgSsUumMUZzdDormXRrpPiaOFUunZoxsSWwXOQTthHkVBxhHttTCchBmgLlGTpPsbhKDgWRrwGnsGgQqnIixjQqOoJlLlmtTkKmGfFlLtHtTZzhHMmiSeERfGpchHhHYyXrnJAnaALeEEeyTgGdbxXGPpmMCMgPqsSVvphfSNnsFAfCckKDvVDddtTkKZTwhmLBbhHNnlWgVrpSEeNjHhChzZmxPpUuubBUPpEeZzoclVvuApPaCMmQQGgYyVvQSoObrbVvTSCcOoHtTgaMQWnNPcFfteGCOCcgGocSBABbSswWtqwLLloEeDdQoOkDdKpPxFfFzZIiDTtfLlQZzvqQViWthVaFYyDzcsSUuNAaqQeKXoAAYVIiBmfFZSubBUgXyWdYyweEeGgevsgEeGMgKiIMMmIimVirRxXUuaQleRrpWwmCMPFBbvNpZzjnNJVvTADyylErReLZzfrcxNnXebCcEeiIRrxroORPcHdDQexXwRVvrzZrRqQTtAWwaZzMmWmCcFIsSAzQFfyEkkKeYicCPpWwIfFkKSXzvbNBbwWvVOonPpBNnLlRIYQqWAwvWwVWZzatkKxmJPpsZqQLXvKkViQqzZApPCcMCcRroOxXXiIUTtuxOEeoEwWYRbBTtwjINvlLcyYCVXHuUhvJkLIilzGllWgbBWgBmMpHCcVpwWPsKLlUuOiIFcCfowoepsetTaXxmMFfNnNuvEXrRlLHpCjSCnoOJjLcClXvdLnXxHWTtKGrxXbBlvpPVriIxmMcGgrQoONnnIYxGbBVRrOooOvyzWwdyGgPpMHfiIRrFtaASrRsYYsSJHhjUulGsFSgGaAdDsQqiIfSDxvVXdXxXxgTIPyYeNAwjvVhbBHNSsAanzMmZFfcCnXxJzZjCUUuJxISeTyYaAthUuOkquTtrHFfcXjxYygtTWzNnZuGgAZVUYNXxnAaFfBbxKkgwWuUqQGWwzIiBrRqQMmEjgUZRryvKkVFkltTLJjlOEeFfXNwWnLYytJjTXxkpPrBttiIYyIYsSdDmMtTKrfofFOyUuLllhUuHqIQiHhImXxaAHzZJlcQxXqxGQnFOofzZNxXdtTFfwKZBbVNAnXxNEekeqQPcjxkhHgTtXxQmGgmGrPCKjJUuxDLlNuspIUVWJJjLgfYsPokKOIWwcCbWKkqgFsSBcCKavVooFpLlPxXpgkPEStTsFxLlHhXnBbErSsqQRHpMvVmbDprsgtTGSZzRIihPZhHzZdbwpPDDddEkeELlKsNnudTTQqnrqUumFZNUIiDsKdikKIFLWnapPGmUHBbWKkjJHOohhHCnNcdDdQqIJjigRVifPtyYnfLlqQFNLlDFMJJjjVtOQtTUuGgqoqXxQWzkmscIwbBNnocZYyYWmMqQZTNCcnSsfwZzaImMhTOocGgCtvcwWXBuQquFCbZeEJjqQVdDsSerLhZzRJjyOoYDdWKkVvBgQqGhGgbBcCZAUupxOSuAPcCypPYpgGavYEfFlDHeXugrrBTrnOoNqQBNFiRrHhmHgQyrRhHDdYrlsSKNnnHhNxWwumgRTwWtMmgqQjiqQBIQqVvirKUgryMmYCLloiarLOxJTSuSsTgjJGfAdyCcwCFzLcMfFCcxTtIXhyYQqHxauCeEcUWFikIiOLDdlGdQNnqDoOywWdDYYyVvThHJjHhLhlLBbsRrPxhTYpPmMmMyMmlWfWoWWsAkmMNnkNyYoWSCYAWwEJdHOoGsVRfFOoqJEejQiIVvrlzzZhwgGWTPxUuEyYOoIRAariPpXTMIFlLiiIWJjEkcCKejZzJZYwUuwFfWhEQHuWwGHhKgyoOkFYybyYBfjJGBbgTcjOGZRrzgoBMeWNlIFNGbPptvVTruvJJoOQEeIiAzLhHyYmGgMIiCctTODtTdaLZdDZsIiSSsaEzNjmjouTVDVUuvmiWwkYyuUPIEeHTtrOJjYtTutfTtiITBEupPSsUNnZzkOUTtZzeUuvVVvExZRHhahKkgGcCcCtCNnTZzzQdUkjJRfFiIrKVVvvHVvfFcngiVKkiSsSTmRQfFwPpRrgIpgOoGGLdOoDlwWLlLEGbSsqykKzYyRLlIintpPcCYaAkPHwWhpvzKdBKOTzZDdyrRpPVvWwbcdhuKqFKGgkKkHpPGSsgsMmgiIIaACcERAaBbkoyWwnLvchHfeoUNeRrMeScCFhBLFZzcCfcwwWXmMDwYztHdDUuWwYzuUHmYzrXMurRYBarRFdDvvUVSdyYBkgGdDkemMgGJPilLlGoqRrRrLWwOowLOAJhROozHhZNitTtTkKITsQXtnXxRMmooFIWlAiTtkwzkNngRGxXvVXwWABGgnAaNBbqQJgbGSsbEGVvgSsfFvVBXeEIGtRlLrGIiKvvoOtklaAfjdDxogMmxXTNTvxAauiIUzsSqQOEejNvVnjJkcCSjtTBeZdDfFKicYukKqQJjUyWgXXxZSOThHtdDuQtezXxTGfiIFfEcmiIHhMfVkXeEgGgAaGgeUUuAyYzZaaYfFylETvVtHheLsFpPfGgSaOnNYHhNnyYsbAnNjWRCcrcGQnQqYuvHgGJgaABNTSNuUdyYMximDahuTdDwWQXxVxyYUIWMtApCczxIAlLOwKpPTtJXAavfFiZbBnrqnNhHqjJmUEHfFFYyJPySQEQVvwWhqQEmMewJNbnzQNlVvLPQHpwLwWlJWShFasowWdFtCDduiIaAizEJWwKpPHhFkKKoVvVDSsYytAeEtjUpJXmdkhHKceBbWXopxSJLaOomQWmMlZIizNEeEpPeGuhHoKcrleTZQquOoUmMqknNKkdDRfFfdDmMFtJbJjfSgGhHGBLeEJjlvlcCLVrhqVvBvVbzqPpyYxWwHJZwdDdXxOBtZtgGTzTgGaqJXsSVIimWFfmKNMOphpPHShlDBjsSsVouBBVFcGeEzRrRSsrZFBvVMpSRUYCjJjmGuUbOfuzyHhkbBGgkfFcdXZHmMWBbRgNmTbBnleEkdfFwAzzMkEguUuUXrtYgGNnyxbBylLYwbBEjDduUJEeSHYyXLxRIsSVMxXmtJqOozbVxgUEeAmMHhasmxXelNqQQqCuPygHtssoDdCcAsSTaBbqPYyEBbeqQnqQNYewzZpOJTaAtTvoXFaYytTAQYIdqQgbpdDDZFFUmevRKkQqraJjxZkKZjKWwlLQqAkKLliIeCxXcfFIizZEjhHGsiKtMpWiIwPQwbJWvVxmVGgvWwfFWeEaAEeDdDankdeEDJaAjSscChHrRLAsNBfMmFYLllovDNZJluUCcAmMMmTDdtvVvXxIiFavNnozzNOocChHnFpkAZCfAcdNgAMnIiNoGoGKqyYPpsQkeEEkYmMLlWZzkMmdOoKHyYYvVUCobYhcCwEeUuOoWVvTtqdDciKktTILHKGLQMmIHhCVwHhFCcjGocpbcCuqQUTtqQDsoBXxLJevKkCZHYcMqfFrMhHYynolQbBVFfvEeUuAbNEendwfFUrUHhiIKkAiIyYRrauRqtsGmMcPIGjEecpPODWVddWSswKZzNAINyYyYpCTrbRGEfhOtZXuUxlLMmzTsHhiImMqQopTtKkVPLEyWwNnAoOQJTPpgniVpJUumMNIntorHhnNacXxeezEqHTPpUrOfapExqBlFdGzNnkKVVXxKWInNLfHzZXSyHhvqDJzbTkKPQehLpxKlLJOooTtuaAUOjCcNcCPUuztDzYyZyHlsSYHnkykzZKlsBbrMSnieBbEXSbCUQtetBbTVlQqLtoJjQqTtHeEcsViIkpjYLnfFwWyYkKwvVkBGaHVedAWwXoCKPpIpBsxaAXSTEezZvputBSPpSQqzDdaYDiGKnNiaoqQayYQZzEQPVnNKpPSsXmbfwOsDPxUuuRgBmMDdsxbcCcCoOGZdhHffrRFFniXSCcFfsxrRAweMDEiIhHULXpxXMmfroaWwAWwUugGCfaYLqIidDdDKePpqgJItuQqUVSOoYdDPhVRDdrwWxWwAaPSzOoTmUaMKkBHGgdppmMpztLlLFUuRyfaAZAipMhHmJwqQYmkKMvaALnYyAIKMseESmdtyYFquUwWcCkxpuddOmBbwWMOnnKkAzLuUlHeyVdpJjPDdcZqmEUugsRrIcTTpRrzZPjJjJjtKVskDMmCcGgPpoSsBHeEjIYOoCcwLlcCDdBbWWBIefhHrRHFfOoeEhDdRBKbBWwkjFIiIlPnqfwFPjDdJgAztTsmhHGyaUuTtGYfAStcjWwkXGkLlKjxAJiMmGgmHbjJbyYyTyYttTYewWSKTtNnuUoYyKzZsqAFIiIXBRqSDbBdKkxBckKHTtYjocCOSGgsDqfyYiIJjFhHlLQKLGaAeWwsAHqvxPuXnNekKsWVaAVeIiLlccZtTzcCzCErPoHOohOdmMeElOYyNnvVpauWVvwfbBdTAUuCcLEyyWlLeucwFeLIRrffXxdDrRLRrpPSFfxgGOogGiIYGSqtKVQqpPkYitCHqIibBEbWwBDdEeoOLleAaCLlcjSvJOoDFODrRdsQVvqBEMmrmYqFLlXxKfMUbapScjPpbuvlLrAahXgGVvViKkepPosAxXLSsXcWyYSVxRXxreEXowZDzXxUJjLUOeyQMmzZAHhMAamNjyYXIixJUrRkKbeOnOGDAXfoOhQqzKfQqFjzPPJUWYNqWCBbckkuuHoSswxXWkOouMmUPNEXwxOxXJXwNbQqOoBkBbvzZMmuUUuBbqVulLCmytsgGaASkdFfDToQqOsLlMWwZCcHheiIuUkRWgpMvVmMgGYyLLkeBxOoaAEgcCqnNQYyQkkKTtySsYfFtxXbjlNsSoOpItBlBblgFfOoxrPdeyzOXsGgplLbBMfhtTeCcEMHhmMmAayYjJfFmMdIisRUGPpHDdhqoZzMjdDwVYNnDdGTtgyxyNnppPPkKJsUuYSTrRhfFHFfzxMTnnlLunKurRUVvwOoWCtTmfFwsLYUhHQquyaQTtFfrnFYWbckSqQsYklJKkjULBRzZrblEgrmMQdaCSxPwOzgmUhSmjJMcEZdlUpRgdLlCcXxewWlTtLEXIYoOyyYiddamchnGspRxtaANnPEpFfxoDmMoIiRymYkvVWwKyTtMVQRrgGRUDduyRGtTFuEYckVvaAsSmFfMxdDXvBedDdCHuMmRkiGHHMmhhhjlUuJtTEUuYQqUOnOMaasSdniILOorsSTQpPqugxICdpaCezBzJoOUujnNeQqwtlGPpHhKkgDAPfYyDDQvvVeEHjrOoRVOcCmuNnUGEeEeoZztjBbgKQqXxDAadTtIiJTtjhpUNaDeGsGbBsCChiIoOVqQLlzPOomMwFkKfrRYftmMTRnqQYsSyySjjWbzxqPsRrSNtqQaUtIiugGUTlLPMPLlqTqwpPWbGHrRTtAaGKkEeMDWRCBRrRrFaAfjGqCqQRrcQgoUuOJjOogTbKkGgdJvVaAjDyTtCIXZzxrIPQlMRrSeEBeEbhHsAaJRmWwMEeViiIXxYIRUuriGseDoldvcNoXfOSsslkTexBbniIcBpXmLWqbFqQCzNmMnZXuglWwvAUrWwffFUuFOUuIVhvbLxTYgzJjdkZnrRDClUpQqNZzYKkRjuLvVNwlkMKSIfjJejsFjuZWwIgTYHHhgqYyIbBuVbGszvyYVfCcIRtlLvVqQDdIgwjIGXxbyiKBbXkMzothtkKYyCcEuPEeLlmIiCcdOvHCPxXpjJzhHsJapSTauUJjfLSgsSrjhHhfjjJdDezAabmYyhHTkuOTkWhMmloSBaoYyYNEmtTHgUtpRrgCRxhcyYoOgGdzcBhiIiVekdYkUbqsXLiekmgnLODwPpwhwMmwfoWXxvvVAbCCciHdDHBbDerveysGHFvfFVhopPykoOjHIErKvrKCCDdLCizZIlLchLYnJKZsSxyYeEoPHhglLSQqQKkqsoOOokZzKVhtcCTUcLlCEaBQocjhEQwWqzZtWTtUpQqPjsSMfpjJAHfFhToOoOqtCBbJSdFdDlLfSsSsmemMaAXVIIiSLlqQOdMSXHhuUMbBIsgVvGcCzhHnNJjhZHgownefCXmMRrpEPTfWwOvLdDvUunNKpmFfiIMslEgPCcEjJeOoHTtYDZpPzAtTLeEJjlBVvpIXzpYyPuUajLXRmLWWLUFfrtQqFFUwlLNndcUNjhQkUZdnNgQlAaLyYkFFqoEdgwWDzZdbKsMYDlxXMpVEXuUFfsPpGgKARQFeEYzZnMEPOYyjJCcGPkKGfFjUOmMoHrWwwWqtTkKtTEePHNvMmVdTyYjJyJjsceuUNJEegFVrRvvLkvVxXEEstTwUuwgGwPdwsMYGoAcMqfTjqwUKbMxYyXFRNGgnrfmBkuWUuQJtwWFQmsJjSCaOgylLmSEMmgGeWDpWnGXxgNaAWtTWtTSeDCcdYyeKUulNniGgIVDpWwPdfGjNnKkqQnuUECSYtDPLkKlcCpnhpKkDdQRhuJgcCpgpPoTfFtpemeENykKMmfqrakVvLvVWVvwIilSyYxevPmLdymjCcJGXxgSqTtQkBGgGDeOQfIiwWfKTyfFYtqsSGDzuPpKqHJnAaudAaDCDdDWuCcCcfdDfTRulcCwvWwVwlqUuQMrxlJSsAVyYvJjZxiPnNbadyqQkVZzvKhphHGpPeLSPkVRcCrBblVoDdFRFfyYrtpePZzxcFECcNWOGhzEeHmMZSstTaASimxsWwmDoWwsAarRivxAaCcEMFfDsjylLYcTQDdtaPFmHheEKktToOJuUuIdDiwTeHJuUCOqbAbBvVeHhusSHxXvoOmMGpOXQqzkjqdDQNylHvVlvVcMmckOoRVpHhkKPkReihJKYDdbBOHfkKhgQBbqSYEVREdoOrRhhPpIcBjJacCmMsSVxXOowOFWWHWWdolcCNGMKEIlxSQBuKyDRrAaKSsEvIHbCZDCHXrcGPTuGwWhHhMenyOAbsbBOdDlLLvVHwKtoUKtMBTtZEuUgGRrJFHJRGslFAtnNsPAjSGgZXxchVgGoDZzMpUelLaATHTOcCZmKxkIYQqBgiJWGiTriFmMZSgBvUiQGhytIgaAFfGiGiBbzUJfjJSJdDMmEiIFiskmKzZLWnvVlUJrynPuGgLcdNzKDZIiGytXlBVXxHvjJinNxXoyYSEesRuaVLGUoOlLkKxzLlZDdcqQfBQiIwlMxbBPbCNLlXEtKLSHhoBNwWFfVvnuUbFyYxBbvVOnUuCVDSsLOdiIESgsSKkyIvkKkEeKrwWVvjRrmfFLqpikKRicDdCcYLlEeBaiIAdDuUtGJbeEEecrwdmKkgTSstNxXUunoOhgBQthtbBTHgGQpmpFftTuVvATnpJjQXTtnjJxvVXyYFiIfcRgGrCNZBwJsSJsYNrFjJYyyoOAaWSspZvHcvVcSgSgEdAnuPHkGJTDdMFfjJmOfFtWwTgMovPpAaJGghVNnqddFpUuadLqQhvKkVHTbMmBWEZbZEcAPDciXnNGoOUtRlNDbBVvGgAAKkmoNLlkKouyejZzLJHOogEeIhHYyKrUhcDOoEbVQqKCyeUIifgiJjIEerYrqkKBsSsSbvgGgGQqWwVvYrOdOXPepTXeErPSgNHCMANnDDxeUsfFSuZzEHhjJDGrPuLjJDzeCkKsHuMGZoWpOoXscADqRGeuLWwaAKyKCBwJjyjJfNRqAMmlSRrWMcMmkNUcCeENrRNGgtmXZsSzrRZJNsvVhOoaAHSnjtsySjYXYiIyvSsWuUJmOQgBburQqSIinNoODAUuayEqQWwCcRJjfBYyMpPmbFrlgGkvVaAKLeYHFmPSxoZYEDGgpCcRXGLLvvVVbTiDWwPyjJNnYsSnLJBTMmfFvVtIiTvVKqGevVrBwIFfiWbRXbEKlcClmPKSskEeGwDdrQqKEzmStKTYMciuUIUvQVKnWxjfFoXWxenpnNfFKWwNnOhUlLUKKwQnywUwWuujpPppZJkZHFjJUuxadgoNoYyEBunakKEeqpyYPYuUEYqQqQyouCcluZdnNzjJWOnNRrvswCdDxlaSOECcIZzvxRrHRAaaAVUsSBJlLCsPABuSRrsmFQqUugGkqZzQfQyMRDdFbHhBfebBbYySDPpdoRreEfdjVsEoOeJQhCcgGcTIIiyvVKpPvkTQPpsgyXsclLBgcCGbCrRlFFiIFfRrijQuUqJnNBbgGlcCEfFfWCRrUxXnswPhHpWSQqNEwIiYYelatDFUuUjJAKkPKkoPHhpCGgBbcLfFDpRecZkKCCbtTBEvvwSExUpXeEeEVCcOoQhaSEglkqUuQdJyhCbuyYUXsQrbLlxiJjfaQSkOksJjEyYXMmxjJBBhMXxIjzZaUGguXJgxoOKJCSZzsTsoOdDaFyOogAYgVvMqQSZaIiGpRrfWtTFQNpLiCcIkDdKifJKkbrCcAaHGTtGgsSfFghMKkjJmFfPiLlIpFfFEiaAbwRrycCiJhLlbOdKFfSvkyYTAacCVvJtcYyUuCZztCiSGGmMNngpPeMTtQzCDvYEhrRZPpaNNooDkKDQqUPXKEQqeQfTDkiaNlVNnyqQWjPIazFYXxrlLiIfvVlTZBbPPqHhuUQPZzDCcsTtSsShbRrmAuMfWWwDrRdRrwFtZspXvHpqcCQyIiDdFfsvTijGQEktTRrQlyAFcXqCcQBbxzZTcCtORFPeECcwWxluedmFfEWaINhHDzIigEeuUBXSbGrUUudDXpdSoiIWFqQBMxkvpUuqeqkKAqtTQOgGAIyYkgIdyXxAIPpifFZsmMsblLTUmMfFJjPVIitbPikcRrOxXxaDEvhAgbfFKWmMNQqeUuElyJPKvSTtChBbOeETNnvETzZqaAucBsxIaANuuUUsuUmRoIvRrDdiIViRDdrOSLiIkuUKYKNhyLhYkKLldmMGZzMbBmcfFCvXxJjVAaNngTZpRzZrZznJFffFjkXkBzZbKtTPlLbBlHEqptBZjdQVIiCcJjYsxhhHSsFlifFwkvvcCZggGZzDfLgGBbbQXePAFoRDduthQePpZdDEECnNAWwROTNinjaAPvINGXxdDYytjqFfaYTtelpvPKkOrRZzSoHwWFiIegmMrBRhHtcPniankXxDdPpDDvZlLzvVuUwsSdopPCJgipvVsSEeCdDgSTQfiSueEUsIFuWPpDunNUiIBafFbBkKbBqLONrXxRmRCcXxfFcCDdQmCyhzEeRrcxQqIiLlXWwVEjlbOPpSdZLlzVvTtBPCOgJCcfWqQvcPpQqihJjHPpMViIQqvrjXxJRmqxXlgLlkJjhlCQHOoyBLlOcuyQqjUuJhksGAaHhgSNnDyYKEewMmeEkKyKePpKqXxSySsYQLlrRLlKXkxXKkKKkxkkrRgOgOqQmaGnDCaFczvVaKPfZcCmFfYyMoeEwWOZNnlLDdqQnNyRPprJjXxYgGahHAOVAfVYyaLjzndVOLybnSoOmMalcCKNkKAdPpwMQqXwCcjBVvWcCqmTkKkIwWSgQqvMmVwWbBBGgbJazdDZBbqQkTtJzCcUuzXuUAVLlEMuffzHhdJjdDIZzivVPBGDiQqyqGgYyfxOVtjoPWEyCcpDdxXGghPpHQAtaOBPpbHhSSThGYpUcnLEYyMSuZzGXvBZzZQGgjTvvVsSirXlxhspPeqQWwsSWXOoTRxuycCYmVKkKkvMAaWDdwUfKkzZFGMmeKmZZaWDKLNtMnGKtTkrwmFmMfMGgOohzZzxDCKmMKYZUFoBgMJNncyursPZzmbAafgfFRrCfhYyyYHgfFGbBxXvbbWwUqdDlLQOvBbSJpuUPbdLHsFfPaAomEenkMwmMUuMZzqQvfUufFFEexjBGUugbQAboxXDWzjhXQCcZjJAuUaEelLQHRbOogvyYVsFBjTdDrKQztELVvRUuCkOvVTtUgnLwrRqMAljrcClLRHhsXPOcCxwECLlDPpMxjvVfFPpPuJHhTaTpPkKvVWwdjJvYyTHhgbBGtOkfRrkjeZIUDdcTfuUIiDOSAfGgHswjBbLlxXIiWPBoObhqpWwnRrqZNBnjWHqeqsMTtmTJjtYpjfwWheuMmSsZzMsSQEeuUQRNzIzZVxjkWoNnaiXZPJjaTmwiuoOIiuUXvqLKklBbtUHwWAdMIXUuJjmAaDUunstYynbGjhUuEeVUyNqgsSZzkquUQKCAawJaQgGqBSyoAdDZzgGAKMmkuEHhGtzZTxfFUYhHyoPeEpOlQqLuKvFCWweoiIOeEFgtZETqYUXxuyESsgGeUoszkKmZzMxGwSsCIkzEeEuUbJsKxuUfTtFBbJjXLlJoZmMaAXxXsjJSVtntMmGOXJDdFeELPpKtTTVNnmMVhkKnNHkFfsSgTgixdCcDWwbQWwsSqeBgPOoPppBGjKkbaFfxblLBgyqQYpqQPrGKZyYWeEUuKIaIiLwifOuwWUOrNTxkKqStnrHjaolWlQiIOgZdDzhHLIiIpjEsRrSXxMmWwKKbDsvOouVdDVflrRLAbyUmLloOMmsSxRZyMhZyBbhTZMmfHhFyWdBbxWClbHoOdfFyYzZIiDfeEsWpPqQKkwoOEmERdDrnyYLluOEFIsSiCVlpPNJjYSsOKreyYimMOoGyYShfQknNUHDCBlLsSNnYzZSskKUutyYoBbsSkbDkZVjJKwWyaATVvNrZYQBgelWyYiHNnhMmIwgPiGWiAgGaIqrMtsIvOoIpSsPGXMmxTtpuUfErzBbZyYReFPNChHhMrVvRLlmuDdpPDqZtTtVvcTcCHArzXMmuoKebtTtFTNnUyowWRhiprRXxKiITaAtIMdvtUOJkKHuUhMJnkKZeAzKkzlzZPpAofFTtlwWZaXxAaqjjVUuURSsFRrfBiIgqGgaAHhQHhnfiLoOnwEmqQbPpwWJCtZzWwKYGkQqgUAaWwhqAaeHWyIiOozWCcwwxXIHhfimtxrReKkFfSsXptFfFfGRrgHZLvSghzZDjkPpKepPaysScswOnYyKmMKaSwwOwFfFlLwLZzYmrRMyttTHXpSHEelyuUYzgGZtKkoOxXgDdoKIfHgGhwOoAkBJjbKRWcCEewoOriqQrRXmClZfcWYDaFsStUdDstjXoCclRgGAIOcRGukRbImMJBbGvyYVrbBGRrKoOPpkSsMwWUXkLRIiqnNOogGjJWwGhMIfnbRtbRRGwWJjVvUxEhdLeyVxXUsvVoXtTPazcCHWwbwKkrHleERKkEvzoOBcfWVvwUUboOvVxCVHzZdDibrRBALlQqIiWwWFtzwyFfeEzMmCONnWEeiCSMKqQZwIiTvmtDdQqTjJfHhjJZzdWwTpuUFmMIyYvAarGDOopPwhHhuMgANwljJfAazqQEeZDCckpPSdunzfMQZzRNttDtTUxXAmMauUQqNnpPSEqQFuGgUfeecCrReEbBWBDLlGBbguUzWwpHPdBCcPhUubBeNtTpPfbBiILlepKWwGUuPJjfOOAktTbyyTtYYfWtTwGdjJDQKkwiIBHdrRDhirRpSyFGljyYbHhBwvzuUZuiPSUndXgKeEPpmMrRkWwpPoORyYrzZGkcpRIigMMqGKXOoOoJCpfFEKanOovzdDkWDqdFfFfDMmgDdQqDSsBbdXCLjlLhAaGgMqiQeEhrRHLYFwWRkyZzXxiLldwWDTTbCcRKtKkcCMmmMjJmMFeEfTlxoYyVvLKfYxXkKRrzuGJebZtTsSXyBbuvzuUaUwtTGvVXJxCmMhRTtUQXxmMdXxPpDKorRzZxXHDdwqKAakQWVvEsiXxXjucNJWanEpkpVNnvDjKkJrcCRdLlKksSPKityWwYSsaAGgLyyaATqHhQhmYDZAaYRrSsgXkKpPGgyigpPGNNcJjCnkKqbQqBlLRCXRLnNRgkYyaAvVwbBwWwWhNluCFfJjcCcpPUDVVvxNchHsJhHcPhxeTCcaAQqtlLVRrLDdlmJjixXQqEeIMUneEAESPtTGgHhEOWHhkzbBZnHhNSvhDsSdPbBbuUGwFfGRvVrsSwLLcCgZKXxyYjZzVxUuniLlJWryeKIhHrnNRikTpPtvWeyYEEewVbBqQkKSsKkmaIRrvVxlzZzKkgGSsSjMmMXHhTdDlLwynNirFfOooOTtHhVZWwxsyEJjFkKfKeYqZaifMwBbDdWEqqQhCpXRLlrBEeECeERFXxYYdatQqPnVfpmzZcMPELqioOIAIvwKlLWwkvVWbYylBbLBSgGsFfksMsSYymCcSGmSmoOMqQVkKEjJKkEfFWDwwWYxJjGszJjMbvyMmayYeaOxnNkKWwTtkUuEAanCZuUdfAyYDdvuUHTwIYZzgnrRNGMmVvzZHhyqFFfdRrgGfXqQqOlWQTaxXbsbBnLlXxNgETGgCpwqmkwWKgGAGULlpBbPuPphtTsMmtBRlLBAasMmqtTIiVvqqJjYycfFULCOQqokKOSsaAWwgiIGXMgGBbNnkrgGRKHCccJnkKTtstTPRuUvGwMHPpLlWtzFfFaHSsPdDQpGmcVvgBDnNtYlNajNRxHhvVhHCiIPgFrsIozcCZOtTVvCchTRraARrCcgMMLXNKkSNdkHBmMStEeMWwGgbHSsTXbcCvKGgRrqzNXxwWfBboAIpPxMqYyfFXqQxQROaAuLjJiIlwWVgGvHhKSTiItnNsZSszkGBblFwWZsSzaAFrnVvNGhHgFTttLlWiIpPXxGgGaOouUVvkjHfBtSsxVvHSWAaLpCcjJfsSFsWwTHhYEhJtcvcCncCrdtAmnGcCBbuIifjJjcmMJjRxQLXxkzZhSAaczZRBzZNAmGgSSssIUuzHhdOcCrLmMaAikztBvpjJGgPwaAWSkKqFCsKkkLlZzmnUuNCcJjOoFqOoeJZTtdHotAaocCzZypzoOYycrUMmafaylQqLxXYwKkJnNjmjJRrMnuaKkfxwEeGSZYyTlmLwRrUuXhDdHRFCPiIiPpyJiBbMekKMGgBgUusSGsSdrcCPWPfmRZfFnJjzhHZQsStUiLlPpIzuQqUaAkmQqzhbBoeESqEeQxXDdgGfFGnNghPKkpHbBRuUlWIiwsSxTtRPxtFyYwSAapPKhaAXxZzYsSqKkKLuUdDTEWwCcSWwfkKtAaTXxFvcqDcHhjbxXLTjIiwXNwjJpRrBbPjJjOoJnJjqeEnIiuQqUcoOtTlfRRrFAawZkKMGZUNBzcURiKoOsSKkBdDuvrGLZAazdUkOvJjuUVNqhHBhTYyZSsmUuSsQoOrBbRsWwhHZyhWwIijJFYNyiIYQieELbkKBdDnaANvYJjdRrCcQqJjeEexBJQqnNgFiuHhUIfkKrRkCcyxhwWnNOiIxXZzsIXVkKvUuIlQlLmMqtTtTLsUxYystTpPGgtqpFjCiIcLaxKlcCZFfwAJjXUuMQOoaRrkKAqReLlySzZUXKJOFWwfjNnviIivyxXFfBcCyHhJSZynNeEZzYRidmBHhrMycCeEZzFVvegGPpHhkuUcCdDKpNnUunLwCcQAqHoxroCtLlsVYSsyipmHhCZSHhYSTtaAOJlLkmjvVJZzlLMbTtyYUuUnNZmSsLlBEmXxBbUupGgupCczYydKPovVsStAaTWIiHQkhvKlyDdOtTwhKkGHAkKaszZJjSPDTtDdAovKXFTnfGyYgZzOzoSuUgxsaAbjJcGgWwDwWojJMMmEbBHHhTfFHnTThuUrRHrClpNnPwWiKBHNGgnhbNvXJfldDWKuPpUtTfFNJFeidlLlRKAhHagGhaSsGDdgrReEzqBUuGVvOnNyYJAapZzPVEVwZWncCFyYfvVGdkrRITNnvmHVaAVLqQkKoOrAMuQqSsIShvigaAGlXgGuuUrHhRnNeEywISsoVpONhLDaAFkXnNxHhEeviRrtTIDdpGgKkRroYxXuURretCcvlLVTHhsYySbBYnKBVwpVvTtKkrRFfPWBbKkjCcuxqQBkxORBtyjIFlyySsAmMwWTtaUuGlYyNwurRiIAaAcCBKgKezoFfqfuUnNvVjJVvpPUuFQItpGceabBAszZQqIVJjvVvvVEAaxKtTtuUTMmPmMpPXIixCbUEFPpxXjPpEemRHVvMmmCaADdTdYoOJUubDuKQHhqVvdOoMbKkvaAmDdsSYyMfIlxGgXflLFfsCcSFZzjJuxXeEUdDFwWfyQPBbSsMmVPpvpJptfUSxIidBDZmChMmSyYDdinPpIwWLRrlzTWwsStrRuUcqQJjJZibEeIAavVGgFfOlsZzpPSLNRrNnoXxOvdXMbmiIEQqICcixXPVvFfqeEumFfWaaBxXiFfIbAOoXyYZzfwWboOBzZayYgJnNjqrSRrMmjJAxDdcOLyYNnuWeKkrREGKiIVvJWwoOsWwoOpHgkQntbBHdSIiyOgGRrNnGUhVvCcOnITdDQNnzfFvMmVImMpMmgdyYDmoCZkKzYykKDdYyWrcVvdDVnQpehHWRrbhHWZLlVELleKkBzZmoOiIciIKIOoiFfStTyunEXxeMUIiIfSFfztRtSkKgeEoxwWDRkgwiBbaJwMmTXxNHxUuLjmOoCgGdUuDcMMzWwZDezKflZzvVLvVGKkyxXujJoOrGgRUxdDKUVvukHqiaBbgGqQnTumRraABbkKMPluUsOonNKkeOoGgeEAanCcVIiRLLbstTetiITEeExrMTcvVhFjJhTtYutTUiRURKkriLCcBbQCcqZYBwbHVvRrHhhcWwCoOTuGgQqhHxXUpkKnWwgCiIcsCBybBcCiEeblBbKZujJURAxXrSDpDRrNnSZoYzhHbBZCwRrWwWzWSsQByzCcZjiIDdMmsqQVvKIiDrRrRdkmMmbhHBbdMmqKJjVviZqQplLzZVvoOPzliXqQxIlrRWwffAaQYFfnGZnaANHFfYdDylHoOrRhDdHrYIivSFfZzTtbbBcCVMFfmEdWwgANnaMQnOdDCcoLlhHCcuIBbIiEFdIimMXzuaAcJjSsCORKxXbwVjJMtQDdLlhHAaZLLZzCdKOlidAovYiImMVvcYyJfezZOFBvlADbUlLXxsSoODuUyXxuUrRaAUXfFxvtcILVeEvcClqQaRrnNyPcJjeBTCQuUqPfSsFpziUuewswCKUneqWgwYygGrRDdhHYKrrRRuiatlLTHhAHRrjidlmgvuYyJfnnNFsShORHUuRbqKGlLiISsFxAasSXapAvVBKsSbBYkKAjGgJjJdygbnNXNnZaAUuHhYwWLlLtTlEeTtLmEeMjJwPHWtOkKzZbpnXesJtTiUuUrXWkSfFkKGgttTmUujJNEeDpPmhEoOlLdDCcWweCYyPvVWwpzMtTiQFfqfzalpEeMmIiIuUeDvVQqqQdllLCCHIlrOlLoFffFIiPQqBWCcwbvthDdpywWYPEefDkacoOCDdzuUKkXdoOkKCAlqQXxuRYfFnNGPexXCcNgwWTDaAaNUwWqRrpmfFVUuGgOovrReEVAyYKcCmPsSsNtTacCANQqnvuYyUwDkKdFfWGQqlmMhDdHELloOhQqjPpoOJZGVDdbfFfLrjFfOHCahHrTtRAgrRRiIiNnEetZbsSNoOmrRMlFGsSLlCcoOlGGSsggLcGqQzZsdMmYybBGjJLzfZzZhHzFbBcCEefFaAlLSSvIiVsyCNnhhsTQRjwWJvAaVrqtTtaeEzZjWlBpKoOeVvEqmhHvVvVJLCVdpPmMDvcCSsmbvmfqQoOEnYDdSOPHpPALQqlahuqFMmfIZwaDCznzZeAaEuUvVuULlvVtaNnAtTXdcCVvDxVvRTtyiupvTtzavtTVhfLIvVFfpPilFUGqQfFbJOoVvwGgUuWBkKpZFDvVjJarbUuKVCCqoOHcChayJgGExRriIqPpxXQPpyiIcCpPDAxfPpxMmXSQUuPNnRriNnlLpOUSsZySszvVJGIMOhHoamMmMucuUDMReEwWYujJUeEymMrVvYbBypPmXsBbyfevVEbXAlbBhHhIihHnNxYyXHhNnHbKmMHdCDdDdlLDdcrtkzjVvbBacUvfFniwHhuUmtTMWKpkKrTtFfBbRPlFuUJjJjjJTthHenWuXGgQiHhAxXaVJxXPIimGLlNEnuTtVvNNnyYkKKbXdwqCcQzZcCkKoOWKTovrRIieVvEVVvInPQDdZzlgGutKwWkJpPpExgvCPuUEpWvvVfFsSUhHqptTPOyybBYYBbWyYAHHzqywMkKKRrkiCvtQYyqDDdYPpKkIdDlLdgIiGlgPLlHOocCzEvSkgGzxtJSsBbjNPSngGpPqiIgSuUMmXHgGhRSFfssSGvaNnYJmQqvVvVvVrYzZyYeEyooOYyORYnqQZbnNrCVWCwWMBbTNhIiqQTtHIiiIzZZzNfEcCooOOFfgGeFejWskeYyoyBAatiIOSsSsSNIfZVUuvZqQoOrhYnzFtNfFnTaAfZJLxXEdOoCcfNnFDdxXeDdKYIIiWPpwiSwWVvsMoKkmgFkKaAfCcJTpIWwiHhwQkWwKHhiBLlvMmPbBVTtvTtuUpeEhHVuHhpyvQqVRnNEaAeVHXUXDdxfFfyYnNmGgLliIIiMdiIDFdDKWwAaDCcdUvVvoqjJAaVQgmMjwWJfFDoOvVvXfFVvlEeBbRrBHZEsCUoOVvQICIiUpAajJHwbBiEeKOzGgKkbBUxXzZYyjJxXuZhuRrEvVqnNnNqQMCivIiEDdeVNnItcdDvxRrMmRnXVvKkOopttTSsRrPPpRrOlkZfFznuUniINPBbpNsYyuWRZzrlJhHzZenNJliIgGsrRCctTaAZzuEAkKPxXpXUfFuHhQqxOVUVvuvBbFrRqQjRYyrdeEeEZzcCXbBwWapPAQsSDMnNmahRUhFiIfbxrRXBivVIQqHhpzZRrjGgvRpFtTmXcCPprRATWwcCWEjqgtfQNDIFhHBbtTEebLlBSeRrwWXbkUurTkqfiIaOoVXxLzUyWwGHkDdSrHUuhRdKkDsCclLhHKgGOfhHmMXaLlpbtXxXxXuoDsSdsFflLSRGOogrRjYyfFrnEeDdNnNaoOPpHhARtTRrZfRrXxGnNgFITHxXhtXxjMmwyYJjJjWwMQGTYyOsQlagGAaYEHezZCPKkpsQgIiOfFPOqQEeUKsjJEVvMmuUjigiGgjJFfjJLAMmaQSsqbBFfEonNOBbcCxXoURruVvjJNnPpOqQoTgGtOebBelLiZzJdRKZqQVHhstGsSXxPtkKjJlRHhrTsSvVusSGiIzpeYKkcFhHcCfPpiICxXyYomysQWwqZnNpOyYogGPEezUuSmlLCZzFfVWwvCLlMsXxlLWLWwWcCLelLaAfsSYyRreEUuNnpQRjPARrdDTYiAnNfFZrBoOMHhozOoAardctcCTcCuUCcVVEeSGgswvVPbvdwxEJiIaYCUJjBusMmAijRJjBCcHhtjcCJfLePpzZXxEjJCcyYODdIHvVhITgWwEeEXiOiILlmsSnIiNCcZziFfcBbBbTtmrYdDXxrRxwUujJWwWOsZzfarRAFIiFJjIrDyYnIiNADmhHMaqRgGGUujUNJEAabBLlRrXKkmlQQqtRsCciIJjoeEHhjDPpeEaQqxXLxKldDiIiILpkXxKApTtcCmDEeTtdfLoQqOXoOZzOoYyLlEcFNnztTXxrpPRZTEetQOoqtxXCcKUusSJjMerwceEGFfHHKikKIaVvLlPpAIiloPpOuULZQLlIiOoGgGAqQRBUuMmAsSavVeEhKVSsPXydDGgZZpvUzVCMmcxrKmMzXYWEewWwxrRhHQBbTJKkpDdKkiIPcqQCdDNnrMpPXsSsSEexUCcjJRrDduLlpOFZzSscvVUuBbiOoIyYkKCcFfCoOjJaRYyxyMNnGHhAahHFZzdjJDfUUNCcnuBbuUfFuIiZVaTtAjiILRvVEsSEeAavCCccIrRHPplvGWqFkzJjAaMmZtoOwWTKkXLuUyzPIwWwWvBbVLlYwWyQlLjJeEnEfFWUcVOfFdDOoYyxXovShRwWrHzzZJjgWCcPpnNEymcXxPpCLliWsDdRRjbBWMmzLlVvkKZUGguwJcdDstTSCNliXxKAvmMGkdeilLZKkOoOazrwWRNnzRrIRcCzYyZufZDdUuaCcAHlyCBEnaAZzIimMWhHqQyYLtTbDCcdukuxXUjFzWwUuARraGXxXHrVvlAaLRGgGTtcKkAteEjBbKAaiQqhdeEJSsjgwzrRHhcDdCjLlMmWwpfvVrCJNwocEeCoOmnRrVMjJscjraAtJjlLTeAaoFfOCgGuUqHvVhVvQoOhHuUMmmMXrALpPKkyraZXvVxQmdDJObBFfeExXuUuIiVntTNyYvgGwCcWuUzxXLZVuUvfFvnNKkBbcCWGguUmMBbSsOuxTLlVSsvHsSBbsShNmMAagFfaAETtoCHoEemMOkZNZtTqQdDFfXdNcCnJjmOoqQBnNbGFfFfCcgiIGSsxXcvVwrcCRsSoOXUiIujUuibBSCekKwpWwpcCEeZXxKEsSGsSEedlLUrJjfCchoOHuUFAMmDdaGAakKTjJMyYkpPKXbjJesoOKkSZuBbsWwjMmeZzYMmazZFEMmCpfJwhvVHWjmMyYSKksdxSsNnSsOwrdDXEGebBoOXxXxEnNuUCJjcoOskVvmMBbKSoXBbxZCQBbFfXIYhHqOovVQiXxiIvaArtJjTdDMmRVqQiIKkpPXcCnNxhGgAcLyphHPiMmITsSHhAaLltyCcYKkvlLaAGGgiTtvVIIiBURrjXxNnqfkKFQXaCVvfBbqGuAVkttTujJrmMpPzZRcNfvlhfFMRBgFtEeTBJNnyYLEFTtftdETLTtlmqQWHhPmMfFFRrzZfDyiIYUujJwWLRNSEeWwrBbBbOhHMmoxeEJPfFnoAaWidDIwOkQdoOjUnUubEJjUuEeVveEtTrOJJjfCcmjphHGqQgxFgGfqPpQGAaQnNkKdUufUunNlLhyYhVzsSZYYyfbOuUpPoTSzZFBbkDCcdCcbYyYykKgxXGGiJxXBbxXjrREepbBzGgIzZIEeOoOUtTHIiZHBSabAyLlYHwHkKIiEeJjXoreERBUcCnNuLxXlvMDirRoyPpvxXRtTDtjJvVYCdDwlLJdxXfPpOVvoOPplfBbsSdBhHfAaYYMYyRrzZmdDyeiXxREeZzmrRFqQkKkIHhibBYyZbanNyYxgcfFALlNuUBWpQqPeESVvWvVdDFfwDdkKxrRXXKkEerRaAxVhAuUaHQglhEqQOWuUwLlSsblLpPfJjvfEeFHhycCYcCqQdDfyYFIiwUCFUAajJufQYlJPpbPpCcLvVlAauUWEebBAphHBbhHYFRgGNgrRzgGRrFYrUuAWNndDjtTpoOtyYTrxXzZBYypPmMBbhVQqpQGaAgAxXaYycCqvTizLlZfGcrePmMpkKEDMJjBeiIEuEedDUuDdAaUbzIiZEDdxzmLlLlMCjgGaHymsTgGGenNEjJyLlbIZaMmAAamZzzZMKaJHhjCcsSJaduUDKeuUUuWZehebossSaAjzZJsSRQqUMlzpEepPHhPLlCLRrlzZrQNnHhEpPkyYKegGFoOmzZMLgtnNGcCLkdelpPiIjomMoOOwWNEexXGgKpqQPNlLKzZkPXxskKJMmYyjyeEjCfFcxXEjJnFfNWjDdJOoweYAjiMAdCcDZYyzlLavVtTmjlLbCcuUbmMjvoOYDdIZziysyYuUkKeIRriEgQqGtaipmMQqOtTpPoEVmMXxxXvQNEeLZdDzlJjbBroOsdHhkKDSRVvdxXDSDdSKnfFkWNnwtkCcCQqKkJjJuULlWeEzpPYyaeEeNuUoKkuILliUkkYyOBEGWwLlVYyvgeZRrCmMdogGOxXDvgMmtmMFfjYlVvzZulLbBAaUPpsMbBPIwhHfFoKkrPpRzZaAYDHAhOJjUFfeEuUoOdqVvpPEeyjMmHQnKkMmQqyYmMtTkjWwJEexXVHhvfRTGjcCJksSKgpVDuwWUdlLOXxoBbKkLRZLlzrlfAeWuUxXPsSpqQWzZwpPnNaAZzZzSsFeXxEfwzjCcxXJMTpaftTaAXxGgLgGHDtTvVhHdmMhlLAHrOofQTtNmIlLHGZPiuUcDdGGRrCIicziLatTUuubBbBzZFfjJRGMwfqoOknLlkaOoUBbEakKlLAVabBkKexXOqQqqVhHgGQMmJjkOoCdDaNnAyiPpIHZzhhXxBchHCUpPpIMmkuUXjJxtThyoOYHTRBlLwoJjOtsqQQqOoiISTdDWvXUuGuUgrRxLlVbxrRFfJiCcIqQSsyLldlyoOIifFYaVWDjJgGYyUYfiIgPBUuHNxmJjCccCLlcCMdDmRKbBZzzvujJYiIvGgMmpPZkKzbBAaWwqkbBBmMuUqQbYyKfLmovTtWwtUuThkqMhFeCcEnNfbBHMygjJGYmbBTkiRlLxlZSJjshEzZQqkALlkKIiaoNnCcdDeWwDvVlkKLJdDjdcCcCscMiIoHRrhsEzZeSmMwNnomDdMEeCAWiToAapLrXxqllLBbuUGlJjplvDdobenhKdzZDpyUuYwmDdmqOySsYWwzEIfbBFbAaBpPmZnpPtyYTNzhOoHoLjbBKLqQanNRaArUrgGLlJjRNozWwiZvBbVUusSzHsSBbjJwWsSZfYBpbBSsvWhHbBoMmCcpfFPWwOWsjJnNOoSTtfFwmzTFHVNZznvXxSTtsmMGCOjgpgYyGeEPGuUtiITJTBbFftgSsTtatYjoOipUnmLlGgAqQjyYRrJIFfpTtaAPxXSsiqQjzpIiPsSZTyYtudDdDUmVvLlNnKUTtukXhHsSxGFIiGiIgfeEFnuUlLGxdZzTRldDWwcYSGRtTKkcCjJrBbJQCfWpPpPwZjJyMmdDmgGMReELlHhrZNLldDsCcdDoOJgyZNnVHhBDdbIBnHhZFZzfzeEDxXbBfFdpXZlLktZaZXxzvOkQZzqhHEeEecCKUuaAdKkcCDoVWwGNnKkKkNngpwiIWPjqQRFfryRjJAaHrRegGoxXOxkoOKczZJnNqQbsJjSBjvVXfdDfFJfnNQfFIkKipPOZziIrZeEevVeEPpQyiIYwiIzmpPMMmmiIMqQeTtZzWGgwlxXqIrRiHhVUPpKkEOoEMmewWDdplLPpPnpwWKjJkvVAtTaqQWwpmMOoPDnNGtioIinNPuVNNnoOaiIAyWDDdGgHhRrdZVvxFqQnNPpkWwKSSkNaAdDnKwKfMyYbBmnNUHUaTOoIgNnGyDdYpPitTcZlyQyeiIRrSsZzEeNniwWIgvZiIfxXzGasZzaASTEIipEeERrHbBlLbBhrRePvOWwVvLpVDDMBbmddvPUAGgxpxdJbUuBjSsRLlrqzZwXxsSWoSwBbzZWrRVvYBvFnMFpbBiIPfGgrRNnmMDNXxSsnOonwWZzKkJjDdLGgltcSsfzZvVDGMmgBiWwfLlLmJiCcVvVgpPGvYtOoTyWwXMuUmLliznNZPpgGTsSaAHkVWjJIcCiwrhHRmpKTtkQCVvQoGmMbBIiuUuUdDhHvMmVljDdMkKcCXUsIiSNqBbMoAYyabrRBOIiNuEeULtTlbBNGgnQqStDvFOofWwWiIyiHhiIRYebTzZhVvEHUuheULlOmMmMobBMvVZzEelLmucCVrRhXozaKklLXxtPXxYyvVLlDdbBTnNqQiIXoOxmStqbjQyYYIozGgyYmMCndDeSsENjJEaBYyaAbzZDlLpCcoOQqSsGKCcNnpNvVYblLBygGlLosQqSdDOKFfkOJjYFrtTaAqKVvEeiMZzmsFfFfMgzQNbBRrtfFCcfhHFTtgGetZiqQIkQLJNXCcxKpUuPPTtpkUutTsSXxfFZOodnSsNXIoVvjBbbBBbWjJzZxyYXwFaAkWlVvbBLhHSsiVaxXAQqJjNnXxfFQqrRrDUDAaIKICclYygGjlxXLvjJyYiJxEUuUmMgGnNsrrRkuUKwZqQzheEHyDqQSioOIimMvrRVPpnNFfeAaRtHhLtGgwWMmRrwWfrlLEIieYyIiRfRstUukKHhHZzhoOGWwgDuUrRdjJoLldmMyYDFfOUuiSdDyYIlgyYGQqQXxuPpHPpBbhUfFqvQqnHOohaoCGgKLvHTKEhHekPpZzLGgCcdFhHfDeqnbNRXxrnnNCcJjjJBDduUKkYybpCUmMWwYyddDGqQfFgWXDdxpPTtDWgqLlQGwdwlDrRHhEepPdOXxokZJcHhCjGEegzAJjzZmMSsPkiJsSSoOsSsYypHGuUgRrrPuibcCOoISsiWXxvdDWRINhHnYyuUQqVvnCcNTdDtuSsmLLrRlgjMmJgGGxRdgGQCcRrqlxMmXLNnDWpPwxXJyYBbUkhHCchGgbBHlBbLOowKkMmUgEeCiaAkcCDWwddPpPpFfDxXZzGaAjJQjgXvVXcCxqQGVvnNgqQnlLNjaAPppPkmBxYyzZuHdDhUXbkJjypPYQIiIiddDDBbSwWsegYyJjGYyFmMfBCcbXxNQqLlbbBBODBgGwWFfoOXlLxhPpHMmbyYbnXxNWgGwutTUVkeEKQHYrREukjMSJiJjIBbkiRrWxTtXKsDOlLGTRmMDXxdPqQpzjhWwJWwUutuUXxJjJBbjStTeyYgGQqFGguBbSBbsJjwDDUJMvDbBGjJxXgfGgqQFdzZPjxQqUmMzZQqpPnNOoOoOpPZzOooKkNnCcaARUCcuhHMLOPpollWwcCskKlQqNtTLlIwWEzXxJoOjZloRrxzRdfFUEePGgMmqZRrqeETtTJfFjmMBVvzZcCIiWwZhbBHFfzMPpLlcwWuUCcHKkhVvbgGBCNofVTwvVWtdlgGksSGgKKUuoVNkKtRrWwPmfFCcWwqwWiIzXxZifFKjQqiIfVvFiDdIcufFUiIZzlLEGgbBDbBTteEGFEzZCcboaAqQAajJoKkzZOOrReEBCheErIsSiZzdDSmiIVvVRkKEUuesSGbBgJyAtWwTjDnKkkKWwPpKJjofQqFvVqEwWyYeDvqQVyTZzcftJjqFeEfQbBphXxYfFZDdsStTziIydDHlLXKkxWwXxvVeMoOmEvVyYOzZyYoNnmMflVqQvUuSsywWBbFfbNnhHdDBhlLeEHzZvMmbBVYLKpPATQMscCKDjFfJAJPciIYyKkCcCJjlTGguMaAjoKNnVDkanDdMnNmGgiCcWwmMHyYsSLlnNHLlPSsTdDEMmSCMmcsCceetTEKkOqQAaoDdRoOHaAhrztTaUKYypPkuAvVZgGqQXEFmDyYdHhEeBUeElLSJjsTwPpwWmCOocpvSsVzdDZLlPLteEILlmFwWfHhMiXxTdFfcljpPJZaVvAXxzcCkKIdyYDNLlxXVWwiIzZCckKvdxXKkNQAaNnIFfiAYZYLlSQjJTtfyYFItKkTeEevMLlmkKVESsiMmZzdxXKkqQTMmlLoyNLlnYlQRhHvaAEsxjtnNUZwqdDffkoQqOKCcnNtThHHQYyhHBbeSsEJjuGBbTxzzZwWoOdDPKlLkTtuKlLkrRHhyYLlxaSUusDAadjJaAEHhVvkKYyCsSXrRJFdDfunNqQVxJjzZRXAtROoZzmMrGgCcgGTKhqQrtTSsMTtprOoRjJfNnFPmLkKyaWwAuEPpePSspOoyiWwIJeEfFjmOooOHhMNzZQLVvqTtRCckwWmOWwogGuUHbqaKkAxYaAyiIEWwPKHhWsKkmSeEZwjJkKDFfdKkAaWwYyAgGinNDdIxHWwrrTtRmMRDqQYydeEOoFfuUzVqaAQwWvpEeulLuTwWtUAEeKONnokWwyUuYtjJTauJYyjNnFfmMepPyYIJjUbBEPXxyYVvRkutTUVMmjYzZgGZzFOYyBbofJtTgNnGuUbrRGJWbqGgQBwDdDSsnuUNHhoxXjvVJQBbqOUuvstTShHzZSsvhHVFwWFgGfUljJtTLEVhHvEeGgLNFfexXEGIigTkKQvVIfFHhVvrRFlAaKwWkLvQuEeMGxXtTeEgmQCcaAqXnNxwWcCjJjGggGHjJsSkIisKkLHhowWQqOTgtnNxvVmxXMsSQxXFfMXxzZTtfEKgGMmkjDdJeWslLSlLGMzjrhHRgjJGPpBzZIiRaUoOuAItDJvVjVCcyYjJYyvlLvYyVnGgAakKSsbBAavTtFRzZrDdMIAqQlLWwKkapPimpPnkKRmbFfBiILlaLlDudDrRlLtMQFfVeEvquUulLfVvFPxXppPUUaAzPAabBLEtTewWlpcCcCilhHLPpfFfKkFMtQqEehFfEepPHTtvKkVWLlhNOyTtYahozTtjJZGSsgwyqWwocYDdyCOQYxlLXTsgGdDBbFUuUufUBbtBbTuUuYyDdRrgGZBbzZzJdDfYyJjYqQpOoPviIVhHAaArROoXxsuUSaicCIBxvVzZzOtgJjGBeEUuIyKkYbBixXJjWxXLlsSeEaAsOomMMmLlphHMsSwWUumDdPSrRwqFvVyYqgGQdhUmclLxXCMhHPpuNnaGgAvsShHVHSgGsQHhqegpbBfFPwNHqQhlLxDnNdGxrDdRDdGgowWOUSspPuvVXnNJjaoOYyAtTINXxJvaBbjJxXASJjJFMmfwRKXxQqakKAVvkEExOeEMvSsFfVmoBJSJjmAKIikWOoWIiwwWwKIiULfIiFzxRpPpqQPQUlLIiKjZzJudDyYIiaAiIWEezZLYSAasdDybBcCxYyRrZnNzpPcCgGwLlLlTtWGgvVYyXiIuUkfOoXxCZzcOuoOUoHWwvyRoOEeHhFfNnwWGCcQhHKkquAaVZzZDZzdYyCckKjJCcoOzIiqQSNhHnyaAlnNLYcqQBbMYynNqQkKmsSCnIiiIcCYFfyyYYyQqNPMmLaASsiIlGYoYyOdDnDdhHeENTtWjMmSsFWwMmfFMmfxJjfFFfWsiQqISDXxPpZzdMmFfMmlLvIiCUuceEYaEZPpzdBbgGDPpqzZQGIigGgoODMmMmdmJxXjMBbAayQqIjtTJJjiQqwMmyFfYOyuIhHiUuLgwWWiIwcMmqVvQCNnwWdDcsoOorRbuSsSsySCcsRZkVvwyYBPpHkmMKUuRriPpUuICLNnlcGgAFfaLlpfmMYyFJMfFuUZzEewrOYyoRhHLlYyxXGghHWxNnXnNcCwWRrZpPPpzLlyYbBDdDyeEtTYWhHwXNnxKkVvHhZzlfFFYyyeyYGtAKkaekEoOeKPgtwWTIqIwAaWmMKCckSbBqQSsoOVvsLJjlxuUHhVvhAaHLFmLAUqQuiLlolLOtTveVvdDQUucCpPLDdZzFGgrnNgxXGkKfFUuHhcCwjJWZzRHhKkxIKkulIiKNwuUvVWHhPpEekNhHndoODDdDderREtIiWbAafFniINSQqsBFfGgNPdDBbuWwvVqQUuUlLYJjypKkRrkrRQqLlpPTfFtAaKkrsSEzkKZowWOiIuUGglLQktTKqGgaANhHsSpPaAnenwzZWnNTyYxmnNMXNnBbFepPEFfCdDcdbdDKtTkYyzZrzZRTtGgGgJoMmOBbjXbBmZzMxgEePuZzNxOoXaAsSTXxtiFfOaAotykhHAiIOoPpaWrRmMwDdyYGgnNnRcChHblLxXBSsTthVLIaAilQqOoUuveuGgJjTtwWbBWolLsAaSOOoKPpwWqQkDLfFlzZdKknNfFPpSsPpkSsHhTvVtHhzZKXCcnNMmcCxxXHdDkTtxXiIwFXxqOorRsSzZgCeEcGoOsNnMmmmMXCcyjZMKkmzIiJYlFfhzZAdDwWaZzHJjLfFSsEetTxdXRrxDQqdDsVvCdDcAaYtbBXxyfFBbYfFOoqRrQTUuSsjjJKbBVvBbAaztTnNIxsFfSXpuFfVuujXxRyYulLVvsdDSxABbuRrEeKzZhpvVPAaHydUupPDgGeEJjDdztTHfBbgGVvMCyYvKkuFfUVfFcQQzZeEjiIUWdhDOjMmJzZbaAUuaAEeVSaAsvteEwKkDdKUpPHhaWzZcTDNndtCrCZzmgGMcfSsPpFWwlSsLfjqQQHhoOsSYrRfTteEFyYcCykKsbBgGSLUulqiNnIdDqgyYGHluULYyhIiZXAlXKkLyYkKlJjmMVvXrRxSwWsxTYWciICwytfFLMkKZMmyjfFJhHRrWwYdDfzZFSjnRTXxtnNeOhHoYybBEHhTtnNZzunNRZzVvrFoOfRziIbBYyZrRuevVAZzqQeEBbQNnqawWHoOhFftTaADyYFBbfaAdZxwGMmSsdDZzGCclDdLxXOokuTtuUBqTtHhOoUunYqQlYYVvUuKkyBbQgLhHgGlAWwsSGNngaBFfbtFfkSsKISsiNnTtjQqJaTdwvVWjJCcErREeUucuZvNnEGgeIigGqQsIsqOqQoQoTtbBBbObBuUNwWkKrReEegGEhHuSsyYtUuAjJakKfRrCcFdvVHtThDPpkLMmlKTRcVtTvxxJjoGgQuhHUUuglLGnLlORrcaACaAoNnNbBHhWkKZrRzAawxXsSyYhHqxvtTVPpIcEeCBbBbkTFftashHACcPpKklLuUabmMBhMmBbBcCHcCFeIiLlEVvqfFeEkKeEQRrEeIiUkKOQqoAyYYydDMRUuXOvVoxmNhHniIBDJjPMmppPFWwVmQeEqMqQBboOnEaAoaAOiWWEzZekYhHyoOdbBDqlLbGgXPpxDWwsIiRrEeTtbBiISyYGAXxBbdDacqQFbBfiIGjJdDDdgZzxXUcCaJzZLljAuewAaWwyVvzGNMtDdRcCrfiOoOyIiYoDdyIiYIovyaMmfVfFQAaVSsvpFluULKklLyqQJjuUvVqdDopJjEePOcFfzYyYysSZLlqQfFoHqjJQkYLlyuUWlfFLVMdDmtTLlHVuUAdTtfujJUFcIiCwPpWrRdDvVeYyexXEgGyMmwcsxXTtDdQQqsSqnNzZSsSMIimFfYZiIUuHhHEDYydEaAqQitYyTHhrRLcIiWbBwChHQMmqyXxnqQNEekyYCiIcdDeBbaYyAEcCncCoUuvVOeEoObBxnNsIiPAaplLXEJjiIehHxddcCdaAJjhHgSsFfjJjHWwTvVtAagGJjhiIIiSswHhYyrbBRPOosSvVhHOEeGEeDdvnNfycCYFvAabBqQyMWwPDdtBbgpQLTtvVTwWtlLlLUVOHhoOoOonNSxXGgwWVvEeWwNnGgFfNnCcQqnQqwgyYGWGwWgDduUKkhuUMmNnHNXZzOoRrXxrvVqQaAuUNdVviIDcCIfFiZImMizkKnBbBOobRFfyNbSsaABbAaGgBJkOhAavVFfHoybBcCGiIpoOxXVvXxWuUoOwRjAJwWlRrLsyTtEeYCcBbQpPqjJMmQgbOsLYylSoCcqQBgGUBLlDdiwWfFZWwzfFIqwWQbTHhtBwWlmMFfLgBbGLlDdKkhHBWwWwHhHCcBbFwWPhHMmJOorRTtjpbUBbujJWwBymMSsFfKkjJgGTzZWMmppPLUulGNnhzZYdDEeLlGCOocgnTyWwDdYLlNnFEONxXJgGjnHhRroeyyYPpsSlLBbFyYLlzZfKmMhNPaZzpPARrpRrRyYkKMmUwWurAaaALlyYVvfFOXxoUuDdmMQsSvaAYyFVGgsSvumMrIiRzBbZUfiWoOwIoOpfFCcPTGghHXxotTOtBYybMmfFwWQqdDSLlzZsXAPpqLldgGrRHrosBbSOtTRhwWDkKDnNhgGWjJVvwFfDdFfVPpvTtoOgFQqYQqzZOoCcyJjJxlLXLlqRvDdVRrrtTbBCcfFYyPpXxWwtTxXvVUuAabBNKtTMmkvVxXEHhzZTtRregWwYyGjKXxhHkJjwfFKkQBbsxXryYHhfFRyYSFfmMxvVHhKktTjJCcYyZcpPNKfFUugGMmvpPMmVvEvVewWpxeEBbbhHdDDdDdBXtjJTeEZzPNCctTadDFfAnjAaJUurzZRHhphHtThjtHhhHtTTNvcCVlmMLnNbBSkZaAHhzwlLGgFfnNJYyyYjJjJjgKkGzZPQVvwLlVvXxjJZteETgAaGDdWwzGKUuYyUneEehHMVMmvmQqMOoNmMIiUDCcjJoOdhHunwSFfaLlSsVzZvACcuUMiIPoWEewHhWIiwVvOgGyYYXxOnNoyTtpnNZOaAxKkTtMzZmIvVmMstTSWwPpBbgGiXLoOlBbosSzWbtTBwyncCNJhHcCjjEeSsHfjJbBFhJZzIiTtvgNnGeEVpZzthYyhBbHkKxXHKkrRTmnNxEeOokKbmmMTtMgGBXMTtpPWwKwWkJjLlPBOoiIbYGgXrRxrRmewWEMCcTRrpPPptMPpmXxYFaTtAfQJOsSoZzjqSsmhQqHMSschHeECylLxXYdLAadDvVlqQqQqQDMsSmRrEKkekOomMhHsZzpPUuUuonNXxjJOSAPpasdDSKJtTRrjhHKkCdPpsSPlKkLpDTLMmYyCcIAaicCeplLsSnpPNPEtFfTLlJjYkIiKyjPphPpXxuUyYYNEeMmmWwhHZzMvYydBbDVkKZzAHpPhnNPpXJjHvVHhKqQOcCotTMmhHkhkmMjJCNnczNnpaADdUuPZIiKaAXZBVjJvbpPvVRryYSsNdGrfNnezTtZEFRwjJduuxXUjJUXZLlzWwxKXxWpPbkKsSBwkiIlLDSsgleEWwuULEMEemsmyYMfkTtKFroTtORkKsSSrRfFeGoOxbBXSsYazbBeEZASnNsXotTOYyxnNSsJOBYybZztTNnyYYykXxXVvxNnmMOBbTASyYINnisauHhUtoxpPXNnxTtnNzZcHhCcCLlXIATtabBAaYyYyqQilkKWCcEFfewsXxSdnUlLuRrNZzqQDOpPoMEexXEesScCWwBiiidDIdDIHhpPHhIyqNnsSQFEeHnNhBbfYbmDdnNuUaAvrRsSVvVaDdRsSrcDdIiCAtTdmMOombBLlMwgGWqQTnoOwWsSaAWFSsfwNyYijQqSsJvVrROokKIlajJAyYkjJOoKbFmMfDdqQJRrztTLBblPpqQZTaQqZCczAXxclLOMmoHHXxhjJoOhnNMmLcCcfyYFCgGlNfFnCHsxXczZCShpPVKkvtdXxYySspPYyEEejJSsNzZkMmKwWnVUukiIKvEeVGSsZzdDwGWwgWgpPXSsZzxRPprQlNnLiIMmPqWCcwTtnNQNvRrVGkKgcCQgBbGysSYqCcpvVPDbBWwuUeAgGDdanhHgGRrNEHbEZSAaszeCcBhcCdlOoadDAWSswLZWwzFSsjJcXvVYmQqGgfFsSxiIXJjoOMlSsLwEeRrJjkKrIiuURWWQqPjTtCcBbodDJrRjIQrRqXxtTxcCXcCjRrpgGPJJlLjNiIgGaAuUqgGQfFcumMPhHpUCZzpPlLYyvVaAAarRgGWwukKBbUwWiItcCNnTvVmeEMMmuzDdpPZWwaAsUuSUngKktbXxBKkqQkKXQqGEegAyYAakKwWanVxXvTQqtHhwWRFoOlLLlgGXxoOfZvBbsxXovsSVJoOLljOoOlLRrSJNypYyPHhyzZYYWBbdDoOraAqQRwqKkQVvnjeEOoSPtQqTNnpIisbOoBJjTLlwWJjYSXxsGgyOosRNnNnndDNsSIqQkeEKiHhIiPphPpHrRkQqKTtuUcCVvkGSUupPsSXGgmMZzYyxIGdDgiEesHhgKxXFpPfhaARrPpEKkQqeHQWwqTgGdDtHjvVJKTtsqoJjOnNbBQiIuUSHhzZkDdSGgJjwOoWqQCsScMmVJjrRaASBbZzdDsvrEqQtLlTeGLlQqDiAloOnNLaoiIOfFYyIfFdgUfjWwTzMmZtJMmFJKkHhdDNzZnjJjbwJmMYyjTrRtWlLOoXXxnMmDSeEHhsdNmMVvDdxBvVyYPVUuvBbLleEOofFNnrRgGMmlLgGpgGjNgGvVwWnzZtTeJjXFWJjHhwfgGXxxzZVTtzvVZwWLlWwvVsSvWwgGrRpPtrRoOTEZzpFwWfPvVISwWsiTaAtYGgoDdLlOyQPHhdDCcpBjXxJbPZgGzpZzqtTOokKOoSsJiBbAaIgGssmMmMSSYyaNNnwWnEQVFfeWwEvpPAavVHhmXxbyYiIfrRFYANnGZzKkgLOolsSaVAIiaYysOouUPpxXQQqqwWQqrcCRMmPVvxXpSbWwOoAaBvPpsjJdDSgKkRrSGjpPJgJjSssGgSsUhHwWuMmAazZzZQzZlSsAaNnuFfUaALqbpPmMYyWwMmBvhHzZVXxXqyYQyYdDqQPpdDxZzhHRLxXlxXEemqQMIirRAaHhTGVFfvgvBbAaFflLvVVHhrRHhRQqsSrRrEYyUXxueVNxXnGgKpPkPpvCcttTPpryYoOGNTtUuQqIiTtEVvIieXxYyxXEiIvCcKkTbBtlaALniIzZNVvVeDdWNnziIZgzZGjGgTtJwHpfyYPpFPGghdhHSsJAajPrvVSsRpDKbzZBknwWyYiLlqQwUcCuWWKkwzZiIITtDdApPacAPRruUyqfFVvQYpcCZiUuAaIpPEqQoySsNnmMYfjJwWFZdDNnLlAalLOnNozoIOovVwWiUjhHJuVvXxlLCcJaAjCcOoVvCciGgIpqlbBLZDdzzZQgpPGwqaXxKkAjBbJmMQUukYJjaZznpPlLNrRALHhaAlBbbBPpywWiIQqsSKIioTtoOOzbdDvDdVBiFfSsjeEGUugzZJEeHhuUmMlfFSsBbRrvVyyYoOYdavVCUucWwADvVtTeEuUJjJHlLhjJrRjVEeYyRKkrFfWwDdRriIAQsSqHhaLMgGmYySszZsgcCGKoOkSBbljJFUufbBbBbBJjHhXxyYEeERKkBbIivVoOeErAaUuJjGgQqFfxXtTRwWwWrxXOoLVwHhWvGgYynNvJjSsmMhHjabBAJYyQqdxXpPDmrGgJlLjRMRwWrVxUEeuXDdDdRYyxXcCTthZzHUukoBbOiIVyFfYvgUuHhsSGvVjuUJVFfvzpPqgGQjJUuxEejJJsSFfUtTujqQkSsKhBrRbNyYZznjiIEcRrQnNqZzNnCeBbJHPpaSiIsATtaPZPpgGzyYlLyyrRvgGVLhHXxzZlYKVvhPpHpPIikMfFFLlfJLRrHWwGjJgegGCrRcEPLlNaAnpPpCsSdbBDIvVluUSsLiJuUSDdsjcGgMmuUvasSbBaAAIiUuTfFnNtHnNhNxXnFfRroOVniINhRqQrwWWwvqQvmMDdLlCcuFfUzZVVBboXxRrOlIimdDYyMtTUuJKktNNnnbBsmMEeSTwelLEWjVvWzZLlwobBpPIijJdDYyKkOWUuwJjyYAaxXxXIfFizZnNEVnNpPvQRrqeQnNMmqghHcXxXxCWwlLGTIAaUuTttTitltiIvVWwIiTAarRZzQNnoOqxXlLsSmMiOosSEegGQqdeEjJKkuUKkCaAKkCcbBcHfFeEhSseEPVvKklLYyGgpDdcCtSsglLrTtRGPphHNnuUfFeAaEnNWwNnPPpOokKcCCcmtTsSGPpgMa diff --git a/inputs/6.txt b/inputs/6.txt deleted file mode 100644 index e544bbd..0000000 --- a/inputs/6.txt +++ /dev/null @@ -1,50 +0,0 @@ -195, 221 -132, 132 -333, 192 -75, 354 -162, 227 -150, 108 -46, 40 -209, 92 -153, 341 -83, 128 -256, 295 -311, 114 -310, 237 -99, 240 -180, 337 -332, 176 -212, 183 -84, 61 -275, 341 -155, 89 -169, 208 -105, 78 -151, 318 -92, 74 -146, 303 -184, 224 -285, 348 -138, 163 -216, 61 -277, 270 -130, 155 -297, 102 -197, 217 -72, 276 -299, 89 -357, 234 -136, 342 -346, 221 -110, 188 -82, 183 -271, 210 -46, 198 -240, 286 -128, 95 -111, 309 -108, 54 -258, 305 -241, 157 -117, 162 -96, 301 diff --git a/inputs/7.txt b/inputs/7.txt deleted file mode 100644 index 3fe80cb..0000000 --- a/inputs/7.txt +++ /dev/null @@ -1,101 +0,0 @@ -Step E must be finished before step Y can begin. -Step Y must be finished before step T can begin. -Step I must be finished before step C can begin. -Step G must be finished before step F can begin. -Step C must be finished before step P can begin. -Step B must be finished before step Q can begin. -Step Z must be finished before step N can begin. -Step J must be finished before step W can begin. -Step W must be finished before step P can begin. -Step K must be finished before step D can begin. -Step Q must be finished before step L can begin. -Step V must be finished before step D can begin. -Step O must be finished before step M can begin. -Step A must be finished before step P can begin. -Step M must be finished before step L can begin. -Step R must be finished before step S can begin. -Step D must be finished before step X can begin. -Step X must be finished before step N can begin. -Step P must be finished before step T can begin. -Step F must be finished before step N can begin. -Step S must be finished before step L can begin. -Step U must be finished before step N can begin. -Step T must be finished before step L can begin. -Step N must be finished before step H can begin. -Step L must be finished before step H can begin. -Step N must be finished before step L can begin. -Step X must be finished before step F can begin. -Step P must be finished before step F can begin. -Step P must be finished before step H can begin. -Step B must be finished before step D can begin. -Step V must be finished before step H can begin. -Step X must be finished before step S can begin. -Step Q must be finished before step O can begin. -Step Z must be finished before step T can begin. -Step K must be finished before step N can begin. -Step S must be finished before step H can begin. -Step M must be finished before step P can begin. -Step Q must be finished before step D can begin. -Step R must be finished before step U can begin. -Step J must be finished before step P can begin. -Step P must be finished before step S can begin. -Step V must be finished before step U can begin. -Step R must be finished before step T can begin. -Step F must be finished before step S can begin. -Step D must be finished before step T can begin. -Step E must be finished before step N can begin. -Step J must be finished before step N can begin. -Step J must be finished before step A can begin. -Step K must be finished before step U can begin. -Step V must be finished before step N can begin. -Step V must be finished before step S can begin. -Step U must be finished before step L can begin. -Step F must be finished before step U can begin. -Step I must be finished before step T can begin. -Step J must be finished before step L can begin. -Step E must be finished before step T can begin. -Step T must be finished before step N can begin. -Step I must be finished before step G can begin. -Step R must be finished before step D can begin. -Step E must be finished before step B can begin. -Step X must be finished before step H can begin. -Step P must be finished before step L can begin. -Step Z must be finished before step J can begin. -Step O must be finished before step L can begin. -Step E must be finished before step H can begin. -Step F must be finished before step T can begin. -Step A must be finished before step F can begin. -Step U must be finished before step H can begin. -Step F must be finished before step H can begin. -Step C must be finished before step W can begin. -Step A must be finished before step L can begin. -Step V must be finished before step M can begin. -Step U must be finished before step T can begin. -Step E must be finished before step P can begin. -Step Y must be finished before step U can begin. -Step W must be finished before step R can begin. -Step E must be finished before step X can begin. -Step Q must be finished before step U can begin. -Step I must be finished before step F can begin. -Step V must be finished before step F can begin. -Step V must be finished before step T can begin. -Step R must be finished before step P can begin. -Step B must be finished before step A can begin. -Step S must be finished before step T can begin. -Step M must be finished before step F can begin. -Step Y must be finished before step F can begin. -Step C must be finished before step K can begin. -Step D must be finished before step S can begin. -Step O must be finished before step S can begin. -Step M must be finished before step U can begin. -Step Z must be finished before step S can begin. -Step R must be finished before step H can begin. -Step C must be finished before step O can begin. -Step G must be finished before step Q can begin. -Step Z must be finished before step D can begin. -Step B must be finished before step N can begin. -Step I must be finished before step H can begin. -Step I must be finished before step P can begin. -Step E must be finished before step J can begin. -Step V must be finished before step L can begin. -Step B must be finished before step U can begin. diff --git a/inputs/8.txt b/inputs/8.txt deleted file mode 100644 index ecb2263..0000000 --- a/inputs/8.txt +++ /dev/null @@ -1 +0,0 @@ -8 11 7 2 4 4 3 6 1 5 0 8 1 6 1 1 5 4 7 3 1 2 3 1 1 1 5 0 9 9 5 2 8 7 5 7 1 4 2 2 1 1 3 1 6 0 8 6 1 8 1 1 5 4 1 3 3 3 1 3 3 1 4 1 2 2 3 3 4 1 9 0 10 1 9 5 2 6 5 6 5 7 1 2 3 1 3 3 2 3 1 1 1 7 0 11 2 5 1 1 8 4 9 1 5 4 7 3 1 3 3 1 1 3 1 7 0 8 5 2 7 8 5 4 1 1 1 1 3 2 1 3 2 3 3 3 2 3 7 1 8 0 9 2 5 4 6 7 2 9 2 1 3 1 3 3 2 1 2 2 1 5 0 9 1 1 6 1 4 2 9 4 3 1 1 2 1 3 1 6 0 9 7 2 9 4 4 5 1 8 6 1 3 1 3 1 1 5 3 3 4 4 3 4 3 7 1 6 0 11 1 3 1 1 1 7 3 8 2 1 6 1 2 1 3 1 1 1 9 0 7 7 2 1 8 1 9 8 2 1 1 3 1 1 3 1 2 1 7 0 8 5 7 1 9 7 6 5 3 1 1 1 2 2 2 2 2 2 1 2 3 2 4 1 4 1 2 5 5 3 4 1 8 0 9 1 3 7 1 2 1 3 9 8 3 1 1 3 3 2 3 1 1 6 0 7 2 4 2 6 8 1 6 2 1 1 3 3 2 1 5 0 10 1 6 6 9 7 8 4 4 9 7 1 2 1 2 3 1 1 4 4 3 6 1 6 0 10 1 7 2 8 1 6 9 3 6 7 2 2 1 3 1 3 1 8 0 8 1 8 9 7 6 1 3 4 1 1 3 2 2 3 2 2 1 6 0 8 1 8 2 3 9 5 1 6 2 1 2 1 2 1 4 2 3 5 5 5 3 4 1 6 0 10 5 7 6 5 7 1 7 4 1 5 1 1 3 2 2 3 1 8 0 7 7 1 8 1 6 4 3 3 3 2 1 3 2 1 1 1 7 0 10 6 1 1 5 9 3 2 3 3 9 3 3 3 1 1 1 1 1 2 1 1 3 5 1 8 0 11 1 3 1 6 6 6 5 1 5 1 6 2 1 3 1 3 2 1 2 1 8 0 6 1 1 2 1 9 9 1 3 1 2 2 3 1 2 1 6 0 9 8 4 2 8 8 7 1 8 1 1 2 2 1 1 2 5 1 1 4 2 3 6 1 8 0 8 4 1 8 1 3 6 9 8 3 1 2 1 3 2 3 1 1 6 0 7 9 1 6 4 9 4 6 1 3 1 1 1 3 1 8 0 7 5 4 1 5 7 1 8 2 1 1 2 2 2 1 2 1 2 1 1 4 4 2 2 3 3 2 4 4 3 7 1 9 0 8 3 3 7 1 1 5 3 3 2 2 1 1 2 1 2 3 1 1 9 0 8 5 9 8 9 4 4 8 1 1 3 2 3 2 1 1 1 1 1 9 0 8 3 6 5 1 8 4 5 2 1 1 3 2 2 1 1 1 3 1 1 5 5 5 5 1 3 4 1 8 0 8 8 5 8 6 7 1 3 5 1 2 3 1 2 3 2 1 1 8 0 9 4 2 8 6 6 2 2 1 2 3 1 1 1 1 3 1 3 1 6 0 7 5 4 4 2 2 2 1 1 1 2 3 1 1 5 5 2 3 3 6 1 8 0 6 1 5 6 4 3 8 1 3 2 1 2 3 2 1 1 6 0 11 7 1 3 7 3 5 3 9 1 5 6 3 2 1 1 1 1 1 7 0 8 7 6 2 8 5 1 3 4 3 2 1 3 2 2 2 1 4 5 4 2 1 3 4 1 6 0 11 7 4 1 1 8 4 6 3 9 2 8 1 1 3 3 3 1 1 8 0 7 1 4 9 2 1 4 6 1 2 2 3 1 3 3 3 1 6 0 8 7 6 2 1 8 4 8 7 2 1 3 1 3 2 2 1 5 3 4 4 4 4 5 4 3 4 1 7 0 10 1 3 1 7 1 1 7 9 5 7 1 2 1 1 3 3 1 1 6 0 11 4 1 7 7 2 4 6 1 7 8 3 1 1 2 1 3 2 1 9 0 9 6 2 9 1 9 9 5 6 1 2 2 1 2 3 3 3 1 3 2 2 2 1 3 5 1 8 0 11 4 8 7 1 3 2 3 6 1 3 9 2 1 2 3 3 2 1 3 1 8 0 6 4 4 3 6 1 2 1 3 3 1 3 2 2 1 1 9 0 10 7 5 1 7 6 1 3 6 6 6 3 3 2 1 1 2 1 1 2 3 1 2 5 5 3 6 1 9 0 10 9 9 2 1 6 4 4 4 1 2 1 2 1 1 3 3 1 1 1 1 6 0 8 1 4 6 1 4 5 8 6 2 1 2 1 1 1 1 7 0 7 3 9 1 1 1 1 1 1 3 1 3 1 3 3 3 3 5 4 2 2 3 5 1 5 0 8 7 6 5 7 1 9 4 5 1 2 1 2 1 1 8 0 10 5 3 2 8 3 6 1 7 9 1 1 3 1 1 2 1 3 2 1 6 0 10 2 6 1 6 9 9 7 6 1 4 2 1 2 3 2 1 5 4 3 1 2 3 4 1 5 0 10 6 2 1 7 1 1 7 5 1 8 1 1 1 1 1 1 7 0 6 1 3 7 4 7 1 3 2 3 1 1 1 1 1 5 0 8 6 5 1 4 4 1 7 2 2 1 2 3 1 3 4 2 5 2 4 6 5 5 4 3 7 1 9 0 6 4 4 1 8 4 1 1 3 1 2 2 2 1 3 1 1 5 0 8 1 3 2 8 1 5 5 5 3 2 3 3 1 1 6 0 7 2 1 8 7 2 7 8 1 2 2 2 3 3 3 5 4 2 5 5 4 3 7 1 6 0 10 6 7 5 1 7 7 5 1 9 1 2 3 1 3 2 2 1 6 0 7 8 6 4 5 6 5 1 2 3 1 1 3 2 1 7 0 7 9 1 1 1 6 3 9 2 1 3 2 2 1 2 2 5 1 4 3 5 1 3 7 1 6 0 7 4 6 1 5 3 1 3 1 3 2 1 1 1 1 9 0 9 1 3 8 4 5 7 9 2 5 3 3 2 1 3 1 2 3 1 1 9 0 8 2 5 6 1 5 5 1 8 2 3 1 2 1 1 2 3 1 3 4 1 2 4 3 2 3 7 1 5 0 9 4 8 1 8 7 1 1 7 6 1 2 1 3 2 1 8 0 8 8 3 5 4 1 3 3 3 1 1 2 1 2 1 1 2 1 5 0 8 1 5 7 8 5 7 3 5 3 3 1 2 1 2 2 5 4 3 5 1 3 6 1 5 0 10 8 6 1 6 7 3 4 2 1 7 2 2 1 2 3 1 5 0 7 4 2 9 1 3 5 1 3 3 3 1 1 1 5 0 11 7 8 2 5 9 5 2 2 5 1 7 1 3 1 1 1 2 4 1 3 4 2 7 3 5 2 5 3 3 5 1 9 0 11 6 2 2 1 7 8 4 6 8 9 1 2 3 1 1 1 1 3 3 3 1 5 0 11 3 4 8 3 9 1 2 5 4 1 2 2 1 1 3 3 1 8 0 6 2 1 2 8 1 1 3 2 1 2 3 2 1 2 1 3 3 3 4 3 4 1 8 0 9 9 8 4 1 3 6 4 1 3 1 2 2 1 2 2 2 1 1 8 0 8 1 9 1 1 7 2 1 5 1 3 2 1 1 2 1 3 1 7 0 6 1 8 7 8 5 4 1 3 2 2 2 1 2 3 5 1 2 3 4 1 9 0 6 1 1 2 7 2 8 2 3 3 3 2 1 3 1 3 1 6 0 9 9 7 7 3 8 5 2 6 1 1 3 1 1 3 2 1 7 0 8 5 4 5 1 7 3 8 1 2 3 1 3 1 3 3 2 3 3 3 3 6 1 6 0 6 1 1 1 6 6 3 2 3 3 2 3 1 1 9 0 10 6 6 9 5 9 2 9 7 6 1 1 1 2 2 3 1 1 1 2 1 5 0 10 4 1 7 4 2 8 3 3 7 3 3 1 3 1 2 2 3 5 2 3 3 3 4 1 6 0 8 4 3 7 7 5 2 4 1 1 1 3 3 1 1 1 8 0 10 5 9 8 3 9 1 1 8 4 7 1 1 3 3 1 2 3 3 1 8 0 8 4 9 1 1 9 4 6 3 1 1 1 1 1 1 3 1 3 2 2 3 3 7 5 4 5 3 5 1 8 0 7 1 6 1 8 5 9 2 2 1 3 3 3 1 3 1 1 5 0 9 3 6 2 2 4 1 4 1 7 1 2 2 1 2 1 9 0 6 4 7 1 1 1 8 2 1 1 1 2 1 2 2 1 4 3 2 4 5 3 6 1 7 0 10 3 2 6 2 1 5 7 8 9 5 1 2 1 3 2 2 3 1 7 0 6 3 6 6 1 4 6 1 1 1 3 2 1 3 1 7 0 9 6 1 3 1 3 8 5 9 4 1 2 2 2 1 1 3 2 3 2 1 2 3 3 4 1 5 0 11 1 3 8 7 7 7 7 2 2 3 1 3 1 1 1 2 1 9 0 10 4 5 1 3 2 8 8 8 3 9 3 1 1 2 3 1 2 2 3 1 7 0 6 6 3 1 3 2 4 3 1 3 1 3 3 2 2 1 3 4 3 5 1 5 0 10 7 8 5 2 3 3 7 1 6 6 1 1 3 1 1 1 9 0 8 5 1 6 1 2 7 4 3 1 3 2 2 1 3 2 2 3 1 9 0 8 9 8 1 4 4 9 3 8 3 2 3 2 1 1 1 1 1 4 4 4 3 1 4 4 6 5 3 5 5 6 3 5 5 3 5 1 6 0 11 8 3 8 1 1 1 6 6 7 5 6 2 3 1 1 3 2 1 9 0 7 4 1 2 1 8 1 2 1 1 1 2 3 3 3 2 2 1 7 0 7 5 6 4 7 3 1 1 1 2 1 2 1 2 2 4 4 1 3 2 3 5 1 9 0 8 5 8 2 3 6 1 9 9 3 1 3 1 3 1 2 3 2 1 8 0 10 2 7 5 2 2 1 5 1 7 9 1 1 3 2 3 1 2 2 1 8 0 8 8 7 5 9 9 8 1 1 1 1 2 1 1 1 2 2 2 2 2 2 2 3 5 1 7 0 11 7 2 2 5 7 1 4 9 4 6 4 2 3 3 2 3 2 1 1 9 0 7 1 3 3 5 2 1 9 3 1 1 2 3 1 3 3 2 1 7 0 10 1 7 6 1 9 3 6 2 4 4 1 1 1 2 2 3 3 2 2 1 2 1 3 4 1 9 0 7 3 6 9 6 7 1 3 1 2 1 2 1 1 1 2 1 1 8 0 10 1 3 9 1 3 8 7 6 6 4 2 2 1 3 2 1 1 1 1 5 0 6 9 8 1 3 5 4 2 2 3 1 3 5 2 3 5 3 4 1 7 0 9 2 9 6 9 1 2 9 2 2 3 1 1 3 3 2 2 1 6 0 11 9 7 3 4 2 9 5 1 6 5 4 3 1 2 3 1 3 1 6 0 7 5 9 3 9 1 1 6 1 1 3 2 3 3 2 3 3 4 6 5 3 5 4 5 3 3 5 1 7 0 6 9 1 6 2 1 6 1 1 3 2 3 3 1 1 7 0 10 6 1 2 9 7 1 8 5 9 1 1 3 2 3 1 2 2 1 7 0 11 2 6 4 4 1 2 2 5 6 2 8 1 3 3 1 3 2 3 4 1 1 5 4 3 4 1 8 0 7 1 6 5 8 5 8 9 1 2 3 3 3 1 2 1 1 5 0 8 3 5 2 4 1 9 4 5 3 1 2 3 3 1 9 0 9 9 2 1 7 2 9 8 5 1 3 1 3 2 2 1 2 1 2 4 3 4 1 3 5 1 9 0 10 5 5 6 1 5 5 6 1 3 7 2 1 1 1 1 1 2 1 2 1 5 0 6 1 5 7 2 3 9 1 2 3 2 3 1 7 0 10 7 8 4 8 9 8 2 1 2 5 1 2 2 1 2 3 3 3 4 4 1 3 3 4 1 8 0 6 3 4 7 1 3 1 3 3 1 3 2 3 3 3 1 5 0 7 6 2 7 4 3 1 1 1 2 3 2 1 1 5 0 8 1 1 4 5 6 3 5 7 3 1 1 3 2 3 1 5 2 3 6 1 6 0 10 1 8 1 1 2 2 5 5 1 3 2 1 1 1 3 1 1 6 0 8 4 2 1 7 7 8 8 5 1 3 1 2 1 1 1 9 0 7 5 8 3 6 1 7 5 3 3 1 2 1 2 3 3 2 5 5 5 2 1 1 2 4 5 4 4 3 5 1 9 0 8 2 1 8 2 4 1 3 4 1 3 2 1 2 1 1 2 2 1 9 0 6 8 8 1 8 8 6 1 1 1 2 1 3 2 2 1 1 7 0 7 7 8 1 8 7 7 8 1 1 1 1 1 3 3 3 5 2 5 2 3 6 1 9 0 8 9 2 8 3 4 7 1 1 1 3 3 3 2 1 2 3 1 1 6 0 7 2 1 9 4 1 3 1 1 2 3 1 2 2 1 5 0 9 8 2 2 7 3 4 1 6 3 1 2 2 1 2 4 3 1 2 1 5 3 7 1 8 0 7 1 6 2 5 3 8 3 2 1 1 1 1 2 3 1 1 8 0 10 5 2 1 1 1 5 7 1 4 9 2 1 1 2 2 2 1 3 1 6 0 10 5 4 8 1 6 2 7 1 6 1 1 3 3 1 3 3 5 3 5 1 5 1 5 3 7 1 8 0 9 6 5 9 1 1 8 5 5 7 2 1 2 1 2 1 3 3 1 6 0 7 9 8 1 2 1 2 5 1 2 1 2 3 1 1 8 0 6 5 3 1 5 3 7 1 3 3 1 1 1 1 1 4 1 1 2 1 3 1 1 2 2 6 5 4 3 6 1 6 0 6 9 5 7 8 1 4 3 1 2 1 2 1 1 8 0 8 4 6 3 1 9 7 1 6 1 1 3 1 3 3 2 3 1 7 0 6 1 1 8 2 3 3 3 1 1 2 2 1 1 4 1 1 2 2 2 3 4 1 6 0 8 8 5 1 1 5 1 7 9 3 1 3 1 1 3 1 5 0 10 6 9 5 9 3 5 2 8 1 1 1 1 2 1 1 1 5 0 10 3 6 7 9 9 1 6 4 2 8 2 1 3 1 1 2 1 2 4 3 7 1 8 0 8 1 3 7 9 5 8 8 3 1 1 1 1 3 1 3 2 1 5 0 10 8 1 9 9 1 5 9 8 4 3 1 2 3 2 3 1 6 0 6 9 9 5 1 7 9 1 2 1 1 3 3 2 3 2 4 1 3 1 3 4 1 7 0 10 3 5 8 9 6 4 1 8 9 1 3 3 1 1 2 3 1 1 6 0 6 3 8 2 1 2 5 3 2 2 1 1 1 1 6 0 10 3 2 6 6 1 2 1 6 4 4 1 1 3 1 3 1 1 5 2 2 3 6 1 5 0 6 2 6 6 1 1 9 1 2 3 2 1 1 8 0 6 6 3 3 6 1 1 3 2 3 2 1 3 2 1 1 8 0 9 1 1 6 8 4 6 2 9 9 3 3 2 2 1 1 3 1 2 1 5 1 3 3 1 5 6 6 5 4 3 4 1 7 0 7 3 5 1 9 7 3 3 1 1 1 2 1 1 3 1 6 0 9 8 7 7 2 1 1 4 5 7 1 1 1 1 2 1 1 8 0 11 8 7 9 1 1 2 9 7 1 8 1 1 2 2 2 3 2 2 2 5 4 2 2 3 6 1 9 0 10 5 4 3 9 1 1 6 9 4 5 1 1 1 3 1 1 3 1 1 1 5 0 6 1 2 1 6 4 8 2 2 3 2 1 1 7 0 6 5 4 5 5 1 1 3 1 2 3 1 3 3 1 1 3 2 1 1 3 4 1 7 0 10 4 4 9 1 5 8 1 2 7 8 2 3 1 1 3 3 2 1 7 0 7 4 9 4 4 1 4 4 3 3 1 2 1 1 1 1 5 0 11 5 3 6 6 4 8 6 5 6 1 3 1 1 1 1 1 4 1 3 3 3 4 1 8 0 8 9 8 1 6 9 8 5 6 1 2 1 1 1 1 1 2 1 8 0 9 1 3 3 5 9 1 1 3 6 1 1 3 2 2 1 1 3 1 8 0 10 8 3 5 6 2 5 7 4 1 4 1 2 1 3 3 1 2 1 2 3 5 3 3 5 1 8 0 11 5 4 9 9 7 9 4 2 7 5 1 3 1 2 1 1 1 2 1 1 5 0 6 1 1 9 9 1 8 2 2 3 2 1 1 7 0 7 3 1 4 2 2 5 5 1 2 3 3 1 3 1 3 1 3 5 1 2 2 7 6 5 3 3 5 1 9 0 10 1 2 7 9 6 4 5 6 9 1 2 2 2 1 2 1 3 2 3 1 5 0 6 8 7 5 1 2 5 3 2 1 2 3 1 6 0 7 9 4 2 9 2 3 1 1 1 3 3 1 1 4 5 3 2 3 3 5 1 8 0 9 3 4 3 1 9 9 3 1 4 1 3 1 2 3 2 2 3 1 9 0 9 7 7 3 8 9 9 1 5 8 2 1 2 2 1 3 2 3 3 1 7 0 9 4 1 6 4 5 4 3 9 1 3 3 1 2 2 2 3 5 5 2 2 2 3 5 1 7 0 7 1 5 7 1 5 1 4 3 1 1 1 2 1 3 1 6 0 6 1 3 2 1 4 5 1 1 3 3 2 1 1 9 0 10 9 4 5 3 8 5 1 3 3 5 2 3 3 1 2 1 1 3 1 1 1 3 5 1 3 7 1 8 0 7 7 3 4 5 1 1 1 1 2 2 1 1 2 1 3 1 9 0 10 9 1 5 3 7 2 2 1 1 7 3 3 1 2 3 3 1 2 1 1 5 0 11 1 1 3 3 3 4 5 2 6 5 1 1 2 2 2 3 1 4 1 2 5 2 4 3 4 1 7 0 8 7 1 8 1 4 2 5 8 1 2 2 2 1 3 2 1 6 0 7 3 5 9 4 1 6 1 1 3 2 3 2 2 1 5 0 6 5 8 6 3 9 1 3 3 1 2 1 3 4 4 2 5 3 2 6 4 2 7 3 5 4 3 5 1 6 0 10 3 5 9 1 1 3 7 1 1 2 1 1 2 3 3 2 1 9 0 7 8 2 9 2 4 1 1 1 1 2 3 2 2 2 1 2 1 7 0 7 6 1 1 8 6 8 6 1 3 1 3 2 2 3 5 3 1 2 3 3 7 1 6 0 11 4 2 7 6 1 2 8 8 1 7 1 2 3 2 1 2 1 1 5 0 9 1 9 1 3 6 7 6 4 4 2 1 3 2 2 1 9 0 8 2 9 1 5 7 2 4 6 2 2 3 2 1 3 1 3 1 5 3 1 4 3 3 4 3 4 1 9 0 8 3 5 3 2 1 2 3 7 1 1 3 1 2 1 3 1 2 1 6 0 8 1 5 7 9 3 7 4 7 1 3 3 2 3 3 1 9 0 8 8 2 9 7 1 6 7 2 1 2 1 2 3 3 3 1 3 5 2 3 2 3 6 1 5 0 6 5 3 2 1 5 7 1 1 3 3 1 1 8 0 10 7 1 7 1 4 5 9 7 9 8 3 3 1 2 1 1 3 1 1 6 0 7 7 1 3 8 1 7 4 1 1 3 3 2 2 2 3 2 2 3 2 3 4 1 8 0 6 2 4 4 6 9 1 3 3 1 3 1 3 3 1 1 8 0 6 9 1 2 9 8 3 1 2 2 1 2 1 1 2 1 7 0 6 1 5 1 9 1 2 3 1 1 3 3 2 1 1 3 2 5 1 3 4 3 5 3 3 4 1 6 0 11 9 5 9 6 3 9 9 4 4 1 2 1 3 1 1 3 3 1 9 0 7 8 8 1 3 5 4 7 2 3 3 2 1 3 2 2 1 1 7 0 10 9 9 1 7 7 4 7 8 1 7 3 1 3 3 1 3 3 3 1 4 2 3 5 1 7 0 11 2 9 9 1 5 7 1 1 5 6 8 3 3 3 1 3 2 2 1 6 0 7 5 7 1 2 6 9 5 1 1 3 1 3 1 1 7 0 8 1 3 2 2 2 5 4 8 3 1 3 3 3 1 2 2 5 5 1 2 3 4 1 7 0 10 4 3 3 5 1 4 9 9 3 1 1 2 2 1 1 2 3 1 8 0 7 8 5 8 7 2 2 1 1 2 1 1 3 3 2 1 1 9 0 7 3 7 5 1 1 5 3 3 1 1 2 2 1 1 1 1 4 2 1 2 3 4 1 5 0 7 4 4 1 6 8 6 1 2 2 1 3 1 1 8 0 6 1 5 9 9 1 2 2 3 2 2 1 3 3 1 1 6 0 9 6 5 4 2 3 1 5 2 1 3 3 1 1 1 2 2 4 5 2 3 5 1 7 0 10 1 7 1 4 1 1 1 1 1 2 2 2 3 3 2 2 1 1 5 0 8 7 6 3 1 1 9 4 1 1 1 2 1 1 1 8 0 9 1 9 1 8 3 1 2 9 5 3 1 2 2 2 1 1 2 3 2 3 5 2 4 5 5 4 3 3 6 1 5 0 6 3 1 5 1 1 9 1 2 1 1 1 1 8 0 9 6 1 3 9 4 4 4 8 6 1 2 2 2 1 3 1 1 1 8 0 7 2 8 1 7 3 3 1 2 1 1 3 3 2 1 3 5 3 3 1 4 5 3 7 1 5 0 6 4 2 5 5 1 1 1 1 2 1 2 1 6 0 6 8 9 9 3 1 7 1 3 3 2 1 1 1 7 0 6 9 3 6 9 1 3 1 1 1 2 1 1 2 1 4 2 2 1 5 5 3 4 1 6 0 6 2 3 9 1 5 3 3 3 1 3 1 1 1 5 0 9 1 1 7 2 8 1 6 2 7 1 3 1 3 2 1 8 0 7 1 9 1 5 2 5 9 2 1 1 1 3 2 2 3 2 1 3 4 3 7 1 8 0 8 8 1 2 7 6 1 9 2 1 3 2 3 2 3 3 2 1 5 0 6 9 8 9 8 6 1 1 3 2 3 1 1 6 0 6 5 1 3 7 1 1 1 2 2 1 1 1 3 1 3 2 2 3 1 2 4 4 5 3 3 7 1 8 0 8 8 2 1 2 3 4 5 2 2 2 1 1 2 3 2 3 1 9 0 11 2 8 2 9 6 1 5 9 9 7 5 3 2 2 3 2 2 1 3 1 1 9 0 9 5 1 1 9 2 1 6 5 4 2 1 3 3 2 2 1 3 1 3 3 3 5 2 2 2 3 5 1 8 0 6 7 7 1 5 9 1 3 1 2 2 3 2 1 3 1 9 0 7 2 9 1 2 4 5 3 2 2 1 3 2 1 2 2 2 1 9 0 7 9 1 1 3 1 4 9 1 3 3 2 1 2 1 3 2 4 2 2 1 4 3 7 1 5 0 11 9 9 5 6 3 1 9 5 7 5 3 1 2 3 1 2 1 7 0 7 5 9 1 3 7 2 1 1 3 3 1 1 1 3 1 5 0 9 3 3 1 5 4 4 2 8 1 1 1 1 2 1 4 4 2 2 5 2 2 3 5 1 9 0 10 2 4 2 1 5 6 2 3 9 6 1 1 1 3 2 1 2 3 3 1 8 0 8 1 7 7 5 7 5 5 9 2 2 1 1 2 1 1 3 1 7 0 9 9 4 4 6 1 5 1 4 1 3 2 1 3 1 2 2 5 2 2 3 3 3 7 1 9 0 10 3 1 9 6 4 7 1 8 8 2 1 2 3 2 2 3 1 2 3 1 6 0 11 9 6 5 3 8 1 8 1 7 5 7 1 2 3 2 1 1 1 8 0 9 3 5 2 1 6 8 9 5 3 3 3 1 2 1 1 3 3 3 3 5 4 3 2 3 2 5 5 5 3 3 6 1 7 0 6 1 8 1 1 8 1 1 2 3 1 1 2 2 1 9 0 10 2 3 6 9 9 7 3 5 1 3 2 2 3 2 2 3 1 2 1 1 8 0 6 9 1 7 1 4 8 1 3 3 2 2 2 1 2 2 2 5 4 1 1 3 4 1 9 0 9 2 2 2 4 9 1 2 8 7 2 3 1 1 3 1 2 1 1 1 8 0 7 4 7 5 4 1 1 7 2 2 1 2 1 1 3 3 1 9 0 10 8 5 1 9 4 5 8 7 2 1 2 2 3 2 2 1 1 3 2 5 3 1 1 3 7 1 6 0 10 8 1 6 8 3 4 6 6 3 7 1 1 3 3 3 1 1 8 0 8 3 1 7 5 1 4 2 2 1 3 1 3 3 3 1 3 1 7 0 9 1 9 8 7 3 3 6 3 6 1 1 1 3 2 3 1 1 3 5 3 2 4 4 3 4 1 8 0 6 8 7 8 4 9 1 1 3 2 1 1 3 3 1 1 8 0 9 8 4 1 9 2 2 7 4 1 3 1 2 3 2 1 2 3 1 8 0 11 2 7 8 5 1 3 1 8 3 7 5 2 3 3 2 3 1 1 3 4 5 5 1 3 7 1 5 0 10 7 8 9 5 9 6 4 3 2 1 3 1 1 3 1 1 7 0 8 4 4 3 5 3 7 9 1 3 1 1 1 1 1 2 1 5 0 8 2 3 5 8 4 8 1 2 2 3 1 3 3 3 3 5 3 2 4 4 6 5 1 5 3 3 5 1 8 0 8 6 1 6 6 6 1 9 7 3 1 3 3 2 2 1 3 1 9 0 9 3 6 3 1 1 1 2 9 2 1 3 2 3 3 1 3 3 3 1 7 0 9 1 2 5 2 1 7 9 9 6 2 3 1 2 2 3 2 4 1 1 1 1 3 4 1 6 0 6 1 6 9 9 2 4 1 2 3 1 1 2 1 5 0 7 1 1 5 2 9 8 9 1 1 1 3 2 1 8 0 9 9 5 1 1 6 9 6 6 9 1 1 2 1 1 3 3 1 2 3 2 2 3 6 1 8 0 6 1 8 4 4 6 9 3 1 3 2 2 1 2 1 1 7 0 7 1 3 5 3 1 7 1 2 3 3 2 2 2 1 1 7 0 8 2 6 8 6 1 1 5 6 2 1 2 1 3 1 2 4 4 3 2 2 3 3 6 1 8 0 10 5 8 3 9 1 9 8 3 5 6 1 1 2 1 1 2 2 2 1 8 0 8 4 1 2 7 1 7 5 9 2 1 1 2 3 2 2 3 1 7 0 8 4 1 8 2 5 6 4 8 3 1 1 1 2 1 3 3 2 3 3 4 5 3 6 1 9 0 6 2 4 1 9 1 2 3 2 2 1 1 3 2 1 1 1 8 0 10 4 2 8 8 5 5 9 5 1 5 2 3 2 3 1 3 2 1 1 6 0 10 7 6 1 2 1 6 1 2 5 3 3 3 3 1 3 1 4 2 1 1 3 3 7 4 1 5 4 3 4 1 5 0 9 8 8 7 5 3 3 4 1 5 2 3 1 3 2 1 8 0 7 8 9 6 6 1 1 1 3 2 3 1 1 1 2 3 1 8 0 8 8 4 1 2 7 1 5 8 3 3 3 1 2 2 2 2 1 5 2 4 3 7 1 6 0 11 3 6 9 1 6 9 5 1 6 4 2 1 2 1 3 3 1 1 8 0 7 1 1 6 4 7 9 7 3 2 1 1 3 1 1 2 1 8 0 6 1 1 3 9 1 9 3 1 3 1 3 2 2 2 3 3 3 1 3 5 1 3 5 1 8 0 8 7 2 6 8 1 1 2 9 1 3 3 3 1 2 3 1 1 7 0 11 9 5 3 3 4 9 8 7 9 4 1 1 1 3 3 2 3 2 1 9 0 9 9 3 1 6 1 6 8 4 1 3 3 3 3 1 2 1 1 2 4 5 1 5 4 3 4 1 7 0 8 1 2 2 4 9 6 1 1 3 1 3 1 2 1 3 1 6 0 7 3 4 5 9 7 1 5 3 2 2 1 1 2 1 9 0 6 5 3 1 4 5 1 1 1 3 1 3 1 1 3 1 1 4 1 2 3 6 1 5 0 6 7 1 6 8 3 1 1 1 3 1 3 1 7 0 9 1 2 2 9 8 7 7 1 9 1 2 3 1 2 3 1 1 8 0 11 7 5 6 5 1 4 4 4 7 1 4 2 3 3 3 1 1 3 2 5 5 3 5 2 3 5 1 7 5 8 8 1 6 2 4 5 3 4 1 9 0 8 3 8 1 3 6 9 4 1 1 2 3 3 1 3 2 3 1 1 7 0 10 8 5 2 1 3 4 7 2 3 5 3 1 3 1 3 1 3 1 8 0 7 2 1 4 3 9 1 6 1 1 3 2 3 2 3 2 3 4 5 4 3 7 1 6 0 6 1 1 7 9 9 5 1 1 1 2 3 3 1 7 0 10 8 7 4 5 6 4 1 1 3 7 1 2 2 3 3 3 3 1 6 0 7 4 3 7 1 3 8 2 3 2 1 1 1 1 2 3 1 4 4 2 1 3 7 1 7 0 6 7 3 6 3 7 1 3 1 1 3 2 2 1 1 8 0 6 4 5 6 9 1 5 3 1 1 1 3 2 1 2 1 6 0 10 7 6 5 6 4 2 3 3 1 6 3 1 2 3 1 3 3 3 4 5 2 2 4 3 5 1 9 0 9 8 1 3 7 4 9 9 1 1 2 1 1 1 1 2 2 1 3 1 6 0 9 3 7 4 2 1 6 8 4 9 1 3 3 3 1 1 1 7 0 6 4 6 8 7 3 1 2 2 3 2 2 1 2 1 4 2 5 4 6 6 2 5 1 5 4 3 4 1 6 0 9 1 2 7 3 3 9 1 6 9 1 2 3 2 1 3 1 5 0 8 3 8 8 9 9 2 5 1 3 1 1 3 1 1 9 0 6 7 4 1 4 1 9 1 3 1 2 1 1 2 1 1 3 1 3 1 3 4 1 9 0 9 4 1 1 4 3 7 6 4 6 3 1 2 1 3 2 1 1 1 1 6 0 7 8 1 6 5 8 3 1 3 2 3 3 2 1 1 6 0 11 2 3 3 6 1 3 7 1 7 7 1 2 3 2 1 1 3 4 3 4 1 3 4 1 5 0 9 1 5 4 7 6 1 1 5 3 3 2 1 1 2 1 6 0 10 6 9 1 5 5 5 9 8 6 3 1 1 3 3 1 1 1 6 0 11 1 9 3 2 3 1 4 9 2 4 4 2 2 1 1 3 3 2 3 3 4 3 6 1 9 0 6 1 9 9 6 6 2 1 3 3 1 3 2 3 3 1 1 6 0 9 7 5 1 1 4 4 9 4 1 3 3 2 1 1 1 1 6 0 7 5 7 1 8 7 3 9 3 1 2 2 2 1 3 1 4 3 3 2 3 5 1 7 0 10 6 1 1 6 1 9 4 9 2 3 1 2 3 3 2 3 3 1 7 0 8 1 6 1 2 4 1 2 8 1 1 1 2 3 1 2 1 7 0 6 2 3 1 4 2 6 3 1 1 1 1 3 1 3 2 3 3 1 7 3 4 3 5 3 3 4 1 9 0 8 1 4 6 6 4 9 1 2 2 2 2 2 2 1 3 3 2 1 6 0 7 6 1 1 5 9 5 7 1 3 3 3 1 1 1 8 0 10 6 1 3 3 1 7 2 8 9 9 1 1 2 3 2 2 3 1 1 3 3 2 3 6 1 7 0 6 8 2 2 7 1 6 2 1 3 2 1 2 3 1 6 0 8 2 5 1 8 1 7 6 6 2 3 1 2 1 2 1 7 0 9 6 3 9 1 7 3 5 2 8 1 3 1 1 1 1 2 4 1 5 3 5 3 3 4 1 6 0 8 3 1 1 9 2 8 2 1 2 3 3 1 2 1 1 7 0 6 1 9 4 4 8 1 3 1 2 1 3 1 1 1 9 0 10 5 2 5 9 4 2 1 8 1 5 3 3 1 3 1 1 3 3 2 2 3 4 5 3 7 1 8 0 11 7 6 3 6 2 1 6 3 5 3 1 3 1 3 3 1 3 3 2 1 9 0 8 5 4 3 4 7 1 4 2 3 3 2 1 3 1 3 1 3 1 8 0 6 1 9 1 5 2 4 1 1 3 1 3 2 2 2 5 5 4 4 4 3 1 3 4 1 8 0 9 3 2 1 6 5 9 6 5 7 2 3 1 2 3 2 3 2 1 5 0 11 7 6 8 6 4 3 1 8 2 1 6 1 1 3 1 1 1 5 0 9 3 1 8 3 9 4 8 8 9 2 3 2 2 1 5 1 4 1 3 5 2 5 3 3 5 1 5 0 9 7 8 2 2 2 2 5 1 5 1 3 1 2 1 1 5 0 7 1 4 2 8 1 6 1 1 3 1 3 2 1 5 0 8 2 7 2 9 1 6 1 8 3 3 1 2 2 3 5 1 3 4 3 5 1 6 0 6 9 7 1 2 3 8 2 2 2 3 1 1 1 6 0 8 1 4 8 8 9 8 6 2 1 3 1 1 2 1 1 9 0 11 7 2 1 1 7 6 3 2 6 7 2 1 1 1 1 3 2 3 3 2 1 4 3 4 4 3 6 1 5 0 10 2 9 1 1 7 1 3 9 2 6 1 3 1 3 2 1 7 0 6 1 7 8 2 8 2 2 1 1 3 3 2 1 1 9 0 10 8 5 7 3 1 2 7 1 6 1 1 2 2 3 1 2 1 1 3 4 2 5 3 4 4 3 7 1 5 0 11 1 8 2 3 7 8 2 1 3 7 4 1 2 2 1 1 1 9 0 9 6 2 7 6 9 3 6 2 1 2 1 2 2 2 1 1 1 1 1 7 0 7 3 9 8 1 4 1 6 3 1 2 2 2 1 3 2 1 2 5 4 1 3 3 6 1 8 0 11 4 6 2 5 2 5 5 5 1 3 1 3 1 1 3 1 1 2 1 1 9 0 8 2 5 7 9 1 3 5 1 1 2 1 2 1 1 1 2 3 1 6 0 11 7 1 3 2 8 9 7 8 5 1 1 2 3 3 1 2 2 3 5 3 1 3 2 1 4 4 5 4 3 4 1 9 0 7 4 9 7 2 7 1 8 3 3 3 1 2 1 1 1 3 1 5 0 7 8 1 2 8 5 3 7 1 2 3 1 2 1 5 0 6 1 5 7 6 1 8 2 3 3 2 1 3 2 4 2 3 4 1 9 0 7 1 5 4 7 8 1 3 3 1 1 3 1 3 2 1 1 1 7 0 11 6 6 3 2 2 3 1 3 9 6 3 1 1 1 2 3 2 2 1 9 0 6 1 1 3 3 4 3 2 3 1 1 1 1 1 1 3 3 3 3 3 3 7 1 5 0 9 9 1 5 5 4 8 2 5 4 1 1 2 2 2 1 7 0 9 5 1 6 8 5 3 7 4 1 1 2 1 3 2 1 2 1 9 0 8 7 8 3 7 5 4 1 5 2 3 2 1 1 1 1 1 3 5 3 1 2 1 3 1 3 4 1 9 0 6 1 6 5 6 8 4 3 3 1 1 3 2 2 1 1 1 9 0 7 9 5 3 1 5 2 1 3 2 3 2 1 1 3 1 3 1 5 0 9 3 1 8 1 4 4 5 9 6 1 2 1 1 2 1 2 1 1 3 7 1 5 0 11 7 4 4 6 1 7 6 1 1 6 2 2 1 1 3 2 1 9 0 6 1 9 9 1 3 6 3 1 1 2 1 1 1 2 1 1 8 0 7 8 7 2 2 1 6 3 2 3 1 1 2 2 3 1 4 5 5 1 4 5 2 3 4 1 5 4 5 3 4 1 6 0 10 6 9 8 8 5 5 8 1 4 7 2 1 1 1 2 3 1 8 0 7 6 3 2 4 7 4 1 1 3 2 1 3 3 2 3 1 9 0 11 6 9 3 7 8 6 5 6 4 1 7 2 2 2 1 1 1 2 1 3 3 3 3 3 3 6 1 5 0 7 3 8 6 2 7 1 9 1 1 1 2 1 1 6 0 8 8 9 7 1 1 7 2 6 1 1 2 3 1 3 1 8 0 8 1 6 9 2 6 6 3 6 3 1 3 2 1 3 2 1 3 4 1 4 2 1 3 5 1 9 0 6 2 6 7 3 1 2 2 2 1 2 3 2 1 2 3 1 9 0 7 7 5 7 6 1 8 1 1 1 2 1 1 3 3 3 2 1 9 0 7 6 8 4 1 2 1 3 3 3 3 3 1 2 3 1 2 2 1 5 2 3 3 6 1 8 0 7 1 1 5 7 9 1 3 3 1 3 3 1 1 2 1 1 7 0 11 5 9 1 3 5 8 5 8 2 2 8 3 2 3 1 2 1 3 1 5 0 9 6 9 4 2 1 1 3 6 2 1 3 3 1 1 3 3 4 3 5 5 2 3 6 1 1 2 8 7 3 5 3 3 6 1 6 0 6 1 1 1 8 7 6 1 2 3 3 1 3 1 8 0 9 1 3 7 5 6 7 5 1 6 3 3 1 1 1 1 3 2 1 7 0 7 2 1 8 9 3 8 1 3 2 1 3 2 2 1 2 2 2 1 3 4 3 7 1 5 0 9 2 2 9 6 7 9 7 1 7 3 2 1 1 1 1 8 0 7 7 6 8 1 2 6 8 3 3 1 1 3 2 2 1 1 9 0 9 1 1 7 1 3 2 5 5 5 3 1 1 2 1 3 2 1 3 5 4 1 5 3 1 1 3 7 1 9 0 7 2 1 1 7 5 5 3 1 3 1 3 1 2 1 3 3 1 7 0 10 2 3 7 7 3 6 2 3 1 7 3 2 3 1 2 2 3 1 9 0 8 9 7 7 3 9 3 1 4 3 1 1 1 1 3 3 1 1 3 4 1 1 3 4 3 3 5 1 9 0 9 1 2 3 9 6 3 7 6 1 1 1 2 1 1 3 2 3 1 1 9 0 6 1 9 1 4 3 3 2 1 1 3 3 1 3 1 3 1 8 0 11 3 3 1 3 6 7 1 8 6 4 3 3 3 1 2 1 1 1 1 1 5 4 1 1 3 5 1 8 0 8 4 8 1 6 3 1 6 3 3 2 2 3 1 3 3 3 1 5 0 10 1 1 8 1 1 7 1 5 4 6 3 3 1 1 3 1 6 0 7 1 9 5 1 3 2 6 1 3 3 2 2 1 3 4 1 2 4 2 3 2 5 3 3 6 1 6 0 10 3 7 9 5 6 1 7 2 3 1 2 2 3 1 1 2 1 7 0 7 1 7 5 6 2 6 7 1 1 1 2 1 1 2 1 9 0 11 3 6 7 9 8 8 8 7 3 1 3 3 1 2 1 1 1 3 2 3 3 3 3 1 4 3 3 7 1 5 0 7 8 3 6 1 3 6 4 2 1 2 1 3 1 6 0 10 7 4 6 9 1 6 5 5 2 8 1 1 1 1 2 2 1 8 0 6 2 6 8 7 1 2 3 2 2 1 3 1 1 2 2 2 2 5 3 1 4 3 4 1 5 0 6 2 1 7 4 4 5 3 2 1 3 1 1 8 0 10 4 4 5 1 1 7 2 2 8 6 2 1 3 3 1 2 1 1 1 6 0 6 6 6 1 3 6 3 2 1 2 1 1 1 1 4 1 2 3 6 1 5 0 7 1 8 5 2 7 3 4 1 1 2 2 2 1 6 0 8 7 8 1 7 7 4 1 1 2 3 3 2 3 1 1 6 0 8 8 1 1 4 8 4 4 4 1 3 2 3 1 1 4 3 5 2 1 2 3 5 1 8 0 6 1 3 8 5 2 1 2 1 1 2 2 1 2 1 1 7 0 10 9 6 9 8 4 8 1 2 2 4 1 1 1 1 2 2 1 1 5 0 7 1 7 3 9 6 1 3 2 1 2 2 2 5 3 5 1 1 3 7 4 5 4 3 5 1 5 0 6 5 1 5 2 4 6 1 3 1 2 3 1 7 0 7 1 8 4 1 5 1 3 3 1 2 1 1 1 1 1 5 0 9 5 1 1 4 8 1 4 6 8 2 2 2 3 1 4 2 2 2 4 3 4 1 6 0 10 8 2 9 4 6 2 1 7 9 3 2 2 1 2 2 2 1 5 0 7 1 4 9 4 7 9 6 1 1 2 2 3 1 6 0 10 1 1 3 5 6 2 4 5 4 3 3 1 3 1 1 1 5 3 5 3 3 4 1 5 0 7 1 1 5 3 4 7 9 1 2 1 3 1 1 6 0 10 7 6 7 8 2 2 5 8 3 1 2 2 1 1 3 3 1 8 0 11 2 1 3 8 9 1 5 4 7 3 4 1 1 3 1 2 2 3 2 1 1 4 2 3 6 1 9 0 8 2 9 1 1 7 4 8 7 1 3 2 1 2 3 2 1 2 1 8 0 10 1 7 3 6 1 6 1 9 3 3 2 3 1 1 2 2 1 2 1 6 0 9 2 4 2 1 6 6 8 4 1 2 1 3 1 1 1 2 1 3 2 4 2 3 7 1 7 0 11 7 7 9 6 3 3 4 5 5 1 5 1 2 1 3 3 1 1 1 6 0 8 6 6 7 2 9 1 6 5 2 3 2 2 2 1 1 5 0 6 3 1 1 2 4 2 1 2 2 1 2 3 3 4 2 5 5 2 4 2 4 3 5 5 3 7 1 7 0 6 1 9 3 8 7 1 3 3 3 2 3 1 2 1 5 0 9 3 7 1 6 1 2 7 4 3 3 1 1 1 3 1 5 0 11 1 8 9 9 9 6 1 8 6 8 3 3 1 1 1 1 2 3 5 2 2 1 4 3 5 1 5 0 8 8 3 5 4 1 1 9 5 1 3 1 3 1 1 8 0 7 1 7 5 1 6 4 8 2 1 3 2 1 1 3 2 1 9 0 11 9 3 1 4 9 8 6 9 3 8 8 3 3 3 3 2 1 1 1 2 3 2 3 2 1 3 4 1 5 0 8 1 7 5 3 9 3 3 9 2 1 2 2 1 1 5 0 7 3 1 9 3 9 3 6 3 3 3 2 1 1 5 0 9 5 6 4 8 3 1 1 7 6 3 1 3 3 1 3 5 5 3 3 4 1 8 0 8 1 3 1 6 1 5 9 8 3 3 1 1 2 3 1 1 1 8 0 8 1 7 8 1 9 6 9 6 1 1 2 1 1 2 2 3 1 6 0 7 4 8 2 4 7 7 1 1 2 1 1 2 1 2 3 3 5 3 7 1 5 0 10 9 2 9 7 1 2 1 1 4 2 3 1 2 1 1 1 8 0 10 4 1 1 2 1 5 7 3 7 5 2 1 1 2 1 2 2 1 1 7 0 7 4 4 5 1 4 2 1 1 2 1 3 3 3 3 1 1 1 2 2 1 4 1 3 6 1 6 5 4 3 7 1 7 0 6 7 3 3 5 8 1 1 1 2 2 3 3 1 1 5 0 8 8 1 8 8 4 9 1 1 2 3 1 3 3 1 5 0 7 8 8 8 1 5 5 1 3 1 2 1 1 1 4 3 1 5 5 3 3 5 1 5 0 10 3 9 5 9 5 9 8 3 1 2 1 1 1 1 1 1 9 0 7 6 2 1 3 3 7 2 2 2 2 3 1 2 3 1 2 1 5 0 9 3 7 3 7 1 9 7 3 7 3 2 2 1 2 2 1 4 1 5 3 7 1 5 0 7 1 8 6 6 9 5 5 2 3 2 1 1 1 8 0 9 5 3 2 1 5 3 7 3 9 3 2 3 3 1 2 1 3 1 6 0 10 1 6 5 8 9 5 3 1 2 6 1 2 3 2 1 1 4 5 3 4 3 2 3 3 5 1 5 0 11 7 5 2 1 4 7 4 9 4 3 6 1 1 2 1 2 1 7 0 8 6 8 6 6 1 3 3 1 1 1 1 2 3 1 3 1 8 0 7 3 1 9 4 8 7 4 1 1 3 1 3 3 2 1 2 4 3 4 1 3 6 1 6 0 8 9 1 3 7 2 1 1 1 2 3 1 2 2 1 1 6 0 8 3 5 4 6 6 3 7 1 1 1 1 2 2 1 1 7 0 10 3 6 4 1 1 7 1 6 1 8 1 2 2 2 1 1 1 2 2 3 3 3 3 1 7 2 5 5 5 3 4 1 6 0 9 1 7 1 1 8 6 2 5 1 1 1 2 1 1 1 1 5 0 11 9 2 1 2 7 5 5 8 6 1 7 1 3 1 1 2 1 7 0 7 4 7 8 4 7 1 8 3 3 3 2 2 1 1 1 3 1 2 3 6 1 7 0 9 7 5 1 2 7 9 8 3 7 3 3 1 3 1 1 1 1 6 0 9 6 6 1 3 9 3 8 4 7 1 1 1 1 3 2 1 6 0 7 8 5 6 6 1 5 5 1 2 3 1 3 1 1 2 3 3 5 5 3 6 1 5 0 6 3 4 1 1 7 9 3 2 2 2 1 1 9 0 11 7 1 2 6 7 2 8 5 4 5 7 2 2 3 1 1 2 2 3 1 1 6 0 9 6 6 2 9 5 7 2 1 6 1 1 2 3 3 3 4 2 3 1 2 2 3 7 1 7 0 11 2 9 8 1 1 7 7 4 6 7 5 3 1 2 1 2 3 3 1 6 0 7 9 2 1 3 2 7 8 3 3 2 2 1 1 1 5 0 10 5 5 3 1 8 5 2 2 3 6 1 2 1 2 2 1 4 2 3 2 2 2 3 4 1 5 0 7 1 3 7 2 9 2 9 1 3 3 2 1 1 9 0 7 5 1 4 4 3 3 1 1 1 1 2 1 2 3 1 2 1 8 0 11 3 6 1 3 3 2 8 6 2 6 7 3 1 1 1 2 1 1 3 5 3 5 3 3 3 4 7 4 5 5 3 5 1 6 0 8 3 2 8 1 9 6 1 9 3 1 1 2 2 1 1 9 0 8 1 9 4 6 1 9 9 8 1 3 2 3 1 2 2 3 3 1 8 0 9 5 3 1 9 6 6 7 7 4 1 1 1 1 2 3 1 1 1 1 1 5 4 3 6 1 9 0 11 1 7 4 2 7 4 8 9 3 5 4 1 1 3 3 1 1 2 1 3 1 7 0 9 1 2 2 7 5 5 9 5 3 2 2 3 1 3 3 3 1 8 0 6 1 6 1 2 4 1 3 1 1 2 1 3 1 1 2 2 3 2 3 4 3 7 1 7 0 8 5 9 7 1 5 1 7 7 2 1 1 1 2 1 1 1 9 0 8 3 4 9 3 6 1 2 3 3 2 2 1 2 3 2 1 1 1 8 0 6 2 4 5 5 7 1 3 2 3 1 2 2 2 2 1 1 5 5 3 4 1 3 7 1 8 0 9 1 6 3 9 4 1 9 4 8 2 3 2 3 2 1 1 1 1 9 0 10 4 1 4 5 2 6 1 6 2 2 1 3 3 1 3 2 3 2 2 1 5 0 6 1 9 9 6 5 1 3 1 2 1 1 1 1 2 4 3 3 4 3 7 1 9 0 7 5 5 5 5 1 3 3 3 2 1 3 2 1 2 3 1 1 7 0 6 6 9 7 9 1 5 1 2 3 1 1 3 1 1 9 0 11 5 3 7 6 7 4 8 1 1 8 3 2 1 2 3 2 1 3 1 1 2 3 3 1 4 4 2 4 1 7 5 3 9 7 8 7 2 5 4 3 7 1 6 0 8 9 1 1 7 4 1 1 2 3 2 1 3 2 2 1 8 0 7 8 4 5 4 4 1 2 1 2 2 1 3 3 2 1 1 6 0 10 7 8 4 1 1 7 5 9 5 2 1 1 1 3 1 1 1 2 2 1 5 4 4 3 5 1 8 0 10 3 1 2 1 8 1 5 4 2 7 2 1 3 2 3 2 1 3 1 8 0 10 4 1 8 6 8 6 4 2 5 1 1 2 2 3 2 2 1 1 1 5 0 9 1 5 8 4 1 7 6 7 1 1 1 2 2 2 4 1 3 3 1 3 7 1 8 0 8 1 6 3 2 6 7 2 7 2 2 3 3 1 1 2 1 1 7 0 9 7 1 3 4 5 8 9 1 6 3 1 2 2 2 1 2 1 5 0 7 8 1 8 4 2 5 6 3 1 3 2 2 2 5 3 1 4 2 1 3 5 1 8 0 10 1 1 5 7 3 7 5 1 3 7 1 2 3 1 3 1 2 1 1 8 0 9 3 1 2 1 1 7 8 1 6 3 3 2 1 2 1 1 1 1 5 0 11 5 4 1 5 2 1 6 2 2 6 9 3 3 3 2 1 4 1 1 3 2 3 4 1 7 0 7 5 9 1 2 7 3 9 1 2 3 2 3 2 3 1 5 0 7 4 7 5 8 1 5 3 2 3 3 1 1 1 6 0 9 2 2 8 5 3 1 2 1 6 3 2 2 1 1 3 4 1 3 5 5 1 4 3 4 4 3 5 1 8 0 10 9 5 8 8 3 3 3 1 8 1 2 3 2 1 2 1 3 2 1 6 0 11 4 9 1 2 8 6 7 7 9 6 4 2 1 1 1 3 2 1 6 0 8 2 3 1 3 6 4 8 8 2 1 3 2 3 1 1 2 4 3 2 3 4 1 9 0 10 5 6 5 8 4 1 5 8 1 5 1 3 1 2 1 1 1 2 1 1 8 0 7 6 2 8 3 9 6 1 2 1 1 3 2 3 2 2 1 7 0 6 9 9 2 5 6 1 1 2 3 1 2 3 2 1 5 4 2 3 5 1 6 0 6 1 4 4 1 9 1 1 1 2 1 3 2 1 5 0 10 9 9 4 1 6 5 3 8 3 9 3 1 3 3 1 1 8 0 9 6 8 1 3 8 6 1 4 5 3 1 2 3 3 1 3 2 3 5 2 4 3 3 6 1 7 0 6 8 1 2 4 5 9 1 3 2 3 3 2 1 1 6 0 6 6 1 8 7 5 1 2 3 1 2 1 1 1 5 0 8 9 1 7 5 3 9 5 5 2 1 2 2 1 1 2 2 2 4 1 4 1 6 5 4 3 3 5 1 9 0 10 3 6 1 2 9 6 8 2 9 5 1 2 1 1 3 3 2 1 3 1 9 0 9 6 3 4 7 5 1 6 4 9 1 2 2 1 3 1 1 2 1 1 8 0 8 7 2 6 6 1 3 8 1 1 3 3 1 1 1 1 1 2 3 1 2 5 3 5 1 7 0 10 8 8 8 1 8 5 4 6 1 3 2 2 2 3 1 3 1 1 8 0 10 1 2 1 8 7 3 2 2 6 3 1 3 2 2 3 3 1 1 1 5 0 11 1 9 6 7 1 8 8 8 2 6 6 2 2 2 1 2 4 3 2 1 4 3 6 1 7 0 10 3 6 1 7 9 3 3 1 8 9 3 3 2 3 2 1 3 1 9 0 7 2 2 2 4 5 9 1 2 2 2 2 2 1 1 3 2 1 7 0 7 1 1 3 9 5 3 4 1 1 1 2 1 3 1 3 2 3 1 4 3 3 7 1 6 0 10 6 7 4 3 1 1 8 4 3 6 2 1 1 3 1 3 1 7 0 6 1 1 4 2 8 3 1 2 1 1 1 2 2 1 9 0 10 6 9 1 8 5 5 4 8 5 1 2 3 3 2 1 2 1 3 3 4 2 2 5 3 3 1 4 2 3 5 5 3 6 1 7 0 9 9 9 8 1 7 5 1 3 3 2 3 2 1 3 1 1 1 7 0 7 4 1 9 9 3 1 8 1 1 3 1 2 1 1 1 9 0 9 9 9 8 5 2 7 2 5 1 2 1 1 1 2 2 3 1 3 1 4 1 2 3 5 3 4 1 7 0 6 7 4 4 3 6 1 1 3 2 1 1 2 3 1 6 0 6 3 1 9 5 5 5 3 3 1 1 2 1 1 9 0 8 8 8 4 5 4 1 5 7 1 3 2 3 1 3 2 2 2 1 4 3 5 3 6 1 9 0 10 7 7 2 9 5 1 4 2 1 4 3 2 3 3 2 1 2 3 1 1 9 0 8 1 6 4 7 1 4 9 1 1 3 2 3 3 2 2 2 3 1 6 0 9 9 8 6 6 6 1 6 4 9 3 2 1 3 3 1 1 2 4 1 3 4 3 5 1 6 0 10 3 1 7 3 9 7 5 6 7 8 2 1 1 1 2 2 1 5 0 8 1 9 1 4 8 1 2 5 1 2 1 3 2 1 7 0 9 4 6 9 6 1 6 8 5 6 1 3 1 1 1 1 2 3 2 1 3 1 3 5 1 7 0 6 9 8 8 1 3 5 1 2 1 1 3 2 3 1 9 0 8 4 8 7 9 3 7 1 7 2 2 1 3 1 1 2 3 2 1 9 0 7 3 2 8 1 8 3 2 3 3 1 1 3 1 1 1 1 1 2 3 3 4 5 5 5 2 2 5 3 3 5 1 7 0 8 1 1 1 5 1 8 5 3 3 2 1 2 1 2 2 1 7 0 9 5 1 8 1 5 4 8 6 5 1 1 2 3 1 2 3 1 6 0 10 1 9 8 4 5 7 1 7 5 1 3 1 2 2 1 1 2 2 1 2 5 3 5 1 6 0 9 8 3 3 1 2 5 1 3 6 1 2 2 3 1 2 1 6 0 8 5 2 5 1 4 4 4 1 3 1 2 2 1 1 1 5 0 10 6 3 3 1 3 7 5 3 8 8 1 3 2 2 1 1 3 4 2 5 3 6 1 9 0 8 6 8 1 4 8 1 6 8 1 3 2 3 1 3 3 1 3 1 7 0 7 7 1 1 1 3 4 9 2 1 3 2 2 1 2 1 8 0 8 3 6 2 8 5 1 6 1 2 2 2 3 1 1 2 1 4 1 1 3 1 3 3 6 1 8 0 10 3 2 9 1 3 1 6 8 4 3 1 1 2 1 2 2 2 2 1 8 0 10 4 1 3 7 4 4 2 3 6 1 1 1 3 1 2 1 3 1 1 5 0 8 8 9 1 3 1 6 5 2 2 1 1 2 3 2 5 2 2 3 1 3 6 1 7 0 6 6 6 1 1 2 3 2 1 3 1 2 2 3 1 5 0 11 9 3 2 7 4 7 6 3 1 6 6 3 3 1 2 1 1 8 0 11 9 1 5 8 7 1 2 1 1 9 2 1 2 1 2 2 1 1 1 2 4 3 5 2 3 3 2 1 5 3 3 4 1 9 0 6 8 8 5 6 1 2 2 3 3 1 2 2 2 2 1 1 7 0 6 9 7 9 1 3 9 3 3 1 1 2 1 2 1 5 0 6 2 5 1 5 9 5 1 2 1 2 1 3 5 5 2 3 7 1 7 0 7 2 2 2 1 3 5 1 1 3 1 2 2 3 3 1 9 0 10 4 1 3 9 5 4 4 1 5 1 3 2 2 3 2 1 1 2 3 1 8 0 11 2 9 6 8 3 6 1 1 1 4 4 3 1 3 1 3 1 2 3 2 1 4 5 4 4 1 3 6 1 7 0 8 1 3 6 4 1 5 7 7 1 2 1 3 3 1 2 1 5 0 10 9 1 4 1 3 3 8 4 5 6 3 2 1 1 2 1 9 0 9 2 6 9 1 5 9 6 4 4 3 1 1 1 2 2 2 2 3 2 2 1 2 5 1 3 7 1 6 0 8 9 1 4 4 1 2 6 8 1 1 1 3 3 3 1 5 0 8 1 6 7 1 4 4 8 3 2 2 3 3 1 1 6 0 10 1 4 8 7 1 2 9 8 9 7 1 2 2 3 1 3 5 5 2 4 2 2 3 3 4 1 5 0 8 1 5 8 2 7 9 8 1 3 3 3 1 1 1 5 0 9 5 1 2 4 6 8 2 4 1 3 3 3 1 1 1 7 0 7 7 4 9 4 1 7 1 3 1 3 3 3 3 1 5 5 2 1 3 1 4 5 5 3 4 1 8 0 10 7 1 9 2 7 1 6 9 6 8 1 1 2 3 3 2 3 1 1 7 0 7 3 1 9 8 1 4 2 1 3 3 2 2 3 2 1 7 0 10 5 6 5 7 8 1 6 6 8 4 2 1 1 3 2 3 3 2 2 5 3 3 6 1 9 0 9 7 9 4 5 1 1 5 7 2 1 1 1 2 3 3 1 1 1 1 6 0 9 9 2 5 3 7 1 1 8 3 1 1 3 3 3 1 1 6 0 9 5 2 7 2 1 8 1 8 1 1 1 1 2 1 3 3 5 1 1 2 4 3 4 1 8 0 10 3 6 3 8 4 5 1 6 8 2 1 1 1 2 1 2 1 2 1 7 0 7 1 5 6 1 4 5 9 1 3 2 2 1 3 1 1 8 0 8 9 2 9 9 6 8 1 1 3 3 3 2 1 1 1 3 1 4 3 4 3 4 1 6 0 10 3 9 2 3 9 1 1 4 2 1 2 2 1 1 3 3 1 7 0 10 1 5 1 7 2 1 2 2 8 3 1 1 1 1 2 1 3 1 8 0 6 9 8 1 3 4 6 1 1 3 2 3 2 2 3 3 5 5 4 3 6 1 5 0 11 1 8 8 4 9 1 3 4 3 7 5 2 1 1 2 3 1 8 0 7 1 3 5 6 7 6 4 1 1 1 3 2 1 1 1 1 7 0 11 3 3 7 3 7 7 8 3 3 5 1 3 3 1 3 3 2 2 2 5 5 4 2 5 6 1 6 5 3 4 5 6 3 5 3 3 6 1 6 0 8 1 1 3 4 2 1 1 7 3 1 1 3 1 1 1 8 0 8 4 1 1 9 2 9 9 4 1 1 3 1 1 3 3 1 1 5 0 10 1 2 9 3 8 5 9 3 4 8 3 2 3 1 2 3 5 2 5 3 4 3 5 1 9 0 6 2 3 7 1 6 7 2 1 2 3 2 2 2 3 1 1 6 0 9 8 1 8 9 5 7 4 1 4 2 1 1 3 1 2 1 6 0 9 6 8 6 1 5 2 1 3 6 1 3 1 2 1 1 3 3 3 2 5 3 5 1 9 0 7 6 3 3 3 1 3 3 1 3 1 1 2 1 2 2 2 1 9 0 10 3 6 8 7 4 4 9 1 1 3 3 2 2 3 2 1 2 1 1 1 6 0 6 1 8 4 3 8 8 1 2 1 3 3 3 3 3 2 4 1 3 6 1 8 0 11 8 9 6 2 1 1 1 9 8 2 5 2 1 3 2 1 1 1 1 1 9 0 10 9 5 8 1 1 4 4 1 7 7 2 3 1 1 2 2 3 2 3 1 6 0 11 1 5 8 9 5 7 6 8 6 1 6 1 1 1 1 2 3 4 1 1 4 2 3 3 4 1 9 0 9 4 1 9 6 6 9 8 1 2 2 3 1 2 1 3 2 2 1 1 6 0 9 3 7 1 2 2 5 4 2 2 1 2 2 1 3 2 1 7 0 9 5 5 1 6 1 5 1 6 6 2 3 1 1 1 1 1 1 5 4 5 3 4 5 4 4 3 5 1 7 0 7 5 6 5 7 1 4 9 3 3 1 3 1 1 3 1 5 0 9 1 1 9 9 2 9 9 5 9 2 1 3 1 1 1 8 0 8 8 1 4 6 4 7 8 4 1 3 3 1 3 2 3 3 3 3 5 1 4 3 7 1 9 0 7 6 8 2 1 8 3 9 3 1 3 3 2 3 1 1 3 1 7 0 8 1 5 9 4 2 7 2 9 1 1 1 1 2 1 1 1 5 0 11 8 5 1 4 2 6 1 1 4 9 4 1 1 1 2 1 3 2 5 3 1 4 4 3 4 1 7 0 11 9 5 7 1 8 1 2 7 9 7 5 1 1 2 3 2 3 1 1 6 0 10 2 1 9 3 8 3 1 5 4 5 3 2 1 3 1 1 1 9 0 10 3 5 8 9 4 3 1 6 3 3 3 3 2 3 1 2 3 3 2 3 1 1 4 3 7 1 9 0 8 1 1 8 5 2 6 8 7 2 3 3 2 1 1 1 1 3 1 6 0 7 7 5 8 3 1 1 1 1 2 1 3 1 1 1 6 0 7 1 8 3 8 2 5 5 3 2 2 2 3 1 3 2 5 3 3 5 2 2 6 4 5 5 5 3 6 1 9 0 10 8 9 6 9 9 6 1 1 7 3 3 2 2 1 1 3 1 2 1 1 6 0 11 1 4 7 8 9 5 4 2 1 6 1 1 2 1 1 3 3 1 8 0 8 8 1 7 6 7 5 7 9 2 2 3 2 1 3 3 3 1 3 5 2 1 3 3 5 1 5 0 9 3 7 2 1 2 7 5 1 1 3 2 2 1 1 1 8 0 6 7 1 6 9 1 8 3 2 3 2 2 1 1 1 1 7 0 9 7 2 9 4 1 8 1 1 1 2 1 2 3 1 1 3 2 1 4 4 3 3 4 1 7 0 7 9 7 1 6 2 6 1 2 3 1 1 2 1 2 1 9 0 8 9 9 3 3 5 3 1 1 2 1 1 1 2 1 3 1 3 1 5 0 6 1 1 6 6 2 5 1 2 3 3 1 4 2 3 5 3 4 1 5 0 10 2 6 1 4 1 7 4 2 3 2 1 2 2 3 2 1 7 0 11 1 3 5 1 3 3 7 1 5 1 5 2 1 3 2 1 2 1 1 8 0 8 4 1 8 2 8 4 3 1 2 3 1 2 2 1 2 2 2 2 1 3 3 4 1 8 0 8 5 6 9 5 7 4 1 4 1 3 3 2 2 3 2 1 1 5 0 10 4 5 5 2 7 6 3 1 9 5 1 2 2 2 1 1 8 0 7 2 9 5 1 2 5 6 3 1 1 3 1 1 1 3 2 3 1 4 2 2 4 2 3 5 3 3 4 1 6 0 11 1 8 7 7 1 6 6 5 3 1 2 1 2 3 3 1 1 1 5 0 9 5 1 1 8 1 9 3 3 6 3 1 1 2 3 1 5 0 11 9 5 6 8 6 2 1 8 7 4 1 1 3 2 1 1 2 4 1 1 3 6 1 9 0 6 9 3 3 4 1 7 1 3 2 1 1 1 2 3 1 1 6 0 10 1 3 8 2 8 5 4 8 2 8 1 2 3 2 3 2 1 5 0 7 7 4 4 7 1 7 8 1 3 3 1 3 2 4 1 3 2 3 3 6 1 5 0 9 4 5 7 7 3 2 2 1 5 1 3 3 3 1 1 6 0 11 3 5 1 5 4 9 9 4 2 9 7 3 3 1 1 3 2 1 7 0 10 9 7 8 1 9 3 2 2 9 6 2 3 1 2 2 1 3 3 3 3 1 2 1 3 7 1 6 0 7 7 6 4 7 8 5 1 2 3 1 2 3 1 1 9 0 7 7 4 1 5 5 7 8 3 1 1 1 3 3 1 2 2 1 8 0 6 3 1 8 2 4 3 1 2 3 1 1 2 2 2 5 4 1 2 4 1 1 3 6 1 5 0 6 3 7 1 6 4 6 2 3 1 1 1 1 8 0 10 1 8 3 1 5 1 4 1 3 6 1 2 1 2 2 1 2 1 1 5 0 11 8 5 2 3 4 4 4 5 1 1 8 3 1 3 3 2 3 1 2 1 2 1 4 2 1 5 3 3 4 1 7 0 9 1 1 9 6 3 9 2 5 5 3 3 1 2 2 1 3 1 8 0 9 6 9 8 4 8 1 6 2 4 1 1 1 2 1 1 2 3 1 7 0 9 6 8 4 4 1 1 3 1 2 1 3 2 2 3 1 3 3 5 1 2 3 6 1 9 0 7 7 5 1 9 9 3 6 3 1 3 2 1 2 3 1 1 1 6 0 6 7 1 6 9 2 3 2 3 2 3 3 1 1 6 0 8 3 6 5 9 1 7 9 7 2 1 3 2 1 1 3 5 1 3 1 3 3 4 1 5 0 8 1 2 9 1 9 7 7 5 3 3 2 1 1 1 5 0 11 5 5 8 3 1 7 5 8 4 1 1 1 1 3 3 2 1 7 0 10 8 3 2 1 7 2 8 7 9 7 1 2 1 3 3 1 3 1 2 2 1 3 6 1 6 0 10 2 8 7 5 1 7 1 8 4 1 3 1 1 2 2 2 1 6 0 9 8 9 8 1 9 1 1 1 3 2 1 2 2 1 1 1 5 0 8 1 5 1 5 8 6 4 6 3 3 2 1 2 4 2 3 2 2 2 3 4 1 8 0 6 4 4 6 5 1 9 2 1 2 1 3 1 2 1 1 8 0 10 2 1 1 8 1 3 2 1 2 1 2 1 3 3 3 1 2 2 1 6 0 8 2 4 1 1 3 4 7 1 2 1 3 1 1 1 1 1 3 3 3 5 2 4 3 3 7 1 6 0 10 1 2 4 5 3 5 9 7 8 1 1 1 3 1 3 2 1 5 0 8 7 1 4 1 2 7 4 1 3 1 3 3 2 1 9 0 11 9 9 7 4 3 4 4 9 1 2 3 1 2 1 3 1 2 1 3 1 2 3 4 3 2 2 1 3 6 1 9 0 10 3 4 6 5 8 1 1 9 2 2 3 3 2 2 2 2 1 2 3 1 5 0 9 4 1 3 9 9 5 5 1 1 1 3 2 1 3 1 9 0 9 1 6 2 6 9 2 1 9 9 1 1 1 3 3 1 1 2 1 3 3 1 1 1 3 3 6 1 5 0 11 2 7 7 3 1 1 3 8 1 9 6 1 1 1 1 3 1 9 0 8 7 3 1 7 9 5 1 8 2 1 1 1 1 2 2 3 3 1 9 0 11 9 1 7 1 8 1 1 3 4 6 3 2 1 2 2 3 2 3 1 1 3 5 4 4 5 5 3 4 1 7 0 6 9 2 6 1 1 1 3 3 3 1 3 1 1 1 6 0 11 9 2 2 1 2 5 7 7 4 5 7 1 3 3 1 1 2 1 6 0 7 6 1 9 9 1 3 5 2 1 1 1 3 2 4 4 3 1 1 2 1 8 7 5 7 2 4 5 3 6 1 7 0 8 1 6 7 2 5 2 1 1 2 2 2 1 2 1 2 1 9 0 9 9 4 3 4 5 9 1 2 8 3 1 1 2 2 1 3 1 1 1 7 0 7 6 4 8 2 1 4 8 3 3 1 1 2 2 2 5 2 5 4 1 3 3 7 1 8 0 9 8 7 3 3 6 1 5 1 9 3 3 3 1 3 2 1 3 1 6 0 11 4 7 4 3 8 7 1 7 1 2 8 1 1 3 2 1 3 1 5 0 8 9 1 1 8 7 2 2 1 1 1 1 1 2 4 5 1 5 3 5 3 3 4 1 5 0 6 8 7 2 1 1 1 3 1 2 3 2 1 5 0 6 9 5 1 5 7 3 2 2 1 1 3 1 5 0 6 9 4 1 3 1 5 1 2 1 3 1 3 4 2 3 3 7 1 6 0 9 9 8 3 1 7 6 8 7 8 3 3 2 1 1 1 1 7 0 10 2 7 5 2 8 7 6 1 3 2 2 1 3 1 1 1 2 1 6 0 7 1 1 8 9 2 7 2 2 3 1 1 3 2 5 5 5 3 4 2 4 4 2 2 3 1 5 4 3 6 1 9 0 8 7 5 1 9 3 4 7 6 3 2 1 2 1 1 3 2 2 1 5 0 6 9 8 7 3 8 1 1 1 3 1 2 1 9 0 10 8 5 5 3 1 3 5 4 1 7 2 1 2 3 1 1 1 2 1 4 1 1 1 5 2 3 6 1 6 0 6 9 9 1 2 4 1 1 1 1 2 2 3 1 5 0 6 8 2 4 5 6 1 2 1 1 1 2 1 9 0 7 4 1 2 2 2 4 5 2 2 1 3 3 2 2 2 1 2 1 2 5 1 1 3 5 1 7 0 11 5 3 1 7 1 8 8 8 4 9 9 3 3 1 1 3 1 3 1 5 0 10 6 5 1 3 8 8 7 2 1 5 3 2 3 1 1 1 8 0 11 1 1 3 7 8 3 5 9 5 2 3 1 1 3 3 2 1 1 3 3 5 3 3 1 3 5 1 5 0 8 9 1 6 5 1 4 8 1 3 1 3 1 2 1 5 0 6 1 6 2 9 9 4 3 2 3 1 1 1 5 0 11 3 5 4 2 4 1 1 1 3 4 6 2 1 3 2 2 3 4 4 1 5 3 7 1 9 0 8 1 5 9 2 6 8 4 1 3 3 1 1 3 3 3 3 3 1 7 0 8 4 1 1 1 7 2 5 5 1 2 1 3 1 1 1 1 8 0 8 8 5 9 2 5 7 4 1 2 1 1 1 1 1 2 2 1 4 2 2 5 3 5 4 2 1 7 5 3 3 6 1 9 0 9 5 1 7 6 2 1 9 3 1 1 2 1 3 2 3 1 1 1 1 7 0 9 6 1 5 4 4 1 3 5 4 1 1 3 3 1 2 3 1 6 0 7 5 3 8 3 7 7 1 2 3 2 3 2 1 4 1 5 2 5 2 3 7 1 8 0 8 2 3 6 6 4 1 1 4 3 2 3 3 2 2 1 2 1 9 0 10 4 2 5 3 6 3 9 2 1 1 1 2 3 2 2 1 3 1 3 1 6 0 9 5 4 8 8 3 1 1 3 6 3 2 3 3 1 1 4 3 2 5 3 5 3 3 5 1 5 0 11 1 6 8 1 2 3 5 7 7 3 8 1 3 2 1 3 1 6 0 10 6 9 3 7 5 5 1 1 5 6 1 3 2 1 1 2 1 5 0 10 3 7 3 1 5 1 7 6 2 9 2 2 1 2 1 5 2 2 1 2 3 7 1 8 0 6 6 5 1 1 3 7 2 1 3 2 1 2 1 2 1 7 0 7 7 5 4 3 8 1 3 1 2 3 1 1 1 3 1 7 0 11 4 4 6 7 6 1 5 7 2 8 1 2 3 3 1 2 3 1 1 4 1 1 5 5 1 3 6 1 5 0 9 6 2 4 3 5 1 5 1 7 3 3 2 1 2 1 9 0 10 6 1 3 1 8 9 3 8 5 4 1 1 2 3 1 3 3 1 2 1 7 0 9 5 3 7 5 4 1 1 1 6 1 2 1 3 2 2 1 2 1 2 3 1 5 6 1 6 5 3 3 7 1 6 0 9 8 1 9 8 7 1 5 3 2 1 3 1 3 3 1 1 5 0 8 8 3 8 5 1 1 5 4 1 3 1 2 3 1 6 0 9 6 7 2 3 1 5 5 7 5 1 1 2 1 3 3 5 3 1 1 5 4 5 3 4 1 8 0 6 8 6 7 1 5 8 1 1 1 1 2 1 1 2 1 7 0 9 1 5 7 9 1 9 9 1 4 1 3 2 2 1 2 1 1 5 0 11 6 7 1 2 8 3 2 7 4 6 5 1 1 1 3 3 3 3 1 4 3 6 1 8 0 9 8 2 2 1 6 6 9 2 1 3 2 3 3 2 2 1 2 1 7 0 7 4 7 1 1 2 8 3 2 1 1 3 2 3 3 1 9 0 6 8 1 1 1 7 2 1 1 2 3 2 1 1 3 2 1 5 3 5 3 1 3 5 1 5 0 7 8 3 3 1 7 7 1 2 3 3 3 1 1 8 0 11 3 1 6 8 7 1 5 2 9 5 6 1 1 2 1 2 2 3 1 1 6 0 7 1 6 2 6 9 1 1 2 1 1 1 1 2 2 4 2 5 4 3 5 1 7 0 9 3 9 3 8 8 1 2 2 8 3 1 2 1 3 2 3 1 5 0 7 1 8 4 7 7 2 6 2 3 1 3 1 1 7 0 9 9 1 4 8 7 8 9 9 1 3 2 3 2 3 2 1 2 5 4 2 5 5 5 6 5 4 3 4 1 8 0 11 2 5 5 4 1 6 4 1 4 1 4 2 2 3 1 2 2 2 1 1 6 0 9 1 8 3 5 6 1 2 3 2 1 2 2 2 1 3 1 5 0 8 8 1 5 8 1 5 2 7 2 2 1 3 1 4 3 2 3 3 7 1 5 0 7 7 6 9 1 6 1 7 3 1 3 1 1 1 5 0 6 7 8 3 1 2 8 1 3 3 2 3 1 9 0 9 7 9 3 1 7 1 9 9 4 1 1 1 2 1 1 3 3 2 2 1 3 3 3 1 5 3 6 1 7 0 11 7 1 3 2 1 1 6 5 4 5 5 1 2 1 3 1 3 3 1 6 0 6 1 2 9 7 7 1 2 1 2 3 1 3 1 8 0 10 6 9 1 9 8 9 3 4 1 5 1 1 1 1 2 1 1 1 3 3 3 5 1 4 3 7 1 5 0 8 8 3 4 8 7 1 7 9 1 3 1 2 1 1 6 0 11 9 1 7 1 6 8 8 9 3 5 5 3 2 1 2 1 1 1 5 0 9 9 9 7 1 7 1 2 1 4 2 2 2 1 2 3 3 1 5 1 1 3 3 6 1 7 0 10 3 4 8 6 8 6 1 9 3 3 1 2 3 3 1 2 3 1 9 0 9 1 9 8 3 9 1 8 7 2 1 3 1 3 1 3 3 2 3 1 7 0 8 9 1 4 8 7 5 5 6 1 2 3 3 3 3 2 4 5 4 2 4 1 4 5 5 7 5 4 3 4 1 5 0 8 8 1 6 6 6 8 8 1 1 1 1 2 2 1 6 0 10 5 9 1 3 8 8 9 7 2 9 3 1 3 2 2 1 1 6 0 8 5 7 2 1 3 3 6 1 3 1 1 1 2 1 2 1 2 4 3 4 1 7 0 10 1 2 2 5 9 1 1 7 1 6 3 2 2 3 3 1 2 1 8 0 10 1 9 4 7 7 8 3 3 9 4 2 1 2 3 1 2 2 1 1 7 0 8 7 4 6 4 1 2 6 7 1 2 1 2 1 1 2 1 5 5 3 3 5 1 5 0 10 6 7 2 1 5 1 9 8 8 9 2 1 1 1 1 1 8 0 10 2 1 9 6 1 1 4 7 9 5 1 3 3 2 3 1 3 1 1 5 0 11 5 4 7 7 5 9 5 5 7 1 7 1 1 1 1 3 4 3 1 1 2 3 7 1 8 0 9 9 5 1 7 6 5 7 4 8 1 1 3 3 3 1 1 2 1 5 0 9 1 8 5 3 4 8 5 1 6 1 2 3 1 3 1 5 0 7 1 6 6 8 7 3 7 3 1 3 1 3 1 2 5 2 3 5 3 3 4 1 6 0 10 1 4 2 2 6 8 6 6 3 6 1 3 1 2 1 2 1 7 0 11 3 3 2 1 1 9 1 1 4 7 7 1 3 1 1 1 2 3 1 8 0 11 6 2 1 4 3 9 8 4 4 6 2 2 2 1 1 1 2 2 2 3 3 3 5 1 4 4 6 5 5 3 7 1 7 0 7 6 6 3 2 7 1 5 3 3 1 3 1 3 1 1 6 0 11 5 7 1 2 5 5 1 5 5 9 4 1 1 1 3 1 2 1 6 0 7 5 5 6 5 4 1 8 1 1 2 2 1 2 3 3 5 5 2 3 2 3 5 1 6 0 9 4 6 5 8 4 5 1 1 5 1 3 1 1 3 3 1 7 0 10 3 2 1 9 3 2 3 4 9 1 1 3 1 2 1 1 2 1 8 0 9 9 1 3 1 1 4 4 9 9 3 3 1 3 1 3 2 2 1 3 3 2 2 3 7 1 8 0 6 1 7 2 7 1 5 1 3 3 1 1 3 2 3 1 9 0 9 3 2 4 1 9 1 8 1 9 3 1 3 1 3 3 1 1 1 1 6 0 9 5 5 1 6 4 7 2 8 6 1 2 3 1 1 2 2 4 2 1 4 1 2 3 6 1 9 0 10 1 5 1 3 7 4 6 3 7 2 3 1 1 1 2 1 1 3 2 1 9 0 6 7 4 1 1 1 8 2 2 1 2 3 2 3 1 2 1 8 0 6 8 1 5 2 8 4 1 3 2 2 3 2 1 1 1 2 5 1 4 2 3 4 1 8 0 11 1 5 8 3 4 7 8 5 6 5 8 3 3 3 2 3 1 2 3 1 5 0 6 1 7 9 6 1 1 2 2 1 2 1 1 5 0 11 4 1 4 1 7 4 3 3 2 2 3 1 3 2 1 1 4 2 3 3 4 7 4 3 2 7 5 7 6 10 3 1 4 3 1 4 6 2 diff --git a/inputs/9.txt b/inputs/9.txt deleted file mode 100644 index eaf3e92..0000000 --- a/inputs/9.txt +++ /dev/null @@ -1 +0,0 @@ -438 players; last marble is worth 71626 points diff --git a/license.org b/license.org deleted file mode 100644 index 8d31e87..0000000 --- a/license.org +++ /dev/null @@ -1,21 +0,0 @@ -* The MIT License - -Copyright (c) 2018 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/readme.org b/readme.org deleted file mode 100644 index 7fe82e4..0000000 --- a/readme.org +++ /dev/null @@ -1,38 +0,0 @@ -* Advent of Code 2018 - -** What is Advent of Code? - -Advent of Code is a programming advent calendar. On the 25 days of -December leading up to Christmas, each morning a new programming -challenge is unlocked. The race is then on to see who can solve the -challenge and get the answer to their particular input first. - -It's a lot of fun. I have my solutions posted here so that I can share -them with my friends, as well as the broader community if they're -interested. - -** A note on error handling and code quality - -The only important metric to consider in terms of taking the Advent of -Code challenges seriously from a competitive point of view is how -quickly you arrive at an answer for your particular input. - -These solutions should not in any way be seen as an example of good -coding standards in Rust. The error handling in particular is -appalling. The reason for this is that I can look at the input data -and be certain that some error cases won't come up, like empty -lists. I can also assume that things like file system access will -always work because I'm only running it on my machine under my -supervision. - -When my assumptions are wrong, the program panics and dies, but I'm -currently there programming it when it's running so that isn't really -a big deal. - -The short version of what I'm trying to say is that even though I use -~unwrap~ all over the place in this particular repo, I still think -it's a really bad idea to use it in a real project. - -** License - -See [[./license.org]]. diff --git a/src/bin/day_1.rs b/src/bin/day_1.rs deleted file mode 100644 index 4693579..0000000 --- a/src/bin/day_1.rs +++ /dev/null @@ -1,32 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -extern crate im_rc; - -use std::error::Error; -use std::path::PathBuf; - -use im_rc::HashSet; - -// cargo watch -cs "cargo run --release --bin day_1" - -fn main() -> Result<(), Box> { - let input = read_file(&PathBuf::from("inputs/1.txt"))?; - let input_ints: Vec = input.iter().map(|str| str.parse::().unwrap()).collect(); - - println!("Input: {:?}", input_ints); - - let sum: i32 = input_ints.iter().sum(); - println!("Sum: {}", sum); - - let first_repeat = input_ints.iter().cycle().try_fold((0, HashSet::new()), |(acc, seen), &i| { - if seen.contains(&acc) { - Err(acc) - } else { - Ok((acc + i, seen.update(acc))) - } - }).err().unwrap(); - println!("First repeat: {}", first_repeat); - - Ok(()) -} diff --git a/src/bin/day_10.rs b/src/bin/day_10.rs deleted file mode 100644 index 082be7c..0000000 --- a/src/bin/day_10.rs +++ /dev/null @@ -1,82 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::str::FromStr; - -use std::error::Error; -use std::path::PathBuf; - -use std::i32; - -// cargo watch -cs "cargo run --release --bin day_10" - - - -#[derive(Debug, Clone)] -struct Star { - x: i32, - y: i32, - dx: i32, - dy: i32 -} - -impl FromStr for Star { - type Err = Box; - - fn from_str(s: &str) -> Result { - let split = s - .split(|c: char| c != '-' && !c.is_numeric()) - .filter(|s| !s.is_empty()) - .map(|s| s.parse()) - .collect::, _>>()?; - - Ok(Star { - x: split[0], - y: split[1], - dx: split[2], - dy: split[3] - }) - } -} - -fn main() -> Result<(), Box> { - let input = read_file(&PathBuf::from("inputs/10.txt"))?; - let mut stars = input.iter().map(|line| line.parse::().unwrap()).collect::>(); - - //debug!(input); - //debug!(stars); - - let screen_width = 80; - let screen_height = 80; - - for seconds in 0..1000000 { - let min_x = stars.iter().map(|s| s.x).min().unwrap(); - let max_x = stars.iter().map(|s| s.x).max().unwrap(); - let min_y = stars.iter().map(|s| s.y).min().unwrap(); - let max_y = stars.iter().map(|s| s.y).max().unwrap(); - - if max_x - min_x < screen_width && max_y - min_y < screen_height { - debug!(seconds); - for y in min_y..max_y+1 { - for x in min_x..max_x+1 { - let star_at_point = stars.iter().any(|s| s.x == x && s.y == y); - if star_at_point { - print!("#"); - } else { - print!(" "); - } - } - println!(); - } - println!(); - println!(); - } - - for star in &mut stars { - star.x += star.dx; - star.y += star.dy; - } - } - - Ok(()) -} diff --git a/src/bin/day_11.rs b/src/bin/day_11.rs deleted file mode 100644 index 0e458a3..0000000 --- a/src/bin/day_11.rs +++ /dev/null @@ -1,66 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::error::Error; -use std::i32; - -// cargo watch -cs "cargo run --release --bin day_11" - -fn main() -> Result<(), Box> { - let input = 1723; - - println!("Input: {:?}", input); - - let powers = precompute_powers(input); - - let power_per_size = (1..300).map(|size| { - (1..302-size).map(|left| { - (1..302-size).map(|top| { - (power_for_block(left, top, size, &powers), (left, top, size)) - }).max_by_key(|(p, _)| *p).unwrap() - }).max_by_key(|(p, _)| *p).unwrap() - }).collect::>(); - - let (max_power_at_size_3, coordinate_at_size_3) = power_per_size[2]; // index from 0 vs 1 - debug!(max_power_at_size_3); - debug!(coordinate_at_size_3); - - let (max_power, coordinate) = power_per_size.iter().max_by_key(|(p, _)| p).unwrap(); - - debug!(max_power); - debug!(coordinate); - - Ok(()) -} - -fn power_for_block(left: i32, top: i32, size: i32, powers: &[[i32;300];300]) -> i32 { - (left..left+size).map(|x| { - (top..top+size).map(|y| { - powers[x as usize - 1][y as usize - 1] - }).sum::() - }).sum() -} - -fn precompute_powers(input: i32) -> [[i32;300];300] { - let mut powers: [[i32;300];300] = [[0;300];300]; - for x in 1..301 { - for y in 1..301 { - powers[x as usize - 1][y as usize - 1] = power_from_coordinates(x, y, input); - } - } - powers -} - -fn power_from_coordinates(x: i32, y: i32, input: i32) -> i32 { - let rack_id = x + 10; - ((((rack_id * y) + input) * rack_id / 100) % 10) - 5 -} - - -#[test] -fn power_from_coord_example() { - assert_eq!(power_from_coordinates(3, 5, 8), 4); - assert_eq!(power_from_coordinates(122, 79, 57), -5); - assert_eq!(power_from_coordinates(217,196, 39), 0); - assert_eq!(power_from_coordinates(101, 153, 71), 4); -} diff --git a/src/bin/day_12.rs b/src/bin/day_12.rs deleted file mode 100644 index 65a966d..0000000 --- a/src/bin/day_12.rs +++ /dev/null @@ -1,102 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::error::Error; -use std::path::PathBuf; - -use std::str::FromStr; - -// cargo watch -cs "cargo run --release --bin day_12" - -use std::collections::HashSet; - -#[derive(Debug)] -struct Rule { - input: [bool; 5], - output: bool -} - -impl FromStr for Rule { - type Err = Box; - - fn from_str(s: &str) -> Result { - //##..# => # - let mut input = [false; 5]; - let mut iter = s.chars().filter(|c| *c == '#' || *c == '.'); - for (i, c) in iter.by_ref().take(5).enumerate() { - if c == '#' { - input[i] = true; - } - } - Ok(Rule { - input, - output: iter.next() == Some('#') - }) - } -} - -impl Rule { - fn matches(&self, state: &HashSet, index: i64) -> bool { - self.input.iter().enumerate().all(|(i, expected)| { - let pot_index = index - 2 + i as i64; - *expected == state.contains(&pot_index) - }) - } -} - -fn main() -> Result<(), Box> { - let input = read_file(&PathBuf::from("inputs/12.txt"))?; - - println!("Input: {:?}", input); - - let mut initial_state: HashSet = HashSet::new(); - for (i, c) in input[0].chars().filter(|c| *c == '#' || *c == '.').enumerate() { - if c == '#' { - initial_state.insert(i as i64); - } - } - let rules = input.iter().skip(1).map(|line| line.parse()).collect::, Box>>()?; - - debug!(initial_state); - debug!(rules); - - let part1_time = 20; - let part2_time = 50000000000; - - let part1_final_state = iterate_states(&initial_state, &rules, part1_time); - let sum_of_part1_pot_numbers: i64 = part1_final_state.iter().sum(); - debug!(sum_of_part1_pot_numbers); - - let part2_final_state = iterate_states(&initial_state, &rules, part2_time); - let sum_of_part2_pot_numbers: i64 = part2_final_state.iter().sum(); - debug!(sum_of_part2_pot_numbers); - - Ok(()) -} - -fn iterate_states(initial_state: &HashSet, rules: &[Rule], time: i64) -> HashSet { - let mut current_state = initial_state.clone(); - for current_time in 0..time { - let mut new_state = HashSet::new(); - let min = current_state.iter().min().cloned().unwrap_or(-1) - 2; - let max = current_state.iter().max().cloned().unwrap_or(-1) + 2; - - for i in min..max+1 { - if rules.iter().find(|r| r.matches(¤t_state, i)).expect("No matching rule").output { - new_state.insert(i as i64); - } - } - - if current_state.iter().map(|v| v + 1).collect::>() == new_state { - // Iterations are just shifting 1 to the right at this - // point. Found by inspecting a debugging log of the - // generations. - - let remaining_iterations = time-current_time; - return current_state.iter().map(|v| v + remaining_iterations).collect::>(); - } - - current_state = new_state; - } - current_state -} diff --git a/src/bin/day_13.rs b/src/bin/day_13.rs deleted file mode 100644 index 005f216..0000000 --- a/src/bin/day_13.rs +++ /dev/null @@ -1,249 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::error::Error; -use std::path::PathBuf; - -// cargo watch -cs "cargo run --release --bin day_13" - -#[derive(Debug)] -enum Road { - LeftRight, - UpDown, - LeftUpRightDown, - RightUpLeftDown, - Intersection, - None -} - -#[derive(Debug)] -struct Cart { - next_turn: TurnDirection, - facing: FacingDirection, - x: usize, - y: usize, - crashed: bool - -} - -#[derive(Debug, Clone, Copy)] -enum FacingDirection { - Up, - Down, - Left, - Right -} - -#[derive(Debug, Clone, Copy)] -enum TurnDirection { - Left, - Straight, - Right -} - -impl TurnDirection { - fn next(&self) -> TurnDirection { - use TurnDirection::*; - - match *self { - Left => Straight, - Straight => Right, - Right => Left - } - } - - fn rotate(&self, facing: &FacingDirection) -> FacingDirection { - match *self { - TurnDirection::Left => match *facing { - FacingDirection::Up => FacingDirection::Left, - FacingDirection::Left => FacingDirection::Down, - FacingDirection::Down => FacingDirection::Right, - FacingDirection::Right => FacingDirection::Up - }, - TurnDirection::Right => match *facing { - FacingDirection::Up => FacingDirection::Right, - FacingDirection::Left => FacingDirection::Up, - FacingDirection::Down => FacingDirection::Left, - FacingDirection::Right => FacingDirection::Down - }, - TurnDirection::Straight => facing.clone() - } - } -} - - - -fn main() -> Result<(), Box> { - let input = read_file(&PathBuf::from("inputs/13.txt"))?; - -// for i in &input { -// println!("{}", i); -// } - - let mut map: Vec> = Vec::new(); - let mut carts: Vec = Vec::new(); - - for (y, line) in input.iter().enumerate() { - let mut map_row = Vec::new(); - for (x, c) in line.chars().enumerate() { - let tile = match c { - ' ' => Road::None, - '-' => Road::LeftRight, - '|' => Road::UpDown, - '/' => Road::LeftUpRightDown, - '\\' => Road::RightUpLeftDown, - '+' => Road::Intersection, - '^' => { - carts.push(Cart { - next_turn: TurnDirection::Left, - facing: FacingDirection::Up, - x: x, - y: y, - crashed: false - }); - Road::UpDown - }, - '<' => { - carts.push(Cart { - next_turn: TurnDirection::Left, - facing: FacingDirection::Left, - x: x, - y: y, - crashed: false - }); - Road::LeftRight - }, - 'v' => { - carts.push(Cart { - next_turn: TurnDirection::Left, - facing: FacingDirection::Down, - x: x, - y: y, - crashed: false - }); - Road::UpDown - }, - '>' => { - carts.push(Cart { - next_turn: TurnDirection::Left, - facing: FacingDirection::Right, - x: x, - y: y, - crashed: false - }); - Road::LeftRight - }, - - _ => { - panic!("Unknown character {}", c); - } - }; - map_row.push(tile); - } - map.push(map_row); - } - - while carts.len() > 1 { - carts.sort_unstable_by(|a, b| a.y.cmp(&b.y).then(a.x.cmp(&b.x))); - - for i in 0..carts.len() { - { - let mut cart = &mut carts[i]; - let road = &map[cart.y][cart.x]; - - match (road, cart.facing, cart.next_turn) { - (Road::LeftRight, FacingDirection::Left, _) => { - cart.x -= 1; - }, - (Road::LeftRight, FacingDirection::Right, _) => { - cart.x += 1; - }, - (Road::LeftRight, _, _) => { - panic!("Sideways cart heading left-right"); - }, - - (Road::UpDown, FacingDirection::Up, _) => { - cart.y -= 1; - }, - (Road::UpDown, FacingDirection::Down, _) => { - cart.y += 1; - }, - (Road::UpDown, _, _) => { - panic!("Sideways cart heading up-down"); - }, - - // / - (Road::LeftUpRightDown, FacingDirection::Down, _) => { - cart.x -= 1; - cart.facing = FacingDirection::Left; - }, - (Road::LeftUpRightDown, FacingDirection::Right, _) => { - cart.y -= 1; - cart.facing = FacingDirection::Up; - }, - (Road::LeftUpRightDown, FacingDirection::Left, _) => { - cart.y += 1; - cart.facing = FacingDirection::Down; - }, - (Road::LeftUpRightDown, FacingDirection::Up, _) => { - cart.x += 1; - cart.facing = FacingDirection::Right; - }, - - // \ - (Road::RightUpLeftDown, FacingDirection::Up, _) => { - cart.x -= 1; - cart.facing = FacingDirection::Left; - }, - (Road::RightUpLeftDown, FacingDirection::Left, _) => { - cart.y -= 1; - cart.facing = FacingDirection::Up; - }, - (Road::RightUpLeftDown, FacingDirection::Right, _) => { - cart.y += 1; - cart.facing = FacingDirection::Down; - }, - (Road::RightUpLeftDown, FacingDirection::Down, _) => { - cart.x += 1; - cart.facing = FacingDirection::Right; - }, - - (Road::Intersection, f, d) => { - cart.facing = d.rotate(&f); - cart.next_turn = d.next(); - match cart.facing { - FacingDirection::Up => { cart.y -= 1 }, - FacingDirection::Down => { cart.y += 1 }, - FacingDirection::Left => { cart.x -= 1 }, - FacingDirection::Right => { cart.x += 1 }, - } - }, - - (Road::None, _, _) => { - panic!("Offroad cart!"); - } - - } - - } - - let collisions = carts.iter() - .enumerate() - .filter(|(other_i, other)| *other_i != i && other.x == carts[i].x && other.y == carts[i].y) - .map(|(other_i, _)| other_i) - .collect::>(); - for other_i in collisions { - let crash_location = (carts[i].x, carts[i].y); - debug!(crash_location); - carts[i].crashed = true; - carts[other_i].crashed = true; - } - } - - carts.retain(|cart| !cart.crashed); - } - - debug!(carts); - - Ok(()) -} diff --git a/src/bin/day_14.rs b/src/bin/day_14.rs deleted file mode 100644 index cb16623..0000000 --- a/src/bin/day_14.rs +++ /dev/null @@ -1,111 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::error::Error; -use std::path::PathBuf; - -// cargo watch -cs "cargo run --release --bin day_14" - -fn main() -> Result<(), Box> { - let input = 540561; - - let scoreboard = find_ten_scoreboard_after(input); - - println!("Result: "); - scoreboard.iter().for_each(|s| { - print!("{}", s); - }); - println!(); - - let first_occurence = find_first_occurence_of(input); - debug!(first_occurence); - - Ok(()) -} - -fn find_ten_scoreboard_after(input: usize) -> Vec { - let mut scoreboard = vec!(3,7); - let mut elf1_pos = 0; - let mut elf2_pos = 1; - - while scoreboard.len() < (input + 10) { - let next = scoreboard[elf1_pos] + scoreboard[elf2_pos]; - for digit in number_to_digits_vec(next) { - scoreboard.push(digit); - } - - elf1_pos = (elf1_pos + 1 + scoreboard[elf1_pos]) % scoreboard.len(); - elf2_pos = (elf2_pos + 1 + scoreboard[elf2_pos]) % scoreboard.len(); - } - - scoreboard.iter().skip(input).take(10).cloned().collect() -} - -fn find_first_occurence_of(input: usize) -> usize { - let target_sequence = number_to_digits_vec(input); - debug!(target_sequence); - - let mut scoreboard = vec!(3,7); - let mut elf1_pos = 0; - let mut elf2_pos = 1; - let mut target_index = None; - - while target_index.is_none() { - let next = scoreboard[elf1_pos] + scoreboard[elf2_pos]; - for digit in number_to_digits_vec(next) { - scoreboard.push(digit); - } - - elf1_pos = (elf1_pos + 1 + scoreboard[elf1_pos]) % scoreboard.len(); - elf2_pos = (elf2_pos + 1 + scoreboard[elf2_pos]) % scoreboard.len(); - - if scoreboard.len() >= target_sequence.len() + 2 { - for potential_target_index in scoreboard.len()-target_sequence.len()-2..scoreboard.len()-target_sequence.len()+1 { - let found = scoreboard.iter() - .skip(potential_target_index) - .take(target_sequence.len()) - .zip(target_sequence.iter()) - .all(|(a, b)| a == b); - if found { - target_index = Some(potential_target_index); - } - } - } - } - - target_index.unwrap() -} - -fn number_to_digits_vec(input: usize) -> Vec { - if input == 0 { - return vec!(0); - } - - let mut result = Vec::new(); - let mut acc = input; - while acc > 0 { - result.push(acc % 10); - acc /= 10; - } - result.reverse(); - result -} - -#[test] -fn vectorification() { - assert_eq!(number_to_digits_vec(10), vec!(1, 0)); - assert_eq!(number_to_digits_vec(1), vec!(1)); - assert_eq!(number_to_digits_vec(0), vec!(0)); -} - -#[test] -fn part1_examples() { - assert_eq!(find_ten_scoreboard_after(9), vec!(5,1,5,8,9,1,6,7,7,9)); - assert_eq!(find_ten_scoreboard_after(2018), vec!(5,9,4,1,4,2,9,8,8,2)); -} - -#[test] -fn part2_examples() { - assert_eq!(find_first_occurence_of(51589), 9); - assert_eq!(find_first_occurence_of(59414), 2018); -} diff --git a/src/bin/day_15.rs b/src/bin/day_15.rs deleted file mode 100644 index c6f3cf2..0000000 --- a/src/bin/day_15.rs +++ /dev/null @@ -1,272 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::error::Error; -use std::path::PathBuf; - -// cargo watch -cs "cargo run --release --bin day_15" - -fn main() -> Result<(), Box> { - let input = read_file(&PathBuf::from("inputs/15.txt"))?; - - let (round_hp_product, _) = calculate_round_hp_product(&input, 3); - debug!(round_hp_product); - - for power in 3.. { - let (round_hp_product_without_losses, elf_losses) = calculate_round_hp_product(&input, power); - if (elf_losses == 0) { - debug!(round_hp_product_without_losses); - break; - } - } - - Ok(()) -} - -fn calculate_round_hp_product(input: &[String], elf_power: i32) -> (i32, usize) { - let goblin_power = 3; - let initial_hp = 200; - - let mut map = Vec::new(); - let mut units = Vec::new(); - - for (y, line) in input.iter().enumerate() { - let mut map_row = Vec::new(); - for (x, c) in line.chars().enumerate() { - map_row.push(c == '#'); - - let maybe_unit = match c { - 'G' => Some(Unit { - team: false, - x: x as i32, - y: y as i32, - hp: initial_hp - }), - 'E' => Some(Unit { - team: true, - x: x as i32, - y: y as i32, - hp: initial_hp - }), - _ => None - }; - if let Some(unit) = maybe_unit { - units.push(unit); - } - } - - map.push(map_row); - } - let start_elves = units.iter().filter(|u| u.team).count(); - - for round in 0.. { - // debug!(round); - // debug!(units); - // debug_print(&units, &map); - units.sort_unstable_by(|a, b| a.y.cmp(&b.y).then(a.x.cmp(&b.x))); - - for i in 0..units.len() { - if units[i].hp > 0 { - let battle_over = !units.iter().any(|other| other.hp > 0 && other.team != units[i].team); - if battle_over { - println!("Battle over"); - let hp_sum = units.iter().filter(|u| u.hp > 0).map(|u| u.hp).sum::(); - debug!(round); - debug!(hp_sum); - - let elf_losses = start_elves - units.iter().filter(|u| u.team).count(); - debug!(elf_losses); - return (round * hp_sum, elf_losses); - } - - let is_next_to_opponent = unit_at_point(!units[i].team, units[i].x-1, units[i].y, &units) - .or_else(|| unit_at_point(!units[i].team, units[i].x+1, units[i].y, &units)) - .or_else(|| unit_at_point(!units[i].team, units[i].x, units[i].y-1, &units)) - .or_else(|| unit_at_point(!units[i].team, units[i].x, units[i].y+1, &units)).is_some(); - if !is_next_to_opponent { - if let Some((next_x, next_y)) = find_next_step(i, &units, &map) { - units[i].x = next_x; - units[i].y = next_y; - } - } - - let mut attack_candidates = adjacent_units(!units[i].team, units[i].x, units[i].y, &units); - attack_candidates.sort_by(|&a, &b| units[a].hp.cmp(&units[b].hp)); - if let Some(&to_attack) = attack_candidates.first() { - let attack_power = if units[i].team { elf_power } else { goblin_power }; - units[to_attack].hp -= attack_power; - } - } - } - - units.retain(|u| u.hp > 0); - } - - panic!("Match ended unexpectedly"); -} - -fn find_next_step(i: usize, units: &[Unit], map: &Vec>) -> Option<(i32, i32)> { - let mut explored = vec!(Explored { - x: units[i].x, - y: units[i].y, - distance: 0, - parent: 0 - }); - - let mut explored_index = 0; - let mut distance_found = None; - while explored_index < explored.len() && distance_found.map_or(true, |distance| explored[explored_index].distance < distance) { - let distance = explored[explored_index].distance; - for (new_x, new_y) in adjacent_empty_spaces(explored[explored_index].x, explored[explored_index].y, &map, &units, &explored) { - explored.push(Explored { - x: new_x, - y: new_y, - distance: distance + 1, - parent: explored_index - }); - - if adjacent_units(!units[i].team, new_x, new_y, &units).len() > 0 { - distance_found = Some(distance + 1); - } - } - explored_index += 1; - } - - if let Some(distance) = distance_found { - let mut candidates = explored.iter().enumerate() - .filter(|(_,e)| e.distance == distance) - .filter(|(_,e)| adjacent_units(!units[i].team, e.x, e.y, &units).len() > 0) - .collect::>(); - candidates.sort_by(|(_,a), (_,b)| a.y.cmp(&b.y).then(a.x.cmp(&b.x))); - let (best_index, _) = candidates[0]; - - let mut result_index = best_index; - let mut next_index = best_index; - while next_index != 0 { - result_index = next_index; - next_index = explored[result_index].parent; - } - return Some((explored[result_index].x, explored[result_index].y)); - } - None -} - -fn adjacent_empty_spaces(x: i32, y: i32, map: &Vec>, units: &[Unit], explored: &[Explored]) -> Vec<(i32, i32)> { - [(x, y-1), (x-1, y), (x+1, y), (x, y+1)].iter() - .filter(|(x, y)| *x >= 0 && *y >= 0) - .filter(|(x, y)| !explored.iter().any(|e| e.x == *x && e.y == *y)) - .filter(|(x, y)| !units.iter().any(|e| e.hp > 0 && e.x == *x && e.y == *y)) - .filter(|(x, y)| !map[*y as usize][*x as usize]) - .cloned() - .collect() -} - -fn adjacent_units(team: bool, x: i32, y: i32, units: &[Unit]) -> Vec { - [(x, y-1), (x-1, y), (x+1, y), (x, y+1)].iter() - .filter_map(|(x, y)| unit_at_point(team, *x, *y, units)) - .collect() -} - -fn unit_at_point(team: bool, x: i32, y: i32, units: &[Unit]) -> Option { - units.iter().enumerate() - .find(|(_, u)| u.hp > 0 && u.team == team && u.x == x && u.y == y) - .map(|(i, _)| i) -} - -#[derive(Debug, Clone)] -struct Unit { - team: bool, - x: i32, - y: i32, - hp: i32 -} - -#[derive(Debug)] -struct Explored { - x: i32, - y: i32, - distance: u32, - parent: usize -} - - -fn debug_print(units: &[Unit], map: &Vec>) { - for (y, line) in map.iter().enumerate() { - for (x, wall) in line.iter().enumerate() { - let unit = units.iter().find(|u| u.hp > 0 && u.x == x as i32 && u.y == y as i32); - print!("{}", match (wall, unit) { - (true, _) => '#', - (false, Some(unit)) if unit.team => 'E', - (false, Some(_)) => 'G', - (false, None) => '.' - }); - } - println!(); - } - println!(); - println!(); -} - -fn part_1_test(input: &[&str]) -> i32 { - let owned_input = input.iter() - .map(|&line| line.to_owned()) - .collect::>(); - let (product, _) = calculate_round_hp_product(&owned_input, 3); - product -} - -#[test] -fn example_1() { - let input = vec!( - "#######", - "#.G...#", - "#...EG#", - "#.#.#G#", - "#..G#E#", - "#.....#", - "#######"); - assert_eq!(part_1_test(&input), 27730); -} - -#[test] -fn example_2() { - let input = vec!( - "#######", - "#G..#E#", - "#E#E.E#", - "#G.##.#", - "#...#E#", - "#...E.#", - "#######" - ); - assert_eq!(part_1_test(&input), 36334); -} - -#[test] -fn example_3() { - let input = vec!( - "#######", - "#E.G#.#", - "#.#G..#", - "#G.#.G#", - "#G..#.#", - "#...E.#", - "#######" - ); - assert_eq!(part_1_test(&input), 27755); -} - -#[test] -fn example_4() { - let input = vec!( - "#######", - "#.E...#", - "#.#..G#", - "#.###.#", - "#E#G#G#", - "#...#G#", - "#######" - ); - assert_eq!(part_1_test(&input), 28944); -} - diff --git a/src/bin/day_16.rs b/src/bin/day_16.rs deleted file mode 100644 index 275ec45..0000000 --- a/src/bin/day_16.rs +++ /dev/null @@ -1,205 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::error::Error; -use std::path::PathBuf; - -use std::collections::{HashMap, HashSet}; - -// cargo watch -cs "cargo run --release --bin day_16" - -struct Instruction { - op: Op, - a: i32, - b: i32, - c: i32 -} - -impl Instruction { - fn execute(&self, registers: &[i32; 4]) -> [i32; 4] { - use Op::*; - - let mut result_registers = registers.clone(); - - result_registers[self.c as usize] = match self.op { - Addr => registers[self.a as usize] + registers[self.b as usize], - Addi => registers[self.a as usize] + self.b, - Mulr => registers[self.a as usize] * registers[self.b as usize], - Muli => registers[self.a as usize] * self.b, - Banr => registers[self.a as usize] & registers[self.b as usize], - Bani => registers[self.a as usize] & self.b, - Borr => registers[self.a as usize] | registers[self.b as usize], - Bori => registers[self.a as usize] | self.b, - Setr => registers[self.a as usize], - Seti => self.a, - Gtir => if self.a > registers[self.b as usize] { 1 } else { 0 }, - Gtri => if registers[self.a as usize] > self.b { 1 } else { 0 }, - Gtrr => if registers[self.a as usize] > registers[self.b as usize] { 1 } else { 0 }, - Eqir => if self.a == registers[self.b as usize] { 1 } else { 0 }, - Eqri => if registers[self.a as usize] == self.b { 1 } else { 0 }, - Eqrr => if registers[self.a as usize] == registers[self.b as usize] { 1 } else { 0 } - }; - - result_registers - } -} - -#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] -enum Op { - Addr, - Addi, - Mulr, - Muli, - Banr, - Bani, - Borr, - Bori, - Setr, - Seti, - Gtir, - Gtri, - Gtrr, - Eqir, - Eqri, - Eqrr -} - -impl Op { - fn all() -> [Op; 16] { - use Op::*; - [ - Addr, - Addi, - Mulr, - Muli, - Banr, - Bani, - Borr, - Bori, - Setr, - Seti, - Gtir, - Gtri, - Gtrr, - Eqir, - Eqri, - Eqrr - ] - } -} - -struct UnknownInstruction { - before: [i32; 4], - after: [i32; 4], - opcode: i32, - a: i32, - b: i32, - c: i32 -} - -impl UnknownInstruction { - fn possible_matches(&self) -> HashSet { - Op::all() - .iter() - .filter(|&&op| { - let instruction = Instruction { - op: op, - a: self.a, - b: self.b, - c: self.c - }; - let result = instruction.execute(&self.before); - result == self.after - }) - .cloned() - .collect() - } -} - -fn main() -> Result<(), Box> { - let input_part_1 = read_file(&PathBuf::from("inputs/16_1.txt"))?; - - let unknown_instructions: Vec = input_part_1.chunks(3) - .map(|chunk| { - let mut before_iter = chunk[0].trim_matches(|c: char| !c.is_numeric()).split(", ").map(|c| c.parse::().unwrap()); - let before = [ - before_iter.next().unwrap(), - before_iter.next().unwrap(), - before_iter.next().unwrap(), - before_iter.next().unwrap(), - ]; - let mut after_iter = chunk[2].trim_matches(|c: char| !c.is_numeric()).split(", ").map(|c| c.parse::().unwrap()); - let after = [ - after_iter.next().unwrap(), - after_iter.next().unwrap(), - after_iter.next().unwrap(), - after_iter.next().unwrap(), - ]; - let mut instruction_iter = chunk[1].split_whitespace().map(|c| c.parse::().unwrap()); - UnknownInstruction { - before, after, - opcode: instruction_iter.next().unwrap(), - a: instruction_iter.next().unwrap(), - b: instruction_iter.next().unwrap(), - c: instruction_iter.next().unwrap(), - } - }) - .collect(); - - let matches_more_then_3 = unknown_instructions.iter() - .filter(|unknown| { - unknown.possible_matches().len() >= 3 - }) - .count(); - - debug!(matches_more_then_3); - - - let mut opcodes: HashMap> = HashMap::new(); - for unknown in unknown_instructions { - let matches = unknown.possible_matches(); - let to_insert = match opcodes.get(&unknown.opcode) { - None => matches, - Some(existing) => existing.intersection(&matches).cloned().collect() - }; - opcodes.insert(unknown.opcode, to_insert); - } - debug!(opcodes); - - let mut known_opcodes: HashMap = HashMap::new(); - - while known_opcodes.len() < 16 { - let (opcode, op) = { - let (opcode, opset) = opcodes.iter().find(|(_,set)| set.len() == 1).unwrap(); - let op = opset.iter().next().unwrap().clone(); - (opcode.clone(), op) - }; - known_opcodes.insert(opcode, op); - opcodes.iter_mut().for_each(|(_, set)| { - set.remove(&op); - }); - } - debug!(known_opcodes); - - - let input_part_2 = read_file(&PathBuf::from("inputs/16_2.txt"))?; - let instructions: Vec = input_part_2.iter() - .map(|line| { - let mut instruction_iter = line.split_whitespace().map(|c| c.parse::().unwrap()); - Instruction { - op: known_opcodes.get(&instruction_iter.next().unwrap()).unwrap().clone(), - a: instruction_iter.next().unwrap(), - b: instruction_iter.next().unwrap(), - c: instruction_iter.next().unwrap(), - } - }) - .collect(); - - let mut registers = [0; 4]; - for instruction in instructions { - registers = instruction.execute(®isters); - } - debug!(registers); - - Ok(()) -} diff --git a/src/bin/day_17.rs b/src/bin/day_17.rs deleted file mode 100644 index f479c3a..0000000 --- a/src/bin/day_17.rs +++ /dev/null @@ -1,175 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::error::Error; -use std::path::PathBuf; - -// cargo watch -cs "cargo run --release --bin day_17" - -struct CoordBuilder { - xmin: Option, - xmax: Option, - ymin: Option, - ymax: Option -} - -#[derive(Debug)] -struct Coord { - xmin: usize, - xmax: usize, - ymin: usize, - ymax: usize -} - -impl CoordBuilder { - fn new() -> CoordBuilder { - CoordBuilder { - xmin: None, - xmax: None, - ymin: None, - ymax: None - } - } - - fn build(&self) -> Coord { - Coord { - xmin: self.xmin.unwrap(), - xmax: self.xmax.unwrap(), - ymin: self.ymin.unwrap(), - ymax: self.ymax.unwrap(), - } - } -} - -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -enum Tile { - Clay, - RunningWater, - HalfSettledWater, - SettledWater, - Sand -} - -fn main() -> Result<(), Box> { - let input = read_file(&PathBuf::from("inputs/17.txt"))?; - - let clay_coords = input.iter().map(|line| { - let mut builder = CoordBuilder::new(); - for split in line.split(", ") { - if split.starts_with("x=") { - let mut range_split = split - .trim_matches(|c: char| !c.is_numeric()) - .split("..") - .map(|s| s.parse().unwrap()); - if let Some(min) = range_split.next() { - builder.xmin = Some(min); - builder.xmax = Some(min+1); - } - if let Some(max) = range_split.next() { - builder.xmax = Some(max+1); - } - } else { - let mut range_split = split - .trim_matches(|c: char| !c.is_numeric()) - .split("..") - .map(|s| s.parse().unwrap()); - if let Some(min) = range_split.next() { - builder.ymin = Some(min); - builder.ymax = Some(min+1); - } - if let Some(max) = range_split.next() { - builder.ymax = Some(max+1); - } - } - } - builder.build() - }).collect::>(); - - let range = CoordinateSystem { - xmin: clay_coords.iter().min_by_key(|coord| coord.xmin).unwrap().xmin-2, - xmax: clay_coords.iter().max_by_key(|coord| coord.xmax).unwrap().xmax+2, - ymin: clay_coords.iter().min_by_key(|coord| coord.ymin).unwrap().ymin, - ymax: clay_coords.iter().max_by_key(|coord| coord.ymax).unwrap().ymax - }; - - debug!(range); - - - let mut map = vec!(Tile::Sand; range.vector_size()); - for coord in clay_coords { - for y in coord.ymin..coord.ymax { - for x in coord.xmin..coord.xmax { - map[range.to_vec(x, y)] = Tile::Clay; - } - } - } - - debug!(map[range.to_vec(500, range.ymin)]); - map[range.to_vec(500, range.ymin)] = Tile::RunningWater; - - let mut last_iter = Vec::new(); - while last_iter != map { - last_iter = map.clone(); - for y in range.ymin..range.ymax-1 { - for x in range.xmin..range.xmax { - match map[range.to_vec(x, y)] { - Tile::RunningWater => { - if map[range.to_vec(x, y+1)] == Tile::Sand { - map[range.to_vec(x, y+1)] = Tile::RunningWater; - } - if map[range.to_vec(x-1, y)] == Tile::Sand && (map[range.to_vec(x, y+1)] == Tile::Clay || map[range.to_vec(x, y+1)] == Tile::SettledWater) { - map[range.to_vec(x-1, y)] = Tile::RunningWater; - } - if map[range.to_vec(x+1, y)] == Tile::Sand && (map[range.to_vec(x, y+1)] == Tile::Clay || map[range.to_vec(x, y+1)] == Tile::SettledWater) { - map[range.to_vec(x+1, y)] = Tile::RunningWater; - } - if (map[range.to_vec(x-1, y)] == Tile::Clay || map[range.to_vec(x-1, y)] == Tile::HalfSettledWater) && (map[range.to_vec(x, y+1)] == Tile::Clay || map[range.to_vec(x, y+1)] == Tile::SettledWater) { - map[range.to_vec(x, y)] = Tile::HalfSettledWater; - } - }, - Tile::HalfSettledWater => { - if map[range.to_vec(x+1, y)] == Tile::Clay { - for xleft in 0.. { - if map[range.to_vec(x-xleft, y)] == Tile::HalfSettledWater { - map[range.to_vec(x-xleft, y)] = Tile::SettledWater; - } else { - break; - } - } - } - }, - _ => {} - } - } - } - } - - let water_tiles = map.iter() - .filter(|&&t| t == Tile::RunningWater || t == Tile::SettledWater || t == Tile::HalfSettledWater) - .count(); - debug!(water_tiles); - - let settled_water_tiles = map.iter() - .filter(|&&t| t == Tile::SettledWater) - .count(); - debug!(settled_water_tiles); - - Ok(()) -} - -#[derive(Debug)] -struct CoordinateSystem { - xmin: usize, - xmax: usize, - ymin: usize, - ymax: usize -} - -impl CoordinateSystem { - fn vector_size(&self) -> usize { - (self.xmax - self.xmin) * (self.ymax - self.ymin) - } - fn to_vec(&self, x: usize, y: usize) -> usize { - ((y - self.ymin) * (self.xmax - self.xmin)) + (x - self.xmin) - } -} diff --git a/src/bin/day_18.rs b/src/bin/day_18.rs deleted file mode 100644 index 3908ea7..0000000 --- a/src/bin/day_18.rs +++ /dev/null @@ -1,123 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -extern crate arrayvec; -use arrayvec::ArrayVec; - -use std::error::Error; -use std::path::PathBuf; - -use std::collections::HashMap; - -// cargo watch -cs "cargo run --release --bin day_18" - -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -enum State { - Open, - Trees, - Lumber -} - -fn main() -> Result<(), Box> { - let input = read_file(&PathBuf::from("inputs/18.txt"))?; - -// println!("Input: {:?}", input); - - let map = input.iter().map(|line| { - line.chars().map(|c| match c { - '.' => State::Open, - '|' => State::Trees, - '#' => State::Lumber, - _ => panic!("Unknown character {}", c) - }).collect::>() - }).collect::>(); -// debug!(map); - - let after_10 = simulate(&map, 10); - let trees_count_10: usize = after_10.iter().map(|row| row.iter().filter(|&&x| x == State::Trees).count()).sum(); - let lumber_count_10: usize = after_10.iter().map(|row| row.iter().filter(|&&x| x == State::Lumber).count()).sum(); - debug!(trees_count_10); - debug!(lumber_count_10); - debug!(trees_count_10 * lumber_count_10); - - let after_many = simulate(&map, 1000000000); - let trees_count_many: usize = after_many.iter().map(|row| row.iter().filter(|&&x| x == State::Trees).count()).sum(); - let lumber_count_many: usize = after_many.iter().map(|row| row.iter().filter(|&&x| x == State::Lumber).count()).sum(); - debug!(trees_count_many); - debug!(lumber_count_many); - debug!(trees_count_many * lumber_count_many); - - - Ok(()) -} - - -fn simulate(start_map: &Vec>, duration: u32) -> Vec> { - let mut previous_maps = HashMap::new(); - - let mut map = start_map.clone(); - - let mut t = 0; - while t < duration { - let map0 = map.clone(); - for y in 0..map.len() { - for x in 0..map[y].len() { - let adjacent = [ - (x.wrapping_sub(1), y.wrapping_sub(1)), - (x, y.wrapping_sub(1)), - (x+1, y.wrapping_sub(1)), - (x.wrapping_sub(1), y), - (x+1, y), - (x.wrapping_sub(1), y+1), - (x, y+1), - (x+1, y+1) - ].iter().map(|&(other_x,other_y)| { - if other_y >= map0.len() || other_x >= map0[other_y].len() { - State::Open - } else { - map0[other_y][other_x] - } - }).collect::>(); - - let adjacent_trees = adjacent.iter().filter(|&&x| x == State::Trees).count(); - let adjacent_lumber = adjacent.iter().filter(|&&x| x == State::Lumber).count(); - - map[y][x] = match (map0[y][x], adjacent_trees, adjacent_lumber) { - (State::Open, trees, _) if trees >= 3 => State::Trees, - (State::Open, _, _) => State::Open, - (State::Trees, _, lumber) if lumber >= 3 => State::Lumber, - (State::Trees, _, _) => State::Trees, - (State::Lumber, trees, lumber) if trees >= 1 && lumber >= 1 => State::Lumber, - (State::Lumber, _, _) => State::Open - } - } - } - - t += match previous_maps.get(&map) { - Some(previous_t) => { - let period = t + 1 - previous_t; - let whole_periods = (duration - t - 1) / period; - (period * whole_periods) + 1 - }, - None => 1 - }; - previous_maps.insert(map.clone(), t); - } - - map -} - -fn debug_print(map: &Vec>) { - for row in map { - for c in row { - print!("{}", match c { - State::Open => '.', - State::Trees => '|', - State::Lumber => '#' - }); - } - println!(); - } - println!(); - println!(); -} diff --git a/src/bin/day_19.rs b/src/bin/day_19.rs deleted file mode 100644 index 37ffef1..0000000 --- a/src/bin/day_19.rs +++ /dev/null @@ -1,139 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::error::Error; -use std::path::PathBuf; - -// cargo watch -cs "cargo run --release --bin day_19" - -#[derive(Debug)] -struct Instruction { - op: Op, - a: i32, - b: i32, - c: i32 -} - -impl Instruction { - fn execute(&self, counter_register: usize, registers: &mut [i32; 6]) -> i32{ - use Op::*; - - registers[self.c as usize] = match self.op { - Addr => registers[self.a as usize] + registers[self.b as usize], - Addi => registers[self.a as usize] + self.b, - Mulr => registers[self.a as usize] * registers[self.b as usize], - Muli => registers[self.a as usize] * self.b, - Banr => registers[self.a as usize] & registers[self.b as usize], - Bani => registers[self.a as usize] & self.b, - Borr => registers[self.a as usize] | registers[self.b as usize], - Bori => registers[self.a as usize] | self.b, - Setr => registers[self.a as usize], - Seti => self.a, - Gtir => if self.a > registers[self.b as usize] { 1 } else { 0 }, - Gtri => if registers[self.a as usize] > self.b { 1 } else { 0 }, - Gtrr => if registers[self.a as usize] > registers[self.b as usize] { 1 } else { 0 }, - Eqir => if self.a == registers[self.b as usize] { 1 } else { 0 }, - Eqri => if registers[self.a as usize] == self.b { 1 } else { 0 }, - Eqrr => if registers[self.a as usize] == registers[self.b as usize] { 1 } else { 0 }, - }; - - registers[counter_register]+1 - } -} - -#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] -enum Op { - Addr, - Addi, - Mulr, - Muli, - Banr, - Bani, - Borr, - Bori, - Setr, - Seti, - Gtir, - Gtri, - Gtrr, - Eqir, - Eqri, - Eqrr -} - -fn main() -> Result<(), Box> { - let input = read_file(&PathBuf::from("inputs/19.txt"))?; - - println!("Input: {:?}", input); - - let mut input_iter = input.iter(); - let counter_register: usize = input_iter.next() - .map(|line| line.split_whitespace().nth(1).unwrap().parse().unwrap()) - .unwrap(); - - let instructions: Vec = input_iter - .map(|line| { - let mut instruction_iter = line.split_whitespace(); - Instruction { - op: match instruction_iter.next().unwrap() { - "addr" => Op::Addr, - "addi" => Op::Addi, - "mulr" => Op::Mulr, - "muli" => Op::Muli, - "banr" => Op::Banr, - "bani" => Op::Bani, - "borr" => Op::Borr, - "bori" => Op::Bori, - "setr" => Op::Setr, - "seti" => Op::Seti, - "gtir" => Op::Gtir, - "gtri" => Op::Gtri, - "gtrr" => Op::Gtrr, - "eqir" => Op::Eqir, - "eqri" => Op::Eqri, - "eqrr" => Op::Eqrr, - _ => panic!("unknown instruction") - }, - a: instruction_iter.next().unwrap().parse().unwrap(), - b: instruction_iter.next().unwrap().parse().unwrap(), - c: instruction_iter.next().unwrap().parse().unwrap(), - } - }) - .collect(); - - debug!(counter_register); - debug!(instructions); - - let part1_registers = execute_program(&instructions, counter_register, [0; 6]); - debug!(part1_registers); - - //let part2_registers = execute_program(&instructions, counter_register, [1, 0, 0, 0, 0, 0]); - //debug!(part2_registers); - part2(); - - Ok(()) -} - -fn execute_program(instructions: &Vec, counter_register: usize, registers: [i32; 6]) -> [i32; 6] { - let mut counter_val: i32 = 0; - let mut registers = registers.clone(); - while counter_val >= 0 && counter_val < instructions.len() as i32 { - registers[counter_register] = counter_val; - counter_val = instructions[counter_val as usize].execute(counter_register, &mut registers); - } - - registers -} - - - -fn part2() { - let r1 = ((27*28)+29)*30*14*32 + (11 * 19 * 2 * 2) + (3 * 22) + 9; - let mut r0 = 0; - for r5 in 1..r1+1 { - if r1 % r5 == 0 { - r0 += r1 / r5; - } - } - debug!(r0); -} diff --git a/src/bin/day_2.rs b/src/bin/day_2.rs deleted file mode 100644 index 7700871..0000000 --- a/src/bin/day_2.rs +++ /dev/null @@ -1,53 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::error::Error; -use std::path::PathBuf; - -extern crate im_rc; -use im_rc::HashMap; - -// cargo watch -cs "cargo run --release --bin day_2" - -fn main() -> Result<(), Box> { - let input = read_file(&PathBuf::from("inputs/2.txt"))?; - - println!("Input: {:?}", input); - - let (twice, thrice) = input.iter().fold((0,0), |(twice, thrice), next| { - let occurances = next.chars().fold(HashMap::new(), |occurances, c| { - let counter = occurances.get(&c).cloned().unwrap_or(0); - occurances.update(c, counter + 1) - }); - let has_twice = occurances.values().any(|count| *count == 2); - let has_thrice = occurances.values().any(|count| *count == 3); - - ( - twice + if has_twice { 1 } else { 0 }, - thrice + if has_thrice { 1 } else { 0 }, - ) - }); - - println!("Twice: {}", twice); - println!("Thrice: {}", thrice); - - let checksum = twice * thrice; - println!("Checksum: {}", checksum); - - for i in &input { - for j in &input { - let diff = i.chars().zip(j.chars()).fold(0, |diff, (x, y)| { - if x != y { - diff + 1 - } else { - diff - } - }); - if diff == 1 { - println!("Diff of 1: {} + {}", i, j); - } - } - } - - Ok(()) -} diff --git a/src/bin/day_20.rs b/src/bin/day_20.rs deleted file mode 100644 index 6486d72..0000000 --- a/src/bin/day_20.rs +++ /dev/null @@ -1,137 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::error::Error; -use std::path::PathBuf; - -use std::collections::{HashSet, HashMap}; - -// cargo watch -cs "cargo run --release --bin day_20" - -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -enum Dir { - N, S, E, W -} - -#[derive(Debug)] -struct Room { - doors: HashSet -} - -impl Room { - fn new() -> Room { - Room { - doors: HashSet::new() - } - } -} - -fn main() -> Result<(), Box> { - let input = &read_file(&PathBuf::from("inputs/20.txt"))?[0]; - - println!("Input: {:?}", input); - - let rooms = populate_rooms(input); - let distances = distance_map(&rooms); - - debug!(distance_to_furthest_room(&distances)); - debug!(distances_more_than_1000(&distances)); - - Ok(()) -} - -fn populate_rooms(input: &str) -> HashMap<(i32, i32), Room> { - let mut rooms: HashMap<(i32, i32), Room> = HashMap::new(); - rooms.insert((0,0), Room::new()); - - let mut coords = vec!((0, 0)); - - let mut coord_stack: Vec<(Vec<(i32, i32)>, Vec<(i32, i32)>)> = Vec::new(); - - for c in input.chars() { - match c { - '^' | '$' => {}, - 'E' => { - for coord in &mut coords { - rooms.get_mut(coord).unwrap().doors.insert(Dir::E); - coord.0 += 1; - rooms.entry(*coord).or_insert(Room::new()); - } - }, - 'W' => { - for coord in &mut coords { - rooms.get_mut(coord).unwrap().doors.insert(Dir::W); - coord.0 -= 1; - rooms.entry(*coord).or_insert(Room::new()); - } - }, - 'N' => { - for coord in &mut coords { - rooms.get_mut(coord).unwrap().doors.insert(Dir::N); - coord.1 -= 1; - rooms.entry(*coord).or_insert(Room::new()); - } - }, - 'S' => { - for coord in &mut coords { - rooms.get_mut(coord).unwrap().doors.insert(Dir::S); - coord.1 += 1; - rooms.entry(*coord).or_insert(Room::new()); - } - }, - '(' => { - coord_stack.push((coords.clone(), Vec::new())); - }, - '|' => { - coord_stack.last_mut().unwrap().1.append(&mut coords); - coords = coord_stack.last().unwrap().0.clone(); - }, - ')' => { - coord_stack.last_mut().unwrap().1.append(&mut coords); - coords = coord_stack.pop().unwrap().1; - coords.sort(); - coords.dedup(); - }, - c => { - panic!("Unknown character {}", c); - } - } - } - - debug!(rooms.len()); - - rooms -} - -fn distance_map(rooms: &HashMap<(i32, i32), Room>) -> HashMap<(i32, i32), u32> { - let mut distances: HashMap<(i32, i32), u32> = HashMap::new(); - distances.insert((0,0), 0); - - while distances.len() < rooms.len() { - let current_max = *distances.values().max().unwrap(); - let new_distances = distances.iter() - .filter(|(_, &d)| d == current_max) - .flat_map(|(&coord, _)| { - let room = rooms.get(&coord).unwrap(); - room.doors.iter().map(|dir| match dir { - Dir::N => (coord.0, coord.1-1), - Dir::S => (coord.0, coord.1+1), - Dir::W => (coord.0-1, coord.1), - Dir::E => (coord.0+1, coord.1) - }).collect::>() - }) - .collect::>(); - for coord in new_distances { - distances.entry(coord).or_insert(current_max + 1); - } - } - distances -} - -fn distance_to_furthest_room(distances: &HashMap<(i32, i32), u32>) -> u32 { - distances.values().max().unwrap().clone() -} - -fn distances_more_than_1000(distances: &HashMap<(i32, i32), u32>) -> u32 { - distances.values().filter(|&&x| x >= 1000).count() as u32 -} diff --git a/src/bin/day_21.rs b/src/bin/day_21.rs deleted file mode 100644 index 0d9a97c..0000000 --- a/src/bin/day_21.rs +++ /dev/null @@ -1,137 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::error::Error; -use std::path::PathBuf; -use std::u32; - -use std::collections::HashMap; -// cargo watch -cs "cargo run --release --bin day_21" - -use std::i32; - -#[derive(Debug)] -struct Instruction { - op: Op, - a: i32, - b: i32, - c: i32 -} - -impl Instruction { - fn execute(&self, counter_register: usize, registers: &mut [i32; 6]) -> i32{ - use Op::*; - - registers[self.c as usize] = match self.op { - Addr => registers[self.a as usize].wrapping_add(registers[self.b as usize]), - Addi => registers[self.a as usize].wrapping_add(self.b), - Mulr => registers[self.a as usize].wrapping_mul(registers[self.b as usize]), - Muli => registers[self.a as usize].wrapping_mul(self.b), - Banr => registers[self.a as usize] & registers[self.b as usize], - Bani => registers[self.a as usize] & self.b, - Borr => registers[self.a as usize] | registers[self.b as usize], - Bori => registers[self.a as usize] | self.b, - Setr => registers[self.a as usize], - Seti => self.a, - Gtir => if self.a > registers[self.b as usize] { 1 } else { 0 }, - Gtri => if registers[self.a as usize] > self.b { 1 } else { 0 }, - Gtrr => if registers[self.a as usize] > registers[self.b as usize] { 1 } else { 0 }, - Eqir => if self.a == registers[self.b as usize] { 1 } else { 0 }, - Eqri => if registers[self.a as usize] == self.b { 1 } else { 0 }, - Eqrr => if registers[self.a as usize] == registers[self.b as usize] { 1 } else { 0 }, - }; - - registers[counter_register]+1 - } -} - -#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] -enum Op { - Addr, - Addi, - Mulr, - Muli, - Banr, - Bani, - Borr, - Bori, - Setr, - Seti, - Gtir, - Gtri, - Gtrr, - Eqir, - Eqri, - Eqrr -} - - -fn main() -> Result<(), Box> { - let input = read_file(&PathBuf::from("inputs/21.txt"))?; - - let mut input_iter = input.iter(); - let counter_register: usize = input_iter.next() - .map(|line| line.split_whitespace().nth(1).unwrap().parse().unwrap()) - .unwrap(); - - let instructions: Vec = input_iter - .map(|line| { - let mut instruction_iter = line.split_whitespace(); - Instruction { - op: match instruction_iter.next().unwrap() { - "addr" => Op::Addr, - "addi" => Op::Addi, - "mulr" => Op::Mulr, - "muli" => Op::Muli, - "banr" => Op::Banr, - "bani" => Op::Bani, - "borr" => Op::Borr, - "bori" => Op::Bori, - "setr" => Op::Setr, - "seti" => Op::Seti, - "gtir" => Op::Gtir, - "gtri" => Op::Gtri, - "gtrr" => Op::Gtrr, - "eqir" => Op::Eqir, - "eqri" => Op::Eqri, - "eqrr" => Op::Eqrr, - _ => panic!("unknown instruction") - }, - a: instruction_iter.next().unwrap().parse().unwrap(), - b: instruction_iter.next().unwrap().parse().unwrap(), - c: instruction_iter.next().unwrap().parse().unwrap(), - } - }) - .collect(); - - execute_program(&instructions, counter_register, [0, 0, 0, 0, 0, 0]); - - Ok(()) -} - -fn execute_program(instructions: &Vec, counter_register: usize, registers: [i32; 6]) { - let mut instructions_executed: u64 = 0; - let mut counter_val: i32 = 0; - let mut registers = registers.clone(); - let mut halting_values = HashMap::new(); - - while counter_val >= 0 && counter_val < instructions.len() as i32 { - if counter_val == 28 { - if halting_values.contains_key(®isters[4]) { - break; - } - halting_values.entry(registers[4]).or_insert(instructions_executed+2); - } - registers[counter_register] = counter_val; - counter_val = instructions[counter_val as usize].execute(counter_register, &mut registers); - instructions_executed += 1; - } - - let (min_halting, min_halting_time) = halting_values.iter().min_by_key(|&(_, v)| v).unwrap(); - debug!(min_halting); - debug!(min_halting_time); - let (max_halting, max_halting_time) = halting_values.iter().max_by_key(|&(_, v)| v).unwrap(); - debug!(max_halting); - debug!(max_halting_time); - -} diff --git a/src/bin/day_22.rs b/src/bin/day_22.rs deleted file mode 100644 index f9013cf..0000000 --- a/src/bin/day_22.rs +++ /dev/null @@ -1,165 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::error::Error; -use std::path::PathBuf; - -use std::u32; -use std::collections::{HashMap, HashSet}; - -// cargo watch -cs "cargo run --release --bin day_22" - -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -struct Position { - x: u32, - y: u32, - equipment: u32 // 0 = nothing, 1 = torch, 2 = climbing -} - -impl Position { - fn adjacent(&self, map: &Vec>) -> Vec<(Position, u32)> { - let all_adjacent = [ - (Position { - x: self.x.saturating_sub(1), - ..*self - }, 1), - (Position { - y: self.y.saturating_sub(1), - ..*self - }, 1), - (Position { - x: self.x+1, - ..*self - }, 1), - (Position { - y: self.y+1, - ..*self - }, 1), - (Position { - equipment: (self.equipment+1)%3, - ..*self - }, 7), - (Position { - equipment: (self.equipment+2)%3, - ..*self - }, 7) - ]; - all_adjacent.iter() - .filter(|(p, _)| { - let region = map[p.y as usize][p.x as usize]; - let out_of_bounds = self == p; - let invalid_equipment = (region == 0 && p.equipment == 0) || - (region == 1 && p.equipment == 1) || - (region == 2 && p.equipment == 2); - !out_of_bounds && !invalid_equipment - }) - .cloned() - .collect() - } -} - -fn main() -> Result<(), Box> { - let input = &read_file(&PathBuf::from("inputs/22.txt"))?; - - let depth: u32 = input[0].trim_matches(|c: char| !c.is_numeric()).parse().unwrap(); - debug!(depth); - let mut input_target_iter = input[1] - .split(|c: char| !c.is_numeric()) - .filter(|s| !s.is_empty()) - .map(|s| s.parse::().unwrap()); - - let target_x = input_target_iter.next().unwrap(); - let target_y = input_target_iter.next().unwrap(); - - debug!((target_x, target_y)); - - let mut map_width = target_x; - let mut map_height = target_y; - let mut map = build_map(map_width, map_height, depth, target_x, target_y); - - let risk: u32 = map.iter().take((target_y+1) as usize).map(|row| row.iter().take((target_x+1) as usize).sum::()).sum(); - debug!(risk); - - - let mut distances = HashMap::new(); - let mut unexplored = HashSet::new(); - let initial = Position { - x: 0, - y: 0, - equipment: 1 - }; - let target = Position { - x: target_x, - y: target_y, - equipment: 1 - }; - distances.insert(initial, 0); - unexplored.insert(initial); - - while !distances.contains_key(&target) || unexplored.contains(&target) { - let (current, current_distance) = unexplored.iter() - .map(|unexp| (unexp.clone(), distances.get(unexp).cloned().unwrap())) - .min_by_key(|(_, d)| *d) - .unwrap(); - - if current.y+1 >= map_height { - map_height *= 2; - map = build_map(map_width, map_height, depth, target_x, target_y); - debug!(map_height); - } - if current.x+1 >= map_width { - map_width *= 2; - map = build_map(map_width, map_height, depth, target_x, target_y); - debug!(map_width); - } - - for (adjacent, further) in current.adjacent(&map) { - let distance = current_distance + further; - let best_previous_distance = distances.get(&adjacent).cloned().unwrap_or(u32::MAX); - if best_previous_distance > distance { - distances.insert(adjacent, distance); - unexplored.insert(adjacent); - } - - } - unexplored.remove(¤t); - } - - debug!(distances.get(&target)); - - Ok(()) -} - - -fn build_map(max_x: u32, max_y: u32, depth: u32, target_x: u32, target_y: u32) -> Vec> { - let mut geologic_index: Vec> = Vec::new(); - let mut erosion_level: Vec> = Vec::new(); - let mut region_type: Vec> = Vec::new(); - - for y in 0..max_y { - let mut geologic_row = Vec::new(); - let mut erosion_row = Vec::new(); - let mut type_row = Vec::new(); - - for x in 0..max_x { - let index = match (x, y) { - (0, 0) => 0, - (x, y) if x == target_x && y == target_y => 0, - (x, 0) => x*16807, - (0, y) => y*48271, - (x, y) => erosion_row[(x-1) as usize] * erosion_level[(y-1) as usize][x as usize] - }; - let erosion = (index + depth) % 20183; - let block_type = erosion % 3; - - geologic_row.push(index); - erosion_row.push(erosion); - type_row.push(block_type); - } - - geologic_index.push(geologic_row); - erosion_level.push(erosion_row); - region_type.push(type_row); - } - region_type -} diff --git a/src/bin/day_23.rs b/src/bin/day_23.rs deleted file mode 100644 index 463f3d3..0000000 --- a/src/bin/day_23.rs +++ /dev/null @@ -1,114 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::error::Error; -use std::path::PathBuf; -use std::cmp; - -// cargo watch -cs "cargo run --release --bin day_23" - -#[derive(Debug, Clone)] -struct Bot { - radius: i64, - position: Position -} - -#[derive(Debug, Clone)] -struct Position { - x: i64, - y: i64, - z: i64 -} - -impl Position { - fn distance(&self, other: &Position) -> i64 { - (other.z - self.z).abs() + - (other.y - self.y).abs() + - (other.x - self.x).abs() - } -} - -fn main() -> Result<(), Box> { - let input = read_file(&PathBuf::from("inputs/23.txt"))?; - - let mut bots: Vec = input.iter().map(|line| { - let mut line_iter = line.split(|c: char| c != '-' && !c.is_numeric()) - .filter(|s| !s.is_empty()) - .map(|s| s.parse::().unwrap()); - Bot { - position: Position { - x: line_iter.next().unwrap(), - y: line_iter.next().unwrap(), - z: line_iter.next().unwrap() - }, - radius: line_iter.next().unwrap() - } - }).collect(); - - let biggest_radius = bots.iter().max_by_key(|bot| bot.radius).unwrap(); - let biggest_radius_in_range_count = bots.iter() - .filter(|bot| biggest_radius.position.distance(&bot.position) <= biggest_radius.radius) - .count(); - debug!(biggest_radius); - debug!(biggest_radius_in_range_count); - - - let min_x = bots.iter().min_by_key(|bot| bot.position.x).unwrap().position.x; - let max_x = bots.iter().max_by_key(|bot| bot.position.x).unwrap().position.x; - debug!(min_x); - debug!(max_x); - let min_y = bots.iter().min_by_key(|bot| bot.position.y).unwrap().position.y; - let max_y = bots.iter().max_by_key(|bot| bot.position.y).unwrap().position.y; - debug!(min_y); - debug!(max_y); - let min_z = bots.iter().min_by_key(|bot| bot.position.z).unwrap().position.z; - let max_z = bots.iter().max_by_key(|bot| bot.position.z).unwrap().position.z; - debug!(min_z); - debug!(max_z); - - let origin = Position { x: 0, y: 0, z: 0 }; - - let mut radius = cmp::max(max_x - min_x, cmp::max(max_y-min_y, max_z-min_z)); - let mut center = origin.clone(); - - while radius > 0 { - let delta = 0.8; - let new_radius = if radius == 1 { 0 } else { (radius as f32 * delta) as i64 }; - let deltas = [-1.0, -0.8, -0.6, -0.4, -0.2, 0.0, 0.2, 0.4, 0.6, 0.8, 1.0]; - let subs: Vec = deltas.iter().flat_map(|&dx| { - deltas.iter().flat_map(|&dy| { - deltas.iter().map(|&dz| { - Position { - x: center.x + (radius as f32 * dx) as i64, - y: center.y + (radius as f32 * dy) as i64, - z: center.z + (radius as f32 * dz) as i64 - } - }).collect::>() - }).collect::>() - }).collect(); - - center = subs.iter() - .map(|new_center| { - (new_center, bots.iter() - .filter(|bot| bot.position.distance(&new_center) <= bot.radius + new_radius) - .count()) - }) - .max_by(|(a_center, a_bots), (b_center, b_bots)| { - a_bots.cmp(&b_bots).then(b_center.distance(&origin).cmp(&a_center.distance(&origin))) - }) - .map(|(center, _)| center) - .unwrap().clone(); - - radius = new_radius; - } - - let connected_in_radius = bots.iter() - .filter(|bot| bot.position.distance(¢er) <= bot.radius) - .count(); - debug!(connected_in_radius); - debug!(center); - let distance_to_origin = center.distance(&origin); - debug!(distance_to_origin); - - Ok(()) -} diff --git a/src/bin/day_24.rs b/src/bin/day_24.rs deleted file mode 100644 index d52f7d0..0000000 --- a/src/bin/day_24.rs +++ /dev/null @@ -1,217 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::error::Error; -use std::path::PathBuf; -use std::str::FromStr; - -use std::collections::HashMap; - -// cargo watch -cs "cargo run --release --bin day_24" - -#[derive(Debug, Clone)] -struct Army { - units: u32, - hp: u32, - weaknesses: Vec, - immunities: Vec, - damage_type: String, - damage: u32, - initiative: u32 -} - -impl Army { - fn effective_power(&self) -> u32 { - self.units * self.damage - } - - fn actual_damage(&self, other: &Army) -> u32 { - let modifier = if other.weaknesses.contains(&self.damage_type) { - 2 - } else if other.immunities.contains(&self.damage_type) { - 0 - } else { - 1 - }; - self.effective_power() * modifier - } -} - -impl FromStr for Army { - type Err = Box; - - fn from_str(s: &str) -> Result { - // 2991 units each with 8084 hit points (weak to fire) with an attack that does 19 radiation damage at initiative 11 - let mut words = s.split_whitespace(); - let units = words.next().unwrap().parse()?; - let hp = words.nth(3).unwrap().parse()?; - let _ = words.nth(1); - - let mut weaknesses = Vec::new(); - let mut immunities = Vec::new(); - - let mut bracket_handled = false; - while !bracket_handled { - let maybe_weak_or_immune = words.next().unwrap().trim_matches(|c: char| !c.is_alphabetic()); - if maybe_weak_or_immune == "weak" { - let mut weakness = words.nth(1).unwrap(); - weaknesses.push(weakness.trim_matches(|c: char| !c.is_alphabetic()).to_string()); - while weakness.ends_with(',') { - weakness = words.next().unwrap(); - weaknesses.push(weakness.trim_matches(|c: char| !c.is_alphabetic()).to_string()); - } - } - else if maybe_weak_or_immune == "immune" { - let mut immunity = words.nth(1).unwrap(); - immunities.push(immunity.trim_matches(|c: char| !c.is_alphabetic()).to_string()); - while immunity.ends_with(',') { - immunity = words.next().unwrap(); - immunities.push(immunity.trim_matches(|c: char| !c.is_alphabetic()).to_string()); - } - } - else { - bracket_handled = true; - } - } - let damage = words.nth(4).unwrap().parse()?; - let damage_type = words.next().unwrap().to_string(); - let initiative = words.nth(3).unwrap().parse()?; - - Ok(Army { - units, hp, weaknesses, immunities, damage_type, damage, initiative - }) - } -} - - - -fn main() -> Result<(), Box> { - let input = read_file(&PathBuf::from("inputs/24.txt"))?; - - let mut input_iter = input.iter(); - let _ = input_iter.next(); - let immune_army: Vec = input_iter.by_ref() - .take_while(|&line| line != "Infection:") - .map(|line| line.parse().unwrap()) - .collect(); - let infection_army: Vec = input_iter - .map(|line| line.parse().unwrap()) - .collect(); - - let (unboosted_immune_army_size, unboosted_infection_army_size) = simulate(&immune_army, &infection_army, 0); - debug!(unboosted_immune_army_size); - debug!(unboosted_infection_army_size); - - for boost in 0.. { - debug!(boost); - let (immune_army_size, infection_army_size) = simulate(&immune_army, &infection_army, boost); - debug!(immune_army_size); - debug!(infection_army_size); - if immune_army_size > 0 { - break; - } - } - - Ok(()) -} - - -fn target_selection(targeting_army: &Vec, targeted_army: &Vec) -> HashMap { - let mut targets = HashMap::new(); - for (i, army) in targeting_army.iter().enumerate() { - let best_target = (0..targeted_army.len()) - .filter(|potential_target| !targets.values().any(|targeted| targeted == potential_target)) - .fold(None, |best_target, next| { - let next_actual_damage = army.actual_damage(&targeted_army[next]); - let last_best_actual_damage = best_target.map(|best_target| army.actual_damage(&targeted_army[best_target])).unwrap_or(0); - let next_effective_power = targeted_army[next].effective_power(); - let last_best_effective_power = best_target.map(|best_target: usize| targeted_army[best_target].effective_power()).unwrap_or(0); - let next_initiative = targeted_army[next].initiative; - let last_best_initiative = best_target.map(|best_target| targeted_army[best_target].initiative).unwrap_or(0); - if next_actual_damage == 0 && last_best_actual_damage == 0 { - None - } else if next_actual_damage > last_best_actual_damage { - Some(next) - } else if next_actual_damage == last_best_actual_damage && next_effective_power > last_best_effective_power { - Some(next) - } else if next_actual_damage == last_best_actual_damage && next_effective_power == last_best_effective_power && next_initiative > last_best_initiative { - Some(next) - } else { - best_target - } - }); - - if let Some(best_target) = best_target { - targets.insert(i, best_target); - } - } - - targets -} - -fn attack(aggressor: &Army, target: &mut Army) { - let damage = aggressor.actual_damage(target); - let units_destroyed = damage / target.hp; - target.units = target.units.saturating_sub(units_destroyed); -} - - -fn simulate(immune_army: &[Army], infection_army: &[Army], boost: u32) -> (u32, u32) { - let mut infection_army = Vec::from(infection_army); - - let mut immune_army: Vec = immune_army.iter().map(|army| Army { - damage: army.damage + boost, - ..army.clone() - }).collect(); - - let mut watchdog_sum = immune_army.iter().map(|a| a.units).sum::() + infection_army.iter().map(|a| a.units).sum::(); - while immune_army.len() > 0 && infection_army.len() > 0 { - immune_army.sort_by(|a, b| b.effective_power().cmp(&a.effective_power()).then(b.initiative.cmp(&a.initiative))); - infection_army.sort_by(|a, b| b.effective_power().cmp(&a.effective_power()).then(b.initiative.cmp(&a.initiative))); - - let mut immune_targets = target_selection(&immune_army, &infection_army); - let mut infection_targets = target_selection(&infection_army, &immune_army); - - while immune_targets.len() > 0 || infection_targets.len() > 0 { - let next_immune = immune_targets.keys() - .map(|&k| (k, immune_army[k].initiative.clone())) - .max_by_key(|(_, initiative)| *initiative); - let next_infection = infection_targets.keys() - .map(|&k| (k, infection_army[k].initiative.clone())) - .max_by_key(|(_, initiative)| *initiative); - match (next_immune, next_infection) { - (None, None) => { - panic!("No targets left") - }, - (Some((immune_key, immune_init)), Some((_infect_key, infect_init))) if immune_init > infect_init => { - attack(&immune_army[immune_key], &mut infection_army[*immune_targets.get(&immune_key).unwrap()]); - immune_targets.remove(&immune_key); - }, - (Some((_immune_key, _immune_init)), Some((infect_key, _infect_init))) => { - attack(&infection_army[infect_key], &mut immune_army[*infection_targets.get(&infect_key).unwrap()]); - infection_targets.remove(&infect_key); - }, - (Some((immune_key, _immune_init)), None) => { - attack(&immune_army[immune_key], &mut infection_army[*immune_targets.get(&immune_key).unwrap()]); - immune_targets.remove(&immune_key); - }, - (None, Some((infect_key, _infect_init))) => { - attack(&infection_army[infect_key], &mut immune_army[*infection_targets.get(&infect_key).unwrap()]); - infection_targets.remove(&infect_key); - } - }; - } - - immune_army.retain(|a| a.units > 0); - infection_army.retain(|a| a.units > 0); - - let new_watchdog_sum = immune_army.iter().map(|a| a.units).sum::() + infection_army.iter().map(|a| a.units).sum::(); - if watchdog_sum == new_watchdog_sum { - // Stalemate! Everyone loses. - return (0, 0); - } - watchdog_sum = new_watchdog_sum; - } - - (immune_army.iter().map(|a| a.units).sum(), infection_army.iter().map(|a| a.units).sum()) -} diff --git a/src/bin/day_25.rs b/src/bin/day_25.rs deleted file mode 100644 index 9e74f49..0000000 --- a/src/bin/day_25.rs +++ /dev/null @@ -1,47 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::error::Error; -use std::path::PathBuf; - -// cargo watch -cs "cargo run --release --bin day_25" - -fn main() -> Result<(), Box> { - let input = read_file(&PathBuf::from("inputs/25.txt"))?; - - let mut constellations: Vec>> = input.iter() - .map(|line| line.split(',').map(|x| x.parse().unwrap()).collect::>()) - .map(|points| vec!(points)) - .collect(); - - // debug!(constellations); - - while join_constellations(&mut constellations) { - } - - debug!(constellations.len()); - - Ok(()) -} - -fn distance(xs: &[i32], ys: &[i32]) -> i32 { - xs.iter().zip(ys.iter()).map(|(x,y)| (x - y).abs()).sum() -} - -fn join_constellations(constellations: &mut Vec>>) -> bool { - for i in 0..constellations.len()-1 { - for j in i+1..constellations.len() { - let connected = constellations[i].iter().any(|ci| { - constellations[j].iter().any(|cj| { - distance(&ci, &cj) <= 3 - }) - }); - if connected { - let mut to_join = constellations.remove(j); - constellations[i].append(&mut to_join); - return true; - } - } - } - false -} diff --git a/src/bin/day_3.rs b/src/bin/day_3.rs deleted file mode 100644 index 685e288..0000000 --- a/src/bin/day_3.rs +++ /dev/null @@ -1,76 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::str::FromStr; - -use std::error::Error; -use std::path::PathBuf; - -use std::collections::HashMap; - -// cargo watch -cs "cargo run --release --bin day_3" - -#[derive(Debug)] -struct Claim { - id: u32, - x: u32, - y: u32, - w: u32, - h: u32 -} - -impl FromStr for Claim { - type Err = Box; - - fn from_str(s: &str) -> Result { - //#123 @ 3,2: 5x4 - let split = s - .split(|c: char| !c.is_numeric()) - .filter(|s| !s.is_empty()) - .map(|s| s.parse()) - .collect::, _>>()?; - - Ok(Claim { - id: split[0], - x: split[1], - y: split[2], - w: split[3], - h: split[4] - }) - } -} - -fn main() -> Result<(), Box> { - let input = read_file(&PathBuf::from("inputs/3.txt"))?; - let claims = input.iter().map(|line| line.parse::()).collect::, _>>()?; - - let mut claimed = HashMap::new(); - for claim in &claims { - for x in claim.x..claim.x+claim.w { - for y in claim.y..claim.y+claim.h { - *claimed.entry((x,y)).or_insert(0) += 1; - } - } - } - - let conflicts = claimed.values().filter(|&x| *x > 1).count(); - println!("Conflicts: {}", conflicts); - - let conflict_free = claims.iter().filter(|c| check_for_conflicts(c, &claimed)).collect::>(); - - println!("Conflict free: {:?}", conflict_free); - - Ok(()) -} - - -fn check_for_conflicts(claim: &Claim, claimed: &HashMap<(u32, u32), u32>) -> bool { - for x in claim.x..claim.x+claim.w { - for y in claim.y..claim.y+claim.h { - if claimed.get(&(x,y)).map_or(false, |c| *c > 1) { - return false; - } - } - } - true -} diff --git a/src/bin/day_4.rs b/src/bin/day_4.rs deleted file mode 100644 index 2010cf8..0000000 --- a/src/bin/day_4.rs +++ /dev/null @@ -1,116 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::str::FromStr; - -use std::error::Error; -use std::path::PathBuf; -use std::collections::HashMap; - -// cargo watch -cs "cargo run --release --bin day_4" - -#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] -struct Event { - date: String, - hour: u32, - minute: u32, - what: EventType -} - -#[derive(Debug, PartialOrd, Ord, PartialEq, Eq)] -enum EventType { - BeginShift(u32), - Asleep, - Awake -} - -impl FromStr for Event { - type Err = Box; - - fn from_str(s: &str) -> Result { - let date = s.split_whitespace().nth(0).unwrap().trim_matches('[').to_string(); - let time = s.split_whitespace().nth(1).unwrap().trim_matches(']'); - let hour = time.split(':').nth(0).unwrap().parse().unwrap(); - let minute = time.split(':').nth(1).unwrap().parse().unwrap(); - let guard = s.split_whitespace().nth(3).and_then(|x| x.trim_matches('#').parse().ok()); - - let what = match s.split_whitespace().nth(2).unwrap() { - "Guard" => EventType::BeginShift(guard.unwrap()), - "falls" => EventType::Asleep, - "wakes" => EventType::Awake, - _ => panic!("Unknown event") - }; - - Ok(Event { - date, - hour, - minute, - what - }) - } -} - -#[derive(Debug)] -struct GuardSleepStats { - per_minute: HashMap -} - -impl GuardSleepStats { - fn new() -> GuardSleepStats { - GuardSleepStats { - per_minute: HashMap::new() - } - } - fn total(&self) -> u32 { - self.per_minute.values().sum() - } -} - - -fn main() -> Result<(), Box> { - let input = read_file(&PathBuf::from("inputs/4.txt"))?; - - //println!("Input: {:?}", input); - - let mut events: Vec = input.iter().map(|line| line.parse().unwrap()).collect(); - events.sort(); - //println!("Events: {:?}", events); - - - let mut sleep = HashMap::new(); - let mut current_guard = 0; - let mut last_asleep = 0; - for event in events { - match event.what { - EventType::BeginShift(guard) => current_guard = guard, - EventType::Asleep => last_asleep = event.minute, - EventType::Awake => { - for i in last_asleep..event.minute { - *sleep - .entry(current_guard) - .or_insert(GuardSleepStats::new()) - .per_minute - .entry(i) - .or_insert(0) += 1 - } - } - } - } - - println!("Stats: {:?}", sleep); - - let (sleepiest_guard, sleepiest_stats) = sleep.iter().max_by_key(|(_,v)| v.total()).unwrap().clone(); - println!("Sleepiest guard: {:?}", sleepiest_guard); - let (sleepiest_minute, sleepiest_occurances) = sleepiest_stats.per_minute.iter().max_by_key(|(_,v)| *v).unwrap().clone(); - println!("Sleepiest minute: {:?}", sleepiest_minute); - println!("Part 1 answer: {}", sleepiest_guard * sleepiest_minute); - - - let (specific_minute_offender, specific_minute_stats) = sleep.iter().max_by_key(|(_,v)| v.per_minute.values().max().unwrap()).unwrap().clone(); - println!("Specific minute: {:?}", specific_minute_offender); - let (specific_minute_minute, specific_minute_occurances) = specific_minute_stats.per_minute.iter().max_by_key(|(_,v)| *v).unwrap().clone(); - println!("Specific Minute minute: {:?}", specific_minute_minute); - println!("Part 2 answer: {}", specific_minute_offender * specific_minute_minute); - - Ok(()) -} diff --git a/src/bin/day_5.rs b/src/bin/day_5.rs deleted file mode 100644 index 2b24d4c..0000000 --- a/src/bin/day_5.rs +++ /dev/null @@ -1,53 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::error::Error; -use std::path::PathBuf; -use std::cmp; - -// cargo watch -cs "cargo run --release --bin day_5" - -fn main() -> Result<(), Box> { - let input = read_file(&PathBuf::from("inputs/5.txt"))?; - - //println!("Input: {:?}", input); - let polymer = { - let mut polymer: Vec = input[0].chars().collect(); - reduce(&mut polymer); - polymer - }; - - debug!(polymer.len()); - - - let mut min_length = polymer.len(); - for c in "abcdefghijklmnopqrstuvwxyz".chars() { - let mut polymer_without_char = polymer.clone(); - polymer_without_char.retain(|x| x.to_ascii_lowercase() != c); - reduce(&mut polymer_without_char); - min_length = cmp::min(min_length, polymer_without_char.len()); - } - - debug!(min_length); - - Ok(()) -} - - -fn reduce(polymer: &mut Vec) { - let mut had_reductions = true; - while had_reductions { - had_reductions = false; - - for i in 0..polymer.len()-1 { - if polymer[i].to_ascii_lowercase() == polymer[i+1].to_ascii_lowercase() && polymer[i] != polymer[i+1] { - had_reductions = true; - polymer.remove(i+1); - polymer.remove(i); - - // break isn't efficient, but does prevent indexing issues after removing - break; - } - } - } -} diff --git a/src/bin/day_6.rs b/src/bin/day_6.rs deleted file mode 100644 index 16c8782..0000000 --- a/src/bin/day_6.rs +++ /dev/null @@ -1,103 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::error::Error; -use std::path::PathBuf; - -use std::collections::{HashSet, HashMap}; - -// cargo watch -cs "cargo run --release --bin day_6" - -fn main() -> Result<(), Box> { - let input = read_file(&PathBuf::from("inputs/6.txt"))?; - let coordinates = input.iter().map(|line| { - let mut split = line.split(|c: char| !c.is_numeric()); - let x: i32 = split.next().unwrap().parse().unwrap(); - let _ = split.next(); - let y: i32 = split.next().unwrap().parse().unwrap(); - (x, y) - }).collect::>(); - debug!(coordinates); - - let min_x = coordinates.iter().map(|(x, _)| x).min().unwrap().clone(); - let max_x = coordinates.iter().map(|(x, _)| x).max().unwrap().clone(); - let min_y = coordinates.iter().map(|(_, y)| y).min().unwrap().clone(); - let max_y = coordinates.iter().map(|(_, y)| y).max().unwrap().clone(); - - debug!(min_x); - debug!(max_x); - debug!(min_y); - debug!(max_y); - - let mut infinite = HashSet::new(); - for x in min_x..max_x+1 { - for y in &[0, max_y] { - if let Some(coord) = find_closest(&coordinates, x, *y) { - infinite.insert(coord); - } - } - } - for y in min_y..max_y+1 { - for x in &[0, max_x] { - if let Some(coord) = find_closest(&coordinates, *x, y) { - infinite.insert(coord); - } - } - } - - debug!(infinite); - - - let mut areas = HashMap::new(); - for x in min_x..max_x+1 { - for y in min_y..max_y+1 { - if let Some(coord) = find_closest(&coordinates, x, y) { - *areas.entry(coord).or_insert(0) += 1; - } - } - } - - debug!(areas); - - let biggest_non_infinite = areas.iter() - .filter(|(k,_)| !infinite.contains(&k)) - .max_by_key(|(_,v)| *v); - debug!(biggest_non_infinite); - - - - let safe_distance = 10000; - let mut safe_size = 0; - for x in min_x..max_x+1 { - for y in min_y..max_y+1 { - let distance_sum: i32 = coordinates.iter() - .map(|(x1, y1)| manhattan_distance(*x1, *y1, x, y)) - .sum(); - if distance_sum < safe_distance { - safe_size += 1; - } - } - } - debug!(safe_size); - - Ok(()) -} - -fn find_closest(coordinates: &Vec<(i32, i32)>, x: i32, y: i32) -> Option { - let mut distances = coordinates.iter() - .map(|(x1, y1)| manhattan_distance(*x1, *y1, x, y)) - .enumerate() - .collect::>(); - distances.sort_by_key(|(_, d)| *d); - - if distances[0] == distances[1] { - None - } - else { - distances.first().map(|(i, _)| *i) - } -} - -fn manhattan_distance(x1: i32, y1: i32, x2: i32, y2: i32) -> i32 { - (x2-x1).abs() + (y2-y1).abs() -} diff --git a/src/bin/day_7.rs b/src/bin/day_7.rs deleted file mode 100644 index ec9d0be..0000000 --- a/src/bin/day_7.rs +++ /dev/null @@ -1,135 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::error::Error; -use std::path::PathBuf; - -use std::collections::{HashMap, HashSet}; - -// cargo watch -cs "cargo run --release --bin day_7" - -fn main() -> Result<(), Box> { - let input = read_file(&PathBuf::from("inputs/7.txt"))?; - - //println!("Input: {:?}", input); - - let (all_steps, blockers) = parse(&input); - - - let mut serial_ordered = Vec::new(); - let mut remaining_steps = all_steps.clone(); - let mut remaining_blockers = blockers.clone(); - - while !remaining_steps.is_empty() { - let mut unblocked: Vec = remaining_steps.iter() - .filter(|c| remaining_blockers.get(c).map(|blockers| blockers.is_empty()).unwrap_or(true)) - .cloned() - .collect(); - unblocked.sort(); - - let next_step = unblocked.first().unwrap().clone(); - - serial_ordered.push(next_step); - remaining_steps.remove(&next_step); - for (_k, mut v) in &mut remaining_blockers { - v.retain(|c| *c != next_step); - } - } - - debug!(serial_ordered); - for c in serial_ordered { - print!("{}", c); - } - println!(); - - - let workers = 5; - let mut worker_tasks: Vec = Vec::new(); - let mut parallel_ordered = Vec::new(); - let mut remaining_steps = all_steps.clone(); - let mut remaining_blockers = blockers.clone(); - let mut current_time = 0; - - while !remaining_steps.is_empty() { - let mut unblocked: Vec = remaining_steps.iter() - .filter(|c| - remaining_blockers.get(c).map(|blockers| blockers.is_empty()).unwrap_or(true) - && !worker_tasks.iter().any(|w| w.t == **c) - ) - .cloned() - .collect(); - unblocked.sort(); - - let next_unblocked = if worker_tasks.len() < workers { - unblocked.first().cloned() - } else { - None - }; - - if let Some(next_task) = next_unblocked { - worker_tasks.push(Task { - t: next_task, - completion: current_time + time(next_task) - }); - } - else { - //Advance time - worker_tasks.sort_by_key(|w| w.completion); - let complete = worker_tasks.swap_remove(0); - current_time = complete.completion; - let next_step = complete.t; - - parallel_ordered.push(next_step); - remaining_steps.remove(&next_step); - for (_k, mut v) in &mut remaining_blockers { - v.retain(|c| *c != next_step); - } - } - - - } - - debug!(parallel_ordered); - for c in parallel_ordered { - print!("{}", c); - } - println!(); - debug!(current_time); - - - Ok(()) -} - -#[derive(Debug, Copy, Clone, PartialEq, Eq)] -struct Task { - t: char, - completion: u32 -} - - -fn parse(input: &Vec) -> (HashSet, HashMap>) { - let mut blockers = HashMap::new(); - let mut all_steps = HashSet::new(); - - for line in input { - //Step I must be finished before step C can begin. - let mut split = line.split_whitespace(); - let blocker: char = split.nth(1).and_then(|x| x.chars().nth(0)).unwrap(); - let blocked: char = split.nth(5).and_then(|x| x.chars().nth(0)).unwrap(); - - blockers.entry(blocked).or_insert(Vec::new()).push(blocker); - all_steps.insert(blocker); - all_steps.insert(blocked); - } - - debug!(all_steps); - debug!(blockers); - - (all_steps, blockers) -} - -fn time(c: char) -> u32 { - let base_time = 60; - let char_time = c as u32 - 'A' as u32 + 1; - base_time + char_time -} diff --git a/src/bin/day_8.rs b/src/bin/day_8.rs deleted file mode 100644 index 59813b0..0000000 --- a/src/bin/day_8.rs +++ /dev/null @@ -1,66 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::error::Error; -use std::path::PathBuf; - -use std::slice::Iter; - -// cargo watch -cs "cargo run --release --bin day_8" - -fn main() -> Result<(), Box> { - let input: Vec = read_file(&PathBuf::from("inputs/8.txt")) - .map(|lines| lines[0] - .split_whitespace() - .map(|s| s.parse().unwrap()) - .collect() - )?; - - //println!("Input: {:?}", input); - - let metadata_sum = sum_metadata(&mut input.iter()); - debug!(metadata_sum); - - let value = node_value(&mut input.iter()); - debug!(value); - - Ok(()) -} - -fn sum_metadata(iter: &mut Iter<'_, u32>) -> u32 { - let num_children = iter.next().unwrap().clone(); - let num_metadata = iter.next().unwrap().clone(); - - let children_sum: u32 = (0..num_children) - .map(|_| sum_metadata(iter)) - .sum(); - - let metadata_sum: u32 = (0..num_metadata) - .map(|_| iter.next().unwrap()) - .sum(); - - children_sum + metadata_sum -} - - -fn node_value(iter: &mut Iter<'_, u32>) -> u32 { - let num_children = iter.next().unwrap().clone(); - let num_metadata = iter.next().unwrap().clone(); - - let node_values: Vec = (0..num_children) - .map(|_| node_value(iter)) - .collect(); - - let metadata: Vec = (0..num_metadata) - .map(|_| iter.next().unwrap().clone()) - .collect(); - - if num_children == 0 { - metadata.iter().sum() - } else { - metadata.iter() - .filter(|m| **m > 0 && **m-1 < num_children) - .map(|m| node_values[*m as usize - 1]) - .sum() - } -} diff --git a/src/bin/day_9.rs b/src/bin/day_9.rs deleted file mode 100644 index 3f85620..0000000 --- a/src/bin/day_9.rs +++ /dev/null @@ -1,91 +0,0 @@ -extern crate advent_of_code_2018; -use advent_of_code_2018::*; - -use std::error::Error; - -use std::collections::LinkedList; - -// cargo watch -cs "cargo run --release --bin day_9" - -fn main() -> Result<(), Box> { - debug!(get_winning_player_score(438, 71626)); - debug!(get_winning_player_score(438, 71626*100)); - - Ok(()) -} - - -fn get_winning_player_score(players: usize, last_marble_score: u32) -> u32 { - let mut marbles_head = LinkedList::new(); - let mut marbles_tail = LinkedList::new(); - marbles_head.push_back(0); - - let mut current_player = 0; - let mut next_marble = 1; - let mut scores = vec!(0; players); - - while next_marble <= last_marble_score { - if next_marble % 23 == 0 { - move_backwards(&mut marbles_head, &mut marbles_tail, 7); - let removed = marbles_head.pop_back().expect("Going backwards should have ended with pushing to head"); - move_forward(&mut marbles_head, &mut marbles_tail, 1); - - let score = next_marble + removed; - scores[current_player] += score; - } else { - move_forward(&mut marbles_head, &mut marbles_tail, 1); - marbles_head.push_back(next_marble); - } - - next_marble += 1; - current_player = (current_player + 1) % players; - } - - scores.iter().max().unwrap().clone() -} - -// WARNING: These don't play well with empty lists -fn move_forward(marbles_head: &mut LinkedList, marbles_tail: &mut LinkedList, i: usize) { - if i != 0 { - match marbles_tail.pop_front() { - Some(marble) => { - marbles_head.push_back(marble); - move_forward(marbles_head, marbles_tail, i-1); - }, - None => { - marbles_tail.append(marbles_head); - move_forward(marbles_head, marbles_tail, i); - }, - } - } -} - -fn move_backwards(marbles_head: &mut LinkedList, marbles_tail: &mut LinkedList, i: usize) { - if i != 0 { - match marbles_head.pop_back() { - Some(marble) => { - marbles_tail.push_front(marble); - move_backwards(marbles_head, marbles_tail, i-1); - }, - None => { - marbles_head.append(marbles_tail); - move_backwards(marbles_head, marbles_tail, i); - }, - } - } -} - - -#[test] -fn trivial() { - assert_eq!(get_winning_player_score(9, 32), 32); -} - -#[test] -fn examples() { - assert_eq!(get_winning_player_score(10, 1618), 8317); - assert_eq!(get_winning_player_score(13, 7999), 146373); - assert_eq!(get_winning_player_score(17, 1104), 2764); - assert_eq!(get_winning_player_score(21, 6111), 54718); - assert_eq!(get_winning_player_score(30, 5807), 37305); -} diff --git a/src/lib.rs b/src/lib.rs deleted file mode 100644 index 72520fe..0000000 --- a/src/lib.rs +++ /dev/null @@ -1,31 +0,0 @@ -use std::path::PathBuf; -use std::io::BufReader; -use std::io::prelude::*; -use std::fs::File; - -/// Reads a specified file into a vector of strings, one line of the -/// file per string. Fails if any part of reading the file fails. -pub fn read_file(file: &PathBuf) -> Result, std::io::Error> { - let file = File::open(file)?; - let file_reader = BufReader::new(file); - file_reader.lines() - .collect::, _>>() - .map(preprocess_file_lines) -} - -/// Removes any empty lines and makes sure that lines don't have -/// problematic whitespace. -pub fn preprocess_file_lines(lines: Vec) -> Vec { - lines.iter() - .filter(|line| line.len() > 0) - .map(|line| line.trim_right().to_string()) - .collect() -} - - -#[macro_export] -macro_rules! debug { - ( $x:expr ) => { - println!("{} = {:?}", stringify!($x), $x); - }; -} -- cgit v1.2.3