summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--2016/.gitignore1
-rw-r--r--2016/aoc1/Cargo.lock4
-rw-r--r--2016/aoc1/Cargo.toml6
-rw-r--r--2016/aoc1/input.txt1
-rw-r--r--2016/aoc1/src/main.rs98
-rw-r--r--2016/aoc10/Cargo.lock98
-rw-r--r--2016/aoc10/Cargo.toml7
-rw-r--r--2016/aoc10/input.txt231
-rw-r--r--2016/aoc10/src/main.rs155
-rw-r--r--2016/aoc11/Cargo.lock4
-rw-r--r--2016/aoc11/Cargo.toml7
-rw-r--r--2016/aoc11/input.txt4
-rw-r--r--2016/aoc11/src/main.rs166
-rw-r--r--2016/aoc12/Cargo.lock98
-rw-r--r--2016/aoc12/Cargo.toml7
-rw-r--r--2016/aoc12/input.txt23
-rw-r--r--2016/aoc12/src/main.rs136
-rw-r--r--2016/aoc13/Cargo.lock98
-rw-r--r--2016/aoc13/Cargo.toml7
-rw-r--r--2016/aoc13/src/main.rs64
-rw-r--r--2016/aoc14/Cargo.lock14
-rw-r--r--2016/aoc14/Cargo.toml7
-rw-r--r--2016/aoc14/src/main.rs84
-rw-r--r--2016/aoc15/Cargo.lock98
-rw-r--r--2016/aoc15/Cargo.toml7
-rw-r--r--2016/aoc15/input.txt7
-rw-r--r--2016/aoc15/src/main.rs35
-rw-r--r--2016/aoc16/Cargo.lock4
-rw-r--r--2016/aoc16/Cargo.toml6
-rw-r--r--2016/aoc16/src/main.rs68
-rw-r--r--2016/aoc17/Cargo.lock14
-rw-r--r--2016/aoc17/Cargo.toml7
-rw-r--r--2016/aoc17/src/main.rs98
-rw-r--r--2016/aoc18/Cargo.lock4
-rw-r--r--2016/aoc18/Cargo.toml6
-rw-r--r--2016/aoc18/src/main.rs20
-rw-r--r--2016/aoc19/Cargo.lock4
-rw-r--r--2016/aoc19/Cargo.toml6
-rw-r--r--2016/aoc19/src/main.rs42
-rw-r--r--2016/aoc2/Cargo.lock4
-rw-r--r--2016/aoc2/Cargo.toml6
-rw-r--r--2016/aoc2/input.txt5
-rw-r--r--2016/aoc2/src/main.rs61
-rw-r--r--2016/aoc20/Cargo.lock4
-rw-r--r--2016/aoc20/Cargo.toml6
-rw-r--r--2016/aoc20/input.txt1104
-rw-r--r--2016/aoc20/src/main.rs114
-rw-r--r--2016/aoc21/Cargo.lock98
-rw-r--r--2016/aoc21/Cargo.toml7
-rw-r--r--2016/aoc21/input.txt100
-rw-r--r--2016/aoc21/src/main.rs233
-rw-r--r--2016/aoc22/Cargo.lock98
-rw-r--r--2016/aoc22/Cargo.toml7
-rw-r--r--2016/aoc22/input.txt1017
-rw-r--r--2016/aoc22/src/main.rs198
-rw-r--r--2016/aoc23/Cargo.lock98
-rw-r--r--2016/aoc23/Cargo.toml7
-rw-r--r--2016/aoc23/input.txt26
-rw-r--r--2016/aoc23/src/main.rs247
-rw-r--r--2016/aoc24/Cargo.lock4
-rw-r--r--2016/aoc24/Cargo.toml6
-rw-r--r--2016/aoc24/input.txt39
-rw-r--r--2016/aoc24/src/main.rs135
-rw-r--r--2016/aoc25/Cargo.lock98
-rw-r--r--2016/aoc25/Cargo.toml7
-rw-r--r--2016/aoc25/input.txt30
-rw-r--r--2016/aoc25/src/main.rs284
-rw-r--r--2016/aoc3/Cargo.lock4
-rw-r--r--2016/aoc3/Cargo.toml6
-rw-r--r--2016/aoc3/input.txt1734
-rw-r--r--2016/aoc3/src/main.rs64
-rw-r--r--2016/aoc4/Cargo.lock4
-rw-r--r--2016/aoc4/Cargo.toml6
-rw-r--r--2016/aoc4/input.txt1091
-rw-r--r--2016/aoc4/src/main.rs83
-rw-r--r--2016/aoc5/Cargo.lock12
-rw-r--r--2016/aoc5/Cargo.toml7
-rw-r--r--2016/aoc5/src/main.rs49
-rw-r--r--2016/aoc6/Cargo.lock4
-rw-r--r--2016/aoc6/Cargo.toml6
-rw-r--r--2016/aoc6/input.txt624
-rw-r--r--2016/aoc6/src/main.rs27
-rw-r--r--2016/aoc6/test_input.txt16
-rw-r--r--2016/aoc7/Cargo.lock4
-rw-r--r--2016/aoc7/Cargo.toml6
-rw-r--r--2016/aoc7/input.txt2000
-rw-r--r--2016/aoc7/src/main.rs95
-rw-r--r--2016/aoc7/test_input.txt4
-rw-r--r--2016/aoc8/Cargo.lock98
-rw-r--r--2016/aoc8/Cargo.toml7
-rw-r--r--2016/aoc8/input.txt194
-rw-r--r--2016/aoc8/src/main.rs117
-rw-r--r--2016/aoc9/Cargo.lock98
-rw-r--r--2016/aoc9/Cargo.toml7
-rw-r--r--2016/aoc9/input.txt1
-rw-r--r--2016/aoc9/src/main.rs143
-rw-r--r--2017/Cargo.toml10
-rw-r--r--2017/LICENSE21
-rw-r--r--2017/inputs/day_1.txt1
-rw-r--r--2017/inputs/day_10.txt1
-rw-r--r--2017/inputs/day_11.txt1
-rw-r--r--2017/inputs/day_12.txt2000
-rw-r--r--2017/inputs/day_13.txt43
-rw-r--r--2017/inputs/day_13_example.txt5
-rw-r--r--2017/inputs/day_14.txt2
-rw-r--r--2017/inputs/day_14_example.txt1
-rw-r--r--2017/inputs/day_15.txt2
-rw-r--r--2017/inputs/day_16.txt1
-rw-r--r--2017/inputs/day_17.txt1
-rw-r--r--2017/inputs/day_18.txt41
-rw-r--r--2017/inputs/day_19.txt201
-rw-r--r--2017/inputs/day_2.txt16
-rw-r--r--2017/inputs/day_20.txt1000
-rw-r--r--2017/inputs/day_21.txt108
-rw-r--r--2017/inputs/day_21_example.txt2
-rw-r--r--2017/inputs/day_22.txt25
-rw-r--r--2017/inputs/day_22_example.txt3
-rw-r--r--2017/inputs/day_23.txt32
-rw-r--r--2017/inputs/day_24.txt57
-rw-r--r--2017/inputs/day_25.txt62
-rw-r--r--2017/inputs/day_3.txt1
-rw-r--r--2017/inputs/day_4.txt512
-rw-r--r--2017/inputs/day_5.txt1070
-rw-r--r--2017/inputs/day_6.txt1
-rw-r--r--2017/inputs/day_7.txt1091
-rw-r--r--2017/inputs/day_8.txt1000
-rw-r--r--2017/inputs/day_9.txt1
-rw-r--r--2017/src/bin/day_1.rs24
-rw-r--r--2017/src/bin/day_10.rs63
-rw-r--r--2017/src/bin/day_11.rs57
-rw-r--r--2017/src/bin/day_12.rs52
-rw-r--r--2017/src/bin/day_13.rs46
-rw-r--r--2017/src/bin/day_14.rs52
-rw-r--r--2017/src/bin/day_15.rs40
-rw-r--r--2017/src/bin/day_16.rs87
-rw-r--r--2017/src/bin/day_17.rs47
-rw-r--r--2017/src/bin/day_18.rs207
-rw-r--r--2017/src/bin/day_19.rs78
-rw-r--r--2017/src/bin/day_2.rs26
-rw-r--r--2017/src/bin/day_20.rs89
-rw-r--r--2017/src/bin/day_21.rs200
-rw-r--r--2017/src/bin/day_22.rs73
-rw-r--r--2017/src/bin/day_23.rs168
-rw-r--r--2017/src/bin/day_24.rs60
-rw-r--r--2017/src/bin/day_25.rs125
-rw-r--r--2017/src/bin/day_3.rs62
-rw-r--r--2017/src/bin/day_4.rs37
-rw-r--r--2017/src/bin/day_5.rs25
-rw-r--r--2017/src/bin/day_6.rs61
-rw-r--r--2017/src/bin/day_7.rs62
-rw-r--r--2017/src/bin/day_8.rs99
-rw-r--r--2017/src/bin/day_9.rs42
-rw-r--r--2017/src/lib.rs225
153 files changed, 21719 insertions, 0 deletions
diff --git a/2016/.gitignore b/2016/.gitignore
new file mode 100644
index 0000000..9f97022
--- /dev/null
+++ b/2016/.gitignore
@@ -0,0 +1 @@
+target/ \ No newline at end of file
diff --git a/2016/aoc1/Cargo.lock b/2016/aoc1/Cargo.lock
new file mode 100644
index 0000000..b771521
--- /dev/null
+++ b/2016/aoc1/Cargo.lock
@@ -0,0 +1,4 @@
+[root]
+name = "aoc1"
+version = "0.1.0"
+
diff --git a/2016/aoc1/Cargo.toml b/2016/aoc1/Cargo.toml
new file mode 100644
index 0000000..096aad6
--- /dev/null
+++ b/2016/aoc1/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "aoc1"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@entelect.co.za>"]
+
+[dependencies]
diff --git a/2016/aoc1/input.txt b/2016/aoc1/input.txt
new file mode 100644
index 0000000..456904d
--- /dev/null
+++ b/2016/aoc1/input.txt
@@ -0,0 +1 @@
+R4, R5, L5, L5, L3, R2, R1, R1, L5, R5, R2, L1, L3, L4, R3, L1, L1, R2, R3, R3, R1, L3, L5, R3, R1, L1, R1, R2, L1, L4, L5, R4, R2, L192, R5, L2, R53, R1, L5, R73, R5, L5, R186, L3, L2, R1, R3, L3, L3, R1, L4, L2, R3, L5, R4, R3, R1, L1, R5, R2, R1, R1, R1, R3, R2, L1, R5, R1, L5, R2, L2, L4, R3, L1, R4, L5, R4, R3, L5, L3, R4, R2, L5, L5, R2, R3, R5, R4, R2, R1, L1, L5, L2, L3, L4, L5, L4, L5, L1, R3, R4, R5, R3, L5, L4, L3, L1, L4, R2, R5, R5, R4, L2, L4, R3, R1, L2, R5, L5, R1, R1, L1, L5, L5, L2, L1, R5, R2, L4, L1, R4, R3, L3, R1, R5, L1, L4, R2, L3, R5, R3, R1, L3
diff --git a/2016/aoc1/src/main.rs b/2016/aoc1/src/main.rs
new file mode 100644
index 0000000..e9b4138
--- /dev/null
+++ b/2016/aoc1/src/main.rs
@@ -0,0 +1,98 @@
+use std::io::Read;
+use std::fs::File;
+
+#[derive(Clone, Copy, Debug)]
+enum Direction {
+ Up,
+ Left,
+ Down,
+ Right
+}
+
+impl Direction {
+ fn turn_right(self) -> Direction {
+ match self {
+ Direction::Up => Direction::Right,
+ Direction::Right => Direction::Down,
+ Direction::Down => Direction::Left,
+ Direction::Left => Direction::Up
+ }
+ }
+ fn turn_left(self) -> Direction {
+ //not an ambiturner
+ self.turn_right().turn_right().turn_right()
+ }
+
+ fn as_vector(self, dist: i32) -> (i32,i32) {
+ match self {
+ Direction::Up => (0, -dist),
+ Direction::Right => (dist, 0),
+ Direction::Down => (0, dist),
+ Direction::Left => (-dist, 0)
+ }
+ }
+}
+
+fn main() {
+ let content = read_file().expect("Failed to read file");
+ let (_, dist_x, dist_y) = first_repeated_dest(content);
+ println!("Total: ({}, {})", dist_x, dist_y);
+ println!("Net: {}", dist_x+dist_y);
+}
+
+fn net_distance(content: String) -> (Direction, i32, i32) {
+ content.trim().split(", ")
+ .map(|action|
+ (
+ action.chars().nth(0).unwrap(),
+ action.chars().skip(1).collect::<String>().parse::<i32>().unwrap()
+ ))
+ .fold((Direction::Up, 0,0), |(facing, acc_x, acc_y), (dir, dist)| {
+ let new_facing = match dir {
+ 'R' => facing.turn_right(),
+ 'L' => facing.turn_left(),
+ _ => panic!("bad input")
+ };
+
+ let (new_x, new_y) = new_facing.as_vector(dist);
+ (new_facing, acc_x+new_x, acc_y+new_y)
+ })
+}
+
+fn first_repeated_dest(content: String) -> (Direction, i32, i32) {
+ let mut stops: Vec<(i32, i32)> = Vec::new();
+ let actions = content.trim().split(", ")
+ .map(|action|
+ (
+ action.chars().nth(0).unwrap(),
+ action.chars().skip(1).collect::<String>().parse::<i32>().unwrap()
+ ));
+ let mut current_facing = Direction::Up;
+ let (mut acc_x, mut acc_y) = (0, 0);
+ for (dir, dist) in actions {
+ current_facing = match dir {
+ 'R' => current_facing.turn_right(),
+ 'L' => current_facing.turn_left(),
+ _ => panic!("bad input")
+ };
+
+ for _ in 0..dist {
+ let (new_x, new_y) = current_facing.as_vector(1);
+ acc_x += new_x;
+ acc_y += new_y;
+
+ if stops.iter().any(|&(x, y)| x==acc_x && y==acc_y) {
+ return (current_facing, acc_x, acc_y);
+ }
+ stops.push((acc_x, acc_y));
+ }
+ }
+ (current_facing, acc_x, acc_y)
+}
+
+fn read_file() -> Result<String, String> {
+ let mut file = try!(File::open("input.txt").map_err(|e| e.to_string()));
+ let mut content = String::new();
+ try!(file.read_to_string(&mut content).map_err(|e| e.to_string()));
+ Ok(content)
+}
diff --git a/2016/aoc10/Cargo.lock b/2016/aoc10/Cargo.lock
new file mode 100644
index 0000000..f8f7189
--- /dev/null
+++ b/2016/aoc10/Cargo.lock
@@ -0,0 +1,98 @@
+[root]
+name = "aoc10"
+version = "0.1.0"
+dependencies = [
+ "regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "kernel32-sys"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "memchr"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "regex"
+version = "0.1.80"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
+ "regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+ "thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "thread-id"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "thread_local"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "utf8-ranges"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi-build"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[metadata]
+"checksum aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66"
+"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
+"checksum libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "a51822fc847e7a8101514d1d44e354ba2ffa7d4c194dcab48870740e327cac70"
+"checksum memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20"
+"checksum regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)" = "4fd4ace6a8cf7860714a2c2280d6c1f7e6a413486c13298bbc86fd3da019402f"
+"checksum regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957"
+"checksum thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03"
+"checksum thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8576dbbfcaef9641452d5cf0df9b0e7eeab7694956dd33bb61515fb8f18cfdd5"
+"checksum utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f"
+"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
+"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
diff --git a/2016/aoc10/Cargo.toml b/2016/aoc10/Cargo.toml
new file mode 100644
index 0000000..d6abdaf
--- /dev/null
+++ b/2016/aoc10/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "aoc10"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@gmail.com>"]
+
+[dependencies]
+regex = "0.1" \ No newline at end of file
diff --git a/2016/aoc10/input.txt b/2016/aoc10/input.txt
new file mode 100644
index 0000000..aeda3b5
--- /dev/null
+++ b/2016/aoc10/input.txt
@@ -0,0 +1,231 @@
+bot 59 gives low to bot 176 and high to bot 120
+bot 92 gives low to bot 42 and high to bot 187
+value 31 goes to bot 114
+bot 182 gives low to bot 49 and high to bot 176
+bot 17 gives low to bot 181 and high to bot 162
+bot 36 gives low to bot 118 and high to bot 121
+bot 118 gives low to bot 164 and high to bot 55
+bot 172 gives low to bot 79 and high to bot 123
+bot 51 gives low to bot 60 and high to bot 31
+bot 48 gives low to bot 107 and high to bot 58
+bot 142 gives low to output 6 and high to bot 35
+bot 133 gives low to output 4 and high to bot 47
+bot 134 gives low to bot 122 and high to bot 66
+bot 106 gives low to bot 155 and high to bot 99
+bot 77 gives low to bot 93 and high to bot 84
+bot 9 gives low to bot 173 and high to bot 197
+bot 64 gives low to bot 123 and high to bot 48
+bot 177 gives low to bot 21 and high to bot 132
+bot 94 gives low to bot 6 and high to bot 25
+bot 126 gives low to bot 193 and high to bot 56
+bot 74 gives low to bot 187 and high to bot 125
+bot 80 gives low to bot 41 and high to bot 191
+bot 62 gives low to bot 157 and high to bot 138
+bot 66 gives low to bot 1 and high to bot 209
+bot 90 gives low to bot 104 and high to bot 34
+bot 68 gives low to bot 23 and high to bot 87
+bot 121 gives low to bot 55 and high to bot 126
+bot 122 gives low to bot 137 and high to bot 1
+bot 209 gives low to bot 168 and high to bot 26
+bot 141 gives low to bot 170 and high to bot 6
+bot 149 gives low to bot 62 and high to bot 13
+bot 120 gives low to bot 179 and high to bot 71
+bot 160 gives low to bot 194 and high to bot 151
+bot 86 gives low to bot 96 and high to bot 106
+value 13 goes to bot 9
+bot 180 gives low to bot 189 and high to bot 27
+value 67 goes to bot 88
+bot 169 gives low to bot 99 and high to bot 159
+bot 56 gives low to bot 98 and high to bot 147
+bot 197 gives low to bot 174 and high to bot 81
+bot 57 gives low to bot 113 and high to bot 179
+bot 39 gives low to bot 115 and high to bot 3
+bot 79 gives low to bot 22 and high to bot 40
+bot 161 gives low to output 14 and high to bot 185
+bot 21 gives low to bot 114 and high to bot 119
+bot 136 gives low to bot 28 and high to bot 158
+bot 105 gives low to bot 89 and high to bot 19
+bot 168 gives low to bot 126 and high to bot 26
+bot 193 gives low to bot 64 and high to bot 98
+bot 186 gives low to bot 86 and high to bot 178
+value 11 goes to bot 165
+bot 33 gives low to bot 116 and high to bot 150
+bot 32 gives low to bot 154 and high to bot 206
+bot 166 gives low to bot 33 and high to bot 139
+value 7 goes to bot 63
+bot 203 gives low to bot 172 and high to bot 64
+bot 200 gives low to bot 94 and high to bot 25
+value 43 goes to bot 76
+bot 145 gives low to bot 103 and high to bot 128
+bot 119 gives low to bot 186 and high to bot 97
+bot 12 gives low to bot 31 and high to bot 4
+bot 23 gives low to bot 198 and high to bot 171
+bot 34 gives low to bot 10 and high to bot 20
+bot 198 gives low to bot 43 and high to bot 17
+bot 50 gives low to output 1 and high to bot 127
+bot 155 gives low to bot 191 and high to bot 32
+bot 206 gives low to bot 12 and high to bot 43
+bot 96 gives low to bot 80 and high to bot 155
+bot 93 gives low to bot 44 and high to bot 70
+bot 24 gives low to bot 85 and high to bot 83
+bot 30 gives low to bot 159 and high to bot 68
+bot 55 gives low to bot 203 and high to bot 193
+bot 199 gives low to bot 68 and high to bot 135
+bot 170 gives low to bot 97 and high to bot 5
+bot 65 gives low to bot 152 and high to bot 194
+bot 43 gives low to bot 4 and high to bot 181
+bot 113 gives low to output 9 and high to bot 161
+bot 81 gives low to bot 141 and high to bot 94
+value 29 goes to bot 7
+bot 46 gives low to bot 175 and high to bot 195
+value 47 goes to bot 21
+value 23 goes to bot 42
+bot 13 gives low to bot 138 and high to bot 61
+bot 135 gives low to bot 87 and high to bot 111
+bot 194 gives low to bot 190 and high to bot 82
+value 73 goes to bot 109
+bot 154 gives low to bot 51 and high to bot 12
+bot 1 gives low to bot 18 and high to bot 209
+bot 98 gives low to bot 48 and high to bot 45
+bot 147 gives low to bot 45 and high to bot 95
+bot 47 gives low to output 19 and high to bot 152
+bot 26 gives low to bot 56 and high to bot 147
+bot 179 gives low to bot 161 and high to bot 71
+bot 148 gives low to bot 204 and high to bot 137
+bot 5 gives low to bot 67 and high to bot 85
+bot 174 gives low to bot 132 and high to bot 141
+bot 8 gives low to bot 13 and high to bot 75
+bot 82 gives low to bot 146 and high to bot 22
+bot 123 gives low to bot 40 and high to bot 107
+bot 99 gives low to bot 32 and high to bot 201
+bot 41 gives low to bot 196 and high to bot 192
+bot 139 gives low to bot 150 and high to bot 153
+bot 11 gives low to output 16 and high to bot 113
+bot 72 gives low to bot 65 and high to bot 160
+bot 195 gives low to bot 133 and high to bot 183
+bot 54 gives low to output 12 and high to output 10
+bot 158 gives low to bot 102 and high to bot 110
+bot 112 gives low to bot 19 and high to bot 118
+bot 31 gives low to bot 208 and high to bot 143
+bot 167 gives low to bot 7 and high to bot 96
+bot 63 gives low to bot 92 and high to bot 74
+bot 116 gives low to bot 20 and high to bot 131
+bot 184 gives low to bot 39 and high to bot 3
+bot 162 gives low to bot 205 and high to bot 39
+bot 108 gives low to output 11 and high to bot 175
+value 53 goes to bot 207
+bot 111 gives low to bot 202 and high to bot 184
+bot 25 gives low to bot 24 and high to bot 83
+value 71 goes to bot 77
+bot 69 gives low to bot 142 and high to bot 0
+bot 146 gives low to output 13 and high to bot 53
+bot 7 gives low to bot 76 and high to bot 80
+bot 131 gives low to bot 73 and high to bot 204
+bot 102 gives low to bot 195 and high to bot 117
+bot 76 gives low to bot 165 and high to bot 41
+bot 153 gives low to bot 148 and high to bot 122
+bot 208 gives low to bot 90 and high to bot 163
+bot 70 gives low to bot 144 and high to bot 78
+bot 125 gives low to bot 8 and high to bot 156
+bot 83 gives low to bot 199 and high to bot 135
+bot 75 gives low to bot 61 and high to bot 104
+bot 67 gives low to bot 169 and high to bot 30
+bot 14 gives low to bot 81 and high to bot 200
+bot 159 gives low to bot 201 and high to bot 23
+value 3 goes to bot 93
+bot 110 gives low to bot 117 and high to bot 89
+bot 128 gives low to bot 129 and high to bot 182
+bot 87 gives low to bot 171 and high to bot 111
+bot 45 gives low to bot 58 and high to bot 95
+bot 4 gives low to bot 143 and high to bot 166
+bot 60 gives low to bot 156 and high to bot 208
+bot 27 gives low to bot 108 and high to bot 46
+bot 42 gives low to bot 207 and high to bot 149
+bot 117 gives low to bot 183 and high to bot 72
+bot 115 gives low to bot 153 and high to bot 134
+bot 140 gives low to bot 125 and high to bot 60
+bot 173 gives low to bot 177 and high to bot 174
+bot 138 gives low to bot 180 and high to bot 52
+bot 100 gives low to bot 38 and high to bot 59
+value 41 goes to bot 173
+value 59 goes to bot 177
+bot 165 gives low to bot 63 and high to bot 196
+bot 84 gives low to bot 70 and high to bot 78
+bot 2 gives low to bot 160 and high to bot 91
+value 61 goes to bot 29
+bot 114 gives low to bot 109 and high to bot 186
+bot 205 gives low to bot 139 and high to bot 115
+bot 175 gives low to output 17 and high to bot 133
+bot 176 gives low to bot 57 and high to bot 120
+bot 107 gives low to bot 124 and high to bot 15
+bot 52 gives low to bot 27 and high to bot 28
+bot 103 gives low to bot 50 and high to bot 129
+bot 150 gives low to bot 131 and high to bot 148
+bot 16 gives low to output 20 and high to bot 189
+bot 190 gives low to output 18 and high to bot 146
+bot 157 gives low to bot 16 and high to bot 180
+bot 10 gives low to bot 158 and high to bot 130
+bot 202 gives low to bot 162 and high to bot 184
+bot 88 gives low to bot 77 and high to bot 84
+bot 188 gives low to bot 128 and high to bot 38
+bot 58 gives low to bot 15 and high to bot 101
+bot 171 gives low to bot 17 and high to bot 202
+bot 97 gives low to bot 178 and high to bot 67
+bot 163 gives low to bot 34 and high to bot 116
+bot 124 gives low to bot 0 and high to bot 145
+bot 71 gives low to bot 185 and high to bot 54
+bot 78 gives low to bot 14 and high to bot 200
+bot 101 gives low to bot 188 and high to bot 100
+bot 189 gives low to output 7 and high to bot 108
+bot 95 gives low to bot 101 and high to bot 100
+bot 0 gives low to bot 35 and high to bot 103
+bot 207 gives low to bot 37 and high to bot 62
+bot 49 gives low to bot 11 and high to bot 57
+bot 85 gives low to bot 30 and high to bot 199
+bot 89 gives low to bot 72 and high to bot 2
+bot 3 gives low to bot 134 and high to bot 66
+bot 181 gives low to bot 166 and high to bot 205
+bot 91 gives low to bot 151 and high to bot 172
+value 17 goes to bot 167
+bot 20 gives low to bot 130 and high to bot 73
+bot 196 gives low to bot 74 and high to bot 140
+bot 18 gives low to bot 121 and high to bot 168
+bot 185 gives low to output 15 and high to bot 54
+bot 178 gives low to bot 106 and high to bot 169
+bot 129 gives low to bot 127 and high to bot 49
+bot 19 gives low to bot 2 and high to bot 164
+bot 15 gives low to bot 145 and high to bot 188
+bot 144 gives low to bot 197 and high to bot 14
+bot 201 gives low to bot 206 and high to bot 198
+bot 164 gives low to bot 91 and high to bot 203
+bot 73 gives low to bot 105 and high to bot 112
+bot 191 gives low to bot 192 and high to bot 154
+bot 109 gives low to bot 167 and high to bot 86
+bot 151 gives low to bot 82 and high to bot 79
+bot 53 gives low to output 2 and high to bot 142
+bot 37 gives low to bot 29 and high to bot 157
+value 2 goes to bot 44
+bot 204 gives low to bot 112 and high to bot 36
+bot 40 gives low to bot 69 and high to bot 124
+bot 22 gives low to bot 53 and high to bot 69
+bot 104 gives low to bot 136 and high to bot 10
+value 19 goes to bot 88
+bot 127 gives low to output 5 and high to bot 11
+bot 183 gives low to bot 47 and high to bot 65
+bot 192 gives low to bot 140 and high to bot 51
+bot 38 gives low to bot 182 and high to bot 59
+bot 61 gives low to bot 52 and high to bot 136
+bot 156 gives low to bot 75 and high to bot 90
+value 37 goes to bot 37
+bot 28 gives low to bot 46 and high to bot 102
+bot 187 gives low to bot 149 and high to bot 8
+bot 132 gives low to bot 119 and high to bot 170
+bot 44 gives low to bot 9 and high to bot 144
+bot 29 gives low to output 0 and high to bot 16
+bot 6 gives low to bot 5 and high to bot 24
+bot 137 gives low to bot 36 and high to bot 18
+bot 130 gives low to bot 110 and high to bot 105
+value 5 goes to bot 92
+bot 35 gives low to output 3 and high to bot 50
+bot 152 gives low to output 8 and high to bot 190
+bot 143 gives low to bot 163 and high to bot 33
diff --git a/2016/aoc10/src/main.rs b/2016/aoc10/src/main.rs
new file mode 100644
index 0000000..c2c18be
--- /dev/null
+++ b/2016/aoc10/src/main.rs
@@ -0,0 +1,155 @@
+extern crate regex;
+use regex::Regex;
+
+use std::io::BufReader;
+use std::io::prelude::*;
+use std::fs::File;
+use std::cmp;
+
+#[derive(Debug, Clone)]
+struct Bot {
+ low: Option<i32>,
+ high: Option<i32>,
+ low_dest: Option<Dest>,
+ high_dest: Option<Dest>
+}
+
+#[derive(Debug, Clone)]
+enum Dest {
+ Bot(usize),
+ Output(usize)
+}
+
+impl Bot {
+ fn new() -> Bot {
+ Bot {low: None, high: None, low_dest: None, high_dest: None}
+ }
+
+ fn add_input(&mut self, input: i32) {
+ if self.low.is_none() {
+ self.low = Some(input);
+ }
+ else {
+ let other = self.low.unwrap(); //already handled none case
+ self.low = Some(cmp::min(input,other));
+ self.high = Some(cmp::max(input,other));
+ }
+ }
+ fn ready(&self) -> bool {
+ self.low.is_some() && self.high.is_some() &&
+ self.low_dest.is_some() && self.high_dest.is_some()
+ }
+ fn clear(&mut self) {
+ self.low = None;
+ self.high = None;
+ }
+}
+
+
+fn main() {
+ let mut bots = build_bots_graph();
+ let outputs = find_outputs(&mut bots);
+ println!("Outputs {:?}", outputs);
+}
+
+fn find_outputs(bots: &mut Vec<Bot>) -> Vec<i32> {
+ let mut output = Vec::new();
+
+ let mut is_stable = false;
+ while !is_stable {
+ is_stable = true;
+
+ for i in 0..bots.len() {
+ if bots[i].ready() {
+ is_stable = false;
+
+ let low = bots[i].low.unwrap();
+ let high = bots[i].high.unwrap();
+ bots[i].clear();
+
+ match bots[i].low_dest {
+ Some(Dest::Bot(j)) => {
+ bots[j].add_input(low);
+ },
+ Some(Dest::Output(j)) => {
+ check_add_output(&mut output, j);
+ output[j] = low;
+ },
+ _ => {}
+ };
+ match bots[i].high_dest {
+ Some(Dest::Bot(j)) => {
+ bots[j].add_input(high);
+ },
+ Some(Dest::Output(j)) => {
+ check_add_output(&mut output, j);
+ output[j] = high;
+ },
+ _ => {}
+ };
+ }
+ }
+ }
+
+ output
+}
+
+fn build_bots_graph() -> Vec<Bot> {
+ let lines = read_file();
+ let mut bots = Vec::new();
+
+ let value_regex = Regex::new(r"^value (\d+) goes to bot (\d+)$").unwrap();
+ let give_regex = Regex::new(r"^bot (\d+) gives low to (output|bot) (\d+) and high to (output|bot) (\d+)$").unwrap();
+
+ for line in lines {
+ if value_regex.is_match(line.as_ref()) {
+ let cap = value_regex.captures(line.as_ref()).unwrap();
+ let value = cap.at(1).unwrap().parse().unwrap();
+ let bot_index = cap.at(2).unwrap().parse().unwrap();
+ check_add_bot(&mut bots, bot_index);
+ bots[bot_index].add_input(value);
+ }
+ else if give_regex.is_match(line.as_ref()) {
+ let cap = give_regex.captures(line.as_ref()).unwrap();
+ let give_bot_index = cap.at(1).unwrap().parse().unwrap();
+ let low_is_to_output = cap.at(2).unwrap() == "output";
+ let low_dest = cap.at(3).unwrap().parse().unwrap();
+ let high_is_to_output = cap.at(4).unwrap() == "output";
+ let high_dest = cap.at(5).unwrap().parse().unwrap();
+
+ check_add_bot(&mut bots, give_bot_index);
+ bots[give_bot_index].low_dest = if low_is_to_output {
+ Some(Dest::Output(low_dest))
+ } else {
+ Some(Dest::Bot(low_dest))
+ };
+ bots[give_bot_index].high_dest = if high_is_to_output {
+ Some(Dest::Output(high_dest))
+ } else {
+ Some(Dest::Bot(high_dest))
+ };
+ }
+ }
+
+ bots
+}
+
+fn check_add_bot(bots: &mut Vec<Bot>, index: usize) {
+ while index >= bots.len() {
+ bots.push(Bot::new());
+ }
+}
+
+fn check_add_output(outputs: &mut Vec<i32>, index: usize) {
+ while index >= outputs.len() {
+ outputs.push(0);
+ }
+}
+
+fn read_file() -> Vec<String> {
+ let file = BufReader::new(File::open("input.txt").unwrap());
+ file.lines()
+ .map(|line| line.unwrap().trim().to_string())
+ .filter(|line| line.len() > 0)
+ .collect()
+}
diff --git a/2016/aoc11/Cargo.lock b/2016/aoc11/Cargo.lock
new file mode 100644
index 0000000..b423029
--- /dev/null
+++ b/2016/aoc11/Cargo.lock
@@ -0,0 +1,4 @@
+[root]
+name = "aoc11"
+version = "0.1.0"
+
diff --git a/2016/aoc11/Cargo.toml b/2016/aoc11/Cargo.toml
new file mode 100644
index 0000000..e0b3f68
--- /dev/null
+++ b/2016/aoc11/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "aoc11"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@gmail.com>"]
+
+[dependencies]
+
diff --git a/2016/aoc11/input.txt b/2016/aoc11/input.txt
new file mode 100644
index 0000000..d453804
--- /dev/null
+++ b/2016/aoc11/input.txt
@@ -0,0 +1,4 @@
+The first floor contains a strontium generator, a strontium-compatible microchip, a plutonium generator, and a plutonium-compatible microchip.
+The second floor contains a thulium generator, a ruthenium generator, a ruthenium-compatible microchip, a curium generator, and a curium-compatible microchip.
+The third floor contains a thulium-compatible microchip.
+The fourth floor contains nothing relevant.
diff --git a/2016/aoc11/src/main.rs b/2016/aoc11/src/main.rs
new file mode 100644
index 0000000..39a6e2f
--- /dev/null
+++ b/2016/aoc11/src/main.rs
@@ -0,0 +1,166 @@
+
+use std::collections::HashMap;
+
+//const MICROS: usize = 2; //example
+const MICROS: usize = 7;
+
+#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
+struct State {
+ microchips: [[bool; MICROS]; 4],
+ generators: [[bool; MICROS]; 4],
+ elevator: usize
+}
+
+impl State {
+ fn is_final(&self) -> bool {
+ let floor = 3;
+
+ for i in 0..MICROS {
+ if !self.microchips[floor][i] || !self.generators[floor][i] {
+ return false;
+ }
+ }
+ true
+ }
+
+ fn is_safe(&self) -> bool {
+ for floor in 0..4 {
+ for i in 0..MICROS {
+ for j in 0..MICROS {
+ //need to be on same floor, if any other micro is there
+ if self.generators[floor][j] && !self.generators[floor][i] && self.microchips[floor][i] {
+ return false;
+ }
+ }
+ }
+ }
+ true
+ }
+
+ fn valid_moves(&self) -> Vec<State> {
+ let mut moves = Vec::new();
+
+ let mut new_floors = Vec::new();
+ if self.elevator > 0 {
+ new_floors.push(self.elevator-1);
+ }
+ if self.elevator < 3 {
+ new_floors.push(self.elevator+1);
+ }
+ for &new_floor in new_floors.iter() {
+
+ //items to take can be: one micro, one generator, two micros, two generator, one of each
+
+ //one micro
+ for i in 0..MICROS {
+ if self.microchips[self.elevator][i] {
+ moves.push(self.move_micro(i, self.elevator, new_floor));
+ }
+ }
+ //one generator
+ for i in 0..MICROS {
+ if self.generators[self.elevator][i] {
+ moves.push(self.move_generator(i, self.elevator, new_floor));
+ }
+ }
+ //two micros
+ for i in 0..MICROS {
+ for j in i+1..MICROS {
+ if self.microchips[self.elevator][i] && self.microchips[self.elevator][j] {
+ moves.push(self.move_micro(i, self.elevator, new_floor).move_micro(j, self.elevator, new_floor));
+ }
+ }
+ }
+ //two generators
+ for i in 0..MICROS {
+ for j in i+1..MICROS {
+ if self.generators[self.elevator][i] && self.generators[self.elevator][j] {
+ moves.push(self.move_generator(i, self.elevator, new_floor).move_generator(j, self.elevator, new_floor));
+ }
+ }
+ }
+ //one of each
+ for i in 0..MICROS {
+ for j in 0..MICROS {
+ if self.microchips[self.elevator][i] && self.generators[self.elevator][j] {
+ moves.push(self.move_micro(i, self.elevator, new_floor).move_generator(j, self.elevator, new_floor));
+ }
+ }
+ }
+ }
+
+ moves.iter().filter(|x| x.is_safe()).cloned().collect()
+ }
+
+ fn move_micro(&self, micro: usize, floor: usize, new_floor: usize) -> State {
+ let mut new_state = self.clone();
+ new_state.microchips[floor][micro] = false;
+ new_state.microchips[new_floor][micro] = true;
+ new_state.elevator = new_floor;
+ new_state
+ }
+ fn move_generator(&self, gen: usize, floor: usize, new_floor: usize) -> State {
+ let mut new_state = self.clone();
+ new_state.generators[floor][gen] = false;
+ new_state.generators[new_floor][gen] = true;
+ new_state.elevator = new_floor;
+ new_state
+ }
+}
+
+fn main() {
+ //Stronium, plutonium, thulium, ruthenium, curium, electrium, dilithium
+ let initial = State {
+ microchips:
+ [[true, true, false, false, false, true, true],
+ [false, false, false, true, true, false, false],
+ [false, false, true, false, false, false, false],
+ [false, false, false, false, false, false, false]],
+ generators:
+ [[true, true, false, false, false, true, true],
+ [false, false, true, true, true, false, false],
+ [false, false, false, false, false, false, false],
+ [false, false, false, false, false, false, false]],
+ elevator: 0
+ };
+
+ /*
+ //example
+ let initial = State {
+ microchips:
+ [[true, true],
+ [false, false],
+ [false, false],
+ [false, false]],
+ generators:
+ [[false, false],
+ [true, false],
+ [false, true],
+ [false, false]],
+ elevator: 0
+ };
+ */
+
+ let mut states: HashMap<State, u32> = HashMap::new();
+ states.insert(initial, 0);
+
+ let mut moves = 0;
+ loop {
+ if states.iter().any(|(state, _)| state.is_final()) {
+ break;
+ }
+
+ let new_states: Vec<State> = states.iter().filter(|&(_, &x)| x == moves).flat_map(|(state, _)| state.valid_moves()).collect();
+
+ moves += 1;
+
+ for state in new_states {
+ if !states.contains_key(&state) {
+ states.insert(state, moves);
+ }
+ }
+ }
+
+
+ println!("Moves required: {}", moves);
+}
diff --git a/2016/aoc12/Cargo.lock b/2016/aoc12/Cargo.lock
new file mode 100644
index 0000000..24237f4
--- /dev/null
+++ b/2016/aoc12/Cargo.lock
@@ -0,0 +1,98 @@
+[root]
+name = "aoc12"
+version = "0.1.0"
+dependencies = [
+ "regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "kernel32-sys"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "memchr"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "regex"
+version = "0.1.80"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
+ "regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+ "thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "thread-id"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "thread_local"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "utf8-ranges"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi-build"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[metadata]
+"checksum aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66"
+"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
+"checksum libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "a51822fc847e7a8101514d1d44e354ba2ffa7d4c194dcab48870740e327cac70"
+"checksum memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20"
+"checksum regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)" = "4fd4ace6a8cf7860714a2c2280d6c1f7e6a413486c13298bbc86fd3da019402f"
+"checksum regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957"
+"checksum thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03"
+"checksum thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8576dbbfcaef9641452d5cf0df9b0e7eeab7694956dd33bb61515fb8f18cfdd5"
+"checksum utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f"
+"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
+"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
diff --git a/2016/aoc12/Cargo.toml b/2016/aoc12/Cargo.toml
new file mode 100644
index 0000000..f224921
--- /dev/null
+++ b/2016/aoc12/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "aoc12"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@entelect.co.za>"]
+
+[dependencies]
+regex = "0.1" \ No newline at end of file
diff --git a/2016/aoc12/input.txt b/2016/aoc12/input.txt
new file mode 100644
index 0000000..bb2a2ff
--- /dev/null
+++ b/2016/aoc12/input.txt
@@ -0,0 +1,23 @@
+cpy 1 a
+cpy 1 b
+cpy 26 d
+jnz c 2
+jnz 1 5
+cpy 7 c
+inc d
+dec c
+jnz c -2
+cpy a c
+inc a
+dec b
+jnz b -2
+cpy c b
+dec d
+jnz d -6
+cpy 17 c
+cpy 18 d
+inc a
+dec d
+jnz d -2
+dec c
+jnz c -5
diff --git a/2016/aoc12/src/main.rs b/2016/aoc12/src/main.rs
new file mode 100644
index 0000000..2356402
--- /dev/null
+++ b/2016/aoc12/src/main.rs
@@ -0,0 +1,136 @@
+extern crate regex;
+use regex::Regex;
+
+use std::io::BufReader;
+use std::io::prelude::*;
+use std::fs::File;
+
+enum Instruction {
+ CpyLit(i32, usize),
+ CpyReg(usize, usize),
+ Inc(usize),
+ Dec(usize),
+ Jnz(usize, i32),
+ Jmp(i32),
+ Noop
+}
+
+impl Instruction {
+ fn parse(line: &str) -> Instruction {
+ let cpy_lit: Regex = Regex::new(r"cpy ([-\d]+) (a|b|c|d)").unwrap();
+ let cpy_reg = Regex::new(r"cpy (a|b|c|d) (a|b|c|d)").unwrap();
+ let inc = Regex::new(r"inc (a|b|c|d)").unwrap();
+ let dec = Regex::new(r"dec (a|b|c|d)").unwrap();
+ let jnz_lit = Regex::new(r"jnz ([-\d]+) ([-\d]+)").unwrap();
+ let jnz_reg = Regex::new(r"jnz (a|b|c|d) ([-\d]+)").unwrap();
+
+ let cpy_lit_match = cpy_lit.captures(line);
+ let cpy_reg_match = cpy_reg.captures(line);
+ let inc_match = inc.captures(line);
+ let dec_match = dec.captures(line);
+ let jnz_lit_match = jnz_lit.captures(line);
+ let jnz_reg_match = jnz_reg.captures(line);
+
+ if cpy_lit_match.is_some() {
+ let cap = cpy_lit_match.unwrap();
+ let src: i32 = cap.at(1).unwrap().parse().unwrap();
+ let dest = to_register_index(cap.at(2).unwrap());
+ Instruction::CpyLit(src, dest)
+ }
+ else if cpy_reg_match.is_some() {
+ let cap = cpy_reg_match.unwrap();
+ let src = to_register_index(cap.at(1).unwrap());
+ let dest = to_register_index(cap.at(2).unwrap());
+ Instruction::CpyReg(src, dest)
+ }
+ else if inc_match.is_some() {
+ let cap = inc_match.unwrap();
+ let dest = to_register_index(cap.at(1).unwrap());
+ Instruction::Inc(dest)
+ }
+ else if dec_match.is_some() {
+ let cap = dec_match.unwrap();
+ let dest = to_register_index(cap.at(1).unwrap());
+ Instruction::Dec(dest)
+ }
+ else if jnz_lit_match.is_some() {
+ let cap = jnz_lit_match.unwrap();
+ let condition: i32 = cap.at(1).unwrap().parse().unwrap();
+ let offset: i32 = cap.at(2).unwrap().parse().unwrap();
+ if condition != 0 {
+ Instruction::Jmp(offset)
+ }
+ else {
+ Instruction::Noop
+ }
+ }
+ else if jnz_reg_match.is_some() {
+ let cap = jnz_reg_match.unwrap();
+ let condition = to_register_index(cap.at(1).unwrap());
+ let offset: i32 = cap.at(2).unwrap().parse().unwrap();
+ Instruction::Jnz(condition, offset)
+ }
+ else {
+ panic!("Invalid instruction line")
+ }
+ }
+}
+
+fn main() {
+ let program = read_file();
+
+ let mut registers: [i32; 4] = [0, 0, 1, 0];
+ let mut pc: usize = 0;
+
+ while pc < program.len() {
+ let mut pc_next: usize = pc+1;
+
+ match program[pc] {
+ Instruction::CpyLit(src, dest) => {
+ registers[dest] = src;
+ },
+ Instruction::CpyReg(src, dest) => {
+ registers[dest] = registers[src];
+ },
+ Instruction::Inc(dest) => {
+ registers[dest] += 1;
+ },
+ Instruction::Dec(dest) => {
+ registers[dest] -= 1;
+ },
+ Instruction::Jnz(condition, offset) => {
+ if registers[condition] != 0 {
+ pc_next = (pc as i32 + offset) as usize;
+ }
+ },
+ Instruction::Jmp(offset) => {
+ pc_next = (pc as i32 + offset) as usize
+ },
+ Instruction::Noop => {}
+ }
+
+ pc = pc_next;
+ }
+
+ println!("a: {}, b: {}, c: {}, d: {}", registers[0], registers[1], registers[2], registers[3]);
+
+}
+
+fn to_register_index(name: &str) -> usize {
+ match name {
+ "a" => 0,
+ "b" => 1,
+ "c" => 2,
+ "d" => 3,
+ _ => panic!("Invalid register provided")
+ }
+}
+
+fn read_file() -> Vec<Instruction> {
+ let file = BufReader::new(File::open("input.txt").unwrap());
+ file.lines()
+ .map(|line| line.unwrap())
+ .filter(|line| line.len() > 0)
+ .map(|line| Instruction::parse(line.trim()))
+ .collect()
+}
diff --git a/2016/aoc13/Cargo.lock b/2016/aoc13/Cargo.lock
new file mode 100644
index 0000000..d60f2c7
--- /dev/null
+++ b/2016/aoc13/Cargo.lock
@@ -0,0 +1,98 @@
+[root]
+name = "aoc13"
+version = "0.1.0"
+dependencies = [
+ "regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "kernel32-sys"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "memchr"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "regex"
+version = "0.1.80"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
+ "regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+ "thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "thread-id"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "thread_local"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "utf8-ranges"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi-build"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[metadata]
+"checksum aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66"
+"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
+"checksum libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "a51822fc847e7a8101514d1d44e354ba2ffa7d4c194dcab48870740e327cac70"
+"checksum memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20"
+"checksum regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)" = "4fd4ace6a8cf7860714a2c2280d6c1f7e6a413486c13298bbc86fd3da019402f"
+"checksum regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957"
+"checksum thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03"
+"checksum thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8576dbbfcaef9641452d5cf0df9b0e7eeab7694956dd33bb61515fb8f18cfdd5"
+"checksum utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f"
+"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
+"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
diff --git a/2016/aoc13/Cargo.toml b/2016/aoc13/Cargo.toml
new file mode 100644
index 0000000..347a1a4
--- /dev/null
+++ b/2016/aoc13/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "aoc13"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@entelect.co.za>"]
+
+[dependencies]
+regex = "0.1" \ No newline at end of file
diff --git a/2016/aoc13/src/main.rs b/2016/aoc13/src/main.rs
new file mode 100644
index 0000000..2c0e70e
--- /dev/null
+++ b/2016/aoc13/src/main.rs
@@ -0,0 +1,64 @@
+extern crate regex;
+use regex::Regex;
+
+use std::io::BufReader;
+use std::io::prelude::*;
+use std::fs::File;
+use std::collections::HashMap;
+
+fn main() {
+ //let target = (7, 4);
+ let target = (31,39);
+
+ let mut states: HashMap<(i32, i32), u32> = HashMap::new();
+ states.insert((1, 1), 0);
+ let mut moves = 0;
+ while moves < 50 {
+/* if states.iter().any(|(&state, _)| state == target) {
+ break;
+ }
+*/
+ let new_states: Vec<(i32, i32)> = states.iter().filter(|&(_, &x)| x == moves).flat_map(|(state, _)| available_steps(state)).collect();
+
+ moves += 1;
+
+ for state in new_states {
+ if !states.contains_key(&state) {
+ states.insert(state, moves);
+ }
+ }
+ }
+
+ println!("Moves required: {}", moves);
+ println!("Possible destinations: {}", states.iter().count());
+}
+
+
+fn available_steps(current: &(i32, i32)) -> Vec<(i32, i32)> {
+ let &(x0, y0) = current;
+ let mut results = Vec::new();
+ for &(x, y) in [(x0-1, y0), (x0+1, y0), (x0, y0-1), (x0, y0+1)].iter() {
+ if x >= 0 && y >= 0 && !is_wall(x, y) {
+ results.push((x, y));
+ }
+ }
+ results
+}
+
+fn print_map() {
+ for y in 0..10 {
+ for x in 0..10 {
+ print!("{}", if is_wall(x, y) {'#'} else {'.'});
+ }
+ println!("");
+ }
+}
+
+fn is_wall(x: i32, y: i32) -> bool {
+// let favourite_number = 10;
+ let favourite_number = 1352;
+ let funny_num = x*x + 3*x + 2*x*y + y + y*y + favourite_number;
+ let bin = format!("{:b}", funny_num);
+ let number_of_ones = bin.chars().filter(|&c| c == '1').count();
+ number_of_ones % 2 == 1
+}
diff --git a/2016/aoc14/Cargo.lock b/2016/aoc14/Cargo.lock
new file mode 100644
index 0000000..a889c91
--- /dev/null
+++ b/2016/aoc14/Cargo.lock
@@ -0,0 +1,14 @@
+[root]
+name = "aoc14"
+version = "0.1.0"
+dependencies = [
+ "md5 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "md5"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[metadata]
+"checksum md5 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7df230903ccdffd6b3b4ec21624498ea64c912ce50297846907f0b8e1bb249dd"
diff --git a/2016/aoc14/Cargo.toml b/2016/aoc14/Cargo.toml
new file mode 100644
index 0000000..eb3f92d
--- /dev/null
+++ b/2016/aoc14/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "aoc14"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@entelect.co.za>"]
+
+[dependencies]
+md5 = "^0.2" \ No newline at end of file
diff --git a/2016/aoc14/src/main.rs b/2016/aoc14/src/main.rs
new file mode 100644
index 0000000..d9410ce
--- /dev/null
+++ b/2016/aoc14/src/main.rs
@@ -0,0 +1,84 @@
+extern crate md5;
+
+use std::collections::HashMap;
+
+fn main() {
+// let input = "abc";
+ let input = "yjdafjpo";
+ let mut index = 0;
+ let mut results_found = 0;
+
+ let mut hash_memo = HashMap::new();
+ while results_found < 64 {
+ let hash = stretched_hash(format!("{}{}", input, index), &mut hash_memo);
+
+ let threes = find_concurrent_symbols(&hash, 3, true);
+ if threes.len() > 0 {
+// println!("Found three at {} -> {}", index, hash);
+ for i in 1..1001 {
+ let hash = stretched_hash(format!("{}{}", input, index+i), &mut hash_memo);
+ let fives = find_concurrent_symbols(&hash, 5, false);
+ if fives.iter().any(|c| threes.contains(c)) {
+ results_found += 1;
+// println!("Five found at {} -> {}", index+i, hash);
+ println!("Found hash {} at index {}", results_found, index);
+ break;
+ }
+ }
+ }
+ index += 1;
+ }
+
+}
+
+fn find_concurrent_symbols(hash: &String, count: u8, exit_early: bool) -> Vec<char> {
+ let mut last_symbol = None;
+ let mut last_symbol_run = 0;
+ let mut matches = Vec::new();
+ for c in hash.chars() {
+ let symbol_matches = match last_symbol {
+ Some(s) => s == c,
+ None => false
+ };
+
+ if symbol_matches {
+ last_symbol_run += 1;
+ if last_symbol_run >= count && !matches.contains(&c) {
+ matches.push(c);
+ if exit_early {
+ break;
+ }
+ }
+ } else {
+ last_symbol = Some(c);
+ last_symbol_run = 1;
+ }
+ }
+
+ matches
+}
+
+fn hash_to_string(hash: &[u8; 16]) -> String {
+ let mut result = String::with_capacity(32);
+
+ for &byte in hash.iter() {
+ result.push_str(format!("{:02x}", byte).as_ref());
+ }
+ result
+}
+
+fn stretched_hash(input: String, memo: &mut HashMap<String, String>) -> String {
+ memo.entry(input.clone()).or_insert_with(|| {
+ let mut result = input;
+ for _ in 0..2017 {
+ result = string_hash(result);
+ }
+ result
+ }).clone()
+}
+
+fn string_hash(input: String) -> String {
+ let bytes_to_hash = input.into_bytes();
+ let hash = md5::compute(bytes_to_hash.as_slice());
+ hash_to_string(&hash)
+}
diff --git a/2016/aoc15/Cargo.lock b/2016/aoc15/Cargo.lock
new file mode 100644
index 0000000..38f1d9c
--- /dev/null
+++ b/2016/aoc15/Cargo.lock
@@ -0,0 +1,98 @@
+[root]
+name = "aoc15"
+version = "0.1.0"
+dependencies = [
+ "regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "kernel32-sys"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "memchr"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "regex"
+version = "0.1.80"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
+ "regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+ "thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "thread-id"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "thread_local"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "utf8-ranges"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi-build"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[metadata]
+"checksum aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66"
+"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
+"checksum libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "a51822fc847e7a8101514d1d44e354ba2ffa7d4c194dcab48870740e327cac70"
+"checksum memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20"
+"checksum regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)" = "4fd4ace6a8cf7860714a2c2280d6c1f7e6a413486c13298bbc86fd3da019402f"
+"checksum regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957"
+"checksum thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03"
+"checksum thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8576dbbfcaef9641452d5cf0df9b0e7eeab7694956dd33bb61515fb8f18cfdd5"
+"checksum utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f"
+"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
+"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
diff --git a/2016/aoc15/Cargo.toml b/2016/aoc15/Cargo.toml
new file mode 100644
index 0000000..eb75c1d
--- /dev/null
+++ b/2016/aoc15/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "aoc15"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@entelect.co.za>"]
+
+[dependencies]
+regex = "0.1" \ No newline at end of file
diff --git a/2016/aoc15/input.txt b/2016/aoc15/input.txt
new file mode 100644
index 0000000..c4cf544
--- /dev/null
+++ b/2016/aoc15/input.txt
@@ -0,0 +1,7 @@
+Disc #1 has 17 positions; at time=0, it is at position 5.
+Disc #2 has 19 positions; at time=0, it is at position 8.
+Disc #3 has 7 positions; at time=0, it is at position 1.
+Disc #4 has 13 positions; at time=0, it is at position 7.
+Disc #5 has 5 positions; at time=0, it is at position 1.
+Disc #6 has 3 positions; at time=0, it is at position 0.
+Disc #7 has 11 positions; at time=0, it is at position 0.
diff --git a/2016/aoc15/src/main.rs b/2016/aoc15/src/main.rs
new file mode 100644
index 0000000..a7f0f64
--- /dev/null
+++ b/2016/aoc15/src/main.rs
@@ -0,0 +1,35 @@
+extern crate regex;
+
+use regex::Regex;
+use std::io::BufReader;
+use std::io::prelude::*;
+use std::fs::File;
+
+
+fn main() {
+ let gears = read_file();
+ let pass = (0..).find(|&i| can_pass(&gears, i)).expect("Reached end of infinite range without finding output");
+ println!("First pass at t={}", pass);
+}
+
+fn can_pass(gears: &Vec<(i32, i32, i32)>, time: i32) -> bool {
+ gears.iter().all(|&(time_offset, init_pos, gear_size)| (init_pos + time_offset + time) % gear_size == 0)
+}
+
+fn read_file() -> Vec<(i32, i32, i32)> {
+ let file = BufReader::new(File::open("input.txt").unwrap());
+ let line_regex = Regex::new(r"Disc #(\d+) has (\d+) positions; at time=0, it is at position (\d+).").unwrap();
+ file.lines()
+ .filter_map(|line| {
+ line_regex.captures(line.unwrap().as_ref()).and_then(|cap| {
+ let time_offset = cap.at(1).and_then(|s| s.parse::<i32>().ok());
+ let init_pos = cap.at(3).and_then(|s| s.parse::<i32>().ok());
+ let gear_size = cap.at(2).and_then(|s| s.parse::<i32>().ok());
+ match (time_offset, init_pos, gear_size) {
+ (Some(a), Some(b), Some(c)) => Some((a,b,c)),
+ _ => None
+ }
+ })
+ })
+ .collect()
+}
diff --git a/2016/aoc16/Cargo.lock b/2016/aoc16/Cargo.lock
new file mode 100644
index 0000000..af71beb
--- /dev/null
+++ b/2016/aoc16/Cargo.lock
@@ -0,0 +1,4 @@
+[root]
+name = "aoc16"
+version = "0.1.0"
+
diff --git a/2016/aoc16/Cargo.toml b/2016/aoc16/Cargo.toml
new file mode 100644
index 0000000..3e56892
--- /dev/null
+++ b/2016/aoc16/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "aoc16"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@gmail.com>"]
+
+[dependencies]
diff --git a/2016/aoc16/src/main.rs b/2016/aoc16/src/main.rs
new file mode 100644
index 0000000..c5ecd10
--- /dev/null
+++ b/2016/aoc16/src/main.rs
@@ -0,0 +1,68 @@
+fn main() {
+ let data = initial();
+ let expanded = expand_to_size(data, 35651584);
+ let check = checksum(expanded);
+ print(&check);
+}
+
+fn initial() -> Vec<bool> {
+ to_bit_vec("10001001100000001")
+}
+
+fn to_bit_vec(input: &str) -> Vec<bool> {
+ input.chars().map(|c| c == '1').collect()
+}
+
+fn expand(a: Vec<bool>) -> Vec<bool> {
+ let mut b = a.clone();
+ b.reverse();
+ b = b.iter().map(|x| !x).collect();
+
+ let mut out = a.clone();
+ out.push(false);
+ out.append(&mut b);
+ out
+}
+
+fn expand_to_size(init: Vec<bool>, size: usize) -> Vec<bool> {
+ let mut out = init.clone();
+ while out.len() < size {
+ out = expand(out);
+ }
+ out.truncate(size);
+ out
+}
+
+fn checksum(data: Vec<bool>) -> Vec<bool> {
+ let mut check: Vec<bool> = data.chunks(2).map(|x| x[0] == x[1]).collect();
+ if check.len() % 2 == 0 {
+ check = checksum(check);
+ }
+ check
+}
+
+fn print(data: &Vec<bool>) {
+ for &bit in data {
+ print!("{}", if bit {'1'} else {'0'});
+ }
+ println!("");
+}
+
+#[test]
+fn test_expand() {
+ assert_eq!(expand(to_bit_vec("1")), to_bit_vec("100"));
+ assert_eq!(expand(to_bit_vec("0")), to_bit_vec("001"));
+ assert_eq!(expand(to_bit_vec("11111")), to_bit_vec("11111000000"));
+ assert_eq!(expand(to_bit_vec("111100001010")), to_bit_vec("1111000010100101011110000"));
+}
+
+#[test]
+fn test_expand_to_size() {
+ assert_eq!(expand_to_size(to_bit_vec("10000"), 20), to_bit_vec("10000011110010000111"));
+}
+
+#[test]
+fn test_checksum() {
+ assert_eq!(checksum(to_bit_vec("10000011110010000111")), to_bit_vec("01100"));
+}
+
diff --git a/2016/aoc17/Cargo.lock b/2016/aoc17/Cargo.lock
new file mode 100644
index 0000000..488e59b
--- /dev/null
+++ b/2016/aoc17/Cargo.lock
@@ -0,0 +1,14 @@
+[root]
+name = "aoc17"
+version = "0.1.0"
+dependencies = [
+ "md5 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "md5"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[metadata]
+"checksum md5 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7df230903ccdffd6b3b4ec21624498ea64c912ce50297846907f0b8e1bb249dd"
diff --git a/2016/aoc17/Cargo.toml b/2016/aoc17/Cargo.toml
new file mode 100644
index 0000000..88c211c
--- /dev/null
+++ b/2016/aoc17/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "aoc17"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@gmail.com>"]
+
+[dependencies]
+md5 = "^0.2" \ No newline at end of file
diff --git a/2016/aoc17/src/main.rs b/2016/aoc17/src/main.rs
new file mode 100644
index 0000000..77fdf2e
--- /dev/null
+++ b/2016/aoc17/src/main.rs
@@ -0,0 +1,98 @@
+extern crate md5;
+
+#[derive(Clone)]
+struct State {
+ input: String,
+ path: String,
+ x: i8,
+ y: i8
+}
+
+impl State {
+ fn open_directions(&self) -> Vec<(char, i8, i8)> {
+ let hash_input = format!("{}{}", self.input, self.path);
+ let hash = md5::compute(hash_input.into_bytes().as_slice());
+
+ let mut results = Vec::new();
+ if hash[0]/16 > 10 && self.y > 0 {
+ results.push(('U', 0, -1));
+ }
+ if hash[0]%16 > 10 && self.y < 3 {
+ results.push(('D', 0, 1));
+ }
+ if hash[1]/16 > 10 && self.x > 0 {
+ results.push(('L', -1, 0));
+ }
+ if hash[1]%16 > 10 && self.x < 3 {
+ results.push(('R', 1, 0));
+ }
+
+ results
+ }
+
+ fn next_states(&self) -> Vec<State> {
+ self.open_directions().iter()
+ .map(|&(dir, dx, dy)| State {
+ input: self.input.clone(),
+ path: {
+ let mut p = self.path.clone();
+ p.push(dir);
+ p
+ },
+ x: self.x + dx,
+ y: self.y + dy
+ }).collect()
+ }
+
+ fn is_final(&self) -> bool {
+ self.x == 3 && self.y == 3
+ }
+}
+
+fn main() {
+ let initial = State {
+ input: "lpvhkcbi".to_string(),
+ path: String::new(),
+ x: 0,
+ y: 0
+ };
+
+ let final_state = find_final_state(initial.clone());
+ let longest_path = find_longest_path(initial);
+
+ println!("Final State Path: {}", final_state.path);
+ println!("Longest Path: {}", longest_path);
+}
+
+fn find_final_state(initial: State) -> State {
+ let mut states = vec!(initial);
+
+ loop {
+ match states.iter().find(|s| s.is_final()) {
+ Some(final_state) => {return final_state.clone();},
+ None => {}
+ };
+
+ states = states.iter().flat_map(|s| s.next_states()).collect();
+ }
+}
+
+fn find_longest_path(initial: State) -> u32 {
+ let mut states = vec!(initial);
+ let mut current_longest = 0;
+
+ while states.len() > 0 {
+
+ match states.iter().find(|s| s.is_final()) {
+ Some(final_state) => {current_longest = final_state.path.len() as u32;},
+ None => {}
+ };
+
+ states = states.iter()
+ .filter(|s| !s.is_final())
+ .flat_map(|s| s.next_states())
+ .collect();
+ }
+
+ current_longest
+}
diff --git a/2016/aoc18/Cargo.lock b/2016/aoc18/Cargo.lock
new file mode 100644
index 0000000..d26659d
--- /dev/null
+++ b/2016/aoc18/Cargo.lock
@@ -0,0 +1,4 @@
+[root]
+name = "aoc18"
+version = "0.1.0"
+
diff --git a/2016/aoc18/Cargo.toml b/2016/aoc18/Cargo.toml
new file mode 100644
index 0000000..5eadfea
--- /dev/null
+++ b/2016/aoc18/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "aoc18"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@gmail.com>"]
+
+[dependencies]
diff --git a/2016/aoc18/src/main.rs b/2016/aoc18/src/main.rs
new file mode 100644
index 0000000..52ad7a9
--- /dev/null
+++ b/2016/aoc18/src/main.rs
@@ -0,0 +1,20 @@
+fn main() {
+ let init: Vec<char> = ".^^..^...^..^^.^^^.^^^.^^^^^^.^.^^^^.^^.^^^^^^.^...^......^...^^^..^^^.....^^^^^^^^^....^^...^^^^..^".chars().collect();
+
+ let mut map = Vec::new();
+ map.push(init);
+
+ for _ in 1..400000 {
+ let last = map.last().unwrap().clone();
+ let mut next = Vec::new();
+ for i in 0..last.len() {
+ let left = if i == 0 { '.' } else { last[i-1] };
+ let right = if i == last.len()-1 { '.' } else { last[i+1] };
+ next.push(if left == right { '.' } else { '^' });
+ }
+ map.push(next);
+ }
+
+ let safe_count = map.iter().map(|row| row.iter().filter(|&&c| c=='.').count() as u32).sum::<u32>();
+ println!("Safe tiles: {}", safe_count);
+}
diff --git a/2016/aoc19/Cargo.lock b/2016/aoc19/Cargo.lock
new file mode 100644
index 0000000..7dc8a26
--- /dev/null
+++ b/2016/aoc19/Cargo.lock
@@ -0,0 +1,4 @@
+[root]
+name = "aoc19"
+version = "0.1.0"
+
diff --git a/2016/aoc19/Cargo.toml b/2016/aoc19/Cargo.toml
new file mode 100644
index 0000000..17889e3
--- /dev/null
+++ b/2016/aoc19/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "aoc19"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@gmail.com>"]
+
+[dependencies]
diff --git a/2016/aoc19/src/main.rs b/2016/aoc19/src/main.rs
new file mode 100644
index 0000000..1930d8d
--- /dev/null
+++ b/2016/aoc19/src/main.rs
@@ -0,0 +1,42 @@
+fn main() {
+ part1();
+ part2();
+}
+
+fn part1() {
+ let mut elves = (0..3017957).map(|i| i+1).collect::<Vec<_>>();
+
+ let mut eliminate_mod = 1;
+
+ while elves.len() > 1 {
+ let next_mod = if elves.len() % 2 == eliminate_mod { 0 } else { 1 };
+ elves = elves.iter()
+ .enumerate()
+ .filter(|&(i, _)| i % 2 != eliminate_mod)
+ .map(|(_, &e)| e)
+ .collect();
+ eliminate_mod = next_mod;
+ }
+
+ let elf = elves[0];
+ println!("Elf {} gets all the presents in part 1", elf);
+}
+
+fn part2() {
+ let mut elves = (0..3017957).map(|i| i+1).collect::<Vec<_>>();
+
+ let mut i = 0;
+ while elves.len() > 1 {
+ i = i % elves.len();
+ let to_eliminate = (i + elves.len() / 2) % elves.len();
+// println!("Elf {} is taking presents from elf {}", elves[i], elves[to_eliminate]);
+ elves.remove(to_eliminate);
+ if to_eliminate > i {
+ i += 1;
+ }
+ }
+
+ let elf = elves[0];
+ println!("Elf {} gets all the presents in part 2", elf);
+
+}
diff --git a/2016/aoc2/Cargo.lock b/2016/aoc2/Cargo.lock
new file mode 100644
index 0000000..b0dbf6e
--- /dev/null
+++ b/2016/aoc2/Cargo.lock
@@ -0,0 +1,4 @@
+[root]
+name = "aoc2"
+version = "0.1.0"
+
diff --git a/2016/aoc2/Cargo.toml b/2016/aoc2/Cargo.toml
new file mode 100644
index 0000000..e4dcc6f
--- /dev/null
+++ b/2016/aoc2/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "aoc2"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@entelect.co.za>"]
+
+[dependencies]
diff --git a/2016/aoc2/input.txt b/2016/aoc2/input.txt
new file mode 100644
index 0000000..ba5a73d
--- /dev/null
+++ b/2016/aoc2/input.txt
@@ -0,0 +1,5 @@
+RUDULRLLUULRURDDRRUDURULLLDRLRLUDDLUDUDDUDRRDUDULDUUULLRULLRLDDLDLDDRLRRRRUDLLDDUULDRLLUDDRRUURLULRRRDLLURRUUDURUDDURLUDDDLUDDUUDUURUDLRDRDRLRDRLDRUDRUUDLRDDRRURDDLRDDRRURDUDDLULLUDRURURRRLRRUDUULULULRRLDLUDUURRLLRUDLLDRDDLRRRULRUDLULDDLLLULDLRUDLLLLRDDLRDRLDRLLRDRRDLRDULULRLLLDRUDRRRUULRUULDRURLUDRURRDLLDLRDLDDDDRRLUDLRRLUUUURDRDDLRRURURRDUULLRLURLURUDDDRDURDUUDRLRLRRLDDLDLDLDDDUDDULURLDDLLRLRRDULUDDLULRLUDDLDLRULUUUDRLDRUDURLUDDRLLRUULDLRRRRDLLLLURULLRDRRUDLUULRRDLLRLRLUDLDDULLDLLRDLDLL
+LLUUUUUUDUDRLRDRDLDURRRLLRRLRURLLUURRLLUDUDLULUURUUURDLUDLDDLULLRDLRUULDLRDUDURLLDDUDUDULLUDDUULLLUULRRRLULRURRDLRUDUDDURRRDRUURDURLLULLRULLDRUULLURLDRDUUDDDDDDRRLDRLRRRLULDDUURRLLLLDRURLURDRDRDURUDUURRDUDUDRLLUUDDRLUDDDRDLDLRLDRURRDLLRULDRLLURURRLUULLRLRRURDDRDRUUURUURUUUDLLRRLUDRLDLRLURLDLUDDUDDDLDUDRRLDLRURULRLLRDUULURRRULDLLLRLDDDUURRRRDULLRURRLULULDLRRUDUDDLRUURDLDUDDUDRRDLRRRDUDUUUDLLDDDDLURLURRRUUULLLULRRLLLLLLULDUUDLRUDRRDLRDUUDUDLLRLDLLRUURDUUURUUUDDLLUUDLULDURLULULUUUDRUDULLURRULRULLRDLDDU
+RLUUURULLDLRLDUDRDURRDUURLLUDDDUULRRRLRLURDDRUULUDULDUUDDDDUDDDDRUDDLDUUDRUDLRRRLLRDDLLLRLLRUULRUULDDRURRLURRLRLULDDRRRDDURDDRDRDULRUDRUUDULRLLULDLRLLDRULRDDRRDDUDLRLLUDRDRRRLUDULRDLRDDURRUUDDRRUDURRUUUDDRRDUDURLUUDUDUURDDDLURLULLUULULURUDUUDRUDULLUUULURDLDUULLDDLLDULRLRLRDUUURUUDLRLDURUDRLDULLUDLDLLRDUURRDUDURLUUUDLLRRULRLULRLDLLURDURRULRLLRRDUDLLRDRRRRDLUUDRUUUDDLRLUDDDDDDRURRRUUURRDLLRURLDDLLDLRRLLLDRRULRRUDLDRDDRRLULURLLUURURURRRRUUUUURUDURLRLLLULULDLLDLRDRRULUDUDRDRRDRDRRDUDLLLRUDRUDDDULRULRRRDRLRUUUURUDURDUUULLULRUDDULDUUDLDURRD
+ULRULDDLDLULLLRRRLRUDDDDDLLDDUDLRRDULUUDRDLRRURDRRLUULRURUDRRULDLLLUDRUUDULULUDDRUDDDRDURRRDRDUUURLRDULUDRDRLDRUDDLLLDRRULUDLUDLDLLRRUDUULULDLDLLUURDLDDLLUUDURLURLLLDRDLDRRLRULUURRDRULRUUURULRRUDDDDLLDLDDLLRRLRRRRDUUDUDLDRDRRURDLRURULDLRDLLLLRUDRLLRDLRLRDURDRUDURRRLRDRDLLRLUDDDDRLRLLDUURRURLUURUULUDLUURDRRUDDLUDUDDDURRDRUDRLRULDULUUUUUUDDUDRUDUUURUDRRDLUDLUUDUULUDURDLDDDLLURRURUUDUDDRRDRLLULULDRLRURRDDDRDUUURDDDRULUDRDDLDURRLDDDLRRRLDDRDURULDLUDLLLURLURRLRRULDLLDDUDRRULDRRRRLURRUULRRRUDLURDLLDLLDULUUDRRLDLLLDRLRUDLUULDLDRUDUDURDRUDRDDDLRLULLUR
+LRLUUURRLRRRRRUURRLLULRLULLDLUDLUDRDDRLDLRLULLURDURLURDLLRLDUUDDURRRRLDLLRULLRLDLLUUDRLDDLLDRULDRLLRURDLRURRUDLULLRURDLURRURUDULLDRLLUUULUDRURRUUDUDULUUULRLDDULDRDLUDDUDDDLRURULLDLLLRLLUURDLRUDLLLLDLLRLRUUUDDRUUUUDLDLRDDURLDURUULLLUUDLLLLDULRRRLLDLDRRDRLUDRUDURLLUDLRLLUDUDRDDDRDLRDLRULUULDRLUDLRLDUURLRRLUDDDUUDDDUDRLDLDUDLURUULLDDDURUUULRLUDLDURUUDRDRURUDDUURDUUUDLLDLDLDURUURLLLLRURUURURULRULLRUDLRRUUUUUDRRLLRDDUURDRDRDDDUDRLURDRRRUDLLLDURDLUUDLLUDDULUUDLDUUULLDRDLRURUURRDURRDLURRRRLLUUULRDULDDLDUURRDLDLLULRRLLUDLDUDLUUL
diff --git a/2016/aoc2/src/main.rs b/2016/aoc2/src/main.rs
new file mode 100644
index 0000000..f4c3bfd
--- /dev/null
+++ b/2016/aoc2/src/main.rs
@@ -0,0 +1,61 @@
+use std::io::BufReader;
+use std::io::prelude::*;
+use std::fs::File;
+
+fn main() {
+ let lines = read_file();
+ let mut current = 5;
+ for line in lines {
+ current = line.chars().fold(current, |current, dir| move_char_hex(current, dir));
+ println!("{:X}", current);
+ }
+}
+
+fn read_file() -> Vec<String> {
+ let file = BufReader::new(File::open("input.txt").unwrap());
+ file.lines()
+ .map(|line| line.unwrap().trim().to_string())
+ .filter(|line| line.len() > 0)
+ .collect()
+}
+
+
+//assume current in 1-9 range, and char is in UDLR
+fn move_char(current: i32, dir: char) -> i32 {
+ match dir {
+ 'U' => if current <= 3 { current } else { current - 3},
+ 'D' => if current >= 7 { current } else { current + 3},
+ 'L' => if current%3 == 1 { current } else { current - 1},
+ 'R' => if current%3 == 0 { current } else { current + 1},
+ _ => panic!("Bad direction character")
+ }
+}
+
+// 1
+// 2 3 4
+// 5 6 7 8 9
+// A B C
+// D
+fn move_char_hex(current: i32, dir: char) -> i32 {
+ match dir {
+ 'U' => match current {
+ 1|2|4|5|9 => current,
+ 3|13 => current - 2,
+ _ => current - 4
+ },
+ 'D' => match current {
+ 5|10|13|12|9 => current,
+ 1|11 => current + 1,
+ _ => current + 4
+ },
+ 'L' => match current {
+ 1|2|5|10|13 => current,
+ _ => current - 1
+ },
+ 'R' => match current {
+ 1|4|9|12|13 => current,
+ _ => current + 1
+ },
+ _ => panic!("Bad direction character")
+ }
+}
diff --git a/2016/aoc20/Cargo.lock b/2016/aoc20/Cargo.lock
new file mode 100644
index 0000000..26be916
--- /dev/null
+++ b/2016/aoc20/Cargo.lock
@@ -0,0 +1,4 @@
+[root]
+name = "aoc20"
+version = "0.1.0"
+
diff --git a/2016/aoc20/Cargo.toml b/2016/aoc20/Cargo.toml
new file mode 100644
index 0000000..4c1e873
--- /dev/null
+++ b/2016/aoc20/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "aoc20"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@gmail.com>"]
+
+[dependencies]
diff --git a/2016/aoc20/input.txt b/2016/aoc20/input.txt
new file mode 100644
index 0000000..c3e912f
--- /dev/null
+++ b/2016/aoc20/input.txt
@@ -0,0 +1,1104 @@
+272152717-281364173
+480675455-489214207
+3562619188-3566180938
+474796666-476679929
+1859288016-1859426304
+3500809029-3520779986
+1711620671-1724624325
+376497036-379822744
+2334350029-2336872286
+2880314906-2881510051
+257912946-260566708
+2964360275-2973540924
+889696219-900080622
+2727172832-2737372242
+33674001-51133436
+2718782366-2736816045
+41293631-52546854
+1064827080-1071610531
+1373807967-1374769067
+3261078460-3268114587
+1583129312-1602482863
+1605269651-1617971405
+365345542-377782493
+2858099254-2862714857
+1147380159-1156709753
+1087934555-1093750979
+998603437-1001868893
+234297440-245049936
+427084952-449321291
+3115490453-3126172818
+0-166475
+2859739533-2864404117
+2879116214-2888999956
+4166942312-4169074982
+2693533587-2694200673
+84162473-84534337
+2164071501-2168305216
+3745751095-3750043362
+2647427848-2647977897
+2028900925-2034847596
+876886411-878398110
+2589041333-2589873869
+876959837-878627172
+431139724-458304869
+1877994382-1887344924
+473575203-475773145
+252091135-257535969
+177110001-177143710
+2722497928-2723521816
+2208127-2536514
+1748077674-1751224226
+2362936907-2381045647
+2020385448-2029519771
+3108825744-3123438032
+872292652-885764819
+305053947-314709696
+2717924562-2718755692
+48149217-51160833
+2149726170-2150134226
+1729844094-1745733187
+1375741284-1378782323
+3744515388-3761146958
+78523085-78634151
+1634372345-1650424418
+3199349237-3209140394
+2011853949-2039316392
+769580925-794759455
+3841896290-3862358298
+3360393034-3379747723
+1120644472-1134516526
+815948131-837832345
+1590411139-1596337230
+2894381219-2935549329
+3688775236-3725245783
+963257634-966114246
+3566641344-3578334024
+1402589368-1434296916
+2742164387-2746045182
+3336884060-3357139723
+1529922302-1532912060
+812048355-820600359
+3535903629-3546917858
+3793132304-3794479774
+2441870431-2446591046
+790688046-795287265
+1094905232-1100177740
+2745878705-2749992348
+119256353-127273572
+3046258846-3057351205
+1754142948-1755600336
+1439035504-1441512409
+2099760008-2108426979
+2336936249-2337901885
+886155227-897744302
+278389264-304413122
+2261948686-2274345666
+3650645303-3661861270
+574462284-588550773
+1759196520-1782105094
+965026392-968307163
+2946755906-2963417308
+1766330775-1797112785
+1200115116-1225710522
+2080628180-2093783866
+2259186780-2265576012
+3422484974-3431403368
+2617357126-2619542029
+3535424340-3544236729
+1159703397-1178419333
+3695852451-3731387995
+2624409231-2626475102
+2462304649-2486546066
+1991659530-1991878310
+3675781139-3676295005
+3077370804-3098240471
+2410139047-2412323245
+1441379095-1464833739
+4254940654-4257828865
+3134602505-3135787446
+1531285367-1533939508
+1982248547-1989219645
+3717359312-3718050739
+1149793223-1159703395
+1718841131-1723739366
+1338353885-1363179561
+432322947-450369838
+3592044590-3598404106
+2783263665-2802135338
+2743201911-2758731127
+2940668500-2946140977
+3588363275-3594330069
+3675945049-3679197388
+154488705-187446525
+1653195306-1670854086
+2771303647-2772439896
+84146114-84264353
+1593778990-1622000763
+1580746474-1580917737
+801556682-801983712
+2268279290-2282899033
+3429390560-3432646573
+1355690206-1364432183
+3364827834-3370027309
+1343867080-1356033542
+2769747098-2802096717
+2451978746-2499145061
+3181481071-3202130015
+149287453-193454621
+2907925124-2933668261
+3525815495-3531996642
+892781900-902374081
+801983714-808209514
+1205516416-1207518863
+3475944050-3479276890
+1680662691-1693249318
+441188152-451875207
+3866263742-3869203885
+872306827-886155226
+3641638239-3656867109
+1292372277-1314188693
+1062559245-1064950825
+2334198700-2335529918
+1122962410-1136372412
+623323144-625918342
+2425193847-2429793856
+373315052-379611660
+2418007458-2424289401
+2149571480-2150070836
+1991878311-1994706041
+3043381174-3046887777
+497434379-500148281
+1825422529-1838184381
+137450473-139095016
+248808686-249748629
+1989969134-1990676913
+960553017-960915199
+2336374612-2337150925
+3369599561-3390928276
+113852260-145672651
+2986681144-2989530365
+3856382204-3873203604
+1657674792-1663548211
+2650185850-2651060935
+1647983099-1662799191
+1082357088-1112329267
+3793767754-3794336046
+3705877748-3728561957
+2769813898-2772369413
+3794164058-3801441915
+623200755-625407322
+1241966895-1253020214
+450369839-463131291
+2717038617-2723107862
+961267447-962353699
+193454623-196340979
+4253667440-4261704870
+3269563154-3275293388
+1505893371-1506880655
+3873203606-3889412741
+443548825-444733658
+3045753812-3049382630
+732764611-733035245
+961034623-961300670
+1373470559-1373526698
+2860192109-2867276065
+3312623058-3313008029
+3942424007-3951811891
+1197857710-1214225356
+458105388-462489469
+4259123154-4263336824
+960863927-961733781
+44819071-52470556
+957158383-958041099
+2543986743-2554322396
+339721933-346413740
+1010736956-1030771663
+4288781458-4289261456
+3687051286-3722932714
+2420813443-2424860115
+1989395087-1989698527
+3473694511-3476125935
+2408526816-2412196386
+1989398215-1991201331
+1526350090-1542206580
+2394556084-2399639414
+3510330656-3522250181
+137874061-144376880
+4167095310-4177987517
+2785359721-2785427263
+15024863-23531388
+1625174667-1658679299
+974122151-995631685
+1540947566-1554930456
+2424921025-2429636819
+1993822183-1994839237
+1094823818-1097108689
+69796587-71291314
+37126017-49427721
+3793022166-3794100162
+908189684-911496714
+2911211968-2917349047
+1227212686-1234159311
+3776286544-3783635666
+3531996644-3536250992
+3396302214-3406687062
+1476456536-1478818018
+2443497737-2447228620
+962292354-965288690
+1833703443-1843811212
+998277195-1000562480
+883225973-896212798
+2202815121-2215802598
+3557733372-3563107357
+2648035823-2649474134
+2723831559-2734044916
+1714279973-1738575730
+110217-574651
+1398965758-1409470798
+2330603686-2335139291
+1506286657-1511280423
+3365567975-3371386015
+466326205-480223737
+1989219647-1989438488
+3008188882-3010347685
+1070925288-1071665482
+2111554226-2123836945
+2137226110-2138852181
+1081261041-1091870264
+1081552237-1090538414
+2000657198-2037677988
+2718009384-2720142472
+925940762-939052067
+4179143261-4191765704
+3426378774-3430410036
+3676393933-3680167774
+3271833171-3277125583
+274414401-283893852
+3124560226-3128380638
+1208163309-1215074110
+2465798305-2494706753
+3050317115-3058897888
+1302678331-1315210828
+1751224227-1758206846
+931444766-948598982
+151669773-180559543
+255864690-255985990
+1556987318-1563743144
+16294070-23923782
+1415762720-1421421169
+3853344243-3864268114
+1280237454-1286328218
+2944350248-2976813361
+2187770126-2203436268
+3505239916-3517301515
+3232015564-3235367871
+2146211145-2166090499
+910952647-911877073
+1579658725-1581392690
+1237242317-1258610777
+2589766513-2598433041
+3449310840-3449858133
+745819525-755688297
+3776094116-3783478049
+2108426981-2124149170
+3449389881-3462604413
+2301503968-2324628965
+1005263513-1027181473
+1952664131-1969650551
+1285113553-1288652959
+3896408883-3908694324
+1920600328-1921999554
+1025403493-1031247416
+3905769594-3930128244
+1031247417-1047578444
+3885007170-3895219247
+3598377658-3599404192
+1697890477-1697912613
+954538505-957768997
+2816494072-2842728200
+492165035-498202012
+3137181704-3152588209
+1755735260-1759196518
+1371495492-1371550991
+2501923864-2514064340
+305959083-311818120
+4250019192-4275532230
+114168261-116414851
+2447228622-2451978745
+766211517-801556681
+3376445798-3394303381
+3501155911-3526104374
+2548986102-2564634962
+3263667615-3270390046
+1807095399-1824137700
+856041972-859823687
+3887315148-3892355947
+1030764665-1045428052
+638833662-640333593
+2121184882-2129744090
+2881011537-2885878144
+3588560066-3597713320
+3124980377-3134500989
+489214209-512240639
+3760702359-3764383643
+1090166392-1096894006
+917419134-922706929
+1296067761-1309424658
+689572986-696039127
+2660085630-2660431880
+680230992-716886780
+1592087783-1598197492
+1530767294-1575862739
+2082087967-2085220519
+2424541691-2426736024
+113504564-116385542
+1916132714-1932780572
+503684477-512284558
+2615977363-2622859043
+4035141786-4047227590
+1663548212-1680662689
+3047614614-3051657189
+2634680042-2641014306
+2583260376-2591896929
+2645275066-2647436256
+64047546-86026817
+1071039399-1072162085
+2594771897-2599508024
+83962861-84534191
+902374083-941216585
+2586806577-2599448524
+1274245593-1274516893
+4031038177-4040911753
+983068813-998624841
+534906133-573925401
+3329216543-3336884059
+4125892395-4138236492
+3807924665-3812644495
+1774911-2450996
+446418646-455236779
+2877486448-2884177700
+1373832888-1373901196
+370639181-384962937
+12016954-19316517
+3134500991-3134627688
+1373501126-1373590483
+1777703220-1777741597
+3743473590-3769013947
+2353521003-2362936906
+2468617254-2477279185
+78550601-78698869
+1273031112-1274488766
+968052409-969178069
+3907082563-3913084150
+3322437732-3338709909
+970661335-978617986
+2985507999-2990149897
+1499815926-1518480568
+2047086312-2056763544
+3154050192-3178489168
+1544927329-1559460655
+614918489-621719308
+3733606954-3743473589
+1499734003-1505336823
+1765493480-1780907733
+1112329269-1144192156
+1908189573-1916132712
+2978158245-2980295974
+854842773-855564041
+3851762797-3856667050
+2987912828-2988480807
+3845355673-3864117699
+2372563028-2379155071
+4164107384-4175248779
+206495443-209268583
+2893360924-2906330615
+1374122783-1374244946
+1315210829-1323332739
+2819221138-2820241142
+2987725800-2988399994
+3420480297-3426061444
+1745733189-1750260936
+2771579434-2772910814
+1721651362-1731098010
+1200223043-1222602885
+3431337889-3434193062
+2412323247-2441870430
+3756861847-3771488683
+853629069-857835277
+3744664061-3763198907
+1371491558-1371529465
+1932780573-1939156498
+3661861272-3662675926
+2648267077-2650619730
+3366486664-3371903512
+1268371412-1276470615
+2691106038-2691272785
+3227264064-3240740070
+1906133184-1910990608
+3853470102-3865286420
+2646285040-2646358000
+2196926231-2206264598
+4257710901-4257836607
+242078367-255972629
+4198987003-4201086361
+1240990629-1248211769
+2749992349-2760767131
+2787866331-2806708160
+809302575-853629067
+3032053776-3036049062
+2943717702-2946230991
+4288724821-4289568650
+3215397670-3224618461
+1858955725-1859353621
+2083864513-2101037055
+694973182-718973623
+4168983031-4174451494
+2807055496-2816494071
+1055347167-1064190974
+3424907263-3427071583
+859417782-872292650
+1467661058-1474811610
+2393002352-2403005964
+4197417217-4208856131
+3370246481-3375696999
+1373468974-1373569404
+2905152772-2910933373
+1980855826-1983920990
+732863279-733152241
+4285742284-4286129026
+1614476697-1614835826
+2635427600-2644232203
+1470741851-1479153638
+2944130276-2951908714
+4291064131-4293894991
+1990921080-1991701381
+4227850767-4244632336
+1807565528-1814396331
+2361860677-2376637038
+2943119919-2945768965
+2172859679-2221926662
+249198701-250135569
+2652844144-2657371637
+1885639221-1900413603
+1509729634-1512261818
+3004310417-3011080364
+1694482383-1697891607
+4177987519-4212820708
+4161048921-4161074968
+476220543-480675454
+2588894890-2592105515
+2757311298-2758434349
+4050934926-4082396822
+2034604741-2043305856
+2331464398-2333528059
+1066956928-1067355622
+2646313639-2648035821
+2066636902-2067863299
+2332503976-2334659414
+3180110462-3204410296
+577236362-586064251
+256418607-258764997
+2233705634-2248146735
+3716569187-3719939659
+1386717710-1439035502
+1859175593-1859580659
+3708021302-3722129580
+3976120818-4005662251
+304413124-306709976
+1395309937-1427985546
+4226665082-4232713677
+4212820709-4214429692
+1693249319-1711620669
+2499145063-2503398930
+3721989699-3733606952
+1717757397-1721218576
+1127769041-1132781724
+3644972707-3646872069
+2077152015-2084609524
+1990599678-1991511335
+2335139292-2353521001
+4088569210-4091483373
+1642017342-1657864055
+2588719725-2589121881
+2903005844-2913683635
+194715771-196440167
+3963719430-3974518407
+4288320832-4289172749
+3151726457-3165427383
+23507982-23800784
+2895160172-2940456225
+1001177233-1005263511
+43609109-48863103
+1144192157-1157514424
+734439882-765944362
+695965351-719454865
+856803507-869754401
+1890217805-1904089509
+3300131715-3305283163
+1529237006-1529595328
+2753090359-2757523819
+828668586-831203389
+3427619213-3428732628
+2967859507-2976560941
+2329569453-2332265395
+2239885549-2252296728
+1293808207-1320485733
+2604175022-2624108715
+2697882453-2723829703
+2463205201-2470677980
+3888353469-3890883045
+400102191-427084950
+4150245199-4164107383
+1395492363-1406000929
+3675122217-3676808853
+116414852-148746047
+787563761-789069064
+3197100188-3202418404
+1373782716-1373895006
+2617111647-2617819575
+2550216289-2557881293
+1851804917-1852370216
+2617793199-2618721355
+1939113565-1942772474
+1066259539-1066964651
+2536515-2749485
+3851513911-3872830251
+3315330215-3350319238
+1372313956-1373952939
+270099979-278389263
+2861061889-2874958905
+2982764434-2982918860
+1225710523-1232594859
+3080849793-3087237669
+2168507276-2172859677
+2554045929-2558669015
+2715737041-2742164385
+2564405335-2570912208
+3111405671-3131810967
+1881537985-1906133183
+2327518639-2329278606
+1695964017-1700687554
+2325334299-2328665915
+2329084251-2329569451
+2526389631-2574332443
+2716903062-2718451591
+177141073-177775415
+177103338-177124151
+1072162087-1081552236
+3178535948-3199349236
+2293206667-2314675667
+1889288474-1903754822
+4251848410-4278329656
+697896245-706915923
+1811201479-1827334058
+102113146-112076690
+2390223078-2399260655
+829332527-848880205
+3861878449-3866482364
+1213011864-1220748067
+3580711167-3587101215
+1286680169-1311818230
+3608853495-3610981230
+1511277091-1513257838
+3450147668-3459285977
+2780989504-2803855679
+3882846313-3888163900
+941216586-953952178
+2983401144-2988059936
+2624108716-2624926759
+3402309579-3420480295
+3312749262-3314042171
+3399699391-3418732708
+4105670961-4129433645
+4257493527-4284962279
+23923784-47709067
+953952180-957049748
+2876724088-2878697891
+2416003985-2423463911
+740946393-742024905
+1380318986-1386717709
+2026496387-2041982393
+3072950856-3095969673
+196440168-234297438
+3324520138-3350841770
+1184551931-1197857708
+3723507322-3732029196
+1781641387-1785877866
+2407131596-2409544298
+5689429-5741644
+1739110416-1741141505
+2548794765-2558310137
+808209515-836691306
+2657455751-2663837619
+790539346-793059170
+568516293-569131984
+3321930331-3346790026
+472011317-479941460
+857857646-863011064
+4168502125-4170164107
+588550774-597747807
+1637815642-1662350209
+2460793334-2466026338
+958041100-970661333
+2139217624-2146211143
+2539598-2830629
+1266192646-1268371411
+1323332741-1335959162
+1439736912-1446610546
+4061001198-4065392221
+2524105557-2526389630
+2222452808-2225462596
+1388815777-1397555491
+3612936376-3650645302
+3045926276-3065706826
+3574212945-3575594696
+2827277916-2836024368
+1991475869-1991926125
+3505806023-3528702608
+2414724634-2430851599
+3021588078-3028285988
+2574332445-2592271496
+2057264136-2059202053
+3244432520-3248685694
+1712738962-1729844093
+56528833-64047545
+2971719660-2977620581
+3605787690-3611524810
+3851574035-3854062441
+1235784822-1266192644
+3006793176-3021032700
+3900016789-3922138525
+1234159313-1235784821
+455883118-466326203
+1053312381-1063953379
+2820222101-2821175967
+2502044549-2506260381
+568736374-569251939
+1578664897-1579658724
+344106424-350103368
+1590175536-1595299212
+2273779785-2277363906
+3984562197-4010152611
+45721618-54860968
+3394303383-3402309578
+1511624839-1512608254
+3884829071-3890292172
+2038966626-2047086310
+4103290900-4119641469
+3357139725-3360393033
+2780813493-2807055494
+2225462598-2252329658
+2592271497-2604175020
+1049541136-1055392314
+1533973152-1578664895
+3209140396-3244432519
+3135787447-3178535946
+1873694527-1911946735
+3716488307-3717917511
+1863079077-1868159650
+1852620713-1869463034
+2340761-6722844
+4010806326-4011637774
+2335714002-2344955062
+2503398931-2516105578
+4096488349-4097750835
+495702052-499886980
+2633949022-2643879390
+2230563996-2248676097
+1992368509-1995459736
+725466259-734439880
+3284564906-3289305182
+3006621951-3015555807
+2221926663-2224742001
+1807424325-1816026389
+1876686839-1880758503
+2691158517-2691387740
+3757816372-3758051212
+2956964132-2972741344
+2636000153-2638744402
+678819639-679798433
+250063049-250516719
+3855876124-3866454360
+3312438883-3313193146
+82686086-84339480
+1092916631-1107918456
+1843811214-1852620712
+3809172487-3830073502
+2616993454-2620553751
+2682855477-2715737040
+3863648987-3866503080
+1271724277-1275741880
+2384026814-2393286163
+2957501262-2965749150
+4213745292-4214551645
+2556715457-2565699508
+2263615-2555032
+2510926180-2524105555
+2198333368-2201790504
+983311745-991202543
+326387197-344106423
+3087807140-3088895982
+86026819-109305037
+2504533668-2507452669
+1371550992-1377668791
+1656901715-1676675657
+130445224-140364961
+875328099-885585914
+2299489843-2306253705
+3450835271-3481339653
+4014358521-4031038176
+2340311395-2351064022
+2883149064-2887845481
+2259592077-2278614136
+3810542228-3827200634
+3056035363-3068664010
+722584522-723699159
+1735688023-1740818227
+3537763412-3542953759
+2366293314-2375211143
+1411814377-1424672790
+3100999210-3102484531
+4284962281-4294967295
+1446610547-1465468961
+2874958907-2877486447
+1765556195-1793446949
+4218980804-4226442852
+494048500-497170493
+360027343-374159699
+2651399811-2665409613
+1047578446-1052368079
+2362920294-2374232484
+2570748019-2571266639
+3256410480-3277105765
+3771488685-3794388011
+722551086-722999678
+741060508-762846249
+1479919768-1481248209
+614971153-617471673
+2982621961-2982812184
+2087732105-2106406062
+2302394373-2326071906
+886110869-893987869
+864175670-867272025
+2119076394-2126808897
+1051546928-1062419089
+678814708-679604844
+2168305217-2172141567
+2943803911-2945854166
+321232218-329790306
+391378250-412099930
+539629846-568721146
+3794388012-3806424827
+2894304683-2915255653
+856495621-857857645
+2743551156-2751996369
+1024955451-1026100964
+177078688-177123406
+4018256524-4039886263
+3945209398-3956309725
+2364930647-2378530823
+1006976522-1021887240
+3757741995-3757947507
+1421470109-1432888460
+3160832331-3169658872
+177045468-177087638
+1090463009-1104430857
+1274373481-1274578120
+2626475104-2640453818
+3284290551-3288427229
+1981618690-1984277097
+1186456381-1195032668
+5052363-7502553
+1509795877-1512150519
+3579924616-3582548171
+4121363479-4137513284
+1488580398-1503472581
+2423275742-2439608584
+2138662322-2138915998
+1382223606-1410305514
+3832391075-3853706505
+1614422103-1614651523
+3369142704-3373032779
+719454867-725466258
+2084732810-2095200322
+1442897307-1457439380
+2112887248-2129529980
+4023595164-4025287662
+611715160-617013605
+778751841-791194910
+3293566719-3305859750
+1772772441-1797304174
+1589764874-1592539287
+1373791581-1374176540
+1590792815-1594025491
+1981551967-1982435626
+1520347646-1542585100
+3099494317-3115490452
+3098240473-3103804691
+3264851832-3269554326
+766110784-766211515
+2019539430-2044044979
+3266317108-3273234008
+1274283817-1274437178
+2650371073-2672921107
+2672921108-2679629874
+2673449969-2682855475
+765944363-766205817
+3853706506-3859959741
+1508362252-1513253382
+876916046-879636492
+3809955806-3810745183
+1274121584-1274542630
+3157351170-3166046719
+1053524276-1064827079
+3791652757-3800601148
+2842728202-2853639142
+3571512615-3579166854
+679353613-679923926
+3809191752-3810740480
+2817388396-2819591739
+2852317315-2861061888
+4256942395-4260208971
+3501898903-3512880687
+3882475326-3886137014
+1966578885-1968167855
+410700018-415718837
+3806424829-3821851233
+1518480570-1533973151
+3147464447-3158958125
+197786374-207567591
+3535028299-3539195436
+4184714120-4186894005
+448892515-456388417
+671686622-678352726
+1360272787-1363580702
+2164873145-2165892440
+3361616306-3375689123
+3091164847-3093370647
+3297273994-3311056250
+398273343-404652855
+1782105095-1803766701
+1484145894-1503189992
+2160023298-2160172849
+2919583395-2932229908
+2812705686-2830443941
+2855216236-2865262494
+148746049-149287452
+589888575-595456264
+314410823-316970816
+2060986022-2063938184
+1803766703-1825422528
+2128237894-2139217623
+4248957737-4257018408
+3561933398-3574109426
+1614389854-1614749576
+468854062-476024564
+436179755-463764255
+589811734-589875676
+673967863-678814706
+979844884-993353080
+1945908845-1980551520
+1990017551-1992668548
+1252508632-1256783095
+2946230992-2982621959
+3954810178-3972017471
+3396778325-3399315311
+3331661742-3344656790
+3072306192-3077370803
+4093061872-4094625093
+2876543933-2878230248
+2854310965-2859128779
+4193316980-4200095285
+730205666-732782756
+3676211467-3676732582
+666890880-674578243
+1371568734-1380318984
+4184744194-4187112660
+1481248211-1499734002
+3379867668-3385527932
+1622428665-1625174665
+3671900758-3678171048
+3705951043-3716692751
+1465468963-1479919767
+1580610051-1583129310
+350103370-365345541
+3900102077-3919890024
+2940456227-2945966226
+3248685696-3284290550
+544295457-564157394
+4016705659-4021147057
+791731732-797225629
+1165689597-1184551930
+3289305184-3312438882
+4097750837-4102130426
+4055841302-4077041304
+3441155355-3450835270
+3314042173-3333554945
+597747809-623200754
+356234097-366220597
+2381045649-2408455595
+4047227592-4049208360
+4092327831-4093008849
+3986217544-4010716485
+3587101217-3589409982
+3939796675-3976120816
+1335959163-1365648715
+3809562980-3810806981
+1374160507-1375189297
+1229723962-1229853859
+2978027850-2978555872
+1081232290-1096685438
+3431403369-3441155353
+3058481098-3072306190
+3615995822-3647806423
+626772256-671686621
+1922970278-1932303880
+687812741-696977728
+3664395391-3676520369
+2073554869-2099760007
+512240640-534906131
+47709068-56528831
+255985991-270099977
+3481339655-3501155910
+2238475796-2249793376
+3866035083-3867269474
+4093117795-4094756619
+4285929403-4287400825
+702714634-707275982
+3036049064-3058481097
+1027080396-1032733050
+113815262-115324511
+2256577067-2275122653
+1990217023-1991256560
+109305038-113504562
+978617987-1000518126
+4057509129-4071389442
+3739975721-3747173973
+320182613-320260227
+1770166-1994691
+291087466-296873313
+4086243810-4096488348
+1276470617-1302918078
+4009439486-4012738003
+4229206868-4234285011
+50143427-53071093
+404422891-410359316
+4161013486-4161053283
+911138009-929609461
+689609396-696731723
+2252329659-2256577065
+613133080-613942155
+4795688-12016953
+641672798-650081964
+389776265-420161914
+3625922134-3642274972
+1846384495-1862435820
+2275122654-2286941521
+4005662252-4011759888
+1579087992-1581111352
+574652-1770165
+1442180635-1450176908
+2760767133-2771395260
+1928232572-1932533591
+102995855-104909244
+4049179426-4050691624
+2830630-3651339
+3552827772-3568200782
+2149613227-2163021264
+1355394428-1371491556
+1697279405-1703102679
+2056763545-2073554867
+3935325191-3944187216
+3553082925-3579924615
+471239627-477134321
+3651340-4795687
+336457769-347991249
+93183635-111293337
+2192128388-2196145589
+2584811687-2598361179
+2772743660-2798530311
+966574237-968633571
+4234775226-4245296919
+3662498499-3663349534
+1373549652-1374239894
+58302860-63670232
+1942772476-1980855825
+3367790115-3376760130
+153092723-163571711
+729975675-730335988
+2192513622-2204700032
+809609217-841628900
+1180032684-1187000735
+1179227554-1195640753
+4232727143-4234293540
+1127122996-1154171178
+314709697-321232216
+324796849-347951368
+1095126621-1109642108
+384962939-400102190
+363929652-366175319
+3821851234-3832391073
+338713138-348077886
+817486506-837487497
+1051940232-1067333023
+19243172-19587047
+257512323-261464746
+1753791137-1753975241
+202493249-230688701
+1579363284-1580767164
+2763246325-2780813492
+2242297310-2249800231
+1995459738-2019539429
+573925402-574462282
+3673851405-3681451655
+3423327301-3428356692
+3681451657-3695852450
+3717161710-3718982299
+2043127586-2043244031
+2888999958-2894304682
+2061236903-2067109739
+2643879391-2646512593
+1139540259-1146292375
+3544236730-3552827770
+2287385837-2325334298
+3598404107-3612936374
+3623885184-3631095478
+1752497514-1756572770
+2817718245-2824409717
+679569338-680230991
+4102130427-4150245197
+1869463036-1881600179
+286732642-289325518
+2995454654-3032053775
+1274816430-1274830828
+4008677258-4014358519
+248491486-248842325
+1622000764-1625125474
+1165689487-1187305806
+3937241402-3968405869
+4050691625-4086243808
+3663349535-3676933438
+2982918861-2995454652
+1372603515-1379417540
+2408455596-2411739453
+201820937-227275418
+1753934804-1754073983
+2280075243-2287385835
+2905919817-2917493149
+2757562598-2759204124
+1444583282-1458937548
+1699259773-1707790200
+1579284365-1579540410
+624710045-626772254
+2971742099-2980188298
+3895219248-3896408881
+1637216769-1663878490
+1606776283-1612157133
+1527331165-1569579671
+1468822607-1477434547
+3930477156-3939796674
+4214551647-4234775225
+1469208064-1469259449
+4245296921-4257493526
+3930128245-3930477154
diff --git a/2016/aoc20/src/main.rs b/2016/aoc20/src/main.rs
new file mode 100644
index 0000000..ee14583
--- /dev/null
+++ b/2016/aoc20/src/main.rs
@@ -0,0 +1,114 @@
+use std::io::BufReader;
+use std::io::prelude::*;
+use std::fs::File;
+use std::u32;
+
+#[derive(Debug)]
+struct IpRange {
+ start: u32,
+ end: u32
+}
+
+impl IpRange {
+ fn new(start: u32, end: u32) -> IpRange {
+ IpRange {
+ start: start,
+ end: end
+ }
+ }
+
+ fn contains(&self, other: u32) -> bool {
+ self.start <= other && other <= self.end
+ }
+
+ fn try_combine(&self, other: &IpRange) -> Option<IpRange> {
+ if self.contains(other.start) && self.contains(other.end) {
+ Some(IpRange::new(self.start, self.end))
+ }
+ else if other.contains(self.start) && other.contains(self.end) {
+ Some(IpRange::new(other.start, other.end))
+ }
+ else if self.contains(other.start) && other.contains(self.end) {
+ Some(IpRange::new(self.start, other.end))
+ }
+ else if other.contains(self.start) && self.contains(other.end) {
+ Some(IpRange::new(other.start, self.end))
+ }
+ else {
+ None
+ }
+ }
+}
+
+fn main() {
+ let mut ranges = read_file();
+ optimize_ranges(&mut ranges);
+
+ let mut allowed = Vec::new();
+
+ // current will be in the u32 range while it's in the loop, but
+ // needs to be a u64 to pass u32::MAX. Otherwise it will just
+ // overflow and run forever.
+ let mut current: u64 = 0;
+ while current <= u32::MAX as u64 {
+ match ranges.iter().find(|range| range.contains(current as u32)) {
+ Some(blacklisting_range) => {
+ current = blacklisting_range.end as u64 + 1;
+ },
+ None => {
+ allowed.push(current as u32);
+ current += 1;
+ }
+ }
+ }
+
+ let min_not_in_range = allowed[0];
+ let allowed_count = allowed.len();
+
+ println!("Min not in any range: {}", min_not_in_range);
+ println!("Allowed count: {}", allowed_count);
+}
+
+fn read_file() -> Vec<IpRange> {
+ let file = BufReader::new(File::open("input.txt").unwrap());
+ file.lines()
+ .filter_map(|line| {
+ let line = line.unwrap();
+ let mut split = line.split('-');
+ let start = split.next();
+ let end = split.next();
+ match (start, end) {
+ (Some(start), Some(end)) => Some(IpRange {
+ start: start.parse().unwrap(),
+ end: end.parse().unwrap()
+ }),
+ _ => None
+ }
+ })
+ .collect()
+}
+
+fn optimize_ranges(ranges: &mut Vec<IpRange>) {
+ let mut before_count = ranges.len();
+ let mut after_count = 0;
+ while before_count != after_count {
+ before_count = ranges.len();
+ ranges.sort_by_key(|r| r.start);
+
+ let mut i = 0;
+ while i < ranges.len()-1 {
+ match ranges[i].try_combine(&ranges[i+1]) {
+ Some(combined) => {
+ ranges[i] = combined;
+ ranges.remove(i+1);
+ },
+ None => {}
+ }
+ i += 1;
+ }
+
+ after_count = ranges.len();
+
+ println!("Number of ranges {} => {}", before_count, after_count);
+ }
+}
diff --git a/2016/aoc21/Cargo.lock b/2016/aoc21/Cargo.lock
new file mode 100644
index 0000000..9a1075b
--- /dev/null
+++ b/2016/aoc21/Cargo.lock
@@ -0,0 +1,98 @@
+[root]
+name = "aoc21"
+version = "0.1.0"
+dependencies = [
+ "regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "kernel32-sys"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "memchr"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "regex"
+version = "0.1.80"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
+ "regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+ "thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "thread-id"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "thread_local"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "utf8-ranges"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi-build"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[metadata]
+"checksum aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66"
+"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
+"checksum libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "a51822fc847e7a8101514d1d44e354ba2ffa7d4c194dcab48870740e327cac70"
+"checksum memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20"
+"checksum regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)" = "4fd4ace6a8cf7860714a2c2280d6c1f7e6a413486c13298bbc86fd3da019402f"
+"checksum regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957"
+"checksum thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03"
+"checksum thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8576dbbfcaef9641452d5cf0df9b0e7eeab7694956dd33bb61515fb8f18cfdd5"
+"checksum utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f"
+"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
+"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
diff --git a/2016/aoc21/Cargo.toml b/2016/aoc21/Cargo.toml
new file mode 100644
index 0000000..bc0d468
--- /dev/null
+++ b/2016/aoc21/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "aoc21"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@gmail.com>"]
+
+[dependencies]
+regex = "0.1" \ No newline at end of file
diff --git a/2016/aoc21/input.txt b/2016/aoc21/input.txt
new file mode 100644
index 0000000..ebd7d52
--- /dev/null
+++ b/2016/aoc21/input.txt
@@ -0,0 +1,100 @@
+rotate based on position of letter d
+move position 1 to position 6
+swap position 3 with position 6
+rotate based on position of letter c
+swap position 0 with position 1
+rotate right 5 steps
+rotate left 3 steps
+rotate based on position of letter b
+swap position 0 with position 2
+rotate based on position of letter g
+rotate left 0 steps
+reverse positions 0 through 3
+rotate based on position of letter a
+rotate based on position of letter h
+rotate based on position of letter a
+rotate based on position of letter g
+rotate left 5 steps
+move position 3 to position 7
+rotate right 5 steps
+rotate based on position of letter f
+rotate right 7 steps
+rotate based on position of letter a
+rotate right 6 steps
+rotate based on position of letter a
+swap letter c with letter f
+reverse positions 2 through 6
+rotate left 1 step
+reverse positions 3 through 5
+rotate based on position of letter f
+swap position 6 with position 5
+swap letter h with letter e
+move position 1 to position 3
+swap letter c with letter h
+reverse positions 4 through 7
+swap letter f with letter h
+rotate based on position of letter f
+rotate based on position of letter g
+reverse positions 3 through 4
+rotate left 7 steps
+swap letter h with letter a
+rotate based on position of letter e
+rotate based on position of letter f
+rotate based on position of letter g
+move position 5 to position 0
+rotate based on position of letter c
+reverse positions 3 through 6
+rotate right 4 steps
+move position 1 to position 2
+reverse positions 3 through 6
+swap letter g with letter a
+rotate based on position of letter d
+rotate based on position of letter a
+swap position 0 with position 7
+rotate left 7 steps
+rotate right 2 steps
+rotate right 6 steps
+rotate based on position of letter b
+rotate right 2 steps
+swap position 7 with position 4
+rotate left 4 steps
+rotate left 3 steps
+swap position 2 with position 7
+move position 5 to position 4
+rotate right 3 steps
+rotate based on position of letter g
+move position 1 to position 2
+swap position 7 with position 0
+move position 4 to position 6
+move position 3 to position 0
+rotate based on position of letter f
+swap letter g with letter d
+swap position 1 with position 5
+reverse positions 0 through 2
+swap position 7 with position 3
+rotate based on position of letter g
+swap letter c with letter a
+rotate based on position of letter g
+reverse positions 3 through 5
+move position 6 to position 3
+swap letter b with letter e
+reverse positions 5 through 6
+move position 6 to position 7
+swap letter a with letter e
+swap position 6 with position 2
+move position 4 to position 5
+rotate left 5 steps
+swap letter a with letter d
+swap letter e with letter g
+swap position 3 with position 7
+reverse positions 0 through 5
+swap position 5 with position 7
+swap position 1 with position 7
+swap position 1 with position 7
+rotate right 7 steps
+swap letter f with letter a
+reverse positions 0 through 7
+rotate based on position of letter d
+reverse positions 2 through 4
+swap position 7 with position 1
+swap letter a with letter h
diff --git a/2016/aoc21/src/main.rs b/2016/aoc21/src/main.rs
new file mode 100644
index 0000000..1366f1e
--- /dev/null
+++ b/2016/aoc21/src/main.rs
@@ -0,0 +1,233 @@
+extern crate regex;
+
+use std::io::BufReader;
+use std::io::prelude::*;
+use std::fs::File;
+use std::collections::VecDeque;
+
+use regex::Regex;
+
+fn main() {
+ let password = "abcdefgh".to_string();
+ let program = read_file();
+ let scrambled = scramble_password(password, &program);
+ println!("Scrambled password is {}", scrambled);
+ let unscrambled = unscramble_password(scrambled, &program);
+ println!("Which unscrambles to {}", unscrambled);
+
+ let other_scrambled = "fbgdceah".to_string();
+ let other_unscrambled = unscramble_password(other_scrambled, &program);
+
+ println!("Decrypted easter bunny password is {}", other_unscrambled);
+}
+
+fn read_file() -> Vec<String> {
+ let file = BufReader::new(File::open("input.txt").unwrap());
+ file.lines()
+ .map(|line| line.unwrap().trim().to_string())
+ .filter(|line| line.len() > 0)
+ .collect()
+}
+
+fn scramble_password(password: String, program: &Vec<String>) -> String {
+ let mut pass = password.chars().collect::<VecDeque<_>>();
+
+ let instructions = scramble_instruction_set();
+
+ for line in program {
+ for &(ref reg, ref func) in &instructions {
+ let captures = reg.captures(line.as_ref());
+ if captures.is_some() {
+ func(&mut pass, captures.unwrap());
+ }
+ }
+ }
+
+ pass.iter().cloned().collect()
+}
+
+fn unscramble_password(password: String, program: &Vec<String>) -> String {
+ let mut pass = password.chars().collect::<VecDeque<_>>();
+
+ let instructions = unscramble_instruction_set();
+
+ let mut backwards_program = program.clone();
+ backwards_program.reverse();
+ for line in backwards_program {
+ for &(ref reg, ref func) in &instructions {
+ let captures = reg.captures(line.as_ref());
+ if captures.is_some() {
+ func(&mut pass, captures.unwrap());
+ }
+ }
+ }
+
+ pass.iter().cloned().collect()
+}
+
+fn scramble_instruction_set() -> Vec<(Regex, fn(&mut VecDeque<char>, regex::Captures))> {
+ let mut instructions : Vec<(Regex, fn(&mut VecDeque<char>, regex::Captures))> = Vec::new();
+ instructions.push((Regex::new(r"swap position (\d+) with position (\d+)").unwrap(), swap_pos));
+ instructions.push((Regex::new(r"swap letter ([a-z]) with letter ([a-z])").unwrap(), swap_let));
+ instructions.push((Regex::new(r"rotate left (\d+) step").unwrap(), rotate_left));
+ instructions.push((Regex::new(r"rotate right (\d+) step").unwrap(), rotate_right));
+ instructions.push((Regex::new(r"rotate based on position of letter ([a-z])").unwrap(), rotate_pos));
+ instructions.push((Regex::new(r"reverse positions (\d+) through (\d+)").unwrap(), reverse_sub));
+ instructions.push((Regex::new(r"move position (\d+) to position (\d+)").unwrap(), move_pos));
+
+ instructions
+}
+
+fn unscramble_instruction_set() -> Vec<(Regex, fn(&mut VecDeque<char>, regex::Captures))> {
+ let mut instructions : Vec<(Regex, fn(&mut VecDeque<char>, regex::Captures))> = Vec::new();
+ instructions.push((Regex::new(r"swap position (\d+) with position (\d+)").unwrap(), swap_pos));
+ instructions.push((Regex::new(r"swap letter ([a-z]) with letter ([a-z])").unwrap(), swap_let));
+ instructions.push((Regex::new(r"rotate left (\d+) step").unwrap(), rotate_right));
+ instructions.push((Regex::new(r"rotate right (\d+) step").unwrap(), rotate_left));
+ instructions.push((Regex::new(r"rotate based on position of letter ([a-z])").unwrap(), undo_rotate_pos));
+ instructions.push((Regex::new(r"reverse positions (\d+) through (\d+)").unwrap(), reverse_sub));
+ instructions.push((Regex::new(r"move position (\d+) to position (\d+)").unwrap(), undo_move_pos));
+
+ instructions
+}
+
+fn swap_pos(pass: &mut VecDeque<char>, cap: regex::Captures) {
+ let src = cap.at(1).unwrap().parse::<usize>().unwrap();
+ let dest = cap.at(2).unwrap().parse::<usize>().unwrap();
+ pass.swap(src, dest);
+}
+
+fn swap_let(pass: &mut VecDeque<char>, cap: regex::Captures) {
+ let src = cap.at(1).unwrap().chars().next().unwrap();
+ let dest = cap.at(2).unwrap().chars().next().unwrap();
+ let src_position = pass.iter().position(|&c| c == src);
+ let dest_position = pass.iter().position(|&c| c == dest);
+ match (src_position, dest_position) {
+ (Some(src_pos), Some(dest_pos)) => {
+ pass.swap(src_pos, dest_pos);
+ },
+ _ => {}
+ };
+}
+
+fn rotate_left(pass: &mut VecDeque<char>, cap: regex::Captures) {
+ let steps = cap.at(1).unwrap().parse::<usize>().unwrap();
+ for _ in 0..steps {
+ let c = pass.pop_front().unwrap();
+ pass.push_back(c);
+ }
+}
+
+fn rotate_right(pass: &mut VecDeque<char>, cap: regex::Captures) {
+ let steps = cap.at(1).unwrap().parse::<usize>().unwrap();
+ for _ in 0..steps {
+ let c = pass.pop_back().unwrap();
+ pass.push_front(c);
+ }
+}
+
+fn rotate_pos(pass: &mut VecDeque<char>, cap: regex::Captures) {
+ let letter = cap.at(1).unwrap().chars().next().unwrap();
+ let pos = pass.iter().position(|&c| c == letter).unwrap();
+ let steps = 1 + pos + if pos >=4 { 1 } else { 0 };
+ for _ in 0..steps {
+ let c = pass.pop_back().unwrap();
+ pass.push_front(c);
+ }
+}
+
+fn move_pos(pass: &mut VecDeque<char>, cap: regex::Captures) {
+ let src = cap.at(1).unwrap().parse::<usize>().unwrap();
+ let dest = cap.at(2).unwrap().parse::<usize>().unwrap();
+ let c = pass.remove(src).unwrap();
+ pass.insert(dest, c);
+}
+
+fn reverse_sub(pass: &mut VecDeque<char>, cap: regex::Captures) {
+ let mut start = cap.at(1).unwrap().parse::<usize>().unwrap();
+ let mut end = cap.at(2).unwrap().parse::<usize>().unwrap();
+ while start < end {
+ pass.swap(start, end);
+ start += 1;
+ end -= 1;
+ }
+}
+
+fn undo_rotate_pos(pass: &mut VecDeque<char>, cap: regex::Captures) {
+ let letter = cap.at(1).unwrap().chars().next().unwrap();
+ let dest_pos = pass.iter().position(|&c| c == letter).unwrap();
+ let mut pos = dest_pos;
+
+ loop {
+ let c = pass.pop_front().unwrap();
+ pass.push_back(c);
+ pos -= 1;
+ let steps = 1 + pos + if pos >=4 { 1 } else { 0 };
+ if (pos + steps) % pass.len() == dest_pos {
+ break;
+ }
+ }
+}
+
+fn undo_move_pos(pass: &mut VecDeque<char>, cap: regex::Captures) {
+ let src = cap.at(1).unwrap().parse::<usize>().unwrap();
+ let dest = cap.at(2).unwrap().parse::<usize>().unwrap();
+ let c = pass.remove(dest).unwrap();
+ pass.insert(src, c);
+}
+
+#[test]
+fn swap_pos_example() {
+ let instructions = vec!("swap position 4 with position 0".to_string());
+ let password = "abcde".to_string();
+ assert_eq!("ebcda".to_string(), scramble_password(password, instructions));
+}
+
+#[test]
+fn swap_let_example() {
+ let instructions = vec!("swap letter d with letter b".to_string());
+ let password = "ebcda".to_string();
+ assert_eq!("edcba".to_string(), scramble_password(password, instructions));
+}
+
+#[test]
+fn reverse_example() {
+ let instructions = vec!("reverse positions 0 through 4".to_string());
+ let password = "edcba".to_string();
+ assert_eq!("abcde".to_string(), scramble_password(password, instructions));
+}
+
+#[test]
+fn rotate_left_example() {
+ let instructions = vec!("rotate left 1 step".to_string());
+ let password = "abcde".to_string();
+ assert_eq!("bcdea".to_string(), scramble_password(password, instructions));
+}
+
+#[test]
+fn move_example() {
+ let instructions = vec!("move position 3 to position 0".to_string());
+ let password = "bdeac".to_string();
+ assert_eq!("abdec".to_string(), scramble_password(password, instructions));
+}
+
+#[test]
+fn rotate_pos_example_1() {
+ let instructions = vec!("rotate based on position of letter b".to_string());
+ let password = "abdec".to_string();
+ assert_eq!("ecabd".to_string(), scramble_password(password, instructions));
+}
+
+#[test]
+fn rotate_pos_example_2() {
+ let instructions = vec!("rotate based on position of letter d".to_string());
+ let password = "ecabd".to_string();
+ assert_eq!("decab".to_string(), scramble_password(password, instructions));
+}
+
+#[test]
+fn rotate_right_example() {
+ let instructions = vec!("rotate right 2 steps".to_string());
+ let password = "decab".to_string();
+ assert_eq!("abdec".to_string(), scramble_password(password, instructions));
+}
diff --git a/2016/aoc22/Cargo.lock b/2016/aoc22/Cargo.lock
new file mode 100644
index 0000000..81a7213
--- /dev/null
+++ b/2016/aoc22/Cargo.lock
@@ -0,0 +1,98 @@
+[root]
+name = "aoc22"
+version = "0.1.0"
+dependencies = [
+ "regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "kernel32-sys"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "memchr"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "regex"
+version = "0.1.80"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
+ "regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+ "thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "thread-id"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "thread_local"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "utf8-ranges"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi-build"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[metadata]
+"checksum aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66"
+"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
+"checksum libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "a51822fc847e7a8101514d1d44e354ba2ffa7d4c194dcab48870740e327cac70"
+"checksum memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20"
+"checksum regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)" = "4fd4ace6a8cf7860714a2c2280d6c1f7e6a413486c13298bbc86fd3da019402f"
+"checksum regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957"
+"checksum thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03"
+"checksum thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8576dbbfcaef9641452d5cf0df9b0e7eeab7694956dd33bb61515fb8f18cfdd5"
+"checksum utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f"
+"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
+"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
diff --git a/2016/aoc22/Cargo.toml b/2016/aoc22/Cargo.toml
new file mode 100644
index 0000000..074ccd5
--- /dev/null
+++ b/2016/aoc22/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "aoc22"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@gmail.com>"]
+
+[dependencies]
+regex = "0.1" \ No newline at end of file
diff --git a/2016/aoc22/input.txt b/2016/aoc22/input.txt
new file mode 100644
index 0000000..08e9843
--- /dev/null
+++ b/2016/aoc22/input.txt
@@ -0,0 +1,1017 @@
+root@ebhq-gridcenter# df -h
+Filesystem Size Used Avail Use%
+/dev/grid/node-x0-y0 89T 65T 24T 73%
+/dev/grid/node-x0-y1 92T 64T 28T 69%
+/dev/grid/node-x0-y2 85T 70T 15T 82%
+/dev/grid/node-x0-y3 90T 64T 26T 71%
+/dev/grid/node-x0-y4 86T 72T 14T 83%
+/dev/grid/node-x0-y5 90T 68T 22T 75%
+/dev/grid/node-x0-y6 94T 64T 30T 68%
+/dev/grid/node-x0-y7 87T 72T 15T 82%
+/dev/grid/node-x0-y8 90T 65T 25T 72%
+/dev/grid/node-x0-y9 90T 65T 25T 72%
+/dev/grid/node-x0-y10 89T 66T 23T 74%
+/dev/grid/node-x0-y11 94T 70T 24T 74%
+/dev/grid/node-x0-y12 90T 65T 25T 72%
+/dev/grid/node-x0-y13 91T 72T 19T 79%
+/dev/grid/node-x0-y14 85T 70T 15T 82%
+/dev/grid/node-x0-y15 89T 70T 19T 78%
+/dev/grid/node-x0-y16 90T 66T 24T 73%
+/dev/grid/node-x0-y17 86T 64T 22T 74%
+/dev/grid/node-x0-y18 88T 65T 23T 73%
+/dev/grid/node-x0-y19 85T 68T 17T 80%
+/dev/grid/node-x0-y20 93T 70T 23T 75%
+/dev/grid/node-x0-y21 89T 64T 25T 71%
+/dev/grid/node-x0-y22 87T 67T 20T 77%
+/dev/grid/node-x0-y23 90T 73T 17T 81%
+/dev/grid/node-x0-y24 92T 68T 24T 73%
+/dev/grid/node-x0-y25 88T 69T 19T 78%
+/dev/grid/node-x0-y26 88T 69T 19T 78%
+/dev/grid/node-x0-y27 86T 72T 14T 83%
+/dev/grid/node-x0-y28 92T 71T 21T 77%
+/dev/grid/node-x1-y0 89T 73T 16T 82%
+/dev/grid/node-x1-y1 89T 68T 21T 76%
+/dev/grid/node-x1-y2 94T 70T 24T 74%
+/dev/grid/node-x1-y3 90T 68T 22T 75%
+/dev/grid/node-x1-y4 89T 67T 22T 75%
+/dev/grid/node-x1-y5 90T 70T 20T 77%
+/dev/grid/node-x1-y6 92T 71T 21T 77%
+/dev/grid/node-x1-y7 92T 71T 21T 77%
+/dev/grid/node-x1-y8 86T 73T 13T 84%
+/dev/grid/node-x1-y9 87T 69T 18T 79%
+/dev/grid/node-x1-y10 87T 66T 21T 75%
+/dev/grid/node-x1-y11 85T 72T 13T 84%
+/dev/grid/node-x1-y12 90T 69T 21T 76%
+/dev/grid/node-x1-y13 89T 67T 22T 75%
+/dev/grid/node-x1-y14 90T 65T 25T 72%
+/dev/grid/node-x1-y15 94T 65T 29T 69%
+/dev/grid/node-x1-y16 85T 70T 15T 82%
+/dev/grid/node-x1-y17 93T 64T 29T 68%
+/dev/grid/node-x1-y18 87T 68T 19T 78%
+/dev/grid/node-x1-y19 85T 66T 19T 77%
+/dev/grid/node-x1-y20 90T 72T 18T 80%
+/dev/grid/node-x1-y21 89T 73T 16T 82%
+/dev/grid/node-x1-y22 90T 65T 25T 72%
+/dev/grid/node-x1-y23 91T 72T 19T 79%
+/dev/grid/node-x1-y24 87T 70T 17T 80%
+/dev/grid/node-x1-y25 91T 64T 27T 70%
+/dev/grid/node-x1-y26 90T 64T 26T 71%
+/dev/grid/node-x1-y27 93T 69T 24T 74%
+/dev/grid/node-x1-y28 89T 65T 24T 73%
+/dev/grid/node-x2-y0 89T 72T 17T 80%
+/dev/grid/node-x2-y1 92T 69T 23T 75%
+/dev/grid/node-x2-y2 91T 65T 26T 71%
+/dev/grid/node-x2-y3 86T 73T 13T 84%
+/dev/grid/node-x2-y4 90T 69T 21T 76%
+/dev/grid/node-x2-y5 86T 68T 18T 79%
+/dev/grid/node-x2-y6 91T 70T 21T 76%
+/dev/grid/node-x2-y7 86T 64T 22T 74%
+/dev/grid/node-x2-y8 88T 65T 23T 73%
+/dev/grid/node-x2-y9 94T 73T 21T 77%
+/dev/grid/node-x2-y10 89T 71T 18T 79%
+/dev/grid/node-x2-y11 88T 64T 24T 72%
+/dev/grid/node-x2-y12 92T 71T 21T 77%
+/dev/grid/node-x2-y13 86T 69T 17T 80%
+/dev/grid/node-x2-y14 87T 69T 18T 79%
+/dev/grid/node-x2-y15 93T 71T 22T 76%
+/dev/grid/node-x2-y16 91T 65T 26T 71%
+/dev/grid/node-x2-y17 93T 65T 28T 69%
+/dev/grid/node-x2-y18 86T 69T 17T 80%
+/dev/grid/node-x2-y19 87T 69T 18T 79%
+/dev/grid/node-x2-y20 86T 72T 14T 83%
+/dev/grid/node-x2-y21 86T 73T 13T 84%
+/dev/grid/node-x2-y22 505T 499T 6T 98%
+/dev/grid/node-x2-y23 89T 65T 24T 73%
+/dev/grid/node-x2-y24 92T 64T 28T 69%
+/dev/grid/node-x2-y25 94T 64T 30T 68%
+/dev/grid/node-x2-y26 87T 73T 14T 83%
+/dev/grid/node-x2-y27 87T 69T 18T 79%
+/dev/grid/node-x2-y28 94T 71T 23T 75%
+/dev/grid/node-x3-y0 88T 66T 22T 75%
+/dev/grid/node-x3-y1 91T 69T 22T 75%
+/dev/grid/node-x3-y2 91T 69T 22T 75%
+/dev/grid/node-x3-y3 86T 67T 19T 77%
+/dev/grid/node-x3-y4 90T 64T 26T 71%
+/dev/grid/node-x3-y5 89T 72T 17T 80%
+/dev/grid/node-x3-y6 87T 66T 21T 75%
+/dev/grid/node-x3-y7 90T 68T 22T 75%
+/dev/grid/node-x3-y8 91T 66T 25T 72%
+/dev/grid/node-x3-y9 89T 64T 25T 71%
+/dev/grid/node-x3-y10 92T 67T 25T 72%
+/dev/grid/node-x3-y11 86T 64T 22T 74%
+/dev/grid/node-x3-y12 94T 65T 29T 69%
+/dev/grid/node-x3-y13 91T 70T 21T 76%
+/dev/grid/node-x3-y14 89T 72T 17T 80%
+/dev/grid/node-x3-y15 89T 64T 25T 71%
+/dev/grid/node-x3-y16 85T 73T 12T 85%
+/dev/grid/node-x3-y17 89T 65T 24T 73%
+/dev/grid/node-x3-y18 88T 71T 17T 80%
+/dev/grid/node-x3-y19 89T 69T 20T 77%
+/dev/grid/node-x3-y20 91T 68T 23T 74%
+/dev/grid/node-x3-y21 90T 72T 18T 80%
+/dev/grid/node-x3-y22 505T 498T 7T 98%
+/dev/grid/node-x3-y23 85T 65T 20T 76%
+/dev/grid/node-x3-y24 94T 72T 22T 76%
+/dev/grid/node-x3-y25 90T 68T 22T 75%
+/dev/grid/node-x3-y26 90T 65T 25T 72%
+/dev/grid/node-x3-y27 87T 66T 21T 75%
+/dev/grid/node-x3-y28 90T 66T 24T 73%
+/dev/grid/node-x4-y0 86T 67T 19T 77%
+/dev/grid/node-x4-y1 92T 67T 25T 72%
+/dev/grid/node-x4-y2 91T 71T 20T 78%
+/dev/grid/node-x4-y3 94T 69T 25T 73%
+/dev/grid/node-x4-y4 90T 64T 26T 71%
+/dev/grid/node-x4-y5 93T 70T 23T 75%
+/dev/grid/node-x4-y6 93T 67T 26T 72%
+/dev/grid/node-x4-y7 91T 71T 20T 78%
+/dev/grid/node-x4-y8 90T 70T 20T 77%
+/dev/grid/node-x4-y9 89T 66T 23T 74%
+/dev/grid/node-x4-y10 94T 64T 30T 68%
+/dev/grid/node-x4-y11 94T 70T 24T 74%
+/dev/grid/node-x4-y12 89T 69T 20T 77%
+/dev/grid/node-x4-y13 90T 72T 18T 80%
+/dev/grid/node-x4-y14 88T 69T 19T 78%
+/dev/grid/node-x4-y15 85T 64T 21T 75%
+/dev/grid/node-x4-y16 86T 71T 15T 82%
+/dev/grid/node-x4-y17 90T 65T 25T 72%
+/dev/grid/node-x4-y18 88T 65T 23T 73%
+/dev/grid/node-x4-y19 91T 71T 20T 78%
+/dev/grid/node-x4-y20 94T 71T 23T 75%
+/dev/grid/node-x4-y21 91T 65T 26T 71%
+/dev/grid/node-x4-y22 510T 491T 19T 96%
+/dev/grid/node-x4-y23 86T 72T 14T 83%
+/dev/grid/node-x4-y24 91T 69T 22T 75%
+/dev/grid/node-x4-y25 93T 64T 29T 68%
+/dev/grid/node-x4-y26 92T 65T 27T 70%
+/dev/grid/node-x4-y27 91T 67T 24T 73%
+/dev/grid/node-x4-y28 93T 66T 27T 70%
+/dev/grid/node-x5-y0 85T 70T 15T 82%
+/dev/grid/node-x5-y1 90T 71T 19T 78%
+/dev/grid/node-x5-y2 94T 68T 26T 72%
+/dev/grid/node-x5-y3 88T 73T 15T 82%
+/dev/grid/node-x5-y4 85T 71T 14T 83%
+/dev/grid/node-x5-y5 92T 67T 25T 72%
+/dev/grid/node-x5-y6 92T 68T 24T 73%
+/dev/grid/node-x5-y7 86T 69T 17T 80%
+/dev/grid/node-x5-y8 90T 64T 26T 71%
+/dev/grid/node-x5-y9 88T 71T 17T 80%
+/dev/grid/node-x5-y10 91T 65T 26T 71%
+/dev/grid/node-x5-y11 92T 65T 27T 70%
+/dev/grid/node-x5-y12 87T 66T 21T 75%
+/dev/grid/node-x5-y13 87T 71T 16T 81%
+/dev/grid/node-x5-y14 90T 67T 23T 74%
+/dev/grid/node-x5-y15 92T 70T 22T 76%
+/dev/grid/node-x5-y16 94T 66T 28T 70%
+/dev/grid/node-x5-y17 88T 68T 20T 77%
+/dev/grid/node-x5-y18 86T 69T 17T 80%
+/dev/grid/node-x5-y19 94T 66T 28T 70%
+/dev/grid/node-x5-y20 90T 69T 21T 76%
+/dev/grid/node-x5-y21 88T 71T 17T 80%
+/dev/grid/node-x5-y22 509T 496T 13T 97%
+/dev/grid/node-x5-y23 87T 67T 20T 77%
+/dev/grid/node-x5-y24 91T 64T 27T 70%
+/dev/grid/node-x5-y25 93T 69T 24T 74%
+/dev/grid/node-x5-y26 93T 73T 20T 78%
+/dev/grid/node-x5-y27 88T 70T 18T 79%
+/dev/grid/node-x5-y28 87T 73T 14T 83%
+/dev/grid/node-x6-y0 87T 65T 22T 74%
+/dev/grid/node-x6-y1 85T 64T 21T 75%
+/dev/grid/node-x6-y2 91T 72T 19T 79%
+/dev/grid/node-x6-y3 90T 64T 26T 71%
+/dev/grid/node-x6-y4 93T 66T 27T 70%
+/dev/grid/node-x6-y5 93T 67T 26T 72%
+/dev/grid/node-x6-y6 89T 64T 25T 71%
+/dev/grid/node-x6-y7 89T 64T 25T 71%
+/dev/grid/node-x6-y8 86T 72T 14T 83%
+/dev/grid/node-x6-y9 87T 68T 19T 78%
+/dev/grid/node-x6-y10 94T 73T 21T 77%
+/dev/grid/node-x6-y11 88T 65T 23T 73%
+/dev/grid/node-x6-y12 88T 70T 18T 79%
+/dev/grid/node-x6-y13 93T 66T 27T 70%
+/dev/grid/node-x6-y14 87T 68T 19T 78%
+/dev/grid/node-x6-y15 87T 68T 19T 78%
+/dev/grid/node-x6-y16 87T 73T 14T 83%
+/dev/grid/node-x6-y17 87T 70T 17T 80%
+/dev/grid/node-x6-y18 87T 69T 18T 79%
+/dev/grid/node-x6-y19 85T 67T 18T 78%
+/dev/grid/node-x6-y20 91T 71T 20T 78%
+/dev/grid/node-x6-y21 86T 72T 14T 83%
+/dev/grid/node-x6-y22 503T 497T 6T 98%
+/dev/grid/node-x6-y23 93T 72T 21T 77%
+/dev/grid/node-x6-y24 91T 72T 19T 79%
+/dev/grid/node-x6-y25 85T 67T 18T 78%
+/dev/grid/node-x6-y26 86T 65T 21T 75%
+/dev/grid/node-x6-y27 92T 67T 25T 72%
+/dev/grid/node-x6-y28 87T 72T 15T 82%
+/dev/grid/node-x7-y0 88T 67T 21T 76%
+/dev/grid/node-x7-y1 85T 64T 21T 75%
+/dev/grid/node-x7-y2 90T 67T 23T 74%
+/dev/grid/node-x7-y3 87T 65T 22T 74%
+/dev/grid/node-x7-y4 92T 70T 22T 76%
+/dev/grid/node-x7-y5 89T 67T 22T 75%
+/dev/grid/node-x7-y6 90T 65T 25T 72%
+/dev/grid/node-x7-y7 88T 66T 22T 75%
+/dev/grid/node-x7-y8 88T 65T 23T 73%
+/dev/grid/node-x7-y9 93T 72T 21T 77%
+/dev/grid/node-x7-y10 91T 70T 21T 76%
+/dev/grid/node-x7-y11 90T 70T 20T 77%
+/dev/grid/node-x7-y12 89T 68T 21T 76%
+/dev/grid/node-x7-y13 91T 65T 26T 71%
+/dev/grid/node-x7-y14 90T 65T 25T 72%
+/dev/grid/node-x7-y15 85T 65T 20T 76%
+/dev/grid/node-x7-y16 91T 65T 26T 71%
+/dev/grid/node-x7-y17 89T 72T 17T 80%
+/dev/grid/node-x7-y18 88T 65T 23T 73%
+/dev/grid/node-x7-y19 94T 72T 22T 76%
+/dev/grid/node-x7-y20 85T 73T 12T 85%
+/dev/grid/node-x7-y21 85T 68T 17T 80%
+/dev/grid/node-x7-y22 507T 497T 10T 98%
+/dev/grid/node-x7-y23 91T 69T 22T 75%
+/dev/grid/node-x7-y24 93T 68T 25T 73%
+/dev/grid/node-x7-y25 90T 72T 18T 80%
+/dev/grid/node-x7-y26 91T 70T 21T 76%
+/dev/grid/node-x7-y27 93T 65T 28T 69%
+/dev/grid/node-x7-y28 91T 64T 27T 70%
+/dev/grid/node-x8-y0 86T 71T 15T 82%
+/dev/grid/node-x8-y1 88T 69T 19T 78%
+/dev/grid/node-x8-y2 90T 64T 26T 71%
+/dev/grid/node-x8-y3 92T 67T 25T 72%
+/dev/grid/node-x8-y4 86T 71T 15T 82%
+/dev/grid/node-x8-y5 88T 68T 20T 77%
+/dev/grid/node-x8-y6 90T 71T 19T 78%
+/dev/grid/node-x8-y7 86T 70T 16T 81%
+/dev/grid/node-x8-y8 87T 72T 15T 82%
+/dev/grid/node-x8-y9 93T 67T 26T 72%
+/dev/grid/node-x8-y10 93T 65T 28T 69%
+/dev/grid/node-x8-y11 94T 66T 28T 70%
+/dev/grid/node-x8-y12 92T 70T 22T 76%
+/dev/grid/node-x8-y13 91T 68T 23T 74%
+/dev/grid/node-x8-y14 93T 72T 21T 77%
+/dev/grid/node-x8-y15 90T 71T 19T 78%
+/dev/grid/node-x8-y16 87T 73T 14T 83%
+/dev/grid/node-x8-y17 86T 73T 13T 84%
+/dev/grid/node-x8-y18 89T 68T 21T 76%
+/dev/grid/node-x8-y19 88T 67T 21T 76%
+/dev/grid/node-x8-y20 87T 64T 23T 73%
+/dev/grid/node-x8-y21 90T 71T 19T 78%
+/dev/grid/node-x8-y22 505T 497T 8T 98%
+/dev/grid/node-x8-y23 92T 72T 20T 78%
+/dev/grid/node-x8-y24 86T 70T 16T 81%
+/dev/grid/node-x8-y25 92T 69T 23T 75%
+/dev/grid/node-x8-y26 93T 71T 22T 76%
+/dev/grid/node-x8-y27 91T 70T 21T 76%
+/dev/grid/node-x8-y28 92T 0T 92T 0%
+/dev/grid/node-x9-y0 87T 69T 18T 79%
+/dev/grid/node-x9-y1 90T 69T 21T 76%
+/dev/grid/node-x9-y2 91T 69T 22T 75%
+/dev/grid/node-x9-y3 92T 71T 21T 77%
+/dev/grid/node-x9-y4 91T 66T 25T 72%
+/dev/grid/node-x9-y5 92T 65T 27T 70%
+/dev/grid/node-x9-y6 87T 71T 16T 81%
+/dev/grid/node-x9-y7 88T 68T 20T 77%
+/dev/grid/node-x9-y8 85T 67T 18T 78%
+/dev/grid/node-x9-y9 86T 65T 21T 75%
+/dev/grid/node-x9-y10 88T 64T 24T 72%
+/dev/grid/node-x9-y11 90T 70T 20T 77%
+/dev/grid/node-x9-y12 88T 64T 24T 72%
+/dev/grid/node-x9-y13 85T 69T 16T 81%
+/dev/grid/node-x9-y14 85T 71T 14T 83%
+/dev/grid/node-x9-y15 92T 70T 22T 76%
+/dev/grid/node-x9-y16 92T 65T 27T 70%
+/dev/grid/node-x9-y17 89T 66T 23T 74%
+/dev/grid/node-x9-y18 85T 69T 16T 81%
+/dev/grid/node-x9-y19 94T 69T 25T 73%
+/dev/grid/node-x9-y20 92T 66T 26T 71%
+/dev/grid/node-x9-y21 88T 70T 18T 79%
+/dev/grid/node-x9-y22 507T 498T 9T 98%
+/dev/grid/node-x9-y23 86T 68T 18T 79%
+/dev/grid/node-x9-y24 90T 69T 21T 76%
+/dev/grid/node-x9-y25 87T 65T 22T 74%
+/dev/grid/node-x9-y26 86T 71T 15T 82%
+/dev/grid/node-x9-y27 85T 65T 20T 76%
+/dev/grid/node-x9-y28 87T 70T 17T 80%
+/dev/grid/node-x10-y0 91T 64T 27T 70%
+/dev/grid/node-x10-y1 92T 65T 27T 70%
+/dev/grid/node-x10-y2 89T 66T 23T 74%
+/dev/grid/node-x10-y3 94T 64T 30T 68%
+/dev/grid/node-x10-y4 92T 69T 23T 75%
+/dev/grid/node-x10-y5 91T 64T 27T 70%
+/dev/grid/node-x10-y6 86T 72T 14T 83%
+/dev/grid/node-x10-y7 87T 66T 21T 75%
+/dev/grid/node-x10-y8 90T 73T 17T 81%
+/dev/grid/node-x10-y9 91T 73T 18T 80%
+/dev/grid/node-x10-y10 94T 71T 23T 75%
+/dev/grid/node-x10-y11 94T 71T 23T 75%
+/dev/grid/node-x10-y12 92T 67T 25T 72%
+/dev/grid/node-x10-y13 92T 66T 26T 71%
+/dev/grid/node-x10-y14 86T 66T 20T 76%
+/dev/grid/node-x10-y15 93T 73T 20T 78%
+/dev/grid/node-x10-y16 92T 66T 26T 71%
+/dev/grid/node-x10-y17 92T 71T 21T 77%
+/dev/grid/node-x10-y18 86T 65T 21T 75%
+/dev/grid/node-x10-y19 92T 68T 24T 73%
+/dev/grid/node-x10-y20 87T 66T 21T 75%
+/dev/grid/node-x10-y21 90T 65T 25T 72%
+/dev/grid/node-x10-y22 501T 494T 7T 98%
+/dev/grid/node-x10-y23 87T 66T 21T 75%
+/dev/grid/node-x10-y24 85T 69T 16T 81%
+/dev/grid/node-x10-y25 90T 72T 18T 80%
+/dev/grid/node-x10-y26 94T 69T 25T 73%
+/dev/grid/node-x10-y27 86T 69T 17T 80%
+/dev/grid/node-x10-y28 90T 68T 22T 75%
+/dev/grid/node-x11-y0 90T 65T 25T 72%
+/dev/grid/node-x11-y1 90T 70T 20T 77%
+/dev/grid/node-x11-y2 94T 69T 25T 73%
+/dev/grid/node-x11-y3 92T 72T 20T 78%
+/dev/grid/node-x11-y4 93T 67T 26T 72%
+/dev/grid/node-x11-y5 89T 70T 19T 78%
+/dev/grid/node-x11-y6 87T 66T 21T 75%
+/dev/grid/node-x11-y7 92T 70T 22T 76%
+/dev/grid/node-x11-y8 93T 71T 22T 76%
+/dev/grid/node-x11-y9 93T 68T 25T 73%
+/dev/grid/node-x11-y10 85T 65T 20T 76%
+/dev/grid/node-x11-y11 90T 72T 18T 80%
+/dev/grid/node-x11-y12 89T 65T 24T 73%
+/dev/grid/node-x11-y13 86T 69T 17T 80%
+/dev/grid/node-x11-y14 93T 73T 20T 78%
+/dev/grid/node-x11-y15 93T 68T 25T 73%
+/dev/grid/node-x11-y16 92T 72T 20T 78%
+/dev/grid/node-x11-y17 85T 71T 14T 83%
+/dev/grid/node-x11-y18 90T 68T 22T 75%
+/dev/grid/node-x11-y19 90T 69T 21T 76%
+/dev/grid/node-x11-y20 85T 73T 12T 85%
+/dev/grid/node-x11-y21 93T 68T 25T 73%
+/dev/grid/node-x11-y22 504T 491T 13T 97%
+/dev/grid/node-x11-y23 87T 69T 18T 79%
+/dev/grid/node-x11-y24 88T 65T 23T 73%
+/dev/grid/node-x11-y25 94T 67T 27T 71%
+/dev/grid/node-x11-y26 92T 73T 19T 79%
+/dev/grid/node-x11-y27 87T 64T 23T 73%
+/dev/grid/node-x11-y28 89T 70T 19T 78%
+/dev/grid/node-x12-y0 88T 73T 15T 82%
+/dev/grid/node-x12-y1 90T 68T 22T 75%
+/dev/grid/node-x12-y2 85T 65T 20T 76%
+/dev/grid/node-x12-y3 94T 71T 23T 75%
+/dev/grid/node-x12-y4 86T 68T 18T 79%
+/dev/grid/node-x12-y5 89T 67T 22T 75%
+/dev/grid/node-x12-y6 89T 71T 18T 79%
+/dev/grid/node-x12-y7 85T 68T 17T 80%
+/dev/grid/node-x12-y8 94T 68T 26T 72%
+/dev/grid/node-x12-y9 91T 71T 20T 78%
+/dev/grid/node-x12-y10 91T 65T 26T 71%
+/dev/grid/node-x12-y11 91T 71T 20T 78%
+/dev/grid/node-x12-y12 85T 65T 20T 76%
+/dev/grid/node-x12-y13 89T 71T 18T 79%
+/dev/grid/node-x12-y14 85T 70T 15T 82%
+/dev/grid/node-x12-y15 92T 73T 19T 79%
+/dev/grid/node-x12-y16 94T 66T 28T 70%
+/dev/grid/node-x12-y17 90T 72T 18T 80%
+/dev/grid/node-x12-y18 90T 64T 26T 71%
+/dev/grid/node-x12-y19 87T 72T 15T 82%
+/dev/grid/node-x12-y20 89T 70T 19T 78%
+/dev/grid/node-x12-y21 90T 66T 24T 73%
+/dev/grid/node-x12-y22 506T 497T 9T 98%
+/dev/grid/node-x12-y23 90T 67T 23T 74%
+/dev/grid/node-x12-y24 85T 67T 18T 78%
+/dev/grid/node-x12-y25 85T 72T 13T 84%
+/dev/grid/node-x12-y26 94T 71T 23T 75%
+/dev/grid/node-x12-y27 92T 64T 28T 69%
+/dev/grid/node-x12-y28 90T 65T 25T 72%
+/dev/grid/node-x13-y0 85T 72T 13T 84%
+/dev/grid/node-x13-y1 93T 67T 26T 72%
+/dev/grid/node-x13-y2 94T 64T 30T 68%
+/dev/grid/node-x13-y3 85T 71T 14T 83%
+/dev/grid/node-x13-y4 93T 71T 22T 76%
+/dev/grid/node-x13-y5 85T 67T 18T 78%
+/dev/grid/node-x13-y6 91T 68T 23T 74%
+/dev/grid/node-x13-y7 92T 66T 26T 71%
+/dev/grid/node-x13-y8 88T 66T 22T 75%
+/dev/grid/node-x13-y9 91T 72T 19T 79%
+/dev/grid/node-x13-y10 89T 72T 17T 80%
+/dev/grid/node-x13-y11 90T 68T 22T 75%
+/dev/grid/node-x13-y12 89T 65T 24T 73%
+/dev/grid/node-x13-y13 90T 69T 21T 76%
+/dev/grid/node-x13-y14 86T 64T 22T 74%
+/dev/grid/node-x13-y15 91T 65T 26T 71%
+/dev/grid/node-x13-y16 86T 72T 14T 83%
+/dev/grid/node-x13-y17 85T 71T 14T 83%
+/dev/grid/node-x13-y18 85T 68T 17T 80%
+/dev/grid/node-x13-y19 91T 69T 22T 75%
+/dev/grid/node-x13-y20 87T 70T 17T 80%
+/dev/grid/node-x13-y21 94T 65T 29T 69%
+/dev/grid/node-x13-y22 503T 492T 11T 97%
+/dev/grid/node-x13-y23 91T 70T 21T 76%
+/dev/grid/node-x13-y24 91T 66T 25T 72%
+/dev/grid/node-x13-y25 88T 64T 24T 72%
+/dev/grid/node-x13-y26 87T 70T 17T 80%
+/dev/grid/node-x13-y27 91T 66T 25T 72%
+/dev/grid/node-x13-y28 86T 68T 18T 79%
+/dev/grid/node-x14-y0 85T 67T 18T 78%
+/dev/grid/node-x14-y1 87T 70T 17T 80%
+/dev/grid/node-x14-y2 92T 67T 25T 72%
+/dev/grid/node-x14-y3 87T 64T 23T 73%
+/dev/grid/node-x14-y4 92T 73T 19T 79%
+/dev/grid/node-x14-y5 86T 66T 20T 76%
+/dev/grid/node-x14-y6 89T 69T 20T 77%
+/dev/grid/node-x14-y7 89T 67T 22T 75%
+/dev/grid/node-x14-y8 89T 70T 19T 78%
+/dev/grid/node-x14-y9 91T 70T 21T 76%
+/dev/grid/node-x14-y10 87T 70T 17T 80%
+/dev/grid/node-x14-y11 86T 66T 20T 76%
+/dev/grid/node-x14-y12 92T 67T 25T 72%
+/dev/grid/node-x14-y13 87T 68T 19T 78%
+/dev/grid/node-x14-y14 94T 65T 29T 69%
+/dev/grid/node-x14-y15 93T 68T 25T 73%
+/dev/grid/node-x14-y16 87T 66T 21T 75%
+/dev/grid/node-x14-y17 90T 70T 20T 77%
+/dev/grid/node-x14-y18 90T 66T 24T 73%
+/dev/grid/node-x14-y19 89T 71T 18T 79%
+/dev/grid/node-x14-y20 85T 72T 13T 84%
+/dev/grid/node-x14-y21 90T 66T 24T 73%
+/dev/grid/node-x14-y22 504T 491T 13T 97%
+/dev/grid/node-x14-y23 90T 71T 19T 78%
+/dev/grid/node-x14-y24 94T 68T 26T 72%
+/dev/grid/node-x14-y25 91T 73T 18T 80%
+/dev/grid/node-x14-y26 88T 68T 20T 77%
+/dev/grid/node-x14-y27 86T 66T 20T 76%
+/dev/grid/node-x14-y28 92T 70T 22T 76%
+/dev/grid/node-x15-y0 91T 73T 18T 80%
+/dev/grid/node-x15-y1 85T 65T 20T 76%
+/dev/grid/node-x15-y2 88T 67T 21T 76%
+/dev/grid/node-x15-y3 91T 66T 25T 72%
+/dev/grid/node-x15-y4 92T 65T 27T 70%
+/dev/grid/node-x15-y5 94T 66T 28T 70%
+/dev/grid/node-x15-y6 90T 67T 23T 74%
+/dev/grid/node-x15-y7 91T 72T 19T 79%
+/dev/grid/node-x15-y8 88T 65T 23T 73%
+/dev/grid/node-x15-y9 90T 66T 24T 73%
+/dev/grid/node-x15-y10 86T 69T 17T 80%
+/dev/grid/node-x15-y11 89T 67T 22T 75%
+/dev/grid/node-x15-y12 86T 67T 19T 77%
+/dev/grid/node-x15-y13 85T 65T 20T 76%
+/dev/grid/node-x15-y14 92T 68T 24T 73%
+/dev/grid/node-x15-y15 85T 73T 12T 85%
+/dev/grid/node-x15-y16 86T 65T 21T 75%
+/dev/grid/node-x15-y17 92T 69T 23T 75%
+/dev/grid/node-x15-y18 87T 72T 15T 82%
+/dev/grid/node-x15-y19 92T 64T 28T 69%
+/dev/grid/node-x15-y20 92T 71T 21T 77%
+/dev/grid/node-x15-y21 86T 71T 15T 82%
+/dev/grid/node-x15-y22 501T 494T 7T 98%
+/dev/grid/node-x15-y23 93T 65T 28T 69%
+/dev/grid/node-x15-y24 85T 71T 14T 83%
+/dev/grid/node-x15-y25 90T 66T 24T 73%
+/dev/grid/node-x15-y26 87T 67T 20T 77%
+/dev/grid/node-x15-y27 90T 70T 20T 77%
+/dev/grid/node-x15-y28 89T 71T 18T 79%
+/dev/grid/node-x16-y0 91T 72T 19T 79%
+/dev/grid/node-x16-y1 91T 65T 26T 71%
+/dev/grid/node-x16-y2 90T 64T 26T 71%
+/dev/grid/node-x16-y3 87T 67T 20T 77%
+/dev/grid/node-x16-y4 86T 66T 20T 76%
+/dev/grid/node-x16-y5 88T 73T 15T 82%
+/dev/grid/node-x16-y6 85T 68T 17T 80%
+/dev/grid/node-x16-y7 86T 66T 20T 76%
+/dev/grid/node-x16-y8 91T 69T 22T 75%
+/dev/grid/node-x16-y9 87T 66T 21T 75%
+/dev/grid/node-x16-y10 86T 72T 14T 83%
+/dev/grid/node-x16-y11 90T 66T 24T 73%
+/dev/grid/node-x16-y12 85T 72T 13T 84%
+/dev/grid/node-x16-y13 88T 71T 17T 80%
+/dev/grid/node-x16-y14 90T 70T 20T 77%
+/dev/grid/node-x16-y15 91T 71T 20T 78%
+/dev/grid/node-x16-y16 86T 70T 16T 81%
+/dev/grid/node-x16-y17 86T 73T 13T 84%
+/dev/grid/node-x16-y18 88T 66T 22T 75%
+/dev/grid/node-x16-y19 92T 67T 25T 72%
+/dev/grid/node-x16-y20 92T 73T 19T 79%
+/dev/grid/node-x16-y21 94T 71T 23T 75%
+/dev/grid/node-x16-y22 507T 498T 9T 98%
+/dev/grid/node-x16-y23 92T 72T 20T 78%
+/dev/grid/node-x16-y24 85T 72T 13T 84%
+/dev/grid/node-x16-y25 88T 66T 22T 75%
+/dev/grid/node-x16-y26 92T 67T 25T 72%
+/dev/grid/node-x16-y27 94T 64T 30T 68%
+/dev/grid/node-x16-y28 86T 66T 20T 76%
+/dev/grid/node-x17-y0 88T 65T 23T 73%
+/dev/grid/node-x17-y1 85T 66T 19T 77%
+/dev/grid/node-x17-y2 88T 70T 18T 79%
+/dev/grid/node-x17-y3 89T 68T 21T 76%
+/dev/grid/node-x17-y4 89T 68T 21T 76%
+/dev/grid/node-x17-y5 94T 69T 25T 73%
+/dev/grid/node-x17-y6 85T 66T 19T 77%
+/dev/grid/node-x17-y7 93T 67T 26T 72%
+/dev/grid/node-x17-y8 87T 67T 20T 77%
+/dev/grid/node-x17-y9 94T 67T 27T 71%
+/dev/grid/node-x17-y10 92T 64T 28T 69%
+/dev/grid/node-x17-y11 94T 68T 26T 72%
+/dev/grid/node-x17-y12 85T 66T 19T 77%
+/dev/grid/node-x17-y13 87T 68T 19T 78%
+/dev/grid/node-x17-y14 89T 65T 24T 73%
+/dev/grid/node-x17-y15 94T 69T 25T 73%
+/dev/grid/node-x17-y16 90T 69T 21T 76%
+/dev/grid/node-x17-y17 85T 66T 19T 77%
+/dev/grid/node-x17-y18 91T 68T 23T 74%
+/dev/grid/node-x17-y19 89T 73T 16T 82%
+/dev/grid/node-x17-y20 94T 66T 28T 70%
+/dev/grid/node-x17-y21 91T 68T 23T 74%
+/dev/grid/node-x17-y22 509T 499T 10T 98%
+/dev/grid/node-x17-y23 89T 69T 20T 77%
+/dev/grid/node-x17-y24 91T 64T 27T 70%
+/dev/grid/node-x17-y25 89T 66T 23T 74%
+/dev/grid/node-x17-y26 91T 72T 19T 79%
+/dev/grid/node-x17-y27 93T 69T 24T 74%
+/dev/grid/node-x17-y28 87T 73T 14T 83%
+/dev/grid/node-x18-y0 85T 69T 16T 81%
+/dev/grid/node-x18-y1 90T 65T 25T 72%
+/dev/grid/node-x18-y2 85T 69T 16T 81%
+/dev/grid/node-x18-y3 89T 66T 23T 74%
+/dev/grid/node-x18-y4 88T 69T 19T 78%
+/dev/grid/node-x18-y5 90T 70T 20T 77%
+/dev/grid/node-x18-y6 90T 69T 21T 76%
+/dev/grid/node-x18-y7 92T 67T 25T 72%
+/dev/grid/node-x18-y8 85T 64T 21T 75%
+/dev/grid/node-x18-y9 86T 68T 18T 79%
+/dev/grid/node-x18-y10 89T 66T 23T 74%
+/dev/grid/node-x18-y11 87T 70T 17T 80%
+/dev/grid/node-x18-y12 93T 68T 25T 73%
+/dev/grid/node-x18-y13 89T 67T 22T 75%
+/dev/grid/node-x18-y14 91T 66T 25T 72%
+/dev/grid/node-x18-y15 91T 65T 26T 71%
+/dev/grid/node-x18-y16 90T 66T 24T 73%
+/dev/grid/node-x18-y17 85T 69T 16T 81%
+/dev/grid/node-x18-y18 93T 70T 23T 75%
+/dev/grid/node-x18-y19 93T 64T 29T 68%
+/dev/grid/node-x18-y20 87T 70T 17T 80%
+/dev/grid/node-x18-y21 87T 73T 14T 83%
+/dev/grid/node-x18-y22 503T 498T 5T 99%
+/dev/grid/node-x18-y23 92T 68T 24T 73%
+/dev/grid/node-x18-y24 88T 68T 20T 77%
+/dev/grid/node-x18-y25 94T 64T 30T 68%
+/dev/grid/node-x18-y26 93T 66T 27T 70%
+/dev/grid/node-x18-y27 90T 67T 23T 74%
+/dev/grid/node-x18-y28 89T 67T 22T 75%
+/dev/grid/node-x19-y0 91T 67T 24T 73%
+/dev/grid/node-x19-y1 87T 64T 23T 73%
+/dev/grid/node-x19-y2 94T 64T 30T 68%
+/dev/grid/node-x19-y3 90T 71T 19T 78%
+/dev/grid/node-x19-y4 88T 66T 22T 75%
+/dev/grid/node-x19-y5 93T 69T 24T 74%
+/dev/grid/node-x19-y6 89T 73T 16T 82%
+/dev/grid/node-x19-y7 91T 68T 23T 74%
+/dev/grid/node-x19-y8 89T 67T 22T 75%
+/dev/grid/node-x19-y9 90T 72T 18T 80%
+/dev/grid/node-x19-y10 93T 73T 20T 78%
+/dev/grid/node-x19-y11 88T 70T 18T 79%
+/dev/grid/node-x19-y12 89T 67T 22T 75%
+/dev/grid/node-x19-y13 91T 65T 26T 71%
+/dev/grid/node-x19-y14 92T 67T 25T 72%
+/dev/grid/node-x19-y15 88T 69T 19T 78%
+/dev/grid/node-x19-y16 93T 72T 21T 77%
+/dev/grid/node-x19-y17 88T 64T 24T 72%
+/dev/grid/node-x19-y18 88T 67T 21T 76%
+/dev/grid/node-x19-y19 85T 65T 20T 76%
+/dev/grid/node-x19-y20 90T 68T 22T 75%
+/dev/grid/node-x19-y21 88T 65T 23T 73%
+/dev/grid/node-x19-y22 508T 498T 10T 98%
+/dev/grid/node-x19-y23 93T 65T 28T 69%
+/dev/grid/node-x19-y24 85T 67T 18T 78%
+/dev/grid/node-x19-y25 92T 65T 27T 70%
+/dev/grid/node-x19-y26 92T 67T 25T 72%
+/dev/grid/node-x19-y27 91T 65T 26T 71%
+/dev/grid/node-x19-y28 91T 73T 18T 80%
+/dev/grid/node-x20-y0 86T 64T 22T 74%
+/dev/grid/node-x20-y1 89T 68T 21T 76%
+/dev/grid/node-x20-y2 92T 71T 21T 77%
+/dev/grid/node-x20-y3 86T 68T 18T 79%
+/dev/grid/node-x20-y4 86T 66T 20T 76%
+/dev/grid/node-x20-y5 94T 66T 28T 70%
+/dev/grid/node-x20-y6 91T 73T 18T 80%
+/dev/grid/node-x20-y7 87T 68T 19T 78%
+/dev/grid/node-x20-y8 94T 66T 28T 70%
+/dev/grid/node-x20-y9 89T 64T 25T 71%
+/dev/grid/node-x20-y10 92T 68T 24T 73%
+/dev/grid/node-x20-y11 94T 66T 28T 70%
+/dev/grid/node-x20-y12 88T 73T 15T 82%
+/dev/grid/node-x20-y13 91T 67T 24T 73%
+/dev/grid/node-x20-y14 93T 66T 27T 70%
+/dev/grid/node-x20-y15 88T 72T 16T 81%
+/dev/grid/node-x20-y16 93T 68T 25T 73%
+/dev/grid/node-x20-y17 91T 68T 23T 74%
+/dev/grid/node-x20-y18 87T 73T 14T 83%
+/dev/grid/node-x20-y19 94T 70T 24T 74%
+/dev/grid/node-x20-y20 88T 67T 21T 76%
+/dev/grid/node-x20-y21 88T 68T 20T 77%
+/dev/grid/node-x20-y22 503T 499T 4T 99%
+/dev/grid/node-x20-y23 88T 67T 21T 76%
+/dev/grid/node-x20-y24 92T 68T 24T 73%
+/dev/grid/node-x20-y25 85T 69T 16T 81%
+/dev/grid/node-x20-y26 87T 70T 17T 80%
+/dev/grid/node-x20-y27 86T 70T 16T 81%
+/dev/grid/node-x20-y28 93T 65T 28T 69%
+/dev/grid/node-x21-y0 90T 67T 23T 74%
+/dev/grid/node-x21-y1 85T 66T 19T 77%
+/dev/grid/node-x21-y2 93T 73T 20T 78%
+/dev/grid/node-x21-y3 88T 71T 17T 80%
+/dev/grid/node-x21-y4 94T 71T 23T 75%
+/dev/grid/node-x21-y5 92T 69T 23T 75%
+/dev/grid/node-x21-y6 94T 66T 28T 70%
+/dev/grid/node-x21-y7 94T 65T 29T 69%
+/dev/grid/node-x21-y8 85T 71T 14T 83%
+/dev/grid/node-x21-y9 87T 69T 18T 79%
+/dev/grid/node-x21-y10 86T 68T 18T 79%
+/dev/grid/node-x21-y11 92T 68T 24T 73%
+/dev/grid/node-x21-y12 89T 68T 21T 76%
+/dev/grid/node-x21-y13 88T 73T 15T 82%
+/dev/grid/node-x21-y14 86T 67T 19T 77%
+/dev/grid/node-x21-y15 87T 72T 15T 82%
+/dev/grid/node-x21-y16 87T 70T 17T 80%
+/dev/grid/node-x21-y17 87T 71T 16T 81%
+/dev/grid/node-x21-y18 88T 72T 16T 81%
+/dev/grid/node-x21-y19 93T 65T 28T 69%
+/dev/grid/node-x21-y20 92T 70T 22T 76%
+/dev/grid/node-x21-y21 91T 70T 21T 76%
+/dev/grid/node-x21-y22 510T 493T 17T 96%
+/dev/grid/node-x21-y23 89T 69T 20T 77%
+/dev/grid/node-x21-y24 94T 72T 22T 76%
+/dev/grid/node-x21-y25 91T 70T 21T 76%
+/dev/grid/node-x21-y26 89T 65T 24T 73%
+/dev/grid/node-x21-y27 85T 72T 13T 84%
+/dev/grid/node-x21-y28 93T 72T 21T 77%
+/dev/grid/node-x22-y0 89T 67T 22T 75%
+/dev/grid/node-x22-y1 85T 65T 20T 76%
+/dev/grid/node-x22-y2 93T 64T 29T 68%
+/dev/grid/node-x22-y3 93T 71T 22T 76%
+/dev/grid/node-x22-y4 85T 65T 20T 76%
+/dev/grid/node-x22-y5 85T 67T 18T 78%
+/dev/grid/node-x22-y6 90T 64T 26T 71%
+/dev/grid/node-x22-y7 87T 69T 18T 79%
+/dev/grid/node-x22-y8 94T 72T 22T 76%
+/dev/grid/node-x22-y9 87T 71T 16T 81%
+/dev/grid/node-x22-y10 87T 65T 22T 74%
+/dev/grid/node-x22-y11 93T 72T 21T 77%
+/dev/grid/node-x22-y12 86T 72T 14T 83%
+/dev/grid/node-x22-y13 89T 66T 23T 74%
+/dev/grid/node-x22-y14 90T 67T 23T 74%
+/dev/grid/node-x22-y15 92T 70T 22T 76%
+/dev/grid/node-x22-y16 92T 66T 26T 71%
+/dev/grid/node-x22-y17 91T 66T 25T 72%
+/dev/grid/node-x22-y18 91T 68T 23T 74%
+/dev/grid/node-x22-y19 88T 71T 17T 80%
+/dev/grid/node-x22-y20 90T 69T 21T 76%
+/dev/grid/node-x22-y21 90T 68T 22T 75%
+/dev/grid/node-x22-y22 502T 490T 12T 97%
+/dev/grid/node-x22-y23 91T 67T 24T 73%
+/dev/grid/node-x22-y24 93T 71T 22T 76%
+/dev/grid/node-x22-y25 92T 65T 27T 70%
+/dev/grid/node-x22-y26 93T 69T 24T 74%
+/dev/grid/node-x22-y27 85T 72T 13T 84%
+/dev/grid/node-x22-y28 93T 64T 29T 68%
+/dev/grid/node-x23-y0 92T 73T 19T 79%
+/dev/grid/node-x23-y1 90T 64T 26T 71%
+/dev/grid/node-x23-y2 93T 65T 28T 69%
+/dev/grid/node-x23-y3 88T 72T 16T 81%
+/dev/grid/node-x23-y4 92T 70T 22T 76%
+/dev/grid/node-x23-y5 90T 66T 24T 73%
+/dev/grid/node-x23-y6 86T 66T 20T 76%
+/dev/grid/node-x23-y7 89T 71T 18T 79%
+/dev/grid/node-x23-y8 89T 64T 25T 71%
+/dev/grid/node-x23-y9 90T 64T 26T 71%
+/dev/grid/node-x23-y10 94T 70T 24T 74%
+/dev/grid/node-x23-y11 85T 64T 21T 75%
+/dev/grid/node-x23-y12 86T 66T 20T 76%
+/dev/grid/node-x23-y13 86T 64T 22T 74%
+/dev/grid/node-x23-y14 92T 68T 24T 73%
+/dev/grid/node-x23-y15 94T 70T 24T 74%
+/dev/grid/node-x23-y16 91T 69T 22T 75%
+/dev/grid/node-x23-y17 93T 70T 23T 75%
+/dev/grid/node-x23-y18 87T 65T 22T 74%
+/dev/grid/node-x23-y19 86T 64T 22T 74%
+/dev/grid/node-x23-y20 94T 66T 28T 70%
+/dev/grid/node-x23-y21 92T 64T 28T 69%
+/dev/grid/node-x23-y22 507T 491T 16T 96%
+/dev/grid/node-x23-y23 88T 73T 15T 82%
+/dev/grid/node-x23-y24 87T 69T 18T 79%
+/dev/grid/node-x23-y25 91T 71T 20T 78%
+/dev/grid/node-x23-y26 90T 71T 19T 78%
+/dev/grid/node-x23-y27 87T 70T 17T 80%
+/dev/grid/node-x23-y28 91T 70T 21T 76%
+/dev/grid/node-x24-y0 86T 67T 19T 77%
+/dev/grid/node-x24-y1 94T 67T 27T 71%
+/dev/grid/node-x24-y2 89T 71T 18T 79%
+/dev/grid/node-x24-y3 86T 67T 19T 77%
+/dev/grid/node-x24-y4 87T 73T 14T 83%
+/dev/grid/node-x24-y5 86T 64T 22T 74%
+/dev/grid/node-x24-y6 92T 68T 24T 73%
+/dev/grid/node-x24-y7 85T 68T 17T 80%
+/dev/grid/node-x24-y8 86T 65T 21T 75%
+/dev/grid/node-x24-y9 87T 73T 14T 83%
+/dev/grid/node-x24-y10 91T 68T 23T 74%
+/dev/grid/node-x24-y11 94T 67T 27T 71%
+/dev/grid/node-x24-y12 94T 67T 27T 71%
+/dev/grid/node-x24-y13 88T 71T 17T 80%
+/dev/grid/node-x24-y14 91T 70T 21T 76%
+/dev/grid/node-x24-y15 89T 72T 17T 80%
+/dev/grid/node-x24-y16 92T 69T 23T 75%
+/dev/grid/node-x24-y17 87T 70T 17T 80%
+/dev/grid/node-x24-y18 94T 69T 25T 73%
+/dev/grid/node-x24-y19 91T 66T 25T 72%
+/dev/grid/node-x24-y20 90T 64T 26T 71%
+/dev/grid/node-x24-y21 86T 65T 21T 75%
+/dev/grid/node-x24-y22 508T 494T 14T 97%
+/dev/grid/node-x24-y23 89T 72T 17T 80%
+/dev/grid/node-x24-y24 94T 66T 28T 70%
+/dev/grid/node-x24-y25 88T 64T 24T 72%
+/dev/grid/node-x24-y26 86T 64T 22T 74%
+/dev/grid/node-x24-y27 92T 65T 27T 70%
+/dev/grid/node-x24-y28 89T 72T 17T 80%
+/dev/grid/node-x25-y0 93T 70T 23T 75%
+/dev/grid/node-x25-y1 91T 73T 18T 80%
+/dev/grid/node-x25-y2 89T 65T 24T 73%
+/dev/grid/node-x25-y3 86T 69T 17T 80%
+/dev/grid/node-x25-y4 90T 70T 20T 77%
+/dev/grid/node-x25-y5 89T 65T 24T 73%
+/dev/grid/node-x25-y6 92T 71T 21T 77%
+/dev/grid/node-x25-y7 91T 65T 26T 71%
+/dev/grid/node-x25-y8 91T 67T 24T 73%
+/dev/grid/node-x25-y9 94T 73T 21T 77%
+/dev/grid/node-x25-y10 94T 73T 21T 77%
+/dev/grid/node-x25-y11 91T 70T 21T 76%
+/dev/grid/node-x25-y12 91T 71T 20T 78%
+/dev/grid/node-x25-y13 86T 67T 19T 77%
+/dev/grid/node-x25-y14 88T 67T 21T 76%
+/dev/grid/node-x25-y15 90T 67T 23T 74%
+/dev/grid/node-x25-y16 92T 64T 28T 69%
+/dev/grid/node-x25-y17 94T 68T 26T 72%
+/dev/grid/node-x25-y18 87T 73T 14T 83%
+/dev/grid/node-x25-y19 86T 73T 13T 84%
+/dev/grid/node-x25-y20 92T 72T 20T 78%
+/dev/grid/node-x25-y21 93T 73T 20T 78%
+/dev/grid/node-x25-y22 504T 491T 13T 97%
+/dev/grid/node-x25-y23 91T 72T 19T 79%
+/dev/grid/node-x25-y24 85T 70T 15T 82%
+/dev/grid/node-x25-y25 85T 73T 12T 85%
+/dev/grid/node-x25-y26 85T 67T 18T 78%
+/dev/grid/node-x25-y27 89T 69T 20T 77%
+/dev/grid/node-x25-y28 86T 66T 20T 76%
+/dev/grid/node-x26-y0 91T 72T 19T 79%
+/dev/grid/node-x26-y1 86T 68T 18T 79%
+/dev/grid/node-x26-y2 88T 70T 18T 79%
+/dev/grid/node-x26-y3 88T 66T 22T 75%
+/dev/grid/node-x26-y4 85T 71T 14T 83%
+/dev/grid/node-x26-y5 90T 66T 24T 73%
+/dev/grid/node-x26-y6 90T 66T 24T 73%
+/dev/grid/node-x26-y7 89T 73T 16T 82%
+/dev/grid/node-x26-y8 85T 65T 20T 76%
+/dev/grid/node-x26-y9 90T 72T 18T 80%
+/dev/grid/node-x26-y10 86T 64T 22T 74%
+/dev/grid/node-x26-y11 90T 64T 26T 71%
+/dev/grid/node-x26-y12 92T 73T 19T 79%
+/dev/grid/node-x26-y13 85T 72T 13T 84%
+/dev/grid/node-x26-y14 91T 73T 18T 80%
+/dev/grid/node-x26-y15 92T 69T 23T 75%
+/dev/grid/node-x26-y16 90T 72T 18T 80%
+/dev/grid/node-x26-y17 90T 68T 22T 75%
+/dev/grid/node-x26-y18 90T 73T 17T 81%
+/dev/grid/node-x26-y19 94T 64T 30T 68%
+/dev/grid/node-x26-y20 86T 73T 13T 84%
+/dev/grid/node-x26-y21 86T 66T 20T 76%
+/dev/grid/node-x26-y22 510T 491T 19T 96%
+/dev/grid/node-x26-y23 87T 66T 21T 75%
+/dev/grid/node-x26-y24 91T 64T 27T 70%
+/dev/grid/node-x26-y25 94T 66T 28T 70%
+/dev/grid/node-x26-y26 85T 68T 17T 80%
+/dev/grid/node-x26-y27 85T 71T 14T 83%
+/dev/grid/node-x26-y28 94T 64T 30T 68%
+/dev/grid/node-x27-y0 88T 73T 15T 82%
+/dev/grid/node-x27-y1 94T 67T 27T 71%
+/dev/grid/node-x27-y2 90T 73T 17T 81%
+/dev/grid/node-x27-y3 93T 71T 22T 76%
+/dev/grid/node-x27-y4 89T 70T 19T 78%
+/dev/grid/node-x27-y5 90T 66T 24T 73%
+/dev/grid/node-x27-y6 87T 73T 14T 83%
+/dev/grid/node-x27-y7 87T 66T 21T 75%
+/dev/grid/node-x27-y8 86T 69T 17T 80%
+/dev/grid/node-x27-y9 88T 73T 15T 82%
+/dev/grid/node-x27-y10 92T 64T 28T 69%
+/dev/grid/node-x27-y11 87T 69T 18T 79%
+/dev/grid/node-x27-y12 91T 64T 27T 70%
+/dev/grid/node-x27-y13 94T 68T 26T 72%
+/dev/grid/node-x27-y14 89T 68T 21T 76%
+/dev/grid/node-x27-y15 87T 67T 20T 77%
+/dev/grid/node-x27-y16 90T 72T 18T 80%
+/dev/grid/node-x27-y17 94T 65T 29T 69%
+/dev/grid/node-x27-y18 90T 72T 18T 80%
+/dev/grid/node-x27-y19 88T 73T 15T 82%
+/dev/grid/node-x27-y20 88T 71T 17T 80%
+/dev/grid/node-x27-y21 88T 64T 24T 72%
+/dev/grid/node-x27-y22 504T 490T 14T 97%
+/dev/grid/node-x27-y23 93T 66T 27T 70%
+/dev/grid/node-x27-y24 85T 67T 18T 78%
+/dev/grid/node-x27-y25 94T 64T 30T 68%
+/dev/grid/node-x27-y26 85T 72T 13T 84%
+/dev/grid/node-x27-y27 85T 73T 12T 85%
+/dev/grid/node-x27-y28 89T 70T 19T 78%
+/dev/grid/node-x28-y0 93T 66T 27T 70%
+/dev/grid/node-x28-y1 86T 71T 15T 82%
+/dev/grid/node-x28-y2 94T 73T 21T 77%
+/dev/grid/node-x28-y3 91T 72T 19T 79%
+/dev/grid/node-x28-y4 87T 69T 18T 79%
+/dev/grid/node-x28-y5 85T 70T 15T 82%
+/dev/grid/node-x28-y6 85T 72T 13T 84%
+/dev/grid/node-x28-y7 89T 72T 17T 80%
+/dev/grid/node-x28-y8 90T 73T 17T 81%
+/dev/grid/node-x28-y9 94T 64T 30T 68%
+/dev/grid/node-x28-y10 85T 73T 12T 85%
+/dev/grid/node-x28-y11 89T 70T 19T 78%
+/dev/grid/node-x28-y12 94T 67T 27T 71%
+/dev/grid/node-x28-y13 87T 68T 19T 78%
+/dev/grid/node-x28-y14 94T 72T 22T 76%
+/dev/grid/node-x28-y15 92T 66T 26T 71%
+/dev/grid/node-x28-y16 91T 64T 27T 70%
+/dev/grid/node-x28-y17 86T 69T 17T 80%
+/dev/grid/node-x28-y18 88T 69T 19T 78%
+/dev/grid/node-x28-y19 90T 70T 20T 77%
+/dev/grid/node-x28-y20 89T 69T 20T 77%
+/dev/grid/node-x28-y21 90T 67T 23T 74%
+/dev/grid/node-x28-y22 506T 491T 15T 97%
+/dev/grid/node-x28-y23 89T 70T 19T 78%
+/dev/grid/node-x28-y24 90T 73T 17T 81%
+/dev/grid/node-x28-y25 86T 65T 21T 75%
+/dev/grid/node-x28-y26 93T 73T 20T 78%
+/dev/grid/node-x28-y27 88T 69T 19T 78%
+/dev/grid/node-x28-y28 92T 68T 24T 73%
+/dev/grid/node-x29-y0 88T 70T 18T 79%
+/dev/grid/node-x29-y1 89T 68T 21T 76%
+/dev/grid/node-x29-y2 85T 73T 12T 85%
+/dev/grid/node-x29-y3 89T 73T 16T 82%
+/dev/grid/node-x29-y4 86T 68T 18T 79%
+/dev/grid/node-x29-y5 91T 70T 21T 76%
+/dev/grid/node-x29-y6 86T 70T 16T 81%
+/dev/grid/node-x29-y7 86T 64T 22T 74%
+/dev/grid/node-x29-y8 90T 73T 17T 81%
+/dev/grid/node-x29-y9 92T 65T 27T 70%
+/dev/grid/node-x29-y10 89T 72T 17T 80%
+/dev/grid/node-x29-y11 85T 66T 19T 77%
+/dev/grid/node-x29-y12 89T 73T 16T 82%
+/dev/grid/node-x29-y13 90T 72T 18T 80%
+/dev/grid/node-x29-y14 86T 69T 17T 80%
+/dev/grid/node-x29-y15 85T 64T 21T 75%
+/dev/grid/node-x29-y16 88T 69T 19T 78%
+/dev/grid/node-x29-y17 92T 64T 28T 69%
+/dev/grid/node-x29-y18 86T 65T 21T 75%
+/dev/grid/node-x29-y19 92T 70T 22T 76%
+/dev/grid/node-x29-y20 94T 64T 30T 68%
+/dev/grid/node-x29-y21 87T 64T 23T 73%
+/dev/grid/node-x29-y22 509T 497T 12T 97%
+/dev/grid/node-x29-y23 91T 67T 24T 73%
+/dev/grid/node-x29-y24 90T 67T 23T 74%
+/dev/grid/node-x29-y25 86T 65T 21T 75%
+/dev/grid/node-x29-y26 94T 68T 26T 72%
+/dev/grid/node-x29-y27 89T 69T 20T 77%
+/dev/grid/node-x29-y28 87T 71T 16T 81%
+/dev/grid/node-x30-y0 92T 64T 28T 69%
+/dev/grid/node-x30-y1 93T 67T 26T 72%
+/dev/grid/node-x30-y2 93T 66T 27T 70%
+/dev/grid/node-x30-y3 93T 67T 26T 72%
+/dev/grid/node-x30-y4 86T 70T 16T 81%
+/dev/grid/node-x30-y5 91T 67T 24T 73%
+/dev/grid/node-x30-y6 89T 66T 23T 74%
+/dev/grid/node-x30-y7 89T 72T 17T 80%
+/dev/grid/node-x30-y8 93T 69T 24T 74%
+/dev/grid/node-x30-y9 94T 68T 26T 72%
+/dev/grid/node-x30-y10 89T 69T 20T 77%
+/dev/grid/node-x30-y11 94T 64T 30T 68%
+/dev/grid/node-x30-y12 93T 65T 28T 69%
+/dev/grid/node-x30-y13 85T 72T 13T 84%
+/dev/grid/node-x30-y14 88T 68T 20T 77%
+/dev/grid/node-x30-y15 94T 64T 30T 68%
+/dev/grid/node-x30-y16 92T 73T 19T 79%
+/dev/grid/node-x30-y17 92T 73T 19T 79%
+/dev/grid/node-x30-y18 87T 68T 19T 78%
+/dev/grid/node-x30-y19 93T 64T 29T 68%
+/dev/grid/node-x30-y20 94T 67T 27T 71%
+/dev/grid/node-x30-y21 89T 67T 22T 75%
+/dev/grid/node-x30-y22 507T 491T 16T 96%
+/dev/grid/node-x30-y23 91T 64T 27T 70%
+/dev/grid/node-x30-y24 87T 65T 22T 74%
+/dev/grid/node-x30-y25 85T 65T 20T 76%
+/dev/grid/node-x30-y26 91T 68T 23T 74%
+/dev/grid/node-x30-y27 90T 67T 23T 74%
+/dev/grid/node-x30-y28 94T 66T 28T 70%
+/dev/grid/node-x31-y0 92T 67T 25T 72%
+/dev/grid/node-x31-y1 93T 68T 25T 73%
+/dev/grid/node-x31-y2 92T 66T 26T 71%
+/dev/grid/node-x31-y3 89T 64T 25T 71%
+/dev/grid/node-x31-y4 90T 71T 19T 78%
+/dev/grid/node-x31-y5 89T 68T 21T 76%
+/dev/grid/node-x31-y6 85T 72T 13T 84%
+/dev/grid/node-x31-y7 88T 65T 23T 73%
+/dev/grid/node-x31-y8 86T 66T 20T 76%
+/dev/grid/node-x31-y9 90T 72T 18T 80%
+/dev/grid/node-x31-y10 86T 67T 19T 77%
+/dev/grid/node-x31-y11 89T 72T 17T 80%
+/dev/grid/node-x31-y12 90T 73T 17T 81%
+/dev/grid/node-x31-y13 91T 70T 21T 76%
+/dev/grid/node-x31-y14 94T 67T 27T 71%
+/dev/grid/node-x31-y15 94T 73T 21T 77%
+/dev/grid/node-x31-y16 86T 71T 15T 82%
+/dev/grid/node-x31-y17 86T 73T 13T 84%
+/dev/grid/node-x31-y18 89T 65T 24T 73%
+/dev/grid/node-x31-y19 86T 72T 14T 83%
+/dev/grid/node-x31-y20 88T 64T 24T 72%
+/dev/grid/node-x31-y21 90T 64T 26T 71%
+/dev/grid/node-x31-y22 505T 496T 9T 98%
+/dev/grid/node-x31-y23 90T 73T 17T 81%
+/dev/grid/node-x31-y24 91T 73T 18T 80%
+/dev/grid/node-x31-y25 94T 69T 25T 73%
+/dev/grid/node-x31-y26 92T 64T 28T 69%
+/dev/grid/node-x31-y27 91T 66T 25T 72%
+/dev/grid/node-x31-y28 85T 65T 20T 76%
+/dev/grid/node-x32-y0 85T 69T 16T 81%
+/dev/grid/node-x32-y1 93T 67T 26T 72%
+/dev/grid/node-x32-y2 93T 73T 20T 78%
+/dev/grid/node-x32-y3 94T 71T 23T 75%
+/dev/grid/node-x32-y4 90T 70T 20T 77%
+/dev/grid/node-x32-y5 92T 68T 24T 73%
+/dev/grid/node-x32-y6 94T 64T 30T 68%
+/dev/grid/node-x32-y7 86T 72T 14T 83%
+/dev/grid/node-x32-y8 85T 73T 12T 85%
+/dev/grid/node-x32-y9 89T 69T 20T 77%
+/dev/grid/node-x32-y10 89T 73T 16T 82%
+/dev/grid/node-x32-y11 87T 65T 22T 74%
+/dev/grid/node-x32-y12 94T 67T 27T 71%
+/dev/grid/node-x32-y13 93T 67T 26T 72%
+/dev/grid/node-x32-y14 93T 66T 27T 70%
+/dev/grid/node-x32-y15 86T 72T 14T 83%
+/dev/grid/node-x32-y16 89T 69T 20T 77%
+/dev/grid/node-x32-y17 93T 67T 26T 72%
+/dev/grid/node-x32-y18 87T 64T 23T 73%
+/dev/grid/node-x32-y19 85T 69T 16T 81%
+/dev/grid/node-x32-y20 85T 69T 16T 81%
+/dev/grid/node-x32-y21 91T 65T 26T 71%
+/dev/grid/node-x32-y22 503T 491T 12T 97%
+/dev/grid/node-x32-y23 94T 71T 23T 75%
+/dev/grid/node-x32-y24 87T 64T 23T 73%
+/dev/grid/node-x32-y25 91T 73T 18T 80%
+/dev/grid/node-x32-y26 93T 67T 26T 72%
+/dev/grid/node-x32-y27 86T 71T 15T 82%
+/dev/grid/node-x32-y28 91T 64T 27T 70%
+/dev/grid/node-x33-y0 86T 73T 13T 84%
+/dev/grid/node-x33-y1 88T 71T 17T 80%
+/dev/grid/node-x33-y2 90T 66T 24T 73%
+/dev/grid/node-x33-y3 85T 64T 21T 75%
+/dev/grid/node-x33-y4 87T 66T 21T 75%
+/dev/grid/node-x33-y5 91T 68T 23T 74%
+/dev/grid/node-x33-y6 93T 68T 25T 73%
+/dev/grid/node-x33-y7 92T 70T 22T 76%
+/dev/grid/node-x33-y8 91T 64T 27T 70%
+/dev/grid/node-x33-y9 85T 72T 13T 84%
+/dev/grid/node-x33-y10 89T 65T 24T 73%
+/dev/grid/node-x33-y11 91T 66T 25T 72%
+/dev/grid/node-x33-y12 87T 68T 19T 78%
+/dev/grid/node-x33-y13 89T 70T 19T 78%
+/dev/grid/node-x33-y14 86T 68T 18T 79%
+/dev/grid/node-x33-y15 85T 69T 16T 81%
+/dev/grid/node-x33-y16 94T 66T 28T 70%
+/dev/grid/node-x33-y17 92T 68T 24T 73%
+/dev/grid/node-x33-y18 88T 72T 16T 81%
+/dev/grid/node-x33-y19 90T 73T 17T 81%
+/dev/grid/node-x33-y20 89T 64T 25T 71%
+/dev/grid/node-x33-y21 92T 71T 21T 77%
+/dev/grid/node-x33-y22 502T 497T 5T 99%
+/dev/grid/node-x33-y23 94T 67T 27T 71%
+/dev/grid/node-x33-y24 93T 64T 29T 68%
+/dev/grid/node-x33-y25 90T 66T 24T 73%
+/dev/grid/node-x33-y26 87T 72T 15T 82%
+/dev/grid/node-x33-y27 85T 73T 12T 85%
+/dev/grid/node-x33-y28 86T 72T 14T 83%
+/dev/grid/node-x34-y0 89T 66T 23T 74%
+/dev/grid/node-x34-y1 94T 64T 30T 68%
+/dev/grid/node-x34-y2 92T 69T 23T 75%
+/dev/grid/node-x34-y3 93T 70T 23T 75%
+/dev/grid/node-x34-y4 88T 64T 24T 72%
+/dev/grid/node-x34-y5 94T 67T 27T 71%
+/dev/grid/node-x34-y6 89T 68T 21T 76%
+/dev/grid/node-x34-y7 94T 71T 23T 75%
+/dev/grid/node-x34-y8 88T 69T 19T 78%
+/dev/grid/node-x34-y9 89T 72T 17T 80%
+/dev/grid/node-x34-y10 90T 69T 21T 76%
+/dev/grid/node-x34-y11 91T 65T 26T 71%
+/dev/grid/node-x34-y12 88T 69T 19T 78%
+/dev/grid/node-x34-y13 90T 69T 21T 76%
+/dev/grid/node-x34-y14 92T 66T 26T 71%
+/dev/grid/node-x34-y15 94T 70T 24T 74%
+/dev/grid/node-x34-y16 87T 69T 18T 79%
+/dev/grid/node-x34-y17 86T 67T 19T 77%
+/dev/grid/node-x34-y18 94T 66T 28T 70%
+/dev/grid/node-x34-y19 94T 69T 25T 73%
+/dev/grid/node-x34-y20 91T 67T 24T 73%
+/dev/grid/node-x34-y21 87T 72T 15T 82%
+/dev/grid/node-x34-y22 501T 495T 6T 98%
+/dev/grid/node-x34-y23 93T 71T 22T 76%
+/dev/grid/node-x34-y24 92T 73T 19T 79%
+/dev/grid/node-x34-y25 90T 73T 17T 81%
+/dev/grid/node-x34-y26 89T 69T 20T 77%
+/dev/grid/node-x34-y27 89T 72T 17T 80%
+/dev/grid/node-x34-y28 87T 66T 21T 75%
diff --git a/2016/aoc22/src/main.rs b/2016/aoc22/src/main.rs
new file mode 100644
index 0000000..bd374d5
--- /dev/null
+++ b/2016/aoc22/src/main.rs
@@ -0,0 +1,198 @@
+extern crate regex;
+
+use std::io::BufReader;
+use std::io::prelude::*;
+use std::fs::File;
+use std::collections::HashMap;
+use std::collections::HashSet;
+
+use regex::Regex;
+
+use std::str::FromStr;
+
+#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
+struct Node {
+ x: i8,
+ y: i8,
+ size: i16,
+ used: i16,
+ avail: i16,
+ blocker: bool
+}
+
+impl FromStr for Node {
+ type Err = String;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ let reg = Regex::new(r"/dev/grid/node-x(\d+)-y(\d+) +(\d+)T +(\d+)T +(\d+)T +(\d+)%").unwrap();
+ let cap = match reg.captures(s) {
+ Some(cap) => cap,
+ None => return Err("Does not match regex".to_string())
+ };
+ Ok(Node {
+ x: cap.at(1).unwrap().parse().unwrap(),
+ y: cap.at(2).unwrap().parse().unwrap(),
+ size: cap.at(3).unwrap().parse().unwrap(),
+ used: cap.at(4).unwrap().parse().unwrap(),
+ avail: cap.at(5).unwrap().parse().unwrap(),
+ blocker: false
+ })
+ }
+}
+
+impl Node {
+ fn is_viable_pair(&self, other: &Node) -> bool {
+ (self.x != other.x || self.y != other.y) && self.used > 0 && self.used <= other.avail
+ }
+
+ fn recalculate_avail(&mut self) {
+ self.avail = self.size - self.used;
+ debug_assert!(self.avail >= 0);
+ debug_assert!(self.used >= 0);
+ }
+}
+
+#[derive(Clone, Hash, PartialEq, Eq)]
+struct Grid {
+ nodes: Vec<Vec<Node>>,
+ goal_x: i8,
+ goal_y: i8
+}
+
+impl Grid {
+ fn new(nodes: Vec<Node>) -> Grid {
+ let mut grid_nodes = Vec::new();
+ let mut next_col = Vec::new();
+
+ let mut current_x = 0;
+
+ for node in nodes {
+ if current_x != node.x {
+ grid_nodes.push(next_col);
+ next_col = Vec::new();
+ current_x += 1;
+ }
+
+ next_col.push(node);
+ }
+ grid_nodes.push(next_col);
+ grid_nodes = Grid::normalize(grid_nodes);
+
+ Grid {
+ nodes: grid_nodes,
+ goal_x: current_x,
+ goal_y: 0
+ }
+ }
+
+ fn normalize(mut nodes: Vec<Vec<Node>>) -> Vec<Vec<Node>> {
+ for x in 0..nodes.len() {
+ for y in 0..nodes[x].len() {
+ nodes[x][y].size = ((nodes[x][y].size + 50)/100) * 100;
+ nodes[x][y].used = ((nodes[x][y].used + 50)/100) * 100;
+ nodes[x][y].avail = ((nodes[x][y].avail + 50)/100) * 100;
+ }
+ }
+ nodes
+ }
+
+ fn is_final(&self) -> bool {
+ self.goal_x == 0 && self.goal_y == 0
+ }
+
+ fn make_move(&self, x: i8, y: i8, dx: i8, dy: i8) -> Option<Grid> {
+ if x+dx < 0 || x+dx >= self.nodes.len() as i8 || y+dy < 0 || y+dy >= self.nodes[x as usize].len() as i8 {
+ return None;
+ }
+ if !self.nodes[x as usize][y as usize].is_viable_pair(&self.nodes[(x+dx) as usize][(y+dy) as usize]) {
+ return None;
+ }
+
+ let mut new_grid = self.clone();
+ new_grid.nodes[(x+dx) as usize][(y+dy) as usize].used += new_grid.nodes[x as usize][y as usize].used;
+ new_grid.nodes[(x+dx) as usize][(y+dy) as usize].recalculate_avail();
+ new_grid.nodes[x as usize][y as usize].used = 0;
+ new_grid.nodes[x as usize][y as usize].recalculate_avail();
+
+ if new_grid.goal_x == x && new_grid.goal_y == y {
+ new_grid.goal_x = x+dx;
+ new_grid.goal_y = y+dy;
+ }
+
+ Some(new_grid)
+ }
+
+ fn available_moves(&self) -> Vec<Grid> {
+ let mut moves = Vec::with_capacity(4);
+
+ for x in 0..self.nodes.len() as i8 {
+ for y in 0..self.nodes[x as usize].len() as i8 {
+ match self.make_move(x, y, -1, 0) {
+ Some(grid) => { moves.push(grid); },
+ None => {}
+ };
+ match self.make_move(x, y, 0, -1) {
+ Some(grid) => { moves.push(grid); },
+ None => {}
+ };
+ match self.make_move(x, y, 1, 0) {
+ Some(grid) => { moves.push(grid); },
+ None => {}
+ };
+ match self.make_move(x, y, 0, 1) {
+ Some(grid) => { moves.push(grid); },
+ None => {}
+ };
+ }
+ }
+
+ moves
+ }
+}
+
+
+fn main() {
+ let nodes = read_input();
+
+ let initial = Grid::new(nodes);
+ println!("Initial grid has {} possible moves", initial.available_moves().len());
+
+ let mut explored: HashSet<Grid> = HashSet::new();
+ let mut frontier: HashMap<Grid, u32> = HashMap::new();
+ frontier.insert(initial, 0);
+ let mut found_final = false;
+
+ while !found_final {
+ let (best_frontier, moves) = find_best_frontiers(&frontier);
+
+ let new_states = best_frontier.available_moves();
+ found_final = new_states.iter().any(|ref s| s.is_final());
+
+ for state in new_states {
+ if !(explored.contains(&state) || frontier.contains_key(&state)) {
+ frontier.insert(state, moves+1);
+ }
+ }
+
+ frontier.remove(&best_frontier);
+ explored.insert(best_frontier);
+ }
+
+ let (final_frontier, moves) = frontier.iter().find(|&(s, _)| s.is_final()).unwrap();
+ println!("It took {} moves to get the data", moves);
+}
+
+fn read_input() -> Vec<Node> {
+ let file = BufReader::new(File::open("input.txt").unwrap());
+
+ file.lines()
+ .skip(2)
+ .filter_map(|line| Node::from_str(line.unwrap().as_ref()).ok())
+ .collect()
+}
+
+fn find_best_frontiers(frontier: &HashMap<Grid, u32>) -> (Grid, u32) {
+ frontier.iter().min_by_key(|&(ref grid, &moves)| {
+ grid.goal_x as u32 + grid.goal_y as u32 + moves
+ }).map(|(&ref grid, &moves)| (grid.clone(), moves.clone())).unwrap()
+}
diff --git a/2016/aoc23/Cargo.lock b/2016/aoc23/Cargo.lock
new file mode 100644
index 0000000..c6ab041
--- /dev/null
+++ b/2016/aoc23/Cargo.lock
@@ -0,0 +1,98 @@
+[root]
+name = "aoc23"
+version = "0.1.0"
+dependencies = [
+ "regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "kernel32-sys"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "memchr"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "regex"
+version = "0.1.80"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
+ "regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+ "thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "thread-id"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "thread_local"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "utf8-ranges"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi-build"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[metadata]
+"checksum aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66"
+"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
+"checksum libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "a51822fc847e7a8101514d1d44e354ba2ffa7d4c194dcab48870740e327cac70"
+"checksum memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20"
+"checksum regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)" = "4fd4ace6a8cf7860714a2c2280d6c1f7e6a413486c13298bbc86fd3da019402f"
+"checksum regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957"
+"checksum thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03"
+"checksum thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8576dbbfcaef9641452d5cf0df9b0e7eeab7694956dd33bb61515fb8f18cfdd5"
+"checksum utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f"
+"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
+"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
diff --git a/2016/aoc23/Cargo.toml b/2016/aoc23/Cargo.toml
new file mode 100644
index 0000000..39fd06e
--- /dev/null
+++ b/2016/aoc23/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "aoc23"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@entelect.co.za>"]
+
+[dependencies]
+regex = "0.1" \ No newline at end of file
diff --git a/2016/aoc23/input.txt b/2016/aoc23/input.txt
new file mode 100644
index 0000000..3ff0460
--- /dev/null
+++ b/2016/aoc23/input.txt
@@ -0,0 +1,26 @@
+cpy a b
+dec b
+cpy a d
+cpy 0 a
+cpy b c
+inc a
+dec c
+jnz c -2
+dec d
+jnz d -5
+dec b
+cpy b c
+cpy c d
+dec d
+inc c
+jnz d -2
+tgl c
+cpy -16 c
+jnz 1 c
+cpy 90 c
+jnz 90 d
+inc a
+inc d
+jnz d -2
+inc c
+jnz c -5
diff --git a/2016/aoc23/src/main.rs b/2016/aoc23/src/main.rs
new file mode 100644
index 0000000..a12fa18
--- /dev/null
+++ b/2016/aoc23/src/main.rs
@@ -0,0 +1,247 @@
+extern crate regex;
+use regex::Regex;
+
+use std::io::BufReader;
+use std::io::prelude::*;
+use std::fs::File;
+
+enum Instruction {
+ Inc(usize),
+ Dec(usize),
+
+ TglLit(i32),
+ TglReg(usize),
+
+ CpyLitReg(i32, usize),
+ CpyRegReg(usize, usize),
+ CpyLitLit(i32, i32),
+ CpyRegLit(usize, i32),
+
+ JnzLitLit(i32, i32),
+ JnzRegLit(usize, i32),
+ JnzLitReg(i32, usize),
+ JnzRegReg(usize, usize),
+
+ Noop
+}
+
+impl Instruction {
+ fn parse(line: &str) -> Instruction {
+ match Regex::new(r"inc (a|b|c|d)").unwrap().captures(line) {
+ Some(cap) => {
+ let reg = to_register_index(cap.at(1).unwrap());
+ return Instruction::Inc(reg);
+ },
+ _ => {}
+ }
+
+ match Regex::new(r"dec (a|b|c|d)").unwrap().captures(line) {
+ Some(cap) => {
+ let reg = to_register_index(cap.at(1).unwrap());
+ return Instruction::Dec(reg);
+ },
+ _ => {}
+ }
+
+
+ match Regex::new(r"tgl (a|b|c|d)").unwrap().captures(line) {
+ Some(cap) => {
+ let reg = to_register_index(cap.at(1).unwrap());
+ return Instruction::TglReg(reg);
+ },
+ _ => {}
+ }
+
+ match Regex::new(r"tgl ([-\d]+)").unwrap().captures(line) {
+ Some(cap) => {
+ let lit = cap.at(1).unwrap().parse().unwrap();
+ return Instruction::TglLit(lit);
+ },
+ _ => {}
+ }
+
+
+ match Regex::new(r"cpy ([-\d]+) (a|b|c|d)").unwrap().captures(line) {
+ Some(cap) => {
+ let src = cap.at(1).unwrap().parse().unwrap();
+ let dest = to_register_index(cap.at(2).unwrap());
+ return Instruction::CpyLitReg(src, dest);
+ },
+ _ => {}
+ }
+
+ match Regex::new(r"cpy (a|b|c|d) (a|b|c|d)").unwrap().captures(line) {
+ Some(cap) => {
+ let src = to_register_index(cap.at(1).unwrap());
+ let dest = to_register_index(cap.at(2).unwrap());
+ return Instruction::CpyRegReg(src, dest);
+ },
+ _ => {}
+ }
+
+ match Regex::new(r"cpy ([-\d]+) ([-\d]+)").unwrap().captures(line) {
+ Some(cap) => {
+ let src = cap.at(1).unwrap().parse().unwrap();
+ let dest = cap.at(2).unwrap().parse().unwrap();
+ return Instruction::CpyLitLit(src, dest);
+ },
+ _ => {}
+ }
+
+ match Regex::new(r"cpy (a|b|c|d) ([-\d]+)").unwrap().captures(line) {
+ Some(cap) => {
+ let src = to_register_index(cap.at(1).unwrap());
+ let dest = cap.at(2).unwrap().parse().unwrap();
+ return Instruction::CpyRegReg(src, dest);
+ },
+ _ => {}
+ }
+
+
+ match Regex::new(r"jnz ([-\d]+) (a|b|c|d)").unwrap().captures(line) {
+ Some(cap) => {
+ let src = cap.at(1).unwrap().parse().unwrap();
+ let dest = to_register_index(cap.at(2).unwrap());
+ return Instruction::JnzLitReg(src, dest);
+ },
+ _ => {}
+ }
+
+ match Regex::new(r"jnz (a|b|c|d) (a|b|c|d)").unwrap().captures(line) {
+ Some(cap) => {
+ let src = to_register_index(cap.at(1).unwrap());
+ let dest = to_register_index(cap.at(2).unwrap());
+ return Instruction::JnzRegReg(src, dest);
+ },
+ _ => {}
+ }
+
+ match Regex::new(r"jnz ([-\d]+) ([-\d]+)").unwrap().captures(line) {
+ Some(cap) => {
+ let src = cap.at(1).unwrap().parse().unwrap();
+ let dest = cap.at(2).unwrap().parse().unwrap();
+ return Instruction::JnzLitLit(src, dest);
+ },
+ _ => {}
+ }
+
+ match Regex::new(r"jnz (a|b|c|d) ([-\d]+)").unwrap().captures(line) {
+ Some(cap) => {
+ let src = to_register_index(cap.at(1).unwrap());
+ let dest = cap.at(2).unwrap().parse().unwrap();
+ return Instruction::JnzRegLit(src, dest);
+ },
+ _ => {}
+ }
+
+ panic!("Invalid instruction line");
+ }
+
+ fn toggle(&self) -> Self {
+ match *self {
+ Instruction::Inc(a) => Instruction::Dec(a),
+ Instruction::Dec(a) => Instruction::Inc(a),
+
+ Instruction::TglLit(_) => Instruction::Noop,
+ Instruction::TglReg(a) => Instruction::Inc(a),
+
+ Instruction::CpyLitReg(a, b) => Instruction::JnzLitReg(a, b),
+ Instruction::CpyRegReg(a, b) => Instruction::JnzRegReg(a, b),
+ Instruction::CpyLitLit(a, b) => Instruction::JnzLitLit(a, b),
+ Instruction::CpyRegLit(a, b) => Instruction::JnzRegLit(a, b),
+
+ Instruction::JnzLitLit(a, b) => Instruction::CpyLitLit(a, b),
+ Instruction::JnzRegLit(a, b) => Instruction::CpyRegLit(a, b),
+ Instruction::JnzLitReg(a, b) => Instruction::CpyLitReg(a, b),
+ Instruction::JnzRegReg(a, b) => Instruction::CpyRegReg(a, b),
+ Instruction::Noop => Instruction::Noop
+ }
+ }
+}
+
+fn main() {
+ let mut program = read_file();
+
+ let mut registers: [i32; 4] = [12, 0, 0, 0];
+ let mut pc: usize = 0;
+
+ while pc < program.len() {
+ let mut pc_next: usize = pc+1;
+
+ match program[pc] {
+ Instruction::Inc(dest) => {
+ registers[dest] += 1;
+ },
+ Instruction::Dec(dest) => {
+ registers[dest] -= 1;
+ },
+
+ Instruction::TglReg(offset) => {
+ let line_to_toggle = (pc as i32 + registers[offset]) as usize;
+ if line_to_toggle > 0 && line_to_toggle < program.len() {
+ program[line_to_toggle] = program[line_to_toggle].toggle();
+ }
+ },
+ Instruction::TglLit(offset) => {
+ let line_to_toggle = (pc as i32 + offset) as usize;
+ if line_to_toggle > 0 && line_to_toggle < program.len() {
+ program[line_to_toggle] = program[line_to_toggle].toggle();
+ }
+ },
+
+ Instruction::CpyLitReg(src, dest) => {
+ registers[dest] = src;
+ },
+ Instruction::CpyRegReg(src, dest) => {
+ registers[dest] = registers[src];
+ },
+ Instruction::CpyLitLit(_, _) | Instruction::CpyRegLit(_, _) => {},
+
+ Instruction::JnzRegLit(condition, offset) => {
+ if registers[condition] != 0 {
+ pc_next = (pc as i32 + offset) as usize;
+ }
+ },
+ Instruction::JnzLitLit(condition, offset) => {
+ if condition != 0 {
+ pc_next = (pc as i32 + offset) as usize;
+ }
+ },
+ Instruction::JnzRegReg(condition, offset) => {
+ if registers[condition] != 0 {
+ pc_next = (pc as i32 + registers[offset]) as usize;
+ }
+ },
+ Instruction::JnzLitReg(condition, offset) => {
+ if condition != 0 {
+ pc_next = (pc as i32 + registers[offset]) as usize;
+ }
+ },
+ Instruction::Noop => {}
+ }
+
+ pc = pc_next;
+ }
+
+ println!("a: {}, b: {}, c: {}, d: {}", registers[0], registers[1], registers[2], registers[3]);
+
+}
+
+fn to_register_index(name: &str) -> usize {
+ match name {
+ "a" => 0,
+ "b" => 1,
+ "c" => 2,
+ "d" => 3,
+ _ => panic!("Invalid register provided")
+ }
+}
+
+fn read_file() -> Vec<Instruction> {
+ let file = BufReader::new(File::open("input.txt").unwrap());
+ file.lines()
+ .map(|line| line.unwrap())
+ .filter(|line| line.len() > 0)
+ .map(|line| Instruction::parse(line.trim()))
+ .collect()
+}
diff --git a/2016/aoc24/Cargo.lock b/2016/aoc24/Cargo.lock
new file mode 100644
index 0000000..d8b394a
--- /dev/null
+++ b/2016/aoc24/Cargo.lock
@@ -0,0 +1,4 @@
+[root]
+name = "aoc24"
+version = "0.1.0"
+
diff --git a/2016/aoc24/Cargo.toml b/2016/aoc24/Cargo.toml
new file mode 100644
index 0000000..26becbd
--- /dev/null
+++ b/2016/aoc24/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "aoc24"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@gmail.com>"]
+
+[dependencies]
diff --git a/2016/aoc24/input.txt b/2016/aoc24/input.txt
new file mode 100644
index 0000000..cc45a4f
--- /dev/null
+++ b/2016/aoc24/input.txt
@@ -0,0 +1,39 @@
+#######################################################################################################################################################################################
+#...........#.....#...........#.#.......#.....#.#...............#.....#.....#.......#.......#.......#.....................#.........#.....#...#3......#...#.#.............#.......#...#
+#####.#.#.###.###.#####.#.#####.#.###.###.###.#.#.#.#.#.#.###.#.###.###.###.#.#######.#.#.#.###.###.#.#.#.#####.#.#.#####.###.#.#######.#############.#.#.#.#.#.#.###.#.#.#.#.###.#.#.#
+#...#.#.#.#.....#.#...#...#.....#.....#.#...#.........#.....................#.....#...#...#.......#.....#.#.........#.#.#.#.#.......................#...#...#.#.#.#.....#.#.........#.#
+#.#.#.#.#.#####.#.#.#.#.#.#.#.#.###.#.#.###.#.#.#.#.#.#########.#.###.###.#.#.###.###.#.#.#.#.###.#.#.#.#.#.#.#####.#.#.###.###.#######.#.#.#.###.#.###.#.#.#####.#####.#.#.###.#.#.#.#
+#.#.#...#.....#.#.....#...#.#...#.#...#.......#...........#...#...#...#.#.....#.#...#...........#.#.......#...#...#.#.........#...#.......#.#...#.....#...#.......#.#.#.............#.#
+#.#######.#.#.###.#.#.#####.#.#.#.#.###.#####.#.#.###.#.#.#.#.#.#.#.#.#.#.###.#.#.#.###.#######.#######.#.#.###.#.#.#.#.#.#.###.#.#.#.#.#.###.#.#####.#.#.#.#.#.#.#.#.#.###.#.#####.#.#
+#.#...#.....#.......#.......#.#.......#...#.#.....#.#.#.#.#.#.......#...#.....#.#.#.#.#.........#...#...#...#.......#...#...#.....#.....#...#.........#...#.#...#...#...#.........#.#.#
+#.#.#.#.###.###.#.#.#.###.###.#.#.###.#.#.#.#####.#.###.#.#####.#####.###.#.#.#.#.###.#.#.#.###.###.#.#.#.#.#.#####.#.###.#.#.###.#.#.#.#.###.###.#######.#.###.###.#.#######.#.#.#.#.#
+#.#...#...#...............#...#...#...#.#.........#.#...#...#.#...#.#.....#...#.#...#.#.#...#.#.#.#.#.....#...#...#.......#.#...#.........#.#.....#.#...#.....#.#...#.#2#.....#.......#
+#.#.#####.#########.#.###.#.#####.#.#.#.#######.#.###.#.#.#.#.###.#.#.###.#.###.#.#.#.#.#.###.###.#.#.#######.#.###.#.#.#.#.#.#.#.#####.###.#.###.#.#####.#.#.###.#.#.#.###.#.###.###.#
+#...#...........#.....#.......#...#0..........#...#.....#.#...#.#...#.#.#...#.#.......#.........#...#.#...#.#.#.......#...#.#.........#.#.....................#.#.#.#.....#.#.....#...#
+#.###.#.#.#.#.#.###.#.#.#.#.#.###.#.#.###.#.#.#.###.###.#.#####.#.#.#.#.###.#.#.###.#.#.###.###.#.#####.#.#.#.###.#.#######.#######.#.#.#.###.#.#.#.#.#.#######.#.#.#####.#.###.###.#.#
+#...#...#...#.#...........#...#.#.....#...#...#.....#.#.............#...#.........#...#.....#...#.......#...#.#.............#.........#...#.#.....#.#.........#.............#...#.....#
+#.#.#.###.#.###.#.#.#.###.#.###.#######.#.#.###.#.#.#.#.###.#.###.#.#.#.#.#####.#.#.#.#####.#.#####.#.#.#.#.###.###.#.###.###.###.#.#.#.###.#.#.###.#.#.###.#########.#####.#.#.#.#####
+#.#...#.#.......#...#.....#.....#...#...#.....#...#...#.........#.....#.#.........#.....#.....#.........#...#.#.....#.#...#...#.#.#...#.#...#.........#.#...#.........#.#.......#.....#
+#.#####.#.###.#.#.#.###.#.#.#.#.#.#.###.#.#.#.###.###.#.###.#.###.#.#.#.###.#.#####.###.#.#.#.#.#.#####.#.#.#.#.#.#.###.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.###.#.#.#.#.#.#.#.#.###.#.#.#
+#.....#...#...........#...#...........#.#.....#...#.....#...#.#.#.#...#.....#...#...#...............#...#.........#...#.....#...#.#...#.#...#.....#.....#.....#...#.#...#...#.#.......#
+###.###.#.#.#####.###.#####.#.###.#.#.#####.#.###.#.###.#.###.#.#.#.#.###.#.###.#.#.#.#.###.#.###.#.#.#.#.#.#.###.#.#.#.###.###.#.#.###.#########.#.#####.###########.#.###.###.#####.#
+#...#1#...#...#.......#...#...#.#...#...#...........#.#.......#.......#.#.........#.#...#...#...............#...#.....#.#...#.#.....#.........#...#.....#.#...#...#.....#.#.#.#...#...#
+#.###.###.#.#.#.#####.#.#.#.#.#.#.#####.#####.#.#####.#.#.#.#.###.#.#.#.###.#.###.#.###.#.#.#####.#.#.#####.#.#.###.#.###.#.#.#.#.#.#.#####.#.#.#.#.###.#.#.###.#.#.#.#.#.#.#.###.#.#.#
+#.....#.#.#.#.........#.#.#.....#.....#...#.....#...#.............#...#...#.....#...#.......#.......#.#.....#...#...#.#...#.....#.#...#.....#.#.#.#.#.#.#.......#...........#.#5#.....#
+#.###.#.#.###.###.###.#.#####.#.#.###.###.#.###.#############.#######.#.###.#.###.#.#####.#.#.#.#####.#.#.#####.#.#.#.#.#.#######.#.#.###########.#.#.#.#.#.#.#.#.#.###.#.#.#.#.#.###.#
+#.....#...#...................#.......#...#...#.#.....#.............#.....#...#.....#.......#.#.#.........#.........#.......#.......#...#.........#.#...#...#.....#.#.....#...#...#.#.#
+#.###.###.###########.###.#####.#####.###.#.#.#.#.#.#.###.#.###.#.#######.#.#.#.#.#.#.###.#.#.#####.#.#.#.#######.#.###.#.#.###.#.#.#.###.#####.#####.#.#.#.#.###.#.###.###########.#.#
+#.#.#.#...#...#.....#.....#.#.......#.....#.....#...........#.#...#.........#.#.#.#.....#.#.#...........#...#...#...#.......#...#.........#.....#.....#.....#.......#...#...#.#...#...#
+#.#.#.#.#.#########.#.#.###.#.#.###.###.#.#.#.###.#####.#.#.#.#.#.#.#######.#.#.#######.#.###.#.###.###.#.###.#.#.#.#######.#######.#.#.#.#####.#.###.#.#####.#.###.#.#.###.#.#######.#
+#.#...#...#.#...................#.#...#.#...#.......#.#...#.#...#.#.#.....#.#...#...#...#.#.............#.....#...........#.........#...#.#.#.....#.......#.......#.....#...#.#...#...#
+###.#.#.#.#.#.#.###.#.###.#####.#.#####.#.#.###.#.#.#.#####.#.###.#####.#.#.#.#.#.#.#.###.#.#.#####.###.#.###.#####.#.#.#.#####.###.#.#.#.#.#.#######.###.#.#.#########.###.#.#######.#
+#.....#...................#...#.#...#...#...........#.#.......#.#.....#.#.....#...........#.....#.........#.#...........#...#.....#...#.....#.............#.#.#.........#.#.#.#.......#
+#.#.#.#.#.###.#.#.#.#.#########.###.#.#.#.#########.#.#.#.#.#.#.###########.#.#.###.###.###.#.#.#.#.#.###.#.###.#.###.#.###.###.#.###.#.#.#####.#.#.#######.#.#.###.###.#.#.#.###.#####
+#...#.#.#....7#.#...#.#.........#.....#...#.#.......#.....#...........#.#...#.......#.#...#.#...#...........#...#.#...#.....#...#.#.#...........#...#.#...#...#4....#...#...#...#.....#
+###.#.#.###.#####.#.#.#.#.#.#.#.#.#.#.###.#.###.#.###.#######.#.#.###.#.#####.#.#####.###.#.###.#.#.#.#.#####.###.#.###.#.#.#.#.###.#.#.###.#.#.###.#.###.#########.#.###.#.#.#.#.#.#.#
+#.....#.#.#.......#.#.#.......#.#.#.............#...#.........#.......#.#.#...........#.....#.....#...#...#.#.....#...#.....#.#.#...#...#...#.....#...#...#.#...#...#.#.#.....#...#.#.#
+#.###.#.#.#########.#.#.#.#######.#.#.#.#.###.###.#####.#.#.#.#.#.###.#.#.#.#.#####.#.#.###.#.#.#.#.###.###.###.#.#.#######.#.#.###.#####.#.#.###.#.#.#####.###.#.#.###.#.#########.###
+#.......#...#...#...#...#.#...#...#.#.#...#.#...........#.........#...#.#.#.#.....#...#.....#.#.....#...#...#...#.#.#.#...#...#.#...#.....#...........#.#.........#.....#.#.#...#.....#
+#####.###.#####.#.#####.#######.#.#.#.###.#.#######.###.#####.###.#.#.#.#.#.#####.#####.###.###.###.#.#.###.#.#.#.###.#.#.###.#.#.#####.#.###.#.#.#.###.#.#.#.#.#.###.###.#.#.###.#.#.#
+#.....#.#.#.......#...#.#.#.....#.........#...#.....#6......#...#.#...........#.......#.............#...#...#...#...#.#...#...#...#.....#.........#.#...#.....#.#.#.......#...#.#.#...#
+#######################################################################################################################################################################################
diff --git a/2016/aoc24/src/main.rs b/2016/aoc24/src/main.rs
new file mode 100644
index 0000000..c4d620e
--- /dev/null
+++ b/2016/aoc24/src/main.rs
@@ -0,0 +1,135 @@
+use std::io::BufReader;
+use std::io::BufRead;
+use std::fs::File;
+use std::collections::HashMap;
+
+struct Map {
+ walls: Vec<Vec<bool>>,
+ destinations: Vec<(usize, usize)>,
+ start: (usize, usize)
+}
+
+impl Map {
+ fn new(input: &[String]) -> Map {
+ let mut walls = Vec::with_capacity(input.len());
+ let mut start = (0, 0);
+ let mut destinations = Vec::new();
+
+ let mut y = 0;
+
+ for line in input {
+ let mut x = 0;
+ let mut wall_row = Vec::with_capacity(line.len());
+ for c in line.chars() {
+ wall_row.push(c == '#');
+ if c == '0' {
+ start = (y, x);
+ }
+ else if c.is_numeric() {
+ destinations.push((y, x));
+ }
+
+ x += 1;
+ }
+
+ walls.push(wall_row);
+ y += 1;
+ }
+
+ Map {
+ walls: walls,
+ destinations: destinations,
+ start: start
+ }
+ }
+
+ fn is_valid_position(&self, y: i32, x: i32) -> bool {
+ y > 0 &&
+ x > 0 &&
+ (y as usize) < self.walls.len() &&
+ (x as usize) < self.walls[y as usize].len() &&
+ !self.walls[y as usize][x as usize]
+ }
+}
+
+#[derive(Clone, Hash, PartialEq, Eq)]
+struct State {
+ robot_location: (usize, usize),
+ destinations_hit: Vec<bool>
+}
+
+impl State {
+ fn new(map: &Map) -> State {
+ State {
+ robot_location: map.start,
+ destinations_hit: map.destinations.iter().map(|_| false).collect()
+ }
+ }
+
+ fn next_state(&self, movement: (i32, i32), map: &Map) -> Option<State> {
+ let (y, x) = self.robot_location;
+ let (dy, dx) = movement;
+ let y2 = y as i32 + dy;
+ let x2 = x as i32 + dx;
+
+ if !map.is_valid_position(y2, x2) {
+ return None;
+ }
+
+ let y2 = y2 as usize;
+ let x2 = x2 as usize;
+
+ Some(State {
+ robot_location: (y2, x2),
+ destinations_hit: self.destinations_hit.iter()
+ .zip(map.destinations.iter())
+ .map(|(&hit, &(dest_y, dest_x))| hit || (dest_y == y2 && dest_x == x2))
+ .collect()
+ })
+ }
+
+ fn next_states(&self, map: &Map) -> Vec<State> {
+ [(-1, 0), (1, 0), (0, -1), (0, 1)].iter()
+ .filter_map(|&movement| self.next_state(movement, &map))
+ .collect()
+ }
+
+ fn is_complete(&self, map: &Map) -> bool {
+ self.destinations_hit.iter().all(|&x| x) && self.robot_location == map.start
+ }
+}
+
+fn main() {
+ let map = Map::new(&read_file());
+ let initial = State::new(&map);
+
+ let mut states = HashMap::new();
+ states.insert(initial, 0);
+
+ let mut moves = 0;
+
+ while !states.iter().any(|(&ref s, _)| s.is_complete(&map)) {
+ let new_states = states.iter()
+ .filter(|&(_, &m)| m == moves)
+ .flat_map(|(&ref s, _)| s.next_states(&map))
+ .collect::<Vec<_>>();
+
+ moves += 1;
+
+ for state in new_states {
+ if !states.contains_key(&state) {
+ states.insert(state, moves);
+ }
+ }
+ }
+
+ println!("Final state found in {} moves", moves);
+}
+
+fn read_file() -> Vec<String> {
+ let file = BufReader::new(File::open("input.txt").unwrap());
+ file.lines()
+ .map(|line| line.unwrap())
+ .filter(|line| line.len() > 0)
+ .collect()
+}
diff --git a/2016/aoc25/Cargo.lock b/2016/aoc25/Cargo.lock
new file mode 100644
index 0000000..c4553c9
--- /dev/null
+++ b/2016/aoc25/Cargo.lock
@@ -0,0 +1,98 @@
+[root]
+name = "aoc25"
+version = "0.1.0"
+dependencies = [
+ "regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "kernel32-sys"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "memchr"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "regex"
+version = "0.1.80"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
+ "regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+ "thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "thread-id"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "thread_local"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "utf8-ranges"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi-build"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[metadata]
+"checksum aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66"
+"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
+"checksum libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "a51822fc847e7a8101514d1d44e354ba2ffa7d4c194dcab48870740e327cac70"
+"checksum memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20"
+"checksum regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)" = "4fd4ace6a8cf7860714a2c2280d6c1f7e6a413486c13298bbc86fd3da019402f"
+"checksum regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957"
+"checksum thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03"
+"checksum thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8576dbbfcaef9641452d5cf0df9b0e7eeab7694956dd33bb61515fb8f18cfdd5"
+"checksum utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f"
+"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
+"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
diff --git a/2016/aoc25/Cargo.toml b/2016/aoc25/Cargo.toml
new file mode 100644
index 0000000..aa84af4
--- /dev/null
+++ b/2016/aoc25/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "aoc25"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@gmail.com>"]
+
+[dependencies]
+regex = "0.1" \ No newline at end of file
diff --git a/2016/aoc25/input.txt b/2016/aoc25/input.txt
new file mode 100644
index 0000000..a9734a4
--- /dev/null
+++ b/2016/aoc25/input.txt
@@ -0,0 +1,30 @@
+cpy a d
+cpy 7 c
+cpy 362 b
+inc d
+dec b
+jnz b -2
+dec c
+jnz c -5
+cpy d a
+jnz 0 0
+cpy a b
+cpy 0 a
+cpy 2 c
+jnz b 2
+jnz 1 6
+dec b
+dec c
+jnz c -4
+inc a
+jnz 1 -7
+cpy 2 b
+jnz c 2
+jnz 1 4
+dec b
+dec c
+jnz 1 -4
+jnz 0 0
+out b
+jnz a -19
+jnz 1 -21
diff --git a/2016/aoc25/src/main.rs b/2016/aoc25/src/main.rs
new file mode 100644
index 0000000..7db2ce5
--- /dev/null
+++ b/2016/aoc25/src/main.rs
@@ -0,0 +1,284 @@
+extern crate regex;
+use regex::Regex;
+
+use std::io::BufReader;
+use std::io::prelude::*;
+use std::fs::File;
+
+enum Instruction {
+ Inc(usize),
+ Dec(usize),
+
+ TglLit(i32),
+ TglReg(usize),
+
+ OutLit(i32),
+ OutReg(usize),
+
+ CpyLitReg(i32, usize),
+ CpyRegReg(usize, usize),
+ CpyLitLit(i32, i32),
+ CpyRegLit(usize, i32),
+
+ JnzLitLit(i32, i32),
+ JnzRegLit(usize, i32),
+ JnzLitReg(i32, usize),
+ JnzRegReg(usize, usize),
+
+ Noop
+}
+
+impl Instruction {
+ fn parse(line: &str) -> Instruction {
+ match Regex::new(r"inc (a|b|c|d)").unwrap().captures(line) {
+ Some(cap) => {
+ let reg = to_register_index(cap.at(1).unwrap());
+ return Instruction::Inc(reg);
+ },
+ _ => {}
+ }
+
+ match Regex::new(r"dec (a|b|c|d)").unwrap().captures(line) {
+ Some(cap) => {
+ let reg = to_register_index(cap.at(1).unwrap());
+ return Instruction::Dec(reg);
+ },
+ _ => {}
+ }
+
+
+ match Regex::new(r"tgl (a|b|c|d)").unwrap().captures(line) {
+ Some(cap) => {
+ let reg = to_register_index(cap.at(1).unwrap());
+ return Instruction::TglReg(reg);
+ },
+ _ => {}
+ }
+
+ match Regex::new(r"tgl ([-\d]+)").unwrap().captures(line) {
+ Some(cap) => {
+ let lit = cap.at(1).unwrap().parse().unwrap();
+ return Instruction::TglLit(lit);
+ },
+ _ => {}
+ }
+
+
+ match Regex::new(r"out (a|b|c|d)").unwrap().captures(line) {
+ Some(cap) => {
+ let reg = to_register_index(cap.at(1).unwrap());
+ return Instruction::OutReg(reg);
+ },
+ _ => {}
+ }
+
+ match Regex::new(r"out ([-\d]+)").unwrap().captures(line) {
+ Some(cap) => {
+ let lit = cap.at(1).unwrap().parse().unwrap();
+ return Instruction::OutLit(lit);
+ },
+ _ => {}
+ }
+
+
+ match Regex::new(r"cpy ([-\d]+) (a|b|c|d)").unwrap().captures(line) {
+ Some(cap) => {
+ let src = cap.at(1).unwrap().parse().unwrap();
+ let dest = to_register_index(cap.at(2).unwrap());
+ return Instruction::CpyLitReg(src, dest);
+ },
+ _ => {}
+ }
+
+ match Regex::new(r"cpy (a|b|c|d) (a|b|c|d)").unwrap().captures(line) {
+ Some(cap) => {
+ let src = to_register_index(cap.at(1).unwrap());
+ let dest = to_register_index(cap.at(2).unwrap());
+ return Instruction::CpyRegReg(src, dest);
+ },
+ _ => {}
+ }
+
+ match Regex::new(r"cpy ([-\d]+) ([-\d]+)").unwrap().captures(line) {
+ Some(cap) => {
+ let src = cap.at(1).unwrap().parse().unwrap();
+ let dest = cap.at(2).unwrap().parse().unwrap();
+ return Instruction::CpyLitLit(src, dest);
+ },
+ _ => {}
+ }
+
+ match Regex::new(r"cpy (a|b|c|d) ([-\d]+)").unwrap().captures(line) {
+ Some(cap) => {
+ let src = to_register_index(cap.at(1).unwrap());
+ let dest = cap.at(2).unwrap().parse().unwrap();
+ return Instruction::CpyRegReg(src, dest);
+ },
+ _ => {}
+ }
+
+
+ match Regex::new(r"jnz ([-\d]+) (a|b|c|d)").unwrap().captures(line) {
+ Some(cap) => {
+ let src = cap.at(1).unwrap().parse().unwrap();
+ let dest = to_register_index(cap.at(2).unwrap());
+ return Instruction::JnzLitReg(src, dest);
+ },
+ _ => {}
+ }
+
+ match Regex::new(r"jnz (a|b|c|d) (a|b|c|d)").unwrap().captures(line) {
+ Some(cap) => {
+ let src = to_register_index(cap.at(1).unwrap());
+ let dest = to_register_index(cap.at(2).unwrap());
+ return Instruction::JnzRegReg(src, dest);
+ },
+ _ => {}
+ }
+
+ match Regex::new(r"jnz ([-\d]+) ([-\d]+)").unwrap().captures(line) {
+ Some(cap) => {
+ let src = cap.at(1).unwrap().parse().unwrap();
+ let dest = cap.at(2).unwrap().parse().unwrap();
+ return Instruction::JnzLitLit(src, dest);
+ },
+ _ => {}
+ }
+
+ match Regex::new(r"jnz (a|b|c|d) ([-\d]+)").unwrap().captures(line) {
+ Some(cap) => {
+ let src = to_register_index(cap.at(1).unwrap());
+ let dest = cap.at(2).unwrap().parse().unwrap();
+ return Instruction::JnzRegLit(src, dest);
+ },
+ _ => {}
+ }
+
+ panic!("Invalid instruction line");
+ }
+
+ fn toggle(&self) -> Self {
+ match *self {
+ Instruction::Inc(a) => Instruction::Dec(a),
+ Instruction::Dec(a) => Instruction::Inc(a),
+
+ Instruction::TglLit(_) => Instruction::Noop,
+ Instruction::TglReg(a) => Instruction::Inc(a),
+
+ Instruction::OutLit(_) => Instruction::Noop,
+ Instruction::OutReg(a) => Instruction::Inc(a),
+
+ Instruction::CpyLitReg(a, b) => Instruction::JnzLitReg(a, b),
+ Instruction::CpyRegReg(a, b) => Instruction::JnzRegReg(a, b),
+ Instruction::CpyLitLit(a, b) => Instruction::JnzLitLit(a, b),
+ Instruction::CpyRegLit(a, b) => Instruction::JnzRegLit(a, b),
+
+ Instruction::JnzLitLit(a, b) => Instruction::CpyLitLit(a, b),
+ Instruction::JnzRegLit(a, b) => Instruction::CpyRegLit(a, b),
+ Instruction::JnzLitReg(a, b) => Instruction::CpyLitReg(a, b),
+ Instruction::JnzRegReg(a, b) => Instruction::CpyRegReg(a, b),
+ Instruction::Noop => Instruction::Noop
+ }
+ }
+}
+
+fn main() {
+ let expected_output = vec!(0, 1, 0, 1, 0, 1, 0, 1, 0, 1);
+ let min_input = (0..).find(|&i| run_program(i) == expected_output).unwrap();
+ println!("{}", min_input);
+}
+
+
+fn run_program(input: i32) -> Vec<i32> {
+ let mut transmission = Vec::new();
+ let mut program = read_file();
+
+ let mut registers: [i32; 4] = [input, 0, 0, 0];
+ let mut pc: usize = 0;
+
+ while pc < program.len() && transmission.len() < 10 {
+ let mut pc_next: usize = pc+1;
+
+ match program[pc] {
+ Instruction::Inc(dest) => {
+ registers[dest] += 1;
+ },
+ Instruction::Dec(dest) => {
+ registers[dest] -= 1;
+ },
+
+ Instruction::TglReg(offset) => {
+ let line_to_toggle = (pc as i32 + registers[offset]) as usize;
+ if line_to_toggle > 0 && line_to_toggle < program.len() {
+ program[line_to_toggle] = program[line_to_toggle].toggle();
+ }
+ },
+ Instruction::TglLit(offset) => {
+ let line_to_toggle = (pc as i32 + offset) as usize;
+ if line_to_toggle > 0 && line_to_toggle < program.len() {
+ program[line_to_toggle] = program[line_to_toggle].toggle();
+ }
+ },
+
+ Instruction::OutReg(output) => {
+ transmission.push(registers[output]);
+ },
+ Instruction::OutLit(output) => {
+ transmission.push(output);
+ },
+
+ Instruction::CpyLitReg(src, dest) => {
+ registers[dest] = src;
+ },
+ Instruction::CpyRegReg(src, dest) => {
+ registers[dest] = registers[src];
+ },
+ Instruction::CpyLitLit(_, _) | Instruction::CpyRegLit(_, _) => {},
+
+ Instruction::JnzRegLit(condition, offset) => {
+ if registers[condition] != 0 {
+ pc_next = (pc as i32 + offset) as usize;
+ }
+ },
+ Instruction::JnzLitLit(condition, offset) => {
+ if condition != 0 {
+ pc_next = (pc as i32 + offset) as usize;
+ }
+ },
+ Instruction::JnzRegReg(condition, offset) => {
+ if registers[condition] != 0 {
+ pc_next = (pc as i32 + registers[offset]) as usize;
+ }
+ },
+ Instruction::JnzLitReg(condition, offset) => {
+ if condition != 0 {
+ pc_next = (pc as i32 + registers[offset]) as usize;
+ }
+ },
+ Instruction::Noop => {}
+ }
+
+ pc = pc_next;
+ }
+
+ transmission
+}
+
+fn to_register_index(name: &str) -> usize {
+ match name {
+ "a" => 0,
+ "b" => 1,
+ "c" => 2,
+ "d" => 3,
+ _ => panic!("Invalid register provided")
+ }
+}
+
+fn read_file() -> Vec<Instruction> {
+ let file = BufReader::new(File::open("input.txt").unwrap());
+ file.lines()
+ .map(|line| line.unwrap())
+ .filter(|line| line.len() > 0)
+ .map(|line| Instruction::parse(line.trim()))
+ .collect()
+}
diff --git a/2016/aoc3/Cargo.lock b/2016/aoc3/Cargo.lock
new file mode 100644
index 0000000..f581b3c
--- /dev/null
+++ b/2016/aoc3/Cargo.lock
@@ -0,0 +1,4 @@
+[root]
+name = "aoc3"
+version = "0.1.0"
+
diff --git a/2016/aoc3/Cargo.toml b/2016/aoc3/Cargo.toml
new file mode 100644
index 0000000..c8a1b62
--- /dev/null
+++ b/2016/aoc3/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "aoc3"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@gmail.com>"]
+
+[dependencies]
diff --git a/2016/aoc3/input.txt b/2016/aoc3/input.txt
new file mode 100644
index 0000000..1458df8
--- /dev/null
+++ b/2016/aoc3/input.txt
@@ -0,0 +1,1734 @@
+ 330 143 338
+ 769 547 83
+ 930 625 317
+ 669 866 147
+ 15 881 210
+ 662 15 70
+ 273 277 707
+ 50 592 770
+ 280 313 407
+ 642 487 372
+ 94 619 295
+ 734 243 141
+ 220 141 515
+ 198 824 745
+ 210 787 964
+ 213 627 601
+ 918 4 447
+ 805 630 802
+ 711 237 987
+ 938 552 388
+ 643 405 779
+ 803 747 525
+ 917 832 631
+ 899 292 843
+ 81 206 445
+ 141 874 465
+ 177 974 54
+ 520 725 814
+ 271 958 554
+ 779 579 264
+ 358 18 257
+ 978 77 270
+ 984 88 131
+ 475 702 940
+ 183 756 160
+ 383 941 820
+ 806 142 646
+ 793 275 804
+ 53 272 368
+ 942 821 785
+ 863 830 902
+ 219 52 199
+ 473 479 351
+ 860 522 361
+ 890 240 216
+ 94 756 407
+ 310 189 468
+ 234 909 178
+ 889 667 756
+ 429 485 730
+ 825 405 30
+ 943 806 253
+ 98 455 365
+ 998 454 290
+ 971 576 223
+ 64 429 273
+ 945 779 63
+ 352 960 59
+ 672 948 577
+ 782 43 567
+ 460 315 719
+ 825 604 183
+ 453 442 788
+ 694 632 334
+ 569 619 317
+ 337 49 17
+ 878 468 660
+ 393 598 717
+ 550 827 159
+ 540 362 346
+ 66 713 380
+ 491 477 44
+ 411 114 320
+ 554 96 250
+ 306 67 196
+ 769 553 333
+ 762 436 382
+ 278 322 153
+ 894 603 334
+ 539 441 844
+ 486 162 927
+ 197 9 218
+ 94 221 804
+ 250 220 913
+ 557 626 486
+ 562 705 630
+ 968 922 285
+ 518 36 468
+ 18 608 83
+ 512 611 530
+ 534 37 65
+ 621 136 90
+ 239 113 139
+ 371 640 956
+ 629 54 959
+ 531 620 338
+ 682 499 810
+ 798 170 968
+ 187 640 645
+ 660 535 332
+ 663 530 314
+ 64 26 65
+ 55 285 488
+ 620 288 52
+ 642 474 450
+ 455 9 962
+ 51 760 489
+ 426 760 833
+ 304 783 772
+ 498 765 695
+ 635 53 126
+ 44 430 774
+ 979 943 838
+ 962 892 64
+ 494 709 614
+ 7 695 120
+ 503 114 606
+ 362 340 689
+ 509 367 389
+ 673 410 664
+ 773 262 558
+ 897 958 245
+ 140 773 483
+ 965 468 584
+ 546 209 668
+ 856 381 184
+ 274 237 762
+ 888 677 906
+ 871 516 405
+ 102 529 912
+ 285 724 885
+ 352 501 53
+ 774 139 245
+ 380 309 594
+ 813 185 765
+ 530 645 965
+ 958 618 120
+ 851 202 957
+ 737 476 131
+ 595 546 108
+ 716 113 66
+ 327 215 318
+ 397 343 390
+ 351 143 103
+ 138 91 31
+ 108 224 919
+ 230 276 896
+ 426 975 177
+ 327 975 918
+ 238 365 764
+ 328 799 775
+ 590 906 967
+ 578 460 338
+ 507 619 647
+ 711 617 867
+ 933 478 734
+ 820 760 721
+ 199 711 824
+ 983 214 228
+ 382 150 648
+ 415 782 242
+ 615 754 445
+ 693 689 590
+ 382 784 482
+ 997 181 322
+ 682 241 172
+ 587 302 252
+ 184 135 254
+ 574 104 549
+ 88 738 796
+ 486 715 861
+ 62 491 815
+ 463 434 569
+ 519 622 310
+ 199 443 782
+ 572 657 85
+ 763 517 844
+ 750 175 835
+ 228 269 710
+ 611 316 551
+ 883 546 296
+ 169 693 18
+ 992 743 316
+ 263 529 529
+ 705 570 4
+ 918 706 527
+ 609 285 971
+ 260 533 112
+ 711 486 904
+ 820 40 472
+ 997 301 129
+ 257 288 343
+ 635 439 375
+ 560 381 417
+ 773 105 145
+ 58 963 267
+ 976 742 424
+ 994 441 384
+ 389 770 514
+ 782 463 335
+ 919 727 276
+ 780 794 372
+ 326 180 590
+ 918 946 257
+ 889 842 181
+ 507 61 464
+ 762 835 443
+ 827 607 982
+ 174 875 544
+ 934 885 589
+ 32 343 757
+ 987 826 257
+ 981 782 844
+ 446 291 397
+ 443 800 421
+ 165 668 539
+ 410 373 487
+ 422 803 881
+ 546 998 953
+ 291 607 160
+ 919 894 62
+ 842 718 117
+ 110 816 582
+ 470 836 596
+ 575 687 35
+ 37 835 374
+ 90 954 354
+ 101 141 407
+ 174 398 499
+ 173 737 964
+ 4 365 950
+ 946 616 634
+ 906 904 619
+ 40 789 16
+ 788 769 76
+ 737 867 88
+ 565 812 31
+ 508 380 201
+ 34 935 339
+ 500 862 326
+ 431 181 475
+ 403 346 585
+ 88 530 708
+ 731 137 781
+ 715 563 272
+ 817 659 932
+ 396 368 360
+ 162 683 376
+ 278 620 39
+ 525 910 371
+ 688 524 149
+ 488 998 279
+ 286 392 523
+ 325 144 406
+ 79 532 419
+ 540 460 465
+ 222 832 416
+ 517 507 46
+ 87 744 183
+ 382 819 701
+ 306 763 647
+ 744 74 913
+ 62 813 849
+ 691 874 775
+ 291 422 314
+ 432 630 809
+ 611 510 566
+ 583 745 289
+ 397 19 727
+ 188 766 442
+ 96 108 329
+ 963 719 598
+ 963 764 469
+ 444 636 731
+ 792 636 422
+ 993 1 416
+ 518 300 532
+ 298 312 736
+ 316 111 463
+ 825 569 35
+ 858 591 584
+ 809 84 607
+ 681 610 740
+ 383 279 210
+ 851 733 615
+ 287 959 160
+ 856 851 171
+ 606 115 211
+ 310 541 845
+ 506 119 319
+ 665 471 562
+ 382 885 798
+ 440 29 595
+ 113 903 475
+ 257 773 846
+ 306 741 776
+ 97 804 76
+ 489 332 423
+ 466 632 613
+ 86 739 481
+ 199 846 712
+ 62 282 809
+ 155 681 142
+ 705 525 270
+ 159 800 117
+ 612 664 316
+ 505 616 837
+ 578 839 770
+ 942 535 122
+ 542 781 512
+ 552 22 475
+ 760 791 97
+ 432 626 837
+ 26 616 336
+ 412 316 702
+ 108 232 242
+ 158 311 449
+ 60 141 325
+ 58 1 714
+ 532 977 123
+ 531 978 598
+ 679 899 57
+ 645 523 54
+ 167 892 14
+ 164 574 492
+ 105 37 491
+ 132 555 485
+ 600 879 508
+ 608 843 222
+ 270 255 398
+ 232 960 281
+ 241 995 436
+ 113 674 411
+ 381 567 5
+ 697 450 966
+ 726 857 969
+ 722 686 965
+ 543 20 453
+ 955 689 554
+ 858 161 923
+ 140 979 953
+ 786 836 237
+ 200 322 875
+ 311 623 398
+ 510 814 945
+ 67 387 825
+ 621 620 740
+ 630 842 163
+ 545 75 373
+ 506 531 501
+ 301 571 357
+ 746 491 253
+ 37 29 748
+ 769 507 754
+ 69 886 861
+ 423 629 856
+ 380 723 83
+ 875 647 657
+ 144 696 580
+ 896 49 629
+ 275 598 374
+ 118 636 279
+ 277 80 529
+ 623 130 493
+ 368 712 621
+ 833 730 512
+ 59 767 829
+ 105 933 731
+ 54 240 108
+ 803 235 992
+ 837 726 881
+ 426 855 450
+ 636 730 731
+ 840 561 977
+ 996 229 670
+ 508 234 186
+ 529 108 917
+ 373 337 795
+ 681 35 565
+ 790 251 152
+ 301 235 599
+ 875 416 653
+ 277 338 990
+ 800 207 595
+ 954 650 896
+ 931 667 706
+ 84 851 822
+ 254 778 816
+ 316 141 732
+ 233 759 239
+ 546 473 315
+ 69 15 96
+ 513 470 320
+ 460 188 729
+ 429 950 288
+ 709 807 790
+ 456 161 570
+ 269 718 339
+ 213 628 602
+ 155 367 686
+ 176 418 568
+ 66 251 723
+ 959 696 536
+ 794 279 885
+ 315 527 993
+ 603 853 868
+ 727 747 994
+ 411 287 193
+ 528 763 559
+ 803 149 739
+ 542 883 696
+ 275 676 183
+ 411 317 161
+ 349 875 35
+ 39 729 221
+ 256 831 216
+ 247 238 176
+ 399 59 306
+ 409 445 550
+ 9 387 253
+ 613 204 474
+ 81 868 944
+ 589 912 735
+ 319 264 83
+ 984 704 614
+ 778 614 532
+ 699 762 556
+ 680 250 507
+ 504 581 647
+ 160 351 295
+ 513 739 413
+ 651 915 651
+ 878 218 499
+ 872 990 503
+ 38 886 12
+ 218 201 415
+ 240 250 504
+ 265 448 382
+ 402 876 126
+ 488 950 649
+ 189 210 597
+ 24 850 758
+ 30 451 347
+ 5 437 723
+ 634 310 546
+ 801 179 411
+ 679 338 852
+ 385 32 933
+ 406 531 554
+ 88 516 871
+ 860 486 834
+ 467 535 849
+ 419 820 785
+ 206 649 526
+ 244 499 714
+ 80 774 678
+ 336 149 612
+ 310 175 656
+ 150 221 791
+ 159 806 701
+ 336 465 530
+ 376 819 272
+ 533 472 421
+ 82 124 909
+ 523 561 539
+ 844 811 576
+ 439 612 587
+ 782 457 686
+ 152 51 837
+ 413 573 855
+ 403 608 26
+ 893 819 910
+ 361 499 657
+ 677 937 617
+ 428 6 343
+ 310 38 431
+ 474 35 420
+ 574 256 221
+ 700 907 515
+ 149 685 478
+ 206 325 720
+ 114 51 67
+ 320 338 686
+ 293 59 527
+ 147 756 986
+ 250 697 573
+ 968 194 545
+ 542 480 72
+ 454 574 619
+ 473 55 592
+ 475 339 889
+ 884 313 993
+ 125 127 742
+ 591 514 585
+ 543 583 282
+ 264 580 390
+ 839 487 781
+ 902 664 868
+ 334 459 819
+ 107 20 211
+ 368 479 775
+ 683 691 273
+ 681 336 630
+ 22 978 536
+ 926 828 708
+ 210 319 723
+ 787 689 866
+ 854 633 856
+ 960 494 866
+ 122 687 596
+ 918 705 539
+ 84 564 791
+ 876 138 949
+ 836 1 500
+ 718 308 466
+ 228 311 271
+ 421 998 433
+ 622 772 174
+ 875 720 432
+ 680 687 509
+ 215 95 623
+ 674 732 166
+ 198 174 645
+ 721 839 390
+ 617 896 448
+ 73 331 155
+ 789 134 431
+ 853 376 400
+ 82 862 411
+ 779 362 70
+ 750 777 349
+ 674 604 224
+ 812 731 446
+ 280 546 336
+ 922 781 619
+ 196 892 876
+ 941 361 479
+ 344 988 873
+ 499 92 795
+ 287 913 546
+ 625 167 604
+ 617 1 399
+ 154 166 720
+ 328 323 111
+ 713 619 530
+ 606 756 580
+ 194 247 935
+ 149 65 64
+ 55 287 902
+ 870 866 127
+ 478 679 587
+ 900 459 565
+ 563 787 743
+ 962 798 769
+ 669 39 525
+ 745 691 317
+ 484 123 93
+ 500 598 348
+ 159 535 681
+ 618 176 877
+ 723 373 464
+ 304 184 131
+ 542 209 654
+ 716 47 647
+ 976 537 771
+ 914 606 568
+ 241 250 481
+ 616 640 660
+ 744 187 843
+ 303 617 927
+ 369 525 773
+ 754 697 360
+ 595 560 605
+ 562 589 610
+ 799 497 655
+ 823 553 532
+ 937 502 449
+ 976 941 158
+ 194 720 347
+ 474 694 822
+ 528 184 272
+ 922 698 568
+ 415 889 638
+ 169 822 65
+ 547 281 663
+ 582 167 110
+ 365 56 914
+ 431 162 923
+ 473 812 578
+ 572 890 386
+ 164 119 308
+ 604 946 496
+ 327 142 72
+ 641 916 472
+ 743 663 228
+ 107 446 345
+ 823 486 152
+ 997 47 968
+ 565 155 631
+ 438 205 416
+ 271 163 875
+ 123 393 111
+ 169 412 854
+ 615 683 659
+ 592 362 9
+ 99 895 668
+ 834 205 172
+ 359 355 550
+ 499 149 389
+ 755 298 916
+ 475 706 807
+ 829 425 118
+ 43 527 479
+ 159 473 874
+ 151 326 992
+ 970 660 509
+ 837 930 35
+ 164 345 506
+ 209 879 487
+ 97 157 503
+ 289 755 793
+ 624 897 293
+ 382 134 451
+ 257 917 339
+ 110 168 85
+ 470 583 139
+ 486 613 120
+ 584 747 795
+ 959 699 339
+ 866 384 672
+ 157 639 464
+ 939 485 409
+ 947 441 131
+ 179 953 581
+ 735 587 605
+ 834 582 36
+ 304 422 707
+ 195 348 347
+ 163 521 486
+ 948 471 675
+ 915 453 406
+ 40 345 635
+ 81 124 115
+ 127 105 127
+ 50 32 10
+ 221 399 397
+ 487 676 412
+ 574 607 450
+ 268 625 323
+ 843 858 145
+ 706 286 218
+ 822 168 254
+ 950 708 944
+ 572 640 775
+ 958 563 909
+ 996 154 918
+ 378 626 564
+ 335 823 339
+ 499 810 270
+ 294 22 98
+ 987 959 591
+ 101 899 442
+ 931 409 576
+ 542 102 655
+ 404 980 398
+ 759 990 381
+ 692 990 750
+ 752 93 149
+ 278 973 883
+ 621 459 232
+ 398 261 626
+ 221 212 744
+ 790 241 352
+ 802 218 317
+ 443 294 244
+ 393 131 941
+ 466 378 885
+ 516 419 240
+ 799 748 407
+ 468 502 386
+ 829 329 766
+ 432 376 408
+ 681 88 198
+ 553 351 489
+ 234 717 59
+ 332 525 675
+ 437 691 723
+ 441 834 433
+ 616 144 274
+ 966 911 650
+ 254 274 782
+ 346 714 856
+ 330 696 171
+ 394 407 298
+ 897 553 867
+ 755 503 956
+ 253 840 382
+ 923 195 262
+ 918 735 483
+ 55 703 227
+ 768 759 225
+ 825 238 14
+ 7 479 978
+ 211 603 957
+ 216 866 94
+ 112 698 60
+ 847 631 307
+ 940 164 253
+ 406 133 14
+ 380 816 425
+ 147 873 429
+ 698 987 98
+ 534 823 691
+ 197 690 754
+ 979 39 468
+ 928 73 531
+ 119 66 920
+ 982 810 569
+ 476 534 397
+ 931 366 182
+ 783 104 732
+ 131 32 619
+ 784 136 530
+ 16 933 484
+ 995 987 739
+ 985 88 977
+ 43 919 914
+ 540 399 915
+ 566 859 257
+ 639 419 73
+ 727 118 865
+ 477 370 834
+ 293 434 155
+ 422 557 603
+ 203 243 754
+ 373 15 748
+ 466 574 807
+ 282 576 70
+ 275 365 608
+ 987 644 648
+ 711 629 717
+ 420 410 696
+ 252 417 874
+ 642 26 202
+ 223 23 531
+ 545 580 675
+ 565 600 521
+ 130 745 142
+ 264 377 397
+ 300 618 253
+ 683 331 279
+ 440 826 275
+ 835 785 266
+ 592 264 590
+ 257 255 173
+ 532 23 620
+ 571 749 434
+ 988 552 492
+ 566 766 234
+ 617 818 776
+ 45 113 882
+ 579 793 114
+ 971 243 608
+ 979 241 241
+ 130 83 634
+ 91 361 5
+ 311 107 501
+ 377 388 496
+ 727 849 317
+ 323 702 256
+ 804 254 189
+ 70 11 246
+ 752 425 785
+ 799 413 882
+ 917 133 695
+ 959 49 902
+ 420 121 412
+ 177 170 158
+ 828 734 135
+ 880 875 75
+ 824 556 960
+ 857 689 960
+ 74 951 2
+ 246 687 756
+ 311 93 487
+ 209 626 886
+ 17 545 566
+ 963 252 283
+ 947 493 805
+ 185 493 462
+ 728 365 885
+ 808 214 528
+ 582 780 100
+ 30 254 654
+ 596 706 553
+ 713 968 803
+ 123 270 839
+ 792 778 475
+ 442 95 682
+ 931 212 678
+ 781 140 439
+ 651 645 978
+ 137 829 286
+ 593 503 895
+ 642 215 144
+ 687 122 934
+ 84 240 919
+ 656 515 774
+ 51 799 273
+ 636 324 924
+ 213 161 309
+ 509 157 458
+ 582 1 727
+ 716 269 819
+ 978 343 303
+ 828 264 708
+ 108 620 190
+ 12 12 634
+ 103 615 579
+ 364 286 660
+ 809 714 656
+ 729 504 10
+ 994 366 341
+ 433 796 77
+ 663 462 353
+ 776 687 758
+ 751 495 651
+ 33 751 753
+ 349 919 228
+ 204 799 584
+ 335 156 563
+ 725 191 535
+ 731 676 524
+ 455 571 10
+ 899 379 689
+ 773 641 812
+ 324 761 421
+ 354 557 897
+ 571 740 161
+ 407 271 856
+ 886 393 428
+ 286 870 218
+ 950 819 347
+ 331 847 858
+ 498 471 689
+ 357 378 775
+ 890 503 514
+ 201 863 428
+ 721 737 796
+ 636 178 974
+ 14 387 936
+ 622 424 144
+ 82 201 727
+ 127 164 779
+ 173 319 326
+ 195 748 641
+ 469 512 510
+ 626 949 405
+ 552 542 251
+ 192 204 382
+ 655 558 631
+ 970 519 3
+ 918 701 399
+ 56 543 403
+ 524 848 641
+ 620 431 539
+ 604 473 824
+ 369 105 464
+ 575 957 429
+ 859 978 199
+ 712 381 199
+ 941 305 738
+ 892 663 937
+ 653 963 365
+ 70 331 508
+ 620 923 682
+ 739 122 350
+ 288 418 768
+ 733 326 520
+ 694 472 793
+ 725 415 739
+ 895 398 201
+ 500 157 168
+ 727 814 354
+ 807 726 340
+ 431 329 212
+ 635 374 403
+ 677 78 347
+ 386 559 505
+ 385 361 161
+ 262 494 621
+ 481 237 767
+ 318 966 640
+ 723 732 546
+ 911 652 823
+ 958 502 677
+ 718 258 834
+ 98 666 506
+ 929 41 933
+ 869 637 605
+ 585 156 335
+ 490 316 149
+ 436 339 323
+ 596 948 224
+ 275 433 241
+ 545 890 155
+ 601 413 676
+ 893 401 673
+ 694 171 403
+ 211 110 482
+ 267 61 541
+ 206 124 256
+ 189 353 308
+ 351 880 70
+ 237 677 380
+ 759 754 388
+ 465 99 862
+ 852 787 925
+ 758 890 804
+ 252 817 784
+ 773 129 860
+ 954 102 872
+ 743 396 730
+ 500 304 173
+ 492 399 527
+ 413 465 813
+ 670 837 933
+ 897 424 430
+ 782 404 14
+ 151 24 418
+ 897 260 306
+ 811 287 386
+ 440 93 449
+ 229 185 582
+ 136 63 678
+ 211 250 940
+ 184 400 209
+ 122 383 238
+ 143 386 111
+ 320 194 415
+ 925 790 501
+ 924 596 614
+ 606 733 277
+ 886 116 194
+ 278 627 189
+ 225 536 981
+ 487 538 584
+ 539 2 793
+ 219 456 57
+ 341 424 941
+ 199 482 921
+ 231 241 588
+ 711 740 334
+ 596 554 323
+ 917 164 629
+ 19 138 756
+ 939 70 225
+ 536 432 401
+ 137 614 14
+ 593 818 402
+ 871 280 515
+ 268 259 326
+ 900 97 376
+ 68 699 461
+ 546 810 400
+ 540 697 676
+ 591 125 751
+ 159 719 919
+ 605 763 898
+ 171 845 459
+ 115 289 376
+ 265 636 317
+ 646 225 84
+ 663 755 89
+ 192 828 12
+ 316 523 822
+ 310 933 784
+ 44 721 873
+ 893 873 461
+ 898 15 548
+ 96 861 726
+ 9 837 398
+ 238 404 29
+ 227 845 428
+ 770 764 472
+ 960 747 784
+ 990 281 811
+ 59 597 111
+ 930 799 729
+ 930 882 758
+ 459 961 116
+ 484 83 914
+ 83 969 994
+ 828 423 132
+ 346 541 246
+ 783 484 303
+ 983 7 921
+ 216 208 905
+ 802 216 54
+ 6 121 306
+ 609 36 749
+ 608 84 626
+ 97 705 89
+ 200 688 878
+ 242 314 802
+ 294 66 338
+ 768 417 272
+ 785 351 266
+ 58 505 668
+ 791 291 679
+ 783 694 43
+ 794 468 355
+ 777 796 171
+ 378 784 426
+ 224 510 840
+ 557 606 708
+ 513 127 189
+ 231 976 517
+ 772 37 433
+ 684 973 324
+ 70 661 83
+ 914 136 702
+ 917 630 710
+ 826 894 84
+ 373 416 248
+ 551 924 226
+ 357 646 374
+ 890 491 246
+ 938 293 519
+ 66 42 704
+ 537 60 374
+ 508 56 405
+ 437 751 653
+ 681 718 160
+ 683 293 800
+ 569 288 878
+ 692 206 611
+ 173 157 399
+ 201 492 645
+ 98 132 329
+ 234 612 711
+ 296 54 975
+ 651 219 923
+ 527 177 138
+ 585 598 302
+ 552 653 474
+ 54 288 358
+ 828 631 279
+ 854 642 746
+ 80 52 645
+ 386 346 181
+ 488 7 569
+ 168 351 533
+ 906 186 681
+ 833 404 191
+ 863 297 526
+ 451 555 808
+ 336 544 155
+ 253 211 838
+ 759 819 238
+ 921 343 761
+ 264 632 690
+ 165 424 159
+ 121 481 361
+ 181 409 439
+ 94 972 995
+ 696 904 722
+ 613 238 422
+ 190 281 334
+ 385 127 129
+ 300 364 234
+ 479 768 937
+ 883 654 35
+ 979 679 959
+ 244 51 788
+ 275 613 804
+ 143 575 210
+ 160 168 608
+ 330 471 651
+ 407 594 410
+ 723 576 943
+ 268 912 361
+ 692 442 760
+ 443 288 20
+ 382 610 556
+ 62 694 568
+ 322 257 214
+ 253 458 861
+ 260 213 829
+ 37 137 420
+ 668 220 104
+ 673 150 435
+ 551 466 897
+ 390 729 999
+ 423 963 763
+ 837 36 295
+ 854 726 495
+ 16 728 389
+ 735 246 510
+ 218 136 617
+ 604 197 140
+ 113 355 499
+ 631 902 488
+ 689 898 212
+ 780 826 901
+ 556 205 657
+ 855 661 288
+ 141 34 480
+ 27 23 194
+ 115 53 393
+ 333 287 700
+ 68 300 671
+ 394 589 28
+ 572 248 771
+ 454 118 797
+ 526 141 300
+ 785 377 504
+ 886 723 105
+ 541 712 470
+ 156 128 932
+ 479 85 989
+ 381 207 162
+ 813 839 544
+ 143 783 541
+ 916 361 24
+ 878 133 886
+ 986 750 335
+ 122 643 864
+ 395 460 591
+ 387 896 627
+ 117 455 109
+ 2 14 569
+ 873 364 215
+ 875 350 554
+ 70 878 940
+ 234 846 82
+ 256 279 901
+ 693 990 473
+ 951 866 824
+ 923 408 891
+ 36 5 531
+ 954 654 266
+ 921 652 434
+ 561 701 427
+ 232 764 365
+ 330 331 73
+ 46 813 6
+ 380 698 297
+ 396 221 289
+ 135 867 633
+ 814 649 286
+ 797 918 827
+ 705 58 338
+ 6 305 310
+ 701 352 28
+ 903 97 825
+ 693 126 794
+ 438 144 592
+ 367 932 400
+ 320 820 264
+ 687 210 652
+ 682 84 566
+ 671 604 816
+ 529 646 267
+ 795 654 114
+ 955 426 118
+ 249 759 102
+ 343 581 267
+ 341 619 107
+ 479 57 341
+ 683 32 870
+ 630 609 210
+ 361 643 803
+ 506 856 406
+ 580 562 359
+ 312 433 154
+ 750 379 920
+ 448 520 312
+ 733 259 899
+ 33 786 319
+ 579 669 90
+ 595 769 242
+ 160 985 236
+ 654 903 946
+ 635 99 802
+ 75 158 437
+ 467 382 289
+ 406 542 548
+ 684 417 794
+ 729 105 122
+ 44 485 689
+ 737 15 713
+ 970 391 17
+ 373 384 729
+ 336 1 118
+ 814 807 759
+ 965 808 828
+ 179 181 834
+ 242 94 838
+ 188 183 82
+ 691 402 618
+ 984 43 561
+ 330 447 872
+ 553 581 30
+ 884 393 836
+ 431 298 837
+ 278 389 690
+ 976 587 803
+ 722 220 538
+ 548 208 107
+ 629 414 729
+ 543 584 672
+ 512 431 954
+ 475 367 959
+ 226 306 9
+ 824 774 668
+ 188 22 870
+ 722 764 300
+ 647 803 256
+ 410 972 21
+ 436 536 278
+ 995 577 453
+ 670 439 224
+ 434 488 572
+ 82 317 498
+ 559 823 662
+ 499 614 196
+ 944 14 432
+ 618 866 652
+ 467 872 289
+ 471 722 189
+ 923 756 17
+ 790 409 195
+ 511 500 545
+ 667 283 758
+ 271 373 283
+ 573 686 490
+ 659 706 560
+ 770 247 633
+ 424 169 895
+ 47 349 411
+ 380 235 805
+ 384 546 148
+ 747 870 831
+ 754 421 910
+ 937 15 433
+ 188 760 806
+ 872 748 418
+ 718 556 510
+ 165 590 486
+ 798 40 177
+ 349 923 530
+ 795 690 746
+ 550 671 360
+ 824 442 775
+ 331 686 152
+ 570 270 926
+ 860 64 383
+ 408 464 170
+ 758 440 349
+ 773 434 699
+ 780 563 352
+ 18 644 621
+ 432 663 188
+ 420 887 956
+ 237 586 788
+ 319 526 586
+ 544 647 115
+ 628 235 511
+ 666 408 33
+ 670 459 697
+ 48 189 692
+ 837 708 428
+ 462 652 632
+ 426 106 457
+ 730 744 195
+ 700 816 769
+ 383 480 923
+ 601 612 910
+ 559 953 779
+ 533 937 240
+ 464 123 344
+ 579 82 76
+ 179 188 373
+ 1 641 56
+ 688 698 50
+ 688 160 4
+ 790 364 767
+ 202 70 137
+ 914 420 674
+ 961 657 851
+ 578 708 875
+ 503 94 776
+ 221 143 356
+ 34 126 403
+ 234 31 78
+ 721 949 330
+ 675 191 460
+ 80 957 651
+ 690 580 824
+ 461 73 802
+ 725 606 51
+ 183 857 521
+ 708 800 482
+ 644 111 37
+ 769 778 869
+ 883 693 909
+ 549 714 43
+ 273 246 599
+ 637 309 675
+ 451 195 552
+ 681 408 126
+ 422 465 52
+ 743 235 144
+ 248 586 312
+ 42 398 313
+ 222 335 21
+ 528 312 738
+ 856 312 132
+ 915 79 610
+ 550 605 186
+ 566 815 698
+ 127 250 717
+ 532 129 775
+ 604 132 549
+ 134 44 247
+ 521 815 470
+ 370 853 515
+ 795 187 851
+ 963 295 50
+ 757 228 169
+ 706 303 120
+ 416 133 309
+ 956 63 11
+ 751 162 301
+ 387 632 29
+ 257 383 994
+ 215 247 994
+ 529 606 963
+ 770 305 756
+ 721 791 971
+ 558 531 675
+ 253 477 918
+ 470 52 615
+ 256 335 24
+ 301 523 651
+ 316 702 637
+ 321 721 32
+ 591 730 179
+ 341 364 146
+ 673 120 501
+ 31 183 207
+ 641 116 463
+ 221 54 775
+ 262 458 669
+ 139 486 904
+ 736 260 139
+ 406 359 663
+ 434 563 753
+ 981 6 215
+ 423 320 358
+ 719 319 415
+ 315 375 320
+ 7 637 423
+ 314 365 175
+ 199 687 754
+ 174 546 1
+ 29 526 754
+ 153 402 251
+ 787 565 919
+ 820 239 876
+ 994 614 47
+ 958 816 288
+ 244 750 275
+ 248 890 694
+ 628 194 414
+ 774 958 466
+ 181 34 442
+ 569 371 939
+ 500 347 740
+ 745 123 467
+ 614 662 119
+ 201 690 352
+ 596 974 215
+ 508 921 240
+ 405 947 317
+ 402 372 733
+ 298 41 357
+ 135 339 759
+ 544 683 690
+ 584 1 893
+ 215 680 501
+ 191 453 649
+ 952 84 727
+ 815 494 293
+ 163 168 46
+ 136 119 441
+ 185 112 474
+ 877 830 354
+ 497 242 226
+ 484 714 178
+ 854 570 402
+ 873 120 432
+ 30 613 50
+ 365 529 624
+ 969 332 586
+ 636 617 153
+ 588 669 314
+ 12 52 628
+ 584 704 642
+ 95 199 69
+ 979 486 705
+ 953 391 698
+ 698 471 333
+ 302 466 64
+ 678 19 376
+ 353 860 905
+ 236 113 797
+ 400 879 962
+ 341 805 493
+ 661 506 196
+ 736 357 644
+ 943 352 365
+ 484 756 282
+ 491 943 262
+ 765 494 729
+ 321 208 986
+ 621 346 290
+ 258 706 386
+ 179 452 276
+ 433 583 153
+ 708 2 212
+ 193 151 320
+ 647 149 299
+ 335 951 831
+ 661 787 792
+ 818 742 477
+ 799 964 157
+ 726 780 172
+ 740 225 24
+ 428 39 263
+ 388 901 506
+ 97 940 413
+ 41 454 826
+ 324 453 443
+ 346 76 938
+ 463 595 751
+ 854 948 454
+ 451 902 507
+ 722 961 130
+ 695 529 425
+ 59 591 467
+ 559 623 222
+ 991 194 196
+ 749 793 245
+ 474 327 247
+ 346 2 277
+ 643 328 135
+ 785 264 751
+ 35 537 887
+ 811 584 685
+ 475 903 748
+ 471 115 698
+ 7 945 449
+ 464 880 227
+ 287 868 878
+ 564 11 850
+ 221 623 475
+ 314 325 553
+ 209 865 621
+ 39 655 236
+ 95 296 235
+ 124 920 21
+ 439 473 902
+ 334 375 792
+ 315 116 768
+ 267 736 95
+ 703 606 595
+ 505 886 514
+ 114 168 52
+ 301 584 495
+ 200 709 527
+ 164 422 554
+ 246 546 460
+ 377 141 223
+ 286 323 354
+ 810 240 90
+ 920 450 425
+ 277 8 570
+ 28 649 50
+ 295 650 534
+ 690 187 665
+ 674 184 483
+ 68 139 376
+ 570 430 500
+ 590 422 543
+ 304 68 43
+ 422 666 163
+ 501 375 696
+ 81 621 813
+ 19 981 945
+ 410 83 941
+ 427 945 25
+ 283 408 825
+ 281 648 635
+ 294 678 615
+ 113 936 500
+ 554 772 314
+ 502 642 624
+ 262 318 699
+ 88 526 817
+ 242 468 161
+ 820 179 253
+ 580 62 531
+ 343 183 422
+ 430 161 485
+ 26 127 435
+ 442 32 517
+ 491 243 544
+ 552 680 310
+ 131 489 457
+ 697 162 526
+ 897 838 305
+ 695 748 335
+ 753 936 24
+ 46 681 637
+ 745 808 617
+ 318 251 171
+ 49 39 855
+ 359 284 725
+ 221 837 145
+ 581 821 444
+ 573 267 318
+ 706 969 583
+ 722 912 586
+ 680 86 869
+ 833 546 97
+ 865 507 481
+ 938 104 386
+ 941 217 265
+ 360 53 607
+ 634 197 476
+ 787 659 444
+ 368 163 783
+ 493 738 345
+ 182 539 52
+ 764 827 612
+ 699 493 663
+ 914 384 17
+ 495 546 260
+ 739 461 275
+ 386 91 394
+ 804 506 198
+ 780 421 269
+ 109 669 193
+ 457 298 349
+ 560 800 331
+ 282 153 637
+ 160 254 807
+ 434 204 476
+ 717 759 737
+ 629 785 65
+ 347 614 790
+ 270 663 647
+ 188 271 528
+ 277 929 591
+ 853 744 589
+ 704 881 761
+ 573 714 627
+ 541 689 287
+ 540 301 187
+ 670 397 368
+ 867 8 698
+ 869 146 802
+ 10 137 104
+ 164 575 450
+ 507 233 466
+ 548 425 46
+ 435 824 78
+ 334 951 34
+ 646 551 99
+ 60 829 569
+ 501 866 382
+ 440 327 222
+ 744 132 333
+ 800 983 126
+ 887 866 451
+ 28 599 39
+ 833 129 307
+ 804 519 319
+ 510 746 821
+ 639 209 561
+ 197 649 333
+ 638 644 361
+ 754 474 366
+ 193 219 106
+ 843 536 331
+ 483 634 611
+ 367 195 592
+ 753 71 115
+ 934 42 83
+ 337 75 85
+ 475 304 169
+ 672 143 211
+ 360 406 74
+ 370 119 111
+ 351 955 696
+ 543 849 785
+ 375 576 836
+ 288 316 239
+ 512 273 786
+ 721 407 82
+ 998 634 292
+ 449 399 284
+ 540 316 693
+ 430 68 984
+ 146 376 482
+ 785 134 643
+ 157 509 441
+ 808 615 552
+ 920 564 452
+ 407 341 441
+ 990 778 211
+ 822 325 925
+ 368 206 876
+ 491 153 126
+ 11 373 546
+ 854 752 143
+ 843 773 660
+ 777 472 964
+ 359 708 889
+ 575 941 882
+ 945 22 152
+ 968 237 115
+ 30 238 110
+ 101 504 412
+ 119 646 719
+ 28 190 336
+ 890 301 712
+ 11 657 782
+ 885 465 361
+ 424 669 645
+ 528 654 194
+ 894 252 667
+ 516 299 998
+ 370 837 976
+ 305 651 194
+ 701 447 175
+ 470 234 929
+ 752 606 965
+ 568 370 322
+ 226 592 281
+ 553 801 330
+ 576 228 623
+ 639 477 637
+ 252 664 998
+ 781 215 994
+ 446 698 25
+ 562 500 980
+ 702 444 299
+ 971 550 387
+ 754 562 439
+ 347 896 716
+ 242 861 596
+ 588 829 323
+ 464 211 949
+ 481 192 47
+ 598 98 963
+ 932 960 32
+ 933 482 893
+ 15 989 888
+ 866 735 629
+ 636 513 470
+ 280 528 944
+ 531 66 867
+ 284 735 865
+ 778 743 3
+ 458 131 262
+ 772 273 255
+ 942 278 50
+ 269 151 917
+ 502 4 883
+ 538 155 68
+ 929 850 21
+ 126 759 729
+ 869 689 711
+ 180 359 855
+ 299 68 975
+ 210 371 205
+ 477 183 827
+ 922 50 841
+ 665 154 312
+ 379 848 486
+ 450 835 743
+ 69 161 515
+ 680 535 83
+ 692 779 352
+ 818 554 389
+ 781 89 538
+ 746 218 209
+ 292 201 652
+ 417 375 393
+ 916 962 644
+ 518 923 561
+ 915 469 386
+ 142 460 454
+ 947 392 89
+ 144 840 866
+ 205 465 967
+ 209 657 650
+ 891 322 207
+ 800 522 907
+ 516 498 994
+ 185 806 804
+ 179 393 137
+ 316 765 892
+ 850 756 123
+ 494 783 627
+ 832 53 659
+ 93 949 602
+ 666 954 516
+ 592 11 210
+ 223 4 389
+ 221 280 388
+ 100 279 50
+ 380 589 345
+ 385 238 382
+ 205 506 359
+ 98 280 652
+ 396 371 290
+ 314 477 454
+ 368 692 564
+ 48 263 586
+ 356 902 922
diff --git a/2016/aoc3/src/main.rs b/2016/aoc3/src/main.rs
new file mode 100644
index 0000000..678933f
--- /dev/null
+++ b/2016/aoc3/src/main.rs
@@ -0,0 +1,64 @@
+use std::io::BufReader;
+use std::io::prelude::*;
+use std::fs::File;
+
+
+struct Triangle {
+ l1: i32,
+ l2: i32,
+ l3: i32
+}
+
+impl Triangle {
+ fn is_valid(&self) -> bool {
+ (self.l1 + self.l2) > self.l3 &&
+ (self.l2 + self.l3) > self.l1 &&
+ (self.l3 + self.l1) > self.l2
+
+ }
+}
+
+fn main() {
+ let len = read_file().iter().filter(|tri| tri.is_valid()).count();
+ println!("{} valid triangles", len);
+}
+
+fn read_file() -> Vec<Triangle> {
+ let file = BufReader::new(File::open("input.txt").unwrap());
+ let mut lines = file.lines()
+ .map(|line| line.unwrap().trim().to_string())
+ .filter(|line| line.len() > 0)
+ .peekable();
+
+ let mut results = Vec::new();
+ while lines.peek().is_some() {
+ let (t11, t21, t31) = parse_line(lines.next().unwrap());
+ let (t12, t22, t32) = parse_line(lines.next().unwrap());
+ let (t13, t23, t33) = parse_line(lines.next().unwrap());
+
+ results.push(Triangle {
+ l1: t11,
+ l2: t12,
+ l3: t13
+ });
+ results.push(Triangle {
+ l1: t21,
+ l2: t22,
+ l3: t23
+ });
+ results.push(Triangle {
+ l1: t31,
+ l2: t32,
+ l3: t33
+ });
+ }
+ results
+}
+
+fn parse_line(line: String) -> (i32, i32, i32) {
+ let mut separated = line.split_whitespace();
+ (separated.next().unwrap().trim().parse().unwrap(),
+ separated.next().unwrap().trim().parse().unwrap(),
+ separated.next().unwrap().trim().parse().unwrap())
+}
+
diff --git a/2016/aoc4/Cargo.lock b/2016/aoc4/Cargo.lock
new file mode 100644
index 0000000..df3af88
--- /dev/null
+++ b/2016/aoc4/Cargo.lock
@@ -0,0 +1,4 @@
+[root]
+name = "aoc4"
+version = "0.1.0"
+
diff --git a/2016/aoc4/Cargo.toml b/2016/aoc4/Cargo.toml
new file mode 100644
index 0000000..7d02c6d
--- /dev/null
+++ b/2016/aoc4/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "aoc4"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@gmail.com>"]
+
+[dependencies]
diff --git a/2016/aoc4/input.txt b/2016/aoc4/input.txt
new file mode 100644
index 0000000..c23ffc2
--- /dev/null
+++ b/2016/aoc4/input.txt
@@ -0,0 +1,1091 @@
+gbc-frperg-pubpbyngr-znantrzrag-377[rgbnp]
+nij-mywlyn-wlsiayhcw-jfumncw-alumm-mbcjjcha-422[mcjwa]
+pualyuhapvuhs-ibuuf-zhslz-227[uhalp]
+xlrypetn-prr-lylwjdtd-665[dzoya]
+zilqwikbqdm-rmttgjmiv-mvoqvmmzqvo-278[mqvio]
+rgllk-bxmefuo-sdmee-geqd-fqefuzs-274[efdgl]
+ugfkmewj-yjsvw-wyy-lwuzfgdgyq-814[wygfj]
+lnkfaypeha-xwogap-bejwjyejc-524[uqzms]
+laffe-sorozgxe-mxgjk-jek-xkykgxin-254[kxegf]
+ytu-xjhwjy-hfsid-htfynsl-qtlnxynhx-411[hyntx]
+vetllbybxw-xzz-mktbgbgz-709[kblty]
+ixeumktoi-kmm-giwaoyozout-176[oimkt]
+frqvxphu-judgh-udpsdjlqj-udeelw-uhvhdufk-647[ntbsq]
+ixccb-hjj-uhvhdufk-725[hcjub]
+sehheiylu-isqludwuh-xkdj-qsgkyiyjyed-634[ydehi]
+yhwooebeaz-acc-ajcejaanejc-316[acejo]
+qyujihctyx-vumeyn-zchuhwcha-318[hcuya]
+xtwtelcj-rclop-clmmte-nzyeltyxpye-171[eltcy]
+pinovwgz-mvwwdo-yzkgjthzio-941[owzgi]
+htwwtxnaj-xhfajsljw-mzsy-hzxytrjw-xjwanhj-229[jwhxa]
+amlqskcp-epybc-cee-pcyaosgqgrgml-652[cegpa]
+fab-eqodqf-omzpk-emxqe-560[eqfmo]
+bnmrtldq-fqzcd-idkkxadzm-qdrdzqbg-365[dqzbk]
+ovbunmneqbhf-wryylorna-qrirybczrag-559[rbnya]
+ynukcajey-xwogap-iwjwcaiajp-966[jydme]
+dkqjcbctfqwu-uecxgpigt-jwpv-fgrctvogpv-128[cgptv]
+ugfkmewj-yjsvw-tmffq-vwhdgqewfl-606[zfmlc]
+htqtwkzq-idj-ijxnls-723[rwmzt]
+kgjgrypw-epybc-aylbw-amyrgle-amlryglkclr-184[lygra]
+jxdkbqfz-yrkkv-bkdfkbbofkd-705[csxut]
+ujqgywfau-uzgugdslw-sfsdqkak-684[duboh]
+rwcnawjcrxwju-mhn-nwprwnnarwp-823[wnrac]
+eqttqukxg-rncuvke-itcuu-ujkrrkpi-102[ukrtc]
+jvuzbtly-nyhkl-ibuuf-dvyrzovw-201[uvybl]
+tvsnigxmpi-fewoix-wxsveki-750[ixesv]
+rtqlgevkng-ejqeqncvg-ncdqtcvqta-336[prlxq]
+wfummczcyx-luvvcn-nywbhifias-864[cfimn]
+irdgrxzex-vxx-nfibjyfg-763[xfgir]
+buzahisl-ipvohghykvbz-qlssfilhu-klclsvwtlua-591[moyzp]
+dpotvnfs-hsbef-sbnqbhjoh-fhh-nbobhfnfou-831[vbmns]
+owshgfarwv-lgh-kwujwl-usfvq-ghwjslagfk-164[wgfhl]
+yuxufmdk-sdmpq-bxmefuo-sdmee-dqeqmdot-222[dmequ]
+clotzlnetgp-clmmte-opawzjxpye-873[elptc]
+mfklstdw-usfvq-kwjnauwk-268[kwfsu]
+vhglnfxk-zktwx-unggr-xgzbgxxkbgz-839[gxkzb]
+yrwxefpi-tpewxmg-kveww-ywiv-xiwxmrk-932[pxhgu]
+shmml-cynfgvp-tenff-qrfvta-143[fmntv]
+zhdsrqlchg-sodvwlf-judvv-uhdftxlvlwlrq-855[ldvhf]
+kfg-jvtivk-sleep-uvjzxe-711[evjkf]
+molgbzqfib-yxphbq-obpbxoze-757[bopqx]
+qfmcusbwq-qobrm-qcohwbu-fsoqeiwgwhwcb-168[qwbco]
+sbejpbdujwf-gmpxfs-tupsbhf-623[bfpsj]
+jsehsyafy-hdsklau-yjskk-ksdwk-242[ksyad]
+rwcnawjcrxwju-ljwmh-bcxajpn-823[jwcan]
+excdklvo-oqq-oxqsxoobsxq-874[oqxsb]
+buzahisl-jhukf-jvhapun-klwsvftlua-565[uahlf]
+gpbepvxcv-snt-steadnbtci-453[tbcen]
+wyvqljapsl-ihzrla-zlycpjlz-149[lzajp]
+amlqskcp-epybc-cee-kylyeckclr-938[cekly]
+jchipqat-qphzti-advxhixrh-895[hiapq]
+tinnm-qvcqczohs-qighcasf-gsfjwqs-818[jfuek]
+qyujihctyx-mwupyhayl-bohn-wihnuchgyhn-890[hynuc]
+wlqqp-nvrgfezqvu-irsszk-ivjvrity-607[viqrs]
+molgbzqfib-avb-cfkxkzfkd-315[bfkza]
+luxciuwncpy-wuhxs-womnigyl-mylpcwy-266[ylhtr]
+ugdgjxmd-bwddqtwsf-ugflsafewfl-762[qdtes]
+fmsledevhsyw-nippcfier-eguymwmxmsr-438[vmsip]
+xekdwvwnzkqo-xwogap-ajcejaanejc-706[aejwc]
+wfummczcyx-yaa-fiacmncwm-136[bxsio]
+rdadguja-tvv-ldgzhwde-375[dagve]
+wsvsdkbi-qbkno-oqq-domrxyvyqi-718[qobdi]
+oaxadrgx-qss-oazfmuzyqzf-300[mfedb]
+hqfxxnknji-uqfxynh-lwfxx-xfqjx-125[zkwtx]
+gpbepvxcv-qphzti-rdcipxcbtci-947[cpibt]
+etyyx-bzmcx-bnzshmf-qdrdzqbg-443[btyez]
+htqtwkzq-gzssd-qfgtwfytwd-541[ogntm]
+uiovmbqk-kpwkwtibm-mvoqvmmzqvo-798[awevt]
+zotts-vumeyn-xypyfijgyhn-448[qasni]
+zovldbkfz-pzxsbkdbo-erkq-xznrfpfqflk-367[eunpo]
+htwwtxnaj-gntmfefwitzx-hfsid-htfynsl-zxjw-yjxynsl-255[tfnwx]
+vhglnfxk-zktwx-vahvhetmx-labiibgz-839[hvxab]
+htqtwkzq-idj-wjhjnansl-983[rmtzn]
+irgyyolokj-vrgyzoi-mxgyy-aykx-zkyzotm-358[yogkz]
+ktfitzbgz-lvtoxgzxk-angm-wxitkmfxgm-943[vxmua]
+uwtojhynqj-hmthtqfyj-jslnsjjwnsl-879[jhnst]
+mrxivrexmsrep-gerhc-gsexmrk-hiwmkr-100[yzpuo]
+hdgdovmt-bmvyz-ezggtwzvi-adivixdib-707[divgz]
+lqwhuqdwlrqdo-iorzhu-ghvljq-959[qhldo]
+vhkkhlbox-wrx-inkvatlbgz-397[kbhlv]
+tyepcyletzylw-awldetn-rcldd-dezclrp-795[ldect]
+sedikcuh-whqtu-uww-tufqhjcudj-946[uhwcd]
+lsyrkjkbnyec-zvkcdsm-qbkcc-myxdksxwoxd-848[kcdsx]
+fnjyxwrinm-lqxlxujcn-mnyjacvnwc-355[ncjxl]
+gpbepvxcv-tvv-rdcipxcbtci-141[cvpbi]
+xgsvgmotm-hgyqkz-ykxboiky-124[gkymo]
+udskkaxawv-usfvq-esjcwlafy-814[uidxk]
+fydelmwp-nlyoj-opalcexpye-899[elpyo]
+aczupnetwp-qwzhpc-afcnsldtyr-717[cpant]
+bknsykmdsfo-nio-yzobkdsyxc-926[kosyb]
+xjmmjndqz-xcjxjgvoz-mzvxlpdndodji-343[fqvmn]
+amjmpdsj-qaytclecp-fslr-bcqgel-782[claej]
+fnjyxwrinm-ouxfna-anjlzdrbrcrxw-719[nrxaf]
+qcbgiasf-ufors-pogysh-zcuwghwqg-168[gscfh]
+kmjezxodgz-wpiit-mzxzdqdib-109[aypcu]
+ckgvutofkj-xghhoz-uvkxgzouty-696[ajsic]
+lsyrkjkbnyec-mkxni-cdybkqo-510[kybcn]
+tipfxvezt-gcrjkzt-xirjj-jvimztvj-919[pofxi]
+pbybeshy-cynfgvp-tenff-svanapvat-403[afnpv]
+cjpibabsepvt-cvooz-usbjojoh-155[objcp]
+jvyyvzpcl-lnn-ayhpupun-929[npylu]
+wsvsdkbi-qbkno-zvkcdsm-qbkcc-oxqsxoobsxq-276[sbkoq]
+ugdgjxmd-usfvq-ugslafy-ugflsafewfl-918[xbmpo]
+nwlddtqtpo-ojp-xlcvpetyr-639[ptdlo]
+nzcczdtgp-prr-opdtry-587[wsiym]
+ynssr-yehpxk-wxlbzg-111[plhnx]
+xjmmjndqz-xcjxjgvoz-xjiovdihzio-967[jxioz]
+enqvbnpgvir-pubpbyngr-znexrgvat-585[qtsjn]
+gvcskirmg-qekrixmg-ikk-xvemrmrk-126[kmrgi]
+gpbepvxcv-uadltg-ejgrwphxcv-921[gpvce]
+kmjezxodgz-nxvqzibzm-cpio-adivixdib-941[izdxb]
+hcd-gsqfsh-xszzmpsob-sbuwbssfwbu-428[sbfhu]
+nwlddtqtpo-upwwjmply-dpcgtnpd-119[pdtwl]
+mbggf-msvdly-zlycpjlz-929[aonev]
+lhkhszqx-fqzcd-qzaahs-btrsnldq-rdquhbd-443[qdhsz]
+luxciuwncpy-xsy-uwkocmcncih-500[cuinw]
+qvbmzvibqwvit-kpwkwtibm-zmkmqdqvo-564[mqvbi]
+tvsnigxmpi-jpsaiv-irkmriivmrk-568[yileu]
+vxupkizork-kmm-lotgtiotm-748[xymrs]
+gpewwmjmih-gerhc-hiwmkr-152[lostk]
+ibghopzs-gqojsbusf-vibh-rsgwub-818[bsghi]
+guahyncw-luvvcn-wihnuchgyhn-552[hncug]
+iruzfrtkzmv-treup-tfrkzex-ivjvrity-373[rtivz]
+dsxxw-cee-ylyjwqgq-704[eqwxy]
+lhkhszqx-fqzcd-eknvdq-lzmzfdldms-911[dzlqf]
+oxmeeuruqp-omzpk-oamfuzs-emxqe-248[emoup]
+dyz-combod-mkxni-mykdsxq-vklybkdybi-848[dkybm]
+bpvctixr-qphzti-ldgzhwde-999[abmop]
+kwvacumz-ozilm-jiasmb-mvoqvmmzqvo-824[tnqvi]
+njmjubsz-hsbef-kfmmzcfbo-nbobhfnfou-389[luxhg]
+hwbba-fag-tgceswkukvkqp-622[kabgw]
+nchhg-jiasmb-lmxizbumvb-382[bmhia]
+ymszqfuo-dmnnuf-emxqe-170[syxpj]
+ymszqfuo-qss-abqdmfuaze-144[qsafm]
+tcfkqcevkxg-hwbba-hnqygt-vtckpkpi-440[kctbg]
+zloolpfsb-gbiivybxk-rpbo-qbpqfkd-705[bopfi]
+slqryzjc-pyzzgr-rpyglgle-288[uanmz]
+iutyaskx-mxgjk-inuiurgzk-rumoyzoiy-696[klmzy]
+dpssptjwf-cvooz-efqmpznfou-311[fopsz]
+dsxxw-cee-dglylagle-756[eldgx]
+nwlddtqtpo-upwwjmply-xlcvpetyr-223[pltwd]
+jvuzbtly-nyhkl-lnn-lunpullypun-201[tqlba]
+uiovmbqk-kivlg-bmkpvwtwog-720[kpvsu]
+nchhg-xtiabqk-oziaa-zmamizkp-850[aizhk]
+molgbzqfib-zixppfcfba-gbiivybxk-pqloxdb-237[igmjz]
+jyfvnlupj-jhukf-jvhapun-yljlpcpun-539[dmnws]
+hqtyeqsjylu-sqdto-tufqhjcudj-712[cnysz]
+gsvvswmzi-gerhc-gsrxemrqirx-100[dlypm]
+ktwbhtvmbox-xzz-vhgmtbgfxgm-709[bgmtx]
+hjgbwuladw-uzgugdslw-vwhsjlewfl-580[wlgud]
+njmjubsz-hsbef-kfmmzcfbo-efqmpznfou-181[subnv]
+bnknqetk-bzmcx-zbpthrhshnm-417[bhnkm]
+gspsvjyp-fyrrc-jmrergmrk-126[rgjmp]
+bjfutsneji-gntmfefwitzx-kqtbjw-fhvznxnynts-307[ntfjb]
+sedikcuh-whqtu-rqiauj-tuiywd-270[gipnv]
+hjgbwuladw-bwddqtwsf-jwsuimakalagf-294[wadbf]
+encuukhkgf-uecxgpigt-jwpv-rwtejcukpi-986[ucegk]
+nzydfxpc-rclop-nlyoj-nzletyr-zapcletzyd-847[lyzcn]
+eqpuwogt-itcfg-lgnnadgcp-tgceswkukvkqp-518[gckpt]
+nzwzcqfw-mldvpe-afcnsldtyr-171[cdfln]
+ide-htrgti-snt-advxhixrh-401[hitdr]
+fmsledevhsyw-gerhc-gsexmrk-erepcwmw-776[emrsw]
+jvyyvzpcl-yhiipa-aljouvsvnf-201[vyaij]
+chnylhuncihuf-zfiqyl-mniluay-656[hilnu]
+udskkaxawv-xdgowj-klgjsyw-346[eruiv]
+pbeebfvir-sybjre-qrcnegzrag-585[erbga]
+aoubshwq-qobrm-obozmgwg-948[obgmq]
+jvsvymbs-ibuuf-huhsfzpz-747[subfh]
+qvbmzvibqwvit-jiasmb-ikycqaqbqwv-928[qbiva]
+zuv-ykixkz-kmm-jkyomt-748[kmyzi]
+slqryzjc-zsllw-amlryglkclr-808[lrcsy]
+enzcntvat-enoovg-ybtvfgvpf-273[vntef]
+iqmbazulqp-dmnnuf-oazfmuzyqzf-664[zfmqu]
+yaxsnlcrun-ouxfna-uxprbcrlb-537[nruxa]
+ovbunmneqbhf-cynfgvp-tenff-ratvarrevat-351[uakpm]
+qzchnzbshud-idkkxadzm-rghoohmf-885[hdzkm]
+fodvvlilhg-sodvwlf-judvv-fxvwrphu-vhuylfh-101[vfhld]
+qvbmzvibqwvit-kpwkwtibm-apqxxqvo-798[qvbiw]
+aoubshwq-pwcvonofrcig-rms-aofyshwbu-688[oswab]
+hwbba-gii-fgrnqaogpv-882[gabif]
+pkl-oaynap-acc-pnwejejc-186[acpej]
+ltpedcxots-qphzti-ejgrwphxcv-323[ptceh]
+mybbycsfo-nio-nofovyzwoxd-250[stdkc]
+bgmxkgtmbhgte-ietlmbv-zktll-inkvatlbgz-397[ptrnf]
+dpotvnfs-hsbef-dipdpmbuf-qvsdibtjoh-545[dbfps]
+fmsledevhsyw-veqtekmrk-tpewxmg-kveww-hitevxqirx-568[evwkm]
+ykjoqian-cnwza-ywjzu-ykwpejc-wymqeoepekj-628[hmfzu]
+wihmogyl-aluxy-vumeyn-jolwbumcha-240[lmuya]
+yuxufmdk-sdmpq-eomhqzsqd-tgzf-emxqe-664[mqdef]
+wifilzof-vumeyn-guhuaygyhn-864[uyfgh]
+hplazytkpo-nlyoj-cpdplcns-457[plcno]
+vhglnfxk-zktwx-utldxm-hixktmbhgl-917[tursp]
+jxdkbqfz-zxkav-zlxqfkd-pxibp-133[xkzbd]
+mfklstdw-xdgowj-jwuwanafy-554[wadfj]
+eqttqukxg-tcddkv-vtckpkpi-596[ampxv]
+tpspahyf-nyhkl-jovjvshal-mpuhujpun-591[fkeyj]
+vqr-ugetgv-ecpfa-eqcvkpi-ujkrrkpi-414[ekprv]
+mvkccspson-bkllsd-nozvyiwoxd-952[oscdk]
+ugjjgkanw-ugfkmewj-yjsvw-bwddqtwsf-kwjnauwk-528[nkliy]
+wkqxodsm-lexxi-myxdksxwoxd-848[xdkmo]
+tfiifjzmv-tyftfcrkv-jyzggzex-841[unmyd]
+wdjcvuvmyjpn-rzvkjiduzy-mvwwdo-adivixdib-421[dvijw]
+xzwrmkbqtm-jcvvg-amzdqkma-226[uonyt]
+tvsnigxmpi-mrxivrexmsrep-veffmx-xvemrmrk-308[mrxev]
+iehepwnu-cnwza-nwxxep-owhao-420[wenah]
+fubrjhqlf-edvnhw-wudlqlqj-725[lqdfh]
+wfummczcyx-wuhxs-mniluay-370[cbijt]
+jchipqat-eaphixr-vgphh-sthxvc-895[hpaci]
+pelbtravp-ohaal-hfre-grfgvat-169[arefg]
+jshzzpmplk-jhukf-aljouvsvnf-279[jfhkl]
+hwbba-ejqeqncvg-ocpcigogpv-128[cgbeo]
+fnjyxwrinm-ajkkrc-cajrwrwp-745[rjwac]
+mhi-lxvkxm-utldxm-tgterlbl-267[lmtxb]
+jxdkbqfz-bdd-pqloxdb-237[dbqxf]
+qfkkj-nzydfxpc-rclop-clmmte-xlylrpxpye-197[vzyuc]
+bxaxipgn-vgpst-qxdwpopgsdjh-ytaanqtpc-hwxeexcv-687[csdop]
+rdggdhxkt-eaphixr-vgphh-itrwcdadvn-245[dhgra]
+qlm-pbzobq-zxkav-zlxqfkd-obzbfsfkd-471[bzfkq]
+ajyqqgdgcb-qaytclecp-fslr-sqcp-rcqrgle-106[cqglr]
+zgmfyxypbmsq-aylbw-amyrgle-qfgnngle-704[jmbna]
+pkl-oaynap-acc-zalhkuiajp-654[apckl]
+bqxnfdmhb-okzrshb-fqzrr-btrsnldq-rdquhbd-599[nszgr]
+mybbycsfo-mkxni-mykdsxq-cobfsmoc-302[mbcos]
+ujoon-eaphixr-vgphh-ldgzhwde-141[hdego]
+iuxxuyobk-hatte-lotgtiotm-852[toiux]
+muqfedyput-rkddo-huqsgkyiyjyed-608[dyuek]
+mrxivrexmsrep-ikk-irkmriivmrk-230[rikme]
+htqtwkzq-wfggny-ywfnsnsl-749[nwfgq]
+sno-rdbqds-idkkxadzm-trdq-sdrshmf-599[dsrkm]
+apuut-wpiit-gvwjmvojmt-369[tijmp]
+molgbzqfib-yxphbq-tlohpelm-133[blhmo]
+ugdgjxmd-wyy-hmjuzskafy-866[ydgjm]
+slqryzjc-hcjjwzcyl-dglylagle-860[lcjyg]
+ktwbhtvmbox-wrx-etuhktmhkr-241[psbxd]
+oaddaeuhq-otaoaxmfq-ruzmzouzs-950[aouzd]
+ugfkmewj-yjsvw-tmffq-klgjsyw-528[sqogh]
+vrurcjah-pajmn-ajvyjprwp-ljwmh-anlnrerwp-433[jkstx]
+fab-eqodqf-vqxxknqmz-ymdwqfuzs-586[qfdmx]
+tpspahyf-nyhkl-kfl-klwhyatlua-123[lahky]
+zntargvp-enoovg-znexrgvat-195[gnvae]
+dkqjcbctfqwu-uecxgpigt-jwpv-ugtxkegu-934[gucte]
+owshgfarwv-xdgowj-jwkwsjuz-320[wjgos]
+gifavtkzcv-treup-jyzggzex-659[gzetv]
+bjfutsneji-gfxpjy-tujwfyntsx-203[jftns]
+pxtihgbsxw-ietlmbv-zktll-ybgtgvbgz-371[bgtli]
+crwwv-zxkav-pefmmfkd-367[fkmvw]
+sbqiiyvyut-fbqijys-whqii-tulubefcudj-998[xytos]
+gvcskirmg-gsvvswmzi-fewoix-pskmwxmgw-230[gmswi]
+eqttqukxg-ejqeqncvg-octmgvkpi-232[qegtc]
+lqwhuqdwlrqdo-fdqgb-zrunvkrs-439[qdrlu]
+tinnm-gqojsbusf-vibh-gozsg-480[gsbin]
+lujbbrornm-ljwmh-orwjwlrwp-849[rwjlb]
+jef-iushuj-rkddo-efuhqjyedi-868[dejuf]
+szfyrqriuflj-treup-jrcvj-971[slkjz]
+ltpedcxots-rpcsn-itrwcdadvn-921[cdtnp]
+ohmnuvfy-xsy-jolwbumcha-968[hmouy]
+gntmfefwitzx-wfintfhynaj-uqfxynh-lwfxx-wjhjnansl-905[fnwxh]
+xcitgcpixdcpa-tvv-hwxeexcv-271[cxvei]
+jyfvnlupj-qlssfilhu-ayhpupun-227[zbydk]
+wdjcvuvmyjpn-zbb-vxlpdndodji-291[djvbn]
+wfummczcyx-dyffsvyuh-xymcah-630[ycfmh]
+cebwrpgvyr-wryylorna-phfgbzre-freivpr-897[opgba]
+cjpibabsepvt-tdbwfohfs-ivou-fohjoffsjoh-363[fobhj]
+zekvierkzferc-jtrmvexvi-ylek-wzeretzex-425[erzkv]
+sgmtkzoi-pkrrehkgt-ygrky-228[kgrty]
+iruzfrtkzmv-jtrmvexvi-ylek-jkfirxv-971[nvfye]
+dfcxsqhwzs-pogysh-obozmgwg-870[goshw]
+yuxufmdk-sdmpq-vqxxknqmz-bgdotmeuzs-326[tidcv]
+iuxxuyobk-igtje-ygrky-878[mflrz]
+laffe-igtje-vaxingyotm-800[aefgi]
+tpspahyf-nyhkl-wshzapj-nyhzz-zhslz-643[hzpsy]
+diozmivodjivg-xviyt-ozxcijgjbt-473[cmtlp]
+pyknyegle-njyqrga-epyqq-pcyaosgqgrgml-314[gyqep]
+bwx-amkzmb-zijjqb-tijwzibwzg-824[egorq]
+drxevkzt-vxx-uvjzxe-581[xvezd]
+ktfitzbgz-cxeeruxtg-wxitkmfxgm-761[txgef]
+htsxzrjw-lwfij-wfggny-ywfnsnsl-801[cjidb]
+oxmeeuruqp-nmewqf-pqeusz-742[eqump]
+hqfxxnknji-kzeed-ojqqdgjfs-jslnsjjwnsl-671[jnsqd]
+pbybeshy-rtt-phfgbzre-freivpr-221[rbepf]
+pdjqhwlf-edvnhw-xvhu-whvwlqj-231[hwvdj]
+gcfcnuls-aluxy-vumeyn-lywycpcha-188[cylua]
+plolwdub-judgh-edvnhw-pdqdjhphqw-699[dhpwj]
+udpsdjlqj-hjj-pdqdjhphqw-751[jdhpq]
+amjmpdsj-pyzzgr-qyjcq-886[jmpqy]
+lahxpnwrl-ljwmh-bqryyrwp-667[tifxe]
+drxevkzt-avccpsvre-uvgcfpdvek-191[vcedk]
+xzwrmkbqtm-rmttgjmiv-apqxxqvo-928[lmkgz]
+eqnqthwn-tcddkv-fgrctvogpv-648[tvcdg]
+bjfutsneji-ojqqdgjfs-ijajqturjsy-515[jqsfi]
+sebehvkb-hqrryj-ixyffydw-166[siyrz]
+zlkprjbo-doxab-mixpqfz-doxpp-jxohbqfkd-783[yjhzq]
+eza-dpncpe-nsznzwlep-opdtry-821[sdeti]
+tbxmlkfwba-yxphbq-xkxivpfp-523[slfmk]
+ucynmlgxcb-hcjjwzcyl-umpiqfmn-548[cmjln]
+lxwbdvna-pajmn-bljenwpna-qdwc-dbna-cnbcrwp-199[nabwc]
+eadalsjq-yjsvw-wyy-jwsuimakalagf-892[ajswy]
+fruurvlyh-mhoobehdq-zrunvkrs-907[rhuov]
+sbqiiyvyut-vbemuh-sedjqydcudj-686[ltadr]
+fkqbokxqflkxi-avb-lmboxqflkp-991[kbflq]
+lhkhszqx-fqzcd-atmmx-kzanqzsnqx-677[qzxah]
+cebwrpgvyr-hafgnoyr-cynfgvp-tenff-qrcnegzrag-793[rxmql]
+ajmrxjlcren-cxy-bnlanc-ouxfna-lxwcjrwvnwc-927[cnxaj]
+hqtyeqsjylu-isqludwuh-xkdj-tulubefcudj-244[udjlq]
+vdzonmhydc-azrjds-cdudknoldms-157[lzowh]
+uwtojhynqj-kqtbjw-zxjw-yjxynsl-333[grmkp]
+myxcewob-qbkno-oqq-ecob-docdsxq-614[oqbcd]
+rkpqxyib-gbiivybxk-abpfdk-419[bikpx]
+zlilocri-zelzlixqb-qbzeklildv-497[ucyzj]
+pinovwgz-xviyt-vivgtndn-499[vingt]
+gcfcnuls-aluxy-luvvcn-xymcah-318[cluan]
+sebehvkb-fbqijys-whqii-husuylydw-400[bhisy]
+rdchjbtg-vgpst-eaphixr-vgphh-rjhidbtg-htgkxrt-323[hgtrp]
+pualyuhapvuhs-jshzzpmplk-wshzapj-nyhzz-zlycpjlz-175[zphla]
+atyzghrk-sgmtkzoi-hgyqkz-yzuxgmk-228[gkzyh]
+ohmnuvfy-mwupyhayl-bohn-yhachyylcha-630[hyacl]
+oxjmxdfkd-avb-pqloxdb-211[dxboa]
+iqmbazulqp-bdavqofuxq-omzpk-ruzmzouzs-482[zqumo]
+zsxyfgqj-gzssd-wjxjfwhm-619[jsfgw]
+qvbmzvibqwvit-jcvvg-abwziom-512[tcrkb]
+xgjougizobk-lruckx-aykx-zkyzotm-826[koxzg]
+bkzrrhehdc-rbzudmfdq-gtms-zmzkxrhr-755[rzdhm]
+myxcewob-qbkno-cmkfoxqob-rexd-zebmrkcsxq-302[syrvm]
+zekvierkzferc-treup-tfrkzex-uvgrikdvek-867[ekrvz]
+cvabijtm-lgm-bziqvqvo-330[vbimq]
+vhglnfxk-zktwx-ktuubm-vhgmtbgfxgm-553[gkmtx]
+xst-wigvix-fyrrc-vieguymwmxmsr-490[yentm]
+ktfitzbgz-fbebmtkr-zktwx-xzz-lmhktzx-111[ztkbx]
+vdzonmhydc-eknvdq-sqzhmhmf-963[xacdu]
+dmpuamofuhq-otaoaxmfq-efadmsq-742[amfoq]
+htqtwkzq-gfxpjy-wjxjfwhm-827[fnred]
+sbnqbhjoh-xfbqpojafe-cbtlfu-dpoubjonfou-311[kezry]
+qyujihctyx-vumeyn-lywycpcha-604[ychua]
+ide-htrgti-tvv-uxcpcrxcv-973[ctvir]
+bxaxipgn-vgpst-snt-gtprfjxhxixdc-791[xgpti]
+nbhofujd-dipdpmbuf-dvtupnfs-tfswjdf-363[dfpub]
+apuut-nxvqzibzm-cpio-mznzvmxc-291[zmcin]
+uzfqdzmfuazmx-otaoaxmfq-pqhqxabyqzf-768[pzmry]
+tpspahyf-nyhkl-ibuuf-klwhyatlua-253[xkrsz]
+iqmbazulqp-vqxxknqmz-efadmsq-950[jrnox]
+bpvctixr-rpcsn-igpxcxcv-375[cpxir]
+ytu-xjhwjy-uqfxynh-lwfxx-yjhmstqtld-489[xyhjt]
+qvbmzvibqwvit-ntwemz-kwvbiqvumvb-720[vbimq]
+mhi-lxvkxm-ietlmbv-zktll-vnlmhfxk-lxkobvx-553[eusnm]
+tpspahyf-nyhkl-jhukf-wbyjohzpun-487[hpyfj]
+avw-zljyla-qlssfilhu-zlycpjlz-929[lzajs]
+sawlkjevaz-xwogap-skngodkl-290[akglo]
+xgjougizobk-laffe-lruckx-gtgreyoy-774[goefk]
+aoubshwq-qobrm-qcohwbu-qighcasf-gsfjwqs-948[qsbho]
+wifilzof-vumeyn-lyuwkocmcncih-968[avixc]
+uiovmbqk-xtiabqk-oziaa-mvoqvmmzqvo-382[moqva]
+sawlkjevaz-oywrajcan-dqjp-lqnydwoejc-342[ajwcd]
+kfg-jvtivk-jtrmvexvi-ylek-rercpjzj-529[jvekr]
+houngfgxjuay-igtje-giwaoyozout-228[gouai]
+gcfcnuls-aluxy-mwupyhayl-bohn-ijyluncihm-916[tacdb]
+cjpibabsepvt-cvooz-ufdiopmphz-155[pobci]
+iuxxuyobk-igtje-sgtgmksktz-878[uwcvx]
+thnulapj-ibuuf-ylzlhyjo-305[sfdnr]
+xzwrmkbqtm-rmttgjmiv-zmamizkp-434[ifpry]
+yhwooebeaz-zua-yqopkian-oanreya-680[aoeyn]
+tfcfiwlc-wcfnvi-wzeretzex-243[cefwi]
+guahyncw-xsy-uwkocmcncih-864[qsmtb]
+ovbunmneqbhf-rtt-qrfvta-689[zymsd]
+rgllk-eomhqzsqd-tgzf-ymdwqfuzs-638[qzdfg]
+ryexqpqhteki-sqdto-seqjydw-skijecuh-iuhlysu-946[eqshi]
+avw-zljyla-qlssfilhu-mpuhujpun-383[luahj]
+pynffvsvrq-onfxrg-znantrzrag-143[nrfag]
+ikhcxvmbex-xzz-phkdlahi-839[cstrx]
+mvhkvbdib-wvnfzo-zibdizzmdib-187[bizdv]
+ipvohghykvbz-wshzapj-nyhzz-huhsfzpz-747[hzpsv]
+htqtwkzq-hmthtqfyj-ijuqtdrjsy-151[tqhjy]
+xzz-ftgtzxfxgm-865[tupfq]
+jyfvnlupj-jhukf-klwhyatlua-747[jydsc]
+mbiyqoxsm-mkxni-kxkvicsc-510[ikmxc]
+bgmxkgtmbhgte-ietlmbv-zktll-labiibgz-163[bglti]
+vdzonmhydc-bqxnfdmhb-rbzudmfdq-gtms-lzmzfdldms-469[arkps]
+forwcoqhwjs-gqojsbusf-vibh-rsgwub-688[dgqsb]
+qcffcgwjs-pogysh-qcbhowbasbh-688[bchsf]
+apuut-xviyt-yzqzgjkhzio-317[zituy]
+ide-htrgti-qjccn-jhtg-ithixcv-479[itchg]
+kgjgrypw-epybc-hcjjwzcyl-cleglccpgle-262[qphrv]
+atyzghrk-lruckx-jkvruesktz-384[krtuz]
+hqtyeqsjylu-rqiauj-vydqdsydw-998[gqeba]
+uwtojhynqj-gfxpjy-qfgtwfytwd-177[fjtwy]
+nglmtuex-xzz-ftgtzxfxgm-839[xgtzf]
+ncjzrpytn-clmmte-epnsyzwzrj-951[yqksh]
+gntmfefwitzx-gzssd-htsyfnsrjsy-333[cngmk]
+qcbgiasf-ufors-qvcqczohs-hfowbwbu-168[bcfoq]
+wlqqp-gcrjkzt-xirjj-dribvkzex-529[ycrxs]
+drxevkzt-irdgrxzex-jtrmvexvi-ylek-glityrjzex-321[erxit]
+ovbunmneqbhf-qlr-znexrgvat-559[nbeqr]
+bwx-amkzmb-jiasmb-camz-bmabqvo-512[bmazc]
+vcibutulxiom-vohhs-womnigyl-mylpcwy-838[fczlm]
+fmsledevhsyw-ikk-hitpscqirx-230[owjnv]
+ykhknbqh-ywjzu-ykwpejc-odellejc-940[xguqm]
+nsyjwsfyntsfq-gzssd-uzwhmfxnsl-203[sfnwy]
+mtzslklcozfd-clmmte-nzyeltyxpye-301[tmlui]
+dsxxw-cee-kypicrgle-106[ecxdg]
+ujqgywfau-aflwjfslagfsd-tskcwl-ghwjslagfk-476[fagls]
+nchhg-jcvvg-mvoqvmmzqvo-642[vmcgh]
+cjpibabsepvt-tdbwfohfs-ivou-efqmpznfou-831[mvwiq]
+votubcmf-njmjubsz-hsbef-dboez-dpbujoh-fohjoffsjoh-129[izchs]
+njmjubsz-hsbef-fhh-nbobhfnfou-337[unims]
+iwcjapey-lhwopey-cnwoo-hkceopeyo-576[oecpw]
+ydjuhdqjyedqb-fbqijys-whqii-efuhqjyedi-322[qdijy]
+bknsykmdsfo-lkcuod-mecdywob-cobfsmo-250[obcdk]
+sbqiiyvyut-zubboruqd-cqdqwucudj-530[uqbdc]
+etaqigpke-dcumgv-vgejpqnqia-960[egqai]
+ykjoqian-cnwza-nwxxep-paydjkhkcu-134[pcdmt]
+iehepwnu-cnwza-lhwopey-cnwoo-nawymqeoepekj-108[ewnop]
+vagreangvbany-rtt-phfgbzre-freivpr-221[raegv]
+surmhfwloh-sodvwlf-judvv-xvhu-whvwlqj-595[vhwlu]
+qekrixmg-ikk-gywxsqiv-wivzmgi-256[jsykh]
+sno-rdbqds-bgnbnkzsd-otqbgzrhmf-495[rypqa]
+guahyncw-vohhs-nywbhifias-214[hains]
+sno-rdbqds-atmmx-bnmszhmldms-365[posvl]
+zovldbkfz-zxkav-zlxqfkd-zlkqxfkjbkq-575[zrqmk]
+ykhknbqh-zua-owhao-888[hakob]
+xmrrq-vqw-ugflsafewfl-372[isvjx]
+wdjcvuvmyjpn-wpiit-vxlpdndodji-395[cvdlm]
+wyvqljapsl-ihzrla-zopwwpun-123[lpwaz]
+kdijqrbu-tou-husuylydw-816[uvcwx]
+fhezusjybu-fbqijys-whqii-husuylydw-764[uyhis]
+jyfvnlupj-kfl-mpuhujpun-773[ujpfl]
+hafgnoyr-pubpbyngr-nanylfvf-715[nkyzs]
+jfifqxov-doxab-oxyyfq-absbilmjbkq-341[qmgrk]
+nij-mywlyn-wuhxs-wiuncha-uwkocmcncih-188[cnwhi]
+amjmpdsj-afmamjyrc-ylyjwqgq-470[jmayq]
+rdggdhxkt-eaphixr-vgphh-jhtg-ithixcv-921[yvuxl]
+ucynmlgxcb-qaytclecp-fslr-dglylagle-184[tudeg]
+dpmpsgvm-tdbwfohfs-ivou-sfdfjwjoh-363[qhgxy]
+bqvvu-ykhknbqh-fahhuxawj-wymqeoepekj-498[hekqa]
+qczcftiz-xszzmpsob-sbuwbssfwbu-818[sbzcf]
+aietsrmdih-hci-wlmttmrk-360[imthr]
+xst-wigvix-ikk-qevoixmrk-256[ikxve]
+nzydfxpc-rclop-nzwzcqfw-mfyyj-opalcexpye-405[cpyfz]
+frqvxphu-judgh-udeelw-uhdftxlvlwlrq-933[ludhe]
+jsehsyafy-jsttal-hmjuzskafy-892[sajyf]
+zbytomdsvo-mrymyvkdo-vyqscdsmc-276[mydos]
+tcorcikpi-ecpfa-eqcvkpi-fgxgnqrogpv-934[jziot]
+ytu-xjhwjy-hfsid-wjxjfwhm-905[jhwfx]
+hjgbwuladw-tmffq-suimakalagf-554[afglm]
+pyknyegle-zsllw-nspafyqgle-730[leygn]
+gifavtkzcv-avccpsvre-uvjzxe-607[zhayg]
+bpvctixr-snt-tcvxcttgxcv-973[vrteq]
+wyvqljapsl-jovjvshal-zlycpjlz-175[nrwfe]
+kwzzwaqdm-lgm-aitma-122[amwzd]
+iqmbazulqp-dmnnuf-qzsuzqqduzs-690[qhzsm]
+udskkaxawv-xdgowj-xafsfuafy-138[nailf]
+ipvohghykvbz-wshzapj-nyhzz-yljlpcpun-929[lwyvn]
+forwcoqhwjs-foppwh-hsqvbczcum-636[chowf]
+pualyuhapvuhs-msvdly-svnpzapjz-903[pasuv]
+xgjougizobk-vrgyzoi-mxgyy-xkykgxin-436[tjykb]
+sedikcuh-whqtu-rkddo-cqdqwucudj-348[brlqi]
+elrkdcdugrxv-fdqgb-uhfhlylqj-465[dlfgh]
+mhi-lxvkxm-lvtoxgzxk-angm-ltexl-917[xlmgk]
+bqvvu-fahhuxawj-yqopkian-oanreya-212[cpdwf]
+buzahisl-jhukf-thyrlapun-903[hualb]
+rgllk-oaxadrgx-nmewqf-pqbxakyqzf-690[aqxfg]
+iuruxlar-irgyyolokj-jek-ynovvotm-488[ohpdn]
+xmtjbzidx-nxvqzibzm-cpio-yzkgjthzio-811[zixbj]
+xmrrq-ugfkmewj-yjsvw-usfvq-ugslafy-ghwjslagfk-866[fgsju]
+yhtwhnpun-wshzapj-nyhzz-vwlyhapvuz-851[hznpw]
+zgmfyxypbmsq-zyqicr-kypicrgle-340[ycgim]
+uwtojhynqj-hfsid-htfynsl-wjfhvznxnynts-489[nhfjs]
+fab-eqodqf-dmnnuf-bgdotmeuzs-196[dfbem]
+wifilzof-wuhxs-wiuncha-lyuwkocmcncih-578[ciwhu]
+gspsvjyp-veffmx-pefsvexsvc-516[svefp]
+yknnkoera-xwogap-bejwjyejc-732[ejakn]
+nsyjwsfyntsfq-gfxpjy-knsfshnsl-333[sfnyj]
+fodvvlilhg-gbh-ghvljq-595[vgprj]
+nuatmlmdpage-bxmefuo-sdmee-emxqe-482[emadu]
+jvyyvzpcl-msvdly-vwlyhapvuz-903[vylpz]
+fruurvlyh-iorzhu-vdohv-517[hruvo]
+houngfgxjuay-hgyqkz-ykxboiky-618[ygkho]
+gsrwyqiv-kvehi-gerhc-gsexmrk-xiglrspskc-750[grsei]
+pualyuhapvuhs-qlssfilhu-zhslz-799[hlsua]
+nwlddtqtpo-nlyoj-nzletyr-opdtry-119[tdlno]
+fydelmwp-prr-nfdezxpc-dpcgtnp-535[pdcef]
+qmpmxevc-kvehi-jpsaiv-hizipstqirx-672[ipveh]
+nzwzcqfw-nlyoj-nzletyr-opawzjxpye-587[znwye]
+bpvctixr-rwdrdapit-hpath-973[prtad]
+gzefmnxq-omzpk-oazfmuzyqzf-430[zfmoq]
+wpuvcdng-hnqygt-vgejpqnqia-102[tmdxr]
+aoubshwq-foppwh-igsf-hsghwbu-610[tsrzk]
+wihmogyl-aluxy-mwupyhayl-bohn-mbcjjcha-422[vuypz]
+cqwdujys-uww-sedjqydcudj-478[djuwc]
+votubcmf-tdbwfohfs-ivou-sfbdrvjtjujpo-883[fobjt]
+gpbepvxcv-ytaanqtpc-apqdgpidgn-427[pagcd]
+bnknqetk-eknvdq-qdrdzqbg-885[qdknb]
+uwtojhynqj-wfruflnsl-hfsid-wjxjfwhm-541[fjwhl]
+zhdsrqlchg-fodvvlilhg-gbh-frqwdlqphqw-361[hlqdg]
+cvabijtm-jcvvg-lmxizbumvb-174[vbmci]
+fruurvlyh-fdqgb-ghsorbphqw-205[hrbfg]
+pualyuhapvuhs-msvdly-thyrlapun-279[uahlp]
+iehepwnu-cnwza-ydkykhwpa-ajcejaanejc-212[oqwrn]
+bqvvu-xwogap-yqopkian-oanreya-680[ckqtm]
+ktwbhtvmbox-vahvhetmx-mxvaghehzr-917[hvmtx]
+uzfqdzmfuazmx-omzpk-oamfuzs-fqotzaxask-274[mnilo]
+gntmfefwitzx-idj-rfsfljrjsy-931[fjirs]
+tcrjjzwzvu-tfiifjzmv-tyftfcrkv-vexzevvizex-399[vzfte]
+oaddaeuhq-vqxxknqmz-qzsuzqqduzs-404[qzdua]
+sorozgxe-mxgjk-yigbktmkx-natz-zxgototm-514[hejid]
+eadalsjq-yjsvw-ujqgywfau-tskcwl-kwjnauwk-554[wajks]
+lxuxaodu-rwcnawjcrxwju-ljwmh-fxatbqxy-693[xwaju]
+plolwdub-judgh-fdqgb-frdwlqj-vdohv-153[dlbfg]
+kdijqrbu-jef-iushuj-sqdto-seqjydw-kiuh-juijydw-218[iqtvx]
+tfejldvi-xiruv-tfcfiwlc-srjbvk-jyzggzex-243[fijvc]
+jchipqat-ltpedcxots-uadltg-tcvxcttgxcv-609[ezynj]
+ryexqpqhteki-sxesebqju-udwyduuhydw-816[eudqy]
+iuxxuyobk-xgjougizobk-hatte-sgtgmksktz-436[pwdlc]
+gcfcnuls-aluxy-wuhxs-wiuncha-guleyncha-136[ucahl]
+ugfkmewj-yjsvw-usfvq-ugslafy-mkwj-lwklafy-476[ohqre]
+laffe-vxupkizork-vrgyzoi-mxgyy-uvkxgzouty-488[awgqz]
+eqttqukxg-hnqygt-rwtejcukpi-570[tqegk]
+yuxufmdk-sdmpq-ngzzk-ruzmzouzs-534[zumdk]
+ktwbhtvmbox-ietlmbv-zktll-kxtvjnblbmbhg-553[btlkm]
+qxdwpopgsdjh-eaphixr-vgphh-prfjxhxixdc-999[hpxdg]
+bnmrtldq-fqzcd-oqnidbshkd-qzaahs-cdoknxldms-703[lxvwe]
+gokzyxsjon-nio-gybucryz-172[oygnz]
+cqwdujys-uww-cqhaujydw-660[wucdj]
+mbggf-pualyuhapvuhs-msvdly-aljouvsvnf-123[ngwhl]
+crwwv-oxaflxzqfsb-zelzlixqb-ixyloxqlov-913[lxoqz]
+qlm-pbzobq-ciltbo-abmxoqjbkq-861[bqolm]
+oqnidbshkd-dff-rghoohmf-313[dfhob]
+lzfmdshb-eknvdq-cdudknoldms-937[dklmn]
+wsvsdkbi-qbkno-nio-ecob-docdsxq-614[jsetb]
+zlilocri-zxkav-zlxqfkd-qoxfkfkd-835[kflxz]
+wlqqp-upv-vexzevvizex-165[vepqx]
+vcibutulxiom-vumeyn-womnigyl-mylpcwy-838[myilu]
+pelbtravp-cynfgvp-tenff-svanapvat-663[kzmfp]
+xgvnndadzy-wpiit-jkzmvodjin-421[dinjv]
+foadouwbu-pogysh-fsqswjwbu-480[osuwb]
+yrwxefpi-hci-wxsveki-308[iewxc]
+tmrszakd-azrjds-otqbgzrhmf-105[rzadm]
+sbnqbhjoh-dboez-dpbujoh-usbjojoh-155[bohjd]
+eqnqthwn-gii-fgrctvogpv-908[ginqt]
+uiovmbqk-jcvvg-amzdqkma-356[mvakq]
+sbejpbdujwf-gmpxfs-pqfsbujpot-857[pbfjs]
+ide-htrgti-ytaanqtpc-stepgibtci-531[mnyed]
+aietsrmdih-glsgspexi-gywxsqiv-wivzmgi-230[igsem]
+htqtwkzq-xhfajsljw-mzsy-zxjw-yjxynsl-931[cmkfr]
+ckgvutofkj-xgjougizobk-yigbktmkx-natz-lotgtiotm-436[tgkoi]
+nwlddtqtpo-upwwjmply-fdpc-epdetyr-509[pdtwe]
+irdgrxzex-sleep-jyzggzex-373[tvnma]
+crwwv-zxkav-qoxfkfkd-939[lyjmh]
+ejpanjwpekjwh-nwzekwypera-oywrajcan-dqjp-nawymqeoepekj-368[zmuyt]
+lzfmdshb-rbzudmfdq-gtms-knfhrshbr-495[bdfhm]
+nchhg-rmttgjmiv-uizsmbqvo-252[mghit]
+amjmpdsj-aylbw-rpyglgle-626[lagjm]
+dfcxsqhwzs-pogysh-qighcasf-gsfjwqs-220[sfghq]
+xjgjmapg-nxvqzibzm-cpio-nojmvbz-707[jmzbg]
+zntargvp-enoovg-qrirybczrag-663[scjtg]
+bkzrrhehdc-qzaahs-qdzbpthrhshnm-391[zjbto]
+hafgnoyr-wryylorna-erprvivat-429[rayno]
+apwmeclga-afmamjyrc-rpyglgle-262[aglmc]
+jsvagsulanw-jsttal-hmjuzskafy-606[asjlt]
+bnknqetk-lhkhszqx-fqzcd-cxd-zmzkxrhr-651[kzhqx]
+ykhknbqh-nwxxep-nayaerejc-966[enahk]
+vrurcjah-pajmn-kdwwh-cajrwrwp-667[rwajc]
+vhehkyne-utldxm-vhgmtbgfxgm-891[ghmet]
+zotts-dyffsvyuh-xymcah-812[yfhst]
+vhglnfxk-zktwx-vtgwr-vnlmhfxk-lxkobvx-319[gvnom]
+ajvyjprwp-mhn-nwprwnnarwp-563[npwra]
+guahyncw-chnylhuncihuf-jfumncw-alumm-guleyncha-110[zjirh]
+hwdtljsnh-jll-xfqjx-801[jlhxd]
+xjgjmapg-mvwwdo-xjiovdihzio-525[ijodg]
+pybgmyargtc-zgmfyxypbmsq-zsllw-asqrmkcp-qcptgac-262[cgmpy]
+aflwjfslagfsd-hdsklau-yjskk-esfsywewfl-528[sflak]
+lugjuacha-dyffsvyuh-xypyfijgyhn-708[yfhua]
+lxaaxbren-mhn-cnlqwxuxph-823[nzsvm]
+sehheiylu-tou-cqdqwucudj-738[xciqn]
+slqryzjc-djmucp-qrmpyec-808[sznhq]
+ykjoqian-cnwza-bhksan-opknwca-264[ankco]
+pualyuhapvuhs-lnn-bzly-alzapun-721[auzfj]
+tfiifjzmv-wcfnvi-jkfirxv-997[fivjc]
+lsyrkjkbnyec-mkxni-mykdsxq-vyqscdsmc-562[ksycm]
+fnjyxwrinm-lujbbrornm-ajkkrc-nwprwnnarwp-927[zmyco]
+pyknyegle-amlqskcp-epybc-hcjjwzcyl-qcptgacq-860[cpyel]
+rzvkjiduzy-ezggtwzvi-kpmxcvndib-811[zivdg]
+wyvqljapsl-yhiipa-bzly-alzapun-773[alpyi]
+joufsobujpobm-dipdpmbuf-bdrvjtjujpo-415[gvkud]
+zloolpfsb-zxkav-zlxqfkd-lmboxqflkp-393[lfkox]
+zilqwikbqdm-jcvvg-kwvbiqvumvb-174[vbiqk]
+kzeed-wfggny-xmnuunsl-853[negud]
+ftzgxmbv-xzz-phkdlahi-657[grbhi]
+bnqqnrhud-bzmcx-sqzhmhmf-131[hmqbn]
+zntargvp-pnaql-pbngvat-nanylfvf-169[napvf]
+jxdkbqfz-pzxsbkdbo-erkq-absbilmjbkq-315[uzmcf]
+jshzzpmplk-buzahisl-kfl-klzpnu-695[lzkph]
+pualyuhapvuhs-msvdly-jbzavtly-zlycpjl-825[lyapu]
+lujbbrornm-ouxfna-xynajcrxwb-667[bnrxa]
+dmpuamofuhq-nmewqf-pqhqxabyqzf-482[lndmj]
+cvabijtm-moo-zmikycqaqbqwv-148[mqabc]
+wyvqljapsl-msvdly-zlycpjlz-435[lyjps]
+fmsledevhsyw-ikk-gywxsqiv-wivzmgi-204[isvwe]
+ide-htrgti-snt-sthxvc-297[tyvnc]
+guahyncw-luvvcn-qilembij-292[tcrsd]
+udskkaxawv-wyy-kwjnauwk-710[kwauy]
+aczupnetwp-clmmte-dezclrp-379[ynpmz]
+ikhcxvmbex-ietlmbv-zktll-vnlmhfxk-lxkobvx-449[lxkvb]
+rzvkjiduzy-xcjxjgvoz-rjmfncjk-707[tmnki]
+enzcntvat-cynfgvp-tenff-ynobengbel-923[neftb]
+vkrhzxgbv-bgmxkgtmbhgte-lvtoxgzxk-angm-kxtvjnblbmbhg-111[iwvbg]
+esyfwlau-tskcwl-jwsuimakalagf-398[ywmzb]
+lhkhszqx-fqzcd-bzmcx-nodqzshnmr-287[zhqcd]
+nzwzcqfw-ojp-dstaatyr-977[dsznk]
+qfkkj-xlrypetn-nlyoj-xlcvpetyr-691[lczde]
+wifilzof-luvvcn-nywbhifias-552[sxghy]
+nchhg-kivlg-zmamizkp-928[ghikm]
+tipfxvezt-tcrjjzwzvu-upv-kirzezex-295[zetvi]
+gsvvswmzi-tpewxmg-kveww-gsrxemrqirx-698[wegmr]
+pynffvsvrq-sybjre-ernpdhvfvgvba-663[epsqt]
+sedikcuh-whqtu-vbemuh-udwyduuhydw-894[udhwe]
+tmrszakd-bzmcx-rsnqzfd-183[zdmrs]
+zilqwikbqdm-jcvvg-wxmzibqwva-798[iqvwb]
+lejkrscv-jtrmvexvi-ylek-nfibjyfg-815[ejvfi]
+zsxyfgqj-jll-qtlnxynhx-151[lxjnq]
+gbc-frperg-onfxrg-qrirybczrag-923[rgbcf]
+xjgjmapg-kgvnodx-bmvnn-nvgzn-343[ngvjm]
+dmybmsuzs-ngzzk-mocgueufuaz-534[uzmgs]
+dmpuamofuhq-omzpk-oamfuzs-pqbxakyqzf-482[mafop]
+fbebmtkr-zktwx-unggr-ehzblmbvl-787[begkl]
+zntargvp-enoovg-ybtvfgvpf-481[vgfno]
+fubrjhqlf-gbh-vhuylfhv-933[hfblu]
+fruurvlyh-fdqgb-frdwlqj-whfkqrorjb-569[tmdlw]
+ixccb-udeelw-ghvljq-335[nibrq]
+tcorcikpi-dwppa-fgukip-570[qnzgc]
+ibghopzs-pibbm-rsdzcmasbh-428[bshim]
+apuut-wpiit-nzmqdxzn-889[inptu]
+qzoggwtwsr-pibbm-igsf-hsghwbu-246[gbswh]
+atyzghrk-yigbktmkx-natz-uvkxgzouty-488[pxeoy]
+mbiyqoxsm-mkxni-bokmaescsdsyx-796[erynw]
+qxdwpopgsdjh-uadltg-itrwcdadvn-401[mzukc]
+tinnm-rms-kcfygvcd-688[cmndf]
+crwwv-mixpqfz-doxpp-xkxivpfp-107[tpawu]
+qxdwpopgsdjh-qphzti-itrwcdadvn-999[lenub]
+jqwpihizlwca-lgm-abwziom-538[iwalm]
+votubcmf-dboez-dpbujoh-gjobodjoh-909[szlxy]
+nwzekwypera-oywrajcan-dqjp-iwjwcaiajp-446[awjpc]
+lxuxaodu-vrurcjah-pajmn-ljwmh-cnlqwxuxph-329[uxahj]
+gvaaz-ezf-efwfmpqnfou-779[scdpt]
+jsvagsulanw-hdsklau-yjskk-vwhdgqewfl-190[saklw]
+yrwxefpi-fewoix-irkmriivmrk-828[irefk]
+jrncbavmrq-rtt-fgbentr-819[rtbna]
+tpspahyf-nyhkl-msvdly-klwsvftlua-409[lsyaf]
+veqtekmrk-tpewxmg-kveww-qerekiqirx-100[szdiy]
+ykhknbqh-ydkykhwpa-hkceopeyo-108[khyeo]
+gifavtkzcv-treup-tfrkzex-dribvkzex-503[ekrtv]
+hafgnoyr-pubpbyngr-bcrengvbaf-351[bgnra]
+ide-htrgti-gpqqxi-gtprfjxhxixdc-999[ixgtd]
+yhtwhnpun-ipvohghykvbz-wshzapj-nyhzz-zavyhnl-617[hznyp]
+enqvbnpgvir-pynffvsvrq-rtt-erprvivat-559[vrnpt]
+jxdkbqfz-yrkkv-pxibp-159[kbpxd]
+etyyx-rbzudmfdq-gtms-rdquhbdr-833[drbmq]
+owshgfarwv-udskkaxawv-hdsklau-yjskk-ogjckzgh-398[kasgh]
+xst-wigvix-gerhc-irkmriivmrk-828[ilntc]
+ugfkmewj-yjsvw-wyy-klgjsyw-684[wyjgk]
+zloolpfsb-mixpqfz-doxpp-pbosfzbp-211[topig]
+fruurvlyh-vfdyhqjhu-kxqw-orjlvwlfv-569[vfhlr]
+xst-wigvix-fyrrc-vigimzmrk-516[irgmv]
+rnqnyfwd-lwfij-wfggny-wjxjfwhm-281[wfjng]
+rdchjbtg-vgpst-ytaanqtpc-sthxvc-557[tcagh]
+fubrjhqlf-fdqgb-frdwlqj-dftxlvlwlrq-465[flqdr]
+qlm-pbzobq-pzxsbkdbo-erkq-xznrfpfqflk-679[bqfkp]
+ltpedcxots-rpcsn-bpcpvtbtci-921[dtejs]
+froruixo-edvnhw-ghsorbphqw-231[horwb]
+bjfutsneji-hmthtqfyj-fsfqdxnx-333[fjthn]
+yhtwhnpun-lnn-zavyhnl-669[wpsgy]
+dmpuamofuhq-ngzzk-xmnadmfadk-742[madfk]
+ejpanjwpekjwh-ywjzu-oanreyao-498[yzjwm]
+eza-dpncpe-qwzhpc-afcnsldtyr-353[ivxnu]
+qekrixmg-nippcfier-gywxsqiv-wivzmgi-464[yxkwm]
+avw-zljyla-ibuuf-ylzlhyjo-383[lyaju]
+lqwhuqdwlrqdo-mhoobehdq-rshudwlrqv-621[qdhlo]
+qvbmzvibqwvit-jcvvg-apqxxqvo-200[vqbix]
+ugjjgkanw-esyfwlau-jsttal-ugflsafewfl-164[fgcep]
+shoewudys-isqludwuh-xkdj-ijehqwu-504[stjyd]
+luxciuwncpy-vohhs-yhachyylcha-214[hcyal]
+gifavtkzcv-sleep-ivjvrity-685[vieta]
+rzvkjiduzy-xviyt-yzqzgjkhzio-161[ziyjk]
+iehepwnu-cnwza-ykjoqian-cnwza-ywjzu-ykwpejc-iwjwcaiajp-316[wajci]
+sorozgxe-mxgjk-jek-vaxingyotm-956[goxej]
+dmpuamofuhq-dmnnuf-dqmocgueufuaz-560[umdfa]
+hjgbwuladw-kusnwfywj-zmfl-ugflsafewfl-450[aezbn]
+esyfwlau-usfvq-ugslafy-ghwjslagfk-294[fsagl]
+shmml-sybjre-erfrnepu-195[ngkjp]
+jlidywncfy-ohmnuvfy-wuhxs-wiuncha-ijyluncihm-240[xtjsm]
+ixeumktoi-lruckx-aykx-zkyzotm-436[kximo]
+nzydfxpc-rclop-upwwjmply-xlylrpxpye-535[plyxc]
+fodvvlilhg-sodvwlf-judvv-pdunhwlqj-725[krngz]
+xjmmjndqz-ezggtwzvi-adivixdib-733[idzgj]
+pbybeshy-pnaql-pbngvat-znantrzrag-533[anbpg]
+fnjyxwrinm-ljwmh-lxjcrwp-bqryyrwp-329[rwjyl]
+lhkhszqx-fqzcd-okzrshb-fqzrr-cdoknxldms-391[zdhkq]
+pynffvsvrq-ohaal-znantrzrag-637[anrfv]
+hafgnoyr-sybjre-genvavat-767[ngacu]
+lhkhszqx-fqzcd-bgnbnkzsd-lzmzfdldms-443[ynael]
+lugjuacha-wbiwifuny-mufym-786[uafim]
+vkrhzxgbv-xzz-ftgtzxfxgm-995[xzgft]
+uzfqdzmfuazmx-rxaiqd-emxqe-170[mqxza]
+ajvyjprwp-snuuhknjw-anlnrerwp-771[njprw]
+zuv-ykixkz-igtje-iugzotm-zxgototm-930[lifhb]
+mfklstdw-wyy-ksdwk-294[kwdsy]
+kyelcrga-slqryzjc-hcjjwzcyl-qrmpyec-990[kypqm]
+vkppo-sxesebqju-tulubefcudj-400[uebjp]
+ynukcajey-xqjju-lqnydwoejc-394[jycen]
+qzlozfhmf-qzchnzbshud-qzaahs-qdzbpthrhshnm-287[hzqsa]
+kmjezxodgz-mvwwdo-ncdkkdib-109[dkmow]
+oazegyqd-sdmpq-ngzzk-bgdotmeuzs-482[zdgem]
+qfkkj-mldvpe-cpdplcns-561[pcdkl]
+hvbizodx-ezggtwzvi-xjiovdihzio-577[voqzy]
+iuxxuyobk-inuiurgzk-xkikobotm-722[ikuox]
+jyddc-gsvvswmzi-jpsaiv-jmrergmrk-958[cpedy]
+vhkkhlbox-unggr-hixktmbhgl-449[hgkbl]
+clotzlnetgp-nsznzwlep-dpcgtnpd-145[tehzy]
+plolwdub-judgh-hjj-dqdobvlv-543[zkryh]
+ajmrxjlcren-ouxfna-ydalqjbrwp-355[ajrln]
+uqtqbizg-ozilm-lgm-amzdqkma-304[mqzag]
+lnkfaypeha-zua-lqnydwoejc-914[aelny]
+ibghopzs-pwcvonofrcig-qobrm-aobousasbh-844[obsac]
+ocipgvke-eqpuwogt-itcfg-tcddkv-gpikpggtkpi-804[salbg]
+ajmrxjlcren-lqxlxujcn-uxprbcrlb-823[lrxcj]
+rgndvtcxr-ytaanqtpc-sthxvc-843[tcanr]
+hqcfqwydw-sxesebqju-qdqboiyi-894[qbdei]
+tbxmlkfwba-gbiivybxk-qbzeklildv-757[biklv]
+vetllbybxw-utldxm-vhgmtbgfxgm-735[bglmt]
+mfklstdw-hdsklau-yjskk-vwhsjlewfl-528[xyuts]
+pxtihgbsxw-vtgwr-nlxk-mxlmbgz-657[xgblm]
+bnmrtldq-fqzcd-dff-lzqjdshmf-677[szdpt]
+xekdwvwnzkqo-sawlkjevaz-fahhuxawj-nayaerejc-654[zdeyh]
+gzefmnxq-bxmefuo-sdmee-xmnadmfadk-170[medfx]
+gpsxdprixkt-eaphixr-vgphh-rjhidbtg-htgkxrt-115[hgprt]
+eza-dpncpe-hplazytkpo-awldetn-rcldd-xlcvpetyr-535[tnpmg]
+bnmrtldq-fqzcd-eknvdq-sdbgmnknfx-781[dnqbf]
+nzcczdtgp-dnlgpyrpc-sfye-opgpwzaxpye-899[pcgyz]
+nwzekwypera-ydkykhwpa-odellejc-992[pwqrh]
+oknkvcta-itcfg-gii-wugt-vguvkpi-154[giktv]
+tcrjjzwzvu-upv-kvtyefcfxp-373[vcfjp]
+xst-wigvix-ikk-stivexmsrw-230[isxkt]
+fkqbokxqflkxi-zelzlixqb-qoxfkfkd-705[mntlq]
+qlm-pbzobq-yxphbq-zrpqljbo-pbosfzb-237[bpqoz]
+drxevkzt-avccpsvre-wzeretzex-269[ervzc]
+ksodcbwnsr-pogysh-oqeiwgwhwcb-480[mxdsl]
+tyepcyletzylw-qwzhpc-xlylrpxpye-613[tvcgy]
+rnqnyfwd-lwfij-hmthtqfyj-qtlnxynhx-437[ukdrt]
+oxjmxdfkd-jfifqxov-doxab-yxphbq-ixyloxqlov-393[xodfq]
+tcorcikpi-ejqeqncvg-fgrnqaogpv-804[cgqei]
+hqtyeqsjylu-zubboruqd-qsgkyiyjyed-712[yqubd]
+hvbizodx-ezggtwzvi-gjbdnodxn-967[dgzbi]
+zntargvp-enoovg-fgbentr-923[gneor]
+mvydjvxodqz-wvnfzo-hvmfzodib-447[zfpes]
+emixwvqhml-zijjqb-lmdmtwxumvb-148[mbijl]
+frqvxphu-judgh-gbh-whfkqrorjb-179[jwmgn]
+kyelcrga-njyqrga-epyqq-dglylagle-782[glyae]
+npmhcargjc-pyzzgr-bctcjmnkclr-522[crgjm]
+pxtihgbsxw-xzz-tvjnblbmbhg-943[bxght]
+oknkvcta-itcfg-hnqygt-qrgtcvkqpu-206[tcgkq]
+amlqskcp-epybc-zyqicr-sqcp-rcqrgle-522[bnemi]
+enqvbnpgvir-pnaql-fuvccvat-299[vnacp]
+xlrypetn-mldvpe-cpnptgtyr-509[nugrq]
+mbggf-qlssfilhu-klclsvwtlua-383[lsfgu]
+wlsiayhcw-wuhxs-wiuncha-mniluay-656[wahiu]
+gvaaz-cbtlfu-efqmpznfou-415[byzhx]
+rzvkjiduzy-nxvqzibzm-cpio-hvivbzhzio-343[zivbh]
+bqxnfdmhb-dff-otqbgzrhmf-781[fbdhm]
+wihmogyl-aluxy-wuhxs-wiuncha-lyuwkocmcncih-838[chuwi]
+enzcntvat-onfxrg-hfre-grfgvat-689[nkvyi]
+xgjougizobk-igtje-iugzotm-ygrky-540[giojk]
+mbggf-kfl-aljouvsvnf-773[fglva]
+qzoggwtwsr-xszzmpsob-sbuwbssfwbu-662[sbwzg]
+wsvsdkbi-qbkno-mkxni-mykdsxq-nofovyzwoxd-744[kodns]
+tpspahyf-nyhkl-lnn-klzpnu-721[nlphk]
+pejji-nio-bomosfsxq-380[oijsb]
+amlqskcp-epybc-cee-nspafyqgle-132[dsayt]
+luxciuwncpy-xsy-lyuwkocmcncih-240[cuyil]
+irdgrxzex-gcrjkzt-xirjj-vexzevvizex-165[xerzi]
+lxaaxbren-snuuhknjw-ujkxajcxah-381[axjnu]
+ktfitzbgz-ynssr-xzz-wxiehrfxgm-839[sjagq]
+hafgnoyr-enzcntvat-pnaql-pbngvat-genvavat-975[antvg]
+dfcxsqhwzs-qobrm-fsqswjwbu-896[sqwbf]
+zsxyfgqj-xhfajsljw-mzsy-xytwflj-619[jfsxy]
+yhwooebeaz-ywjzu-ykwpejc-hkceopeyo-706[eoywc]
+mvydjvxodqz-wpiit-kpmxcvndib-863[yrjnz]
+otzkxtgzoutgr-igtje-iugzotm-iutzgotsktz-332[tgzoi]
+pdjqhwlf-sodvwlf-judvv-vdohv-855[vdfhj]
+gpewwmjmih-fyrrc-gywxsqiv-wivzmgi-724[iwgmr]
+oqnidbshkd-idkkxadzm-rsnqzfd-391[lpscd]
+rgndvtcxr-hrpktcvtg-wjci-uxcpcrxcv-765[crtvx]
+esyfwlau-tmffq-xafsfuafy-970[fasuy]
+gvaaz-dipdpmbuf-efqbsunfou-545[zmynh]
+zsxyfgqj-wfggny-uzwhmfxnsl-463[cvqjn]
+oazegyqd-sdmpq-ngzzk-emxqe-430[flhis]
+jvuzbtly-nyhkl-zjhclunly-obua-zlycpjlz-643[ueimk]
+surmhfwloh-vfdyhqjhu-kxqw-ghsorbphqw-205[hqwfo]
+pualyuhapvuhs-zjhclunly-obua-thuhnltlua-825[ficqs]
+wbhsfbohwcboz-rms-oqeiwgwhwcb-194[wbhoc]
+gpsxdprixkt-ytaanqtpc-bpcpvtbtci-635[qkzhc]
+rnqnyfwd-lwfij-xhfajsljw-mzsy-qfgtwfytwd-931[fwjyd]
+ubhatstkwhnl-ktuubm-vnlmhfxk-lxkobvx-787[gtsqv]
+lqwhuqdwlrqdo-udeelw-dftxlvlwlrq-413[ldqwe]
+kloqemlib-lygbzq-pqloxdb-991[lbqod]
+veqtekmrk-tpewxmg-kveww-hiwmkr-282[ekwmr]
+rflsjynh-ytu-xjhwjy-jll-knsfshnsl-333[jlshn]
+bknsykmdsfo-pvygob-domrxyvyqi-432[yobdk]
+mybbycsfo-bkllsd-kxkvicsc-822[yzxcq]
+zixppfcfba-yxphbq-absbilmjbkq-991[gbhts]
+udskkaxawv-uzgugdslw-klgjsyw-684[gksuw]
+clxalrtyr-mfyyj-qtylyntyr-665[ylrta]
+uiovmbqk-jiasmb-lmaqov-694[mabio]
+xmtjbzidx-mvwwdo-zibdizzmdib-161[dizbm]
+wyvqljapsl-jovjvshal-bzly-alzapun-643[lajvp]
+zlilocri-zxkav-mrozexpfkd-445[rifng]
+pinovwgz-zbb-hvmfzodib-811[bziov]
+rtqlgevkng-dwppa-vgejpqnqia-284[gpqae]
+vrurcjah-pajmn-ljwmh-jlzdrbrcrxw-667[lmdrk]
+jlidywncfy-dyffsvyuh-ijyluncihm-838[yficd]
+cebwrpgvyr-sybjre-qrirybczrag-741[tsrqd]
+pbafhzre-tenqr-onfxrg-grpuabybtl-949[rbaef]
+lahxpnwrl-ljwmh-lxjcrwp-nwprwnnarwp-433[seonp]
+iuxxuyobk-igtje-iugzotm-iutzgotsktz-644[tiugo]
+qfkkj-prr-fdpc-epdetyr-951[prdef]
+nchhg-akidmvomz-pcvb-nqvivkqvo-954[osgtz]
+htwwtxnaj-gzssd-ijufwyrjsy-385[jswty]
+myxcewob-qbkno-mrymyvkdo-bokmaescsdsyx-328[sezot]
+rzvkjiduzy-mvwwdo-ncdkkdib-499[mfyze]
+emixwvqhml-lgm-uizsmbqvo-798[milqv]
+xmtjbzidx-wvnfzo-vivgtndn-941[nvdit]
+bknsykmdsfo-zvkcdsm-qbkcc-cobfsmoc-198[cksbm]
+gsrwyqiv-kvehi-fyrrc-jmrergmrk-906[regik]
+bqvvu-oywrajcan-dqjp-nawymqeoepekj-524[aejqn]
+upq-tfdsfu-sbccju-bobmztjt-883[btucf]
+surmhfwloh-fruurvlyh-mhoobehdq-orjlvwlfv-933[zymnj]
+wkqxodsm-tovvilokx-gybucryz-588[okvxy]
+nchhg-ntwemz-twoqabqka-902[ahnqt]
+iqmbazulqp-rgllk-rxaiqd-fqotzaxask-950[dtanc]
+ejpanjwpekjwh-nwxxep-bejwjyejc-732[jewpn]
+ajmrxjlcren-fnjyxwrinm-lqxlxujcn-vjwjpnvnwc-329[yhgwz]
+qcbgiasf-ufors-qvcqczohs-aofyshwbu-532[scfoq]
+jsehsyafy-vqw-ugflsafewfl-970[mfzcn]
+fab-eqodqf-qss-geqd-fqefuzs-560[qfesd]
+jef-iushuj-uww-sedjqydcudj-322[qyadz]
+kfg-jvtivk-jtrmvexvi-ylek-ivtvzmzex-347[wmlfu]
+pxtihgbsxw-ietlmbv-zktll-wxiehrfxgm-371[xiltb]
+wfintfhynaj-hmthtqfyj-jslnsjjwnsl-463[jnfhs]
+forwcoqhwjs-foppwh-kcfygvcd-480[cfowh]
+kzgwomvqk-rmttgjmiv-camz-bmabqvo-616[mvabg]
+pybgmyargtc-aylbw-amyrgle-nspafyqgle-392[yaglb]
+jyfvnlupj-ihzrla-lunpullypun-149[lytps]
+dpmpsgvm-cbtlfu-xpsltipq-467[plmst]
+oxaflxzqfsb-avb-zrpqljbo-pbosfzb-965[bfoza]
+amlqskcp-epybc-afmamjyrc-bctcjmnkclr-392[cmabj]
+encuukhkgf-tcddkv-yqtmujqr-362[kucdq]
+lqwhuqdwlrqdo-edvnhw-hqjlqhhulqj-595[sywmh]
+njmjubsz-hsbef-qspkfdujmf-cbtlfu-vtfs-uftujoh-857[fujsb]
+dsxxw-djmucp-umpiqfmn-340[mdpux]
+aflwjfslagfsd-hdsklau-yjskk-dstgjslgjq-736[sjlad]
+ynukcajey-ywjzu-iwjwcaiajp-758[sthmn]
+froruixo-lqwhuqdwlrqdo-fdqgb-uhdftxlvlwlrq-621[gtcry]
+chnylhuncihuf-jfumncw-alumm-mylpcwym-526[tyodr]
+ujoon-qphzti-uxcpcrxcv-817[copux]
+bkwzkqsxq-cmkfoxqob-rexd-ckvoc-666[kcoqx]
+pelbtravp-enqvbnpgvir-qlr-qrfvta-403[wqynx]
+yhtwhnpun-ibuuf-thuhnltlua-643[trfed]
+willimcpy-yaa-wihnuchgyhn-344[hiyac]
+thnulapj-jovjvshal-mpuhujpun-799[juhpa]
+nzcczdtgp-mldvpe-lnbftdtetzy-821[qvnmi]
+qzlozfhmf-idkkxadzm-btrsnldq-rdquhbd-209[dqzbf]
+ajvyjprwp-ouxfna-vjwjpnvnwc-407[jnpvw]
+hcd-gsqfsh-dzoghwq-ufogg-zcuwghwqg-688[nwgox]
+jrncbavmrq-qlr-genvavat-169[arvnq]
+crwwv-yrkkv-jxkxdbjbkq-653[ylpzs]
+pejji-tovvilokx-vyqscdsmc-146[vcijo]
+ikhcxvmbex-lvtoxgzxk-angm-inkvatlbgz-189[xgkva]
+jyddc-wgezirkiv-lyrx-xiglrspskc-620[ircdg]
+ajyqqgdgcb-aylbw-amyrgle-rpyglgle-210[glyab]
+mhi-lxvkxm-yehpxk-kxvxbobgz-319[lcest]
+rkpqxyib-gbiivybxk-lmboxqflkp-211[vustn]
+jchipqat-rdadguja-hrpktcvtg-wjci-tcvxcttgxcv-999[ctagj]
+ovbunmneqbhf-fpniratre-uhag-grpuabybtl-949[banru]
+nchhg-xtiabqk-oziaa-abwziom-174[aibho]
+dwbcjkun-ljwmh-ydalqjbrwp-303[jwbdl]
+lxuxaodu-krxqjijamxdb-bljenwpna-qdwc-bnaerlnb-563[ycjlt]
+yhkpvhjapcl-wshzapj-nyhzz-shivyhavyf-461[hyapv]
+udglrdfwlyh-mhoobehdq-wudlqlqj-959[dlhqo]
+myxcewob-qbkno-lsyrkjkbnyec-lexxi-cdybkqo-588[nfdem]
+fnjyxwrinm-ljwmh-lxwcjrwvnwc-459[wjncl]
+udpsdjlqj-udeelw-ghvljq-491[djleq]
+zloolpfsb-yrkkv-mrozexpfkd-783[koflp]
+drxevkzt-jtrmvexvi-ylek-ivrthlzjzkzfe-997[evzkr]
+ykjoqian-cnwza-ywjzu-ykwpejc-opknwca-264[wacjk]
+xekdwvwnzkqo-zua-zalwnpiajp-992[awzkn]
+fydelmwp-aczupnetwp-prr-cplnbftdtetzy-847[ptecd]
+lxwbdvna-pajmn-ouxfna-anjlzdrbrcrxw-563[anrxb]
+xfbqpojafe-gmpxfs-tbmft-545[rgdzm]
+kzeed-ojqqdgjfs-ijuqtdrjsy-411[jdqes]
+ktiaaqnqml-ntwemz-uizsmbqvo-642[azvew]
+udpsdjlqj-gbh-whfkqrorjb-725[rnqmt]
+lahxpnwrl-ouxfna-ydalqjbrwp-745[alnpr]
+dsxxw-bwc-mncpyrgmlq-548[cmwxb]
+joufsobujpobm-gvaaz-qmbtujd-hsbtt-fohjoffsjoh-727[ojbfh]
+laffe-jek-ynovvotm-670[efova]
+nzcczdtgp-ojp-xlcvpetyr-353[nvmak]
+kgjgrypw-epybc-djmucp-qyjcq-496[sqhmg]
+ykjoqian-cnwza-ywjzu-klanwpekjo-680[ajknw]
+nbhofujd-dipdpmbuf-efqbsunfou-415[fubdn]
+oaddaeuhq-ngzzk-fqotzaxask-144[hbxcm]
+lujbbrornm-vjpwncrl-snuuhknjw-ldbcxvna-bnaerln-459[nblrj]
+xgvnndadzy-wvnfzo-yzkvmohzio-135[znovd]
+jchipqat-tvv-jhtg-ithixcv-271[ymstr]
+xtwtelcj-rclop-nlyoj-dstaatyr-431[ntags]
+iutyaskx-mxgjk-jek-xkykgxin-618[kxgij]
+pxtihgbsxw-ktwbhtvmbox-cxeeruxtg-tgterlbl-943[txbeg]
+xfbqpojafe-dboez-dpbujoh-mbcpsbupsz-441[bpode]
+qfkkj-mfyyj-opalcexpye-613[yefjk]
+ejpanjwpekjwh-lhwopey-cnwoo-nawymqeoepekj-836[ewjop]
+qjopwxha-xqjju-odellejc-732[jeloq]
+bnknqetk-atmmx-lzmzfdldms-261[mdkln]
+xgsvgmotm-pkrrehkgt-sgtgmksktz-332[gktms]
+ryexqpqhteki-vbemuh-huqsgkyiyjyed-244[tjsqx]
+xjinphzm-bmvyz-ytz-yzkvmohzio-239[oznyv]
+eqttqukxg-rncuvke-itcuu-cpcnauku-180[jztvf]
+xgjougizobk-xghhoz-ygrky-696[gohkx]
+mtzslklcozfd-nsznzwlep-opgpwzaxpye-769[zplen]
+kgjgrypw-epybc-pyzzgr-jmegqrgaq-626[gprye]
+jlidywncfy-wbiwifuny-mniluay-396[iynwf]
+myvybpev-mkxni-mykdsxq-psxkxmsxq-536[rxnml]
+ibghopzs-qobrm-rsdzcmasbh-246[bshmo]
+jyfvnlupj-wshzapj-nyhzz-klwsvftlua-201[jlzaf]
+dzczkrip-xiruv-avccpsvre-cfxzjkztj-113[czrvi]
+dmbttjgjfe-dboez-dpbujoh-nbslfujoh-493[bjdoe]
+kfg-jvtivk-gifavtkzcv-srjbvk-jvimztvj-347[aymns]
+ktwbhtvmbox-vetllbybxw-ietlmbv-zktll-wxlbzg-241[bltvw]
+tmrszakd-cxd-qdrdzqbg-417[dqrza]
+nzydfxpc-rclop-nsznzwlep-nfdezxpc-dpcgtnp-899[ynbfk]
+fruurvlyh-mhoobehdq-rshudwlrqv-491[hrudl]
+odkasqzuo-pkq-emxqe-144[qekoa]
+hwbba-dcumgv-vtckpkpi-180[bckpv]
+lsyrkjkbnyec-cmkfoxqob-rexd-wkbuodsxq-718[yfzcq]
+xgvnndadzy-kgvnodx-bmvnn-xjiovdihzio-395[ndvio]
+willimcpy-vumeyn-omyl-nymncha-890[nmyux]
+mbggf-zjhclunly-obua-yljlpcpun-487[lubcg]
+ryexqpqhteki-sqdto-tuiywd-608[xhjzp]
+egdytrixat-gpqqxi-prfjxhxixdc-193[xidgp]
+nbhofujd-dszphfojd-cbtlfu-sftfbsdi-909[fdbsh]
+rflsjynh-gfxpjy-htsyfnsrjsy-489[istpm]
+vkrhzxgbv-vetllbybxw-ietlmbv-zktll-phkdlahi-189[lbvhk]
+lujbbrornm-ouxfna-uxprbcrlb-459[ozvca]
+pbafhzre-tenqr-fpniratre-uhag-erprvivat-117[raept]
+xgvnndadzy-xjmmjndqz-ytz-nvgzn-577[nzdgj]
+houngfgxjuay-pkrrehkgt-jkyomt-618[dltyf]
+bjfutsneji-hmthtqfyj-jslnsjjwnsl-411[jsntf]
+sgmtkzoi-lruckx-rghuxgzuxe-774[guxkr]
+nuatmlmdpage-nmewqf-abqdmfuaze-326[zbewa]
+dsxxw-zsllw-qyjcq-912[lqswx]
+cvabijtm-kivlg-kwibqvo-aitma-226[mvuhw]
+yuxufmdk-sdmpq-qss-bgdotmeuzs-768[sdmuq]
+qspkfdujmf-fhh-usbjojoh-597[elvgu]
+htqtwkzq-gfxpjy-hzxytrjw-xjwanhj-359[jpytc]
+gbc-frperg-pnaql-pbngvat-grpuabybtl-169[bgpar]
+yhkpvhjapcl-qlssfilhu-klclsvwtlua-123[lhsac]
+nglmtuex-vtgwr-vhtmbgz-ftkdxmbgz-813[emnca]
+atyzghrk-lruckx-ygrky-592[kryga]
+dkqjcbctfqwu-tcddkv-tgegkxkpi-362[kcdtg]
+sawlkjevaz-bhksan-lqnydwoejc-914[aejkl]
+kdijqrbu-uww-ijehqwu-712[uwijq]
+rwcnawjcrxwju-snuuhknjw-mnbrpw-121[wnjru]
+vrurcjah-pajmn-mhn-bcxajpn-225[ajnch]
+clotzlnetgp-mldvpe-cpdplcns-353[lpcde]
+wihmogyl-aluxy-dyffsvyuh-womnigyl-mylpcwy-682[khzto]
+qcbgiasf-ufors-dzoghwq-ufogg-kcfygvcd-428[mselb]
+kwtwznct-ktiaaqnqml-akidmvomz-pcvb-bmkpvwtwog-824[kmtwa]
+crwwv-oxyyfq-pqloxdb-289[oqwxy]
+iutyaskx-mxgjk-ckgvutofkj-lruckx-jkvgxzsktz-852[kxgjt]
+irgyyolokj-yigbktmkx-natz-giwaoyozout-930[oygik]
+yhtwhnpun-buzahisl-jhukf-jvhapun-mpuhujpun-565[uhnpj]
+fbebmtkr-zktwx-ktuubm-ybgtgvbgz-761[ifsyt]
+lejkrscv-avccpsvre-dribvkzex-165[vcerk]
+avw-zljyla-yhiipa-jvuahputlua-617[aluhi]
+xjmmjndqz-wpiit-xjiovdihzio-889[ijdmo]
+pbybeshy-fpniratre-uhag-jbexfubc-819[snuje]
+ktwbhtvmbox-vtgwr-phkdlahi-683[htbkv]
+avw-zljyla-wshzapj-nyhzz-ylzlhyjo-409[zlyah]
+tcrjjzwzvu-treup-tfrkzex-drerxvdvek-633[retvz]
+zlkprjbo-doxab-ciltbo-qoxfkfkd-627[nmwxj]
+vkrhzxgbv-lvtoxgzxk-angm-labiibgz-995[gbvxz]
+gpbepvxcv-hrpktcvtg-wjci-sthxvc-609[cvptg]
+hwbba-gii-fgrctvogpv-804[gbiva]
+nwlddtqtpo-nsznzwlep-dstaatyr-275[tdnal]
+ovbunmneqbhf-fpniratre-uhag-hfre-grfgvat-637[fraeg]
+pkl-oaynap-fahhuxawj-nayaerejc-888[mnchz]
+etaqigpke-hnqygt-qrgtcvkqpu-752[antmz]
+lugjuacha-wuhxs-ijyluncihm-214[hfsun]
+zloolpfsb-zxkav-abpfdk-341[abfkl]
+bknsykmdsfo-mkxni-mykdsxq-bokmaescsdsyx-822[skmdx]
+xjgjmapg-zbb-hvivbzhzio-499[bzghi]
+amjmpdsj-ajyqqgdgcb-qaytclecp-fslr-qrmpyec-652[smgnt]
+qczcftiz-dzoghwq-ufogg-rsgwub-714[gzcfo]
+gokzyxsjon-wsvsdkbi-qbkno-nio-myxdksxwoxd-900[oksxd]
+ktfitzbgz-vtgwr-vhtmbgz-lxkobvxl-969[tbgvz]
+hqtyeqsjylu-uww-efuhqjyedi-270[dytgj]
+ovbunmneqbhf-pnaql-pbngvat-freivprf-845[nbfpv]
+kzgwomvqk-akidmvomz-pcvb-aitma-902[makvi]
+sedikcuh-whqtu-zubboruqd-bqrehqjeho-790[hqube]
+kwvacumz-ozilm-jcvvg-lmaqov-382[vmacl]
+rgndvtcxr-qjccn-prfjxhxixdc-661[cxrdj]
+tbxmlkfwba-oxyyfq-tlohpelm-523[uhvaf]
+iuxxuyobk-inuiurgzk-vaxingyotm-514[iuxgk]
+odkasqzuo-omzpk-oamfuzs-ymzmsqyqzf-170[zmoqs]
+ktwbhtvmbox-unggr-lxkobvxl-527[bxgkl]
+ynssr-vtgwr-mxvaghehzr-423[rghsv]
+sgmtkzoi-kmm-lotgtiotm-670[mtogi]
+ugdgjxmd-vqw-kwjnauwk-944[wdgjk]
+rdggdhxkt-jchipqat-snt-gthtpgrw-713[tghdp]
+zvyvgnel-tenqr-wryylorna-npdhvfvgvba-663[vnrya]
+jsvagsulanw-usfvq-ugslafy-esjcwlafy-762[fygle]
+zsxyfgqj-wfggny-hzxytrjw-xjwanhj-931[jgwxy]
+wkqxodsm-tovvilokx-dbksxsxq-822[cpsgv]
+mbiyqoxsm-tovvilokx-yzobkdsyxc-458[oxybi]
+lzfmdshb-bzmcx-bnzshmf-vnqjrgno-261[ujfyc]
+oknkvcta-itcfg-dcumgv-hkpcpekpi-258[ckpgi]
+iuxxuyobk-inuiurgzk-sgtgmksktz-202[ztjvk]
+hjgbwuladw-hdsklau-yjskk-ljsafafy-372[mvkts]
+rdadguja-eaphixr-vgphh-tcvxcttgxcv-739[acght]
+nsyjwsfyntsfq-idj-xmnuunsl-983[nsfju]
+gifavtkzcv-wcfnvi-rthlzjzkzfe-971[zfvci]
+qvbmzvibqwvit-jiasmb-zmamizkp-278[imbvz]
+houngfgxjuay-ckgvutofkj-yigbktmkx-natz-ykxboiky-930[kgyot]
+guahyncw-wuhxs-lyuwkocmcncih-500[chuwn]
+gpbepvxcv-ytaanqtpc-bpgztixcv-479[pctva]
+ksodcbwnsr-pogysh-gsfjwqsg-584[sgowb]
+dmybmsuzs-pkq-mzmxkeue-612[meksu]
+xmtjbzidx-xviyt-vxlpdndodji-577[dxijt]
+dpmpsgvm-kfmmzcfbo-bobmztjt-701[mbfop]
+oxjmxdfkd-pzxsbkdbo-erkq-xznrfpfqflk-627[jhlvw]
+npmhcargjc-aylbw-amyrgle-pcacgtgle-652[acgle]
+votubcmf-fhh-tfswjdft-701[fthbc]
+gzefmnxq-dmnnuf-geqd-fqefuzs-482[fenqd]
+dmpuamofuhq-oazegyqd-sdmpq-eomhqzsqd-tgzf-emxqe-378[mctsn]
+gzefmnxq-dmnnuf-etubbuzs-508[nubef]
+bwx-amkzmb-ntwemz-ivitgaqa-902[noeig]
+rdchjbtg-vgpst-qphzti-pcpanhxh-635[hptcg]
+qzchnzbshud-atmmx-sqzhmhmf-131[hmzqs]
+tipfxvezt-treup-tfrkzex-cfxzjkztj-633[tzefx]
+mvhkvbdib-wpiit-vivgtndn-603[ivbdn]
+hqfxxnknji-ojqqdgjfs-htsyfnsrjsy-957[bdtai]
+clxalrtyr-clmmte-dezclrp-275[lcrem]
+fubrjhqlf-udpsdjlqj-udeelw-ghyhorsphqw-387[hdjlq]
+qzoggwtwsr-dzoghwq-ufogg-hsqvbczcum-792[goqwz]
+nvrgfezqvu-sleep-ivtvzmzex-113[evzfg]
+fruurvlyh-iorzhu-orjlvwlfv-881[jcdtf]
+myxcewob-qbkno-mkxni-mykdsxq-nozvyiwoxd-900[oxkmn]
+wyvqljapsl-jhukf-jvhapun-aljouvsvnf-955[jvalu]
+tpspahyf-nyhkl-jhukf-zhslz-643[pytob]
+kgjgrypw-epybc-rmn-qcapcr-qaytclecp-fslr-nspafyqgle-938[mxunk]
+yknnkoera-zua-klanwpekjo-446[dphwe]
+kzgwomvqk-xtiabqk-oziaa-bziqvqvo-278[qaiko]
+iruzfrtkzmv-wcfnvi-rercpjzj-555[rzcfi]
+diozmivodjivg-apuut-nxvqzibzm-cpio-yzkvmohzio-447[iozvm]
+fydelmwp-ojp-nzyeltyxpye-405[nyzmg]
+ktiaaqnqml-ziuxioqvo-kivlg-kwibqvo-zmikycqaqbqwv-564[qikva]
+xst-wigvix-ikk-vieguymwmxmsr-724[imxgk]
+jfifqxov-doxab-ciltbo-jxohbqfkd-965[obfxd]
+rdggdhxkt-hrpktcvtg-wjci-rdcipxcbtci-531[ctdgi]
+awzwhofm-ufors-qobrm-qcohwbu-oqeiwgwhwcb-896[mkvzu]
+vagreangvbany-fpniratre-uhag-qrcnegzrag-689[xfuaz]
+vjpwncrl-lqxlxujcn-jlzdrbrcrxw-693[lrcjx]
+ibghopzs-dzoghwq-ufogg-rsdzcmasbh-948[ghosz]
+ynssr-vhglnfxk-zktwx-ietlmbv-zktll-phkdlahi-917[lkhti]
+tfcfiwlc-treup-tfrkzex-dribvkzex-685[efrtc]
+frqvxphu-judgh-fkrfrodwh-hqjlqhhulqj-803[wjnmk]
+vhkkhlbox-xzz-kxtvjnblbmbhg-631[bhkxl]
+ltpedcxots-snt-stepgibtci-297[tscei]
+nzwzcqfw-nlyoj-xlylrpxpye-275[lynpw]
+ejpanjwpekjwh-nwilwcejc-zua-hkceopeyo-498[ypoze]
+sno-rdbqds-azrjds-rghoohmf-859[dorsh]
+qzoggwtwsr-suu-qcbhowbasbh-480[bswgh]
+gvcskirmg-ikk-gywxsqiv-wivzmgi-698[rmvil]
+ktwbhtvmbox-ftzgxmbv-vtgwr-ftkdxmbgz-163[tbgmv]
+oxmeeuruqp-omzpk-oamfuzs-efadmsq-716[meoua]
+xjinphzm-bmvyz-hvbizodx-xviyt-xjvodib-ozxcijgjbt-343[ixbjv]
+jyfvnlupj-ibuuf-svnpzapjz-851[gmsnf]
diff --git a/2016/aoc4/src/main.rs b/2016/aoc4/src/main.rs
new file mode 100644
index 0000000..ea1edd8
--- /dev/null
+++ b/2016/aoc4/src/main.rs
@@ -0,0 +1,83 @@
+use std::io::BufReader;
+use std::io::prelude::*;
+use std::fs::File;
+use std::collections::BTreeMap;
+
+#[derive(Debug)]
+struct Room {
+ encrypted_name: String,
+ sector_id: u32,
+ checksum: String
+}
+
+impl Room {
+ fn new(line: String) -> Room {
+ let name_length = line.find(char::is_numeric).unwrap();
+ let (name, sector_and_check) = line.split_at(name_length);
+ let (sector, check) = sector_and_check.split_at(sector_and_check.len()-7);
+
+ Room {
+ encrypted_name: name.trim_matches('-').to_string(),
+ sector_id: sector.parse().unwrap(),
+ checksum: check.trim_matches(|c| c=='[' || c==']').to_string()
+ }
+ }
+
+ fn is_valid(&self) -> bool {
+ let mut char_counts: BTreeMap<char, i32> = BTreeMap::new();
+ let chars = self.encrypted_name.chars()
+ .filter(|&c| c != '-');
+ for c in chars {
+ *char_counts.entry(c).or_insert(0) += 1;
+ }
+
+ let mut vec_char_counts = char_counts.iter().collect::<Vec<_>>();
+ vec_char_counts.sort_by_key(|&(_, &value)| -value);
+ let expected_checksum = vec_char_counts
+ .iter()
+ .take(5)
+ .map(|&(&key, _)| key)
+ .collect::<String>();
+
+ expected_checksum == self.checksum
+ }
+
+ fn decrypt_name(&self) -> String {
+ self.encrypted_name.chars().map(|c| {
+ if c == '-' {
+ ' '
+ } else {
+ let current_digit = c as u8 - 'a' as u8;
+ let new_digit = ((current_digit as u32 + self.sector_id) % 26) as u8;
+ (new_digit + 'a' as u8) as char
+ }
+ }).collect()
+ }
+}
+
+fn main() {
+ let rooms = read_file();
+ let valid_rooms = rooms.iter()
+ .filter(|r| r.is_valid())
+ .collect::<Vec<_>>();
+ let sector_sum: u32 = valid_rooms.iter()
+ .map(|r| r.sector_id)
+ .sum();
+
+ println!("Sector sum {}", sector_sum);
+
+ let north_poles = rooms.iter()
+ .filter(|r| r.decrypt_name().contains("north"))
+ .inspect(|r| println!("{} {}", r.decrypt_name(), r.sector_id))
+ .collect::<Vec<_>>();
+ println!("{:?}", north_poles);
+}
+
+fn read_file() -> Vec<Room> {
+ let file = BufReader::new(File::open("input.txt").unwrap());
+ file.lines()
+ .map(|line| line.unwrap().trim().to_string())
+ .filter(|line| line.len() > 0)
+ .map(Room::new)
+ .collect()
+}
diff --git a/2016/aoc5/Cargo.lock b/2016/aoc5/Cargo.lock
new file mode 100644
index 0000000..6d0e69c
--- /dev/null
+++ b/2016/aoc5/Cargo.lock
@@ -0,0 +1,12 @@
+[root]
+name = "aoc5"
+version = "0.1.0"
+dependencies = [
+ "md5 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "md5"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
diff --git a/2016/aoc5/Cargo.toml b/2016/aoc5/Cargo.toml
new file mode 100644
index 0000000..cc09c3c
--- /dev/null
+++ b/2016/aoc5/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "aoc5"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@entelect.co.za>"]
+
+[dependencies]
+md5 = "^0.2" \ No newline at end of file
diff --git a/2016/aoc5/src/main.rs b/2016/aoc5/src/main.rs
new file mode 100644
index 0000000..31bef5e
--- /dev/null
+++ b/2016/aoc5/src/main.rs
@@ -0,0 +1,49 @@
+extern crate md5;
+
+fn main() {
+ let room = "reyedfim";
+
+ let mut i = 0;
+ let mut found_bytes = 0;
+
+ let mut code: [Option<u8>; 8] = [None;8];
+
+ println!("Cracking the passwordz");
+ print_code(&code);
+
+ while found_bytes < 8 {
+ let room_string = format!("{}{}", room, i);
+ let room_bytes = room_string.into_bytes();
+ let hash = md5::compute(room_bytes.as_slice());
+ if match_hash(hash) {
+ let position = hash[2];
+ let value = hash[3] / 16;
+ if code[position as usize].is_none() {
+ code[position as usize] = Some(value);
+ print_code(&code);
+ found_bytes += 1;
+ }
+ }
+
+ i+=1;
+ }
+
+ println!("Password found!");
+}
+
+fn match_hash(hash: [u8; 16]) -> bool {
+ hash[0] == 0 &&
+ hash[1] == 0 &&
+ hash[2] < 8
+}
+
+fn print_code(code: &[Option<u8>; 8]) {
+ println!("");
+ for &byte in code.iter() {
+ match byte {
+ None => {print!("-");},
+ Some(x) => {print!("{:x}", x);}
+ }
+ }
+ println!("");
+}
diff --git a/2016/aoc6/Cargo.lock b/2016/aoc6/Cargo.lock
new file mode 100644
index 0000000..f61aebf
--- /dev/null
+++ b/2016/aoc6/Cargo.lock
@@ -0,0 +1,4 @@
+[root]
+name = "aoc6"
+version = "0.1.0"
+
diff --git a/2016/aoc6/Cargo.toml b/2016/aoc6/Cargo.toml
new file mode 100644
index 0000000..22fc24a
--- /dev/null
+++ b/2016/aoc6/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "aoc6"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@entelect.co.za>"]
+
+[dependencies]
diff --git a/2016/aoc6/input.txt b/2016/aoc6/input.txt
new file mode 100644
index 0000000..6caf81a
--- /dev/null
+++ b/2016/aoc6/input.txt
@@ -0,0 +1,624 @@
+iyeajeby
+qengiuoe
+wxzardgo
+jciguemn
+zcampkps
+kiqjpjqb
+knwhoxlw
+iaxxpjhe
+kgrgaixi
+lciydajs
+svugtdwe
+nwailbqu
+cbkwwxvt
+lqjyrawh
+jylmtlzk
+firecpyg
+xegtcvvx
+jllqqzeq
+hggmnxlc
+pdmfuqlx
+hnbksbkl
+pmjmiqti
+gpmuvcsh
+tspnxvnm
+hghwizhe
+sgokeybb
+jtphckcv
+usypmmzq
+irlfaboj
+prgiqvil
+nfqegpjd
+aivwwkix
+xeljyzjv
+mrdpqlzc
+metcvpvd
+ifizfkgl
+uznvqiqw
+uzylkeui
+obmqhlan
+vaoivkeq
+wvlbwfaf
+ntbgtbpz
+lbuieiea
+rljyfeop
+rynkdwiq
+hyqpjwzl
+supxlsql
+bntmjboc
+qntfhain
+xxtjctjz
+qppakrbj
+ptnnwmlg
+pucuqrpi
+ensluhxm
+wtnabsej
+hvnozkvx
+dhxgysdk
+qdizyrkg
+vtuyxjky
+lxwcyfxr
+xoyphxmb
+ltylucct
+oaawvjfa
+qbjmdcap
+raqhkkbe
+uqtxpvhj
+pddzoucq
+axfbgpvj
+eohksqcm
+jtmmkovb
+paronxgv
+gtxnqybz
+qfsobvxz
+ywrnogwz
+ytdvpmzv
+daeappko
+zgjdatzf
+psrfofvi
+uobknckb
+rvndwdgs
+oedojfqv
+shxmutcm
+nigdxgrz
+ngwvdair
+wexxkvwn
+oqmrjlcr
+vcbmxvyb
+ekdfdzch
+klphcryl
+bbtobqqo
+wupuvqio
+hwiufjpk
+rckjewzp
+vhgzdtil
+qrvqytfe
+opolrgwi
+nektqhbg
+ynubobwy
+cqnysvzf
+muqrlihy
+ncbeeuur
+hxsvpoug
+kacsofnk
+vztkoicu
+smxiuykn
+sgnmdqmw
+sfsxxnds
+iwquujxr
+fwssfvfw
+qyoswzsm
+kvfvizgu
+fmewmudq
+mvtekgjn
+kkffshrt
+jzbkyxzf
+beszoylz
+lnhmbwae
+tijfkcrt
+culovluh
+jrgtbxma
+yqtlarnm
+rdlxlplt
+vzgphnpi
+igpbfrrd
+yqdgvyke
+juhzerjo
+kfwlvhag
+ysznuuey
+turxgyik
+iqgcxxpa
+tjrmtkjk
+ywfcwvqp
+ozmguljj
+maxegnqi
+vavydxwd
+dhlckjra
+omvdoafe
+rvzejiol
+rsnpjser
+nejognkt
+agkavzki
+uzskztny
+knvzbkff
+iiuhrzsp
+amxryjhv
+yqxdgdaj
+tpvellfc
+dqutbibf
+fbbrpcbg
+shxlcvmc
+ociooedg
+nedlhmfo
+ohdxifnx
+mqhbpyed
+tauomzjy
+bkooiesi
+xtukgdec
+mygazipf
+wkvecylo
+tlejwzcj
+rcpygkbi
+uihidqdr
+lxwthely
+ywyoahob
+zwjrveex
+eqahofbx
+mvipdaql
+zccdioga
+gttnacns
+urajevul
+uhsdjkhm
+cjbpznua
+tyfvodhw
+feadmwyl
+cjmccfcy
+uawxsuyy
+xzzidfrj
+slhgapvb
+tbdwntwx
+bvspfozq
+pkkwgooy
+frnhifax
+sxfkbojn
+ffnzlqda
+pbtbewtm
+mivpqcyc
+gztezasy
+jlfdrmou
+xjmazeef
+lgcaevtl
+piidoxbi
+iczlosyt
+egszahwu
+cmbybzvi
+orczduhd
+hzorfhdv
+yptggtmu
+yfsmednv
+ajawzgpp
+niicgavl
+mmdpsogr
+wkufsuct
+yboinvnc
+lmwbrqmb
+rrsfhics
+xguvmcmi
+yldifule
+laycxgaf
+jtnizmxf
+qrbpqznc
+cpplgbsm
+xzkwttnj
+axjxusuh
+nthcjcqn
+zjkdjlcz
+uulqjmfq
+djqlzrcb
+ftxhzuoq
+bfrzrdtn
+fvovpzts
+tloyyqoa
+spupkgwb
+ishhbwok
+spyfzbsj
+bvvnfnxx
+iuectyxc
+xbbjridq
+drzfvsrw
+gokuvwjf
+hhkmgqxf
+epijynaj
+bfxdnibq
+pjoovmhf
+izbgldjr
+rvxrhjxa
+blhhorwy
+xwmobyph
+pfoimsbl
+gprwonid
+hfwmazfu
+dudhehvt
+nbekhgbg
+qbwklpvg
+yemjyobm
+vmocaztb
+xkwklord
+tjooucsf
+qowresxh
+cxeapuvv
+zmlzqivx
+fryanflf
+kxcrserx
+jtoqtooo
+axrtkjyo
+fwwzdsbx
+pyphszfp
+ekdcnrgx
+zyrhxcvc
+blcqplmo
+wnsiistm
+slavtfip
+sixawglm
+sxpjnpsa
+sfwmudzt
+kcpetkcw
+iqfufsws
+wdfbgvol
+muvtnxzg
+otgycshn
+gddbabma
+swksjxjx
+hnfcsnir
+tmcnycfi
+lpvuwehn
+htyogany
+rggezmhh
+guzhwmss
+zoqiscdy
+dqbtvyrb
+wfnymsai
+klfpdgvn
+ihqjdope
+dudllmty
+gpbkmwtd
+tjmtvjpk
+sjnkfrsk
+bgruelqs
+repdjhre
+flxjlvah
+lkpnbajp
+rmkqdjpx
+enimddcn
+nzowveei
+cohzzkee
+sxfvyqwi
+vlztaixp
+xgkrlsyh
+eaurshic
+kifvzhsv
+dxfsexup
+fyqqbzgm
+bnxsgjxg
+ndbbkscp
+xyjhzqel
+eyanetmo
+quakpmsr
+kqfeprrb
+hhsvwyse
+jjvjivng
+zkeiinwn
+adibxest
+zjzrkmxr
+kceozeud
+iknfusda
+gqmuepbo
+ccwltods
+smaurfwy
+yojrrudk
+akygvwyf
+dermnpvn
+bvfvjskb
+pcohqoyu
+odyqfyhy
+nqgepwqo
+zijtbqgd
+czfgqsmr
+fkgeoorf
+udvncboo
+dwxgrgck
+vqhthccp
+gvkfkpwr
+pquhsiha
+hlpqfrpz
+aeirprab
+bouoglph
+zwyimnhu
+zpculwdn
+mokpnpeq
+hfgfjamc
+osgncdnf
+ejfjqwql
+tovcchzu
+wwmburym
+mdonvwnw
+wxjysrlt
+cjrqrnqv
+okzeilge
+egunoujn
+dlbaqemd
+qrdyabya
+vaaxguwe
+hjqwytxz
+xtvmgdaq
+noijjgft
+xgysigmw
+urbsmwdk
+bjnerghw
+aspvghjp
+hgciumho
+ivjihqed
+wtvkobuw
+zhtyhllg
+jlxjwjui
+xkmxhoek
+rydzmqip
+ydonbzvk
+byeoptyo
+gpnnqxrb
+hyzplaie
+tbedyaph
+zgqhqnmg
+tdepvaex
+wytwmgkr
+qsmuyzys
+fijlauqj
+wyqylgam
+lbwxnluj
+nmecxavu
+ofktnhfb
+lhjgzkjr
+ucctfetk
+mggvgkmu
+yzmnbbhe
+kcnqhuam
+rxiwfblx
+vfufzjou
+cpynrovg
+qdwshnpi
+pcrxywto
+ozhzwpwa
+zroxmvfr
+fpipfjvu
+leyiafxs
+oacgxszs
+voebeyvn
+ixkqabkl
+lqabfhtd
+oewbtlgc
+vdlaniii
+tabtkolp
+xufkdmem
+niofeqxn
+innfbedm
+zahlnzhd
+whmqyffv
+fhjascxd
+wnsktsdi
+ucdgnvkf
+fmpxuyml
+pnvuhmup
+wohfuyto
+wthjmlzx
+tkcdmttv
+ubyrests
+mkrplnes
+mglepvyl
+shqafjly
+gbpaitlu
+cesjmugk
+qnqmvnks
+kbvvlltq
+luvgtdmv
+rrrhawdz
+dthrxkth
+bglwrdgk
+apqxickb
+vnzwzjba
+reiafjdt
+qfcunhks
+dwmhshtd
+rwtwnxxu
+gjgdhwtr
+dhrwidzp
+manohccv
+jvccmlat
+txhfklix
+nczocnew
+gxlpkgqr
+vsrtxogh
+ixhtcwaz
+qfapctcq
+glvtpiug
+jnuecngg
+bktbndyg
+ceboexzj
+lsjakjjw
+oemmiqvu
+zqscwlay
+hqedlpzb
+hsrztfxj
+fjpwidgw
+abrsenrv
+qseoiuyj
+jtjtqxgr
+esczykzc
+mazmziim
+szzwzfuq
+zbcfhaiz
+uqsnjwus
+vwzqohsu
+yylbjhnl
+chqdcblk
+vporypnv
+vfhdofdx
+eztmaogh
+wlzjsgbw
+dqutunrc
+gwtpdvpm
+ywxghnkc
+alacomlw
+jfuygdcy
+zkoeauig
+abufqquo
+ncilvdgq
+guinnabe
+pdwybure
+jocsrmfp
+acwncthl
+cdnaffnn
+zyqbszzz
+azhxybig
+hibjuhsw
+tvckjxuf
+vklsqbos
+efzukhlt
+kjaqqofz
+esxcyrxt
+yocrwucn
+iodafafm
+oiakmvtb
+dmbgtcpj
+qnzrryot
+ufcbptbz
+veprgqre
+umsltfes
+bvvqhcmz
+rucsowjt
+kkbgkrxe
+fksibbfh
+tyckeiqo
+gfqurpyl
+raljmvsf
+chednohc
+gowzqrfm
+ypktqcvb
+fgiusizq
+jvdsmnhu
+esfuxpra
+uraiwlfz
+vpkulaao
+erkvbjrj
+mrhjjist
+xmpayrdq
+biqwpkrm
+lrlhkljw
+rbaglxsu
+kryywepc
+mrydxkuv
+obksnkir
+jogxscwa
+pxkzdamo
+wcywigdv
+acqicmyz
+xiqhgpik
+izubxapc
+yrzfptzd
+qmyltgkw
+dwedcarp
+oouewlrv
+izelyufn
+ehdstcah
+nylqvqtd
+ywxjkxnx
+sstceepq
+bjihzptq
+nvawrewu
+plftxhsh
+eyuzdika
+gjdyaoek
+euqeablj
+zhgjzdki
+lyygbhly
+joscwikc
+cbqczxbu
+xnhptyqu
+txvltmyh
+kwtaueat
+btpbbibj
+ueytsouw
+kfmmcyqk
+fwflotzv
+ouwyewua
+hslsjpur
+jdgrtwme
+lgelctfc
+nlxyvkgh
+xpeslfje
+adcifgwz
+gquvwdeb
+rkmzqard
+lvzehstp
+cijqaygt
+dwfzsddm
+vmwqrrsy
+aotsaqoj
+irjumknp
+altzbfjo
+hubsrgdb
+nudnkfof
+bvhvcltf
+xupumtmg
+kjfxunyd
+pjwhyeuz
+zmnxkepw
+mpzvjjni
+cskxvphp
+dykbldmb
+ymmsshaj
+gdsvrycq
+ehdvpiqy
+engermzp
+tmexxgkw
+acjslpiv
+qprqqyqf
+fbictbjs
+llaeirez
+uxoofxnc
+ukgpjtlz
+tpxwxzpu
+cuzgcjgd
+jnzxfqww
+wemyhsbv
+aslnwaqg
+aibaikgt
+hglojgqv
+larqrtka
+ozlrwpna
+pzxsdrjh
+vsnuuusj
+jswkkvun
+darbbbhk
+woeihkoh
+xdsunolx
+ymvbtrxg
+mtodxqik
+fxkcdfwq
+koivubnr
+gitldbqs
+bsjymzpd
+whaluyys
+rvaftjox
+qhinxcid
+snpkwuko
+mdgvstoq
+zzytixxc
+qsgrlmdn
+ddjqxeaw
+uilqxznh
+chazpmyk
+iivrixot
+casfxwwa
+mvjdazsr
+dnmivmal
+eayyeyfh
diff --git a/2016/aoc6/src/main.rs b/2016/aoc6/src/main.rs
new file mode 100644
index 0000000..45ae3b1
--- /dev/null
+++ b/2016/aoc6/src/main.rs
@@ -0,0 +1,27 @@
+use std::io::BufReader;
+use std::io::prelude::*;
+use std::fs::File;
+use std::collections::HashMap;
+
+fn main() {
+ let lines = read_file();
+ let answer_width = lines[0].len();
+ for i in 0..answer_width {
+ let line = lines.iter().map(|line| line.chars().nth(i).unwrap()).collect::<Vec<_>>();
+
+ let mut char_counts = HashMap::new();
+ for character in line {
+ *char_counts.entry(character).or_insert(0) += 1;
+ }
+ let (character, _) = char_counts.iter().min_by_key(|&(_, &count)| count).unwrap();
+ println!("{}", character);
+ }
+}
+
+fn read_file() -> Vec<String> {
+ let file = BufReader::new(File::open("test_input.txt").unwrap());
+ file.lines()
+ .map(|line| line.unwrap().trim().to_string())
+ .filter(|line| line.len() > 0)
+ .collect()
+}
diff --git a/2016/aoc6/test_input.txt b/2016/aoc6/test_input.txt
new file mode 100644
index 0000000..32ba518
--- /dev/null
+++ b/2016/aoc6/test_input.txt
@@ -0,0 +1,16 @@
+eedadn
+drvtee
+eandsr
+raavrd
+atevrs
+tsrnev
+sdttsa
+rasrtv
+nssdts
+ntnada
+svetve
+tesnvt
+vntsnd
+vrdear
+dvrsen
+enarar
diff --git a/2016/aoc7/Cargo.lock b/2016/aoc7/Cargo.lock
new file mode 100644
index 0000000..58e04ee
--- /dev/null
+++ b/2016/aoc7/Cargo.lock
@@ -0,0 +1,4 @@
+[root]
+name = "aoc7"
+version = "0.1.0"
+
diff --git a/2016/aoc7/Cargo.toml b/2016/aoc7/Cargo.toml
new file mode 100644
index 0000000..1b18be9
--- /dev/null
+++ b/2016/aoc7/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "aoc7"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@gmail.com>"]
+
+[dependencies]
diff --git a/2016/aoc7/input.txt b/2016/aoc7/input.txt
new file mode 100644
index 0000000..d50f36c
--- /dev/null
+++ b/2016/aoc7/input.txt
@@ -0,0 +1,2000 @@
+wysextplwqpvipxdv[srzvtwbfzqtspxnethm]syqbzgtboxxzpwr[kljvjjkjyojzrstfgrw]obdhcczonzvbfby[svotajtpttohxsh]cooktbyumlpxostt
+emzopymywhhxulxuctj[dwwvkzhoigmbmnf]nxgbgfwqvrypqxppyq[qozsihnhpztcrpbdc]rnhnakmrdcowatw[rhvchmzmyfxlolwe]uysecbspabtauvmixa
+bqooxxweoytjghrqn[hkwwukixothfyglw]kpasnmikmbzcbfi[vlnyszifsaaicagxtqf]ucdyxasusefuuxlx
+rxpusykufgqujfe[rypwoorxdemxffui]cvvcufcqmxoxcphp[witynplrfvquduiot]vcysdcsowcxhphp[gctucefriclxaonpwe]jdprpdvpeumrhokrcjt
+iungssgfnnjlgdferc[xfffplonmzjmxkinhl]dehxdielvncdawomqk[teizynepguvtgofr]fjazkxesmlwryphifh[ppjfvfefqhmuqtdp]luopramrehtriilwlou
+mqxqhcpalwycdxw[fkwhjscfmgywhtvdb]khadwvhkxygtxqx
+ihekzgbwpjxgbau[eqpvqxncntbtsqn]mbtbcujdkbrhxdu
+izikobnovmjzngo[ombcpcvshnedtndu]lnnmdkuapgnxpgyxcmg[bgnxdzmiolfvvaizu]tcvnrfufuvhgmlxcm
+yhrowrreplrrsbupeor[nchtznfzbzwnogh]rynudxihckzattbz[dshxeaqusdlhydtm]rvqzuffgqtysfzxp
+unfjgussbjxzlhopoqg[ppdnqkiuooukdmbqlo]flfiieiitmettblfln
+hgtbgxarmgbxqrhghxb[hflfvoetxfisqsj]syhkugztqkywetyhad[fmptjuaqittvvyooda]cjkxbnylglnlfleelzu
+npxhwtitqnddkwg[gmzggwnvygsroeaadtc]gudnfyefqbbgyspdxjw[ilthbdqubqnveowv]xitfldhfjyjsomygjg[knmrlvoiqyytigytlum]dlfpsnyzmhkmeevfwsf
+wjzwftiuixvwyzmgoe[jbfghrqhyywwhlu]wcijbojvlgjjdtowzpv[lgfvxfdusgxddsppbxb]pagicuiuerzeydww[wlpjklgzyilrifonz]gdicckmxibtwwoesaxf
+eilrieezaciolhnhrc[hcisnfomqiiaculxfv]bfyxxhgrakqogthzft
+xijomgpzpilomlpy[sfgwaovcybyhoogrxsv]ufncwrahejwlhyvz
+nojlhdpfkjbhahgqo[lqrkjabuijutlcbq]caszlkvkofxjyqzsttc[isqicyomykudneq]izuzehgtmwnnvfrlrja
+qwfvuzrogqzvnhyqdv[qhnjhafmrtghosbmskc]msmwswtgzlpmtmzne[kovzhefjqtqadhj]myqisirynftmtzvxvvz
+frfongnaecavmrhj[uuptwvcqozxnglsd]kwpovfwuhmqjkog[phtrgysxaltvbohmv]abhuahonmbhsmfglltm
+wdqcwcbtpexduecepe[zwrcpctlwglgfpappb]zdadimzdcpxhxwde[yquulvwgyyzwcfsvkdt]thgziwclyxxfyjpbpc[ypkjfrfkxlkavboh]hxylcecamgezuoljh
+yqxkafpkuuxfafe[zehlwtvpprtiqbl]qswqigaeaneovxm[bqoieihtxarwyrqegb]yzdopgmqklqaizxjm[jhrsftklywefyevvha]xuvydwcntczjvuduj
+judhawjtmpsxfocai[qghshlgvbitxevt]xehceioknrewezihnb[jvrzemakemtgmqiqmvj]wewpjflvqmottqx
+uhokpvanmvdobqitn[eosarcmqnukoczgz]rmoowtgbbyimkptlxdu[rqhewmnpypqpyosgehz]nqdwglwscsizxey
+sbnojmynueuyyutr[oonxqrbbjxwvwafad]krqlneuehyrghmkrq[khsckkfwowubtglegu]xweufrmlufamzbcedk
+nmgjmbwyrvcbthw[ogtvotifzugvvrsfe]jucqbvfqclkuxzumoed
+uaokpcytcrfpitfursj[lweyfahryjfprulw]dsdutsxdtugaced
+ahshwqihivxlgsj[ldnmuwbrmoxtypqluyz]intafryfavcnotgxu[xjggdyvoarfajgp]zhfgnytzjhuyheqdy[yeynlfshsyrhjxrzguu]onvyhjfwooikmmqzwgc
+djkgxfnfojgjpxec[ngwqajfbywoxlbm]oqdqigzeqadgqjt[tvojayieruftbjokeeq]gxwtruomnhorqqrpzt[bxppvnbiwhkhdka]rhpffqekyrcgwqmoi
+aasbwiocfkaahrjwerr[dvlemehlhfzxnzymqn]okxibfrlswfvmreuf
+rwcjoknjvyufkrp[hsqrwhdlwrtlthp]ijezyezjdrhzgltliq
+azawpddzkqbosmltyxt[zoaaqnowmmwkmfkq]lgusvzwnimvgagupkt[scbjhqdftzssbvnvff]coiaslgcrwvyioxx[jouvwdiwvbsembzf]popmlnhjkoaeahcny
+snucfdhspcbcsgjnmcc[qbicureolmbzhsy]cuabqhzbcbkezsumkq[cnggwqizurflommitua]ajtxxkqwqynnwroi
+bsxzwpiauwlqelesq[uqfdggoirtlucvedpl]asacxftfqfswiapmj[nqohanbbzodfgkxihtt]lhshhkgjvjkumja
+beewgulkwnmwxenstrz[vybrrqhcdpkhfnshccv]xdfvqzdslwosulzatc[kuknmynmjntvtyduwlh]trfvychdobyghnrxrfy
+oxrwmqpvxntdkohmxb[wugyubwxumwnxlk]jidpzvtbomuymyf
+pqzbwlnmvtytsfre[pmtmcnxkylmqaeb]alfdaofnqpohulpmfoj
+qopdwichdepaubxxeu[ifjozmlqttahyugyt]mfmlwxifscsnuom[kiyjlqqxunsxfmht]icofrxpdpsktwiifyb[hetijegmockkyjhhc]aarioqngqmdpkti
+klumchkwczxuuekdb[nlalmjunselydybqxdj]alagfcxocldfyzdnzd[abfnqrgrxbscagj]cohrecgrcaxljkz
+djydzyiyydcneoubp[gorqzujuwkjsqhelfrp]pvtvbhztirfzmwcopfv[wfjumxbfvvgvzltlcf]ergdkkakrtfzcxmqcc[vwnkrxhayzbvbauvn]yjoqveipzibbmjq
+qbdruhoywfjhaljfkoy[tznfejprrnzrrewdx]jziputgqfcqtbhvhlnw[ikahxtlheeunzrdq]tmoanjmpioumvpcu[tnmcvxkewovprxgzd]trnmnhdvtsisiujqjk
+llojixxpxtvcwxaxp[rurmhymwuztchngs]weaefxdkjmofeydvfy[hmbracjdcwxfeva]jkiybiomykfexjlyg[pgrlrqgoxqqtoio]rdynpcndtqarmkagbw
+kislmybuoblnpsc[dvsrnwlsvxxmzuu]jakczftcvijbavhjgb[osdyplcgliragfnpezx]kihkywmwgbkjtgxn[tdsgdadcvcaxfrbur]lzyjmrjqztybfdmm
+orfngwdzlrucbkbqd[ibvlkwlnnzwkhnoad]brstantuaxwkibofh
+vuumejklanuomqqdbva[mwjzrpargsphzkkhaaz]lkkewmbrvuczyyu[ebpoqgoifelelzzhd]biflvclnnimuojihdmn[llrnjdgzagktjrys]edtbmzmcbthpixhwwyz
+ftaciyszakisxhzjhbo[khfshezpopvjaki]pdnnsqmgpgatvubllrr[ovjrouomglbpgvtya]ifwcvhascqptbvbums[cfpimraygtnuimiup]zeykmilehidtlstjux
+nzgbxxiimmzsvhe[ixypsgextxvdckbjelq]jpklrvkhgzprfrsv
+mpdlsziccgzmvorvm[vhxbfkwfwbxqbvxp]zbsxgodzhgmrhrprpu[pvawdsvqybgdncgxido]zuhyfbmmhzegohu
+rdkteyoeleyhxdlfa[nrrzftpiqatsnnnsd]qwelhxwbpuwjmrjxmgq
+vpdhtcgjpkrqmrt[gozqldncggxpvou]zedtarenbxskusqk[mwpmzpwraryuqqmdhrd]eoculislafmbqzy[okpddsvrtyrkbjtihhb]dvuadhnaxkfewhnksl
+ivjfulhqfbdqiprzbbe[ezhkhqxcviwxbwmlnbb]ttekmmdrphuteslzwcj[iocuduwexawydww]qmrfnnedqtqezclpuq
+tksplumjkpsjjorux[dpffmbayilzuszc]rsiowigabmredkfv[aurieaasmsrxufpo]lbwvhcrjfgomkff
+uwuobjzxkgeugrivc[biktdwykzondbwiko]nnrtnqzhdhdwzkau
+cjjawanjvbxvmvdmtu[kubvvkuoynaawzowphv]ssijoohfemyhrde
+qlykdpnioshrexuw[tjwoswemjxylnqupgv]ymovhecbliuuzhjwu[ghxibaaourtzzogrynv]hmlndovkousrtbomlnz[nzkdpmqrqovnvskh]vdvntntzrqrhvcaxdov
+tdhrefyrccgkdquxz[jqeprpsvvkmmldlwyq]lwhnimtgegsziejeh[gyefzqbmfnhzgtq]fmbcvbjtsriuicde[sbkkbqwzlluccpa]nwxmuolcbhtwcllmz
+cakfzlwlaxgrzjpgck[toihlzbehdzesbt]azrsizelgzczqxwejb[ypecquckfavmixeyjgr]njiyddhuwlwogbnpt
+jadaohixgxzjcopk[wopcnehanaabtklxnez]jgvumwvmixxxwaolxb[lrhmslkbmylyvlkx]tatmsbtlbcutcydlrf
+gelrpwfiyiszejt[skpclwjhzgwvfbbd]ibwzelwwhvudmvoe[gpdveubkzkkxvtjn]khmkjslnkdlmefcx[fcwhuyiyvnjgfcva]qjcfuqxwmkyvvzuj
+pbejigkioxtdjjzbl[uihultqxejdyegacm]fitsnuitopdzrxskz[shbzwyodcotpvoixoz]qrhuyetkmnnljfqt
+yohbaryhrhuobkf[fmfsylvacrgvpnlqdb]iucbpagpbziaqae[lfcjrlbgxiytord]mhjlzecyrqcpbxsaq
+vguohtnahunrvrfv[lwbganvrrgnasnkqjz]yuoncrmethwiglfiy
+pljibizefgbrfauieem[yadmbpkftrtwjrize]fuzpxdpomsdxfocc[lvoahklovaxtucrpwhj]newpgoizivpqkpo[uloztzclhwixtcjhyon]qyzzqoyirejavchy
+plinqqpqghkeuipqppp[rndecheohrsftgvku]ogsyvyxuetmdomwdmx[lumcfskwppjacuddm]uptsydogwyqaupdft
+ewvtreckmjqvkvwgtz[leisttvtmrxnzjv]bfzzponjsjmepqjfs[knbonuuuhvtvteiov]vaejlijsnrpqppo[hvwwdxernqcxtxe]ssznbkhfmchmjjiahkk
+rrofpphpfkeeqlxcev[ierkxtuduxxxbilmg]vmipzdomogxwiazla
+uqmllifxqxwcskoj[lwrjkmxgwxwvkqrsajx]wpbkbsohlaeskzbv[boyvlwxpqpppcknocv]pgsvgtugmxmoexrvpkk
+zupunwchccxqggie[sdcdhzciymhppyaaaib]izbizcvzvbcnofmqt[lvvxmcmydxruvudsar]gnspfiadqokusllygyw[wbcpnuppeugrqobtnu]mcvfhylypayxquurcv
+ngscsmmvttxjxoaniu[wsfnnfnkwmjxjql]ijtqswaevexzcmgime
+hkmykmrremccqxvfdps[izfaeewfadfhuwwd]yffzgiqtmayebphb
+znzxjrdnxhfydrhr[kwafvmygvlylite]hmskvvpqyoblrygj
+gkxzweijinwxyajq[jzljdfxlossksqa]octzjmrvxkumtpn[jypbqguwpybykguwn]ngriygtjydfznsf[cpwtojpifkhwtfknjsg]zahxvqxjtoutvvsphh
+kmvndjahzayidho[fitbtgfncjvmbyrbvnf]fodwrbklqhxpsrqwh[ccwvgmocbtbqvwzu]uuidhylekzxzvmce[qbhkjfhnczasecv]ctsfirxwjfvrmayoeb
+oktwbkikybfwojcweal[pnhqkawxmfxggabhgpa]kdjghdalrpgsdhqj[bxjcqdytenfjirvb]odnhihekqyskaoedyor[pqsixozypkjdnnntbng]negjtmkqfykrjgewt
+hriyrcurqmacydyay[gfblxaovvngyesfa]tmftedgxujvmjze[knivpbneiuxdsowcxdt]zzncnfcouzoppog
+edabqgdgbyjqkzjvzhr[rdejmmymhnvfrqvf]zknrxaqjohlncvwc[lcpuoqnkvwgjycfm]ohuebodqzydltckrsb
+rxcyawcfxcjtdshxg[zvggbsrobekoxidyx]zdpvqowndwgdubbhst
+qngajrgvzuafovkr[kracjvrryquumqerjev]mqddkdpqmfgexahczm[psmbzonkrrtlqdpgqci]obiynfssuwhprevmzm
+dihkldbnjicztjfrvga[qtlevmacqkefjomc]opjaojctoraohocxaca[ojldoulpocpcpexnyx]qnouppkcuggjmod[oeiywfzmbjrhtxz]mvhoarchbrpndgwhxga
+qyncschbsnqwgvfu[cscsfdcfbfqiwgwqi]pqzbontuospgycwzqn
+lwvovybfksidtajq[vrtqmrxzouplnjogzk]gailtfjtszlxzwhbs[bgqzyhgudphwgufmg]levofhjnxjqhkcy[wbffnapyutukiavenm]olkwwlrbbobqudwvnur
+yeqiptxuczuxzeatp[upzutosphyfhuho]jehejxjvfpqeifogn[odhltqvdcwwmshl]coezfdamogigspon[syppfhysfwfkisltwr]ihkaelrbcelykby
+nmciqyaovpdwzldwt[zoaowvxkrpfuwnyepcb]yhqlmmrxxvguuajawb[rmilfmqzokaeabc]yhmswnsiyrepbudi
+pifzooabiqmuicfqi[tvaqijdwxsbamxzg]zncutzbfmraagej
+jpgkrbovswsjnbcj[bjybzimnzszdkqj]mvwmgdithrxecpselt[kghbhnctqnhhxxhdro]drttsuyvtuuygdtfaf[zohajxyfyjnqrigq]gadarjzfafqxsjxk
+wivyofwdmipecdxuqu[trccnlbsvfbagstm]xajuejldffxzxfygsg
+qsuxdmtfgpmlgkh[gisuuzaglpmbmydtt]qzyfvzryxepjmnr[mgsjrbmtxxzkadomelm]fqzjahepxspwkwpwd
+pncauthrouncvjkrik[cyiovjnoesdgpeyjpvd]ajhonypsbifeghxi[wmudcxwbewumjbegnh]qetzbstgmzfruzxqln
+qmkcddrhexvtylukq[nwrryzbnjnhvvgm]edxlyprwzzhgfmhz
+iuonniejtavofqdqsln[ynjrsfsqrdsgydhpdvh]xvqtjledtcgkjkealws
+fhbxdtddlvkjrmjyae[nwwjmjvxtabdwdezfdy]iwnsmstiulolahbxka[lqrxlwifzndbeid]jilfjomwrbjeniwybv
+iptzrdexpfzabqcqkm[kvaxgarrbrobtmu]fqaedifschjkoepn[widcirixuswhcvcqywp]kpkxphryiwwnkmb
+zbeoanntetxhvigve[fhwvhghpujcldib]ncrcyvevibooqesy[ougjirkquasabeqad]ydufeicmimcwgtbg
+jaocnzcwgxknexaf[cqykwbyvxtcwnurw]udxjnumyhelfogapi
+sduqgjoijyfrcnfencj[uxuiwklsiuqwjjrzcfn]epnvqcjspwopyffl[mwghrhtfclodjan]ghamugnhrrzjwmnc
+woygyvtrlmjzaeteuj[vvvfohavzuuzyzgu]xjjcxhosambmkixiie[lqholbwbktlvdljmapw]diufpkdnjmjnmyc[ehjexwagbmezmpj]czhwzecixzxfykaiafj
+nkijgkhyilzqvtgj[llydwhyhnhpcracxxd]zgtsspcwpyujndbxvp
+nawnrsgxqpctinyek[ieguugfkwujnymij]rfmqypeekkdsttdw[rfuanabgfjgctueaaqo]vranbomhrynvjyywmh[zjncmschlfmkvhd]gfeoftxsawcgrzvrlx
+jgazasxbickiiiz[duuskjowanfmieegl]cwgdwtrzpbfemqitbhb
+lahkgoaoeofjlocsei[bwxyguvgmenwnpwlp]jigdlgdjptkimoyipa[zlcyjbqohvmlxgxp]bmovqedgchicusqzq
+jhkxinkbwhpddvjzgod[fypyyhptvewejlbwdmx]teagznqhjydanxxi[wkppnjsyzhwshtpo]piaqxcwqolwklwzsfkg
+sjedigezzdkqlxlcnr[xanehtpradlngiob]uonmjrieoycpthh[wnsqwfubwxkqhlflzv]smrebfwpnhskzlknva[pylbyttmhyggonlk]dwqkzjmatybpmgeb
+ktfcuvnwueamlwvgwmq[czcgevditrtvddgfh]djmmelqewdnzrlqliz[fkpieaipgyxnkmjp]rdpkfzvqpfpvczv
+tixjemagwmynkihelk[bnwfmkugsnivgdmvskc]nlasqrjqrlorszi[kbatouwdhejxchpdhd]etmbkytyrpnrpgqvel[xahfkfjmsqjycaq]mispsimhcckrhqvek
+abudxncgozbrbnx[fllpjgocynbuyawgs]hiphrvpugpfnnppn[jhmlgjsufflkdgw]ldmdclrkorzjtbjqcrn
+aljahmvdrraiavzv[tevjntkppnjqwovvuuh]ozmgagxzixxyzuy[zgefziawisowuyqra]nrqmsbwgqbfrxqvzu[zvzglmnjmjpmditiodb]odzbozesvocemfyis
+zgdukwtswaosbrossf[ugdnezayjnbjuhpeh]knkvomcsgfptssifni[votpmaaohcyofgdz]skbvfugaaxutcmrmsc
+ywiphurgqcvybiakgok[cscyksufsduegggw]rtvvvokrvwmwsvmk[oqvdxhoqfsfdwwm]sbzajtnbxzkyiwrj
+nxrvrsbjsrysysvftoo[qowwnvlezexjyynm]nknzluizyzjpbzpevb[adkqviapkjbmknchtb]xsgtthuifmsqidyh
+ejrplkjjbnjjouesaph[bdtybzkfyictcjuagr]ivtcttyunertnzgmpqv[roikukeznmtkqomqbk]lsxzsjrnsrdlxevj
+qgcebktqtyjjwsav[naozjsnqufkkgkp]evimphuulhzflub[weanrdvlsmmypnh]rojhwlyxtszxsjiuai
+zludmyuqlfpefvxcm[hejpyhwaqdndtwslan]ldtxkxxtegoqpntsnwg[olhtlkpvkdgkkxkisp]hursraavetjgloks
+rosuljoqspxeovaqr[ocjdnpuzmwioylt]txylrlsndrifxiuxuyg[jnubpcjyfzhiwul]pdtcjcrkpmzlayzcty[gasynfnouxnvrplkym]naxwpqsxlsbvyuavty
+oxbyqbqmpckkdpfjtr[ggnmfcjtyfspqrqkg]tzapjijawrabozckadp[varichgjrivmseddxv]admqmnzxzqcbapdquwd
+jvhvqxvhqfxnjzmv[hwfwxvwhxorzqizc]rpjpwggqxqkaznkuqn
+yrsucbqcfaukancrr[nabtowgijsnzryuvbiv]sfpffzxrftnrkjx[qfyfsbkyhetcedf]xdykjbymrqgheanxx[oxchcwrkbqvvfeyi]bztjlknshikocxztjm
+iniqqqqprdeznwhr[arooglolfjgprfrbhbm]sczcmpftuhbaagwgedq[yutgzaqyxntjxoglmb]vswbhlspwfulowkif
+bjcjrdzwhmssgoinrcj[jobrpyapaxkasve]hzacshssrxkdtrlqhr[yygotqrmvhiqjrja]ljwfwudymzkpczysknf
+lrnqnaxtavkhwfebb[vwyqnqkveujnlzv]coizhrfmviizxgz[zklqinvtnwtajyjx]nxvpznyebozrosfgh
+ccjjszgrbozbpopagns[abiuzirqfzactus]eemrbqrkhhppvan
+xeaifcibybamzzzic[ymvsqllvremyfify]ftgmrkhzswdpbmukcdv[fbyevcnnwtnodgxy]slfjznnldyuvair
+ajmeryqwfhniqenmi[bdzlgljpkkgsvpjcy]hqzxecqxmneterlqizz[pzrbbprbhujzpcxhjmh]lvrckyomhvidbiapikk[cyyapugbrwlubpmn]toodggarcneobyz
+lehpdvqjccdfpzpo[ssunfejvfxwzlzqy]dvhwfrwiipveqpb
+ijmthhifxtkoubt[jcgoxkntpnxkmdp]rzsfekfmamzddgm[szvzrwthulqzcorhnk]lmgsxsjjcagkaysalnj
+qmfgzmmoylbruqxoh[uoyinkzbglorxud]frtffuhkchkrwbxfx[urlwigeirzobvhir]pqrqujuwxueommaj
+tzjhaiqumjufkzcvphi[lhfohqxxuoqybomckm]qjhpjkjljzekboyc[gvzfehzyrfaarfklybg]fhurcpaukztwesz[lhvnhfgpmunjukye]mdzcvgeehmchcqe
+cbyyjbdwzgdhveyw[ockkdpwglixvbom]ozezplbkvaulagw[vmzfmqxplwaqjrf]upytqbnzjrclzfvti[hztxfkqwcuypqyhsfa]sfwcfhrnccesyncbg
+zaclpaavkxbpjxse[dmuzswkobdcfmrejhaj]eqdwvpiphijpwrvg
+yvectfptgdasqxi[rmpaospaiqhwpjwdru]ollajqbxmfnqmqrdce[jqixwgznolbepskpm]pmyfsrnbdcqdrhplko[pzblovbmbnbwjzsxrk]hgwpjhgshxoozdu
+gpnplfnpnmdlhehgazx[gkgcsjdcfnxytzp]wamlpixcrqvbtseb[ijaxccauotewzkgu]usgmgqmezufmgqjslbu
+jgtqghpjnbjkmajymfw[isxpkhlvtuyqpscvm]czbrsyeqmjnksov
+fjsepwfaxbbsdxlcz[efiljmecvcsybpj]fsvcvvewoepnvqz
+nxzdtgomsakdhwefrn[cobjsrlxnkxvmhk]wkfnuypvsigzcnswufj[ttmtjfkbnhmmdebtr]ffumzvnvgitjccgz[offnegtizuxhpqmic]lbhljegbjmldqbzryis
+gnnsvlcqoatssjuijb[eaodophfeufuvdodj]jplhbuvzqfgvrqbuy[ezxxqanlgnxdkohew]vsukbzhjshwmmqdkzdh
+shfhzsmqdeibrwgyr[slyyksjeywcnuaocadr]kdwnsokrwkajgnwi[zsfujtkhknplyieg]kijuvumdqvjyjpbhl[qyrlzloooajylfrsfk]gwqdkfpitiitrednt
+zhmwbilhpywvxrza[tgnybotdqixzolvn]ptxzyjbayyevmcqua[hcmgjpycosutmqbtkf]tboiprpyhwgjceu
+ejuvrirctrlirihunm[nfjigabdmqnkfoauuyg]rfwcumqndfgotyx
+cxkwlruaswigkrtxxch[fjsovwltjonhegm]zkfawxnzxlkaqawq[rgfftbipxlmelfnpf]qhhslyyiluvowxz[bgxutaxmhxyxxdob]hzthuaqpiyeomlgqqcn
+qyzwezoszvwrwiilglw[opryawlpulfkpkmuave]taxeqyunnihulfp[vzxzosekvamoofva]bbtonpohbgdwfmt[xwzkmwrwruatcdqrj]enrapbeqoxrufgp
+lowqonzaekybouni[uehkpbaxwfixuwlj]ionorsihznoszwzyq[cnatlobscugfpvpbw]lnsmgieepzvmhvbz[lsjebmtctttclkxqok]jwevnfmcrtmgjyniiuf
+ltxumfyzdinfqrlf[jyiwmlpqkbnbgmu]bnicegkghtwivvyozea[qhgoiugrookfmdsln]fpokyqsoknuahpmutnm[smzqellevlxgdbbet]vsadiuyglyyuccgkrz
+fvhanaukvcjdkhsydnz[pbjsoundyybhvaqglj]esjjvkdvjmgmlox
+hcckhzdfmmvnsmuzjg[uuajvdzksgilxpjmnv]opbmjvfljnqzxkql[pgdelzddxqrfdoqnit]hqrrfnwrokufpybg
+ovtjlczqesucgox[kiqphngcbakoelqncyi]jhrwrpwdjxbhnqp[kqvqdyokyuxulxidc]qumskxudarjyagegy
+mxrxpfkynragapzrmdv[rdhsbrxgeywqbqh]rpoerdiwdisciarhl
+ejbdfeqrdsrijztlibc[beglofnxveiorftulay]jslqibpnunabgqmi
+uplsbqledimexhzwnkk[sfreaeitecravsu]exfxqlrumxaeasi
+gicahlhkuxbhppe[cypyeqpzkrggfqrielv]pkuwwtbezndgtqhbz[ojnnxanlkamvmpqfj]eozgnkxtbtyecuhs
+jtzwiyeueztuiwysyv[awibgssyyssrnuxrvuw]mmyvqfgaaraahzzen[rhscfvdrvagricw]qsqbnurcszgekmp
+dxkeveuauhblqnq[oksqvawybtejxmdw]jrbwmyxdggncxitwcms[fvhnmupxnynxmprs]odbifiqqxskxaqn[xwdwagplcltcepjmtf]zsfevibkmzwtzoq
+kflcnlkdujmtiug[rwydvjaazfgmfcn]qolbbuxzxhoizfqcwn[tprjkbylcrlvmbggae]pjwhgcmgxzhxbxdceme
+donbjfkqtygixfpaa[lhfcyuzcmsgixjbr]njvgmbwgzimrtpdmvf[eonodblqfpgtmex]rkakjzfmuyeajvhs[lmgtvenasnqbyby]jdbxoeqnwoednoncq
+laiyueskjnlltkwm[lzrgjwrjchpmnais]pqltpskalrwtmtagvm[luctnpiuqvulmtmw]awlqbuutunlbpusn[hdetxhrtzhkyfktmfn]qpmezabxzrtquidbjc
+hritvdzjxipitctgoex[jtbjcyaysbefjme]ebbcyqglydfhqjfa[uwuwqhwanfydpxqk]enevryjyzduawrfc
+axxprqpxpifqnwte[qwkkhbywyixngun]ufwcbmerbqiblbdmn[mguzyerbfhpqnybh]gscgmmckgfxvvwgxxm[gfjzckcxdowpwmhmg]hjblyfatzhxjyvlccb
+qzzkrqfnnzvgfmrpjr[sktcrqxcctcduir]vmhsrsedrxpnrugm
+mpxgzowtjabzwfcbeg[olgfqepvinejmstbrj]fnqxcfzuxojvkscyk[pxbyuusrrbjwrygkxm]wiojjquwvhineivnkys
+vqcisychxuswbqlzdkj[jetvpggxtqqguuh]tyllnzfyfphoudijzj[xlnznxybxscqjktjn]oysyrlqascsqbclsb[rzhxpwwrjwakoldm]mrwzibdjlhsdsbew
+rttdskfweqmkjolrgsd[gmdwcimmgetwiprem]wkyklvpjyhpzvmsh[zftyxsrvhnioomw]mrvoyvyyrlguwedz[xyrajtcatyabfqigup]srjmohoxwdybksfv
+xzeexlrzdznmhbph[vobtfjuyowqppxw]mjxwhgwveozusndvi[jthhtubbkbmdiepfh]gtedeqwesiwzlrfny[tppxuofhnwwkbkysg]aygwlnvczaarhfgkw
+zxirxtzlqkptwqd[vwdzostlmrbjclfj]aluxqfcdbjwbeerhr[nsjcafnammlxjafrzaa]kipaqywrtrpkbcdtnyi
+vovbpdgnfhmeuadh[bcgvleartfaspvvjjz]ajyzrbirtimuifvs[lykguucpvkxuupcbims]qplsipqneiycefb
+alqzdecagmvodcigcd[atmngaijkfehfbc]cprsiaclouvtbpaab[lfrxlrzuuooqdtfirbj]olcjwtrkndcvykp[lelvgglysdxycvk]uyakjndqzxtzmxs
+syngsortxjqcdwcz[qkiseyvolwhibxdg]ucuxqdozkfgaxqwovk[eqeessuwvcayhpc]wkhzcbkxgakgxnmho
+bhtxesznfkwqbodb[ptpuhbdsvbcjpmnsl]oohvgktjsjwxqgyxov
+udnbbnkojrdevgujkg[cramyjeuckywtuw]qtldussgogyblkm[yuwacyafnikvgbibmwn]xvsgxmywenrmhdctxg
+uzqtkzkmmeuttwyklv[rgnrxkbavqabukxvnp]whhgpmwocfmplba
+kvbjvjxyqiqitikvm[vkzunkivwcpvxng]totvodotoqiqokouz[luzygityrnpuiih]eadddxqveeuujmvnek[nyxhwlkatungkgm]bdhobvhktlnfpjelr
+inmnseeoqimzjwzhltk[ntwlsdvvybtdoqciu]jaurhomtnyudxxmslj[wqygsctddywlbxg]apsdlaftsghmhtj
+pxieimaprtbntgvm[xuvwwsinhwjjapu]taeomoijctvzyeijfr[gitzztxejfefzvepf]udobxonjlqagrkpaehc[fkqjhfjicleroxp]hxpzoklhbgtngtagcz
+lqmoxvnknpqzcgs[zktsmqcgzqjponj]wfhhzvqiqkxfwrrw[actbxtcdlogatfkprc]tvzphmtxfrptzlopv
+czdnqiwqhighizbmivy[tptpsvsahslbsovazkk]ycppvkqvuggebgxibe[qutumfpnpzjkgqyfkok]ixywxvmvliftixfie[qipgniycxomhgmwje]vnhxbcnofkcnzep
+igvdicnzsefxlgk[dzppkxdievabwyh]fvyywjzcyfcqahv
+bjzwblslduiolbezybz[flvsgshhznvzmrxo]lottitaizuksqfihn[kgsgzawzjlqjsep]ihadewtrfpsudggga[oecgswhnbhslysd]flpdpxndzacxeskzmn
+syxfjuakhrnntipfpb[xmntswflflstndkv]lityfpfignnxsyirja
+unggjaqgvzrckyqx[llllagrmuioghea]qafuiwqpxcljhvf[tevtmuvcyqqrzvrduc]kqnaadyfxfyyzjuco
+cpjvjnocqphsagdizq[rzfbvtnodwqrqprvqh]rnlzshtjhrevjgdu[lbozqegfwoaikxbnt]cqmzymvkummuzjfx[vtknqltevighwfdnjv]djhfeemiljlvkgqkpp
+adbbbgxmiqomckxesb[dmwxvrammletdiim]eiozjsockohijbiinia[zyjjubdniurametk]ajivyylxbhvkktrzdg[byxiykqfbvpfdzdv]zborzsvqimrhyoyhevj
+frshflyhzegyezg[xxaoqtzxuqbamukfxed]klyullmlailfvcz[boefzsdpblwpbna]dbnxivwobykcfwogv
+xxycwortiwhndrvlr[mspdwmhyqdwtctlyek]qnzfcwwvvlfsael
+fnekkofpuwhttni[mlwvhzrwfdtfnvof]gtlyjqokjymvtkiqdl[gdjobagxsuhudnoi]jgcgyusdyyocqwwtatk[rjujihcuqgdpcbdnkco]iewvagokrzdhhhskv
+dfadfbjefyinccgzt[gzoojtdlvqysetfihg]nlsriqansooflahzhoa[vlzwtzgipbaxudxg]htykxxpfmhigbdqsu[pzipnakgdfpajkbqowq]zrwedqiuobogirulfwm
+wevlduhhsouwlqxdcfc[bxcvjwespxdkulgun]hfuhwpzgdgqsujeex
+zweayhrezaoqibgvc[sosownrvumzvynfpvr]lzubqqqepwraqqdxxy[bniazltbdanpnjjjuox]tulybfbbzeiyidrv[zbebbcdzpcvegcms]jdfofmnlgwrnvann
+gkmbgzvludgmjgnrkck[ijywdgxetrginhtaa]yiokddkvhxebbuyrwoy[erhxxldeegvsebr]ujqickibpbjpizhbjw[mtzvltxionpxygo]mbcgbublhkajfdfvf
+ddjzsqkoizakmeifr[sigtlzmyyrflvjowj]dyqyfvpkhdulwuj
+jivforicorwbkmccpgj[oviyldmrjjzbojbs]wpztdiwcdrwttmfdw[jgylosmbgxlrogsa]htkvwsfczzoascpunqr[uemtqxhcvvphnvktio]xkghvnicljrlndjtsv
+zkzjccnvukaraob[asytykcstvxtkvermx]lqgjlittfqpyxcq[dwyrqfxmwryvxjzr]edufjnmxhzxokjgphk[ucthvgtgfpzxikmnjv]yqumujliwpjujnymcen
+bhbndmsnnbhspzjby[llodpdecwrlspsbhbhm]zqulqmxwcerescalp
+ozkoqhvatxmivox[qffeloluwcgsimvcrnu]pweywrdkmtqjiflvcm
+rznstgdzevfsthcc[jpgjzgeibmumtatu]asgwjccfkwzaigwp[soegoylmysqcequdsw]pennknxcwwasonjz
+afniplpdesiwqvdioov[xfkwuijxjgtqbhqow]idmgzrcmwzmrfbsubkz[mjwyiznfpjztbfervj]cythmqghdkjcfrt[ekhpwckuwduoexycc]htaeivvotvlstvsrpj
+gecbcvpiswzjjeiriav[ivbfdesbkamvngogjb]xphdszgbcburesbfi
+uldzgctwccgqdbxrmpo[guiftcqomdqlqua]dmxluytucnlndazic[mhmdapmemlrwmvdzwkn]oqyvwmhlabcwxpzioz
+mganrfqbsckpjsnvlh[vlwmfxhxlnnpsghrhmr]eqyrkxjcwpkahqpxeqr
+wpbzefalgkbnrke[qruzjqtrkbzsvfgwz]vahtniazgsicquatrg[zzslttuxbwolldy]cuejnzjsuwgkobp[yspyowiamjpzcaqwb]vhakhmjrncjoroe
+ycxznczxbzrprsiw[oggkqxyiyvsrmxck]asjjivqayantzzfysr
+ewbllymppqrdnaeni[qkytupytcgsftpprv]jfepwibznfbypfnf[lrparpwtkrzlxwep]vdsywhvslycyohef[lxhwibvmyypfrkdsley]kookbjfsapqphmywuu
+cfpbgrwdsnrgddzzh[vbqzujunswprxyxnk]efqzsevzxurynhnm[cyctdnsmqdssnmzyrg]vvswrmqzxnrbkhunu[homwjhndwctdbecwh]cdvggafdchgeuqy
+lihwrhvzkhbrgct[hmwzxlaycaimxchybqf]ruvcpltuinwybvv[xjbzxcihznlkorih]zxnxeqobqveujyrdnur[ijhueqaqprdlrdcjsh]blwxhcuajnskuntgo
+iroxkwgrjpzdodvmohd[wexdltrhssaqwqnh]ynvmdpomrekdsfrjccp
+gfusgnroizvfwwcsc[jgvlrznerrnjretc]dcbnruamgkyrowpglv[tbusonvwwycqtfk]oqngfriboradzof[yosalcuxlovxpjnoss]teunwgykswgulguic
+bsjpzlhhqvnghwnp[gakhkxegeohljlwz]hfhculyhgdwcflbdt
+ataqyejfhrpvpagptx[ufqdptheyevtxqjuqsm]tekvtwjvapcyamluzbn[xxktujajfnprffsvfkc]espinhantulzwpqug[pamkrynxvlrwccp]bgzabgrubbhhwwanvf
+qkyfobviahzasbi[dqhxzkbapqmrubogqg]aenfdyclijdpkeqzc[fbetcpbytjywomh]mqzvwjmgiexjfehor[ntwcsnflvlaxmfqh]uvubufoducqwacwio
+zvygygjncwkyceve[knrtgwmfgpjlqdzusvb]denyidxiinzvmhkeads[nuqpppqdsbypxncb]pzqujhpprhbxvnuzis[zxyppxjfqtzdplvbegi]imswdcvwdghzhmyyoci
+mpiwlfpsupluuwzyqte[mtyfeccxfpcorktwam]jtmnexxnxsdutfve[ktzdkimtvwbcjrr]crdupwumoriklqckirt
+clubjinwpyiguop[xummstkqfygcnsu]rektotfjzzguums[hcxlqatyhaqponifaa]vdzuiclpdtepfqmbdiw
+sswrlfxpvbjntaovr[cajokjrogvtnguj]jsyxzvoomnfbtcc[lgpureoznbgrfwv]rbrwjeeiqshuvkwub[gzvyjbprnocmpkyk]gzibarcxnwnvuymlxpn
+wpdzryxwfahiwguwvtz[epyjrrvvjpkuogtflte]shadblrllcaigwocsw
+osmgewmpcqugjqyddn[omtivijufzacwctoaf]rvlwqcfmfuazwlas[wbpvzrbsnzqnhygpexe]vxvfjrrcjutfivtxb
+unyfptkouxbhwwur[atheuhcficbccfur]djycwrtnlttopnjcm[pyocjfcogkyoogo]uoogeqkztdvsgdj
+gdmorpdnzddjtbzo[hxulwsrafnvyxokoe]flzcmbhukjwjfnxsq[bzqqvrmxihbugam]kwwzidcxteeodrcekl[vtjszsdbmsxqouutvkt]whnkvoierxzhehwcjh
+laswazcejcxyzcocca[utnlyecffzypkiocowm]nievutnusvrsixk
+xlcgrfodctfmyxvsms[bgnofwciyllnekkiqf]knqjmtgrurhsjrwahoz
+enrcvyphrazilaqswz[gdxchlzickidnqfeo]wmadrvyuoczftbdbbij[jxlyycfmgmbujmas]gsreebayzepseakylr
+zeenyzzskgvaysxe[drhsgkqipilrdmcl]xyhouejaqgfdhoshp
+sclmsgjqcijlilhtyn[tyxuebqjqjqdnzg]rfeqmnwynyzfwsfq[jnrjwlqvcnvziqjqnz]zjyeqebxncecsykm[jizuywrcdskgjpv]nkogvpblfiwwnynxf
+rkklgzusmfikiyxsk[zfcqvybbvwxwxlosyhk]pbcybycsiegagdr[jfrnxtonuvihkiueuhz]xlfvapkzcpysqoi
+nllzirippgseojljl[oahmzicssbyckdhyb]qqaeuleefpxlwfl[orimgxtsfwsplrbuppt]eyzeliykpnmmklg
+sypyjddvabqnknl[zfoknkriiqmevubru]rcxkbkzngjzzcchl
+uveautnfudowpkocevc[xqckexnnmsrzxwrgnwo]fbrkssqktfmvbebfs[jmkkvbmhembpojk]vrixaskbnwyzibmtux[evdzaxyibnensgkua]djjjewnszeukvelm
+xcidhycxopgdfgzxp[wcybbxckgqmwttrrvq]zjynrtlsoibooaiqg[zzsjshnyyytzmrcskh]lnvmmzokrgnyqfvsi[kjpgxjqiyimfzec]bpdjsrxzsbwigarmwi
+zytphsjaeavezjmtjf[ocfrxoepijrllfc]gsnkhdomwvsrvmctk
+hjrxkkrrutrkmsiax[zwsclcwdqaukxxwmbgk]jjvxzyshctodfeeonp[eklzpyupurxmcvgndo]neaovsspupkhdclbo
+agrgepnpjdjmmzxtoz[yptupgqukzyiwko]zegusqzhdpylmvhgh[ftclkimlyjeiqxymyc]qplgypcugeybdlznf
+clmaojwiieaxtkf[hybxxzkuvyvljxs]nqyvgwkyfgwgpvjix[ffrpmlqwqbfqfpyn]wewixukrkkavdgpr[zabgeqjcvdsvydus]crgezocdrhjcufljyf
+xwekgqqxadszfqxp[xgftweqykbpaqymyaev]aawdhgjkmwqayhfuja
+tynmzjhrddacgjexrr[kgxebvnmaazmffon]qercmbticxiauyauxmp
+ueswrzmngurxaqja[yzlfxoaxangzjbyqm]zrwxnhpmqiespczu
+caxoesrhrghfcyunxkf[lmalmkbhrhijrvmafw]sdbhqytqtaviurkzi[ozohqgqrkgcbhet]wgwgtjtcfcqzvymnp[zxuhhoxlpsgrfcrejmn]hkopyalfpjzbptgetj
+osmyszkhkpaedzdy[xfincacxeotivra]lksiavomozgiywoxrdu
+fzbuakjjvpyjimycrt[vvbkutdqqtyjgqz]rxzeygtijyrfiqm[qxcgvagpoqyoxhziej]tfoadqfiddsurhergel[sxqvskkcvlkpavpls]ivztxqjuntogjxx
+hphqkgxgqhazalmlqoe[ovhvftdmpwudzdicfkc]tdfnmaosfddlzbhv[obkkfppmoqirgmih]xrsrqaohawnwlxpvq[btfonxzgatdqmohserb]bukakcwcagvcuuwvhtw
+cknwenzzehwdrlje[sctyfugmaxgbetxzf]fcsbyyqvoowzutlge
+gpjdtjgclynikoh[vicphcxycqsiiiglrsw]bcjlerxdimzupbpnw[waevcaeooffjikclq]nhajkvqepdnzgiijfrm[lvmtxqhswljuvux]rnmiklyolpctfrfgxs
+weolymxfeyqemlpxulo[ifjuypsxwrwczhpsw]hziolxpchkfouvegj[svfsshaljdhmwcmu]zqbrupsvenlvvfiuhf
+mxvfnwvzsyldqyi[bvfuwmmrksbxbzcmzrz]wktcxsiresexdodbtl[hijoaneecbrhpmaa]xajfvvnvwcocpcbrhbc
+pboivziugjszfopvkwa[kdcvzroeislbcymt]plydaqvkrjbbtlutgvv
+dtzdswmudibubrthcxc[vgmrnyfsqtutxfq]xwbupswdznzazrecwr[ijppmhwabxmhfgcqu]rwvltmqsymbydmqfnzp
+agaxfzobcsjhyutfk[ftmcykjveqrlmvizdt]agbgsgsmhehzvoy
+fbgqlgcyjmcjajxgq[xrxyfyshmvxgquv]ubfzmnkgipmqeucbk[ebcveyedtkxwqcni]dvujsyfjdfowgxfh[oubuurnpwusoxrx]bzxtjgpylljsuruwlq
+nbctombtbcumuwmay[pryqddzmpxgkjlz]bwwebcrzdpkqlex
+pvwqgvrjhkhjycm[luquegjefcvhweovots]vddsjvlawwxvkcepqx[xkomwqdwvymcgtgxky]tmjyqmzqxuhzxjekwpw[jdszwjkhkxkkpjjwkvh]jnlsvhnyijndbcavtlh
+ccitzedsdvzmktzl[qjtmlhlgdmhomythbe]skkosmhqaqyxvrpwyvi[toqfnarddgzlwhipiqf]vlallikphqpggunc
+aapudqmdqsoadhf[bptieajhwtguxpprkdn]fiopmsokjtonmei[rdcwfyvsmtkqwtpzwcg]pmgiakezkvhfiqxw[bmglrvzatxatgooc]jdkxirlaztzghpcgiot
+csxohvjhmjbjmsw[zgvrfjdvjkjrrsc]wbnhtwfofrquxtzynmy[smcwkfovyaozfhhf]yfribcdfykfzsig
+mzvhznqsykmcdgkphhu[cmmcxolosuhnkmuwhf]gkzgbqwzbzzurzehdm
+yecvknvwvjguxlytj[pncdvmrcqcjmsyix]nvosjrornnfgznaby[tzuoscqaarhjnslab]whvfxspoocikxfkyj
+guaouikkjfrtolsug[tzdjiielpgytyhis]gwwwtmdeetytmerjk[sorwxqfcsuhbvecom]wmfmxfovbdjhajcaxyx
+ouvjolrkjyetsqlo[vnadgdxvtdkqlgi]pivwtbhwibflcoh
+puboxtiwmmabyqgn[zhxzdcswdaavgdaly]ksukgpnictzfxxsuqsk[feoibpurptzvrqy]tytogwcrtiofplr
+pyeiwajmvimttmi[pkvpbhnufrwpwdwy]dwdpuymdrskpgfwp
+uwctwjpjojxatnyjwm[utlxyebxsfrddigrjh]rwepcpjgrqeafmr
+mcibrhjsqyketegjx[wjiejdvcjjaijnmoy]lsjoughndzzedmblz[ovdcmldcmntnxwk]gtjntfaikfbfhuercc
+xkcadobnrwjczwpo[izovquqhogzhtajgcfu]feiizljlnxughttxhy
+zovyoejioovblepnri[wpjrezfxmhepyyhi]lissctcyvfbtuklymtd[vtakkwrsocdxmyqjkl]idfjftptuoiheqi
+fjylzurwqfvphvctbn[wtraagycimmpycsbtw]zdolnnawyfkozoduzht[wqccswxyzozewtayycz]zngifgtxacyrwiacyd
+mkdselqpwqchnwxgydj[orjtmojhzkuxfbpmxa]udrbphkhzchgiyq[ckkhkoltyjlfzrro]kdyudnkzdsjpvonrw
+bpjaenogjpzaxxkejpa[jqgajznyesxfcdhph]euziwygknckkkkunxux
+btjnlodtnbaubkvb[topsbnzgxbfanulah]uksjmxxfwfzxqfcij
+zkfnmdwdaviehibtjy[adnmoctsyzhtangoxtk]rjydanokxyuxajmnx[rbamopbudxevhpoezc]mzurnxtacbelmitu[oidbxqghkpqjzyqrrox]ezgwbeyokfmjwblqq
+nwefqukauecrgki[ofkmtkzupjriwlml]diautbiayphukxvmhlo[iggbxeudmmbkayonzyc]hkijrjxiffmncybco
+ytgimnonvbqexhbabc[jbkbctatpdataxjqtee]bxzwvqoqyazdgoy
+bjztbbhxzzuannkyvet[mngxjhitobvkzvls]abhmarswjsswftn[ihxeotxkwnknkbmkvjs]iovgdoevhkarwuraoef[wvsvcnptmpcktslrn]ldjniscnknkjaheayp
+avmlgtbubxrilqdbvd[eqaifmlaniocwybqh]juzknvgrahckcrhagh
+dyvzlyoefrbtxizlod[ussgexxviaibhrkb]tcgkgkyckgkyewp
+jvrsopjyjarbkenouax[gwyjvegfpwvjsdl]crgcqjzhywhasbuzdji[wqqiwpzcllmnopvbf]hpirheoriudpernd
+cpykkvqvowwhoiys[yjoethxfromctdkog]cvlcjvgbugyqvqxjbc[ipyvfwhqyocrksd]dsvipsvdgzruhsli
+gsyxcrknbxxyhvnss[zymlfgpcupgtzycu]sjucevsghhzpuqe[qldvqrwjankaiexmj]cacvncnvtlbnxfybngh
+ndbxeywazfrnghgdjog[vncdnjelecbwcnuecit]obhfqkcyucffwbhk[wiboksymurccujv]kxhiktclvdsgbxt
+ieqiuumamwhkexjene[tubauuniiqmzdntax]kxiqlujdvpjqqrtkiy[ubnpvsfjutgvfhpe]fnwawoyfoqqdgyr
+lromgmscqlmoqtqrr[wbndhgvivyrvevwpbd]fjvqzyqdkqfpica[isfiiygygruduhleff]lbfsdwsbvndxjord[zmgvcnxjevefjnqx]izvrxpsfekwsaxhzg
+vfqitwljrqvsyilpb[ugzycuwrexfoavmalm]dshatbrosrihtwpf
+hduooarqszvabcwukj[ajuwsrthbgchctbyuyj]tpzioxoqtyfuwtdccn[jisrxrmnmzhnhotwra]swseywswdlsbzzqqlv
+aarocdgubnvehgg[xvfugpdczaccgttycv]nhzocbyrdhlppydelyq[uloucbldnjeulomssv]ayxgxkrslthaspz
+dhyljzgyamlcdmmz[zdkwfrroodcyfnfie]zkwhzngaidridcagekh[emzeeodcnuvzddnbm]vtwokrqakoovvcdisvm[nzdlsyrpcsicoedyx]rrnfnhgpaeqtlxv
+nxybztwairyftfvig[syeyundkruexgbwyvz]pspeqstftxbbaevhql
+sbbhfvvgyscleyxzki[hgjoiilqwuiiogtt]sblfjsptehcxdilpgw
+fmynycbkkkiwjllu[iolpwypqrdrnkitax]fwfzssjntanttkkboq[afgwfwvsudpprmpne]fbzhbkoxpxavaskchfq
+jcyrspmtzwxqtomkqab[xqivjfrwadfvtfmp]fxkhdbiczckphwhil[ztemqpsvuwhwhfdfip]zxqetcaulofvxrsak
+ozgxtokkrotpphxsnt[txgvekxlxkhufcwi]hspcyxwyijgjaqsyfw[bcjgsvsfzmvjklh]bxjmkqkynrusvvq
+wofaptbytcugaluqc[qdgdqupqigweysdhq]saaeqyqazqqaunofl[iorcsdtwdhfmajh]owdrcjffsvszwflax
+icrmudvzysqefbfgpae[uypfoutavxnzfpcfafy]moghronhxpgorkpypoi[ayrgvytktzzwtfuvfxm]ktoiazynmsksawusbsv[vypyasahxszocsfrcx]wyodebbscuterfrji
+otrgqclsvnjpznt[dwzibvrmtngomacr]xtqtbpxdtejwbstddr
+csiarmhcmunsjogtwp[nborrnynefhrgwy]lvsacfkgakkbjyny
+ijejwezkizvuswn[zfkgmewadvwroqibng]kqhmbrdzuvhcwkwxfwe[mgopomvjdemllzygc]ivzzvgcwpmgjewb
+jznavprnlcygwvvj[eobpbcbuqceogtei]jilcppgbqnzzjrjjjx[xurpitsmdxtiihb]pkwkdkckicticboagma
+hrarppjudvbccxdepdg[ksabupqjypyrwctd]jzmkavpyparwxrivfq
+kjtgdhvqyzisomc[koywiyiymrrjpbqno]vbbusjzesxjpwkrh[zfalkzmohlxcdykl]hdctcfabyzteadzofca[vlbsevgalpsvreryxda]oocgdkoeoxgepsikokz
+nckfsyxjdgmgcdyqoaz[cegnbhaksrdfaokttjc]rmfzhgwbszywwzbzpe[nofsbyxiguiaxju]vjjitkzyrugozdspwjy[gwkdakutwllydivtnns]gswugowdiouemkrf
+evjgxyciglvcnkjdep[ixmlhpvkldxvcerjb]eqpkpmyqvctcepuljz[aylvsdrrbajlptvfeo]nqmtctitzqxeluw[pkylojlgnaunmolry]patyaqnazqoykcls
+yklraufwcbbewrzdnl[dfsdynavgwiwbkmmpo]atqaaprzieowbqafr[udtaocwgbvqqztkykeh]eyzakgtvzrmejksf
+gplhegstsxbqvxtnp[sheoxtsrbdxposgmtx]fazbemqbzmssyce
+ulhekckzsguaeuectg[msnwinlfedcaqdyb]przurxwotscdzgtcjv[sbqdcqeculwutvfecqm]mjosilvbpgaawll
+bjohxvdcujujaoxe[buibijjxplrerpiphn]eorjpmrcugznwsi
+yflomjbhtnsgkkx[hhpskaiqhzlmbnpv]lgsdbeankbosyptonh[vxodyzameaaajwc]nwpmycktztqrgmxgbg
+eajkclofrzpwbscfuwv[vgcyrfqnycmarafkjc]yfrtobkpkwlmgyckhmt
+czamuejkegyxhetxmou[edrrdhmhhtxvpoxvx]wbzihlibvexqyvclzml[dnzwkagaeyicaojzg]wkireqqnngbfxsygz
+kwbjoaorrluxekext[ffjrmxvgeqyaoartr]pwxypyiquumrhbz
+pyxpvbqfwlpnawrygi[dtqrrjolckhpczlk]mtknbyltlictunxq
+cgwtgnafiflwgoims[qdbdbgkqhmtkzmmyuke]cuhipgoscmxtoihh[ieqobhwtcxsehgils]pmtyremzeqhcuinxs
+lmcuchgkedjkgbvxjdw[jxqmqodwyieikurcwf]mkfmofgbnxsmluu[rymmyeyhyncfnzobk]jnwjbmejttstvhumye
+qsuhfviyinfcwufzu[pqmeenwhbstgguzs]ypqszcvmaxfqwqcvqro[xiofditiroisnpbx]vhftrwgnrxoxciva[esrtbbadduxicftf]vcslxziacmscxaxvnbs
+bbfcqaoedfdwphomkh[jnslunmdmvkiyup]gfnnjqweocbybtjdtn
+srjpaxfvehavomsjq[nqqcwddbzqvxdacdep]hhpbhajjqaazpqyo[fclqwfkctufgmkqm]pzkwekfirzlcgduifqu
+kfmoszcssmucztdn[tllxhkubjuqjmgfeqw]djyeyajqakxkoxpk
+peeaqxjifuloiujd[tgplullzdgeqjononx]lsmrbynngeveozz
+chytpljkoqzhxfu[izwdbatnmmzzttst]pkfsahxrlgxedvsev[rcxdfirqmtavigilk]lvrudkskrxxyulbjbe
+iatlnhdapqsyskgstls[nqzlofurrzibukxddw]yxdwqadthjynwvatmp[bdkndmhtngzerzwqgmx]iclavwyossjrhtoqf
+vvanifuojsytdel[dmqjrwfgjqrcyazxa]mivahklphnoapabp[tlwiiuvxlonsucr]fccfhxkvvqeqvclcnr[rankwbxciojgzdhuuu]eycbcqhnkawkwmkxb
+kyqnkbwfvcarqcrcfua[toxpqnxiuyvfjlekjk]hfponcmqqsfdzqtlgm
+ksrmipfvtrgwofiqxx[dxncthyfpoivapdpf]tzlnjrfggtbgdxec[tmlpzqicqjfhxwjcigo]uzmkhvbltpwdbpxzfpi[yfkkmkzokekiidxpugj]jbmagsjlfozkajt
+xhrfhwrsgduyobjodd[pazkwxnflbwbpwxych]yvasgopohztnfcsbc[dohwmwtdklyjkbaqe]cttccmlckzlioizfufc
+lygkfdlnlrukwjskxqp[tcskymqclunvdqywv]rhxfxbjftjxdepuwax[eoqchqlngjnnshc]gvjhyrvjgueweik
+cehpocjxzxkpnxglhzc[ltjmejyuouzkisdnlah]ytzdlqcewgwzxdz[hcupzenhdmtvigdodq]oivalfgkscgnaxih[opciwwcvzkrsehcznh]iveqylobdjvqqrbb
+ofluwuxajcsnkanvg[vwpsezopzkpvhlobfos]gmnrtcprhthefopis[yvcgpesbspnlbvdcdj]unooggcrpjinkxmqsg[stfmzxmnwkyujhwqilj]editpyjnpwaefawwq
+cdneyarppztbtwsaqy[euyswrwxaaolxkzgcx]cqqabzealhvuwzo[hvnmwoqlzyjguvyy]goqjeapcwghvfszwsc
+hohlnwotueozwhyfgg[bdiawrubvrnulfemv]yohmiujjdfjexybb[uyyzvnainybidqfmll]pyybgwdxcdqdgjp[qpowhiuynwospqdgui]lqdoiaufqbqljkvhgjj
+tirxyuvikznzsavp[omifkdfvljmhlrk]ouzmaxynnznyhfrud
+iyoipjyrywuhpipcx[zkrusibgupcteuls]rkwpwfppboaxzgkbwuh
+yebynyhsovfufkhwoel[rqgwgiuuztoboxqo]tbcahalhrqzpqxhud
+mxvixuvpntcsxjzvpy[jnjtyjwuivtsxlko]zugkjugtwymssxd
+ddxewdmzqrmjcdx[tehlbyapxxetbkp]lkfkrutmzvjsvynmt[aryjfitktobzfnhcxu]rrbqdbzhgjwwnfpkxbx[ggbsnbwuwlduhlfp]bdniebubtcxsubscaad
+osbvoidqyhsnydypy[virseojzmlplzxfwcdk]qyyespqaegmtzgckltr[kjowbsggjlyrbtcxj]poychjfbatvhkrs
+rlvvjqnaiasedvpjbr[fufrhampzwdniipjc]oqjmidcyiekvayqfl
+hvtczuskhiykvchxno[benlaiuubpaghzlwbf]tarjrksfzvilwquxj[wehwbwsxfuaptyty]gvvlkkyayfstbcut[hxnojqaxevtbvmaz]jnhvumhqfgkaqhumxt
+thxtkuentusmryim[hzgibspwboqacdlwc]clsunqcnrlgldjbsvz[scnclutgijjilirutnn]izdwhvipobyzirg[hliollkyedcuomrwyyq]dpibjmbezvzyspmkgwj
+apezafwfsqifmip[kuxynugvrndkdifwhd]pixpqmsbuqspsdpqnzw[qfiqdwcdzbtidgm]otzbkrciacwchdnqa[kiblvlkmtkqjzyyv]hnucmptrhrodosk
+nuiovzzixafjgvl[slswktlejrrsmxujjrk]cjassomselslooj
+vnlustrakmrdrkjwju[nnlzyowyjshralbkgo]jpwjwpehndfweegrnq
+hdiueeojljpcqrdkdfk[aseznfnjilqktdx]fubppvpqwksxeiwpm
+kjlbdmnhtzcagcpc[wybonbamfkugypt]gnjrawnjietdzhaf
+ufmoyzcmcxoqqpsg[hkdzmupftmazbrhul]mypsxfpshzcirslsq[rumehwhrobhrjstjd]tcdatsxbxwzxseileyd[iwyafcoefsrbynl]vedzteatonqliwgyj
+wtmyhvmsfoxphqrusjw[ozpswsyjxemnczhga]xeplvzvjzdgqspqjv
+wxyocgbulqhbzyekcln[dijevkhdfkfwmppnert]uuxxnhhkbmcegbtugap
+ijgtsfvyzgrzjonlq[bxxhmrfelsyxkyxrex]pimhbbzahddhwrhudyo
+ydjcoqvktwdjucx[riqvhezqqrwpizvn]pptmsnmubbjzwozxy[rbzbtfnnkeyuvjqhjhu]hnqyyqccouflfzmk
+dordtdxwtwahcjcb[gumvtsackxhwojebt]gdzjirhxegmrgishf[ueivwcnfptgagdj]kzqyptwgfykrxqsc
+yovgolzpfuxumuusnu[yzmsckgxuxbcfhpovdi]ydcgpjfgjgstljbkc[jnxpktvohnxeoett]wijsttknnkaxhyx
+xaajqzktqfslihurb[ssufsbsajcwrysbaweg]odddpcsenmcxilrkp
+lhkzyewhnntocluc[witlpxxovbpaeue]zokmfkrsuzblnubzq[qbubewghnsjcnbku]xicstwzulnzadvwgv
+pzuhirxrvaghkajqsg[edyrpkukyvidoqbabcu]vfqcnorzlzxypla
+xythdypgcqkccfv[zrbuwbhkohddkmbj]dbkreagpyprchmoktz[mehstplzokdjkasge]bypysrypwfqaupkwmad[ywkktyjruqqoexms]xdvcvnaeuiwdtcjcwg
+ebmymncvgrkqlusommh[wtkwqtpboedpdwaxoxv]iezxkyrvialjrev
+njvacohjeagiztos[afpmzgmxbvpzrkpikb]cxbsozlksnpvdxh
+wnpqmnhzhaclqkn[neseqjerkxmpddehzpv]buwoodytrhkaffpb[zpqzycmuzkevvyl]iqdqjuqnmddqdmktojn[ocbknhhzdyzcpzi]srfnmfblqrqzwtusu
+paxcryjinpwgadnzgdn[pedljgwehinbuvueies]wykembvekyliivgd[mjonnndjrswlfvlo]vuanwryeqmmovavhf[pouuyesundysqaxzciv]itixbjpcioinvfkh
+vmlgtgupmvpnwkh[cpuwomxbeionmrkx]zwjdjcytxjxbzltbp
+gxbttoltnwfholw[srbxnbzsdlwegml]ufeghhwivplxych[kesniuppshrvbic]ongllrrsyzxurhxc[ucssycrhethdlhyzd]jvhniomjxluggwtcv
+kpwrbbrusxmusejnwz[wbgriazubzccotlcdbh]dxnvqwslhdxbbufe[pobrzwumffnjxfghv]qplrnuqjguonrpmpv[xxwugdzbckpvhhr]vbrmirtrwprtqli
+mlonozngubrbmumjxb[vzvxodkubovdionkb]uidfhtqhxxsetsnvy[spdgbqevotzyzhtyy]mjvctpqrtpxrbqeckq
+wftjnmpwffdunhwr[nzepzikompkwgje]rahnwuphbxpmwmtwboe[wcwxzwqppyaeihnxrvi]wozbvaemreqcvsoafr
+lmfgslqcwpzvgxgmgty[ihjhsbvhdnsbkroszc]scwicucudbqrvtygt[iomkilvjwsofqnjqtd]amzyfxiaogrsdikrgye
+fcjsdhrxjiuugivwyk[kazerfwbmgeiituwksg]nalxpcedxoajytfpg[lldrwcgzwhmukpmsvot]yzsnbooxncfhjdqi
+ljjwrowxmpvvwvsit[lhezgrfdcwohtllany]huqtnutwnuamaahpwa[ezoifbtagkrzzjybsf]fehkkskjziztlravf
+qggqdwibskgshrkyc[bcqhsghufawaskgezjl]tikipezkvitcxtefpg[rwvlyjcgevwbikop]ygxubvtkciptbhi
+gmlqugapdwdohic[fbxygwjlnwqygmnxma]sgnfeprkyxrzspd
+gtokbujgojpkdtrvt[hxtbjjffjwxnpco]vaxogwcclwrodfdxlfp[hihtvdymxjotbfuyfr]muubeuzwzbdsydkkss
+rpqdqfjuutdfbaarkgb[nihwtvhhcmxwbgr]evovoyejllhtmpv[qvkudqduftuvccmeby]caeupguvwobwkccojl
+gxqxcqpcbqmscefvj[jodkjejtlvhhyrw]ciduukfamepbpemyol[uchoefnuqlolilidyp]rsjsqlxmjccoipqueq[qlxonqxtccxuwcnrizs]plzdntlmgcnrwawrxdm
+jvbbytsctqrwjrdr[xtqorzwdmhunrtevfb]qqxbyumulbmrsbhtx
+yoenmlwliczccpkolc[xsolpcnqbbkrani]tzczkjomtarfeqiq
+ogxowfxoqczptla[ayzmunzjrhsyyit]ckixtyzdkicgemx[hhubqmeqeenjuwuclx]zjhusfgvemklroia
+wtnnwdcuqnxduod[nugtcdeviqkajsqxgvh]ujsnisiydziqndzgtn
+eylerocwshewgerk[szefiobgoejulsas]jxmoefzlxhchgmspo
+nnwqedoiuhqmmbqewzx[ocxrbmgeqxsjeorfrde]agqexvigcnntkdck[vopzcxqdokfydsh]aajrpilxdhftxbprqn
+gieaqwfwcaktnyrak[ckstsfspnaxvkkecu]nywzcpsrpeypytm
+nlsmbjepecyztmhys[yseyspewhduijglnxs]nmttyybnzhxcbuvcm
+gzimfexrobypudb[fmrtikpcalnxzjco]qbxokzuhvtgzerkwgig[otsumbzbiecnrsfvgox]pnbeigikjxbnesh[ifovbpoycogawpmbtuj]qjoaetsrenrirpvb
+ybjllzyznkniidrl[txlisrbknkopgbgutv]rspeuydexyushei
+nnigaodunsopocfqf[fdkbcjzyxamtnwn]obloxevzqyrmswtc[jkuniykbwsytpivsh]ceuzwuogyqxferdic
+gyuypjyncazpjtbni[aietrzglhhgxscvnwvu]ccqmabbzdawwoctwywe[fassebimijhpenb]bwqtcbfdilruikksetv
+ldxvntffkplnjgt[lhwtwwfoyuoumxngqbp]eyoreivfgqwyfet[ylipomgffukvmjynvu]npvyofzmqlyboidqya
+tpnxkxbhphxzetonae[sugfadsgjpdwxup]jainzhhwfvgcljydo
+uzllwzqtwsmvdpoivdm[geidfnypnnnszjjgc]vtwpieaxgzxbslxld
+lzeizipamzynfflhuhz[qzwbfnjeulpgjjn]aapdqkjbpljvnvt[qhauhykubojxcoyuglc]tkflnjrdtjgwilk[aorfkrzlpuhgozwyhj]kmbwxqqwfjxawbj
+ivqhauvcbmbzijrl[lbsmgujvpbayaoy]kteathfvlzvbfzdgw[xkpwoqzbkbdgrsjzn]hnihhzpetldtahy[ocottuvddcefplijb]vfolexdinkkgmcdwfyc
+vqblvnbutgxixnfcwc[kphevjpgctxpkavh]riyfeqvpyvgckaselrb[ryoltaxliqsnlqdagr]shrflexwtlaivfow
+lreoiyjedxzdyhdnlde[levshlupfrkvdfdeav]ehfmfwbetbsduiudzr[uoxbgzrwlqkbkcwo]wjlwlixknhzeuyw
+abnhwwybagtjfrh[jaoeeifkdmlksncnjp]rulgazssxsmrrwe[hisspgixyvssxiumqtj]ohkxzqzkfnkvvgvrhgf
+drtqdxxqsrkujjyyb[jxitdcumljupwcmxx]kmzgykavruhbplvjjp[tjxjcibazngasivc]iuhgnmtzaozykgtedes[pproeupegraihkv]vuptfrfnrwopiczzkos
+kbkxcesohyjlgyynpwe[bkintqjcoqshvve]torkeaaagbkbxosriuc
+qklkbdielutwmtwkgz[dtruujvmzvmannceu]xmrwrcevkgapcagtuof[ebouhjnkpgmqairnh]trgbvkjhgjvqmceu
+xcoycanpxtathanw[xdfzqcekyrgixxcc]zpbmkgrykuvlldgzh[zltkqabodeywxhtyfkc]jzetstuqnplogpkjyx
+pirttznzezsktas[ogefjszaezeqipdhy]tfzgyjkulhtyuhnvf
+kxyvrtcpdqieyro[wnvmnmiobotxsispv]qyvdfrfhxkjuqwdtw[qolhrtzasgthtplihxg]gfjpittpnbsymvnotyj[znwgxnufnotguzwgwxd]rdmgzgfprxmavttnoz
+mubjhrjxqggcrus[ammffdekmguajiq]wvtsxaabnjzbekpx[thnwbdcskocytas]yimpbasvxqiylaqn[mrrzwqztanrkdqwvw]uvtlhtffzkcautuvm
+xbnvzradisweizc[ogurjxmpvzglqbgjlpc]hhujtmvfmcqqcukjvjp[wgkwvyjkwkufvventj]ehdkswmxyekfimbk[ovbdceenqmnrjeqvf]oqvujeqvjlplnzgi
+ggbrbreeteveahudoxy[wuvddvvvugkdows]ftzrwbghewsdfqaigt
+shelsgoglooyenhx[lylymuuhrtnflwww]muaexmsuihzdiyly
+slmxqaktxwfpfgrqv[ekjhbymdpfpiqvm]zybjhwobkrylohor[xflqcdxcgvqpzzdd]txshvtkbijbkbnsh
+bpocmihqoplucwnvyb[scxgrmfmuycybgura]yupkvewviiggoszst[suowhbqfktiboyik]hqqmqjvjczoxgeoqof
+elmexemdeoaajpjhu[kilercdwmwidrkpx]pvyefsmytxvaxuzsq[xyyhrtmwtglmcqik]spnsavadaexrodemqbq[wzzqmadwqbqbuvdxpmv]tuvloljoyhrqccyd
+rzngofliosgytzkunp[cyjzxhswcqeeqhmkjn]ymhsqcfuowylqtjrb[pwocjlxtfqsmelq]ezhrwjlzjtsdqorfsn[iekekpprqmwpdyl]aduyoxkvlkxejyjnqdz
+yhwdblscdqhpdbthaac[xadcyjrkldvjlntkxl]tcohssfmczzbomezqdr[wspvzvkctwmmhfujxm]fgxpvtsninxayplzlas[poflalkhzwwqwotgldo]mihbeaapilajefhlxs
+xgwckmpjphdwvzujv[svfqqafftzlgoifup]pezixwriwatkcez
+mfgtxxoygegwmitbzkt[qxivglwljmpsfzn]mfvhkhhddithgxaokf
+npkhgeapbthebsqk[bwoqhnxqzhkkwcm]alwpwqgoitrupvsz[yqvcrithxqfdgzux]adoiatxqsplvllzivzb[fcfyicpoiqaagrb]lummgoxyspqibxaq
+vikqemveklzlaqdxvev[tsqfmvvhysvdmlspknc]ejryfsjgnpmxcvks[ecwobztvirmokwcf]siwzbkgxlniwnmhzyhd
+ltlhegkfxhbndmfcpo[pmcjzvzmerxvsdo]dijdhpewjuwnatewmg[ylninmvyjhiqvicagy]cqrtolyldnbzfufnju
+mxsbpkqgsuhpvsrwzdl[dlrlhbdjvmrjwwthq]rqowmkoukgclzrfh[djjugwzxaaqtqavlo]gdzvdzibnckhkqb[xvfheuckvskmouv]uwrmeqlloqbtbfc
+emfplgnlzranlwxnk[ubuhxoejgoxfciarjtr]uzcfagjxdfnewbxxcb
+tlkmvlcqcbaqozlwn[lbupwjeefgtoovnrkkh]sdzgkexzxzcpdjgaid[qisspueisheejzkfxdi]inhxlauecmmkpenqqf
+fdtrgsgechhugwnidpi[dtwwiqlxgtadmnrtej]hdgoyjhlzdrcjzvl
+mtglmkersierfaishps[gilijizfqdzqihkbsd]ieqqthavsiqbkxvrmll[oxznuqiocyxjzymxm]epuxtetrnfrzrlqd[gooprerdkioisowygrb]zzowrurkwngpvvh
+tznoyelqlffpalatbs[cmtlsjviihyavtxz]lphzihbzjykeuhuzpg[xqfwolpahmfquhuh]rpqawvkxodxmvfhswz
+ybityzvtpsfbovx[yrggwxpkqjtzdvkr]gphdlfythiokoitpcjx[wmfvcehazqfxesy]utjcvxaybxcikaqgrx
+olqndwuwjvfqhxt[qfgqmmyeowawqckfh]ngkiagyxtqpdwbrwlm
+ukuozdurxxrvljkoi[eysjyckwyiyuopa]fconkkukvvmgnvyn[nwkqsifcwlzjurruho]ryslsdfmhgesmdf
+tlchnjfxtkubrlta[rsqsxplnikmqxsyhyoq]xcytyjjduledlzhuh[qudvljyfmodytzaw]hspqkfbkjtsvcwpl[ptfjakjrpvqcqcuhmf]inxwobxnnzfirnvgmmr
+gaviilzxljsozua[vmqvdrqoqnztbdmzstt]ufxaggbphqyxgnpcgzm[zglcpiqjhahiqcb]tsiqxcvrwvqistphkj[ebajnjrqotekcerg]kciocwshxzksmunx
+cgpgikxsukwvmwi[janhpuvmccsdahfk]rrmkjehchkefwnz[plbujeqhgjvljzkwg]ttwfjicxkkofysgob
+girkwjuugyxtovkjr[htizrvsispydidi]wqdtgvsfnuisigmalai
+ajbikjzwulcmizeoasw[pkkgiucjnrubiwqoll]gscdqocmpsuvfznqhah[rztusgyvsxaeqfmesh]rarydwrmadghrjtx
+hxpxckfcwipinrxk[morfsambyhipqzwl]wzgttlcuikfpvywm[cyebxypkgvxhope]dqazfmcgyppybetn
+nrisbenoupwrstlxy[uewucgmzkoyulfbt]bbvorytlrgqknqz[zwseofceynlohaooxzm]hfzyxxxfpjmubbjysld[tetgwcwvhctlndovx]jxflzwtuhkltaqmnuh
+nmyrirhwawjtgcgma[ilkcycomeqvcsuwmmq]iridicawanwkaeumbvz
+sunhpdrgrjztzvkxnl[mtztitboyfmtysqeqzl]unugkiwrweincocilom
+jhoqhwlkzccmtrlrs[tazackiqztlndogrmgz]zsfezvlpuzwmfwee[vcfxoionmgpezbalm]ujdbonopokhkgynmhp[pcdhdmwegmihhkh]dgjjkcyuetspltxpl
+siocivjbvwhltkyk[imgupkeeknlltlk]qxfcqnjbjtenubcjasr
+hswgnfwswhyngohhyvo[vamsrkcpvakzvbsvls]ehqrevmxiccgfsq[pffckymkoredwdpcmx]vjdjsrqxttbfjqf
+qemtumhnmgkgfzfzqho[wfluvctfqhrwznyzfsa]zriirahfdpleznfto[dugecvltxsfumxvjaah]lvudvknmsbudzxoadg
+mvrjzvsrconakgifqj[ehgbxxxhfqcigyhuyya]eqofdufzntqtsjukffc[hbzrfurkracnfeig]zmahsqiqbinnlhnvrz[qdajsuhymeavrqpdoy]nspfggpgnwnalzuk
+sejkhhjswpiqukaddwc[vwdsuuxtfaxqbrcne]njkrzolxoqpmmua
+fumcwsiexfoqklovype[bzxfxytncrmwtfrojv]bfvsmplxarmselz[nrnsymdrakyaqzwivoe]fpvboftrzvkemjgqt[akiqkjrmnvhucjcxk]ynityzhxqopnjpslhg
+msoqujlsilpcgchprz[gqdevmuryxipqcgfdwz]wxjkmuhjootmigfietn[flfcoqhksuopnwk]cewizdzpgetongprkb[pqizytyliwhnetg]uknrvmoahsbicmeg
+evyofxtcsyfbjtbml[wjqpsedellhzgmvk]emdpcwxuuaccubksbqb[krehpfhgyibfxepo]imvfvflnagwulpcp[cldtyjrcehkgtfyxnws]gaicllkdzufdmja
+plinmvdjkaswskiw[zejltttlwtcetjb]uqkwaifdtedvcmiqcs[smlzeqfmbhssmvvmvh]lgypwtxchfxksqgmeb[fqygohnnxmmvazctrl]rwbjopgpdkeejeb
+hgxczafqluesrmrtuc[jkowxyxlufhgbmk]zbiycjiafsngeoz[mltnmcbnsrmdjini]wtokbcbelvzibjncpat[dmjqentqrspifbnind]drpbucndawosqjk
+hqaysnyyigyfvzsm[vrqjwqmhiywsbblfrq]wseacbmleqwlaci[eisrrgcmewmlsqkremg]hfqkdkghomzddiaeq
+qrcyyzpfuupvipsuor[ujvnwghyvsujblbiwy]uofftaesrxvghupknr[divaemcywwpnkeejjo]dmgdiifbkggxpzmfy
+qjttccgwnqwdehsoz[dfbrkdapobhqvzom]hqtnzkmtiunvomn
+irxyxnmdlzgxmpg[ityfjgihvzrylygz]qollizryghyxjglce
+bnibapdblbaoehfbvin[kmummoqopswsmvtgiz]isaumuoiybqckfvkhx
+waimkuqinxbmazab[foxenwzsxkkupwo]yjelgjycvabztzb
+exxvbdzpyswekjnfmef[tjmrddaazxyynamc]nambmdtnmfhtkiyqqct[patbobzwiwlidazpoc]nzbneeilwcjqnxqwh
+obtckokgcgcwbtyww[gxpfdpaggfbadjvdo]trethfifqwrfexv[uiucztyublzgcky]msapdqrbpbwxkoeuidi
+yfhewfkbdwvgwvmhqbd[fqginmtqmkcubfvci]aidxbpzcktshamejexi
+jjjryxfwjklxrkhhcxu[gwwrmyzrpjmjtmfl]fvjaxkdviibxaodo[csagiwfbhogtnpixzc]miorozrdmimmefh
+tzpxkatetacnqzombnn[bwzhrlkgwcolxczvcbg]rplchqjvjthsortjqb[oyqjdlyeyqhqtrfbfh]munhcovgrhuwhvkjzja
+slrtmwlceytivwzb[xapqxilotekdngaekz]rzohiqiljdhennylmk[whtwrgrfpxkgqrs]rtlehyggcuplhrfwsvs
+vjregfcqrdxbfntljq[xpfnzsjsmphfbppf]kwfjfcrvygtqwtdgh
+mnrnbytuhhsxrzgz[nzdxekogduhxbpipobg]ydgjseiypncodnm[oylueeldnmgcwmqhq]svqllgtwmhshzqaxf
+xhcxtoxuqumfxatsl[qlkqdcziwtbclcph]ysfpbfueqmlluib[jjvxhqopyhgxgvb]flovcgpyjyubpbdmp
+nvpcfbzmykatqdpgpv[eywcemzcjnlhwhfbjv]gcnnnrxczlzbtufuie
+rhikymyqgbqbwgw[eeitheuwdamcndqibp]aiikebogsqexfbob[tcsuzyilztxrrqa]wutfkolihzuhbvptoqn
+kokyhjebbwniohsgrbr[ggsocxmupmielega]esekvzvbajssesin[ipwqyvkwospydzpmk]byhqabwpjuihcpgipx
+pizgcsuyqldtehjc[utwlsnwndcjqnndpppe]qxzxhkayzcicvstxiws[tjqhoiifvxdzdkigtb]zjquhrplvjxruwjpyl
+oadivwkprasfyitu[yygivqpjckczybxrq]bezhtnyscekflpszt[eqvoapqpfnmwddehqbe]mnkqjstlvogsipe[vmcrcaytblgxyarcrx]nwvjubzclcaxtdmgl
+gimpphsdpyklrcsbk[qphbkjzijutqysed]fpokchopspibqiyyb[owxliqxhpvjjqjzvs]ttjeutzqspjqklxsx[nvxybvsgtxxwagkvg]pximctvjdqxbodwbid
+xmgqacsovxksrfnypy[jjybvmwissplkcttnp]ksakyoqvswnbrezeze
+xoxquvrpgiiopvepjd[xakbfdhgtdrxixz]uuidqssmeiardumqppv[ewdkbrnwbodzzyb]kuyvmhqxititvvmf
+ujuuypsguepvtqiurq[psgjujogkcbqrtrr]ckjvvhzookepzzwyuye
+lwnhrcbjrjqarzdx[jezkqlffqqbioajjbnl]zssjjsdouwbegdbnxx
+jghqoqlqghfqdfh[jswcksaiwouxhnssqin]kqcasjkrnihqmenbqbh[mgpmbwkzuduzsmnjb]dxsvhizedmabyjo[rbupdqkkgeihkywitk]pcgvmkrlpkbqfhune
+eopvqwwlvntomltpv[bwkbunwyjojuxoteyua]arbceqrmsflnytkl
+rcgjbumerakfnebou[qimexcxydncncunkhv]frixowswdjgqndoos[zkjdmnsofgvagtnlyph]efpdksfvricswsrn[vxscblhqnzquxmxw]dxnstwznvmwyawith
+zjddycxtbubaliviw[cwmjgucnnrbsybtpxu]zhmadkawbwtdlnjwb[qovxqaebehomoacpxyw]qctfbtyvbabebup[bwqjuutjmbgfdznqfa]jzitebxzsshsmoge
+hogrxyrrvjayayny[kdweaxnjncgvxhpud]orhfjkslldcjiokooob
+jdduztuhjzvbooejd[mcudzrhxonujxksbibe]ybhfelrayyxuuhuwmyx[lgshxdlzxbzcwhuru]zdkvnjkyhausdby
+xsuzxmrqkqtxmchz[dmgddhaltnlpfzkf]dexcfjfqdnajuzccluj
+ezpxycrcxzxycllpyc[stdgybwrxfzewkqqvzx]sxivpekfrrrqlfhg[nolxlfvwwqvkhou]psuyhkfiyohkogwfmt[zxwiqmslanvyrquhqa]fereljocexswrvs
+aeogravcbprgitmqedh[yjqbxvjwrcrbyneghi]lugbamrjgzqaixjxpa[zpvvfxavievwanxkedz]zksdwfkwtrmtaoy
+mvchajtfbplmslzxhk[pmkjinpckdvwjliz]lwigecrikkyoijkeow
+fnwfspmlakldfdhc[ujbeoudcbtqjmjy]tgitkdutjdhlrkwbts[upqsuxqtzrmwgmbjqyx]ayaivsgiqcuzizeau[fiqnymhyqjapvri]eioouxtbfwduighy
+dcuvsezsqwjnsvlqzah[jjzbyxctqhdxfuqer]wztjqxgjynojjur[zkiosthyfrroydaykyc]ocihuyyzvwdoixygzk[psaghlhtqoptvsldbdi]zxqwrhusqligxnoa
+tjzqnocojjzktgk[omlfecncaondrqrvwyw]dxwuwvsdiehvzqmafo[ihbhwnmxkbkypmum]enkexramnrjguwuxq
+ftdnelzrwzvxobrhjtb[kwnjqdhwztogpvvt]frxznutubezaczhwucd
+wtvnfoqoqvuioaotdqv[qwzmcsqjvpkrudkdu]vdcgzytjsihjytaunui[vxnbnlwvtribvbzv]lclrytcczbraubnr[fptsjqwofyngtnurf]izhrnmwjxwvsdcfai
+nqmhpgsurlnnjikyotm[nxxdysiylpgivpuc]uofofpqgcbojfofja[gmborbfjvlfokmkjlx]yptrgkpiarzgsgl
+polwihnjvtlojae[iyjbafwjoxqcjbwn]ecidvqragdcuotbw[ununcsfdoxstecbass]knnitckftuczdpblih[wylrqjxehihxfvzjn]lpjuibfkwrcmcijkho
+gsvfujdbedschya[owwscbzhfkkymsfy]bbxedxnzigfiogb[sebiwzxbshqohku]wqmnnhmldplmhwnngu
+cvgevjryjbmodqfw[jskismdjblbsjgmhilp]xhjlblnepxqayxpw[pmifrcxnxmadetumwm]lvjmmbceghwqdmk
+jgssirdflqhglgopgx[epcwzeqqkidejdrw]mjnozbbmubmqooiqr[wacqyepsgljjipi]vowguayfwcghbghhoyp
+tfkqxobejvvmglhqrgw[ddleaoforgpypavf]flnaiggwuxdbldb[rqqrjlzosctaouurtsr]bduvfxlomgfdwhxj
+iwhaxbggngkgdfi[xklwprhyorwyfcyo]lbrfcbprxedylzpfjk
+ixorpegqzuxidsasn[pwuwcywpavudpbkmdrk]stfjklbehmjdobcr[ziugachuezezjsw]dzwuijfiexsbbxjcga
+lcstmefgsfxelap[iaroxcldkoxjprhpni]erzoueqtwtyftuvz
+gsnvneyjuacyhipd[aglvnvpawajzbbgk]ptnrpilavksgzjyyo
+frxawoaynynrnxzk[agbtdjypjtpqskh]ljshzsnnynqotgog[ckariglbjzvbcedrap]sqdkygpetxuwfnk
+nuxleplcklptuce[fxsyqwfblquzwqjw]ndnvzriqecbqphdoc[pmvfypuinsxgglg]vcgzvoddzudwrapmyh[laengialdtihgzitt]ktbypjipfpnczyqw
+snghsdifwlabsbpzw[xgnrqjnhwdqkbhowzaz]cygljjwohwpzvxuaw
+hhxorrjxjnhcavt[lkeigkktbiaquqqh]ernbnsmtunqyccft[jiespyeonlsjliwt]vbhzvdhvvgsdgijg[lkxvfabwpujiaeaidj]dkilxjpizbzeqxkzt
+ukgapmfifvftpexnr[jydugqlbqyhvbsmoxd]kwvttiyqdmyaxidts[lqfofueuycoihkxig]vqbdiqazwnqetguq[fxhgbqqsilfcaflj]oissblxkisbkmolspwp
+hanudfleaqpnnykwfu[kllfsqanmahiwkqz]mkyztkpwilxirukacz[vnwdxbzbjrcvmmbx]lsjlgrnzdilnkxp[hhepketmdumjgjjsu]zrgaagprkrmgggpk
+qcaodhkekjwrjeu[bvbkikapkhneodeaqox]xxshbrfdxgvyabbuj[nnyshhdaogsermyisk]ieutdajlitenkmoh
+ryfcblckaejcahgy[kymhoizkyffsxybzdta]olmhiudvbcfbkjb
+jryuwyprwczmcczi[vtijzvfbpssohcdgv]qizkalsooznmasljh[sdvwxkvydoikgjtomxh]ixzqpazdakfwczn[tyjorxvairghzrqi]aunhzwxnkjqryibre
+mlcynvuzmmcgoqkft[fkeqzbjanvjoieooecy]muvosxtjytdkhuh[gsdxscdehocmajsnhn]kvqitwpizpjwzmeb[kpnyyoozocsxurfl]obfvxcgoavxoiyy
+tunaljqogcgofeh[ivxhcnvflsbnmktk]akwwtuwpdpbnesmrklw
+hicudrdjoglrnongron[mxaxjxojmjgutxg]tbetamqqcheyjbpa[itozzzbcpnyerpth]brqcvektqfaxazdfivl
+pdyuonakwvugssuduom[swhnhhzcbkrrpovuomy]ecfconssgftuhtwswfd[mjdgnwmncbjoxlinm]oklhmwptexymbgyfdaa
+hcxljuahgmiolty[kulhszpqyvsurma]xwknankkjfsieauadw[anajqqpwdkodeaagy]iupvtabiqsykmohiisl
+qruhviuomiixcoarv[idffbgdhamsshlinl]ygsinapdnmzvgit[xinvdhbqhbvqrjx]zdamlvlunjkkhof
+zyeynxvzdmmiybab[vhgjepcwqjbolwnft]aopzcryhnpswgmds[yynbcrcgegnrpsk]munxtddzxyvzwwcosq[igdwjifdopnhwzv]oyebiutkmraayzr
+onkgxvprjaynfipxeum[jjwmjcepwxbleahq]ofvhiwoyxmfnjbn
+jdwjapulavrgiviora[vnwjfwpsfcdkhamtg]jqcgsuleganytwsm[qajmdsarjnocjpq]lxpalpkeehxjdslu
+mzyzoemluwoovah[bydwxptnmzqxdqfgdgk]hekhqzpgilidwvpey[ouhnrujqyhnlilh]qjarvqynycolakyiu[wzeffbptmwixrmr]bowqsnjgurjpkuc
+jawvxlepzelbjymcke[atwksupwtnjjnkwe]xqqcmguandaqptp[yqsfhnssllituzzwa]xbgaqeuqtnclehgr
+xumjolgnaowjdoq[obqxrncwytcvrsa]tivvsxdntkrivblx[nfiworqsxjvwyki]nxnpoipcjqeeukx
+svkoyidvkhkvock[htgrjltotuunrwka]uqyezwkltzsjtaysa[tqaaskeswcllblpnozj]yizblbkqgvblvqghvk
+lfqasqaubbgirmw[xxpjcwlwjsklklgyrk]fwckfwwekdgcesswh[xkcxlxtanadezjpva]naodeooepetabkh
+mtbhzeufmgeskqsp[deibjhufkntahso]oxebgcgzvpudozi
+epuzizxnxpmgjkabqfb[fmteazugbgjgozgsmhl]conlsruhnwdekaxf[zimnpzazgotaghhaq]gmkwnkivobskmeafcck
+epbvuluuhaazalp[dtsthsijbzgbvwzwgpo]blfatalfityajcpmyc[bbypikyeizyfntdt]tcnzahhiwutntyt
+vailqzvutssuxjy[llxrpxlpcojwmab]kqpqrpogogkpefajeuj[afzpfhjmpnestctyqz]mdggrbuuglbmweujgxl[qhheeepqrcbdfhlxoo]lxvrdwpugjperwt
+roreocnumcerxnrhr[ricaoyebqjpgzazssc]xzuqnzfgbrcvfnmpcgs
+uludakjsmsamkpmy[ropmbbvjvupftps]swngrcigiqzdkie[hjhbsazzxdxrseczxyi]pjymgjgdksaalxbav
+ftvggoxgdteaxbrq[tifvvmwnraoiprgs]xopjvpddfjnbmcuxpu
+buzursiffpqcwnlsl[plvkitdlxiyiotdk]anlvhgektgbpslsiai[gdgwwvjcdnywwguf]bydbjfxclhxyfgruke
+indbphvhghzxsuy[izgrijghgwhcooc]gkaqbcpwwiyfwmv[xxlzhbqmxquoawq]gbazvlthqbviupchz
+qofufmkbljfygwxym[egvtczslvioufuzsyk]uscakosnjpjbcrggach[gnyghyvmgirmwolh]rotkdpwevcsipnxjokp
+jwaktcuuojllglwmr[dfntqdtznawzmzgwbj]gjykvnqmtzelkaus[eghpxrcnnhijhev]osfvouazhsijprtbtnm
+rqrtzzgqsnzzfntl[mrleyuyknyxyjhoibf]mwxfdxpeiyuhjcbdyi
+xgqwglrrdtupbjlmy[ayygnszmebgddghqg]hslqxsvijohmvklknkz
+sfqhncgimlzgjqs[vsudwekhrjuwjgig]fwkpceyrznigiwq
+bellebgmjpcruwv[njhctgeptjieourukf]sgybshminsxktqlfxr
+mpwnzwvblaseycnljze[qhrfygccokretvo]ydomrtoamoecceekrr[lgslvkhwnmsovxvhqhs]cbyuvbrusqqpvkmlhm[wrvxwjyyzsvxvxwpdq]amynjoncmemftlnqa
+iniemtnmqwdmxvpicqn[drdrbflsylzhzltq]orjcjdsbzijkfwhdhz[mrfovzdsugacpyvlaj]azjikxjuaszxpapss
+ynnxsnsrjdaqbbaa[lyifxbzcyzenzpzzulj]xejnjfbuykeojbeatvf[uhpeylmwgllqxtj]hirppxrtcuybulsuek[tzbdcyvsbmqtrzbakxj]kzpsdszfyuvgbtlksus
+ujrrrtdxpyhlpcyxs[molsrkbbxoexpbqhnhx]aesumqacmujuchpxv[jlwaktyumxuiyvt]mmwjujsvuvxsxxmsfr
+uehksybnnztmczl[suqgywouppzavyoi]zbndcbjuexdgscb[cliuxzpullifofbhgy]kupndcjvxqiavpk[hqgafivwddbbepkvjj]lrqalseezuhjjbkese
+djidmbcuqbjpfolm[cbbrttiwmetodejw]ghgnojuvsogrchwfp[qpikwfkqkfphshxbmxm]gsinzrkbzacyutlxso
+nvvjtnsnglopvcmna[opnjujeqmpgipfm]rudoacagklnjajjye[fqrtapichjqkhhf]zpkowfxfuoecvzq[juwjiqcolafbxzsw]fogkbzmrovqvbxbxeb
+ixciqkqggdxskbso[wkjptmoonusnkzyadmx]tvbhebhhaqhopjbjqht
+gepgaafxcogfkyecgs[jdqmpkhjkqefzkwxglq]zfpkqukaelflilmzwph[fndatrnmtrwgbwpj]bndevgsiouveums[fqxvkjthzmyryobt]ywgqodizmhsymako
+gjlyyrwgrugaulnj[zwsmlmyahggpvugef]ppqrrbxasqowhwz[ngwudjmonpelxhubwnj]ucfcaicagnbvlboiwky
+lfckmicaonarlbnu[qnigowwaziwjlmf]ihypnqqozcilwpm
+xmtcgkcyfjppjwaa[jlzhrxmfyfjfmadttpo]vucnncbadihuewzn
+sviknjiphswrawyskzz[vlsdhjduekvalqgwy]qlvefwhnwmxrzgxq[dwnapnjsuiowoqjts]pnepuekbrlbsswijr
+fknvwkusyvzledp[qzplkidoxmvxrxcfs]jxdhirqylkerndfd[vlqmngoqxsbmljcle]rtwemwvqkpfwfri
+cujhxofpcjpskrgn[jxxgrxhgnutgsusruvy]dewdqleqewbqftd[nfjzhgvvqummwzhyd]yrccepfnpbehqei
+dmfygizbsbrtgnzam[xdnnacheufcqahvx]rxtljkenkwxgkhrwos[xnxicyqemngzgjp]slcfzksterjpmiz[okdqdoipoqwcoyfyamu]cmoedniphnfddoywbne
+oafdrqypmxjzxbxutj[yzlsdipaswmgyay]xwllqynhfregxpwc[tjgxnibylfayarir]phswgvlkkfjjetrhdl[pkcutagssxligtwbd]xrvonaibaytcqnhgc
+ivalpefzoxwoqycavx[wnrysytaesivblx]dblopqsupplgoom[vxtobrfntcvixltcb]kzktacrarmtwuhkcoin[eviwodeyddmsfkvhzue]drtrnlgrndrxgcp
+aygkprnkwdzydlmww[firwrjxyrnqlvycccg]lcqurfdlcrvbzctz[cxzfxjybrqysasrppqr]domoafryutthljppcg
+uowwwiqusrqkpamdm[cppbcnmcxpecyoey]ndmdrcadjoukusxjfl
+mueapqgbxuyuttzaw[eojhbogjbfdbhyqjp]sxsjeclolvcjexxvxij[zugkiortijshaocu]mfayspauxoxdwkbj
+swusnwjcduzzhsjhykq[jhweoafdbntsmxcg]fwqrvlhlltfeygpcnyi[wzibgavydimypgdao]ocomuevbncyimhlbppq
+vzatvkicsxcmgcx[lembxneuonlldqupk]svfxiuungebjjgfre[ijwzrpepzkmvdwrjck]bhjiggmcfirhzyjljkd
+nlauzkixeqoldqwd[dwvmcwkqnwjlzqscj]hnnwnarbtuijzys[umpmhpnsrbypmpulhf]nijrnkqfvbyjfvgseaw
+gefcvkqyyecmnorr[unfzknqltdwwrejeix]quyfoemcjnbrarjuowo[znhhaogjluucobyvq]nozfnuqwkqrcbtwujxt
+keerveohuokinft[vtganysszjzosaco]ufsxvtiyupbeddibmt[wrlgimiwaspamrdp]wdjcaxuqikgauum[jpwldupwbuuufjnx]tumqrmftbkrmohls
+rtgtdqksqxgvgxadbjy[uclopjtrzpccvdpjq]hiqaonacbzvgvigg[dirbsktzndttpzmtznz]laimumxqrcnhoitaokp
+iqthbpkfocdhsvzje[jbxkmkvmrbnqjwlp]kycbbizaasoayspojv[iojspytksdfugqsqhvf]dlkjrsotrfugfft[zuzflpijcwgbioujw]tgyhlfclaxcsjnavdkh
+lmekqqiuknygtdo[ramnjnqzfihksfpoqsv]jhhvgphkjifxgap[dmpwxrhmhkwfsfgtn]mfzdjfhxmkrascd
+fywgfyehgheiqhbayw[ntuqlvjvldeyzokdepc]jrqpaluvezoujks[ijkurhccihukzuis]cljvkxweuvldevt
+udnphzgdlussuatatj[phfqqkmuhvlehlo]cyvspnwlrcmatbwoua
+lozehtimrottjudo[krocuifdrqwhsmm]uhauuuzfssimtfl[lyshrfrnvlueierymi]xogtepsflxfwcpau[nurlztguypvwjvoldsn]yxwnuqtvewgmlbfj
+qkioxzfrxxwbcddg[iecvjowpxnrevqrhl]qxpciafqndxasahsvoo[adfpiuoapzqsasajd]lduzndmefgsvzzdpmcg
+klfxwvnampkmmqjmfc[pcaeswcdleyweirmxpv]jnwkgamdjeoakjcnuep[hjwzdndjlvqfzkarwk]ewwgtcnyjuczgmyif[eaaehzgwbkdfbcgbz]eeioocxrjsulyuj
+eptlgbashiewmonaaal[ohtsrundioavfrouii]aydjhcanascnanbfzvd
+ikhfkzncdqyitenbg[ldqqsrhumdmiraztslw]aydpjfypxqllkevec[aponlfgxnzgcaddwt]yxlzqyhbilnsgjen[dwdrsgergyrzumtlpvd]srlqivkdhbdbevnq
+xpjwxwgiyzqfwajto[msisxrvzebbtxiv]zkuujbuznilsymuuxq
+vkmqsygowhcqzdxlslt[fnaztaplxaputnm]ykkslsosxwczlrwbpmc[orlhcrbdjuujhaj]odtfvozkxuwqdpsm
+qqxdpjpmujaveczctbz[gulkmdfhbgvyxuyd]jtxafmzqwqxauaxjt[jgfnrwhgdtkwdfgt]unidfciwdvpazpgfa
+lfcczmpjpqgqonvcvb[iflurylkaiuflxp]dbepqquyeagxsmrhbwr[vjjohmujkozstni]suvejhnfwknjusxgxwr[wkjnfmxxzwulujmw]qyawlzkyazbwftlw
+uwmrxdaxrlsvujdjrm[dmdnqcmdmnmnhhwicwk]uowycyvqvjwrjgtpfqu
+zbxlifyzwnwujvs[pyyyjxylpmpwgbh]iutvnonqqqtbxisfopf[qevehnvgqgkyfuqr]mqrcuibiihlwdrzd
+rxlnsbgsuofdjgifrnu[eougczwqhpbyqjpo]rokdsivylwcqepdyhfp
+yhzwpokjwnqbwtsxuh[ekjrlmzyakgkzlemnxp]gbktdprzdyhcifmigxt
+ewjfrgfxriqmbvczdtw[wlbdrngfgnwdvkt]vxgbaaggmwndxlms[vupgwxfgfpxtnen]kfeekrdualqqnril
+awkkejmtiopfrqfasgn[alciuobkmtbxngulv]qlowmadlrlapsquuhw[hhtlyfkusvlwunbbjod]seacetmksrrodjqdffk[aunntgaemlyoabfgpf]yrlrzbdjfejbmskdtrz
+uegpnmuaxvvpcsuzi[pxcbpsgaecuqyhvov]oiyjoyraxkymelqg
+ffpelsnrffyfzzfdb[ymtulkndbgguyivf]uauzvyseztbkdvxow
+omolchhfvuuzzbodx[zhvhxrqwbdhfwlnn]wyyrsjfjsfyafjfpoe
+puihcjkezjyjjfl[cornhtqjyqlebvqyl]dbemzlxolqxpzoi[qeihkchqoewcabbwog]rlfloutfwlcjywygd[glqjydslofkcstjxd]oxcycaaadlnxfkl
+hbxhlyelfyszkzyc[cdxcsyocdiifefpytl]wxefesokgwwvcrp
+vdqcqggyjstyefs[yiskvcmdlbyuwzdom]cwmntthjhfyzlus[dpoubuwkbwrkpfvlgf]zryvvtowakcyclcg
+kcpbllbamycbuynia[duyxsbzyzibjwejygq]mszplxmgtkqorlklg[kkbpzdcqtwkteqfpm]nvgoipyzmaxtizqkxk[dkjpvseaxvosmsh]ourguqaabxzzovsn
+ovojqexhiiwdqunfvpy[ijzonrwpmtbftrqgs]zkmuxgcckijagmj[oygvczrrilsowmxrcwq]jpwamodaidqrzmal[yglvklzzljuqykuxte]cifhyowckekufubnmu
+hqsemgdtjpiikngtrd[bqryvzqcejlkziqbeg]gycysifcawyjyeu
+tgdpvbxtvxlyqvouu[xqefdugumgqctwvihz]yxymyatxjpknmpb
+mghmbjssqzjlzlg[kilmyfmenoqjnmwg]hzuujufmwyperhvdl
+ieqarqlveeycgazb[azjmtbkbixtazbcv]xroiknhtlbefpgh[xnhgnpluemfqqkxg]okbkpxswfoikufwzazc
+phtjaokeiocojxb[snjwozbjnpwckhr]cjwsbiopkgqjjaz[rxkobmvupvjvobifvx]edubeedqalxklpb[nyfuqcxwtynmofmfg]zwdaaonmcoczxvfr
+fddrwtloipcoigpruvm[nmnolrurottdlkhfwzy]dzztqofiytbyhhzwsy[ovdmmhigvmzuuji]jirdnbaefkkdpgi[orlijsvzupzadsvi]mnmwussnnikjigkkr
+gspafobrohvirgeaxdq[igehxnlnjtwfcuc]aeibhshuiyekgcymyty[xhoayxpksnfvdzjwh]ktkoteqwnsouvwcftyu[eqfnhshsnakdnxwonzz]wwfzvzaupuirropirue
+bpyvotpfgrefzidpn[pyvnycicdpcutcayrv]twcjgpggepbtnute[fdumsgxervdixwv]ydccutccndbxxfjrxh
+okzxxrtdrfviychsj[ymguzlptohblvsj]ofquaojgbjuxhkrm[ingfugdcfpjtyoj]xwplthdujgksrosmv
+jbwwuuqkuwrrzxmuwh[hxqptnyqwndsntckqex]mgmaotcyybmuihu
+rojskmdnydeouqz[cdmuavkcabowcozhe]znwaohorcanpbyhjii[gkpcxjhxnhligil]qbzwurxyzdakgsnwvh[ettfivzqkrrenpxmsj]dfbcrgpjbivcpcpcoqr
+iztjhisgpskdgwxwfdq[avnaibsrkfmlavnyuce]innbnunmtkplvdhq[lxexsvmjqjzpswjyrju]adcnelughetzceb[cmafkyaouzplrel]iqhabfxgwxdrqojp
+mcxijhkidamijcggv[buvpvujncpcwxvvt]xortwrcnebozerevim[ylisqiexudovelmczm]sophxrbvffupehspu
+tdbjhtyvoiflmgdt[lbwyayxikccooiw]rbhpfinzxpaayibe[twvandevzmehmiiot]npuymvedotdclzovsq
+jtfyyycvwwukxvfbpq[acoshjowooeituuy]xicaiqqcrtpkwtu[lnnokqhsagantfsyl]kchtjwkppjyxtwjh
+vfzsxxvmxhdpjrlm[wpzhdncopnapfijmlcr]lqhsravxxgptgjs[wwyuluteptkhznh]tthklcbbtbvhauug[nfplnscrhldnwtdyzqe]ockiyqmpnksijbf
+dlnpcnognelscok[ibbeqsbqltfskgcgqb]htrpytqxmucqlnane[vtltdgsfjrwohtc]sbykausqnffmqkv
+kxnaikbdqxcponrlivi[pxltpufeegjrawwanax]apuwyiawecyuqhgjc[vtenugjmwgebqzdt]jpstgvxeivppyaqwdbh
+bjnvrqvazthxmzqe[vhhndcvzvvtdjpu]xvyoyqrjtbnonsstb
+rglwwateiuipzihomf[rvlceqfsjsdeajp]umwquiuviykogvs[nyxtxtkhyplexemcvjk]kgqhfvraxxybvapgs
+jfhopiiqntjmgdsj[lrijxadhlagitvp]uiwltkpdmqcvklmj[celhtexfpelokeyl]jucghcilfpxmuhsxlj[lnzbuosgycapkcujcsq]uipyywsuzrkxcxma
+zbczjtvnmirbqohanm[bssrqrthbgrtjlfdeyh]sajloorydqhdlpfx[twqasimfthlutzbvc]xdyjyaewqxknvdz[exppwmacezbuavlhe]cldjcsqujgldchzigys
+xvhlvnfixnvekmxfzr[mnmpxowwvahbtuiltn]facqroxwyyelgbeupk[liawlvgwyfizmas]yxgndlsxircarikrb
+yjisbltbmhloiojwzy[uiqmflerfnevkzvnfmy]kecwgynuudxejjvth[joscliommzmbkqcqa]pwypdesmkawikue
+hsiwncahwnipmmjwspf[icngtprynzjdnsgmh]htclvcobutyrczggpic[saypixczichbjeve]jmpwkwrnvhjcpglrul
+aagdbakqyfriiolq[cjlhszgovtyhykgikl]excahvgfswdnpezh[typkmvlnkgjkmherbx]zuhrtvvwvcvhuzalde
+qdunnnxbbpkljlj[opuhjxcwbtvnyzd]gqsaxqcmgmnagnim[sbbkqokcljlriqvwlj]vvgscumyxkrpmyrwz
+drtuyztubzingcdvpy[ichljckfcgomhcfah]wpkgosokfjvzabii[gufmzunfeecjsbgg]pbtuedlavgbxdqq[vbbhreveuzdzbjygt]kglhdfghynsujkvnug
+iccedgowicdllievwww[jrxauxixbmexkgfvvz]fysjaucelduzrxp[kubsdwfsoejcskemvl]wszejdloyalatpjq
+oujirnbrjgnlqaksps[lphfkzalpspyhuxf]kuscphbgysuwhwyhot
+vwpxodocwmfhzkhyf[srbxugrfpcalangfdj]bopxssvinpngkthdqyw[vkkyaqsjhizvounptrb]iiwhyeuatcqnojoidrn[xiuphhwusooiewosd]gggtfejwtpburzqyr
+ysoiymdfphxmwlmlbm[nudcbwwqdfabqxc]adsnqcsxmpxwrhdwp[kullnmgtapmantsqr]ykmzsizznrmofzmy[cxnrxafdhfprlarkd]pffnyurmoaxrpvd
+pouuuowcgcsgvuznt[wvbnsxurcwwxhkpdg]oncpjgpynhzxyvi
+vlyfxbogdlwgzbuy[bkgdkemihxctcppam]ckevcpesenqjadifwz[smxfhxaidkueomhxyc]qwokiceophbpdyjovvy[tmzeqvagzhvviakrh]hionrvofdutctqdb
+upsxlrmcnqiikdzhlcy[hehttqfmtzwgrmxfo]irippmddtqadjgytw[zkxutgforgpenbx]coziqjvbhjetosrtek
+oewwtzgqsoedpidbn[rjmmegjghjfposhp]tgddsmuqxnvfpopcg[iwwvjgzvbmkhcmlhm]teygdquxhyhkrtiyjse[sknqnxtiutqtavvf]bcqiwxuliuhpeto
+pdejprrltzgdddqhod[jgwgzdgvdopqgknwbqt]jaxeauvefzuvvgxlid[fpahofmhzzirjuw]enbiyknxsjhuxzx[bicvtjwkkhelcgebywj]ldvpqmpgzvihjkejl
+oazlgrzhvtekbje[rcnbajbbtikrfapsnuh]gtddpwaqibjnpmfhp[zxarpxagmnzespusnm]svtfacsjwezouqnyfa[ujbucyylrrvuijybde]bgumlrbysgompdeo
+eyescsulrvrxyngf[wpzojptmtmqywwvdz]oicscctycvplkhsb
+ecwhdlfufxxytti[tjpmriwkymqufurtux]kvcdcihmfxydmxb
+tmlzauuiszcwimcvli[vnvyjnebqbpoaotvcre]eupqvhojcmoweveps[cmjkegzrkspdwmdyuo]rjcxvzssaopikbi
+wmgjjrccewrspnkcdg[kqagiunuhskruqpsmql]histajgekuklfzmu[caldsteatfkgwqogjb]hwweftyntccwfmw
+lvwovmvymkxwcvuvuov[sxedhxpfwkndxgtwn]jnpctsvjkqsybbfy[coophwmyxhbhjjzvf]applfppvbrejnvz[ipytgyblyicrnet]ogktxhleyrrhjwqqt
+xuiednrxcdyejmgcsg[mlmhqtzingaekkj]xmvjiydsuffmteb
+zyweldtmlathqbd[zsskrkndiopdfqocigx]mpflfwtncuwjcnnvhf
+chmlgfccuyimavif[kpgcuavqzwvekmahgxu]zrrkiipozbierayt[ooxqyjdkmmuaonht]qhifgfwmnavhlgnz[cnbosuyqrbqiuye]ksvsrroennhnxup
+agxsrnpuwtpthaijwgi[fhyxwctpsxqkkypdfie]craulpcmyeifxluxu[yypagmcumxjcraxnvpz]zdgmbgteapcjwwzaive[rowspqgmcvqudjxm]qydbkwdeuraznvzzno
+rhlhblmxdccpvudu[jhbawwnkolhlfssiw]rahopqrzbhdivhkrl[sdyjjbmlxlpcfabw]olocfasvuwqfxbbynn
+xzbhnrzyvfvbrodi[kikpaqjccdhwfmjps]tqeliktvbjjnbpxwtq[jqjvumyqcjodqippp]ufaxyqyvdhjxccwbsfe[pxiqyqpvccnocmbinr]fqjralzkdemnowygd
+lvbihonzfclpqyijtk[tzokuoeriylwwjahfud]vqbyrpbchllhsmeodxl[ktbdicmiebbpuxnyi]guxcypoxyjhshqgshs
+nnmyoxtukxhrsgt[ecovrntpmkcaekonw]ncfzdxdlawbwtxqpkik[fkkkkxidubuatpihcnc]wqxmtvyakouvijt[tjvyhgempiufanh]bcibhdmbmbmmbyyi
+jjyiltmpfvlkclthbz[icijdepekvlffegr]xnmbqmdiaskvieeudt[clfecicrgtuxodur]kqcqrnvwfdhpibndt[xsieatgypudmiedmfo]eqaouqptjuohpzbxml
+waqqyhmfacfjbfasug[mbghdrtwrqihjje]jczikhpsasvutpmb[obwkagptmpwgjbhev]ozwfarybcfhihoku
+tocybmyipesjprx[jdsdjyflopvltwsccxe]esswfgrsjawbduxuu
+qwdwzgezyklxtmnd[uikylllxmtfhnwh]dmozabuomdvhcoz
+tffooggeeufibvgyy[walfmmmfaegxaua]woxfjealuwsjajkk
+aipayrjoievpqkqcb[pcnirwsnebqijke]ocpwinpdigoxudcksgx[vvuxytomiqmmacndtk]lkwmarnwqvzulsxofid
+jwrefdombiesxvvap[fwhhajyhfaqzgym]gersxvbwsbqezoxcg[iaetgujgempehiaxx]llbgjukufbvdfxvjs
+hexdafengwxaarjkqhe[brxnqkfcyltwlxc]tfqwhqspdfcgajfzlak[shtfaywffbchkkk]txpanajvkwazozn[jzfxmgozivlbctstlz]paxycypplmjazycksx
+rwttdrhdouzvmhalwc[ozryzmmhwztywhuif]favxmwzmgawjdmcho
+sndufqsbyhdkyathrxm[spluzodshkuiqhrm]gwctupgaumdalep[urynlbtsukjumpcrgar]mvgkstgtaxmtiufho
+miypgghnpfhpcndife[uogotzsxnulstsucja]wrdogybnlkagqdtv[uerlwvvqvxrvtsaycg]bxpngxvmakjdvvdqfed
+hgcyvldphesdmdma[inomdckqkhupvxmc]avlnivtukipmdmts
+vgjaofvwaodncajhg[wmqzkrqiwbxdfsgdc]uzsywyzfptypsbto[lwfowjvhczggllfrw]nwchgcixmkxheceuq[eanuozoreimfpjooin]btyiwwfizhdbpfazpjx
+ldsqkerydfisskoimys[ltqspskmalvyujfyrqt]dtyknopltmnvdtc
+ekrdpdzvkoxfkjfpx[dpskecmtgjtwkhi]nidanbsojuexjgife[pgpitenqczwzafdad]mfcmnjodtkvhbknfto[uutgojscjiffmofegr]rwirhlyejxezndbs
+mhsngxyweukngbybc[uiapxfrpfptauhiw]ruywrhlzekcudjgkw
+urxtzdmrfedalnuuha[ioeyevidklsxpqkaahw]jhcrcdzwljhnudk[dfvcwbualikbxihqg]rhhwlhcfpbkexewpgn[gkgaygbsxboxypxbq]trsaulacafchpndootk
+jmlhqgixgtfbcxyt[vhwpsfjufpbampqyqa]wwzszedhhdmztex
+exilqpohtavxypsco[wtjdsrkpmulcraoaooz]ozlzxumlxhyyvcg[btpzjjbgjlydtfq]suniwwnwobellpbwd
+glgwpqmljnfxjwsgae[hdnpgizkkafrkqfalpg]pskoghwqhabbrazqtgu[howksatecaqyemgxpye]bvrcfhawviubspmkeon[qciouynjddffdlp]kruofqzvhiaqbtm
+ekyqqslkiuaxpucbsj[nsltoiyaeyfkygmtaul]eryfelvxmeekndddu[waprjreciavpzzsj]cppczdrntzrrqpk
+draegnpszalplun[jwpjzjfpanpyqcxnu]lddilnitonnehft
+afwslsdmylslwvekv[ngnsirjimcteduhmbia]utirtwchbjinjtkp[xtdywavaenpcexfi]fsxuipobvivhpowgioh
+zpjzyqnadncjcbgulq[wtwvealiuqmxtmgbsu]wyjqglyafposcrwxue[xqmgfmbrcdcjfmazd]hjcjhoqisrvxdtiefm
+nlchdiedtvmvrwq[aeqiwviurvdlsaxzdy]vrjrsalrqznvzhwxpjv[ghsoysknlxlzbqjv]cwklpwafgddnupknr
+zxqjiqwrswpnotkjm[vdlwfpqexfvgzxjbsdl]avnrytuqubaojek
+oklkhatqbeccsctaq[jfvcdwlampkhgkjw]hwnefdbhaixemttbk[xbnquvzqozdzbntm]rpyliiqlbmravsu
+dazldpxyqjgbihafnl[udnqydjynzfllmxayne]oasevmgbxuvgxtmurus[alpxiujmrobllilgb]rrgekfumvabcjzmh
+zoojpgbyojsophrflji[bobvppelwuyynrwinzj]kfsldwgeqtbvtsfy[icdvpxikjxhdaipte]kxyxztmtqiksvidn
+ensxpontjxipkckasr[bdikuxubzmiuhsb]rffefjgowtxzjltz
+suqgbqjkbymetile[jmgtojqeprpffkogv]pnffnorgbyrwddlm[pozvbivhruebmmjwogs]fuleotnbbnpuqre
+yjwcijeeaqhjdmu[emqntgsefvphvpc]hddshsiudkvrzghal[aieudiuufjmtihwli]bbytteummcluoygddky[fbkfhkdwubnigzvl]phfapgcqrshmwis
+fbqpgkdmhvtjmkepui[harjpumdzotcylumk]fglgadntxizpjsy
+iforzbbzeepoddbalyb[cutsqxklmoljnexuaxo]ajmokylzrakmmlxcub[rximbemhrndnogfzf]pokqtdgeipqlswvrim
+umtkjkgoyutnxym[nizqgpcfftiydbqutr]rzgvklegcqnetqkg
+zdykayyaybkihcyc[qgmrngcbixqqdbvx]hcicjeavoycywax[bkjnxvfknauougpe]xjfsxnxlgixldzb[thjemtygmoazibfsar]qzdtbduakjdqteckq
+dwwceyrsaqrhiadehmw[bushvhvxdeznysxjr]hnrekmeoxifqrsq[ynfaykimagehxbcxhka]ucdpjqxgcyyhvhobmdj[ywcjwcveqtzgqkzx]poruhxqfxuyhgqog
+mcxpgupgbiznbdjjfzn[nxackwalqammtynl]qnrwciginnlyfxiyiv[hvovgilkgigolcolf]fyqfptzmgmzbgkh
+kwzvwimdnfngglsqk[tvhytletnpwmogdq]zjndivdpftqyecxhnyi[iiqioqsyphxjxdy]diyppzzxximnlgyhzh[ylyboefbsjwjkkxbar]fuvxtvpoyomnkwjwsg
+vlcyiigmifwxnvcdw[enlnmvlfghlbwib]lwsaxkcpgluzkmx[kglnyaprvaagswvfg]vvdeqkfdrjeqhfp[fcqxurkfmmorcenve]copdpqayaaolcox
+rxjfsazvypysbra[pwnsoibariykvjgubu]nyuqsygdavnxfakwlm
+kkgyhdbiwyexyhxgd[aigctwltgdrvyxbs]xypkkzuhuzpxygupvcz[lwjjxozwzniiywpv]koyfescfdlnyzhcgxin
+cmgqspcojjombguppb[atincfnafdmbhtgzk]bidgxkkmgvgbeilvk
+fphcdhkhetqucchmtm[ieoeogxnvdaxsayhc]xeigwycormzmwgf[cllkxjnlkjdinvouy]ammsmdyoyvlpldkgy
+pjewtnwxajalxzrw[sreuxtjgiwxqmsfkj]nghqriebzmyhgcgoks
+trtaefztlkjjzbxpip[fgpnmiewbmzvqfxoikc]wpemgpznkrerwlgr[ptjdchwakbcdmrjwxnf]unaxvqinaglgfeoi[ekfifzrybpfkjiehpsi]bxkuqrbzgfctzult
+oyuobptvcbpmiiw[fhefjfnvmrpohae]uykwxrtssawavbuk[cyabwfmaxwqgmudcmpx]vahdtwpzvebiypwjvq[twtyrryywtwsckmff]vkmzcehpgydnorxo
+dbgblaadftjartioq[avryclynyjmceujmy]nsqtusikmlamzfht[qmvmgeprwbsokvbzmmc]ddeuxmektypsukme[gqzmpenqiqlihjqoceh]fmsjcayltvsxycmzv
+ixacedvqlzvneoqus[zmgeugtrxuidpdtzzn]besixpupznfgvqelwxq
+ausrpqkpblrplbq[pzqlirofwbtvjvoua]yljvwgnjvjehsyjd
+dmreexcoqmzxelfjeib[zaghgfbihozktuebhb]vdwkqxzetddhhbhhyd[smjdjtmnswvdeuyt]noyncdtfrtokngqld
+akpixaofgmscjdmr[oiothmxmcgwvxmx]yjiwdlhqlrqerce
+deyrfnzcctnmwjagql[qgcmtvfvpvvdminuwa]tynjoikfebqrxgvyehu[qhyenmsqmxshkvcmohh]llpblusdcqfywcdq[ikngnvowhnvaiwno]ixndafincaxkyqwimq
+rjcoodvjnnbhxnlo[spesoflcmfcoifzosgs]qauqixapgyfzvtjbpee[zzxomezynqnoeue]xpiblpyghkxfueapcm[qotnfesblvvyrnsu]keguppozqkwfxlf
+jgrowursqweqfwxbg[rfyvmzbkacqjzooslnr]znoeuzryfguydetugz[ssotfccqiuilzfuexd]zqatqqmmdnuiicv[mkijjomihqrtuiuobl]erhrjzotwvvpqek
+unyrjnckltxyfxyj[vdlbfpobsnokudzqab]dhhsatcnsuifpwsqe
+iscfknfmwdnipkvxcma[shkdzhzbrpdpacel]nrbkhvxfyoslwfhkldm
+poxfvymkfzuhovx[wyjhfwnozjdghzuenkx]tpldycstgwuagjrz
+taqbysrkuxvxncweld[vquzvmysufavywl]irixymrfapfwvnorzx[wznvlqeltnvzjhd]wgpdkhhoypflubfznpa
+veeytotjubsezxvh[mlbakwdftkyfbpid]qehdyxzxctrdvvmpil[cfnhvbvjkuqwyzgie]wxbvbxibaqoefhzkimu[vcdhqkaxllbdmbuxowp]ifrawmsqulaizxxqytk
+pbwglxgdiijskqrksnc[xryasmfvaqakaovslr]wslyywaninmrddik[uhieoolqnqxdmmltpyp]sgjoghttawugzcwzstd[zwhohshbhultyyoti]anvjcthgqapmftxhe
+wmqxexytqfmdfgzkw[gbjexhyoufthdghiibi]ejhfohkfsaixzvtx
+msrjuadzrxxolmxfxq[slurgkvzzfgqpnwdhxg]mhvtwtqplrxzvrmwtw
+vzrfylnagvwqrbukxkt[wofldsbvtgzqsfxbl]scrfvyjrwyqmrsbot[bngltozaybaghfij]msdphikahbxebdar
+cqpwfhfmgioybwsq[judebliwtcirgrtjcs]zrprctntnwcrszilkws[qwoaitshrtavmpse]zubuyfygpgdycnytnt[ctkvsrkjluwdqeeyku]ksncsilzwvkwtmn
+lwtwlwmtqtjqiym[nxfgdevoxcdimcnb]koarjfajilpityyhmbc[emidtlwzhvfmrpqbhik]gsefmkukbjyhgdclj
+fesirdkrgznhplitqo[erpgpujpndzzaho]wqzethjbporhxokift[rwelvzaswcwwstny]xgqpqjlcukivddrlv
+zozyeoozrjrbdccroq[pffesupjavtnanbmhae]gatiaxphiwsrnnwloj[viampjpkjyrhypjmto]vsqwksazgcaggsv
+fycnqvxfihmjnkjogf[jjxnxjolrlkbcqp]pdqtmmxyrfzpbbdm[fdaejpjrasjphazkc]hntqbpjeliiqmtne
+yeounyqfhbnbmjc[mzbietsligfkult]bywnnvpavyhinsm[xuwaqmeiaffetkpkvoq]ufmjhazqnhdmqyecja[ztqflfgjsoqybaf]pjnbnrsnmfrgqamxb
+ycyxnmxnttqiqnsnmi[wkrtuoeddszbizysqv]yzbksxesoscmlzquqfp[unqyazgxjzdgvhjylfd]kunijisskcelgtxzp[ciyxcpyyefoyhqm]eoqszchkgdhttjn
+evecetgcdniectsnadi[skxzpvvuabkudplm]zqykqoduyjvgssjin[uyojccqmnfbztpdnwvs]uzysyjyjvowlsvpqa
+cqkietrmjexdkqb[rhubbesuoeclwmtakqe]ivdnvnndssfznwmhbrk[zmjmfprnnowiedabycu]rmgmbgvihdcuzarhbum
+zdhjklxbktkqeglhts[iqagcckadjftptawh]ezdtjbiebkjvivekdzt[gwehifbjyqnazsgzziv]fhdnwvcwnamqdaeb[rgxvlygqlocpfgqfpd]kkssrbltmsamrpiedjw
+jlttcsywphepmcike[kufzshdcbvfvkwsahfu]ioqzvlzvjqnavymv
+cfyvaasepjmgtofy[hhoqwyrkhuweoetwtir]fvpxylsiwyinialjsg[hqahlwsskotrjlid]azfumcjerwanpukap[iqjcxdwtvmvjkoukcvq]koeodiiywozmrtktxur
+llaevsbyxpkahrii[dxfpfzvxwpzedtvhtlx]corhjnbybhlahvogj[aeukoetmokgjlswve]iwamrxgeszbcnzsxy
+abxkqpiyavrfgxjbmx[uqzsbujxbmrjyxf]dsiktkwxjovhabuir[baqaipezkcvfjyqc]svvyuknankhxlttwng[kwsoccnvjnctnxa]zgnsnelphgyhfolihu
+oquaqiwlkhwwfxnox[rifozvbwcclekccqk]mmmgicxioqwhlvjpsu[tndpmsoarmdojex]spywovxndxncbpshb[rgceaghxxvddklc]osijkijuctxjhtbv
+ewucowyzjaqacfu[hruhcyudsttblexjwy]mjxsgzalkyasstkuzi[drnyfhqgaemafei]uuimofkacnittaoorr
+nyzetoiyaqbsxum[jowknmpjwqdutjlfwo]oalwqxqoyovfjriwb[lvwabzjorjiiemeaacg]znsbvpusrratzywwwyk
+lsjzqfxbbuihsdx[akccvjqdtzmxywakf]fkxrqzurzmqusrx[wmkamfvugczykevpq]avcvjbiwezkocfvo
+ohoszcqvqivamuaisf[lyyacjpyelrsgafmyl]icwpankirjvekeg
+kruylpszzrkzbfxbmk[thxwtofeyjsijenmom]gjblnnkhejpqdomos[xjfzkxpgfltzzfdby]fnbkcvyhwtwmvpykj
+dtqrdvxfjedeydhdsz[depsrsktdbsiwudc]unbdedwnchjgetnwf[bhojevqkvcgacid]jmyzzhyslvuhnaizc
+dwlyvffagjfzbevant[baalozybgljljwj]jomnxqrlanqrkcjds
+kjdsccouzjkqxgicub[ghhfptkxbsgatseoxgz]jiqgnfilkycyuvlwbid
+sxbgpazgvlipytzq[fixpxpdcuetwlqprcs]qcvdieujpvhwveur
+gerfcffcrfrwvsjw[ypgmjuvhhzvvavtyulf]cjhqxizulglhcvy[mpjpctaxpnlrfhalp]wmhafecpyzjuagisv[aumyqoujcjkxusu]skhuivrgveucfrfzb
+rqkibcopsltsjwq[gmnenbrlgqtvqflnt]xuczjcgsxmtbmeaysdk[rkjjglznqblxednxx]npiikosjigixuvlnzes[vqdtacxnqagckmz]bnrzgyqhejnbmtqa
+ekzqugvzksupljx[hsjwrqxwwgcdhqhhzo]cqnomxxbemqmhqnnw[udcfrvgkcibabyssusn]zfuxkqiwlbbhssd[pfvscossyfdhjyed]zlwsqyhygkdgfah
+uhfxysjbqxaerhsanh[zyuotxgmbwkahzyevkq]dricwyfpfffhxncjn
+cmccqegbarzixhqucrl[ztgvmqmqpjtfgfuqjjj]ubawaltzbmhdhqioav[sszfycahkeptflx]otogjwoazgidspib
+fgfdvktoaiucefhets[qwjumhonvmtimauqsy]zkzorsvmedrlycqel[caaejbjnvlaqlqonk]ndndrqbsaaweqoyi[ovnpneqkmsbqsav]cepurdlgjkedaaeo
+nfhaistnlhzethu[gyozecvbgbkutaiuiiy]vbmcwkesewbbcdvw[zxgnhhbnldllaacb]kbtgbqxtmqtatjc
+nuxiknpvosedexey[gfixiukjvovooybkr]nkprytbsajposdjcv[ahjzndfqmisqonz]kzybggzczcwhlnrerfd
+puxghpwmypdrhykyd[xioiypketoaohdxa]lybkoxvoraessmzzztd
+qwlzyfwnqvxylbttyy[idtjcszoblpujfkf]nbwtcwowujbgzsz[mqckgqkhmbzpwtuekcf]xyquvnuptbiwlqdn[gwgdvbsouphvvovkg]buqxksahwsgvruovojo
+nvjqtzkgoenxnismrq[mxybkgtvioipfjecdma]wtgqwbkpqfepskvvay[qqxflmtbhprambdu]iqtqqujmqrlzpdwbljh[cmdesejkyvjzwhevg]qkclggetgpamrach
+ntxnwuudhhghcgd[rlyqxrlsbpsdrdlls]qfzxlyrfjeshhmsyz
+rxgpjhpklloihtpptpy[pcbbsflfkrknahkeq]uljnjuavjkhklwwcm
+byxqwjjdyqqsdnt[nkxqnfrxqqjtwsnpj]xstdzfnmxpkyszg[yswyxmgmqsrvaxdkx]sjfpeyrrswxgeflbncz[likexnumjhlodzimm]crnvrjyaumqgmjmy
+skwhvjyhmosrbbziiaw[dbztswjofjvkcbjtapg]yrzwevkwnjjefwzl[ifwifdeiaqpvuyiidrz]kqnqtbvgpxkejxvf[ubyvhimnnmhkbbnbu]zsqpbztopdvjzbpj
+jttcdvuuyawsjnode[ahfzcsoxjswcdysclk]ubdipqyzzhafcdusjuf[wtsiychncfnaztdn]teqnxwryvsfwqbbw
+gsoacpemvpypmizazb[rzluiccnkviutvg]bxmhsnyomypyueyhqbo[mzxxtfjifzluckdypta]qlirsetsxpkgewemam
+cdqotetervrpkaiz[tohfcmgrtozdfduhk]mlgpfaviqgvzicff[snphhquukvzrgqynfqi]eredworrsugqqqowk[fvcdlekaqtuqhhchh]hhrerrbpzzarqnxiwwk
+eitniklfnvnilfttm[qduauheufxnjowyar]oxizltxvldookdlomn[igmwlbhxgszcvhshy]knibbdqqnftzglqjodl
+ibypwndwhrbzbowoa[wyrgxqcbqoqayqkf]rlnhzutwptjhfwrsme[cfpmzztsrhtdcgy]tdvricsznenkyphwzt
+orvqewlxihoswvwlx[ifiaqweqqmaeasrkvxt]icmqkogypgrbjoij[qnkooyxicmbjhormbu]wkpucublpyqfkpjewzd
+lzshelyjacfkrkykwe[jehbtylsskmnxigkrh]wgnozoomyzpbyrytrme[uwcvshtsdstibykyrnm]nykxibwjjcaacgg
+fgdrabfqaogxyvpqfgs[bandjgjgkuuuxfuh]wwxxsusuuiezkvojziu[jsprwhpeictwield]tbpmjxfilclfrqx[zdmxvurgzzrompujt]ausuaokslerjqiveplk
+jyhxxfrgrdjjsorsgu[uxzaififwgjnklvj]uehxdiantcneqrxeqi[nigrgktauzcpyazs]fjyinlukaspltshmhlh[mfvrnccglqfrdbk]qrmbqjtcccjrsrdmgs
+nltgngsggdruwrahzhq[gvjujsgoyasfqql]btwmnkkccdcvuyniu[tsqzwyypufxxjhd]dvqickfwnoqtrhokrud[qjhdfcdcsfvdgkotq]hndylujuuecvakzmrp
+xyvhcwkqkedbjzarfht[njkseezhzjrbujcdjs]obghjeljjsjksswil[mhfukqardbaypasf]wjcerxswmwvghjortxs[ghqmhxisgehdsyb]ysvgpyswsdfkomanrtp
+wdwmhahsrdjogceb[jdwdpxaeemsjficjz]qqysutatflhmanx
+cpctsiwpwyifqkk[eebyeqlgxyvaskcoda]sjayfoyavfkaydph[aztkadhyekpqtys]jwzqgyewxxkbisw[gvlxjstngthhsjeybv]ponztgpuhfsndjb
+fawvrgcdqdidogtfu[yidikecuyabulhiia]fxfmgcpdbdzdsfkm
+yjateqpywpcjcbo[xddnertejcjeedjulw]humaqnneeeynnpp
+jutrwhvpaknrwoxp[ajhencapzncoyszy]qyhbpivdpqjeebsirf[lbsqceuykthorgpk]olrdkqyikfzrdzi[bmqrmgcmvqcgaxosaho]dkejbjzuzvyypxz
+rhsdxnktvyiully[nciwcjzdccerinfkgi]czljhsizretcfuea[gudarsiefwzfdvfqsip]tedaanrqtnfjdvgm
+grkgawgbvajxlbmbgwm[dpfpvpbrcwxethiu]rpfkykrvmatjwkd
+daemahshxyowxgjuio[dwhknewdrwoxbgk]vggqgdzpypjshps[arwnnbysrmyfijttrh]mwuwdtpqmiqgfkntqm
+ljpbbzgdgfqmvis[zqmfyouebpfvuscncay]omiockdgdxibtmyfwsk
+pirgefjkoicryrcgu[qxkwrjfuhqmjzzmbc]jrofqkmdftjbupytg[mywqavlapyesbfea]trqscgjokafiarh
+qsycbrrefosycpzj[guklennkilcmomyngzq]numvvwtbyvtfarlt[frfzzodqottlwzj]qumundqekohrpin[rsxaymghybsvzymhac]wkmbavpbqtoewxruut
+erpqoualxstxkzkwgf[spsetkclioxmkpobkij]mocioemqrazrpexy
+ryeoamcyfewnjlbdfsu[mmelohdonphatmxblhd]wgkjtelxmbwunvaxfne[xgohvvrmkweaabsd]dkukcrasqoceqjyehjs
+zkmkqzphahjdzwot[objfpvwrjdcdxinuvi]goabmmhuvavbjgebdow[jbqupsngpnuoubvn]xofdcclnjyfofxnzyvk[mkmshdjabucvgpkteh]kqxuwhyogoxhgwqyyvf
+yqlzjzpztzgtpomj[qcmfrvyamtxxtcv]hupfwqhpdvdwfvu[edoxxlncqxfxpsls]iyflxxkaztzxodxfd[xavxxfdkzquifiwuu]bkjzjuxybfdjcqw
+gspnkpswktczjhi[pkpwicpaszrfnsa]reqjlqsucfsixykwmg[matrmmvriujnldbcuaf]lckpqdyikkaprdje
+pbkxtroofyztckqg[arrmawhzlhytfodqb]pirguzqkvbgxznqnn
+mmybfuxiqgljxdih[dzgfakmxryeoylimdqp]vizjwwrhnihcakb[njplrxabbturflf]qclfldtmazmigmd
+exhynsvqvhtzexfjt[rdzxptfigworypkcz]disdlwcxksxjghkkbqe[ktpysvjomszwxdmqdv]cmwenbksdvfihvxvz[vrxbmhxkfjwgktuy]xpyefktsqohxwkaowk
+iiuuszfrkqjprgoumy[svdcdtozwwtofuizxg]gkenicdslqaemvwlov
+mldgparlhmdhgvz[bexmggptmuvhkjj]hfnccpxdkireolxpe
+tzyrycryhzonuxekwt[cvskbxzwbuotnsu]pvybsdovxceqjfmo[oxjqmhruryormwvgkc]kiygcylmgxdjubtefiw
+egklopkulrxyltcpbnu[nmbkrgnsjyfjugcx]bufmkakubfrwnwai[pprytunilpvguaen]bceequilwywvtvmshg[aszamqynotadciwdwzk]uivoeunohsbulzpxko
+ubhofoouxcmdsqqkjbv[fdvdmyjaukqeuaassk]tjajanohfobuhgih[dfscfkxpzwoqobajau]aspwsctdasjdjnqbmt
+urlkduvyyyatpkb[zrolecowduswyfn]bgkveercmmeecop
+aitmhwttzyrqwwk[lxntglszzkyjrqogob]exmxyvhwwcopudfekgu[fzxdevariaovvyuof]almvqtftjsdqkevnw
+ftftrmapzrqqyql[fmxcumhriyippgxmy]igyxwlfgcjfwwwgpy
+ftkqjwepfbngstefaji[ekaiaqtwacopwxfcf]deswaixrljslcqc[nqwlvvuuziefvrd]pgfvwqsqxeqamxsjjw[zispeamntwboenxygcp]cwdhurmclfnjjjwjygh
+fixhqdsaxorgfndumt[ccglwvkrpbwideuhvx]fgsxflvifyrzlznwvp[lmebhuhqemgwxpuvb]psfuyywbujlpwcekwz
+otmnqzcbakdxosl[skiwodrlvhfjsuqfsma]wtyrxmotiqdinxmrbe[lhgprkzlguroolg]kjgvxaekydqxdepu[mvffwznlsunzhxknier]irzzbykjkzjdoybqg
+aauhucqygvsgwdaqfa[leenmhlorfgbyorrd]soryphiyiqsoydfkwzw
+aggwrqdafwtwwqjr[eafpfpxygvnfblxikwm]mlgoiwxfigmduubsr
+rglpanreckskdaojotf[yuywsgztcjzyrfqawj]wzwtndwugnelcmxpyme[uwcqyuebxpprisdls]kjisjtwisxawsufrd
+uqeuvhdoyujlazejbix[wtdxrqucvkbkavrvor]fclqcjvpxqgnkkhi
+mgpszcffmfxeacayj[eorkhzrwqvxkrnessk]wykadaapxxqmohwriin[iwfmoieivcljpem]bxhutydaznvlbuu
+vkvvkjckohpxkolpff[pepxkcsneexhhlsjs]mffyiopxkqdnwlg[qmkttuxyhvemywmu]puqepezxejnldtlf
+fkyblzyluhloblrlj[uuznhpsjgbnzghjczsq]ekddnoeylbefgmpwjp[gbfxttshaolcvhfsl]iygnwnznafbluanu[mnylijsqhwlhhbq]ultecropzmivwizl
+rwpypdkhndrotod[rganbztsadndbxr]dorwmwqoeppdpoyz[sefhqmaxuxqwjpgaofp]kerdiohsaddctmnj
+hlzqtzrmmgkudvsaxn[wnujyposfazclkutfq]yugpiuxxydkbjtqd[bxeuhvpdnzqzvrtynq]nqcwrvbzjijfjkmq[gviaheipjpncyxq]thgypvingfouyrdexu
+abnhtjtbkrvmukjsbi[yivolobglxbtivbmlxe]gpoearvtfhhjjxedpq
+uiubiwrlfkwrsnewvwz[xymjmptyaoiartx]lkyzzzynibifaahjewx[ijvyqumtxyumrnpyfz]hddwfrbrgifyegaji[tguxrbbrdvhmssvbopf]ykkkdwtdtlajkmbgnww
+omqzieitwyasnbuae[citxwhjdkqyzmfotup]enzrramzittuhgjcv[fierpodjceckpxwoiav]edtoxignggotlwka[sbjkaiypsozrukh]hdwihijpdemzcdvlsz
+rummzhhnmypaltcxrja[nbcaecgbuslkyfar]hhfbjgrmbmjexlllok[swzivorldyknmqbnmtp]yjimyhqwgrgdphl
+mvpjigwjeejzhnr[zmxoaofpatkxkbecaq]szixqtsjizfgvfioq
+umnruavumjfrbywaswu[aeypnvqccjmqfflsyyn]anbehjastasljxkg[kwsjaebdtuslcbae]corzitvsrhthwmjsny[gzojgomcsqjubqrwor]tcektreziofkfzlyp
+atrjsjmfiyyhjjpcq[aygsawvwkgmvjly]nvxcabdkjbowvfiuqim[nxwlnfgnkfmmrdqwva]bjqsncyahbgqgcck[kudkiazyfbbvwvae]egtutxkpkpibqcxd
+yyxasjrusephnhgz[tbgueaajlxklmqfzfxx]rbirjquhusiueda[wwyfqgowviapcam]iwwwfcjtyuokivtkaet[ojcechttmtwizhjzb]ilybbjncssrsdpyvun
+ouzhmpmtsxtbpgxd[xkpvjnalwhbhiwl]dohtpyllehgsmfqwio[pswfztwnlizwbhbopug]znhnnlkxrlsswkgrb
+wdfqtfgtawjujjnipv[ffiedysbmudjwegxa]uixjrzxqsqknbro[uijbgaxqvjeiaddellx]golimewbjgojubbk[cmkrjtwjwjndagjoidq]kuaetseghitsonmjxez
+hinvjpjfkrcfikcsnk[neznqyunxrviafftsv]xxzaxudvxzpzayzu[igikyqxlllewgxp]bbrmixylwkvzstannjk
+jnfqvpcsjlhmsgttoo[keugkkuywiztndixql]fwcomunksourfiufwgf[vwalfwhhknnkmlelb]lxwrjniskrxyxxfgbj
+hmxhwwoaovcmrsjng[caxzefbacuvtevwsn]lgybmbmfeizwrbfrzuc[usgudhgiwtuirjfkpz]dmohwrrvvujowdchnh
+suctmalsyteahln[iwbpvohjintrccllib]zdppjeyrkkjlwgfp
+hmnzkxvelkvxzminaj[llmbrsvokhyfowaimt]otgsfjkhormfnubhirp[cbycbwoqvdgyvbnmkz]gnnjznpxfxwfvaoc
+jniltxvpjudmaao[ukqflhglxrfpfjg]djvtunwwabljjdirgrj[zkfyhzxkarvjfrbzbhx]zrrzbzubefvchvrpftc
+lyqyzdgisrvolizgkvq[fcdlhezvozbrglr]lcuqsfwchyucocowuz[acdcsqmgffussoy]jlnuxatzdobackkwgwp
+gwcvsoqytskjaqo[rfzimztlooyjbodjcud]ewbpnbzdilxvjmwy[ugoqefqofiwkgnv]pugnbbxqbmpephsby
+bbzqqwyepafkukwqjbb[sprroemdjetnbhdu]donxkujxpajsakirfap[ybomycmhvmvslykfxuo]auqvkrofncqftmjshtz
+qbxmiueonhzkluju[yocqzkbdskeisgvm]kaasgmyupwosdzbumq[lkqmadnwplwlawznb]zxldpcgbouydtatpo[dqdshurolnithdof]sscgvlgvpgthgkhtszr
+uzcvcnjawdeonomhoh[lnckzlsxtxekacx]ogcbcsdksosgbdlrexd
+kiiixiatixklryllfyd[bdtcggfxvupbohvclg]rxwnmgvwphunygx[jisbxeqdcnocecrtabk]cpbsvzurbvmtwucvhk[hlrjqjldshzvbrn]wlmkcxbepdkwafeovn
+xavkcpvzdiowrpduy[lujfjaxzrmxxcnxfrlb]szegppqkdzrwkokbi
+ojlbyagshifmlrv[qexvdlykxlebrlrjkg]lvdobhyszjfkocbmt[uorpnorysdsqycpdoje]tknlzfganuxeulzv[amollnzxactinrv]unmkoyxobuuzfwduxa
+pjhpwsfoiufywtd[pzudakbhkrvzepfl]cnmjmtmacyjulpcu[yvevxufpkzfrksn]qqdusuumfgtaemuscj
+ffnxshbygoxcatgz[byegatenneixbjbrri]xrxazipjarxrrjj[ilvdkjlixdbdieycbvz]lvngjqnhjjhlvki
+maocxpwqvhfgoaoy[jthtqiiuukttxhh]qpvgjokizpojnsvgg
+vstmpuwjzkvzxakgreh[vwxiygqjyyvmgvjdhz]yanevbmxttonaonlgeq[rskehprefzmdfujh]kddqkrshtgymbyf[tdciwdrqgnrwygvlqwy]mwyxsmscrhxowaezs
+lpetegprilvnporglm[efutqcurzhuymzl]vpuzirgjkjkqmpglqoc[ynrhizbevmuobpyduap]joqowueodytoothjk
+uovjoxozjbjgjoedh[hdufcoupnwyqzqsdz]bfkcibjpdceeawfsxnb[pmfdhpjltsthickltq]wnvrznraeqgmhfh[zqsykjfanpwhdbm]oltzbvppyqrhmom
+cuptpflteqvnaexzwj[sokwgqieratedygx]tlgoqkfvmifmdguz[kfiwutninqxzwie]dulfdtlbltfjevgp[oftsoxfpwolpbvflmvk]xfbcennewbsxcgin
+xoajbdvgnaxyewthsyy[gbvxbmhptnkenvoef]iyxfsrwruprnhml[pwrbjucvopfozdjlg]ntsdilgkqjkwifjcmqq[gqtizyvtmqydqdemxx]llggegbgpbiebcsg
+osoqemdejeowlmtbr[gvnuwetgdhuzlfoyp]ynbzmlvpoydjaix
+xmtosmglxiswygqd[djjpcftewakmxhe]cxrcujdbpfpmpqaqp
+kmffzaniobvxkqobrz[xemvsxzxpikkgnz]coopvxaqcwwvcpzzbwc[frbwadxyrqsjmeb]solyurryfbhunkug
+syuvjlrlrotbcxtmqlh[plnbhkottpkhbgrmmc]tpkceggxjkkshgovp
+xypvptyubhdywjddc[dkdpirtrddhczvbi]gppnmtijmtndwsd[jctdyzyrapkwpsudre]ofnnmlflpjenwqme[wjlbkjvlxuwubdkskq]zmhodofehapyshkw
+zyfesoxeyyvugukolxq[sduqoqepedvxiaojef]ujbihfjhwwrxjbmjzwo[fjbbqkruyeexkrk]fyjhwioedesstjkw[nyhqlxexvrlglwcqbi]zgxdbhdcqgccgodx
+kbgeflyhriyaitjdw[gkmsfhbeeftzvlkkxd]leroadltgqyqepa[apzlemfdxyxhyqy]bifkxoyxysldsif[bypdkygwlqgxlhmay]odffxnaayhgxkyjsyg
+etnylemzuybethsak[rbqwbwcpspvwcnrtiaa]cxdlfpvaizzsiqy[cofixscwpmoaptvu]tuvmcbkoqlfljpc
+nafgslpawkgystrbu[lholsrbjchktftlct]cwxorzjqzuibydw[wolwkkqcflunakpsf]ftfjgybmpgmpzjpxok[omccjdarvniomtniw]vmtkovkvuahhcgj
+arfxtgjhwjbqqpn[ozbglzichfmhnsrmc]sxwomutyoliqdfrziy
+yrfbyqpslcykicx[uoxnsxbpkzuarrmhesg]ohscdwcojgysjov[epkotielizvhfbauf]kdichwakhcwuitdohe
+lxdfxhtcxpaqfgud[kietvvqhjbhmbdjh]rnnxrywwubyivxj
+wwqhnufhgdpwnidwe[trkijfvlemsenfvm]hwhzclbeilbbpmbdgvy[kcqrejunfyofjviz]ymhbanffstqwvlkczn
+bemjirozvmspfrojywv[gnkvjdexdgqeqvom]akfgpxfgjwsymkegz[yrbmhgnacpufxmilwbe]taxwtqhrfqehzvndlix[ndjuozknfyplqafyu]bwogrlytfyopgayph
+tzrwkqaembipwoyysy[zmjpcdqtbucakwta]eelwgobyifozmawhaeu
+pxpftlpvkjcwicy[ordfpujlgwgxccjcvc]ghrlgcktvifkicv[kteuygrgxnqbaagldhw]elebyndnyuknsxwsz
+eoayeeinavevnkocsh[wlhcijujotnsmyfwrg]nsghlrcpvhazacbriwy
+myqilamxvrkimzrypsq[dritxccifmrgnynl]ahpnxwgmmlcrmtujqv
+prjupstfryhiyxjr[nznibizpdpgsxozff]omzpiwgyqqytncz[ixhfkzmhfpctiaflrsg]fkxetrnjkjhwmbcs[mgfwcdxioxwsbpbxg]pnmcyowtigkikfbqem
+obihtythngvjelm[flrqufrqlvaamtlt]gbuppvlrpotvhgoivu
+wdovdejwygfyguc[acoacyczfmzugdiwfy]hbboqkjmpktiqigkaxi[eirojscvpewshvdslgs]oloathxikscihfpy[vbwlxhdnmpcvhrdwm]zxwsxrhoksbgnyva
+vuaiucuvucxmowfvdc[pkwwdrystnkynnfonv]bkguisxgqtsizbdpon
+nhegyhsxwcesxgagl[jsdkwvzzfvxuxsmkans]cwhuierxyqjmueehii
+nmtqqwclrkwlikw[drthkxkyfxqugph]bbneldbvtittaydbgag[vviulwoviezlxte]oqzoapkqstfdxbxm[bmhsjxwoxtflbqeo]hnsldpfruxcdnvz
+xrkijlvluezxevaye[erofwbtsylzfvyrersj]bkvnbppereymraau
+jamtmykfjuhzndgnzrj[ezhkpcujzmcdkkjjfbm]yojgtkoobnwvgendjt[jkeeulmfzdbfwnohfaf]cudgyvipscncfbvmlh[kxikmcqmpounqkwjhg]emsdqszhrpxpwcwb
+yywwadanokysrfh[btwstuwbsdiotcudf]qrsrtonegzitpgnzsvd
+hrhfutggyymxzgyj[agqctqvhyfytwsdmzf]ozyonngtqdoaagdl[uuykvsdfqdknray]shhtieifkqfewhopney[ydgftitgfmfdqwh]dfxovuekyvtaddh
+dbsuuitjdsiymhek[jgxxnjjzwgwirdlgwg]xwlvqyufgiwbwyfhqn[yywjhwiwijsuhlarpxv]zmpooqvlrrnwdfhsheg[piwaxxvwgzbbruij]izqwldwwjvrxmzuj
+nuxzejoidicdupcgdum[nelehvehbccqmwnla]bhazpsnmekeqkvr
+evnsveqnndjyarol[tgeuojqlculphzfva]rilaooxfpwyreyh
+hhwvcwpwgzktzotcrx[khmiivstojdaciyzb]xwaeqbqyqwqltdx[rgwirleearklteybyx]ckiyopbgfygyvui
+zpfozblbuwkdkkfsuft[lccwcopfworwnry]srwrcwdkalvsnsu[jmgukelsagifrhkxqma]wtrtztsztpnryaqw
+iszcbgumuoarzlkblr[xphrddxkyclfvnapk]rzryxqdnmxplfiu[plghrphjxgqlxtp]cxpvhwxkzkeczxcenm
+aezqpvhdbflknptrc[zykqxuzbatudehe]lugjrgmxtqlxrvt
+jsejnywikaohtarsxmp[whmztgiaadmiarwlbj]yjrgwesrymvzhlades
+cxmorkzlibiuyjgs[nyierakbbzkhvyizl]hmtqhrxddgdwmoayyse[ldupkxzsfkmnsfdnzsl]sfpntvoniewgfnyfw
+rtlhvogqfabwioi[mloxkofbaemaxcfzdo]ofeukqafbxivgvygl
+rjnyhsocogdwhswqonr[jrwafksjhfamqvfjk]seiscoezqmbopqryc
+txdcwwtcedbymvxy[dbhxqovjeifzsuvm]alhqphxcmfmodeb[zdzxpgxeezjaeichq]ggadublqxpfyoyc
+rvoblfajodmlbftahtv[dgglfidheitvcqob]uzvojeukksuthhlpyoc[ovnskmuaaxulloi]wqhxsjbtaqbgjpbw[ohmzmzpqzevicbzmtk]yjrbmkldmwmmcndia
+rnsgsacbysmwnhlqjps[hmjfyywxcpxwsicxit]rnikgavmgagtsoqjnfp[qvcofkevjqjqhiqhzek]vlhfbggnwqwohspyig[ibsdkevufgsnowonkj]ufazmdkexffmxxfwf
+qkcfiavyhcmknbqcjtq[lknppgsvbdvpftnzcgo]qswbyhtruabsyhvz[ilrimrzzjctbbwhc]knpudsvkdphxsuevep
+wmeryhgvkftqiyctbt[terkorqjaagtbsp]hilrpcfcjsyguukcehn[scmgvajuiuybvzt]enjhgqtdjabbkgh
+kvczijzgmasricwj[xhgvyfhnaxeugzje]xwcxqjegagsjbvnuskc[iiokktbsnmwxknkqch]vtuobocpydqweamu[jgmazxfjiryndgtcqjx]pykbsnsoxbfgacvgpz
+guthejosohmrswzgk[uqthzxkpgxlcmqyop]fxedavqwkrmzbfr[itsvdugwjezrjtgqmua]yotsdzczslbvzatsom
+lyltslrourlevnxw[dtiihjdbejwusjmfap]hdmttxgttdqytvdfpp[qhdrjcwprncegzdfl]iinunfljrfhgifws[fvjgcqtqgxqtgca]bzlvdtdsxgrtzuvh
+ndwwncgabwoynmn[zbxvlpndrsbczbklwrb]bkcrlonwivcipxe[eoliublkzenpeyxfk]voydcapbmbsiuvqfywt[mmiirgxvnbpnkyjh]pgkocrralcozybthp
+lvrcxgzomstmslr[vczvuydqcmhfmlt]gmogxiffrfsazqbh[yvnoqlavmbnattcrgd]tsbkxinrrbbxypwnafo[pgtfpwnnlxibpjchgd]hznabthirzxjipjd
+jtczttrstcpmsko[mabkmpwpcytkqdmhjc]jntwxslpyrkrehj[cqbvlkhugmarodmoqeo]weaiacdfakrkuizqw[uiwkgtbzmmffxrhtn]lhygapgcdaszgoyy
+ahnbwmiwwwivkykv[pcsiuyrowqrqfxcvw]mgksjiinoudrumr[ocwtmprzvamougd]lvqqlgaftlflllvqo[akvkgazplkkvqshgbk]zvyvtmxkttxnxxdy
+tsbifacnljabpczi[cmmjarpfeeyoeplv]zsjcjdfidfjvcgdd
+vaviqqmsbqellpw[xjjzxupmjbkyuzq]putpqaavecqypslf[nkyslewbmmsxvdy]maszkbnmujztqfbzq[hjwtywxdrybhcvplncc]bvgsnjtjidiuvggo
+jhejwzckrrrzcjgs[vjkxxdonhncwkykwi]kyuvbdlmkffyzept[jloktbqtmtczmjbdord]uzggzgltjzngpsboyxy
+rkrntmebnqrkoboby[gujdrcqoqatyewm]qhrzxubcwkrkqibjwl[hvnezryivakciaoukrd]teefauinxaijxil
+zkuajphbyhsxocacplf[tqkosililhbxgsgp]xttqprajeocotwoixkw[hdmduoyjxcizwpa]cihkdwlaxhjzpjw
+xzcmplyeabfrcpfr[qhfkyjzmivvhbqeblph]bkwydbvhtutbtytnrx[oslchcvrlcxmsnbqoq]zkggbeglckihzjuq[lxywqhpuarhpasbul]vqmgizoanebmehzfwyt
+bjrvsfwownhpxsowafm[dtmxsbtquavgypbizrj]boqoiajglkefiwaj[ycjpupieshgdmbwp]riufwociykhnwdsci
+urcrpmkeszzuctovhqu[vsutbxseevalnah]rwrptzraxwhuskb[inpentirbmcxdvof]nvtxiwtlkeknxfl[rddddhtpudrgpjafk]cojkmbekefbmuwev
+djavlwoikblvsufxrb[suujlpxslswxgfmrjj]drrpikhibuvwdlhvt[iopyjysnsjpyyxngdfq]sijwvhrwtourowgv
+kitztjpylzlaposkaun[szjrduixywmdpxbl]kaltysqcxzjrengtkwv[jhsqhlzxzayxdbebu]apyxjlaydhhokxacq
+kvzdgclklqsndxdo[kudsmgggtnwtxdnrev]quljmegosayhdwum[kklkxlmmmtjcretlyx]dtsexdvvjndpxtggjlw[mpcaczddrmktrpgngw]usxsptmzgzqhjaycg
+oxvlhxlmhhyqgwlao[wiqlkdwjluvqwgqp]sbjmqvssbwefsvq[ocwwdefylfgvgsygfbr]fbtqyawdbswjpux[loeconwsbvgbccoz]cdotdnnkzyaupynuk
+ykozujsmdopwobif[xaupavllckswbcyszd]jqdeagvmvsxpumvmu
+naxhmkdggymqhjcycw[xkhrapbevbaiwzdn]etnivyebbwvqarn[dnskxishknmcidwv]uctdvqkipycyzhgcp
+uktvpthtrtlgmwofun[rmevlwmmvzucsuxqx]zokkayofazorjdec[ickalywptsyxrttbynx]olddxeqctucllsvrvhn[pxfftvrdqdglkvll]xymmmimcqskfozlkyos
+rlqkqjeaqkqkdsfb[igleoesoxntrdwsyoz]ujmbnjtysangjwpsod[nniriilejnvzrrnn]mbqjytlwauzscjj
+egnnnubdxhgpiypsha[byoisscizhhpsjy]hmtbmbgshscaxadry
+qjafhagbtdpvszwlpz[ipehjbasniypubhfb]hreoxsqzigscxhnaf[rntqxzmxfxdldnpxqb]jriknndggvtkifa[kavxsbypdwmsildd]uisivvrtykssbvmsm
+rwxhzignxkrqeuy[memzudqlzcfrgudefyh]pyoldsepksbcbthfdcw
+jhgyboztenuwlqu[zjsmipieimgaypipjm]jbjlglomhxosmwypq[lvpsqwjvzepgvzbfs]ergqdyrvicbsgxg[ugcuougnecjcrpav]pzgpppoonvamxhkbg
+mdmifuoicysmavfkvtr[rdcuzujskhncvsy]ypspsiiizkvopyb
+tlwbtllklxrkyivnnuw[zqphdjfrntryqssd]uuefrmazhsiqdbodatx[zdptibmcvohmnwrv]jofpqdvwggfsdkz
+rkgfksxcpqkspdsx[zubzkcjhpvtdvow]bkbmwwrfqtmaosodlhx[shxfozufozglsgfj]tbtwcavcbvhjourcvu
+ayayqmsdvbzfnut[nzwcajbcbcduifari]eazisrtfqhzophb[zkgweftquububoothq]lrpktclkzizrutnybq[guuneltajlsxbbx]rrakswukxamcewdy
+dtuezfpubkdvxojau[ipzyfbjcwxazbqeslhs]nelubzldtozljzyj[uqkgjszhpokhonrpg]pgaebrtqevqblaxqa
+bbduqlqjpilanyikfb[iwngaxahwxongrgf]krgrarolzgmzdtj[mbsttcbkbedkcmbl]whecpxbvhuemjloxkcq[lrtaeothcehqsmbes]chuesxuwklohzrvgjkh
+sextateheibnehs[ccvuuyctlffatnmhie]xdrwtaeangizfxkt
+nayfogrvrhhvdfqf[upaiyvrvkcygazw]wtsawgmklbrjjhc
+qumnikpzpmsjvfiwapn[fdqlumgxklzlxcm]dczsgahneieodmhgvgt[babaxdoljtacfza]teoddbtcemfketpp[vazvzbcnqacbwcx]fulxjfohtywgtagn
+crcyymrdfaawflxfmfg[ovbkvuhdrxdbhmyphao]myqpzivnpjyjkogknqz
+xfkrzuoeclfphdae[wfuevmepzjjuzlbc]icytgjlzxvnjgugxyv[ppqszfvkmppjvktn]cifddqrtlcodiincw
+gobxpjjturfsgzell[rfhdgfzwpfoztzgcn]eworfqsmysqolgq
+laagoxczwfikjawci[sljddbmwqdnwxlkhdi]hwmoerlalfpjshedio
+wyomncmyxejknhswjv[awtbfqiarnoabkab]nitvsmoxyfdhpcdiee[sipoxhfskauxfskix]nktheznrekmrrxl[gwpmodgajfihlnad]pereyxjrernitwktv
+xxkbizhzxvqxbecadt[omafffruievwfqocujp]zpuotjhjwsdbsxteza[otcdtybhkqhjhvjjz]zjrkvtevohcfvlvq[yjdkpxspyojxstjkv]fbccdkbjrebcrxyrg
+zrctbusxagvjendfdf[szvxchrhjussntb]mzhzysbvlwwflpx[heijmktbzrbgqsklhcu]ygpkfilealopaixduvm[rakktnzhooijvydazhb]msnpudxdeaujqysbje
+xoemgrrmqqtfwtnwnyt[jextspoeediexugdgc]foyqnwnwstrguzk
+siuojescxsrrhvgpeoh[dnizqgnuprmevtqws]jtrkiydptijrwewcqz[zkvjwozfadmizvhfdk]kamauddrolxbdrn[yzfffqfeadlyfje]qanqnshkelszldi
+wdiojuevpybfvdp[zxyrygvkvufixzdwds]tgjzjufuuwenexe[outgdpnnysadoyeon]hvelposyxhlvfmdi[gazrxuhxrfxofsrxq]wpkujtixgvfrdgg
+pufjsqcfddyeghd[iylozggwqlqevyb]cbkdjgvbrpmrwrsgn[nuinkqeqchwluhwye]baetibebzmndgrulqdo
+rwwiamjdgdfsttq[xnsuyncklmryvumrii]qtcphhihqqqqtntvoev
+bwhfulscfcqggdswt[ostyvvcpdoyzvuhodeg]ekpjrxajoziohdvkfco[tbbppuyifwtcgvci]lwjfhfqfmclrhdhplbs[pplppkgrmykhtfnq]sfvskkgimpacxfam
+jripvodavtgdgkv[isotocixmxjmcldpx]oaptjpebswetmacnf[zdlipacteuduvqdhcfg]chciftufaejhxkmpozz[cmnwvdkbsczhekzwi]ovnjvgsuxmszncr
+ylpnqmqhlnmuxei[cyqofexibcjwunyl]ettxreudzmlhgtha
+dhmperfgtcbqlipcjbr[gkmgkletrzhoyhfcwb]psllsosgwjmtrvfanv[fimdtpgcoolukvvpu]ccqgkaqltrreqchxpbf
+huvrdvtjmncbokh[mxnsccgwblyahbdao]mpscnoohrsqideuhf
+pfvpbqmyapypiubxmt[kjfhekecjzzqftpj]sybxxlmvzhloooom
+iicuihjkntpnytg[xpzlplwvgwmzazj]dfiftbbvxbztjpx[patfyqrujpvwbsl]mxgsntaernztshbi[nfwhtuuwhgsljivcrws]iwzqwnbjapcfujz
+fdiifotbpdpfvedsfn[ptkzrnhuybmhzkh]rmxekkyxbqxmxccc[icwqbjmjtakfsqbd]euycnuevdyommhq[dqfyackkxmvbehucn]aabiiukaxiowhbtbwpj
+ofaeegcqivqrmtz[nyotqurllbitpijzdz]pdlsomnmdsbfhdzdh
+yxihvlkrcvzxhlmzm[asvxysmyxovvxdvv]rrwmvextlthjopu[nuaoossiaxivwwxwpa]xgaovndeadfyofish[dpdhiwlsvntqxypdpy]ddmbndbjtnpazhj
+kfqeicvkuvmsljtsez[vplnucnqgngsbfv]ycjwthuykmlfejqepad[ngklfmgvredrinryy]snsxjeqdinbbapwuno
+yznxssrnyacwtxlfbab[mpjvrwoguxgvcbtbmdv]uflsilwcemofepjghvh[cpprubjartjbnrdo]pocdfdephebcdavrxpo
+xkiccyvosgzxwtuck[oqqbviclakixdgc]kteovpyjbcejxui[mzuzcghrxtkssnrsqy]hcdpzjidycnlowgvaxo[iawhkiyhbswqsibqp]ltyzmuplqyoivgmzfa
+qllumnywkyqjpfv[lgkmvmbdwnkhlhqfse]lroouhapmomchyeghsp
+egmftdtwkpmhdpda[jlxrjvldyikwjlcwx]inqnhjexcxubtzbx[nxiniqbbzoedxkyc]siepprpdulpnkrussom[srrupzubqhkmccxcnas]qylljcyzwypwzumem
+ikjwnxkhkzqmppk[tzaysscnyqriqxcg]miabsouchfluijdwa[cmxeoduyguwjxqcj]ilprgkdcvvopotdzzon
+cauxikrtpgqgwydmagf[nrnvqarumgmthrf]xyyopmoyoampemafwe[jwjgmglxphjkvfg]oxltiecspkarhualt
+pjzcgmqitucfyph[cxxlbsznvwpxvzghv]woqulnjvvfjvjzy[wgxczusgzxnpkakki]fvtepvwjkaozguggqk
+fgwvbbyiyljwmkgcmic[gnohlyijeqfjldrpqey]qbdzxnxuiprcwjsn[ogtlzpxxzbtgfbjx]wxgaduaiyihyumprhe
+mgemsvccgqreluv[qrlpjfkdoinuyou]ovkiqoqefrjmrzgb[fzmqpuzoufcybpucq]aaftwlldjkholezzpk
+vxfsphugegtougthxk[lkvniyzlltosedmpgr]tomgbtfosxegecoqtn[mvptnxvxddkaqnjvnue]kclnhnpveadosfktw
+ltlrncoqeeupwtoxv[yoosiulyjjmwacymwfk]vdgfdfcjubkcbhiixv
+ediaeekjpbzidrfpu[rowhynyrchamhzrp]wetzubsftjwuksnd[yqbtzngplxcqkyxf]blzuvnektffqbkf[egmvyplsbysvfjjkr]ikrllifuchlkthknpqb
+ohspsyvzulzfsgghvbu[tvtbzqptcpguecpgb]zyadwosbwchbgrkypj[cphkhvagaasozym]tvgkhkooyejddnhv
+uxtuhgkkulhrvowswt[etzltbttiofnkeyh]gsgnleidfbomktjtbrq
+owccdxohulgarvvxx[pbbuwbbkrgqlhxa]lqbqozlyegslpxvr[arduobjtbducuoiwykm]tfziqcucaqjcfrc
+foxbwdzngattycaunku[lnkqgrufdcqreruqp]otrfaarzydubngucw[hhaqnaieublicggcep]jjvurleoxyatgtlexjd
+bxercunxdkmyxoo[zuvlzxstpwfmbnv]laszhsamraptopjmfx[syvqwydkiawwwpb]dyrhipcnwwbhmcotha
+mrcbhykyikojmqmxr[gijdvcjehxyzlpxms]bkzqdkykgcvrlbdcpck
+dqdrhkhanojahvaof[msammceatlnnwypjnk]yxkhkmiroydwvls[bgxvfxasrtzmiqpueoy]esjxrbelpjsvdcdx
+tuxcluskqsebpcm[xplkqkfmkdsjlgnome]qkweswhvzqmpkujows
+nbpwnioczrkicxddphr[zmtlntcztddnmcl]gjultcfncpmekcsosbn[pzwvjmfvfkanhxbhcy]kafsqjaraeicizjy
+drcviwihoplftyb[xykuycwejtdqehmuf]kfmgemdaoetwhczw
+iuqdiepdheskvvgvix[ayfqccpnsyzawotpt]xjmljfmrhvqedfsrdg[rvdqhetiopoykpopol]lnqyxioswrssucownvu
+umqpsyqwafisrktta[eqncbzzavysoixd]wdtnkvsvsfcvfks[opjoivoqobrzeepln]ziqmbmxwsppwzfro[mkhssttidvdgsvstov]akkdvcsjflhxllpblu
+qjlmfjwtglolrdxvqk[yufnmwyfhjrqzrxrddv]pzcaaeoitighunvg[eamjujwzolooemhj]mxbnbjvuikcycvnfuh
+zykdcejnrxpiimmbf[ofuzkgknvcexqzxpu]ketlytmhcmzvwtssaq[pgruobcnyaqmyjvospf]jkkvdoervshvgeqwj[fiexihxudpdrzdwp]pzmgprenvskgbgupy
+edesihewpfcjzkjhhk[ydoqcgosoyuebpoib]oaxftiagsynwawlukdo[pobikbzlxzzatth]tzvwglytrgbmlsdikum
+rvdcduthikkjrfx[oxwihjkewocfvjpq]wtpoobflhevxjuwnqr[ltfcdcjnkkfetnor]obpzfslqfunurzhpr
+ihikssgoutovoropq[nitrordhoxvqfbjfc]lxnjmoufkqnxizdcthn
+nsnkrlllkoyukbkwikp[anhzfrtqwndvwcndm]xyvidixcvjwqwxbsctb[awnmlqopvrjxyvjlbn]ldmgegtwfkvwjurzk
+dvjmhdavqxdhnbglm[qopsknwswyqoqccp]jycpmzubidfbwsskm
+dstxfmmohcyoivxmci[prdroxyvxqzdrdsu]qzczowwyxtufoewluu[ywzeufezgbazekly]tiifyttcldlhravctc
+anocufhbdffrnyhxt[sopxugpfxbbjlsgtdc]nvnnbdsjqfevwbgbaif[ljuuwzmlrnpjvxgbp]hoeejpqdkbrafcmv
+mvoaumknaokkjrduxj[anhqilrxkkqawmtdwhd]zuugnxwinmpwchymrx[ftylpriufvgtanapyy]xnizqpmgcbbotfpru[ilovypboxtuyozqag]aldfcdeyubuntmvyv
+xlvezhyhuvbnhgezw[yvaxeeokyjwjgzr]hqtybqtojttsyhycsy
+bjcbsmjssbubqixiqmu[uzycqzxxixenmtvz]ykvtnssyurdixcswneu
+gwcwwzlhdufsjwaxal[howbmljowljdsvbm]jggvldehjwoafvshlw[bfevufuakhrccqcc]dfufvaxzavehxgwb
+xuigvxgnmagtmdke[nxkzzxieoqxbaei]nqnpncmtrsiytxhy[bqpabinchcjqcjy]ysktjdirrevjyqyc[rwtodjwpnppdvig]cxedadgimutpobykf
+daqanavryjmzxflo[vcpyomgckepdftz]tizgysgskfuntqedhp[bkasgyhpytrbqvgf]dtjwyykxvutfihl[dgidcqrglxeuqmjvryo]baclxsovuumhgjffx
+lpyeghloevhgthedzjl[schxctqynpinoswgvwv]jpuvctsvrdpdhwsh[xdjqrqfwodmrxta]cmeizobaqtszfini[ttbvcouiaworjdp]uwfkbkxwhrkeugsccp
+ctvifkpejmwnuapjpjh[glykzeqimofbvirvv]kbzjjjxmiasijhyak[ucyzsvtasjfewtbm]zbhktdmufikfwsiqyfz[kolsqantshbocapum]jvjtmsmzjvdyawlrrv
+zbxgniymzkidlugns[xsyjfooxpsbhtjvjp]lydpcozhcmkdiactgsu
+rzsziayhprsxlwr[szdcnmcdpqkwlmhqlp]uctizqyfzorwogahopa
+njpfvxluupsvtbenq[cgenluehtxacymtm]onnngstsltmtobh[jkjpmbsumgmtkbyg]uvsefrirmvsuiff
+qukyshliwhitgmyeb[eikuuslkfgergykosp]fthsbtteuspbrqpssb
+xpgwgflgtkmtzhw[prdmpsbkrcbmjfitdyn]kqiyknqfoudyfvdmlhz[zswwgwvjkyvrjlg]zzmkyxkalhbbgcouvog
+dgxbmggkttasrcjotn[hsfrmfxeeuvovzuij]lnbdybfhkdsrymhu
+ryjamwprtdolosp[nkucayakarxezyxpgkp]qnezibzbjadqvqzz[kehgcplpjdlitdsg]nagotxuswnxikkicoi[fbpbayqjockutfqu]gnylxqhcacwdrdhlp
+quayrjbyxiviwukq[mwkxplqhlociiriaaao]lswnrperjoqewphn[nmwqzenrjmgikodk]sagkvoqqoayykkzri[uyenuakxyohedlz]ffzfpyguqryzodjwqxj
+fkymdwjnylzqnxhl[lsrorhrzdxpfkmai]vfytomporosnlpzc[pwpodimqjyfmczra]nibuxkjazxghetmxe
+vlrxyrxugxmmxnr[gioetjknstpngomi]jgzsfyvgbteacpupi[aeyhvaqkilxenfy]ezhnkbgkqgbymgzolq[dkzztikgwfghpltsd]nrslpkmvahlvwfhavn
+xpjvbcihegkoyjg[ddyxkmnhpnucgbeu]xnvxewhefxmfesoqkfo
+qgavdsmekecmyuuxln[toczsvzymwfzzrxprb]igonrcvkpxvekefo[abktdknxsdmpionl]uhhlekwqmalhfauva
+uveiuvjjvxlrlyxpc[ucbsqehsihiilfmxz]nvhvrtaxdpiqpbuyj[rhtfedxbiqutzvaucj]dxtgbmuwqxxqpfbohfb
+qerjjnnafocowost[axrfofdityutyzgv]acicnljrpsxzlcg[dhslugmdfaxclhrdecs]ekxnsbqhlxcfuron
+jknvvunefcyqagtj[zhgsvdlsfrlcfyoqt]srtokcehvdjwwkcwczm
+wwwyfmlxivfqcmnwtw[kaeymickhvsdlqkfuqc]dyzktnegiqbohljysa[qmnzkoqxsgtpattmt]oxxczwgodhiecoyp[swszkqetvvgdctkhyxo]qrjhaothcmyajmpy
+oldhdgmnxrbjncj[kkrntxgkrpbrsyi]qjronlhwmcpdnpp[ksqudrshtdnenqxt]wzbkmgdhgylcfpberv[nyddphsypgzienevnmx]memczjhmgzeyjchv
+jxojiumgecewqlc[nmiruhzcybahusxwt]pqlrbrwjitwylvzx[rjwehkmounctpcecz]jbhagxjlhngeibhh
+lbpildbxlosyqfun[razlyptphvjizuyonoy]atrqbzjakphxrguvmbt[ybdqfljkspdlgisypun]xttstfdytowwtxytsn
+txrzvdxevhqzpkb[xbsfvyjkimceqeog]ilzhcjiezytvmdd[kuhqkwaweasjoae]fuyyczwcpbdblxtxjgt[ujdwvuypmibgdbdtkij]vhrvswtmxfqkwmtjjld
+zipaigqfaywgroxzyh[nfaubfwofvgmjrlxw]srjdkzejhrpctlhbevh
+mtshlkbkfdacuvtjkbk[qemjvtgzaxmgvojtfl]emvduvrdlxnwgqrquk
+nekajppmdnadytnn[ynkibteahksyzvpenmp]jqxybiytpkgzgws[whyeilzvjokewweunf]ndkfvbdnbdoszwfugue
+fwfviekoibnqhpis[esurgsppgqchztm]vaxsbcgtqipiemvreaw[ytkxlxyzfifrxgmbggv]tygxkuusmptxqyl[lpuxifizetrlbsefado]rbykxursrelvgiilrai
+xyniecftatconlmstl[rpmxaolsbezfwzof]zvcmwpmmcszbaimwhfj[hggnwfkyexqkdancmc]cakzrmvvnmyiyzbwx[eizlhdetlkmzlrob]elvcwtpqtdpqxwdgjd
+yfxqriltoucrnfnj[zlvarepakboasju]bhpvqvllpphryccbjz[gilhjdjlsinanvhhe]rkypfwnsrmshanawlb
+cffxddoarujtkpwt[vgtsjcyuqgpoklcem]enplegjrghgfkvaqhtc
+kybnjsgrfnckxytl[obtlaqusuhkyeswu]vhaghsusagftgzxz[ganwwupndegfgxbckde]ncgnimjtllrpmajya[dmzimljmhjkbyozpmk]ygyhjeeexzqadcdyhf
+icjonhtmvgnwowp[xdtgaeotcyiyzozqwd]wudhamantwimysgpu[wjeyfkqluqgmbspxi]piyixwwkfdbogwcmtac
+qextqvcvlshqhbunkg[ouypttbdsycmscqe]qpxtjvipjkrbasofu[lzonfnanpflaekzhl]xwwxnjgtmzxnhmq
+zbtonkedeacrlltqnl[qlssupkhjptzbbru]nroemsymerldlshy[anmlmugxtrgypsvkgs]wfagpjfzgqcdhslmlnf
+dpjpmruktkfkpurvcks[mcdigtlyilcdvykpng]wrbydnqwmaatgjpjnew
+nhcyufcfcqqsxef[msqbqdsheiodqzpkcv]qlownycyhpteerrdfid[geiuncokzuwybrefno]mgugljgzgtdvyhpflbk[kwgpiyryqpdmphcwk]rghcxpkbbmimkui
+yyutoljmokemaksyh[ofyxkifbjqhrdklh]ltfjtukyeekhbjd
+uolodqcxatkpbywxs[qdpmghhjdsvuolwk]qfvcnuajofrynqndg[cpojwkswcxdorxvknrg]hluvdzuqsjsvhnqd[coemqesbuoorqrcht]oymvojeakuzzydb
+qrghrzhmccfpfymd[ejpldprfcjwhfthnli]wayofelvbtvjfesq[crskpxtazgepeguyywt]hedblyskngtnxnchdz
+gvebyckhjgfmqrxmmd[eklljmmtwggtlqdq]hmxazjnitvfcjmlactd[qhlsytdoiaksvney]jsdeegafywarxlsnkl[ycoyqpbbwsanlnoes]mnfxjeakujicrhn
+ttowopleauigqfzpuws[rwaipjqlxeajbszmt]ewurrgikabumnsg[hqhoudrdngplyncdoq]jvazavwibnayzbkmei[yfeaerzswqrhjiiqbb]khsqzfojtdimvcgsxuv
+zysbeejbuanxhomwne[wzcjovlgygbogvj]wqqbmqmudmkidhnm
+hzetqrjsokpzsfe[sfvglwbyaoczjozubjo]fisxeqpvyscesgy
+txsslfbzdakhenov[pdzbirgfxvyufuz]mwbclrbkpszfpgbrhu[ozmwusngkhbkluzvgo]wuwvzagakqcmcrcq
+vxmeolvgvkzdbldvid[ebhmwbfcvzykllewj]ngsvjbjjbyyoybnai[vvhfsezmrbmdkoxbdmj]pxxmcprffpzqadbu
+kagnhnyzbognzsmifby[rujzhkfynwygbcpuoq]wfgodhqkdextspa
+meyjysyguijkyen[vjyhsmvoyoppjknvivn]yuyroikrroyknlkgfn
+yrbljqrlekktwvq[ubrwbmlwxxtxnwa]ekompfyzprhialu[rdglmpamldxxxsgpmwk]atazfgcgkzbjydvf[sjdezkpgsienutudx]zuxyrrwpglvstutp
+yqhreymyqostwga[wngmbpfomuxgcyqdl]jdkppprtdctuyaonlqz[dfpqdidzlofdishhmot]gnifxcpfecsxdincqib
+xdfslzwasuifmmi[lbvuxnulhamtgfyhwz]sarfovphjgpdckkrbgy
+bzkfxruybgbjsmeflp[ubqugccjulkryeh]yaldnucjnxhktrgf[jamlgglyzdlaidp]dsvhuxerhecwhjslfk[yibicfmmkiugttqi]byyytkpsforwainomd
+asxywcdszmdtdndivdg[qkyfhaxaietrign]sjpliketcpjxkwxaoo[vmjxfuqxqgscfpd]mnpdsyqpnhlksmrcpa
+gpgcqhpkdzpmjoxbjvk[stpachxjlsdooglph]jaaoaxtyaogvmuhl[yochbczehvuvauxj]zatcmyzbmktdoohzgx[cbwozqlvqfssqaagyf]dkeooopvydlsoakyc
+blfmanmskfsbhnj[qurkejaextecwkh]iekzoszfdtcjcvqf[cllmensfekeoduop]kpldtlzhhnyaweelg[duturhserahslsvavl]tlscacpaddzunyhknql
+fgtfcerscppphulhdpc[cjasnicuepcfcpwwq]ubfqrgkjexhpcpdh[fcuypvlkciryarmpsb]lkazlfdxilmfoccr
+jaytjcjzwzzrwrosfig[bjwjolqvmwjwehvkyqm]qdrcohrlcqldwsj
+darwjaqwucpzrgob[utcloaeoixtgcssljwg]daazkyzlexvrwrvcoho[hesdrjjliusilwgn]kflojebucroplzdkid[mxvmzdobkvksvvzg]mllhibzchrvzahrj
+umabodjruykdkzuebe[pdyqfuwbwbnhvbgh]mvwcfyrzvyzbwbhen
+uuvjgoiafuuacqj[ccihiuugtipqyyve]xmtwktbgcgwvwchsseg
+oldckvjhhtvodiljhx[nqcvjxjohtdbukds]qsspbsmfdcamiwwr
+dzilyknpfbgtdnvntf[fzelzighvnvvqypxz]ntthcasrqrblqsk
+hphpardvfoqnqncq[ppvkmutvbzybiwmmcuz]kgfwazxcanccijxdxr[kvvrehncwizamjfbv]ptzvpznypbvmrshiq
+iteoprxpltaartmz[mnybqocmkusetlywx]mxfikdltxvgvklaxzqt
+qxldpbwuuyarzvlokm[peamzjnqawztknvnssx]pjacikdaebekzndkqbs
+kswrzqhftfhqqgetg[bplpppimgpytieviwci]gfeqifrktgdqxzw[ylzjvdvhoocfxoijb]jhullyfbzrzbtiujxo
+jbyalllemspbiba[fihpzyuwtiisvalzl]egftfecpkrowpxz[fwyjugfywhzgpbgxam]iuwakremprjkdfqep[cwjewifgwauyxaqa]gfnznfakypqatvp
+gtdsifvoatfwztxsgmn[lrdwcnvmfiuzxuyad]alnsyodvmgpdxqk
+ffyhycigkhlyiopmdx[yuuvtuoepntnqhkof]atumrmkzfhinoqq
+wrkcbbifeyemfppiaga[msgxssztbxvmdii]ydxtnokgvpouvcuk
+xivexjhdjysgmklbjp[scteqtgrnyuxsonvbx]kzbopsageoqsymtcfo
+jtsjoerkjzurnysfnwe[jqglomdcjmtvcwvhir]rozwrmwjuehpapebmgz
+qnscyvubszfeloscaez[povhdeeifvqfpyd]hdpspdtgtqpklhwqjec[xtqeoudrdzirwfxrowf]dllykbtfgrdwdlchn[fsjzptvngbbulfkpkh]nvyonktuxkjzpsciihm
+jzrrmwegexitufpbx[orlvlpnnuklsapk]kpwkwfggbcxwdxvp
+hfvhjwieruryoqk[qrtlruplpqjtwpuhhoa]ddbsdfqczwrmnrpm[hjjqrsppkjnvxmjq]juvwgpsglqllqhrc
+wogxentwvncxpjbntf[lunrnlkbjpkqcxprp]yanygvijbyhhpohijj
+kjwqxolclqanoyfes[oeasucvzznhjxkzlqb]bbxecjmmedvyfzapfif
+hfdiajyktrmlfzfbv[vdnyppvsruscsgvji]opwnmoadgirnedufn
+mrkqlpkzkhbfncol[huvazflnaswuhnv]pznbrubmgazkzfvkltx
+lfqfiunlwragtrknwpx[quvtbwmfgutkzaeng]kcdzgwyybqugyfgf[mjngrfgzmtbehzxzsbg]zjvpmzakgijjfyz[ghpyxsxuycqgdipdua]bjqtbqlzwyinovhnmmu
+ayagxnelxjvkqkwhax[zlimrxwrtlqtkvdny]nosfkooohodpzjp[hsrgztcucnuagedqoz]aujduldshdugxgbszom
+wkeqhrtgnhyektefk[afuwzaqdvmzzzgnuvw]aaisrnfyhuifpglpgp
+kpqqecovarltptjfdf[fwpprvpqfsntlobpdm]dtnujgpbbrqwqdyzs
+alnyvjvicoigistbmh[ueworbfuagjnech]dpzdovbhhbguxpginqy
+eiumooyxoukvaqoiv[qrygigmnybosyay]byhcqoggajjtotnuw[wpgsucwktfgcuhhi]hwoelhsxarzriqxtwao[nvemgikmzntrcfr]uguazrjfisipwrhcbn
+ghierhnuwvmisxxa[cmfxbenynymgvcrr]oknavjpheqtlsvwabd[izrzgzwvdgymivghdpv]fbqrtbvhcjgvbkwjs[ivdprbnygkhgzgaym]ziwhfgnbawgtpmkswvu
+pqcsccgpceupnvtr[bzfagcvmbelgxyns]uxkvxgveigehxsugzj[oojovkdwhojqcbilwvh]xeamwxhelypwwefsabq
+iltmsmcvjnhczdxoti[umsmolikbpmqnsyah]tdtojhhqszysiqkfqr
+eubknijqrihrbulq[hfmdunzrzrgseunf]qgdasqmtmgoacfid[duazrfhejbzxepx]apwgpewymhnhxsrx[judrexlgitldqqlnrpb]ynfdtcugmjvpdajapon
+lqwdkmmktuhdbawow[lsrovmkjyktyduf]utmrjitsbijombwo[abvvufjkwoxsthzbao]wteqdxfhbqrakiqenh
+phudxliosbjdplwzx[wmreutzkdlbxfksjt]onwnwzbffksdsrrvxuy[fuklieqfenqwinbmf]ckltdwaxzrpebmksn
+mldqsgldkmerpwqlg[thmshstolghijyjy]xzhkcpjyjuydgxjm
+wpsseyevqcibokcb[hnqscfwtkqckqmao]jsnvfanwiodlasx
+pomqeoawmwhijaq[ejtmvzlmidqwcft]hkeetgkruqgmnpoi
+twkcrdetwuxaxucnjv[xffwyrqfcqouyxmkrro]ezewjlxapphabveea[jfyjgbpkflijwvreer]nesuewscsclvwiwkn[xxjkzrpeonyctow]yclvbgnwgcarcxos
+ugndgtdqyxtplkdz[worxgglrocgtypfvmb]lcziijmkjfdpghkjqfp[qomfivwilarizmq]dnglkuyyinegywu[batxtrembnirlwr]ovrphoeyxqnhcvmts
+zgtxjxnktlvldrxpul[rviiugbdqcysxijrc]kyktcnhhtompktirdjz[bkusovlvbbigibd]airrtdvywvomcfrhi[xgapjazusatwmnl]usdiffjsbadtdonojs
+mimjtxkzfsnijawjrey[appuokfywghecatbzwo]aovbqviminrwaszvo
+kcmrpjoggjmfzwezv[onaeglpwhoxczbw]totswqmklmzrwmxdf[befvnijunppmomoduhr]wydkdiejzzdppny
+fgpjujczabbtkxwvfd[cicmceziihzlkcwdwhr]sicifccwrljuhteondz[qwtxzkpzaspfynin]scyjunafukgggpc
+buyslulsiiwxkge[ypiuwaxgxsqpbqqx]dwsyrzemulupybvx
+telsdbhziecdqvmyprn[hqpxpfnttkmchynab]wvopujdicijhmttrn[orfuzixnlfdimtsc]jzvuxsquolwwtzr[dmiytgapehniwib]zylakfeifdzatmqpb
+klvmlkigwhcckkyx[qxriuexxfsmfcpgvlzb]ygklxunjumjcmoph[ychtcmyhbyipspnnsr]pjqqgfbcsqmmrxbtj
+ugulusabrxqyxbvv[atgfhjdhplritht]glsimouvohndboxh
+fatrlhuimyqjjobdq[xvvmkavirljwcgmkvx]kbesaoxeeabtywsxcwr[pmvliimbudlzabbz]vseagltcmulcdib
+vowrlwyrxwivzacnop[fegbzczrceczdasjr]orroaksljdcydlk[clwvvrdfhommqcn]yqigbtlwvklqxxiors[uliodgyotgxdymyi]lqverjsyuxifpjoru
+wevsnwwlgslgxsof[eyjhzwdmvusnuerbqmh]mjzmgpkhaatmwptbo
+hljbwkfykqbnpqhkfuv[uirnlrjpryuhtqztz]ackmzmullgwefgug
+lmumdzgnhyjajoazd[yksltxstrsvugowym]xcmwqzbluyzdlbpkfkj[sbnktloqdabygsmyp]pyavvgzsxokeecxh[xcoublhmghnexnts]sdbkqumfdezjvqp
+stnccrfzofqwbcafssa[toskkshmnjeywtuq]kbkyxwghqfgrtxs[myvqujeowntxqiekgxh]dplyqviwehtzoxrrix[covstbqzxjrditsf]qxyocadbpdqqqpadl
+evgjdjnbnzmbzjpbfm[cxhsxvxtdtdowbd]wceyuozkwdjdsrsarl
+rbnbqreygxxaufhws[alsptejilzoslxfj]xirgkoxgpdsolbhqiqb
+kpzbxjsrsdgzstpc[jnpsoqmjqnfzkfsgq]tunpisxseqxjtyfwij
+kegehkcwqdyujtyv[qfprszwdyjylowrl]yqhpsvfmcofhrfn
+usfdjspdmrsmwotku[phpquxkrbrefnesvoig]vbrbyhzjjueflzur
+ahcrumgrsucgvcvs[zgiwqzqxdocenumve]wwmkejymlaysmpr
+egorqvqrhdxdcwglb[pewidggmjfdwchmpuxq]vfpginbbwnzhzutt
+rbwgxniblxrzdux[ctmqwdtjnnoizpfxkb]cjalwfgvfvehdshc
+grpqqrkmvatjnpe[fpuzplowwtztimw]zsebojrxdfyouujqu[jieuliemrlsrrhaaral]vapfxmifbvtdzjpqfn
+kxqzgqwklgxylpccai[scugesodkfdyduxfgpq]qeoajrdmbkawsrcde[yhplavixoxekedvoq]oefgpvukotfhzxvdpt[vfffrlkuirbixakjbg]shhslgefljkjhdu
+xltaldprsvinvsgfg[korqzbyuimhrmxg]pamxettjpfchnwvxfb[secngupffbmiekzfewg]jzqfwquugmanazihei[ldhzfrgdbneaxjjndgg]toefzbwrdaiqssxrbqh
+qgiiylhrxzzvniaegfw[vfxiqmehxnnjheiszxb]txrwpqbqkdbnsvt[voiphlhjwxrkcyrarwt]lhlhcobxijaoosyx[dyqmagxqryuyfbat]oovkonlsaeiqnil
+cwxhidoqdhxragzpib[hjmpsaxbqpiwqhy]csdontizglsbbeh
+cvqlicsscacfmuugq[eejkmtnhdfogzpbhygc]hsqpgofmanfemhido
+tsbgyswofaablrj[kxsfwmoymlmvxujvqc]oiatufqeigamjtqj[lbnetvjnhlmvyjs]aeeetvtqgykzstpt
+zikurkodzkxzvjucknr[eeldigjdnjetqzwtl]itaxybvtwbhjdci[hbkvepoewuzexeg]ohfbodukqdlanpa[rlxoscpwxfbemxvye]ydahcjuodtvinta
+dkdquuhvndpmvudwjx[hofzlmhpteoarpre]sdvnkykpcblbaardmf[hdtnalxmijwrorx]ixsdqmnoqrieeqn[tvyurwrpjzolmoqn]odvpdodyhdjvcaqi
+leufyoljrgauyshjmdn[omwkxoqtffghqvn]iqpnagprpvmlsvo[glbhtzdectgrymdzxf]dwgpfoqsivjdvpiidzo[glnavlopicrpfkc]nnstfkiqjxccqrvmg
+jdpqymeesiieeeb[iwrygkpzdjttxuz]qqrbobabyedbigesuh[tmfkwpopdgcfuydhukb]mzldoxgjdeckpdvu[obojbnmmlhdwsman]nssaclvkjwmoozuissi
+upgpcxmqbimkrcvcmp[ivnacnyueiepraljdh]vfagabifynlpbjdc[dobimimkhmytben]pgasxhypmszdnvjwnwh[nvcvwfgrqenthqcqlw]cdvvgepmrqskpffhw
+fifgarfuqaoifkymgx[mvgawkhnxvgaqdmzat]fuemwmfadtlaxwyslr
+bcbtmtmkhecpaemtmec[apsgtrjqwqreuntmdyq]qecxvrivzvlkwwnzcfv
+vslhwcbtvnnkfge[zbotbapnldktkexac]ieekqwkifqtpzwsb[wjjwgvhvnqaqmrmath]aeauqxrfhwdlbsqx[ijqqcgxjzepgnbru]uycbebwrapkiobz
+fgfxlcgdrvbwkhf[gcdnlfdqppnocayj]kgluimmxtrnrkxxy[ebmozaizcvfxamjfgfl]zxjsthsrjazocerdybe[uiodgjwmepojoaswdqb]gsywzobidosuauosihp
+jocqkcfjxtprwzxcol[jomzitpuxjjstqj]jyaupzbknhzvwkwejgg[frkljzosjvpzzffe]najjqpukuhkyseux[obvojkkfdiawyysye]awwxmmkvzedenpagx
+wnjitpqtpbywfdfzqb[zsmozjfwpksophbzrp]ryxeuskjtgqxlkqinbl[jbenmfsdrvwdjfxhibx]vdwygykkkqqzoueisnu[xgnqjjcnbpugkeuaon]wvyttauvhjmdqcbmfqz
+cjikxgbzdupqnoq[khvayknbckfnohcbc]gjsqdwbzsjnwjblbe
+sknizlycschmfbcbo[glptboptcwtmwmyj]hmgkwtwaifrmzxhee[dxxxiulybtkhkstynq]mjntafrkgppmgisnz
+vbijkdmufqxhuinw[nqkbpwcxoozkrllibiu]maiisvopemncukdedg[flspngjuzwaveawgk]lqinchaieoizrwr[tuyuxyvxkesiktilna]rhyincnkvnnqejsoxp
+eehvafmuwihwbizcao[vnktgdjhjeatxeshjh]taoisnoyefbphntft[pfzlfnftyvfkkmau]gxmhcurnvyqxgffll
+ytdqzmfcxjezgvr[yttnwhebnitzkmpvg]gnxpxseopkiwdwq
+tiygnypqepfcbcqasq[qoiylamohtllezrd]hieijornlrltkvvf
+gcolxjnzzqtozkqlo[gwiytfqkewszkddc]mervsuxdbxtqkclwli[zamcpapgayrobsrnros]skfbjychckenvdnk[msqqgpdtgzpbdsflgo]hswedrxeichgpbkt
+aoyzbbkhsyzouhf[yuheesbhrurspvkoeoa]icwrvttxwvrjodooy[lclcdnulwihttoo]aheoekyzcrdbtnkdn
+epqxzqeqfqquuvaxut[rvniqevejzxwbgdj]mdozdllbtyxiessvou[ftmdtfmxjktmdjrp]rbdfhuqvdzpiyaw
+fvfozofyprhtptnvfvv[cvjusvxzqhknsrfuw]wwjlogceospgxpoq
+lboiooritgdlzti[dcvmycwryuiwrxuf]rgsvwmbouwqweusdsrb[ncalmljnmldxtgjyn]digztuhetumfrmzwg[jxhgzioinwtdfvsczf]ormtzakkenigohbn
+jjgkkenzhjxreujjury[oqbhgbvyvybhznj]lzzpsybrpvmfxftasjv[fajchcbbxzyjzdmzju]jbyovxsryhenhqd
+kimqpwhmrecjichuf[biclfkhxsptyasun]cykzrmdsfvyszfldtxb[foamaxeacbbfukrav]kpdkasbbrjuqndsjf
+ixiemjwdwfauydlzrf[ehczcannzlhrpuu]zgmsdfleegepchlbml[pxixfrfqusymnyad]wynixqpqilkigha[ujtjksmgswjsqlt]uabmyxgfqtqxbtggvoh
+vvxrjenkffmjasf[zxizrnxsywrjpbsy]danlwskfpxmwozazt
+hdbwqsphlabkzxxhrgo[erldraphnhaevid]ynkxoezwjpygvftw
+eynyhfzlfnvsrguftv[olhsgnhicqlhqcopiai]azubeqximmxxruopbcv
+ixkfvfumxiagjybsn[frwibevmaiibyzd]qzqfzepjziatdpyqmr[onsezbgebekxybzzqzw]yqotbtwhsuxraexdfes[sqyxxukeslhogqaftl]kpqsxbeawasfnbwm
+fbotlkdfsscgahhtbvr[qzlujuyglqbktek]fitzbfribrvygprgssx[ytfthkzieycghddhs]twelmrjujaidadamq
+nuxgihsikrkmrydy[awvlrjbdobngseyw]owlsggrmwypppcnkmws[ipqmpwdvbohtnbs]nutezdkbigrjnveau
+ftxpxuuvsdipzjvmy[zfrkyfvducmhwzfdxj]ycyrhdiyszpbldrqyqp[pdhfnaicafoldftflv]rskyllsuaaxidlokgxz
+gqnlikldqbizpsceti[skfmnlrtbwyqrwpi]ubwivkayvgbhnixj[kmlxwcfmudgamallj]tfwinixbevrrgzozw[iufudfqiwsyjcyqrs]ujixfobkouvxhmvcql
+iddngjedxnwlbcxhkw[yqwiebcdacegykn]saybhmmqxdoxrrzced[bqjiuuqpbxczshymt]qagtwkbyyslughgsxrd[wjjqtpphygirijzcnun]lvwqqctdkjvaatovttj
+qzarsgfojoaqkzb[jiuvvyihogymomqddqs]ekacrjmxsudjuvjd[dkfjwxmpbviqeuiotlu]tpmzbyfqhelgtpic[xcankncgcyaixxcuaj]jsieyimscyfvaeduf
+epqisdvjvcpyxcwxuu[hhdspwfhkosxunncv]iibgrkioklsoktfp[kjvjytinytggjurws]oekjstnakyoohller
+yidewjsqwykhvakby[ewhvuvpzmeexvwtd]mygypbsbaabkccvslri[dgaksoqgxghazflkn]kpdssbszxhpltdxht
+ijhcdyyvjscrvhh[fpobanqwzccnyev]vtvztxptbegfabvm
+fcicsnaoileyhlta[ivnthhpicibzhtyfaf]agaffazyjidivabel[zprfefitivfahmsx]jxfvpjrbftgokdclnw[vfmlrayxecyduau]dkuaarmbkuqqjuva
+wjhhegqxpegrypjlpvr[orhbboezmjncmclamy]pckznmicczddarise
+ccxnbhlsqrtqcbrczci[zwbnllwffvdsmmd]wdcyuartrmykqbvmlc
+shpzokvkrrpypaohp[cdbxbviwegleqizw]dcilynllhnasdzaku[brkdsnedgdlzlhxzlzg]ygvficcbzjonmzh
+vzdkvwtqbqsgxenb[dfrsswrrxxxlpxpgp]lheiqkpbahpgjtvax[lbfhfdztehvveioipoj]xkpbfwdxvkcndrbfgya[qvewltgemzljlokhjxi]bufpvhmvhrndnkmjsjr
+mynfnfbjlwljwoqbenl[wnuganfnmpqrgcdxvn]kpcfvfegyibrhoeouiv[tmquruuijoivdluhc]lnspgmbphvhxlcw[slrraibkhqkaupb]vxwczoqsrepmgzz
+eaeovlebqlahuiztd[dngzrklmortvzksk]atunvakfxeqeymw[huaccbfdtygotzubrj]poeblqeqsdqpcbqd
+gzbgdqlebuwepvx[qpajreszsyyluwi]hymkhgxqpabniqzells[zediljwkqfpvblioz]zguladbcmloyugl
+cvkyjumasouhugvvz[dtidgtxbbufhwyvob]pdmhzqubmdreglyy
+tcxjcacxysuimczi[uhflafmjntxmsaf]uexrhinqroupcbksrsj[nocrykejeuzzigkyqxx]crwdvpjofxynwft[fmxkcqrsrpdfxscabs]crbnlnzoihruuilu
+notkmxwmhfptgfpvntf[ucdfxyikwxtsumebhj]kjhhkgtruhuqzsl[nyiklbrbfvreipanby]flesvbofrdsclfvm[zghcpgxoauylwmlzfl]vwotzewzjzpyccl
+pjrbmasdillqwdkjfni[lalstrvjalnttmwr]xbezkjpklkrnlpzjjn[wbpwhbukoixcfsqnu]xknhkqjktuybkfnz
+ykvyxzavfcirelraq[itraxkxjwslzkxkigcm]ndbwcybrgayecrpjao
+jqwujyllrskoetkbz[akunxyvvaxrysiygb]ynqqotupdoqbfwncn[yyszfaxjmgqmwxrvdx]zeacfwrreohtnzvobhj
+fsfgewroujqwaek[mryrrkeqgtpibzn]vlmavzfvsadxbdiph[tdlovgncglhaoqafic]ziupjyryletstrull
+fosmjgkqrqvjjigrtf[ejrefcyognxkuvlwl]bzhpufedodqwsztzng[rgxidklqahcldewgfrl]eodokojqopkrrhfpmmf[yqwaeuztmjkelpwlj]zijgacsyrbtwkxh
+cehnutkhbzhfouyk[pdiacmcgcdpmsvgvkmp]uaslakppkycqbzn[ldbaomdftjcnpasl]fgdrrrzumavxzlojm[iyknsyaoypsbqicx]ggtbqnjftvmqkmiu
+nmezigjskmagkzcsyhb[rfrggycsxoxxnxrhyb]zjlrnpgxzgljzfw[ztdnrdocidkgbqmmqa]hnuqryossbzlfaivij[dkaufcpwgzsxztpqsk]tzkdznvnizjtbrnqosj
+zcdfhyoyrbwonet[otdhxcbmwxzgoyoo]kbkvqasgmhmuynqth
+wajbfmurouvueehl[dvyueqwzbqcpdvbjfr]vkujmhhlqbdaqcsvomz[wlekuxdiumhnwms]yzgtuwxfirpmllcek[tzipbxbzpxcvzxzmtr]tynktoelqfhedvavge
+hueffzriwkhilam[zheswsymmryugjawlxy]rptwswnecdpsdjujnt[rjyipvpqzbnvtugvi]xkicvyasotmrxvqj
+rqbhugeaozfjbqm[blpvbvcvrytbekhjfo]twsrzdeuojhqpaa
+fymuqqbklufqakg[wfsqzzrvdqcubxbdr]yzvdgnwitopzvtha[vhrdzzbmubhgovut]tfkcybfbdsxbxaxnmm[ruvfmuciecbfoxbummm]ysaeetmynjhyegk
+koqhuxoxhzmsycbr[vbpklymhqueodieomz]jmstuovitaskfbay[mpccjuzuqwkhvnzlbl]jvdqgfkbyzaaeaxjfcl
+sbryyigqipvwczxty[ypjxmlzyfjkfqxyxibv]ktqvnmbdtykqyiu
+vivvjcfrqdbkyopqjdd[wkpuxloudonlcsutb]wpcbavtlbxcojarsj[wxihbnghmpfppwqlykz]dpyadzmpvgwtjoiz[jgagjiqugqvjnehajcv]tvrrkzjwwxaswbaz
+tkpkdqijrxmpddkkau[yljmixrzauogowt]yngihfgazktusprrt[ggqtnksekzzypkpud]rxvvuhfakfcxjieaa[spuvyobjexcgobltmk]radfcjxnsgsntezrerl
+hywcvnclwvvcmkdk[teiryduhljxirhrjbt]brkfilaybgtdkdh[zjqmovlmzogwvfmmi]czmtshoirukgjgeug
+sdbxirgqauygushqq[itvwniqwuzmpzqbuug]dnrxseaisdgklwodsgq[euqpdyvpyncxocy]ggchswamymfpxaiap
+nzteyxnakzfebtcszx[uctynyhtavkzfcudvke]uasdfpeleelxacxq[kyqsinbcwbvlrmr]zelddmnaqlkhmbsw
+ttzhosgzkuxfwsy[carsvskefzrusoihqw]qiuobbcgndqqukuvbmp
+wihzjoazedelgsojb[ftgarhsuahimrocy]umttbzcrvgzroprh
+itojzylgycblvbao[xgmeltpmzvzvyfnso]kuohqnawebyjdrerwty[oslthgekjbgpsnkyk]jifnogopgpnkfdrwi
+nvyowfknauliiht[tskhxdgvaggvgsbk]blgylrovweecglu
+hvzpbfqqlwjennnj[vnmqrqlfiqeqdmg]hfofuvqicttlcxka[ievkgdwazpamrdzz]aoofvzixtqamcvhbh
+yuxckarjmwgyvqjl[nvlegkojdyybpty]hvkrieawbpkcjit[tewpyncidhvdtomjq]dtgggmzwogtyoxrepi
+jobfkxxyhcfvetxwuc[nreuagzglpniuwkvui]seztmibtqvrdepqyt[skrxasyhbotymilzgzr]jnhqwvcpirmpnltnyn
+hoqhdburqwecnzksmd[gnegphjoyuvflxlujbs]zhuvrcztcfgorbwuc[pjxxfqyqmnhyopaeh]ewbvxrexhvdawazw[kbngpgqwtgkzuwupwj]kmatbuqigzqrzmbq
+ltjrhusfbjbciixg[swlhqxnykjxumuifqdd]romkzpszqgaflgbjpsp[lbaqcvazaucueltnp]wovkfmiuwjdqxovf[vuundonjprqrxakp]wxeulnkckdufqjy
+xkdmgtutsfumpzteeh[yvkilakqbawvedm]dwwaexrzzsyjpzsn[pxitznlnnvnjyrs]kcnhpbkzicorrgncowu[ogyvmiykolbwdtv]vjaksxdrtpuuyykihe
+eyzjheolvkemumxpo[ipwxnrhyldvgewl]zbrzwobnthndxxvthe[gkfleabqwkpjxbtdlt]wywjazwwxwmuqkpwj[omgsyntzcnhjvsu]asknyjsgbofzyfte
+kxxpalmmgdqwahfxs[zwafxcjjypzibafhrag]qfnbakvxozjqgbnnizp[bqhtnoqzctknrmmh]zvmyctoitshakgx[dzatbhonulhknbio]eufzjykwmqoignzm
+beenkdmzqibirws[majntndkzawkbfpi]biygjiawnioazizbt[yonbljzgueyiuirtv]umjmhspfocrpobmrfu[dwegjekvrmgoaqc]dorpbifeqhmtglavx
+sstlfeielfmztngzpbl[alzfrbyqiqangbkwi]qcomrirvulgipuk[mdvsghpkpisxplgit]aykwuhadobubmrdtvvj[pqdycsmawculwsz]oemcgayshwppgbwanxk
+qwhfnqzudzysqxwebj[nhsrdvugubbtuuseux]etcjsefcsjblcjgshh
+cgagbjtoxvwwqonb[crbqhpfajsdwtudybm]dquyiuqtarcupaeujhk
+qjsqqlgdczcqarhftri[rchwsuodsdofjpd]mrpwnlqgetejijnwnr[lwusdojqkioapaxwc]ioumfyxtwspuyztz[dgncyjfldlapoasebgz]raelsaeajwuhnabrgw
+tihnitxxkxjvudnrj[neqbqspcfnldrna]qkkcggwjgejtbmggemx[ffhkzdeopnhrdfpbrfn]rucxwfyfiavskfahg
+zralvoiqdvpvjkkf[ttvdslqoxnlvnyyskq]joucwcxixdqsagu[tulodbmorpbjnzz]qkknyrgruwgrgupgb
+fgfaohmvjameqyl[riumppkgphbaziwbfcn]gspevtjsfjazlolblh[sueqarjummrmwdgzsr]szmltztnwpqshlr
+lgcudszwvsooaxhuz[wpnexmkikdsfquxleu]icefstmmxwsrzqoiki
+elrybwwbktbemldjqeu[moigtqyrbfwcdtjkm]cfquoomooaqrsuomty
+rihnsvwngkabincos[hrafbjoluwrkoaqb]genyvelnsrwqpljgdf[ytnarqybnwaeawssx]bdhppadoofmwwbcbl[acnqxbqukongbge]tptnvsrcborwgumweyb
+sesxnxaikeytqds[groytsrabjvakklwp]jzexhtzpseseauk[sdndnglavrmhzyjdh]mpsxlaxqnazayppc
+ozkfwwrdoftbpnqwa[mvzpilxwrdeszungggo]fbjxevczxrypzzegxmv[zvzaovlhirczrlwnvk]yulsjotokxaurjibuk[hygvqlsqfygujup]ijtuoskhnrvxmmnety
+ssoavardlqlejqfndz[emljlpogavcsyvavr]izdkqsihedwjaxva
+wixidnoyhmsiuzwbm[jgqpnkzbobknrufgif]yaarbsalkqgscyv
+hgcggfqnkhbjlhhipc[cgcrrzyspqlllhee]czfvtkjhfgnrwwua
+ggnsczivqxwhungxmb[foslhzlzqyhcwepvhga]qgqnwrpvfjilhnttbv[uhuhvuqwbxsjxqbmqfs]pvwkiufdudmyabq[ffqrrfjgkmegfls]pvuflwvnbnllckrmdas
+llelndaczjibswzoaen[dzvunuujhpmgqdyond]slkfwoyxpgohhelexsl[hvtucjohyvbuihbonup]mwatlwbwxntozpiymy
+epjldiafxyinaljee[zfgytlqlzoaauszrn]gvyukiahumemeqnsy
+vldhkwyfpfssriaiwe[yuluhcsjdkyumyhnd]wggzcfalpkmnsudzr[qisyeltbpzmkvqr]kmbnsrdjgspckgmwfj
+qkxpyonwbsteomlyhxz[wdkzqjywdsbiccr]ojkvswlubvbbskvnbdw[ejvtytntukhcuuad]hspfdjitkfetytyb[hlgziyjqrulvyaoco]rfhwusvjmkzkpmjvrm
+lnmjprwzvaboyyobux[lncninvpqfpuaswssjs]vodhkkndlvixtbsdfph[gdufsyhihlynxuluvx]oyczgnpmusuvligf[jqtdbytmuyavcyfaia]mcdloputyodiezffqpd
+awulgpuvbkountidkgx[rzatlqccygoyamniyaw]zmkfnkaiuzjgdsxd[dornnqierejrlxbitfn]qyhlxykziurpdxpz[fjaesxiowwxjvoxzq]oujzxyreqtbosriwkl
+hcycycsytqzpijy[pptcwgiggnlhewdwfa]aqrsokplrsmbzzovz
+szlezpesytqglub[hlmouktdjtcglvvb]wgcrjqyvabgnnirxs[cafdqrjgmugvsjarx]uomjcavfgggsyknjge[syhraisenfpvlekk]voyezwktjlqoirx
+ltjosfxwsqmgdrnpyav[revxajvfbpuqqscgxb]pnjpsoikmxwrpbk[frqghuqvbomoddukohb]egfbhndnpnlxjhyv
+ydyzmmgkrvbycjgeheq[xmrcsrshrtogjfez]vberqebkqhindvsj
+usczwnycqbxdrcfr[papmzhuxspnfexyr]pwsybmexcdgfztkc[jmiatnbqkxmarkaeer]whejsdpzzxkdxgwm
+vfiswfowhnwcuusmd[dhhjzfujepawktlh]quzyrwoerrtncnnxup[ekhrriqhoudhiwiju]exzcmnyrtbnxlchf
+fmobpaevmkephhfuu[pjbpnzxkqpvoafxj]ickqqwfifesukyx[uzfultsftvuzbipz]jgvjewotmlkzqhvvc[fhfgcekzgmgxosyuac]gwbmgqtvkhyqidnehhy
+zbwadipvxkyqwsaassl[wcojcviexybrfhdfc]euliyskdckqzozfnlpn[fsvqspcvigzxlzya]vzabwryzpqlmvns
+wavahkemgrtwnvbocse[hnzvxqcxzisfehcy]mqvssniqlwekgowu[cusnrkcbwuichekh]cfvncmjjykeaufknu
+wvtptjerlrfvtbywes[ciopqzpfjdoclfyxxqy]sleyhkequxorssls[weyxuuiigtkjsmnugij]onxiowvkwaaycpv
+csanwgypabdqhiinan[gujzhrxowlgejtk]mkczaemurigewvqw[lsqtuuxcsuphogl]acfqrkiewfykgnx
+ennvxqkaqdppzmj[litdmoukvydtepvji]hfuqcwyuufmxcxy[bilbdvnquchtcjquymu]yjndoqqpyzrjudd
+vhkrlicuffddtktngy[opctcwvtlypwglpaoi]iscxtzlmlkjdgty[xadnwdasnszzmwwid]uijlqxpfgkkcmwga[ykqorpoxpbjkepibk]dmuojdumobwfmkvqg
+wgcihfnjvadtczgqbj[psdtqjwifivgbhp]ocykhmjfvbppiltqpvv[ermpbuyieexqujuiji]vjioxemsjslsdxso[bmsocpaehaeadsaqzbm]hqlzlnedzwgbxbcacf
+reesvrozyerxeid[ymtiurpepvrvnkf]thobixnwiqrdkih[uipdwllkuudcydjinew]lzpxeltetaixzfjxvf[ewlhchkdiewigxy]wfeiqnngnifjzbpikb
+rxgukabwlgxzaxjxch[ljrblzdmvcwcxdoomq]ksidvuwcwvwlvrpe[yrnyjokakcbwdxh]nertnqwigrzbtdmj[gxbsdsdmishqjeswt]dsgnhlagonywspbr
+jjdfvvurvfljscocvr[ueywpzuumfihiocoe]lmcrxdlkqsouhpimc
+qgelmqtmcfsdugg[jpbrzcblivebxazpamj]jpkxrusyqkjnndao[nqcxhhmkpfgrcwhsoyr]wvigixehqklwvrscmz[xutrclaofzczcvfnxll]xsyxrvfnovmohxfbt
+aqhrsqbyxtxhsvmnz[pfpclhprjghikyngp]krgiznxuehpzeiy
+trqnrkulbvipvmj[mgsdnaqnayymjyp]otecdnzhhcufrly
+illmnsgqusbqybiso[fxddafnnoholnqjotb]uplvjosscbyhwmw[jsedsarqbralzbjmyq]sdwkyeychcdpqvfup
+zehmutjhkodiqpi[usuretqrbmggvlvr]dewkdjmtingkzuyq[pmmbbozcvplhejh]jzasjfqvsusgnkfegad
+ljpcpqtpcpcdttjo[qbmnhadshlheoavsbxi]wnwuahdcagpellgs
+ayqxaqtrqzbxyhu[wkplzaetynfxqzhtkco]jpgbztbvmojlflc[ojmgjvfxdvlyzih]levvkelkzftbzwzkow[fmszxqchzjhxtwfm]vihmoqcosarkzsad
+nigshquyfjlleujdtw[qmiqiabzqiqafambcv]ywbltgpjxcwlkyahg
+vmgyovkavazsxwed[anpflkjsqieufhscn]uizulvgasvsstuhfn[ygxgsfldybdnsleqy]tztuatotreocsrfevpy[yxqmsidajmknyrae]whoydkufyieuqhmqv
+jyhhfbftixtntuozgfl[ffrzhxpaezbspndbo]sbwvaoziercfpmeo[tzeluvflupgartnyjes]gqfmzvmpieczbjdsr[zeenwxfhhxbdgjkr]ojqxbcxciclzwthvqyv
+olhruodhjmaicslbgw[upvujuuazyolckot]gcwfjukdneuxqreeg[tnnnlficumlgwkdsxus]pxrxdntakudobpo
+vdowqzktnmpimsvok[gggjvxecgicglrkuvfb]xtsuhbzqpovnoqhnbs
+hxvziijhffbzjnjvgoc[sealjvjgnjnkzac]neuhdwcgtjcvpku
+qryaqhtnjvickffebwj[hcgzffksmwbqqdm]zrwihiolnfuqzqpkxn
+egbqexgeqnqsaxdi[xghkrttlbmkxgfj]rpulxldvweijplm[dldqxbqxenksncnwhxo]steqcncxfskqcfwfnbm
+dhusxmzjdacdrqor[tzblogyadgggzbi]vssexeogwduosdoeo[xexqnjrctzlbkfri]dqppelyoecnnacs
+tkrkjtgdhxdcyapamp[gvyyiztulksqxosp]voudpakpaphmrlebpj[vghkfcrqexfgoguvbxv]yronkwfpvrwilnuegkb
+yiuhvglusvqtzvngzuc[mfvcrgjuywuthtprxe]vjrrmtbyppmesvorp[ucqdvtwolrvpjyhiolf]eazedskopeknjcqx
+segabhonjryukdicj[zvjqilxyvwjnjgjvrnf]gxibvkxslgkpfdhsn[tlbwwiypungvwcvwngx]hhgglxqosunhdvgr[mrjgltlfxwsznpnmdox]bqsgftffsibfruyz
+hrtiuksavtjzekgf[vaagjkvweeznlshs]ntotbakgpxpcmqanhab[pqvkabybndisouur]cnjoxldhauoppnqqk
+yizxcouxlbjqbijqmj[kkqvlcusdkmkbmuia]pidiunjwlkapojzzmf
+dfzinzasgtnjdbdh[wyguangjweruyqm]jfpqpyqydvbdtgqpqt[eryvzkaxiahxekwbp]sywpjhgufixvhljk
+jkmabkiiltlvopaxec[utofhywhxjucodwke]dwxatuzwebnyulyt[iajptbioysozunsws]nmfnmtguoqipjmigsyn
+yxletutyrgisbrm[ljtuifjmgxupgerhuhb]wpqnfedngiollocqbfh
+zszqqoahkvdvpezddea[defewzqptytvhnpzcdu]cxuavzeyqysdynnr[gvmfnqnjwrjrjzphei]pelrqmmykeiamnh[jrjqavultdjecnghoc]ekxawogufyfdmltveqf
+morsvbgrpgqiqeplgg[giswwkjoxkgkbonav]lyhrrcwskwjjflawgs[ogjazoccoomohhalb]gjnkzumbxtojtud
+gtgotbovcctgtwwc[owthnyvlmcwnctlkilj]eytxalpmzywmwqc
+ikznlwbayqdbhusm[iqstwodfolztyldh]amvvpwqwlswcnut
+kumjpojktwxazwtg[idtisckrbetbaye]mgqtwjxlbdpadrnxg[eourfrbwgoeoqrlvhv]gegegzbxfyzpbij
+mxcepmkacvzxddcpnsf[jviddcgbglreegewbj]qmqdhescnuuswkhpvxn
+ltsouowwsvovkbie[huwwuaptbopxsixrb]skscogxrektbbmuwqu[niaczcnnxkymnnuu]sfczdkldegoynqw[mrjssleiutncang]jkfgyuzcaisvrjekiwe
+mfqowsxqmywlvauv[fziifhafjuiwdizvm]gmaxzryznwavsaxsv
+okmehkbnqsegqinj[dxddmmglnqftiunfuea]todmrlalqdfqfkbq[vrktligspzyclnfz]jwdvkpuvhpwffrnyxw
+mybozskxkccdsuuptc[mrlkqwbdhhktuxpzjxi]xrujoxxkxwqcthydsw
+jupphmpmynzxsfkr[xhvcemrobysjizesgs]ijjlrwbpchbbiblvr
+vpabzrcqfzsejjgln[segfzwfyprsfqskhop]gksthicdjyagobs
+tuhzaznrumhuwud[szqusyzaykegklbcdoo]prwjxzrwyrgcouehrg
+dfvbjgrshvnvfumqxh[tgnhpzveumwngrnoc]qpntyvcxxoofgsk[jibdpycgwklugip]mgkzhcifwyzxsbuwj
+mbdpghflpcondfk[ftzfdsbexmnznqqmfaa]xznzgqjdfkmjzvwni
+ojjaanxihagtezp[pxqpdgygyklexhrpc]lapqmhronwsmwbbf[rzuhtemugsniacn]apixdvsnjpsplmjwvn[iwdpiqgoztjamenyyw]zjyidlwjbvevovgf
+pijmbdkeyhcjzuwclu[onazufaoibbwzepmbr]jhjaqudvrdoqcvobs[lrwjikvojmgdtkwb]gfxgoeihxughdfbetm[yjhxesdcdudwszwv]hgfdxuejwfuedpdu
+hvdutkvozvxwpvx[beubpipzuwaclrev]lqeylkxqdqmcdqd[oivjrkpjzrjywzrxely]dcupjtbrltnguho
+esrepqjymnodspvjib[kwdoleplnoxmntjuip]lvrhqceegktadibgh[yfbqpomfldnbpxsaoan]cheitjzmqwdbilm
+oakpwuuoizfcsfo[csxawuixxvzzooah]dafrurtufjpuetnui
+jmmekugaastsvdn[qoasgnykbkodsgt]lmfvbqomdghvicry
+hqznrdvlwnamiushnou[iufqiqjtaiejfqwns]xsgjmqqsvbctpwqcgz[mvpdchozogazbfywqd]iqimztlwajwbxhr
+gkeetoqftvsdjhhghre[nspwxohslbgkpyyhdh]glknqkzyfmvjczau[zrzurqfppidpckhmxu]rtawnnjhyjnbvnt[deisyafkjnxtcjas]cshchafpoiqptus
+jpkjyjiucudsgjz[mppiltmurhwxvmv]sdhrapccelecuctxq[cnwlmuvyistotoykn]hjzxzneifkwmvumg
+uvzuxzcnipyfyuesvna[ckplomuathpfkndodxk]vrqhbliixmzbefuh
+ionmypunjczxhry[bvgmqzohimrjmijzkwz]qfzsokgukugmeso[uarvxrewouktpgnghtq]rsnccdtstsegeoudngq[hkvkymbbgdyncilyf]zteoiyacrtwykwzbxy
+jnyydhrsrkeujfvj[qmxzqkbwizhvcztzdqr]yllidgevuektldszzjy
+nuylrchiwpfvhdumyet[hfgfzmeldvotgtxqh]frzcopyhigfewcnb
+sdcvojpgatiidjvfy[zhvymqejqxllelyux]ektbysjcypxfjrsor[kgfvqbereoskymyfp]izmdymjhwwtelesjr
+xnelfgdpnrfhdombqq[oiidietkplqnygwsgo]jiltmfqqavrjrvyui
+zyuubhwaovcbnaxrmtv[yefoksxqkrkbmbm]ainfhyuonvdvcyegy[nntnxqkqdqattwt]tcrtyqjhokntxcb
+hxkbhdfwcraxhdcff[umxxccphsddzavdqn]zsmmtgneghqsrwfauw
+kbdughqnourxomuiab[xcjayouykostteh]enwbjtpxpyzaeuhuwb
+cpmzhwxdntahvhl[diddnwirsnqchwr]etsizyoarkawzrpfidi
+xrruvcmbmigmutacwc[owhorlqlgqujvhos]iddgaukpxlielcko[gawcwcvuviuohmda]bfdceclnseehdeyxv
+vlxaputciirctva[qgmwpinixdixaiut]kkoousbfcxganzcffg[cikwetvrztjgefpzsks]jrsyfxydznmupwapco[ooydsykpjwakdep]krlytknowykzzqaafou
+dnnvcszortmitfv[sbnurvnwxwmvbdpawa]ewayhapxdfxplpqudro
+fsiehjchtnyenvmjfw[obnlguwjqsgylwveak]hupypbuggmbkeqxt[ljxbmifxgorvriaj]tkttmzairwztsmn
+pnhgjwzyqnjrkkw[ofyifgmztnzelptkwho]cgnlnrfdgfgjvztpz[wemrlhyskboycpdbzr]azikmfaudvrdhvfvt[chxmcbgineaycjiwy]kjbfttnqgqhkefoolo
+khdlanelfapgxqpspe[alrgipfwfdyguqtk]coxffjtxpbqmxig
+sxobbewirkvducqxd[ubfbqjccnbtkwpbxqpg]hgsswdjiudnvmvijt
+jzbqaqfubdsfinobsdu[rojkizavtvueepedxw]lcsyjeoyieqjcim[nszibgczunpslecxo]louacmgeotayemh[zvpjwwpeyjjdhjc]jidkptxmhccryujojap
+rrofkfoljuossrced[ymvijcmdvrzhcyh]zegkwrmeneexpcnrh
+eniwjwjnmgyzescoz[semlscmtbagknxpbvte]ysqfgrshborwtgnwtr[bossxfqcyadppdflbr]pyiuttfsuegwjwcxzr[yaymomeitxwdfvsr]elhifdegwfstqyniqta
+xauanaojjnhdgcpuwwj[ccitjseyrwjqvaljv]ebbwxnquaqlhgqjsgwc[jybietxintbtpzncpw]wfkwxwffzxwqucjhyvs
+ipmxdranyxbmwlo[ueimjvadwbdjithwn]ifmvlcsneopyffsums[ejornegszbqxtosc]iucimozjnkqkeysden[vvtdfnvjnzqbxujml]klrpisgrmdbrqbupc
+evolkocwyejqtcazj[dzleqjleocyexjivik]zmvqrxiqhsjtoezm[sskndhlmxrucdyqvop]murrraduofedtltbtg[kuzqpodvwnewwqdil]otvalnjnbexltsbitwi
+ppqnetrairzkzlt[hyydyimhgzayzgnxqn]lwubwuvowsyovjjfgp[xbzmifaqcmpyuev]wtgcnccsysrfvbtb
+jpecpgdrvunkjfrp[eevsiosfybfgdgalp]veprfliqlxmoctjx[bcfelthvqqxthqwpuoz]beufleuquitnnsti[aslupsydyktxgqsolq]gctlsoauflrjprdn
+yekfawwakhkqvpqf[cvenkdpepuyimstwmnz]fphlenyhtsxxeyst[yohciybbsiokzajcwlz]vtqcjngqpamsvrchix
+ougrpfmoohiymnx[gorlgyciageugmcbony]ozmvirifntorlvzz[klsgbagukrnbyzsez]rdzhlkpoucggkcdqm
+gfhrcutoyproiww[nzgfaaccfrgdbcg]fcrtnobfhhyzmadxjv[vlbueztcxkkbufljse]gqpnxtlrrhclwuaj[sstrllihglystknh]alxmlywxfjwnynbwfk
+opeacxklhjwcefmwrwg[mzqwxyfltfqyepcgnym]cpziqpjettzcnktrqi[mbnwwhyxebbececc]tdkduejetkrqwoxrsoq[ncenzwgjnekbobv]yxhgzizqxwaihedda
+svatyxdgfofrrkiksjf[mxmrficzxfyykqekorr]qojleucutcqxqryi
+prrhfrigzcmemou[zkhokevqzcspzoyt]tytqcpuucppiwio[mogedxwsflwocpkdh]kkqnructlslbaked[sslztcwiwkudgtji]djssvabrpmygljeh
+btundrdlcsgtilltpue[jiunnaqqzfgxauqjes]wtdxsfqroorcghqk[qvyzuidvkzmomfi]cgckuokezrtxrgdlo
+tjcpdjzfllhwugiy[vxypwowarlatqjlwq]wnpwefpgpfcqqwwrsq
+zfduowqkrccccgggmbl[iwwfgrhmjxgljwqf]cminvjjyetivkvhvkdy[ismlcjjywxxvaehvhhm]eojlvocbfkftjkapzs
+hzkrcmpwhfnbwlisg[wxwoegwncugpcfwywxe]voktthitecybcfpnz
+dcsrtgkbstmkwlzy[pcnwmgmcmpsiyizqx]pzjcivraubvgbkdahk[yydvhvyumdzfmjuso]bfljbkwodikjenu[toxagxhnvgkwcivpcuc]sanysdrigussqum
+lpcxkqrspacyzrqhbhr[vdcbkamwyjnxpgjpm]afxbzzxzrtaacbypq[ftbpiplrdrreqesthw]tidlvfojrlctjkfel[iibzklhicpqjvzrnza]bmekkyjigxxtegqbait
+duchvjohwoouxgmmxds[qscgkenygikbdrsqc]iovrgoggtgiebylbu[iqqrytrhujzcywwq]ybgfnnhqwfpfios[dryqypecmskrqux]klqhpvydovzggsqo
+gwgojmuthbgcalzvdxh[njicnwbqdckxtyxkj]rwyptcssdkdqthiydea
+yokzqvwcycvjgouoyw[starlvyjnijeacjseo]iehvlergdbswibmzci[ppmriizuqubzfehcz]jartjkmqzngigjvl[izpxafhxdmckrcuufu]pvkldotwdzdluoubpnm
+rogyxrgfqivkovtna[xtahrogngfeygkasq]kpcpvtirxettedux[cdlnciogkcsaras]bupwazalrmfnjufn
+eaeubxmpmymzrfleut[eharpivgddyokps]wimaximeayrixnts[paysmyvjuzpjjqr]fcqykmkzbcbyrpy
+exvlqvnfmpkxfjwbhol[utjaefsandulqaw]xjrjchxifscadbld[ifrckhdhmptybkhrj]ykcqgygngiwzzyfnxg[plfhikkzndknbpdeeu]siwtfnlbcxuqkrhwj
+ljihefaqagbmffbcr[ccmafzhpsvluglwsgh]jioaeefkgujinzlgn
+rgysyaquiuyvtojxnaj[gcygzkwqdebiqsr]icaeuutjodsizqzfvj[qapmsqsaoniuinsz]ppgtfxsblzgtqtaiiey[xlkzyyvcgyhlmvnzrpr]htorgwwkbhasrsbvemq
+coiurrjhxxkcplh[nkusmllwtsuddqasyc]vyxzujqohjyctyv
+briulribegnliapcimw[rgawfayyoopbosvc]owgryasogyewgxchxgr
+smseegsurmfktgmefhw[paopyayrwykwdvcjjhp]byayaatpurrllyzd
+mvgbtjdigbhhywarz[pfrhqtizabthnqrvvw]azdztfkkfizbxsy[jozzjtzkscklmdt]ucnptpblgcgmkeojpl[nqsybfqdphdncqgigis]yecpixjgagdgkbz
+zyuzikehgrfaztne[oaxgeczbaafnottqg]kuuggppqtgrncptm[tcfnyqvqcijfcfdljh]pwntuaixpqfvyoatk[mowgvynrpbvmqlpucq]vgopzmyigjbqlismti
+ostutlkruoevsjr[qnvqsxlasjyrdyyz]klwvhuhmvgrlcdy[tycmevukacjlveu]mvxcfqojmrijbubfm[rbodtpwkkidfrnhayj]jsbgdcwbfdfflvupn
+eaiframmiukbcixxi[bmqaglfamrqoswuhme]lxvkwmzgauwmabu[kxusdngtifhpmplxl]sfccogjqnblrahch
+hcjmrcnzrhznwvtjby[lxmehjbnudevzmhx]ukfmdplzriyztnioty[lqjesrsxjozxcgfaknm]qifmjftfaswtrjblzf
+xmhpeigrzvrgknc[drornrcakzujdrsbrvj]czapwkwkwwnkwks
+sfdyqdpsfcxebamsf[vehdpjffaqhytqhhbi]urolmsuobvbecvcnv[toagfgryhwfgfwxmvs]btjwiwdrxnpzxlxdsdi
+gnjmrczrqiryaodop[etlqbnstgjysesf]ggmbohbzrtfbapbjg
+wwkqbdcmlkfwxwdu[firsfuftyxwxpcicu]cntzxuydyjkgkkfvdl
+cvcsgxflnidiwtvy[hhzzbmygwugzsfnus]evzlovhsgqumejki[btikqitubnwzkhfyhh]xwxvlgyojlmkwljv
+bzuxzgeuobcctajvva[lpqpidtuzmrrnnlgkqu]lhyxsevugkrdimm[umbmngadfcujqpqr]nizwephuepdykbgj[hfheiymxxfgyxyl]zlurubnhkwxdrwllatg
+gkwahvrljkerohucrty[lgxqhorgrscmkjqcziq]otxkbzuzncbznvr
+hpoehzfotnjpnhl[yrkyqbolznetbgxmy]fblwkhzfebmzavscyyl[lxvxgdkjvtoxjpu]oetusxkoxlpceierbt[faylwjcdxicxbqr]ledknznfnaiaovejww
+xifdyajgrrrhakdqhg[qtzmwfjraqbrwstiibr]juciognmzyafmai[lgbmgoxqtjngqpqkwt]zzkhrunuborvoajlvul
+ekecthrkwdbjhsy[klxbdnucasemwhlpjj]jbvenwrnvynlfyjybm[zgfxxurrduhtlmsbelf]lxuxlahnrqvjssffj[wzcpjiesgsbwbtnlrs]sofzsskbviyfvlo
+jscqvqqdwvkvrqcb[vzfqbgopfnjcekjs]dmspregwlklxptp[lsxjobfksvzwshdre]yqfwrvjrykinzeon
+rbtqjtepvufhwpjugj[vkdhjmfkeocnauedxp]vpoqmfpnmjdpcxw
+ihhaztfuasflyghkndl[vseslcbeufhmrpyfqb]mtcgpfjhjeowjpqc[cabeopcrmhjhudob]fgeutfapismkdwqxmal[wldzeajldxlxpwfrb]rvyuojjnauuitoofgcm
+ixrzwptyltfshve[xwlsfazypzeuauxpozt]nwfgkbpuxeauadrgbbm
+vppgbcdybisarvokztx[yuykfmzxbgfwzdohup]vlkdreyqjihmdksxih[iysfrpczrirzbeirih]czkbhrqlrovfkmlu
+iaatwbohmiosyiqfq[imajfecefyujhwg]aanaybxebrfpdfxxpgw
+qgomsuglksqobwhaq[fzcrputgufyvnesoqwe]ipziztlrfmlaizts[pulgtrdydqegbymu]pxcyeozdofdghkmst
+tlxidzqdeqchemiqdsm[hacfdsanbiffzhilct]jtclxgjapfmwhlkn[ieafoftblueqcped]lauckblqborgtjnj
+upkkaykvxwvkgwgztzp[jmotfixnvoqrpwsci]wszntutpsjljzmwqpgp[dbnlosuwazvekoplb]bmobthbbmitprffl[qkjfwmsronqjmylzcre]yaulmyfoixmkgjs
+zxxsmidmqxjigkbos[iwsufumylphrhyx]uqmpbcxmvhzuppxqopf[ykipifsdwkpzgmt]zzcwzmwugdzckey
+ciakjtvtrkgrxvp[yhxuyhyxwytquzxujw]lrxibndatfiqyltehl[nnadhofokmcutiyc]vosxtisllkweiaapagg[vwniutthbrvmqrvik]aixaxvddxrdnmmt
+mbjsskcvljlehsxc[cknzgxghehlmats]eqknrogpyfcmtfhso
+lcbrfrsccsbhyhurc[mheohludmokwwjx]bezowkrdzwhssgbvydq[kiwqvuebvywyegmdyy]ioskcrvqcagocnnh[zgttakbraxpcsqsc]hmmqufyflbmjlcciqvn
+ezmqplezxylckxcqjxn[pdzarngoyfbjgyxqxgt]yokricbfoocmehi[cffrwwrwhmilnyf]uaybztxphgccfuu
+xnjslvbmmapiwwpq[qmuxemavopeoiwnebts]xmrajpgpgeojtabumm[tbjjrgipnfzjafi]hcuirvleolclticur
+eltfnqblogwvtjgni[bjfxnnmgalahvpdtvku]eingohwswwabsbtb[nxsqsvleqobfpxlaxj]gfsbsvcbbnwtuktuw[wrgcswhmdtssvxobcu]wgsniklaxmadgnjd
+kxpuygixzfwrwzpzsbw[uqxqvvupyvvajkcysh]scshpiffohigsgm
+ovchugxbmthhhijq[fznmygfcqewzomfgbc]qczlousnoccgyrgs
+imtfinjttxvhtcll[xiqmbmrcqdxlvuf]pybqlwqezwrkvikns[usjydesemedszquseso]fhcgyicfbdrmgcnk
+aqnavkllyitzewgs[cbbqmbtgufuvcun]iugpkakfufksfitigk[lyqiierbjucxbvaux]szbwsttayzipkcdb
+yetucqvgffnvnxqx[pvgczfwkehnfqxawz]vfxegwcevafevvzx[ukcwxvnvfnqvxhfa]bdciuylrvfkmxyi
+yvachrqguvjhkrbe[rtlpuvvfdvmtqswiln]jcyqjdmtzndhrif
+rphybwiwiszwkkxm[waiaqtuthjgfgag]ttlnqhzfagaregyo
+unsmoewlzxuguuwu[dyqsnohyqcommmmov]jipyewobyjdzkgkgo[yphyanakgkgvybsx]pjtzynsvtltzzajc[iweuafprefmbuekk]rwelzzbkbqjwjrw
+kluxazqhqmcrvldfv[dbxzgwsfmxettwmgj]rgvfmxibxzbajitnud[vtlbsgrkhnfpmvvkp]pdycyraaqooszqa[eyliotjigekmtov]eiopplzmedvdvmwt
+mlozzkwmfcrdlvns[wsdduzxzfvlvldpjvgg]ywqncwocnslofij[sakivxaniergaouc]nzmhdlkxeiehdpuok[zfwtadjlizjcauurkq]vlvtdicnyhseqbeo
+ssfmkfdeguuaqdbyqub[nbobgowoboytefejnz]fplpuipnficejfsuid
+lljnuuistrsmsjazzy[vccsskujvdwxypuk]jhqjqhfatmuedugl[hufmsmgjutabctabusw]zcoiiovxkxtualjx[zdxdbmbibryrqaubxy]tyayojdxepcpmwi
+zursgksbdkuzemouhl[sekbvoxwlmumyrdh]yxafewnovnxivyp[ajjditfeeocipuvdl]ygsuxuhtqervumd
+suxzfxizhyzbovsz[dtamgkleqiesxemqkgl]vjuviztkxzchergyx[tvazaqnrstjbdts]wccoiceucunjiuus
+gongygcedfxwncy[lxtpoagiqvgiryasha]elmaiygycycdtsclhpf
+pkyqsmcicydbmdagw[ayulcaspxpbtnegeoou]welxvngiualigfefv[veqtcxgkgzveegxckee]djmbhovzjfexqaedywl[okzphpgdqtpicit]mistlyyaoyphetsxqxi
+uwrxhstckbebnlw[yhflbfhsqhshieo]dvmzzqknrjcnwixhgk[upxuqrlwzvvsgpa]bmnfpjynunfbwunupiv[mbcmrpoxtbzcbijmmu]icdxewwtwcibjotjf
+pscqchwjixrhpzprdla[nzfglspgwpsaiph]xtypkrtleiujsfmcso
+llcxlfghzjvyhgill[vtqyiyrwujkovfctkk]arbtetvtixtnyavydg[ozxyyroceqktxhpv]maekylkkwdbgwgug
+bzagcsgcadoffot[demvhzpdjthrniiuvj]nwwrkguuemsdtvspi[sququtlqggtpszucm]pqaqqxpssdgniycn[lkdwrbxkrkiqdxjc]bqngsdxlxxvxdvqww
+wijjgkptnkbnzpqr[zylewxhygsxcrlyi]nanyoaosbxahyvdsett[kojrflwbltrombqxo]lfdpaptujhwfgrrnf[slsmmogpspgpuwnce]sihedfdnqnejevnw
+nutyeltkszkulqpt[cpgdmqleitivdtr]veieyzmfjafragrcht[nzudyhtmpopacznkq]dmywgwmnrieiohcuf[ctbktcgxznhoqoxczzf]bqzffvqraxpjdcvt
+akgmlcznqnhncjknbp[bwdbsrdxqqmaavngjc]cwyygvcrkagmmrciout[nkpzkdmflljxczogs]mqkafcpxslquyrudeui[clvbdgnkrjdpptqwq]cyygmkgtftxvsbbbfgc
+fxlpnkdskynkosqpp[efnouhxslwitteqrtx]xjxojaxrbampbcknga[ugewjlmzbspxhtejamk]nrtflumsbbtkejw
+vzrzmtwbxwfhyjvcmft[wrdvmieyzckycagwma]izyptswwlzgivtgyfd[jaujtzdzregakjk]cjdnelesxnhmgkqsgs[tjcsmxghgtmstejjhb]tzqsgoiospxadncn
+okgjhnzaxrtektb[sleqpxoqckdrsiwi]jzthxxszazdahvhq[mgxzdqnfscpqdoykr]doyvhvnmbshvkcib[jtrsntjktunoxxn]rmejgievrkrxaziux
+fodknkictemsxiicght[tdltamcatgnknki]hzdspvkbgipuvnb
+xhhmaiussrmwaxcpoq[agyegtzmrcgdrqiiv]akuxocgoidnfmkffroz[lkkfnmgryejzyvjh]ozdzcbsfmllaiyclho[vseayejwmotjhccg]qfqchpalcnaweyo
+imdrphyleudnvhc[lzqochrdcjotjojk]cwsqzuwoflalwatlsd[ctefovkyinrjchrwdav]cmnbuqveexpaxmhi
+vckjhzrdtpyynzbdsad[ehjwlyfbffzszrx]aizjcopfbdgrrtei
+vfkpxnrqufijmniu[wnwtwpmgtjonykmcsp]mhehavmuivmxhdelxa[spyybveheykroybw]bfzudojcjhzckbac
+egipucceijeltfoz[jpyjfgsqdywwjillf]kltttxmvrepsures[asbzcnwdqvfkfkiqqs]usnadxpcdxpjnifm
+svsbijigntdtxph[fabzbljmijzwvjlac]kieomhcpodzimrmqoc[xusohhfobyruazi]wxkjzzpskukqjirtjc[iwqdjijjucrslihqpo]faezwwmpfpxenvp
+sbjgcnwomllqwavkviw[pxekvxjtjbgjuouft]puzjbrwmyzsxclgmqsb[vtpnaljnxkgwlryjo]lhqzwvnpkzsdndp
+fyfyvifiocceoozl[dmjxamblfosaizav]smoyhjbuffpgqdl
+tlbdacsdiavtwucvf[npepgjenhdkgfavbn]hvbffufjyehpsoa[xghicdcxptmipfxlz]lvducqyymcqkket
+nuystaihvpelybkvch[rlqyflvholahkcxw]gicdfjzhwwocfejthx[jpeuakotyanntiw]sfsavxuyyulvuluyur[asngaxekprpfzsvxx]rliayxmjvsrnizh
+axquvvjwulrntbzzf[fddxxjwbdaecbsderd]vjtqwpjlhbdhxjoh
+cgeyfvgczhhwbdz[kgsqgnalsysssiyhqp]wqzhbjvykeuyjxgfzgg[mqkzclianfnifjdql]vbeyhsxsfmoeanpnipa[sxmzlhgrezqxsxzzcku]gwmgkijugjwtutmgj
+nnjlbnnasmuhskqu[shbjjccjlumeuigoim]ndwzzmbtazttjpawtzl[cnkpifihvkmsallifij]ccpzfojfxszmytbd[jtcogseximfojmjm]bgdltwjrqciyqfifkh
+pkdqnzhjzcttkackdba[mucwutymaybynvttts]nndhioamrjejmibag[fndcrctykpehoglop]rgxjwrpzlqapjsv
+nccuyvrhzyszqnw[ogdgzsefffyfoenfh]jnqnhnyoyrcnrowjmpv[wmlihztaoyedgkg]vneeegnosrxphish[uwrmezbsmqbxjpx]jgfoinwzlhyixzjzv
+kriqecrnaeujvuzw[lruowheuwnintaqqxcl]kcopdidcqinihhmk
+vxkblgxcmztnphdzf[ysjhxgovujrpagndi]ezgjwgowcdkfcstfhr[hpxrabjwpymyaolp]itcthqpgksvedadl[stfrippovsfrwglisp]eodicmiszqhwnuymlgn
+jznqrbdgjcokdqdlser[xemhfhnwbftgxgjukrf]mhcovplrxcsixrh[xyswalpqqvgsvmqvx]kjeuyxksnmydfkakhq[zcaydzhceioawvrlsm]wzezpqlhvwcgzjzigtn
+vedqtirgwrgutas[eegbxmhgykfrwrwy]pzslegjrbmdmeub
+lespviexybwomljka[dxvrexedlclnaurw]wzevexsobirvepgpmt[rseoofjlimvxwro]cyojbkugwdzjlxsqd
+fsdyxosfmlqfwoqpy[mwypxaxulrbjsfi]ghywyebrmgjsrshgc[lggfwxlpovrwthxtlln]zmtqqhkwabuhvtnabwh
+smsgvpvsfaxhocsyz[hgbjpapisxsillo]qsgxbvoijxlwhxpt
+fyfpxellnptlqfxvdn[hpopfkwhgcbjoze]sopowsrtqgbpysjfz
+qenbpbnrikfrnwpq[nmkndzwogcgtzhm]zhuslfffixielmjaqpb[dtmldnpqizrcbxixto]wpspaoprebgbksq
+vhjgpbgdoeoljigkqde[aqojnqwgpiredyffb]vmlvnnohhbwzouwi[rldlmezoquqcodxghov]bhwnyaxsnyyihhgv[gjjezirrmfvkpvfayb]uaxxuikjcwppslge
+fnwyhfrnoxxjpubwe[rflutoqwauqbztk]tmbmyhpncgpkzcqvv[dgksjzbgbuzlozns]psdmkqjzxdwvllstru
+vnrsujzctbuqnbu[glgsyfmfeuoloohqp]ybhziayoqxsbopf[vtwnbpqxhgsfguztg]xhgvtoqwouusyahedc[zcchxnllferklyt]avgtwloloznygrb
+rojtxmpwxsledhm[xibuxgovbxiejlegyc]xihwoxmzghhwlsthiou[ywkngtjxrhhozglwo]zfncywcurhmsfxxqjbt
+vxoojfqikhnbnrh[trdtiatykaontxlv]xenfwokorxaeweoz[itbylohijtfjgdtmkvc]butficisomglwjzaa
+wkofaduihyxhiyrvjs[deskgjgenvxxxupntfl]ralmugesymrxreommk
+ozsnpcdvkykxguzltcp[caargzwxildtwswp]capkmhbfpfmdegigg[sigilgehfnfxlza]trtpmbccrrkpggioz
+pfuhqwjjgyzbbea[yexwnbudioaikfsqlca]vaobiurftgeglgrzl[thjpurqfzaezqxfajme]seuekovcvvtdmlixf[mknpvkntvdftjhhhfgh]dlgqajapwlgdjnwybp
+jbtzwsypehgrmzeg[gwskjuqbwedzxfcehr]xpkfcuejevonsinxs[upnrxgjqhohlyeyp]dsyhrudzqsibolxnvw
+skjjsxxumbobzsckqk[sqlnqpubrayffzs]hseibigmtjtcgbav[khvlknemnqiekxy]fkzvtfscvoatsfqrd
+dozlslrkuemgbykifp[bzvnluuiqdffwtf]tignkmwpnqrnmefaqm
+ppxwcouehvqfwoenqo[rzmtyyvedmojatvvq]efcstfsjslpqdzvhb[tvmkwnuxestqxfockv]oqskydohbmayshfcihw[pfyulawxqbaiehqvmwi]wluhmctgrkjxqtlmp
+uvqfjimhzqboivo[buuulgcbqgfsbup]wqnbktwxwslvceegi
+muiuadioyfirjks[xviqxaavhdxjkkccmrx]weauetgyttscsfwv[rzgaefcngzklpjqzgeh]jtnbnuuvbnbjhdqn[idjpczmrbomwipkv]vbgcjfvyvnxhdsmycx
+hmdflkjbenjynzdmeqj[ybyntwgyyptizunn]ctijqxbybwarmfzpit
+khhocslzxicmlxk[xssahaneujvceofaiyh]swrjwipkknbnrrrig
+dvjvkhnqyifqzse[myleyunwsupcnfagq]tmtuvqikqxzdskqcgxp[lblzunblboznidegkla]eaqhztxpgjuijohkdru
+mqcasrzjqmhwbhbuyc[wkfahpqjhtwuiybqae]yzfcavhtmzofqww[goqblpzkmfxynuzm]bysjxjeocperndv[uwpxvnpxqhfnaalchm]lyfynynkovtmfsi
+wnczxavmjnfgogv[oyjxcsvrrgtpkponga]gzhjlzgxxjkoklgm[hsrwppehbugkcap]zayfyoqorpxefqenxc[apojyrhryhfnmksa]uwnuxprqfxnkzkhnbji
+iylrycmvbhpowmdvwy[oepptahrmhsoiskeoq]vtqctnyinxvrvlpl
+iauhsxbjgxiebvfhbw[mnjywcztqiajiqxx]iikcygxzeprjwkoniqj[tqycczkvsvlsjetec]mwrnosvszjhmuoiyzxw[klgtgkaxohfaogm]fsxjsgwondgzpdrbbcl
+bfqtwsviccqwndca[juqvrcznrlghmsiz]yttbexwewvvoehurkrv[mkugsxdrbaktcqf]yrqebvyxlcqjwcewg
+ytoteijopgxfmiokatn[oppmfhkktlewhlq]erycfxfafsiicbtx
+xlwbkbenrohodfnmuv[zarnezgnivnmged]vyumskttvpderhzbimc[hvbbjegwdeeqtam]fopblbizbmbhzfsdnzm
+rgmnnwzikyanthhp[nvnhsgdymtjeqzurz]mbqxtvwhpggnbcq[apeorjqexywhszrno]qaxdcaysefnpyviduz
+vjaljdyyoihduumfo[bpufjkyqjvxoprdwrr]ccjbldnkbzezeznmkpu
+yhbnzbxqrvzrguxcbss[unzjeicvhgqtwek]obuccrvnajbvkcmkzh[futhsovnghajatalva]humwbgtpqzjgordah[kvxmlpebzsitmnjfnz]olxhcyqkvfkqdxdc
+gsojkejbnpgptcgeubr[lgjcwaotpdouravq]neezbmtkclvcvkqncw
+qqdvpngddzjwase[rtgandojrzcpohlpknx]qdnxpiawdlklkscmpa[qtpzakubrncjzbpr]efpxwdvobcigtpu
+boxlzukkqchmqrrpgk[ggylyipkjdmbjfp]dkckhhgapbgpmygpa[yfetxkcehafknkmk]acqmjcsvxzptstswuj[atrjixpyeqordilgj]eccoowxhivjiljegqm
+exjgzzncnnehrto[qnhzvdfprbarmtdpp]rcdxdswituqgnsix
+tokldrsfwqqhetyw[muqzhystnflncxm]pjpmtwcamluvvvdsu[mpfvycofrzebemw]mcyzcqfngdrjaioxzda
+pqhnhcbjoqjvgqh[vqkgnojpmbawemi]lampvrpcpvxludprfuj
+vbdpihaehliobsbciw[cpaudttavwxkfpg]aidtxeypckfsagubro[fpaiuhpggzpxsctw]danwtjnlhrbfipgfbq
+beoecqatqkztrbevt[bdqoxnitxmdqunizj]lgquhovsnjuxqaml[vyfylkbhnsdjoezm]ediekdjfsnsodqep
+cnaisicaronpqbihlv[ajfhzrpysjdkxqpql]dfznlmsbuozjlqvf
+jbgsemiqgxmtwmdulu[ulbyoughrbpthdlvmvm]dyrxsdesjjwwfmvmkf[gogkkkefuecieipe]nimswajpymtzyleew
+haavjxuwhbfxlhfx[rssbpwlffrpnsse]chremerememjcbfuv
+losdtsrwrdvwzbjf[daaxdqsorbsgznm]miovihloamfmovzruxk[horqrumrdnjorfw]shihudanlgqfzjf[kqkwshgnrpwudohanr]yohqqtcywhqawfhi
+trrbdodxpewxgcyryk[limhtndawxliixkkq]ivxmixrjddqlmounj[cfhqatncyqijnvjv]djqfccmuvdnsylo
+yfdgkwopvrudzsww[gnyyumqxrftncsfuaaw]zfiekmyvpseaugfwss[etzbbabtbkdtgbwf]djmbswwpvfsowmqdlw[lpbkaarutdlovoptrke]ukztythdiepqgemm
+huwfnhilneqaecp[hdcrdcipgcaxtbfouo]poacbxvuqwkcilkb[dnpryjlynwgzbrnbc]hxillsnqqraloociaqc[uoyktvkfxkdkdopnbk]qvjeuapououufksmwse
+lfbrqypxgthlyxqzywe[pcxfduxttmzaxtr]gidsxacxodigyok[qyaamzuhjqqnpdsii]apgfypwqjpygzmdtpj
+prkahitlcoynnubnri[rqthrhhudrvryoea]urkuwyabxskqbsyfgm[dyagznreglcdincwie]okvqdhlixssurnd
+qrwefbcelgjgpzoe[aedkjvzurwcrhdimb]eaxqgpvkewmjynmek[nmfyhryoglbtdgq]dfnecedmtcrkfyq[omndbxvzczgnojpl]trcocwxxczcxrvjjce
+pphzgbbfbqmhbysodv[znbyvvkjlacgjrwlnkr]iyjpdjsjryyqsoblbyf
+lziqyyfhruzfpwy[upekwttdqzjxspfzcmw]ptdaapvzenixlab[wvsdrswafuftmysocc]ykzygszayfmgenk[mylrsdifhepnnsst]tqrbrvifghuesad
+jwfyweiiqvjfkvp[gsmzrlbjdpgqtbjakw]oofharmppecdotcw[dencjxxfrzxbuku]ygflsusvcrcdznc[fmcercvqncnxcbbwcrn]lkxshvdqjairdnnpz
+mfspfyoqeyalvzx[zwdzwlsmnktynntn]eeogyyanaydeykwd
+gvwvweokjzagobku[ixdetnocslayahccde]juncfldivihwfpee[mcpxioooaydtjmojwm]satqvbxfkxhfdrgoin
+yncjgygznetzrrh[uzkbwhtbtkrcxcveik]gehtfqltpixmsuami[nqhxycgquaihujx]ndtusluyzjwufzdh[ppvannvzrnncxpcfbyy]kgitvwtucjasvtk
+feushnbxghbeqsu[utnmthhouoazgbym]jmplltesvrbrllei
+ijwbtaksbikedfm[gjckpcivddahwkp]kubvhiqvktkkijchj[qocdkdejflyyzwukfrh]qlnixtictiubnfhvv[ygbwjbjxtvfevjug]dclcjonutlwyqaxx
+vqtafpvexofwcfssx[zmlfsfqivipeumubau]moqspxvivckaesffn
+hphwnfopanasosexay[ddmqqktxkrurcry]slvhqigvbwonriydzb[ynanjunpszocqrjqm]fkdtvygiiddygcrg[jgumgpiumyhktlhoeom]dkvwoureblktplcjmi
+skxhzizzzfrfausiz[nakguftuobnmkoz]buzexokukfscgmmfru[jhpsafmtolwlhvkhs]hznyqntiienjmspy
+ccxuwxzdxtfwbpie[shhongtetcwukjbre]nufocpasneteinfkk
+apfhilvripbjswmig[tzmvefmwonqiqdyt]szdbbwkkgaqmjkhpuu
+gmqjznmtepctxpcfnx[eezqztmqxceenmds]avqugeuarwprizij[uumhklvgcrkfozd]goypuraafiwdcvq[zueuogjqbnsqmjfmxbn]ahgjvoxojaumver
+payebfjnonvscnr[nzubpmedfuvkiwqkycu]cvsjgdyfvzippxu[gmiawxppknjjmvm]spdngdktoclylmo
+ruhhexcfvomrhibmoux[cjkryzqtfkckieyzuu]vkwptpezjrouirxq[sggqhkgstdzqikfnxk]zxfgbatfizeivfkjbl
+qqizwnfaajabeuskjdu[szujizggsbdhvihk]wxjmzdiqugjylejfu[dfygnnvhbvghhyuzo]yeaepigfgdcxbav[schlmqwlcifeqjhixs]ifaxsbjyirgfmwkaott
+erxreojjauvvlbsxomv[xaneipervgreexmp]itfaxjxrwueyrynk
+lgzbkiqfbgvdnyt[milmskrelgdjggvtmsv]clolytrsgczyppvrhkf
+ryvrtxkdydhujxapwjw[ohgtjdaeifxzuhoqc]yflsxucxibqkcpft
+srtfcyyruyxzxum[ygeoeyfnlufgsjxjm]ifwimooynxbrsxmyk
+rqbnowuwuernuxpim[zzumupyxvnbnngmc]uwurpinkjmkckxx
+ikzheexqxrfttoy[uwegndkenfvosfpm]acomhjgdgbuelap
+srookpxqmghokjoegi[lhpppxjenrjqiri]mjlixhnrirctrsupv
+onuiajxptpjwixyvp[otlnjwravarqmepwyd]hmnvzsflzeyrlxgpwwh
+jmpskqdlbuorcpwpqj[sxwomhbdyomudfaisda]nvzxtvytsrqqxbsug
+lohoirsglnfzmslubqc[pxhygduybnlqemp]eulzazwozzqytmn[joeiaeuczyygjtg]tnowqyhlrtmumjyrkp[lidmrorxkpcajufzib]ixxyjcoocfdgzjbhhl
+tmixfdhagahaqeers[ruioctblczdbnusokt]orpjrznwojfxnheoqbj[gbgyexwumyintxi]tznnvbemvedlpriyu[ibseuzmfqmroeeawur]tkggtpbcgdthcpo
+psnbkiuzotsmeklinng[qhigmmuxrpjmhuhxt]urvnxarbhbsouap[chfgrdkbxmgqzdccv]lbopbgjsbykugbzfp
+qcneczsyljovqwlnjz[mntyylfgsuvpjdp]osrpdqguiouevrdq
+xvfraxzgsypwfmswwwu[oyrmndtdginkvlzdid]xgtwrddwmukzxypxl[mcjxgiimlmsnizirzt]gliezwdntsgoxznesl[vwypsvpvcaeyzivjo]zigujupypwjqljxaie
+xayweakpavlylgjl[hxjyhvqwnyixcesj]yuhyulfybuhvqiinlso[eyopyetglenvqzqhnqr]mqcovyockdqdqvfer
+sovuasutixukkuuxn[jlvxhosfgqjcxnlmxql]bekpnvhdbyhmmvdhplp[xohnfpbaeqpbfnfi]eobpufxrrjaajjd[snnfnhoikinfhioa]syhkocukumqrwcgw
+vhgyxqcvafubikvakos[jfivvuhbnehuqbeyu]dwezavodqhdmujzc[naepoqzmbtiraxhskf]bwuozbexnzmpukgu[zyzfttszjkatnovj]sgkrklrsnjzduvvjans
+yplxqjomjxguqxjjix[mvtzncrxfvzjofx]wlhvxxzsdcfptbse
+ddqjeqgctjkvwge[cbgnejudebflhpm]ryzxhqqixwsoztz[hxszfpgrjuxxipt]zuvvwbmdvqbqihy[gjfkxykdstapfhu]bzprrjdyjlljxnxb
+xbnilldcerusgpejs[pvldiyrckxtgoesbti]ljqvtntbhxrryxcka[gdqkfyumjhgbzzwlvfi]uekphsrzawxriyei
+egwrxuedgpcppavzt[mbblqsizmrxdwdrio]dzozhiodhtlvmrjcygh[gdzijmqhitlbhfw]ewvkussgmsnietkiv
+oraksmkemjiapbdvqxc[vvgximcdecwxmpbjsr]breycrlgdwgnbjy[oqqtlhrvdyqesttwieg]dksvmqwavamfdma[fndgywlwmsmaivduv]mfweojoshjwolwla
+pqpeytynxunxdfyxrmr[krtrvrufaemrmit]kcgnivmpvqoagjmharc[pvkuwynulvvuqkif]mvbbgwnmngtralbe
+nsacyqfpikkoqqxp[jdcdddcdcylpjiled]jstcntnjxszhichrkw[vzfusiwojvrjzhevjm]lywsheganczawtqb
+rtcpdankaboogxhbqj[vfamnogaxasxdiiizk]whpyanngpggqutan
+qlxjojmpesvehkggt[flysjbaoiorosmpzcl]wgpxurstlnopucd[ewkgadgmllrewtwse]icnqidtfsqjurnkw
+oifarludgzqkwtdm[jvoeypeqpfivakqyj]dtcboyxnhejlitz
+npkttburtggvbsfuiwo[wvklzpiffhreyxkz]uhuynxjezspazaudse
+etaapuxqbavybsp[mndpkefjvjupccx]pdcnnncxtrzfvlnmq[ioehzamymeougocos]hcuxkuwhwvjvysbwdo
+fjrsuygcrtpzjsw[rhfrgfnkhajlqtqdp]hftckgnarcgoyfkmimd[hkldanmovhazpcpwhl]qomxfqqhkcuqhibrl[tpbrlhcndgbxuuzdng]knqmgdkpbljyufzazki
+zydstadkygzvjmxdhu[qtgaglwyzqncfbds]dqwbpmopxmdtkkcj[dcakbjdwzlglkpndtb]nijwetvoulkydqukzn
+hbxhybosbnopyxpnnz[juewibpcgkchnerk]pvdtzqclnvdbmwjk[wmtpskdcqiiythces]kbhxnzcnjxhnkuxwft[yetvomdrmxarjwsumqv]pgumogczlkgoiyn
+zaeaejxwpzbqtjiutt[eqjjobopoyuoxymtvb]glxzffwpiwoqcciyul
+rqrvuzjvcgaancl[pmxugkapydtxezz]lihcobqbdqenjmxyn[aemdyhmkusmchckzqnp]tgiijsdtqtqomptveju[mvaiexukertbkyinjc]pjuulfqsxhbpdiy
+jjygzflwfyeiecuztx[yrziwmbdidxrjsouxen]bqkyguqcejsvrkn[hzipqxzodrnsozfmta]xvtakmgzpstbsivyt[ieiucrjmzeupsprslje]iquppghgxqhosvjzc
+dwprarljcykiecn[wvdjaraappnffzsih]difkjyzhcyzgzjl
+shsrycjlblbrcpv[drktygzuxbooshwhute]fanflcwacerdevozor[feybgvfyookhlsoivd]ixzfmefkgvcdnxqvy
+rgogoobzbggsbeynx[nlnbqvcwdyzkbaa]prjegdbkocptzducz[tjanhuiieffrdspjf]bhhziiqbzdlkdmj
+yslioeknctqgcwk[szhjocwzxxkbdoykvjj]aowmmepratdcjkgwjhe
+yrfhkqrnxzzyvrocav[rqyqhvtneezcivu]hunxsvslxgfzevsvvw[pyyclulboseqorxoihs]akjsixprdzbyqlbupi
+tcapvmyxklqgewra[pwxrpoxdptxemahbrot]ncwuxwfzukwcatres[ftlzvkapguezyhnsgl]ermejyvoisweiqvi[wynjqudtjghztati]vhpdjconbhhejafgfu
+qkqbjylknnexhcziot[lwjbulvorpdzrhddlm]mvvmstxnwigtstskoo
+wncbdjbvzjvrrunb[riirhteyuokxshfmxed]sdcpacarelkhxkt
+xxcromhxgxqeokih[xxcnkwhvsylkpfbsj]xipnqesaslmeqsnu[rmzahgumualwizqnf]mutxgygzbvgkimvab[jypnhvoztklxkxyzsr]qhuxxsuvigbloux
+yenrilcccypxerlso[dttyspegodnpefcpg]mdhfzxgyoxozmgi
+jndnuwbhvaciqduyfg[xoeqacufaixieedbtnz]mpkkivmhxwxujcn
+majifpotxhylyshir[mhcapgzvvwadphfid]rjaoxsvqlqyvqgtxte
+imhzefgngckhvgqcjr[zysfanhwbnqzysui]zgogpzkcgjeigcwpv[jtxumxvjpotihpmb]zuuueogbabahhwa
+ijrqngygldyukndxhqw[xlcwaqfuzjigxddxjn]mcuyklxezeidilnl[atvcyujrcexfnknulm]txxgigzthrbbqna
+dvhqjqbgudpghndlvu[drhjjaxeomuoxxnagyp]dbeymfmzzevjydlzk[gklvfdcdfmnfvfslpfn]kssctqoyxognwiem[aojhwzwnegpnydzywor]eyrhiouwbqfpeoto
+xznkczuhsgldtilz[fhdcsnfixqbysff]ppbqiltpbrlhjliz
+zkfgueqzataygeavus[nymgcgakmtuwnkidr]ypuhovawsbnmlmpo
+lnjbdjnhhqeifmi[diompfqeocwmuqi]kdawxfqtkschlgnh[fsmxaerroipesmywqa]vqpxljxwpzudocn[sffzifosvfuytvdzb]fjqfwikuqzhzuthxzq
+ecyyeabjhjrfbdqy[xpqhxzehjkjhotrdlk]ztrkutdijjkmgzkuci[hwdxdsprkacxjrjjtxw]fbhbrjzwubhgjdwvpjy[vppgvmthaqkgzrzva]xuhyvaytyufxrkgeb
+tbeqtxhfqbbdrvwn[juqpksgrfsbsqdx]znceqzwqsfrhavmetys[khetxkkpwfmkmlvc]hazxybkgkzrmbtqshz[yavtnkwhxppnqwzwj]hgabdrxubvyvgniz
+rwvvgwyfgincgkurooy[wxcmmmkqpmtghmmltt]kgtqowxiyjbepqnkiyu[iofgybnjrqtngltajvq]mxsbhbkhddqnfowxw[ptqpbwojwfhhqyv]ymflkhgfnlagbxddzr
+lybbfxollocxnfxfeba[tvjolzzkenoxfxqrocd]vkgswdtqpilvbixss
+yurvqideiuqwekwop[gxsoytqhoasfouiasm]fyhiugkvhkbcfcshkzb
+rurapcltqwutrslalpe[wsqprvdmmtohamza]xmkzqeajamyurualky
+buprncslromlgznqper[xjefyfgkufdkspph]wjncmqpgmnjzmjbqc[miovfouyxitayfs]gtrmwhvmgcliwegeg[owvnsvmazybubxfrp]cdjevcehzrminnc
+uxhqucibxiemlbtg[dyshtfhtlbjreji]ilgubuujgmytfxeqzrh[zahfdfyzbhexldxg]yohfxkodjqfdzqe
+kqcxiuftivavvdv[rbijqqjbhpdcrtpcy]dijrgcyuoqfzronrfps[knxiljzdtvauitad]hohafhoofjhhhppkr
+vbanudfbhmhpqsdpdgw[ksrnxrccuenustesws]bgiuwlkckvdplqygpi[ivyzkermofckkcotkj]mhjspcpkcwsbisbve[mlmgilflysuxqmzwp]afixxyabstclpunrya
+mnniaptautqeenvmog[wfqrhlcbcwqhwzj]ccouhkyhrvdcbilshrw
+zankwrrkgkejsfiwcox[gcxocohqugmgpfoea]cfpphqzxdllapiaxu[ckfcklaedfbhgino]pwdqreudlymfoif[nkaiutnpwnsfrbzqyuc]mscstkuwovgypqtta
+dhhvqxovlmkpzsg[loljkdtjkdhgawrpi]ggnnhvbpshpwoloac
+wjepglephkicsoti[lvcfarizbzsudio]httbqobbfjoomntye[rrlwtyngtpvffaanlpw]moqdodrnstpwmhjrw[ujoowvjwddvlqqbbzbt]alyeqayozgbhtpsni
+okuneqgdkcjggazki[ebqvcuzvuqlvptuoqf]wvcvzlzipmoamnvjt[dncwvnvagpitnxtjo]oadxpnnqonbrrarqn[ruogikvmdiporivvzm]vicubwgqcblvvop
+iqwlvhjhfrfeayiclzb[mkafugqikswvpqehb]ezlojhjvdoyzwmggb[mncadipbeamkzbndk]kpewfgsurwlikle
+ewpiriwkjrgicwzfxck[iazlrpnsiynlmfi]srfoarhvphakmcyke
+faalgogxxzuylnk[zsgporpeqifzknzz]mjkbrrvswlbgdwhmlgd[mxfiiekevaaosozya]klhonreqfikygbmf[hhgfoolpnquxfxoazy]vcxscuxdbvevulug
+curbpzpilaczuowrsi[wmyxdecknwrspllfhpl]quuvzoiqziuotvfl
+kugdhavlhuperwafe[ecuvibachziwzefzn]oyhrdjgmqqauqhhg
+kcbawjisdirrwzv[fugffzgwmricsypdz]bouoevvlaykmgve[glivzpgoripmcnqv]bsmuvtuxrrzjaxko
+oyaxoumybizeabdg[quusffkxbmxajbni]lxxqjhqcajdkqszr[cpgzcteolyloguchf]zxowxsyvudncstwk
+xmlnrjsanwjmizgawvk[wlyncljroxswzsmd]waxcvfcwftjxbqxpmvr[spiqjeqpfxanegjxf]sxzszkcgibvfkgtozy[nmhjzcaophbfpil]nrwfxurekvqndbzw
+xunbkhekkwyvgcerevv[bgjzbkihvzlnnpptr]huqryhbrkspzxusu[dmrytcqghtbbhhzu]lasujmpjaobcnfj[ebofoyovhhzsprycn]belltiuhimwgwqek
+ocgmydyjloxpbsyj[wuhymkumnwwcdprxc]ncmkmnedztlutaw
+lyuydomeinqxrex[gukhcsjakylfwqodm]hdghwpfhnwjtmafqt[lqwtforyrybxbbh]fgyfkgvzyooifxa[kgxkzeuijywgdhuryra]dohlilkbkqzjsbx
+zgckhhqwhgctoun[ajftizwahkaxzich]wacumictegcbysyn[zzxxwgjdzicxreegal]pwquqtaijwqpkistf[vbombdxhjxwlboqdbqh]hfyfujedxzoceqewhgt
+rcpaadoewdfxoksbiuf[cmcgotvayrjllxgtm]pmkfrygwrzuobudsah[gonfdimjagiyayni]ctrukcwixqczltol
+jrehwmakkkobozzwrn[beoievlwkmkusjzangv]djpjbtpjpdcjsmopzpw
+zsgrycgmryfdzqyfj[yipsuqvzrujoaqga]khjrvsadupzwwoasmp[bdpwsunstwzgzawlu]wxaqnorkgypawanoso[iknpjxzhmqermgl]zcsakkbrkkaimtnya
+uyuzptbpmmukyrpd[vmbrbmpgvxdxryzcpbb]ltybhrruutchwbuuicv
+ddaeptwdykjibuffjh[ufzsfgmcffyxyyywdu]vrdexhgwtdlczpc
+csivzntivihwomh[nprwknojctjnkov]uzridiquzokufgzgjs
+gcpleovxfcyyeme[crpzfylaxfpuecz]zoomnthfoptieor[ycybuegqfkhlupplwb]qjmvwbggqxwgeuneph
+vwqdvgzzotnnsydivip[ohjqzjuzxyncdbenf]suwfgrjkasvyhzbtfo[qfalzqxllbjohnzvgj]mtkkcwoapdjaysfyono[yqdgnieatutxldqyosk]debyxvqoatdeibyy
+lhljheobdtmdowhx[lrxkzhxzdjmemintrq]jecllyatwkrhfxru
+howoydpdchixptjqapd[nuwrazvltwkshpvlg]havqlubvtfkhsmxwxew
+uwapzmqskzwiiqx[xtyqrsajsrljaajwedl]dgcalrxxdsfhqfdie[svghimwbcbmxqtqhjn]akqfoppjhaadsdbela
+slbymelmqscfinxle[ahjtgvzldgftnkehsr]vaqtlbhritaotaxvhpg[chcyoduevjsyehz]jncoccdngssgteldzq
+mmkzxzkatapuuwwv[odomzyzveadmmicfb]eiptpqypfvfroxu[bxfgwaezkjrbpim]hvfvtenhpyqiohxj
+jetnikaiyuylckwz[vonvdfgbgfxrvjzluaj]zpmcyjvkwghaiuxic[irxghevzlcccxfcrf]xicbllnxpzlcmqbgm
+chvpdcrevaqnstnw[sofvzfabefeacnniokj]qdasdxrscvlmwcchq[kcpxsnydjsoviwwy]bkdprrvzdinwsfxkien
+cwoamgnaytsfeccbqb[vyysuocjjhfoixrtmpr]junwfwadfbyukyvnw[lcwtmcbwdkrqngvqi]vevlawxbwoqcibmtk
+seboazoqdqpckthgk[psehbzatcusxwqa]tiwgrqjikjzwabuufp
+ouwlbqhczqgbljktjy[bubtiannyvmvkekhwbg]xvrlrmkjwkhzjjlia
+vatnmtxixznyvdvt[ftzepafpamiqpjulci]izhqwdhnqpyppuqiv[mjqocpfxdfcgpgmk]yirocnwnrzchhvrbfb
+eehvjfqvnwplppeg[mntocrytmuzmuvc]zsfcohpjfqdrtfbbbh[bqhzekffwgpwsbxd]zlhxmhjluxrjmpwkyc[imisxjdmeqavdvztbd]tjlwasbwbrddpqpgwq
+ygjdaucrxaqjcjj[zaunyucvccyhgomr]ifczoiwclbaryopmfa[ihkdhvovnvujtbasuip]mabqxvuzswimbitoy
+shzlhbrvjjzpyxfqgus[ykurcdmtryyccnysxi]sypivgjjgkngrxs[rkavyufibjkqetgld]foqdqcpatgctaehxi[jpnwjyafgkdytef]apehakogeatmfyalzr
+kithfcpkwdhgqjohr[vvpujusooxkdrmbcoo]tuzaiinsycjujjuw[fqdhhizbifrkpjxgyb]rddsmqvmitgdywh
+gngbozbqsfrigmuq[euutspovzyvfbgp]gobfhihxxwpndpaggx
+dctfsuzvpvttqpgppw[dnilcstcsxxkvwdsu]zqzgahpihqrhohqdtst[eoaatnenejvvuloknf]xwneniznbkjolnouj[gslnbvbmlwerbwvdti]jovdchklafrsncadr
+mdgpetsnkaddebh[gypkuqwwtjrzrhi]eyfbmxbyafuenmjdfvs
+nmkfscflwwiyxhzgzw[cixmvcvloqdyuikk]jprtrqwqtbrnksnxh[tngpiloomzgdmpryl]gwvmzbcftuthxvyqutu
+zkpdrykxtfvqneh[pxvjsvutuauoeducg]iduhzedqopyfgxjwpl[tmzqjdffcpzytkg]zvwkvgwmfhbqklyvai[scusvxtyjacnqtkany]xqsylxxrbgvudrdxd
+dbgodepvweaspcsam[vnqcsulaljbjrygsgv]gmfdwebiufbqkaofraq[unbumchixaeviclyqbn]ekpfqosiklnpdjrjq[nlcbhutxymbumqmwh]svtcirskdgbhfjr
+wpvcqnrvyjvfkfpclz[wogcckufvzviggf]oulptksetgaaholu[dwwcwhkktrhgkahbs]sobrvezzrrzvlihicw
+xlcqxbbegaulczmzw[xcllvvmlrdiamavgvh]fgipexbodvwutyt[pwhoyusimtkyswrc]mxtrsgpuxsjcqmb
+euzbhyalpjhxfawzyj[kqcqpulvktfqwccr]etzsqjqzeosiarij[kinbhoflquwkkobs]jvcmusgezydgutda
+lpxgexsvlfylfjva[wnzhqafvnbcbcoy]wevgfhsjrkdgvnbta[mvmabgghwicirugb]ctcyjxzknsnpxixkc
+hkkbtbsnyzrlsuyhwov[iurtqidtzfwtfhiltt]wokyylscmppxsdqtnns[swtohjqkqnmzxon]mthgkxltaceszxm
+jernxnsovguhkpljxce[twgyaawrcpjpnxp]rvjtstsecwlieaeblp[tihicijqmcrggggrjo]igcnuyrhtaooygb[ntscsypsxaeatyj]aslpawlvpctyjzwxhw
+xoooyfocrwvsumzzywf[rdovvrfjqhtuiro]eudcowqfnmcvpkdpv[hdyyadaesuxiykkiztt]ykgxpvfilimofxfj[ittajdlxgptkzqt]djtaivnjndcktuvd
+usxiyxinxwkgmdmjlq[quaspjeawvvlagjmla]sucqobcfnryoftyttwk[knzzgsqjkwlybeebxrg]juprtecqapdfbkk
+jsbpwwkgsmydnreqkd[abmspggfxrehkgk]nzhjbpwxrvuwrsnilmj[qqtarhezcecijunbk]fzskmnquqoivtsaxym
+mgekjguhkwyfdcse[ydcdycgmcbzvpkesg]yuzqagwvmncdcia
+wrqntmycrllbddv[fzewvpbxklyccfkqsed]czcxxkwfeberluvi[iupovtrukptjstnkex]sukvpgublggqzbecwz[rabiytcgypowllw]dfitoowyhfxjteip
+wlqzetmtxlrkydh[dbgzuittqekewyc]vsrigjcntogidwtft[hscoyacwvjejmwxxv]vpljhuinywgbjnynxhj
+ydpusekwzovghcojdp[dqycroxflpnyqpnai]znbszhqqfkdbrwzrxr
+uzfunassiuljodnjr[tzrbcvrfieeocdcn]bmsircirorbtgydp[wcxinsnngyykaaavhk]xxqbherleuhjskfyu[wfklhczmivpuooytgz]fzxxivrumhumdcdt
+mshsdecfbmkjmbrx[fdhjzahrcoydrvqg]stkkbwrlhhnjzts
+nmbyxmysrbuejutpzn[ruyrvzgagqgybiqsn]atkbnawkdkildlbg[trjlpfbjomgxvvmzowo]gbmfxqgecnzrwowcm
+rtiylcxgfuqngjkyny[mgidqfnevlylaukbwts]vcejabirnbonrowlea[cancfhwbwdlklwo]ifsehqpalixvinbsr
+ifyzslyhrydfxbsb[nigcfrqizdtzetpncxt]svvmxecfemwefpgduln
+rtzslwquokcygmdws[wvblnifrxmomsmdwtx]scpjyfputxvatko[mffinnpsxezowdl]bsmsjqeowsoobewko
+zllghkuucklrmwy[ylrocgxqrlkdkotl]gmmdzctugnusdsrwwhq[cllevhgqwlszrhlbv]prpeirpbwoapvocm[urvubddgwfmmkoyu]ygmtwdiwvuepkcw
+hnqlptboqzzpksz[axumkjmbmyxfokki]oyassusfzvnzhlobbme[vbnbcjaiiuqptfyct]oagongosnahrlok
+vgsfvfwepwufvvqbo[pmdxwkxldxhlqlqrgp]nmkpknxluiphfrfxm
+qypkqkfcicanneyvvr[hrsgqfwjegdzfmyt]hmsppdjbdxxtagyhfkg[ranuabbxvhlszpmlmv]ajsbmdayixczrhy
+oykuwlbsupkaaaioxnb[cemxnilkmxflpnwp]vuvzxrfcfhqvmzlzl[hnvnqhipzparrqm]rjzhvguxrwhwyzc
+mdjjwbprbzhftjae[clpvjvsxatcbzsyybw]thsopmeuzvhcfppbha[hwbfzhbptymaaoywwiv]ybsfudfmveobwaqkul[argjxabjvcalkomgp]nogtearwoznoinj
+ngsqrfixojvtgzmfx[dlttfdsvjeppwweu]ydwjjxycbpopceaj[anlhiebedcpahqihhd]gtsexwhwnpmpqvdxa[qflvviiybebmusv]epuouytlbtacnsnz
+ouccxvpsqnmxezei[vmifqcpthebiklhid]tszxpvkgldobdjl
+pauvqtezlhvjejl[sczynxdhjpivcogula]llemqpnanorgnkmjl[xxtooqiwqkcbvmp]anafyzhbzdtpcxcad
+gngdmikcpsuduzdrd[fchropeunoqkngns]rfdquwdpxtlfxscvhzj
+otnuxdwoeqotcogo[jxyhojuczdysbfvp]upffjmvriabbalmlqmx
+xfjrywdooyrkvifzub[ygubulhifdmoytb]hjuvaxnchbmrptw[txcsgcehrbszmnzl]xlvcnwmeztfiyhlwtrj[twopxgslxaqihinrefq]tnbdtvwxxbichal
+bepzmphvahjuibuvg[zuoplvyeupxvzoprs]qgkpflfygaoxuriy[lgugebpiqnkxxqhz]kqhkfkyiqigodfq[hvaktogguzjumlga]gglqsklyzznufpg
+cnzflcqxgiepnsmpxt[hqbdhovnvyecljhzx]vawynjdylprjdky
+pxhlvphiiyocalr[dfhohrjqchpblygac]oqdjtliamyneclgc[pzanjswflkxxwvnzm]qbbuqtxwodofarbbl[kiqrgquowfurmiqlqy]kppecttggvnsuzaarwo
+dkzdgkqnfjkadwk[bjzvvzwnbuhkinvc]xhiswkplvojtzwwvyph[qroekqfwzfqeqcfns]kyijvgidcjeeenhgea
+mqoqfigmgtagmxjt[qojoaaqyptscsfmd]zkpsvrsxzwvllxqpi
+cdlfgkthideaizn[klvwdqakbyaunqfxt]egotktupevsisej[olkmccwoqyqzsnuv]szxkfqjshuwyqewmgm
+caanbkvopjahzmqch[wylutkdesribnllzbac]fjpryexeaxbopdjhhu
+avulisxpjwlldll[tueldewuwemaihrw]vjzctwcvzpyiihnlrzo[cjdkrvxhmsglzllbpl]gcsruqwlokbdtgucp[nxubgtwzjtwhtdvbjuq]dpghqlnwugoywuiqefv
+rcfjxvabpkgxhlvzf[ftlsstmreroxhmuw]gcacbophluxzofii[vkkogukgydicpvdqbzv]dvalzsrgykitiqy
+sufacmzxrfdwlivdngo[kthzrniwspkdawxz]rudbmasvirscdpkpr[pcielclbxsbfedr]pneagajkflznxdrkejk
+qtvidydakxhrbrli[arccjldfmvtskqtot]uxldrdgmtilrhob[mfqcpjzuqeibckk]tjubrbrdjdakrdud
+cbwxzgidmrnjqukyl[uhenxvxtomizedkxwt]pcpeskttqdttvibym[egwkoivkdehfrlzz]pjueedjamrhpsnuulj[ccamvzizqyunxwbojum]qguxpdkjsvkuxiskx
+ecwvkjdmndzmmivxnsa[unghjtnrlreamcw]fhxvfvlthzqifvftbo
+tfzpfvojlegclkt[kdwzmhrpxckfknvmdqu]gnpywcujxlgishx[mhxacejyvmcleasixmm]ggmuguvhesyqaijlv[fcyzsosernhgawagft]rmdvdnkuaworthwsoi
+adztzinzrvazerolcl[vypxttybduwxgrd]mggcsuuzlwiilaav
+qnamzrfomzqqhozg[zaoqvddnqodpztm]pqhditszsmuiakyelb[sfknkiilewablfnt]mdzzoowquvhayznyl
+ovvwrhkbkeqeatbcke[wtzdbpzbnlkuhwqwfz]tupytpbukmuqytc[fpyravdsbihddaubymf]pjiotvegpewlpke
+lubqiczycurwvqozz[khnsmjxfeogtewtodhj]xhqksdbozycjszipd[zeptjnsjluccoiuxm]bhvktxgvqjkufxhprr
+zflhauqmcaiwnqn[jhyeagjfxbgnzkdr]hdwykmzypixrdykd[zkqqugefunjmuhf]ykufgfmmeaapnag
+eqhnlafwpxhjtrif[ixkfnqexzmbmqencp]npxnxbzhuvwqnxn
+kokxqtbaemcjzlrioa[ujvykzotvzlrnfg]couurswwzchjzbxq[ympswhhwlvpohjg]wxcufycbxuvmrqekgq[wyljlkzgavafrvjuesw]dmgjejauotkmwgw
+mgxyddqzqmprxrdizf[clocszvenjingorxku]zsuqrmnlgyucrgboe[vpenwatmulopddv]expnuzinwtlihej
+xqhirwwuirdapgmyk[snyixpqruifdiqekwiv]zogryeticrubznbumf[yisxpgzptlkrmeevgqj]qrebxwojumgwfnf
+djlypifibwpydcxrd[swxgzdsqfgksqwxjxfk]kbpzzqheozbjjcdpor
+uueutycrzzvuhvniu[nqhaoxpjrlvrtbahncz]tmxvdfxvmctcfzoqiux[gevrghyecnzmkrujmeg]rcyqojjmpxkpeulzl
+quyrwpchownternlfj[qijougzkibnhwzvjk]lmrfvudpzxhshukhpn[jvvvelpjnyxpwvo]ztuckjcxyxjvqop
+ueyerkamylcyhgszgme[kpqbsxegdljldwjdxgp]afoamkxjljqzpmyef
+ryrrppctsvwsxjslb[sbmyepjknxewewrqfsa]gevwiiwpwstdkruplv[ilkxpskdrntqvofj]srpukrzanrqhkprnu[jlujnhxksrytsdazgyt]fcxyuaotwykaosgnvp
+yhjojsuhfhujvfk[nhdemperlpgxpud]pdvcrmhvfeudrea
+merahlzkjieamdkyky[yeygykydcucbambmtz]tbujyhneuvzacymtgrd
+sgvvjpfdcsriacwuyy[rqhuwizydqorikmqqlo]ozsalwkmuodygrh
+jfzfzodtrqrrwvlr[ukxwobjdyhtqrqr]qzmrpkkjzqibwekne
+xbmixvpzovpzydwprwt[qnquthrvjmqtpzb]utnmpbzmurlbpfuaqu
+fkfzgaotoffusnte[ajzqatzkpajlsge]hamnzapphynrppmzwm[teysbhjrdgatijve]aigpcjplbknziprba
+jfprgbpaubcukcmp[kddnrlcjywdjcud]nwzsudlamqhzrwlkh[fuavvscfxpynlxexr]szgousvpbqawlkpcd
+idlhdjsytmzcwcu[lgwbpjcyvpnecsqfhr]sjkxaancdmlpobiwjr[gzxmhvvugpuywst]oodlrjlodknfxde
+bplasvzaijndpfkr[wkvndyztlfkelwckt]kjkbnawptptvful[fmlqcligysmrzes]ujvljnzkznjvkgmsvqq[ezpnsnwrujkrbcmggsj]eghksoebyyfnptgqjul
+bjwqelavjebvqjroszz[jlfwuhjucugbvczdbil]xxuinqhddmsrpukke
+tgbvekwixowohur[hctpawxelfhbtmwc]axirbbtolsqjclqo[xcxiycbryxmpimq]kutifmilczlxebzxwjn
+dvxlbiymdfdrnnfp[nxrzuioymgfxqwxo]qhydikbrlhqldbq[heutjkmrstetknylg]grzklzcisupegmbg[mlvaswdotnzowpqw]inmxskvrovknbngkp
+rpoicdzdnkcxqtqule[gcxezbuirojvwliv]bmnlgvtpiyfhkukpj[gtqavwzdzdmqufnce]nwnlyciquxxcwpte
+ubleorakkrqlakyr[kqwacjjutlifarh]dgijscrhnsrsxqhogb
+niodmrcgcjrihildfw[pmtshihgrssakbouvf]otoaadrggvnzmetmyds
+jczcvqxamrdcpnjl[pitcvywsuryykynqxax]zmojzqezwxdnwrcuif
+nbmlxeosjvvtihmwt[acformsggoqxslahuma]nmezephkdzghfvhiqq[epizeyqkmseenueefiu]alkiffsdvovxmejkunk[hiwyudbbuondtsqjm]wjioowmqljplehwe
+hlcllqbyvenlzcfgz[tkddqsjxydctcrcuhq]lnqsaupwdmxeptzog
+rrkevyquvdogauq[lxscinoclyrawtkvr]mbiscfistpoutkc
+lwkkwxlifgwimrupndu[kglwcbuugjkujltz]rrgozebmyxigvxefa[hxbstqxfjnzvkco]rqpxaurnjtzymxkvtiv[fgbvzthgqifdqehisw]kwvdvfijmbimizl
+yejkpafozbchconq[chghchxxcybtarwkel]ensiprnejdyegqiiu
+gsclugkgowknjfkewxn[pgzgezavhgcfjpi]wttjlezzjwqyyzgzc
+ndgluxoxlnekaomi[hrrjyflrxyetpub]kwpcbjgszdjimqfgat[ofdwoxrgxjrbxhgep]rdaebrkfchddavjeqap
+vzlsrismjdiyfqzcieb[fylncgldcdlrqnbpw]hyrajwsfckxlkhcboe[rxqyolmmgairjktnk]xhrusylermeiiolade[ifiekphfwfzsnrb]szyunhntoeymkuhyvru
+ekgeyjojapzhzaxfzhw[nmmzpmouaheahibz]skhvrmqbvgkbismmmw[lpohwytpsrtegazzkwg]cvyqhgsyodcdoyandpp[rntevuwuoyqnhkmrr]szsrcjzpstfyvlf
+ioykyddusobfdscqkmy[pmuczfvmkjokvnoxrz]osyjyicdpcwzxvwfn[gimnsriontvxypcxnja]rgedrrsbgienkkwy
+oktebiadpwprzrv[wgprjpksbgdyqidklkf]xhhjmhfbhpszdqu[rxjenkcvcswchak]fxqrycgufsqtbxx[pyxvqyqnctpzpggzrq]mmncxhloifiifjpnitw
+xbqdzlpfxcznmczfqq[tpfsrcmbflynynshgt]whfhtgfqobzaolpx
+hfbetzccpyqauunfsq[ihzoakqpjosfmeff]xvgsqfzcgxtranek[zbtxsvwatcplcseik]vaidkyuhjnsgptupyxq[vprljemlqmphnaau]vfgliasxcpdyayvfddk
+jetotpxiincpkjxqmz[sfwjrlxbmpafwtjuy]rasahmylsaswogm
+ipseqmdzbeeqjsnvo[qxgatjiqzhwulhgkjm]syofcufklnbeobppx[lbmkistwoiolecjh]qpznlrllrkhxrnyvf[zbhzvyjqzywdpvh]thlrfwmziexkhxgp
+uqyiqoznpgsjaaftzq[bfmkexvilwsavbrnwo]pwdssrfyvkefanxnlfr
+yijgsezauqoevphn[qboayuokxuaztxd]peepgblucrlstsln[rnifdfjhxdmtfse]qvymgyfdvcpezxdgmen[qyorafkexhajsha]knaylffgeufjxogyel
+qlydmvzjoavamnvot[napvavoknajlvmdd]wbjkbdpjhuhxybgywu[umxthkfbtbevasmekcr]adnybcirbnsyplp
+qshfqvkxfhgsysl[tzlddkjozqzcpcnx]xjkhcdozufunylwdzs[smgwthhegrzgufktc]myfufzjuvrafwalrnn[jhsmzagnqmhzscu]dbqonhtmhhdshdyatcn
+tcdybubnklvamrjlxqo[naocexrxejgekonegma]hlejmizxmhxahxboitw[jteivhxwxftlyhl]kvhbakqlmukgslgvgx[aueqotadcogcmhqeeec]igrfisukejhgfmdvx
+jowozfzspexprygzplp[acahqiqszrcdhsylwwa]ppdmkmcrzpzbflgeld[etwowmhcqhkjkkipk]gnilcosjuukihcwyne
+ynmgkfpaiocmkybwkz[ztxveuhtztuioruvqbr]grhetxxldtoepqtm[yrucewbvzbphefuf]idcnnpztztemlywblpm[ltaesuehnzfrsflac]bbarkjzutumhskhf
+mckdhqphoehsqgjzpzi[eiretkkiklgmfvohgvs]fsaipzocdnrwworpfj
+hmdbweapvrpdkhqhr[xwpfkaaejitfikqgy]atylpiafldvqsunu[dwvoqhxryfpiegidm]dyvhcjqkgspgnpw[nkabxwemccqznbpdq]ripivpqpjrebswqspd
+xdjfwlhvdtcxqvfzrlh[kcjkplfasydesgzkkh]ilfrxwwjtpmshhcy[gsobusiljqgosoih]dgtehabeomwepoaaahd[gikvtnebxclexmsc]nkcvdazorstiymosjv
+fjjpjjjikuarjinig[ytnbvaleddhkesaoaut]eorhszwghtnmzbjipie[fuwkcamkegyilppagl]pipdvxwvkvvvanblh[ipiaupaojxfjukjgk]purmzuzammwgfyle
+qclqkkcoimixsiou[psabxyezhvejtdodz]ejzppqfiokslbdzoyo
+hrrdaecpdytoxkwdynw[vhgsgzqlqemkdkewg]yeqaoolmodchmigyxt[whflgmjarkpzbitpkl]jqjtyhnxkklkzoa
+jxdsjmkuplrowpkta[uzwnxgrrcieqvoz]vtwwzqgvdeornoqxmuw
+igfbnfbrrkfiyngqux[aajdqilzidsasrthcnc]xmkzmvqsexhkttcd
+bmcwxzeodkxlxclq[zvmqvljaabeakiei]xzujkuxdmumimotsaps[xuhocncyjxiyavon]hslcfclmfhfxxwwrln[dfmghezypyqxtwo]wxaxiadxkpvuwdl
+xifaalrmhugjejbl[ioovxgzfgpaqlyt]uayfrtjeutfeprmb[fknrvsrbeucxlyzauy]geowvgcfjnbglmrxp[ocnpvwnagqhgbcvoupp]inzfrbwlliwgcsqgzb
+wccriqkjssvswvpgx[apoeqvsvtniwgbt]wfrmnudgajwhkcy
+mbyargqesqkprhbtaqq[tpxvefsyzwxvshmict]dxpxmxcluamxmfq
+jfxpcnpdgytwhkfb[kdrqmtogtlmxqmv]auuyjbertdteoho[tdendgogvoevpnevzdx]eicpvtgotdkcgwbd[ygcvethlzayahhialf]kytibwtgzhuvvsjw
+wfdfxjuqfxjbnjpt[mmaupydmuixzfwebpjt]kssauqawybxkfmcu[juevujxyjrwzewzua]eladywlrkxglizgc
+qtkmarqccnxwoqr[vzmovjwxsbhtnmjhqjh]zycttmgyujdefxxfs[tsmxkcuqircrdwtsz]uhqtftqwcxreyvlvff[kwsyvatwweenxdvqum]sjmbfsnprqixqzx
+rantzkbrnpwuuvqbqn[qaudnwijvntnxlj]tfdbqbdepavxiewo
+xwjmsobvbyejpyjkrz[ozkgsxhxiyuejjr]etkvofiicvcusmmlg[rmkhfcaxfbdltnpwk]swklpvfmxmlfhls[iexmcqatbamzyvxft]djvoysjwetzhocdd
+iixngfiuncqysuzf[ehzeqdsqwwjrubb]udkdvfkdtxbddruub[hktknkxemrlnbxwz]qfejqmapclbzhhe
+pmviizplesuakfc[woqzewypfpcaiotx]xatiburufdzajqrv[ydsakwhemrgnxgqyli]isubtdzpkcgsoas
+xxsqvodorzrnrbzsvyu[apejbcvdjuyujpxewu]kfrcogbvnrkuykpgx
+nkvsmhvlyyweggw[yhcjceblmlzpgig]smpwtbqsnklgxxbssz[aiivebyzjnbelkphux]wnaojsgmpoiaykznpj
+xcllttmboowsgodsf[dfskztizatqovmat]gpzyyqjotpdkdemcjon
+drhgljhvyonmqzkr[ohxhjhvlrpodxwy]mrrhedvtgdxjhjv[golpxgauowhwdoov]rdmuwnfurqwssgth[atspndhxuuhzadog]qgdswxcwwahqnpx
+uvdajunzymasgjc[onqeemcifirbxli]mrmpwnqojidvwexxrjg[vbpwisdwqtiteawvdw]rpjzhfsfhrzukstel
+owbdsotbsjvrwvdb[fclwyuadozjjeyvkz]uzfygewxtlgjhmfpyfy[qlnlpqspocvcpqsa]fannkpftifaoeszzu[pvwpbdancbljmucxql]tlzusxlphovfyfflj
+mmtmuzzulxmgxsmf[djwlpuwrkdpcbvv]jomhrdgighcolvayu[vdxrekbfbxgdluj]mwkcqhjhlrehesmwft[pigmugayjtdhtpweyo]lemzwycbgzzhvin
+eferdgkfaasmkyi[nopnmqjuuhhkaclf]twwodgunizovyvydh
+baddrprmgewtmypxsp[yahwshbkzattrry]tjjmawkirxcxcpkbdr[kcptwlmozcgjszalueb]msxrkbrbcfnflgnqe[amwmeanfnbrpznz]jkkxzruebylcrqkvyvk
+kjagsescwfjkqrykx[sefltugsdwkybwj]jmebeveaticpwddxbk[ktfnvedmpvqufsi]zxjysrfpzfhngjci[yifiorzwyumqotxoch]afedqtkmzpfwnacb
+lelwtilhzhzslvzo[ehvnqsjxemjrcvbqyf]ovygwyyazlsulyzhjja
+gluywzrxutecuauqi[vyllygndlfkbmgaoefq]cyucodjkxwauafwfxw
+dflaghirjcyhylbcenw[dndkrtbxackpdcphny]pnhqmjxdzkjycmdo[fryelfouoaesejoq]tdhcacxuqwfspqevq
+yjnumjjyewzjnakmnhv[ulycnyiyvszhifgscjr]xheytyiiyilswfhqywd[jxrndqsxmwcrpwrfu]jquhfnyxudasmomnpx
+rspuvdkdzbrbajkj[dcfpcvzpbodrxtl]xbskonezgtixwjfsuq[gubkcjizpgfwqktcc]ddjzlszkolvwqsrnnc
+moobncjrmmfonnmp[lpbevkcuzvqguwzbzb]pacppeefawsktrydyqd[wayxdzsvisprqutg]dfysmjhwsvnavpixfl[aphusnjjnvygqikzbz]qmvbpeopziujlsmgx
+wfujisugotfsymh[juvkyhewsnpzualwau]ljyuwiidwytmvinw[qicxeddblcxrsdrp]khdooklzguadokmdbd
+wdzzexnylrbsniulyv[nbehnwkwkrrkbwirh]ymyaqhrhmbuolmtbz
+hsxsderrtdvolsms[yqxhutbtoodvausgm]eufwcczbwgvzxsti[gqewnssdahkfambauv]hrnsadgqtzcegnplnce[fwzpwvfptgbgaahdn]hlvjzdqpvjezifpbh
+gtnyrilnfgmslzfju[qwahfyniqetvzpb]txlwtncptwapogp
+xblzbbrwjoudimv[grtjaoaytdyffbl]jojuhhvrrgbymoptzi[rgpexwvtgbswbzp]ysyfhclvndltbnnzg
+ggtkfikxhhzevnhpkoj[egndynfnwwogwdttwg]gmdytpspodusstki[zokrsgoycmxdzrni]jjtmaoztqkdpsnty[ishkqeyrmckkbcug]jkkfuvenjvphkmbtk
+aprzrupkmqzdgncwuq[ototomaxhriosvx]zftevshbmxrjingy[vkrildlncmbvbfi]wsqygjuriitkbszg[ncmxdegpxcdvtgau]iauwjlqoidqpkzkeazx
+klbfjwxkpqniguvq[wymwprcxjujljrexcg]mtjifypvknsiogypja[tfbqvlowzqxqefia]azvpxtyghflrgdo
+xfiwnyfpxzaizzzhp[jsfakgounppfocql]gcgjvygypcgzvnu[qmwugdkvhxjknumcr]ftgvxsqochhihwnsb[acnafcpwduptldm]zcstejwdgasnvehwyot
+repltebkzsojvhxy[chzhbjyllumckfluof]lhdibxgatvxzzhzflz
+ilqmrorgodzrbfesczh[udnwlveyxsalbxf]pptfzbjvkxksoarpy[wffmfpwwxmuxfmrvmg]zatihmtjlhvjbzdwr
+gjqtwvpdnhhqqqvop[hafmfvvzhqrnugo]xgrpicypdmzyjodfv[vtykgzaxumptsclyf]medyaqnemgrawbizrdz[ykkktuzmryicpimqgdk]wyxwdmdtrxcpdqhsrli
+hjnariohxtbsthvcwj[jqplvjyvfwbbphien]yyogxtzdtzodxceve
+tqajsqqmgynvntqf[wkovdsdotmgxjmmgmoz]kyffakcqgknonqj[hvuefibelljpsvaa]santzrmyhmmfgsac[xevdggsuztwdjllvmod]osdymicaxgknwafiyhf
+xgangxswvkcjsek[jrvhyhmomvqblucr]mhakwjcqomofhbdt
+vuuruhdlaefeyjtemtn[rkewcsrolbjkvgnjur]ajuzfefffkgdtzfmfwu[ysqkcwziamybbcghjb]vnyxgeftjtrxeokaqk
+ytfkhfnkxsuuddh[uorumsswhfhyjhnoqe]mlmhytefajriiwzln[ivgrtejpggcetxry]gtwlsddrscrxepv
+zhsugwnutzaxunnfbj[oenidjfrxbnbnevjwo]wnscklrurlxquzhuwf[fswcwqtoexgrdguawj]knactvqybzyjdjdkdkd[hwncacnowaliolgzmlh]xcqfyvhkoaxjyrxggg
+vfcdutbbpmmhmpty[glvdyxliujvbdqr]jyavmvfrqjztetyn[rqngwyfxdxofvqwo]xqcpmtqhrkoctux
+zfeyzggpwatzvvr[mwnxvrajqdtijeqm]kyprmauvxauaeuntay[ivwbqplblehbbhi]xfasnjwliydlrcyk[jmalyrxoozbrang]lksylhfvgbezkcf
+trqdnrlvoqyqyvjt[ekkkwqklawagqqprz]zaojypuwvzdghwkye
+bmnmbsogxhtpved[zffxeokudzgkusvk]qcuxjdhqclszjnxdhd[rsjdhjczxtrghlxwh]vpekhuzoamazdzgufb[bgtmhavdkyhtwlwcqmk]qucpatddwrtjztpxvi
+hwqfyynrncmhcsmrlp[vlaqdzxwrpawflemknd]kmvyzqfvlouluxelul
+gnzpgjfxtsaiknapn[rganasfzfnrvxir]ooatokkxjxhzxlpmb
+mpedacmqtzqmwqyfz[dcofwyebgsvctomzomk]vpqmhpoitpubjorx[thmfofpuparhszqe]clvrtngjajielkxre[mfcjhfugpyymytri]moqcfkrpazshwvh
+fxskejrgulaixah[cwshxkapatrgudllubb]vgykjzaukwxoyeucosg
+mgfyakavdeymyzxwa[dsvhoxfiuxixxva]jsxfqsnjgroxbmpiilm[kxkakjvwgwflxnnu]denqicbsmzvgtcxm
+zfqnynrdbdtqblxnww[nzbnvcjtsxrdmasqtn]yoganlahispbjdyxqx[tuqafqcjrxnybeksh]imhkfmqdjiyfoqp[oennqnvdpveoija]vljstbhqatpwvkbg
+lpzjqfcipceweps[indnzphetquilkxnds]oxyivnjttcuectlyfy
+tfhhmfeomcdyuql[ioclczzniueodbtpbrp]wuiujzhxjbgdlqbm[iciypydykxiyqies]ptvkrvkragnibssly
+ybllxqqxzjlhskqi[ytsvahdhxgwnwql]pzfzcnbxiypkpytv
+cchwtoevekjgyqqs[kizgrwqwbhebxlscmj]tjbuacerkadppftxdpn
+nofeoaawaeoepwekxty[mgapdpmakihrfzlfvpf]huhzkicazfkvjhgdvsp[eqtuybajdgdthtz]opgdgjzkrfejgawxn[umbakkosxdtfwcfh]dhukvukdwsevvcmt
+nhzmrmtfyhjpvbsi[jghcdhdrxermnhnrg]sasarolrztffxrvh[tafrflhiydopcqrx]hbrwebrzutugjnj[ejqrvlcpqxtiuqho]xjgvbnuvoxjdcpx
+dkizkqalwbetbepak[detgokxgkgyhrqzzbqq]rmwrqwolneotsyvq[fpffqdefoxfczyfb]dxwsppdngvyskdpfnbc
+ygwbidlvlgwncfy[ouryypomwfwmnka]axlhgqfgvrfsmbs[zavmkhmkjzvpzlxpkag]bfewyvdthrjzmmjs
+jwyxcjasntveqmblff[mudhpflnaxhhrphuwy]yyvtbzbohccozqj
+ckfocickdlijiur[fejgtsphnigervnza]owlznrkbwqhkskgebbx[alnbdcgnktmjlnhig]dpfomgwzkqrpmicih[vovjambzftywljbxrgj]ihljubxxgrxrqpn
+pygdmdnnbvnjlkacjfz[xwefajgruywjhysd]soepimqfbbhekifv[frdrobvsbwwkcytfv]aszgyodinewnrfdhh[wztqipflzlrwmpxefga]bxviyixobyldmkln
+qujnmepaefnkxgrrg[yxdnlyihixwasibuy]qtmnryswxwzkuqw[ozuwcixlzlbiacytv]oylpudpmjaqgwfqvsb[wljtqzfawkmrnkgkvla]kgdvfppcbpyazklfdk
+ijkbhnjcxgsslwtkuca[pxpiyixylcuudtwbt]ooerzoxehuqynhzmhwn[ynmgxzstfawvqihdhoa]bdrhyquybjddpuroto[fhnnpsgnxlnoiiqcml]oaibnvvqupilprgcyiw
+dfqizqapoxvqvqixvm[mgrrcrzvjkncxlmq]xqcxnymsyxbtfebdgy[hfdfaxiuiexfdhy]flyhvoppwzigjxlytu
+qlakotkuqswwtqx[xnpcrmswyqolvyp]limmsdyvzescvvt[rrpvvituflyuhyhz]amdxfzneiggintiyzuv[cykruetmmqucsbwjrh]ymobjslroztxtla
+aiufklgicgwxdlaefc[ofaqlmhnwrwhjlleyt]dixgrgkhhbyopqkzmt[zhqupdyazgumcagdids]mxijcialempjslotrgr[lmwxkdqqijndgoiv]upioecwmfnndajajbxw
+oiwkroaymbjtugfvip[hyqrpfdrfjppatm]azycyfsttguvudeq[czujqevgflhvskaguy]llsuolaevinsabqpy[sivsqswxfxlanvod]sswhiwoaxhqsjnynidh
+qipfjqqbxflvnxgv[cnxuwbvnxndkoxcxjl]atoznchumwauytpqmgk
+doncjsebymuefbxj[itsfdedfjxzxgvj]wpxzcoaybnzzzxz[hfxwmqbaiyiajiorh]einnvliwbxhjzxx[rkeenlrteubkvgrpmms]qbrpoghwjttgawgstt
+tyiexegppbtbxzovpb[yljnqybbavpwbwmvg]unbjhlrkpjrqbxrtpof[bvbfvhvgtawgpydlnn]phdnwsbwbljkqchww[galszmgwroduckhyyqa]wgfbqlipsvntmnspge
+gmnkhnuwwojgyybh[ivxthnkhjaevliiberd]crpicsxuksahuebnk[vogumtrrqupdjhtvmi]pcezvomttzmdgtelfq
+kwvkuklbkgbxoyqo[cckuhlseweoukudp]kuvdtzbjeoormufjn
+ewqcguiyodbjoxu[qgqtmjabzxbzjua]twmhfdmuudjrqjpge[xexjbzjvrungbvvmry]yuazblohcojrddhfzg
+irustuljdmhlqrettvb[dgsukspodhlhcqabx]auntsiybdcfgxjmsiqy[oqscrcekuibymdwfcy]dmxibunjfmqjoeajyi
+ppvngsfdficcpbmbze[gcazeiyfowcmezww]wmphalytgunmpjqatau[qnhrljcdkikordx]yqrsgeczwcwjbqfhfw
+iniqgrqelaihnllono[cydssebiyefnljxfdh]ljpqnievldmltrpp
+jzjmjfifakcsixsg[zmgaofcvdvtziindqe]mzodtodhvkiluhuzf[gqjguyslrtqvcesa]gwzpfqfyfxnncsemb
+gdnmdicwnjwgpjqdw[odoslhoqgocoumxf]vodkzgngmshtzwjpgbn[rrhzqlqeixvxjbaldp]xsvbscotkujitex
+nnewsdtgggcgiawo[kmuweskiapswdskgosj]avjieesxujtqfwpuis[tvulfkzyslzakco]sjhbzevzvglgfreyc[wzxjjpsqmctkyoutau]isajcfzslakogyuevtj
+brresmfifuolfyc[hkeljqzezcsvzrcue]zswubkhczxziqxlty
+xzohgybxqdxdwxfbx[dqcorjuppxguxgps]gltuxzxhdjujuro
+hmyrpjbmwmyzijkbljp[ipbngzbreqoqcisbi]ctdmsssqkgrjxozcx[egmuzsmsaiodyyt]ugjpwtglzvshohbj
+snumfuurpriffdvj[ojmagqzaktihjmwriyv]rgnyhbobphsfqgh[azucllkylyxgrlom]vhtysupgjwbwndwrgfq
+pxjdxiuhqmvwufld[ktpvbdokrtdpxrekaf]mamfsijuemlsyio
+olcpnpmilbzxxvqsz[ervozeicgvqskuenz]gcxvfthottngwww
+hphpdxpbsbmzshrwmwt[sapciwpwuradyvko]dnrhabfjqorseajgr[abhgtcdijsqfndmney]mmsvtcxmoobkkaeevz
+rtvrohugqesutzky[sjsvmjhonskkqwhis]pqjtzpfnvwsigtme[ckthdaxpibfximcq]peoffhphnstzruuhze
+cazrddymetaqdtlwn[tqrvhfevxilaptinubr]opnhppmmbfscporp
+ctclntnozqwmiqz[qniikhszzxbcatctip]wpoexzkaxyealqhcg
+suxvexjrakvhziolw[pxjlsfocisjmwzl]smoqdqjoczuyiac[ojpwtuddbldiaruiamd]upfrpxzwnthfytv[xvfejrchuditjal]bxzvjvhoigqunomnikp
+vjuryymolbathzinp[xrcvcqvbklvqtjnpzh]wugebbnbnzzvdmpg[kzdlfbpqgvbiyqwitga]wztqfradlqinyzfzf[abgygmhhsksnvso]kntwamrohagtdrsm
+ernvshbquyjfymdthx[jjshkcpnxftyopjayzm]yidkdkommeyieirf[zxxkwqqlsgxpcdwlgq]zpjrhkyjkdkxoufwlx
+pnevxgcsnqcdezwf[mnftbwqkrfmwcgp]rkmeslzoffovqheq[vxdcnglifignqqx]xiofsoyrslgyfrxl
+bjehvbcqagyczepreos[swecagoxtwhtmzsjxt]ihbrujlisjdftzpfll
+bdczzogwjpcdwyq[jptlwjoskogbhfcdu]sbfatvcosbvikmvm[njvcfwokqbtynugffu]qwhsgaqfunpacmimzhp[mulicnvulazcycscjye]oycycatwylztksmrfh
+idpyubomejrcwurt[idytppqynyqvdajevmk]mykbzkihnmfcnfg[ghfxtsrfkqppejwgen]rsalcongusjamgcltti
+gutkiuskjqzvbau[vqhivilwddgfrckjc]gpkuhglnqnlzndpl[tywjgkqskbdlsvf]bkwvgkdcxvdlvplmza[yeqeuyzuoqbypnwg]wsqmblkggadabss
+zgirdbsohsmusxbiqm[xnuiyfzmegcwzuvery]mzjixtxtbdruckher[ylfmvkslkcukfdp]vdwcmqmrsnedjnvsomy[cmmaoebsohfrnqu]bzgstdhoneuzfdxl
+wimnreygvgbpvafqrn[froxfavuvgvwirr]avnmgyvkwfnwfgudiks
+edgbqmwalgtiurhmmg[vjzrrmbtvyyhwliye]mpykphdsaunzjkpam[qdcecrxescwvlxmpi]gkfipuqdcpcqodcptya[pmdbisdhifodialab]wjucsoipfxzkkzwm
+xmurhwryxntmdwwv[bveccegjmwnppgio]rbnnbsqzutgyoign
+koftdywagyijtsi[amffypsbtekqlbvlli]avskrcxhiysqqgjja[ixrtkpjnrhljddqzt]ekluhurkjnhlzaudnrj
+vqbrbgtnvazwyixug[yrmuvykapxyyqxus]ehhkvomrgnlsofbd[mgwdwrvjwhhuynogqv]nyjsgnomdxwabameuss
+upixiwerfsjxjvecmo[lhlmklygfmbxljvptf]qnlxnzoekmyoggtsmtm[wqvqbaemhanfxldq]msobqxpmwqyauii[khuvobspvluvghjhcjm]ysvqvfsfyanmyrbuxnw
+xeawztjrtohpimzkw[umvqxdfhsyyxsimzj]kyhlrkyxcnyupqmp
+hqzlqinkcowqqzp[vhdaljgjjfqhlrjj]gmsyhpvpblkaxiox[vhbjqxseofvbvzbshv]ecirxnvxadesrbvn
+puqpygmwhwskicogo[lbkrenbngbzoljzuoo]tndvmvztkssolnom
+dbswyuxfrnypetkm[lyuajkvfqzwpuon]oorgrpkhwwgtpzxc[guszbthjnajqffsofme]vcqjstfdtrxcuscz
+clhtmgyxqbrzeipksw[mwuhcxpahefneke]bssxlwoelrrgsqcicz[yyrkfjczqdsglltdjz]xscwwnkcwstkpxto
+ajsijhedwsivzvngsr[eqorzqparxhrbesw]lyvxgqgqguifrpuj
+sqtxgdsfkbhljmt[ndqljydrgqwwqjayc]lttwcrsejwxgxkuawgm[nefpbdmgtizfijyt]dcxacpeeyuzkemb[otnbznolvwiervj]hdcjffxyhtqdjmaipj
+kvohguactjmqrluci[tefqrqmjpzpsazfoe]ptxqfezuvtxphvy
+wmawphvozqxqtmq[qqtumumswsrpsnjug]wejsdbswswrjitmq
+pdzwixvmkxpsxygxmp[zfxeglxxoxtkkmshin]hxjmzexyabkviollfnk[nfitohyddbdfqekaty]poexvcemyssklhllw
+wyyiqymjavixnwcnxu[xnhhsqavbnggdqn]gymwgjatpsojwfj
+iqdkuwpqylmwhfvm[bjgqryooacvjmxtrq]dqhwmcafwgedohws[ucnjhrhnvekrgjefzxq]opvzmoismjdmsezvle
+ommglribbfvicgmugx[msedauwycskyoios]qrhxlnihnwmktihzp
+laphdvdlixghsmjpsq[blbjmefxvnjnxmmc]hnzsqzhaenlzcvoq[ppyribixnyeucvjlv]fdogfvnymyznuuxa[pelyyutyolblxzp]fqgcltvxupdobson
+apnimgsoqfmqlgmjsvm[rdpnruzylevyuir]wwfenkdjpmqnvyf
+ltskflhfhupifhf[gwtcqaatnfjdgywo]kvguorbhzxfqrhxnij
+kqaeviepbnrokflimj[zqzevrvhforlozy]orzvxhevxtzorkch
+uhsjyhwppwarmrfed[nsfzcvrwjhfuwjta]nlthyhmaeghygqdaxdj[esqbskelpkfswkvwmr]stzggiejdzkhohumob[snlnvsgiktqewvpxhm]ahojfbcfgxqmmml
+idlikoogcxqffrufcqi[vcuenzmwggmbsknfj]peoviabqngzwiqtvri
+rigldzvrvmsmyakcjb[wwsutfoucqlgorxnu]bcuixkbifegcmltqibo[szoqsqlnduhgvhlza]pcvurfgchanmngh[glpfevaugptbhqqrd]vpndxitsihovocvong
+jwfhrlvcglbtbdlix[vmhtfcvzlshpfcii]gosuawoykketkzdhw
+bexfthnhhppzzutg[ewpudndaewfnwaht]wlnqstzsulregcwgmzw[atroqzyofendnnp]idtypgwyeatycgpde
+ldhjuqeykeelckq[qrrabgedfafkzize]tfjpjpzsafansvygor[jpuzbjptblhydidkek]bbkncsznubtpoiahot
+mqqxpkguxlmvyyk[vnxxtwxblmjdxjkhecj]shwgynlewfeegfwo[dgybavttexfiaod]ruobjihpitxxfwx[frpidegurggjllhq]kcfnatekrezeqoqnpqn
+pfelcxohsnhpzjnrp[bmnzwycytvwquengc]weaysvdqdkhrprcpmw
+llmwiwxeyezezpt[densmtrbqpiuwryg]pbgadfldspoahjimq[ugideashgoighvpiwid]pdvxaqoufmuvtrgs
+ynviititdvccfewheh[phaubuotpzjwqfcrm]spytehersqqwhac
+ktjvhepsakhdtvgoq[bnejcglklonqxmygyn]kbywvhkayojcufnwr[ipiujgjwknxzefdphq]zcmnmxqhuhjwqiue[dueiqqteiuvgyggtc]rbsyqjqegupwxbazttv
+pgnoazapsklgvmejjr[hjzazneywdxkaki]gfwcgiyhuaovsye
+qorimqvzoheryivfi[usbcrrdgseveupnqadf]bvedishdaepjjnrgftc
+thxrgxhchpeczth[eneefpesxkgwuxpnyb]efgidnpfdesgcmkqllx[jglvknahzvxyegxxedi]cupoduyjkdpyajhirg
+ltabaysmmffenou[fiqduygbghbczdsjcs]drfpocohdrhunajvmu
+rklvlmyqqxbttuhuzos[bihsvfaluvhdwqwcz]gbrlkbxpivsdykcjx[qoudfwhqcnbrmru]npquvyoxliacxpr[txyzvzsszqedximgecr]srcqshisakuwljrulf
+oiiruuqsdsjguri[qfzwehlhoinyhjv]jwayjxoutcbbsxquluz[kbgrvqmxzsukught]bgspboampsgsivvuwe[swvxxnjbmcpffrayd]txmyfolzjpxdvqzdtq
+resryrrtzhhnpbdrw[hnirhiummudhyylnky]gmwqolwapineiokcl[iqptxfvtgabqyxex]npeatmzdsfknpajsub
+aqjfwyrtqtrhnxdmfq[xacmscejzrlppqhlziu]bxvptkrvkahygexqsub[vrzjqbhlpywxzenkod]lqvsohrjrymprniyn
+obdgtytdzpcbnelm[scsrytqyknxdmzugidh]fpbpxshhnyxedvvna[fgebgketwucucajqip]cdmbxelnfsomsguvxdu
+yuluzhzwsfvngixjn[gjmdiyftbqimhxiv]gxjmpelluljxmuhz
+icsqqjcnwckhskoc[rhanawaofgbzenhxtfl]vsvuwijhjnaurwlb
+zbqzykdfeunfcwslv[fnqtxugkwojhjjqg]vetgfnapdhvbdaiya
+uxpnaesrcrudsmuxvk[zmffkqaufmoxgoelq]jldwuldydprcfgod
+lcaqgsbmhyfmfszya[brvxpxjvmtrdkdmfm]cphjfsilvnsdqmpxob
+cwxycngzriigcet[xltlzayrmdowajvins]rbfmarruugyqhvegod[nbyobbfqprdigngp]nkrwqcyinzutnklqb[ajhqjuhqzahxzjbk]nfyrxcupuphkbxjqlai
+xqwbcunarmghbsosq[jrmjtqqlogscgojnldm]bnzhiagvdwgwhuawz[toxpipinabgmkbwhtd]uxpgoorspsohkmd[dtadhrgzvfownrufn]xslrmvbosoeoeaewnfr
+lllhkodepygrzesxp[zeohwydmclhucevd]hbnsvtijajahmkclbei[byxhckkvqixiwtg]ekezugmyyavcwxtilwt
+jtjbuoavqyjhlaw[vbjakzkppzloxxfx]vibdluddkdsdexqnwl[ofqpidngtagumrk]kfoqunkkvyoassxlgg[ngbosgdywnmslnszsa]hxpciqkkafpdgfki
+nenfymvefbgzvag[wiqscyftlldcvsnp]pchooarrvfpzhwvcjpl[wtitvzxuvfufwviff]opjkauasyyfyspzoufc[pelszbarccpqtxvawi]cmkfptidaetuqkwz
+hitjejomylbutupmkeu[qdzbydybpabfnlkwkv]bdlbevsgqmwnbolnhfi[qeujppfhpzjbtafrgl]zvirtzxdzoojcwfohx[ftgmwthtcanqrxzks]bsafidxuxypaueoxg
+gclocruwassudla[imoknvpznyxchnrvl]qgninncvnnwjovnm[jwqccerrryoiwsqf]chcucyiszjrnobxal
+wqlihvvkfdyrhbqu[vizkatngyvpxuwhsfr]mrxbfaovpijyrmtjxw[mrkexdpmoaarqfj]kmnbalnjnbjcsdulczi[rkidvuivyaequway]jmyicruofboygakaozg
+dvyalwumbdjeaocae[zonftyvegiqiquqac]osgmsdmqoclweiqi[xhgqrjylvorhpfkh]mmpkmrsideufseuyaj[ogtngcelyserepmqi]kjezmzobtremfefqz
+ewovyikmmawzzrf[hcnunsbuuzhvduvyo]pdkiewvktjzzpqwvpdw
+pwfklqtvnpsajdvtyoz[gntgytituioaybkpjqv]wteojggsgedrjqdi[xzvkngdojribistpis]xftjryqatcesygfzoa[zddmnkhceqxmznq]bssablulgiiovynaqrh
+ztqjirnmogqbcfifh[vyeztcrzfxnegdyeed]redtifioqpfzykudrih
+osawcjcmfchcpgyi[ffwhlengegnjvwqehkm]rvtkttwkeoefydz[cokaihziodpeurmbp]spjznidsrkpqhsoag[mautcyrrmxsnrlw]dastqkwpjbubonqagfx
+jctsgqoqjqtodkhvvuu[ylovawrcpwpnzkfp]xtjdibtsmpbidvvdh[mmaecjrzneokajhkzc]wbwaapxadknspjujtp
+izxxelepmvtrpcb[xwoxroumisiqgpqr]lvhyjhchdicledub
+lqvelunldllnngme[lomutagiggypbbw]hdubyftczrctokdhvbl[ymxlvpbfiojaausmi]uqvhoaigwswemktiu[iipvkifnptbwuax]nidlqwimfttkbnmms
+sewpymbrjgtmkqd[tldvdouashkzpbu]qjujogijyyqwbvzqe[xmhewesgbeyrqkbfj]heapyhfvnqovmlkz[sdffbynjptvodwocru]lwqkbkjseujzmqprv
+oegfarvdcswdpnss[xgbroqaseklyoxl]wticmsitljjhgos
+bfhlklvvprpfgxt[wczpqxciyyulsgf]fhlzqdaxyerlulakhbi[xgklnelwoygvyged]ynhbzkafydsmevse[dfcrqsfpouuvsycxi]otcdmymmlomedultqa
+pvyddrxqxuxvzfqfl[nipfbquzzbmecwuu]pxzmehysojqnpna
+vthwugdifklqusu[fmffwynjxyagyycbup]eaompujnjzaowbxmg
+djekvgwpzkgwzwardaq[sjycmrggjjtzpzoq]zgagtgosiowypvz
+bicemnivninwfubpi[enghcgyjwfuwqvfcrh]crycaojgzeqgyxdq[zxgbztjljhdhzpoy]ygxqydxramuikbawdoz
+wdigyfqqrkjeseda[yjezqvkmaqfkcxgu]dwpaveednjywzth
+vjeaiuwrhweqviyv[twssdwyckfswwqg]bujjzsuffbcddcqd
+ouivgjbmmsmiezanss[mltubwnsjkijprjae]dxjbngvqbuzmtnxj[actzjkmbxwewlhmpz]aeweucknsntthwwvkmk
+hqxgwpeaugpibuu[ftohsergcnnghmultwv]oobxyesnifpglsyumqx[wthgkfckhzdlzeh]tbvnqcewxwzutlf[dbsokgifbtstadxjlyv]hcagowbeupbbxvnnudp
+fpgthpsgglztrnrjvs[rznddjrlsjtdrnufotn]nfoxdbhyvovsaratt
+idauaxxyrjljwtqk[jtrvbiyczhqigjxfam]bsmzdrpeytyegsvitk
+poxzegvwjgitaomcy[eatpylidmcjifnbyt]pxsatbkkqdylippyjd[nuwjwmoghmaptwgm]tarinkguhfewrxedty
+whrppysnyuopewxlch[tqeujwwbfviqker]qvintkkgeyiysbl[zmhfxkhgptetdsq]jazfxamrhsjvlcwr[ybdhlaudcktfgpjajk]vnedwkbznnxoegxe
+wmgrbjddretekijeqaq[wxoqrjnhathlpva]nqrxdfrjrvsaxzgn[voeyknzetkswzmonnh]qexvtsdihbxdwzeympo[mplyvliqtgoezpr]bsjrjqbvgcrxwnpdqs
+txicytmsosvlzftbikp[hwjajoqvcmhmitvqnh]gndimhsqdssjugsp
+scuaijeujwpdvdlzf[byroacgumqpoawl]lofgfiiquoftdrrxnhb[vowfcxvalicqrtpvkga]vdehstpbvncodihewhv[tqrtdbglbqthqfjyu]loycwsbaxhkfanhnp
+qgexpbjlhcciuhouo[apvfnzznkuufvlo]njoupqjamycblyd[tbviqvflseyhhsmxz]lvpemusmcuajelt
+jvrllpusmfmsnwy[yqlfrmtxpvwcllrfev]hpuqtteqblrjbnkx[puadngfdbecfuhuvrqb]myxzjgttaacbhzlpipf[gcjfzcrweoksbywfdc]mnchtfuqvmltrxakz
+ywmkwcztiqykpmju[zmkryfneelvtwfnm]zhuiojbicjnfdmsdhi
+jhgrwzznkirrskfzfbl[ftjkmxrdyljxzov]wcszeohqiseprjde[ngrtygnnwfandfuvr]lqcatjwzlsbuqnzyhw[hdhijvlmfotjdaaivaf]glgrbynrgpcxjihg
+ujtcxpupjndfftyfay[wzspgaqtsinvgbd]oskncvkxhimahafzkp[tbtuibverwndjkyrbtb]vubbwzxvzotdhtvvx
+dgjxjkogwuxxgavcit[shbqapwgyduxmjdzs]sqmxfuntsqibnshlszq
+byysjubuacsviouubxd[idvdypsyblnsmvvv]llcmcxizvdvtmksphjf
+bfphxfyrcoddphmhwh[xvbfcujmhltkfiqaejg]wxxbzpwusjrylub[vcxoevvppeirkcl]bmsyjsnoixvozodjpm
+amhqkszrkzcvumwjbr[wgobbxkqavcfedi]blkqusznjzozcwyatzt
+chzanckbvfhvxoikx[jeyndyycqesiujnj]midrrqwphhqptlbgy[dcelctfpcmitlbrdu]wmrripumgjowiedxpcu
+rbpkmcggsbshhytszrb[rjftwgbycnmyxxockku]nrtwwneopxuypblr[hovauqqiboxesfrqqfx]ytyygtytusfdjwco
+ytuvowkwojtdqfjtmj[ssrmnlgjawuaqqrdpv]ugahrlchntdmkwkygr[ojlgerllesmyzdbnvc]zaztsxmsddgciyz[jdimgvtyvojseeavk]qvyupywbpmhgoppfwru
+eirfjumdodlaevcsigl[befivodoxdnhfmqwkxc]qjaeppumixfpezjf
+lqkzkupjsinhxws[oibgvhxxpewuebro]qbweuxvitezbungy[lapasshrjxcjgdooj]hmxejqpigbcprqregtu[pqqqhbjetacltithm]zhectfbzhtyyvkyazu
+ihfadsstuwooioj[dfqkggnfiplpdcsnmx]ylmhqzhlwtxaxhx[yyqzppjaxhmgnlll]orngviyezsyopwfxmhu[pucykxnzcwdwnjzruf]axfmqcflmrxdldubnca
+rsaoluhtqbbhahhk[ursokfyrzqvmjsq]xlniovtwozkeahaydy[nyualslnfurebmbnv]ehgueldltahorrpbbyr
+lviuzeeixehupjezj[gzwzktpbujzeyypbqyi]ecapnyxygcmgfhgmfav[qclblpzrkfredwm]wcdfuzpoxtmzkif[okgiecyymbnmziyyke]zflgxeqtxzeezvc
+wzpeboftsvuwnxel[hmqswpadnffutphylpg]hbapzwwtxulrfaenb[hgsimoxqivllbthuavr]jpxhxohhxhlhlfemuz
+xbojluzthxlygkyzkwr[hjnkqiofmyuospv]gaglxxtcdnnbfvjubea
+uxtugntiubziynpzbju[onxffxfoxibzzzd]wineojjetzitpemflx[jlncrpyrujpoxluwyc]fxvfnhyqsiwndzoh[lkwwatmiesspwcqulnc]cbimtxmazbbzlvjf
+bezefpkmcyawtdlbnmy[yxmpaexxuojocuutf]gybqtynhfakfryzyoot[rzddrwizmjilbaevypd]wjfzotxmdlvmjcklea
+psehcauaffyyegx[pwkfxlhukfaavgq]pprwkzrtyyghtmsciep[rbobphjpqsmeuvgrjt]vlobomuxuflrqfwjo[nijmtbnuuzplcprb]snfbebpcogbvkwf
+cwflkfoevdvovrmn[xfkkrwrohqcdsdyuomb]ohirkxwgudwyepwtvm[ootlpxttypewmdjq]snhujgngvmxwpmagis[fmbwhgzljomkrdcph]pvfendnvzctahabni
+eoczaktxgrdpwordn[rbhnrlgckthgxxuzu]htgvsgazuzqpkjoejg
+wwadqndhcahxivixrpr[byzxpjmhnwsplkf]zgwftzdjcyjhuefzynn[pvifqpqbtfpvxmhma]atwcwmmvncdisnmw
+cjbhnctazhwdvcvza[ydnxbdfkufaflga]tyxejwcbirwrznjbf[wmrholfqzuzmywhlx]yuglypghwrwzmduczd
+sucrzntdgccanozz[dbyodxkqvfamarbda]iwcomrnnifahrolyhj[lldsewtcmdwovjto]kxnjfljadgqmjmmr[jpceairekkatfdo]loulprskwdwpwupvlow
+rmkxvrnxpnlpgxk[ymfqtqhsulsvevgy]mwlnvrwgovdeimq
+cjytdtwgtpfaoqpo[ekwzzukvazymdgcjbax]qmhoxsmtmokxfyggfsl[ghoubcwbxpcflxaoiqr]mhzvuhnaesfygwphehq
+fjfuuxzzuifgatypkx[pqxsrnqgcfmmojf]drmywevzjvfsdwoe
+aaltjjojczwavnn[wsduayllqabakudvkzo]lnkpzrwwahybafhnmlt
+trzcoixqxcnlfmu[kxdaqkezsbtcrsel]aimhkjueidtzheak
+knsjvqpezxmhuhawprd[zfschikoyuarwrpvh]jnwcjfkahqerhof[eiezpktdgiogoghnyq]xumsccawinipdfbk
+qdxlgihyxpurnyesn[uoqazfufeeorudagpbq]doynfpdydwxymmbnh
+hhxsolxzfchrnjue[qibcadmwrkmkbeye]xydgasalivcqoag[oyblkffxdgogkbjkk]denthwhcbyimeeyyb
+oomceudfrpdpinwaw[umnoeimbzecoaprmqr]vnswrzldpdlfoaaaxv[ysmxmvvxuzozxtkar]eatvxgtbqcoquhhzzn
+mrgnhaqqyhhvdfoo[brbrzbaajkxnrbkpsx]qknvrvpfabkczng
+xtvcrctmszksrojch[bqfzfdhhsfkolghur]dwqpjaqisitqmhpnkxb[omfmirdtvkdoehc]dgogacudqnrtshre[nudirbvfeacxjhb]igdfrdrqycnowffn
+vrgmsmohxhgyybr[shaciuypkvkjaqoho]dlwfavdhohiruaef[iowdifdsyckgfaixzbi]rbkuyahekeohyxnyxmo
+giaemyheoijyiqs[dditjewdytotrevtph]nrcosaxnrsfnglxyrbh
+aqpquczuuqsqfmiynf[rytylbwxvhzymqtqal]olufblbfhnqfhbdpjc[njyewyvnezayxeqkooz]yawvjaofjaqcpsaqnlj
+ynntsleqhquylfosn[esbohqcciuuyintjnn]krtinqbvgjtfvdttys[cahezzmqcfayrtijrl]jlquffpwepfjhij[gsryvmkutwbfvekc]xwuhwthwkpiprtpn
+wcifpmwramdtgbyx[mnetsyvjbkzlemkkrj]ghtuuasxyhlhdiqi[oidnivyrbzficmrkxa]sshjteaabilnbbv
+jpzlvsyhfjewjsp[zaukqnrnkxuyblu]itarroefggdtpkwknhm
+nxdmkipobgdhcekuk[edajmdcmxhcxntroa]vgrzzrytukuxdetf
+elfvvedwjbltwcnsbat[wlyogdvixiwmkxvshnm]cwhhqukydgvfwzkw[hendekbuynbsgeza]unurlefaaduvvpbi[uriiixudeogykwckty]tilfmprasfargwjoeaz
+ehllosfwjnemfpzkjbh[paefpdhywomalbjjwco]jynaehuopnolwbg[cusfqbvxlvqtqbuxgyg]dnvunkjnzqnxcginfx
+jfdeexfzxrfxleh[xqkthmkzmmfbesrfa]ddwxrlspxpefvpkhiz
+fpexyleujiphzrejgu[rjjuimrbnfxihopoasz]xiovbrwkxkchdagu[rssesjbgdfwwomrpdxi]xurzdbytoxjkwyzl
+wtudecnnxchnjhuz[ntnjpmwnwqpqqkcevi]xibzynwnkahwfizkxni
+hxvhhsyrupdpvjymv[jgionvwaxuiemcdtvn]riesyfkfymxxite
+ndpfqkkiqgvdiciv[qwegblwhxefkszrc]ddticzcfwxoylaheuam[kyqomblpykgrsofpbz]woykqlgorinilldl
+lupajnaqxzgawmnb[zfmybtxebhkalxwfwyt]sknfwfxgdqpbnqebbt
+qkttfgfwmqxgpbcgqvg[zkftxwwbappqdllajhi]ducnsepawowmjggv[osygsyvnhlhkrzahzoa]iygudcaycsrtbkohbrd
+akdvrmxjbjaahjcfhz[nueiutbritxbampij]vjirxewhgmmwlora[uauyvvwvrfhbxituz]omfdcitqhjhentxgfu[fucgdtoxvryasxib]wyvdxqpofoszluslht
+eorazrawyakawjfxdtw[bpyrfrsjhfualcoyfjc]gfgrienuzeifrfvw
+mcfhxjmwxlcreeloqkj[xlhrkjackiehnqj]iubxmjyssnwjolapvs[tnxnpotyzdxhqamjfu]qakefkzqtcahednybux[tosvyefshtbgasbf]uimrnuvlevqylbpkq
+emyfqgrtebopsxa[qwacgpmlcpoitzmdq]weqwomfyfqhxmkjalw
+dgnbvzkwdnxzuduvdee[palmkulrnlnjdyeavyi]cjgsjpbxpairrderw[nnoxigqxpkjzjhfxgxx]xdyxrtslnpmmtpotla[undscmvmhuxzohsdg]ghxcwnjphcmvttna
+uppsitifhxdcjbn[yiqjsnlktwkbfyho]dpftntebjwcyuih[rrqikyarnxteelpkc]qbjeplbraadbjxoicjn
+mqjlmaekarsttdmnl[cwdajzaopmbrikcv]vfhztmfwqcwsbdnyebk[puetgqkczejvdjbfqc]hdkqfycmizzpuoxumm
+maldhmhtlcsjqyzrb[zjbfpjpvdszrqkpzf]xspijlrjyzjputpz[mcjmewdtmgfqutbah]hebhshxtiedpjpjngu
+hiqikcyyvddlcggnq[ehsopbptguatpmyb]wfayjslqiqivsbrhedh
+zriahyyoezygvjmepy[dujudufydhkqlbc]ndalzjrjswnjujfm
+silotorivixpdydnd[wtsojgrfgugwoyo]pfihyfhusblbdodtej[hfclibenimixyexhble]gaglopphfrhqxikvw
+ddejnfspvmvffpfyozn[odqqmwgalivbswfio]rbbkjhvnszgvfjtgog[fgvufpphptnjcmraha]adsajvzndnajmilk[ukslffqfzyvxyxy]njzcfhdqyrzzctmnxn
+ehdmevcrfoeejfedbnz[cidowzljgyawbjmtzun]mxyjuechgccpwlxj[ynbdkyqvibsfwekcjr]qjilshucvucbebxmeyu
+wfyklfdesrxsopcnj[otmmdkdasnvomdhef]lpbexhubcjmfwlt[maeuvtcgzoxemnreol]qbwqszxalocdbfbtge[wbvswinrpyzjbfrsr]tinsrsxtrfkizkeu
+grorjgszsijwlhxfrjv[hmjhqmbipfjguwkzebl]kgphtaonflqlgbyk[qxnjzdupbhhsevc]tyflwvcpxchibnttwsn[ukpfpknbyacpxmoxzmp]dxzkerytewihuptx
+csyjgthhgyhnjuxxg[sjqffhahrjyoqxncjcj]owwprabojlpraeyk
+ibcaffhxenjnmvrnog[shqpfncawueqmpyj]hawlfakyplonsim
+ftaeqqsyebdeveutf[tnifrefjkddtblslzwd]cbdooorsorxwxugrp
+ioigxerknwyrzoztkv[ffkgwjfeowgtoxnyt]zhkhaqrcdjsvxctdj[ebntbwbxzbbqrdasjz]solgzrowmzozovz
+jfmlobddfxzipyzyaj[qghvghaxzmuhrpifyf]idrqkcfvatwsyom[wncyawwmennmgio]luzaexvwjhxbryah
+pjcydgylusqdexbb[nsoyssffvolztzns]mntwrdacovyfxcqfn
+tagdiyuylrtvuyu[exjzdpmovyftjpxgj]vnswkkhaoldjfkwd
+atowdglgkmbnrvyt[uzgadzquqpggiapdznk]snpqanyoeufutazn
+nltynylwgqezegky[rawbwledrpbduldc]isupsldtvjtahlwjgz[upmovvichcymgwuoqrc]gyjptxtuaqcfixjuanz[cxzbiosnqkeaxlkrxh]yglfdtzazlkxgmrlel
+ezensxwulgqdgytdfo[ozlmpzteuyjqrxocn]crruxzecnvrcpjurn
+ycflwfbhueatnpimmkm[tbcsifgtkkwtxosxau]vsnyspuvhhfozxgjbbp[adcyzxtdknieifc]hjkfmbmxkrnksewsqjn
+gffllhgsmlpxkktcq[wjqwhqrwepermblfolw]wzgcjyrpisbwyhnz[yjvzaqjsmdgazjuep]gregropoulmnagcvx[gfjkkejnxmpfbtecy]ufbqwnifaugffsai
+xfrmlrlrhxsownybek[ryhsyltyflhjbmltndc]agtvigglsugquzbc
+rshzvotgovlabfxr[sbuytwdobnvpwcax]bynmysulnnjmhkf
+cevbpuyyvlutjcuutl[pfwloktlqbxfcogrc]dflejqcyvpasjowhsj[nscuwnjsrzehqamogtw]scemydqevrcuvhwxpe
+nsbvubuyjrzsalkdwz[fooatkopdyvkxjgfho]jwojdgxqtlzxgna[vmkwusptfjbgmhq]xkzpfgkklnxunma
+jovdewpqyfouyzpegwg[eigxaawljopqauy]cjvieeexlyiovsugif[wtkkpylnxtqrepkjei]jrdmibhhcftoeauh
+flpwanunpldmcnated[unzsihvveyitclcf]gqxlznjbnpmiojuunu[kxihijtbrbyhkzosvk]xoxdqctctmroxoppilv[equfcbnltdiwdmahu]sxfloedvbznwctnuqt
+wtktlikeigdndpyw[dspimpajtzfzmfya]rmmuigyferofztnuir
+thnfrvngjhjrwdatdc[vwmnddbpbakuapirel]qojpomziuupsfysyfng[gkgjyjoovotmjwwgvrq]xxfsycfupudisdbtk[hnieklknhbwcfka]qbanhtkdijnnfegs
+mazcgrfwolhhbtman[jokgcthhpopluovccrg]eybriinzdwjyfjes
+kwxxubruqgrsifrpuxe[pqjcuxzpykriher]rcjvrturrhxqhjndj[umqwgmhgidzakfnk]nzbbrgxxsmkxahvqzs[rnqcmdjyrldnzrr]nhztvrovbpifyxbcvti
+kgojbczgybkjpoz[nyemqsvkokdfxiata]lrstpiuovispfmuoi[jifgmwihkzirfnblzqu]dixnvdkqejtatylghtd
+owhhzrmvmuosrtiwaf[xvdujvnkkrunymvh]dihbvchdelxcqsmlxe
+atcmrejivvyxxbsexp[cjlvkmfgfjslzeno]liavdjycjpirlux
+snvgwihgkhrsgdzysbh[bbyzthwnbpquvtrmlc]cdwvzdogbisfoopk
+lccrydahkgmzirmjzfv[rkkdtcqmlfkxmke]xkercumbulkzrlgxng[deksxliclevazssc]yhidzcmnbvgacmdv[ucxflzawmxnmpxa]hrfaesdlnukcblbqlm
+jdajqnzqyhcomekhejp[tyrtsgspmlmrbkm]nyfcgbagjplztrigokr[ntzzerjwsgafymxw]ftckmtirxfdfcqpi[pulepgarnqxbvlqmvog]qashqfzwglljzexbnsv
+kjvalulqegxybfhx[djfulullrbsebeknl]bcxpgathyauumxcrsmk
+fihxcyovovcmukir[gucbridfutpdnto]abzjiaponkgoposvhw[vpqwcnzmovnwdwwo]zrkqlpnszeioesnhk
+nyvobmkhkbenucug[dwpifbppiwftzokarg]vxxalauqmooacfmdox[intaxgcpfajzdwmcsk]brknzsnhuukxjuv[fkheyxevpuphuflvzkk]levqirhqhynkthsef
+uwdcywcarjujlnh[qvtowczbkenlghcmara]kfhcbnrkorcoyhkww[mzzwrpwwkrnnfavjxk]hcjjzxeynegdpfwdw
+xtgkbqtzbeptcxndjxl[jzmbcxsmcrtjtqi]wnhqmctldgxjbrtio[brnnosnckhalqzqsyyv]uhungebnygpsmpzmj
+xrqpqqsqazzlqcdglgf[ziiwwokpqiinmqe]stagyposntgyxnh[ubxzaskwfzlfrmw]fimsoerydnghxlg
+bdqtpixvllcdhgfqby[xurgfxznrblksso]wgfyjdmpjqirhiqvgg[pbgnckfbdinlepkb]mqbqboepuqheaop
+xxlhstlmqypoyhb[czlhqkifhucxqanafx]jkaaxiwxrnneudczrtn
+jhcmhtveqenmeczz[rcpnnuwvwiyfjxo]bvtashqfjcnbrqy[ebgihcdcimvgdwochq]pmallgnuofajusz
+ltzknsdqzdmbpxipt[golssizcvkrcmquotrj]nqjkcgdagjqzvri[xzehrntfgcnmgrh]devpsfftuonmevocw
+wgklxpmeoznyxtukh[nevjkmpvlbaulxjieh]wopqaknwlwjquxt[mxzczmngcaxharjipt]tuvwngrmylububv[ryewaqhshtogggdvc]xpkbqydbwshscjcw
+uglrhqngbxqtqmdlyym[ihdwlwfqiwnigvyarcw]miyynkctggbwzfkq[rqycaudamvwoxju]mmnzentjyyddntnpgxf[qjryduwnivawjepknli]toodveiqtzjxjvq
+tkgmnxgifkqzuut[csyogdborjrnygg]rpcbucosajyyyelju[bbujqtlveymlqesvg]wvyfimibeynzhsotymx[tqxldisulrhuckef]kgqjgtaluastnwev
+qifwiunabpnzezlmhh[ffwsncvlqpulttkx]wlwdpgntblnoubom[fksogvukjlzupwetlef]cfszpnemoifasqw[ttmonrrbhknspuqx]htucxamhxsoigvt
+putioshxpafnkcwdejm[dellcuoevwyyhvwurpv]zezpevhlmpzbevln[rigyoryyhoxwlbg]zkdzexpizgsumkuiuy[hycpaavxiqnlngrc]gknnfredhsmpofldn
+eknxasjdtsksamfc[dhtgifeezlgfhlyvfdz]xfttcwzqucrtngdpcmf
+uyiazdptoxzxbzo[bmuglholukatdbf]ascjhcllcatoapyvn[isqfrvbbkzsxixjuqrq]ncwzqqgudgwrtxvzfe[spqvftdlddlfglgg]zrqbukmufumytpc
+czefxpifdsqjjkoxgj[klwshjzagbrgtpiht]xofokkhzlnjplefofcj[xodekgjbgraikdley]dgsrqzqxjxjqftn
+ertbujoaanuvqskr[hsgeexqdgsqfkiunhpa]orgvxylmsdlzeyjzf[mdkgzwdnvtyoogulx]nbapgjckrfxeniiqotx
+wgywdqnvxooqjsefac[qgpmwggewotnmloq]bqdvbzpvqwadroh[bvbsnhmdurzcubvsno]ndwqyjenerqdupuob
+patbwuitsfeqvswby[htsntyfmofqldcbwgv]zolnndvkaimzdmevb[feyvwvkelmujnppg]tjajsdtevgjukkgrwr
+hoznvyznwitnxlvu[kigfxgwcrdmfwgsqnf]lhiqoaqezmswakdcd[gxmjrmvoxkdfmgcpqnn]ditkwvolcazfuxzfroy[qqlbrrwfedrgtrgm]iysjaakrbnqicefqxsr
+ufrkrtywkhfhfah[vufpfwhtxzbdqnraz]kklboeggazttzui
+tplrraxhaaaoczdpg[vzbnososnioajien]dvdckrkfdetoofpi[bywkgphzoglisygthku]gxtnstjmffnepin[evccrlnwjthfxhhqzc]lisguwkfwswblzc
+lyluhnglmfippljtwww[wnkwnwwsasqbrnlo]nilnannzjbpgbjs
+iknqwrvlcztavivxmh[vtfyhjzauqbyjchjt]zxmasnczpxlusknrmtf[yvfnxlrwgfxkdlj]otlivjvbvilezalha
+xbrzzccetyjzrlt[buwwhcatpcchdvhel]wosdwuuzpekifdhhvpy[twwoaezcowxvioqsrrd]uuygkhojhlcofza
+wqeintsbeqzjpuvx[wqlcamjmpbtqqzjcy]czhyqcurqkfnnkoltja[lozjcddygpevnxebmqd]avwqdpfxcrcvmalaczo
+aecvebozlythtcfzt[uisdkrrjeboxpuclbg]sjxcgygpeuirukx[zeoyaxgdyzfkprewiyc]rdlnzpbwgztivpdon[sfcqbpfgffkchksmfjp]yfgrlxiixyurxupuoij
+vnglyokdpxlgphpw[bjnaqkjojazyryswr]bekdduuwrqabarzwzh
+fcggyliuipcvnimphib[adkvjaembjcqbcc]envpiocijefswhv
+pgraswoweceiftu[khhpmbjghxgmhsud]axqjkekmecwunefk[pvelpeorryjcstk]lruensapttjtyxnr
+jomdrazkwryxuyc[qolcqhwdidalguboza]fcofbrgowezhbyqckrw[wurpvelnhdewfoita]swxwyfynaymvrhleuj[icdlergnbqmowlxjl]vxcwgvrvpdejoybt
+axbedlkxkmbvwacv[uabrmhoepcgtsdmjjzy]iqqpitszpejeeophjmv
+gmltcuvpeuofwteput[eyxdpnceufobjelir]hvajyjjzgkyrtgvrfs
+sfyyzksaymsvykmr[xjewfmfhhbrmwzf]cbzjmltnzvcodwtytbz[ewgckbdvfnkkyxyj]dfcrjyoakdyggbsxm
+wxjalqmicwmwkzakcy[mothnmmvgypeacecvz]hbjasxlsbbgxpfdptk
+qtsgwqpihqjgmjadkjz[skpdhegagxxbmayy]eaojrccgpxovqpi[ixyljrfgswullqnbzdz]etvomvkwpzpxxcj
+mbnifyngahvfhtfhql[azcbyxkvcnoatuo]scgddcntikvavaseu
+uciiofzqjkhndnzx[hoyxdxfahorycpfcofk]epeazzccheaegyobu[sculkaizijfqcrpjl]nrvfdtpvgoqioomvmv[axmvmzytxnbfcsjf]fccriiwmdaveeyamwp
+sxizvuhprsyyxgfqgqx[zwszjxransryibshzw]ikquiagnkoqexlsqypb[zpuqrhaqvkuvhiqk]pvuqiqxpjtsyqgcyr
+svjudmyxlshxbbvawl[inswkufalzfwoumcv]hrobewddabqsiuej[ulhptknpxcwqxjxanjd]osfyeygptwfjmvrma[pnuynwtwuulsizw]srhurplerqabvouelhn
+islwmbcjeljkceppiw[whvcrbqzgtcfbcuv]tcyzkgyzdaekgnzzmz[ddefwmnklcddlhow]npzbtwmzmhjtzljnr
+lgdjrkugqewlqxvn[wtvrzflzauwcxkyp]qbswluceqlesdfwy[kbtmzcvoubbiqfc]honrvxwcqsgphvkt[djuuancygxacmka]knseftjiunzuxdi
+miapzpluxnmdfvi[edlbwflzitzghywio]vizzhfxgilwpwhr[ochurvodstmhiypp]rycvogpcnysngytixb[mqnrhpbvojfefcicx]zxqxoinunlkjvetkvrv
+spsecopdywuheqbnm[npwovcwlwooxqhyp]hkuizzsdvysvhvmlc
+oqchahhsrywoeteaeg[ucowjiwrzkfhyebbco]efxdrribepcvduwjgf[nvyogembujkkmcm]kmfrlcaeawrvofxrim[izjebqewubrbvguzk]ngmugyprdvrbqskn
+vwlikshqcpgxqvqshv[izqveivxdxgytqgdk]abnvmprwbvwmrwlkkp[iffpegqsxjwfyvixtwk]iseiapjkgnkcepr[gtfhysdedzxwrhcgt]ktaeihyqegeozdfuz
+aieqqwhwfwxpldni[huyxdcvpglqqkeyeia]teztoyeycqohfli[uqvfjzbsvttphqxsy]afsxoqbqvtxtgriuzjm[psumrbbtxdxlwpk]qwpuwevhjellemzp
+surpbndlvplunisu[alnojwsmgbtaomke]zjyikoebzazpwql[lkgsnxodocsrniokroa]mrcipdncevvazafvkb
+dkszjaqhbkyxwvwj[wykmzcvppharrax]pvrqzqhabqtuhrj[qfxnormttaxsldn]kxjwkrjwvbiutgnfnw[mbspfflblosguqzt]nifozavfsfkngds
+uwafdvptgkfikprb[xhmrwxqxnbkfpdz]efhnfwvovbvglrrt
+kozevksryerpsrgmub[dbtinyialvlkgilue]pyqdyodlttsnrsmfvca
+mgfmdcxibcgzhrfmm[mzvyabccrdzlaiij]arnetejwseofkwqvxi[fylixbrjhxdfhiewbnb]wvndnswxdnbcktp[tetomqdkfmcndddruy]biuxgrvctlbbrqmxjp
+snjnfgbtgpkouxlpd[vapbqurlxyrduxqy]meyhgdsbvkdadsfozf
+fgknedldithvaoxqpl[mihhhdrtpjmoridqamt]vfupazymsipoana[ngqkziyavxkyukp]qqysmfkyaxbuytr
+fugbgojgdeavlmrut[zpukymkjkapibmhg]mmdesmcwbhlfugkdiz
+lhhhlyioiiknkray[omilmxkodlmvzhkgbaf]cyftkgjpvjvdnortlj[ifljdtkgscmnmxsq]nxtettqnuaotfsh
+whayrxopbtvnpobokn[jfbobalkbfjxcsn]jjucgwedwbcfrdginaf[atdoatealbqhiks]alzapbxuvmivqfgpg[qhzdwsbvcbtlpchem]pxxskedydgisthkatn
+xzreuonsdqobzpxr[zamxighfvnaxqum]olbigclentyvugtuvg[ysrgcksohtkvcqmksqr]gnaqqezdmnfbbnir
+gmmabzkwsehkwjnevvd[uuzdntitdazeykwek]aebpajrwpyknqgx[kczhcuveeawmdiwljzl]ugwigmilwkczrcqnfo[piezzmfwnfdhnlbranp]qhremthdwdegacvptfe
+tcqhlxasqmbwzuiuirp[kfqoequocdsfwqt]ikhdkpkmeezfzfyyilf[lrorfowgsqkflwauhu]zshoiccvfwohudsmdcr[zohspdmqcdvgagdknr]zabaqgsmrwkrtcuyct
+fzanofpykognmio[ladtxyissyfrssobo]xqpwrgdmglgqhwawqok
+hynipihszohrqwaezga[iqtpgjpngbwhpailzg]wfgimkpjrjnkroueh
+lpmrkesaqdojkqrp[dcgsayoowgpiwam]arphrffqpcdntlxsza[ogneaqyckrvdcvqxbm]xlogrojsovrzfzjtjbd[qjoiyyatxkwsrvldp]gffgmieinxlfzpiej
+jaeayfunulncspts[stghconfjhkqkrxncwi]kcnaqhyukuirsaeebp[vynwfnoxxxbqztj]gddvegwjuryfnkgkpqq[jnhmbdpvsxreqhoek]pgpikslhvbnmbxbkbc
+lajiqiaxcxgpvsbu[bfetstragmoosbw]hzurjpxhecnadwosn[dquibbrojgurqiqd]aceccsnyrnfmcsd[quqxmzleqvspvsemjpn]noxrndgdrkffsdvh
+bytcvwxuavajevmde[nhmjatzolmbdfgogup]qpildujniqlnfbmuf[gxpgorlbxpqfsoreuey]hcfyjmkoywueuivrio
+amvudustnspjqsbpjp[wdudhbvvlgzbbbwlafg]kwpyjvuerzyzmzft
+vwpklmfpzssyoifbb[bwtpxodxedpdsvgu]azathmhdnqkhbmrdlxn
+iwzncixpjxypnmykke[wlhvfjbumhmtachoab]wtftbolwhpwnropnzv[zhfcmkbwizknymev]twrumqadwvsaciwbwoi[evodjtvrucrzgtwio]fmmbddkwwpaziycik
+dkodbaotlfdaphwzbcc[ldzeemqiovyqjgs]qxibabdusgaistkru[usglloxgycyynmp]aaocvclsocababbzxeg[liaacgfxytuqudp]jvvqsypuoduyhvraak
+bwzsacxgqkbjycgfw[dbnligvrmqscasutn]rbgybqqsgjvlonkut
diff --git a/2016/aoc7/src/main.rs b/2016/aoc7/src/main.rs
new file mode 100644
index 0000000..254f23d
--- /dev/null
+++ b/2016/aoc7/src/main.rs
@@ -0,0 +1,95 @@
+use std::io::BufReader;
+use std::io::prelude::*;
+use std::fs::File;
+
+fn main() {
+ let lines = read_file();
+ let mut ssl_count = 0;
+ for line in lines {
+ let mut in_squares = false;
+ let mut char_buffer = [' '; 3];
+
+ let mut abas = Vec::new();
+ let mut babs = Vec::new();
+
+ let mut chars = line.chars();
+ char_buffer[0] = chars.next().unwrap();
+ char_buffer[1] = chars.next().unwrap();
+ char_buffer[2] = chars.next().unwrap();
+ if is_aba(char_buffer) {
+ if in_squares {
+ babs.push(char_buffer);
+ } else {
+ abas.push(char_buffer);
+ }
+ }
+
+ for c in chars {
+ match c {
+ '[' => {in_squares = true;},
+ ']' => {in_squares = false;},
+ _ => {}
+ }
+ char_buffer[0] = char_buffer[1];
+ char_buffer[1] = char_buffer[2];
+ char_buffer[2] = c;
+
+ if is_aba(char_buffer) {
+ if in_squares {
+ babs.push(char_buffer);
+ } else {
+ abas.push(char_buffer);
+ }
+ }
+ }
+
+ //println!("ABA {:?}", abas);
+ //println!("BAB {:?}", babs);
+
+ let mut is_ssl = false;
+ for aba in &abas {
+ for bab in &babs {
+ is_ssl = is_ssl || correspond(aba.clone(), bab.clone());
+ }
+ }
+
+ //println!("Is SSL? {}", is_ssl);
+
+ if is_ssl {
+ ssl_count += 1;
+ }
+ }
+ println!("SSL_count: {}", ssl_count);
+}
+
+fn read_file() -> Vec<String> {
+ let file = BufReader::new(File::open("input.txt").unwrap());
+ file.lines()
+ .map(|line| line.unwrap().trim().to_string())
+ .filter(|line| line.len() > 0)
+ .collect()
+}
+
+fn is_abba(char_buffer: [char; 4]) -> bool {
+ char_buffer[0] != char_buffer[1] &&
+ char_buffer[0] == char_buffer[3] &&
+ char_buffer[1] == char_buffer[2] &&
+ char_buffer[0] != ']' &&
+ char_buffer[1] != ']' &&
+ char_buffer[0] != '[' &&
+ char_buffer[1] != '['
+}
+
+fn is_aba(char_buffer: [char; 3]) -> bool {
+ char_buffer[0] != char_buffer[1] &&
+ char_buffer[0] == char_buffer[2] &&
+ char_buffer[0] != ']' &&
+ char_buffer[1] != ']' &&
+ char_buffer[0] != '[' &&
+ char_buffer[1] != '['
+}
+
+fn correspond(aba: [char; 3], bab: [char; 3]) -> bool {
+ //assumes both follow the aba pattern, so [0] == [2]
+ aba[0] == bab[1] && aba[1] == bab[0]
+}
diff --git a/2016/aoc7/test_input.txt b/2016/aoc7/test_input.txt
new file mode 100644
index 0000000..a675097
--- /dev/null
+++ b/2016/aoc7/test_input.txt
@@ -0,0 +1,4 @@
+aba[bab]xyz
+xyx[xyx]xyx
+aaa[kek]eke
+zazbz[bzb]cdb
diff --git a/2016/aoc8/Cargo.lock b/2016/aoc8/Cargo.lock
new file mode 100644
index 0000000..dd33856
--- /dev/null
+++ b/2016/aoc8/Cargo.lock
@@ -0,0 +1,98 @@
+[root]
+name = "aoc8"
+version = "0.1.0"
+dependencies = [
+ "regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "kernel32-sys"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "memchr"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "regex"
+version = "0.1.80"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
+ "regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+ "thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "thread-id"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "thread_local"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "utf8-ranges"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi-build"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[metadata]
+"checksum aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66"
+"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
+"checksum libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "a51822fc847e7a8101514d1d44e354ba2ffa7d4c194dcab48870740e327cac70"
+"checksum memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20"
+"checksum regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)" = "4fd4ace6a8cf7860714a2c2280d6c1f7e6a413486c13298bbc86fd3da019402f"
+"checksum regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957"
+"checksum thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03"
+"checksum thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8576dbbfcaef9641452d5cf0df9b0e7eeab7694956dd33bb61515fb8f18cfdd5"
+"checksum utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f"
+"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
+"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
diff --git a/2016/aoc8/Cargo.toml b/2016/aoc8/Cargo.toml
new file mode 100644
index 0000000..c49deb6
--- /dev/null
+++ b/2016/aoc8/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "aoc8"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@entelect.co.za>"]
+
+[dependencies]
+regex = "0.1" \ No newline at end of file
diff --git a/2016/aoc8/input.txt b/2016/aoc8/input.txt
new file mode 100644
index 0000000..d827762
--- /dev/null
+++ b/2016/aoc8/input.txt
@@ -0,0 +1,194 @@
+rect 1x1
+rotate row y=0 by 7
+rect 1x1
+rotate row y=0 by 5
+rect 1x1
+rotate row y=0 by 5
+rect 1x1
+rotate row y=0 by 2
+rect 1x1
+rotate row y=0 by 3
+rect 1x1
+rotate row y=0 by 5
+rect 1x1
+rotate row y=0 by 3
+rect 1x1
+rotate row y=0 by 2
+rect 1x1
+rotate row y=0 by 3
+rect 2x1
+rotate row y=0 by 7
+rect 6x1
+rotate row y=0 by 3
+rect 2x1
+rotate row y=0 by 2
+rect 1x2
+rotate row y=1 by 10
+rotate row y=0 by 3
+rotate column x=0 by 1
+rect 2x1
+rotate column x=20 by 1
+rotate column x=15 by 1
+rotate column x=5 by 1
+rotate row y=1 by 5
+rotate row y=0 by 2
+rect 1x2
+rotate row y=0 by 5
+rotate column x=0 by 1
+rect 4x1
+rotate row y=2 by 15
+rotate row y=0 by 5
+rotate column x=0 by 1
+rect 4x1
+rotate row y=2 by 5
+rotate row y=0 by 5
+rotate column x=0 by 1
+rect 4x1
+rotate row y=2 by 10
+rotate row y=0 by 10
+rotate column x=8 by 1
+rotate column x=5 by 1
+rotate column x=0 by 1
+rect 9x1
+rotate column x=27 by 1
+rotate row y=0 by 5
+rotate column x=0 by 1
+rect 4x1
+rotate column x=42 by 1
+rotate column x=40 by 1
+rotate column x=22 by 1
+rotate column x=17 by 1
+rotate column x=12 by 1
+rotate column x=7 by 1
+rotate column x=2 by 1
+rotate row y=3 by 10
+rotate row y=2 by 5
+rotate row y=1 by 3
+rotate row y=0 by 10
+rect 1x4
+rotate column x=37 by 2
+rotate row y=3 by 18
+rotate row y=2 by 30
+rotate row y=1 by 7
+rotate row y=0 by 2
+rotate column x=13 by 3
+rotate column x=12 by 1
+rotate column x=10 by 1
+rotate column x=7 by 1
+rotate column x=6 by 3
+rotate column x=5 by 1
+rotate column x=3 by 3
+rotate column x=2 by 1
+rotate column x=0 by 1
+rect 14x1
+rotate column x=38 by 3
+rotate row y=3 by 12
+rotate row y=2 by 10
+rotate row y=0 by 10
+rotate column x=7 by 1
+rotate column x=5 by 1
+rotate column x=2 by 1
+rotate column x=0 by 1
+rect 9x1
+rotate row y=4 by 20
+rotate row y=3 by 25
+rotate row y=2 by 10
+rotate row y=0 by 15
+rotate column x=12 by 1
+rotate column x=10 by 1
+rotate column x=8 by 3
+rotate column x=7 by 1
+rotate column x=5 by 1
+rotate column x=3 by 3
+rotate column x=2 by 1
+rotate column x=0 by 1
+rect 14x1
+rotate column x=34 by 1
+rotate row y=1 by 45
+rotate column x=47 by 1
+rotate column x=42 by 1
+rotate column x=19 by 1
+rotate column x=9 by 2
+rotate row y=4 by 7
+rotate row y=3 by 20
+rotate row y=0 by 7
+rotate column x=5 by 1
+rotate column x=3 by 1
+rotate column x=2 by 1
+rotate column x=0 by 1
+rect 6x1
+rotate row y=4 by 8
+rotate row y=3 by 5
+rotate row y=1 by 5
+rotate column x=5 by 1
+rotate column x=4 by 1
+rotate column x=3 by 2
+rotate column x=2 by 1
+rotate column x=1 by 3
+rotate column x=0 by 1
+rect 6x1
+rotate column x=36 by 3
+rotate column x=25 by 3
+rotate column x=18 by 3
+rotate column x=11 by 3
+rotate column x=3 by 4
+rotate row y=4 by 5
+rotate row y=3 by 5
+rotate row y=2 by 8
+rotate row y=1 by 8
+rotate row y=0 by 3
+rotate column x=3 by 4
+rotate column x=0 by 4
+rect 4x4
+rotate row y=4 by 10
+rotate row y=3 by 20
+rotate row y=1 by 10
+rotate row y=0 by 10
+rotate column x=8 by 1
+rotate column x=7 by 1
+rotate column x=6 by 1
+rotate column x=5 by 1
+rotate column x=3 by 1
+rotate column x=2 by 1
+rotate column x=1 by 1
+rotate column x=0 by 1
+rect 9x1
+rotate row y=0 by 40
+rotate column x=44 by 1
+rotate column x=35 by 5
+rotate column x=18 by 5
+rotate column x=15 by 3
+rotate column x=10 by 5
+rotate row y=5 by 15
+rotate row y=4 by 10
+rotate row y=3 by 40
+rotate row y=2 by 20
+rotate row y=1 by 45
+rotate row y=0 by 35
+rotate column x=48 by 1
+rotate column x=47 by 5
+rotate column x=46 by 5
+rotate column x=45 by 1
+rotate column x=43 by 1
+rotate column x=40 by 1
+rotate column x=38 by 2
+rotate column x=37 by 3
+rotate column x=36 by 2
+rotate column x=32 by 2
+rotate column x=31 by 2
+rotate column x=28 by 1
+rotate column x=23 by 3
+rotate column x=22 by 3
+rotate column x=21 by 5
+rotate column x=20 by 1
+rotate column x=18 by 1
+rotate column x=17 by 3
+rotate column x=13 by 1
+rotate column x=10 by 1
+rotate column x=8 by 1
+rotate column x=7 by 5
+rotate column x=6 by 5
+rotate column x=5 by 1
+rotate column x=3 by 5
+rotate column x=2 by 5
+rotate column x=1 by 5
diff --git a/2016/aoc8/src/main.rs b/2016/aoc8/src/main.rs
new file mode 100644
index 0000000..cb783ae
--- /dev/null
+++ b/2016/aoc8/src/main.rs
@@ -0,0 +1,117 @@
+extern crate regex;
+use regex::Regex;
+
+use std::io::BufReader;
+use std::io::prelude::*;
+use std::fs::File;
+
+
+struct Screen {
+ data: [[bool; 6]; 50]
+}
+
+impl Screen {
+ fn new() -> Screen {
+ Screen {
+ data: [[false; 6]; 50]
+ }
+ }
+
+ fn rect(&mut self, a: usize, b: usize) {
+ for x in 0..a {
+ for y in 0..b {
+ self.data[x][y] = true;
+ }
+ }
+ }
+
+ fn rotate_row(&mut self, y: usize, b: usize) {
+ let mut row_copy = [false; 50];
+ for x in 0..50 {
+ row_copy[x] = self.data[x][y];
+ }
+ for x in 0..50 {
+ self.data[x][y] = row_copy[(x+50-b)%50];
+ }
+ }
+
+ fn rotate_col(&mut self, x: usize, b: usize) {
+ let mut col_copy = [false; 6];
+ for y in 0..6 {
+ col_copy[y] = self.data[x][y];
+ }
+ for y in 0..6 {
+ self.data[x][y] = col_copy[(y+6-b)%6];
+ }
+ }
+
+ fn print(&self) {
+ for y in 0..6 {
+ for x in 0..50 {
+ print!("{}", if self.data[x][y] {'#'} else {'.'});
+ }
+ println!("");
+ }
+ }
+
+ fn count_on(&self) -> u32 {
+ let mut count = 0;
+ for y in 0..6 {
+ for x in 0..50 {
+ if self.data[x][y] {
+ count += 1;
+ }
+ }
+ }
+ count
+ }
+}
+
+
+fn main() {
+ let lines = read_file();
+ let mut screen = Screen::new();
+ for line in lines {
+ if line.starts_with("rect") {
+ //rect 3x4
+ let re = Regex::new(r"rect (\d+)x(\d+)").unwrap();
+ let cap = re.captures(line.as_ref()).unwrap();
+ println!("{} parsed as RECT. A={}, B={}",
+ line,
+ cap.at(1).unwrap_or(""), cap.at(2).unwrap_or(""));
+ screen.rect(cap.at(1).unwrap().parse().unwrap(), cap.at(2).unwrap().parse().unwrap());
+
+ }
+ else if line.starts_with("rotate row") {
+ //rotate row y=0 by 4
+ let re = Regex::new(r"rotate row y=(\d+) by (\d+)").unwrap();
+ let cap = re.captures(line.as_ref()).unwrap();
+ println!("{} parsed as ROTATE ROW. A={}, B={}",
+ line,
+ cap.at(1).unwrap_or(""), cap.at(2).unwrap_or(""));
+ screen.rotate_row(cap.at(1).unwrap().parse().unwrap(), cap.at(2).unwrap().parse().unwrap());
+ }
+ else if line.starts_with("rotate column") {
+ //rotate column x=1 by 1
+ let re = Regex::new(r"rotate column x=(\d+) by (\d+)").unwrap();
+ let cap = re.captures(line.as_ref()).unwrap();
+ println!("{} parsed as ROTATE COLUMN. A={}, B={}",
+ line,
+ cap.at(1).unwrap_or(""), cap.at(2).unwrap_or(""));
+ screen.rotate_col(cap.at(1).unwrap().parse().unwrap(), cap.at(2).unwrap().parse().unwrap());
+
+ }
+
+ screen.print();
+ }
+
+ println!("On: {}", screen.count_on());
+}
+
+fn read_file() -> Vec<String> {
+ let file = BufReader::new(File::open("input.txt").unwrap());
+ file.lines()
+ .map(|line| line.unwrap().trim().to_string())
+ .filter(|line| line.len() > 0)
+ .collect()
+}
diff --git a/2016/aoc9/Cargo.lock b/2016/aoc9/Cargo.lock
new file mode 100644
index 0000000..00bd2f7
--- /dev/null
+++ b/2016/aoc9/Cargo.lock
@@ -0,0 +1,98 @@
+[root]
+name = "aoc9"
+version = "0.1.0"
+dependencies = [
+ "regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "kernel32-sys"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "libc"
+version = "0.2.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "memchr"
+version = "0.1.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "regex"
+version = "0.1.80"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)",
+ "regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
+ "thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "thread-id"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "thread_local"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "utf8-ranges"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi-build"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[metadata]
+"checksum aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66"
+"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
+"checksum libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "a51822fc847e7a8101514d1d44e354ba2ffa7d4c194dcab48870740e327cac70"
+"checksum memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20"
+"checksum regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)" = "4fd4ace6a8cf7860714a2c2280d6c1f7e6a413486c13298bbc86fd3da019402f"
+"checksum regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957"
+"checksum thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03"
+"checksum thread_local 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8576dbbfcaef9641452d5cf0df9b0e7eeab7694956dd33bb61515fb8f18cfdd5"
+"checksum utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f"
+"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
+"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
diff --git a/2016/aoc9/Cargo.toml b/2016/aoc9/Cargo.toml
new file mode 100644
index 0000000..de293f1
--- /dev/null
+++ b/2016/aoc9/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "aoc9"
+version = "0.1.0"
+authors = ["Justin Worthe <justin.worthe@entelect.co.za>"]
+
+[dependencies]
+regex = "0.1" \ No newline at end of file
diff --git a/2016/aoc9/input.txt b/2016/aoc9/input.txt
new file mode 100644
index 0000000..6692559
--- /dev/null
+++ b/2016/aoc9/input.txt
@@ -0,0 +1 @@
+(6x6)AFPLBX(2x3)ZE(53x13)(4x7)ZGQO(2x4)NJ(1x8)M(24x11)(18x7)HMLOASMJNGZHMCEVEX(11x2)(6x6)TRDPQX(157x12)(60x12)(2x3)SB(7x1)FBSAUFK(4x1)NMZK(10x2)RLIIHFEKRY(10x6)GMDUIQDOZJ(71x8)(1x11)N(19x5)EHNAZSRTFYXOZNFTOOQ(6x4)XKARLK(13x1)IRATYZQMJXHAH(4x8)VFUJ(8x6)AOOEHHBF(27x6)(11x9)(5x15)KTTHB(5x6)AELEZ(17x10)AOGNMNTGDJDYEMMEH(7x8)BOIOHRF(6x2)ZKXONV(172x8)(6x5)(1x8)V(17x6)WEVFHKUDETBOZVKIO(2x14)ZI(75x9)(5x5)EXKDZ(4x4)BOGK(10x5)SXYSSOACJR(3x15)FHO(24x10)YBZPMZIPUCEIYNGYAUPVFOKB(43x3)(13x2)MERJWKSXBIEKP(2x4)CR(4x5)DFDQ(2x15)ZM(89x5)(43x6)(16x8)RIGCVPPOSBRJSJCB(2x9)XI(1x11)M(2x8)QT(8x6)(3x8)XVC(20x15)SBWQFWQWPQHXZXDWSXIR(4393x15)(25x5)TEAACSAHWYWPYJZEPDIHUMIPB(1026x1)(1x7)K(768x7)(388x3)(113x9)(70x11)(12x10)HDEPKSMDLHAX(2x5)RU(29x13)BIOENKVYNENIFNCSWNZIJGCZXBUVF(3x1)JRO(30x2)(11x9)NCTAXULXPBY(1x5)K(2x7)WQ(76x10)(13x7)UDCLRUKNLOAEL(17x10)(11x8)TLRICJOXJPO(26x13)HBPYKHNJRGJHSXUFGJAAHODUDG(177x13)(58x14)(17x15)MWIVHZEKJKLDWPYEN(7x5)MLNEAXO(1x2)F(10x2)GMUPKWMFFU(51x13)(2x12)TG(29x1)CJZOBLWTYDISRYKVWHJKRDDNHSABE(3x5)VDV(36x7)(7x2)JOQSKQM(10x4)SSQKRCQCYQ(3x3)HRU(7x6)(2x7)CG(271x13)(14x12)TPDOYGCYWKAOQU(223x5)(15x1)WKAGRMIPECLUUPH(68x2)(10x15)VRFPOQRGAW(5x6)MEVXZ(11x13)INACCUVBTIP(1x12)M(10x5)ECIALUKBGQ(29x5)LDVPFVNKSBWVZCJUOLIJZHYNOXLHZ(42x9)(11x14)HKDQCRYGEWD(3x5)DDV(10x8)KRRTDJEMKB(39x8)(13x8)IWLYAVYPLTFBF(14x8)PMPTEZESXEQSYM(13x12)SYBXETSKQLUYU(12x5)(7x3)(2x4)FH(69x10)(63x7)(6x4)RVKPXJ(46x1)(19x14)YCVJOBRSCSVKJJWUBJI(4x6)VUOI(5x15)WIFPK(237x15)(230x7)(51x15)(45x5)(9x11)BUZLRCBIY(2x5)ZZ(8x6)DNEOUHUT(5x2)QFOTV(164x11)(30x14)YOCHTVEXSZYELWOMGCXOISALUWCWTJ(8x15)QIINZKAI(1x1)F(88x5)(8x1)SIZRWUDB(49x7)AWSFCZFEGKBUKONNMQQSIGHMKQFAMUEBLTQFGEZLMUTNWXOCH(1x12)T(8x7)ZOTXRWXA(7x15)HGGWNTM(1484x6)(691x6)(53x6)(2x14)IB(39x3)ASFVSLNNXYBFSSOPECXZOEVPRIGJCTMLWCFSVTZ(72x4)(66x1)(38x7)(17x7)DXTENHWTOXYZMQFLF(2x2)OG(3x6)ATG(16x1)IBSUFIGHTLDMGRZE(9x5)DKNZYEYGJ(288x11)(165x9)(16x4)MDBGELYWXPUTRCEZ(14x14)PHSIPUMMXOMBWF(57x9)(13x13)WIVFVHXPHBTWO(4x6)XSWT(9x5)CPSCDHORP(1x2)M(3x8)JJE(12x4)ZADOSQULBZRT(34x10)EUJRPXWESNMXYDAUHFPLCLOYZCUKOSDPTZ(108x12)(10x13)CJVGTNJFUE(37x10)LDQKJRVQQKTVRBMNRIFDMZBJOQZKJSBZPWWLQ(24x5)FXOCHIJNODJUEGYPZYTIADPF(11x4)FUNCENOZTTS(237x7)(106x6)(9x6)SBSWNIMDC(58x11)(6x8)VJZVTK(5x2)QRAXJ(3x2)KAC(9x11)EWJHYTQXW(9x2)TSWWFYDYC(21x2)EXPZWOLLWOALTQGUZXTUS(117x2)(6x8)TLGPET(3x7)GBW(39x6)(32x10)VGSULYHYHHFVDEIQYAXVUGNDVDCDGANM(46x13)(14x6)VYXTECTXLBJFWZ(12x6)IFRBYZIXFTOC(2x14)HF(14x7)(8x10)AFPWFLXJ(726x6)(160x5)(45x13)(1x4)K(8x2)(2x14)WF(19x11)EDIZTWWQBGFLFXEWHFA(17x10)WIGPDKRTBSOJTFXKY(15x2)ADLZSCNVATBMRBV(34x12)IVGRGESBMMRDBWKCIDCLYWVXANHCWQQEQL(15x12)WGFAYDKOFYOZWHU(464x6)(42x14)(35x12)(5x12)TVUTT(2x13)RK(2x10)RC(3x1)LXD(20x1)(14x6)OJOAQUIEOIUVXE(152x6)(16x1)IIDXUSCZEOEHDVIP(98x6)(18x4)AFGQQZEGERPRXYXDTI(15x13)UPZDHXFYQRGBNBZ(45x10)GEJVEKLGJBCATXONOSOJWLLZESRRGSLNTRDKDKJKNAOYC(20x4)SHUJGLTDVLVMUBGUYCCQ(202x2)(29x4)(23x9)ZNKNMTBUBYEMBVCDGNHMZRB(123x6)(8x8)QCPLTVYD(2x5)YQ(13x3)XFKTLSHCQAPID(30x1)DRTIAMQDRSIQQIZKAXMVZDLCRHYVWS(41x11)SLVGMXLAUIETLVILQABUODBTBFZZHOSFRUJKLQPSE(21x8)(4x9)EXQY(6x13)QAFDCI(4x10)XYII(15x5)VZTRXIMIYNGDQKZ(75x4)(6x11)RFOKPH(2x15)ZH(10x15)ZDWQPCMXCQ(32x7)DJRJDFDSGKZBQZMNIKCOLHWSLYCQXEKH(1x14)H(27x2)(21x3)GCUQEXKSVPNXNOTUOZBWR(1828x7)(1107x13)(550x1)(177x11)(30x15)(1x13)T(3x1)MTN(9x14)EDQQAMGTE(39x4)(14x2)NPINNXFQEZICDQ(13x3)QYHEGLYNFPMMQ(88x13)(22x13)GLVPCEBDDABCPDHXXXZDTT(1x3)A(1x3)J(40x14)LPRDKSIGCUXWPZIPZKUGMNGLLGQHFDNXLHRNVPEM(14x7)TPYKUDKFRLVPPF(135x10)(10x7)GWRRITBPFN(5x5)ECPKJ(50x6)(4x10)DORU(1x12)S(9x3)YQFICKCXH(7x3)ZJFMLPD(2x9)HK(3x7)HWQ(39x6)NPYOZFXSQJMVHMGSMHMKBOQLXAUVSZZRUGFOIUL(122x13)(7x5)WQPCNYP(35x14)(21x4)UIBUUSAWFXCJOAAOQYWKD(3x3)VKI(17x11)YCWPDYLDDKIDATXKY(38x4)(4x2)FPPY(16x8)ETEICDHDZBPINNTA(2x4)RR(66x3)(59x15)(9x10)WLRKNQFPX(4x3)OCJF(8x1)QSOOLMPP(4x6)DKRV(8x5)PBRRNJTD(377x10)(88x7)(81x11)(17x8)RPFNVFZNWFZCEDXYR(3x3)DMM(6x1)ZOBJHV(1x10)S(26x3)MLOILGCEQPKNQPYBABPWRMGTCU(13x2)KNRNZAANDYZVG(2x15)UR(1x5)Y(242x12)(144x11)(8x6)HUOOXYEN(35x2)HGPTAFHSMKKPDMGARWVNYVCJWMZETRIJNXM(4x4)TJDP(28x5)UKOZMKRXJLSBZJRRVABSWSIEIDMC(40x14)HCTILCVYQXWNUZHZAZGCXKXRZDHFNTKISPMUOLAD(8x6)(3x9)NXB(44x15)(3x13)GZF(9x7)XCHQMMOXC(2x8)EO(8x12)GTHAWKXZ(3x4)TFJ(12x7)JOAKSXHVNNNX(157x14)(150x8)(11x13)(5x15)GVWWA(125x1)(14x12)OALPJNHTLRQGRJ(24x15)EEWRKUJFKQFVCFVVGRNXRNMO(23x12)SWMZOIWGOVLKIRKBHSIAYFY(16x6)VQBYRVNJQKQZUXYC(15x8)SRQFUMLAWWDVVCY(166x3)(8x4)ROOZHNPS(1x5)G(140x3)(5x11)NNJCA(122x8)(12x10)ACNODOEIPNFS(36x7)(2x3)HI(9x12)WVTUTLVXH(1x14)L(1x11)R(28x13)TFKQTKVMFXBNHUCUGXXBKSPBSYOI(2x8)RL(13x5)(8x5)BMGHNIWS(80x2)(4x5)CLIN(64x13)(12x7)PUIYXOSOYXRH(23x9)(1x14)J(1x10)L(3x12)BRJ(11x3)(5x12)LIYCT(446x9)(1x14)A(128x1)(86x9)(15x1)XKXMQLFUXTGSIUI(36x8)UUZAZBICEWZOHBKMLKFMOPRGDNIIXYZIRYBO(16x10)(3x1)DCZ(2x10)RG(15x1)TVCSLSBSQOEZORE(9x12)(4x5)FOWX(67x7)(27x3)(20x11)QHEAAUEGZRHVTYXMHWGD(27x14)(1x6)C(14x15)EHUGFRTEFCLPYB(223x13)(192x1)(27x13)(8x1)ECDZKCJY(8x12)HNTSWDYP(14x1)SMPGAHCDMTHRPF(43x6)(2x9)QY(3x1)NGD(7x11)QBFWGLX(3x4)JCI(1x10)L(31x2)(3x10)NIH(16x2)SFTKKDPDSTPUVOQA(46x3)(1x11)N(19x13)RGTNKUTACWUHOBKHPAF(2x9)JH(1x5)D(18x5)ELEQYVKHCZWCPDKGET(4430x14)(6x6)SGLJXG(1303x14)(8x3)PBGTOJDF(472x9)(1x14)U(299x2)(71x12)(2x14)UZ(13x11)(7x13)OYMYFOR(22x12)MLXGMMRGPSASXFVDRWWYGU(9x5)(3x14)NFY(96x1)(22x8)XALEFGLORBLTMHIWSARRDS(24x12)(17x14)QARJVLVCJVIJEJOLE(8x13)(3x8)HPO(16x14)UMCNXKMHFCKLLSTQ(96x11)(3x8)IYF(82x5)(3x1)OBQ(30x14)UJYENTNVNGKUFYSGTPROKDUVXVAAAP(18x14)OFJNLBOUNGILMQMTBO(7x2)UJJJZAX(3x2)JTL(2x10)YM(112x1)(83x7)(50x6)(4x11)TSPK(2x2)AU(6x15)XSSYWL(3x12)DCS(6x13)OIDFMJ(1x14)N(13x12)EEZZPERSDPKOT(17x7)SBEJBRDQAVFLLCNUW(3x11)ZGN(25x3)(18x15)CSVBGEAPPCXHRXBYIK(1x4)M(664x4)(337x14)(99x5)(12x11)QQXQUTFBUNIV(7x7)ALTZFYQ(15x4)VBFROTJMHRPGBJW(40x12)(23x8)UTBYEFQMPFIEXVVLZXVDWWJ(6x2)BMJTZF(4x3)NRUY(6x12)TKXPAM(62x6)(3x15)RQS(1x5)K(41x8)(12x9)NJRYDQRLHCNB(17x7)AEPPXIYSGQCVSPVMF(135x14)(72x7)(2x9)FB(4x10)OGAV(26x6)QXHCWFQUDQKXVJJGIZDZLTBIKY(3x10)CXD(9x5)IDBZUGYPE(14x2)KYYCJLAYHWQQVD(30x13)(7x11)YXUUJZQ(11x3)YRHZXTLPZJF(311x14)(49x6)(42x12)BLCUHNHXNFKMUKOHBMVPXMURVUESFYMANQKXIQEVOG(79x1)(73x8)(5x3)JGNSI(20x11)DVUPOLXLRCUFVJYHXWJV(15x2)OPIKHDJPHQPXYYX(9x10)FWYSCUOMU(164x1)(91x13)(6x13)UPDAGP(14x5)LIKFHUVDMDQAAK(31x13)FEJFKXKSSAJYNJAKXKRQPUZMHNTBTGI(7x7)OLHMUKA(4x7)EGNE(59x12)(4x7)JSRJ(4x7)JCES(15x6)QTFXSXGYBARIWUP(8x6)LQDBINXU(1x12)H(127x1)(12x5)RHGPFMZRPSFB(4x11)URMZ(93x2)(87x7)(75x9)(11x14)NXGIGQVUUMV(1x6)N(38x3)IUHTFEASJJFMMTHJFEQAAYMSIUUGNMTUUQSOCN(2x7)CN(1x8)B(894x11)(876x12)(587x11)(2x10)BQ(178x12)(96x3)(14x14)BLIWCROJXSLVTK(8x15)KIYKJSRQ(54x15)KTAQJDJHFWAVGGYOZUWYLIBCBQIXHICNALPOGMROGJLDFEAYDTVTNR(2x6)NS(11x1)JKXMXJTBIDP(29x4)(7x13)EBVJEZD(10x3)XRDYMAZSBY(10x10)OIRMTHQLNG(132x2)(31x11)YAGJSHBUQNJREUVAPLXJGSPVFNQVGBD(54x12)(1x12)Y(5x6)UPPMP(9x7)HAVOGCOLF(10x6)TUKIFLCHLV(2x1)YJ(2x11)JJ(19x9)(1x5)M(8x4)UEZWDQZC(45x4)(39x9)(6x9)UWXBMZ(2x12)JJ(3x2)KDB(7x7)FLZMQSC(196x9)(26x7)YUUQIHKCXYRRGSMXGLWMSSAIAP(1x2)W(3x5)XGY(115x5)(8x13)YUGCSANY(10x12)ZVBPLBCJQK(9x7)RGODHRSNC(54x13)KFVTGSWIAKERKDISXRYZDZJEPXSKGAVZKGIKWRSSOTYSYRPEBHOWRC(4x5)PSBS(21x10)(5x7)PKBSK(6x1)CISVQM(241x6)(39x5)(32x14)XIRRYTZBERAKPMGIMOLYNEODGWELVAJP(113x15)(5x10)USAHI(2x13)ZP(88x4)(12x9)WBDEFGCZAMPM(8x11)DZMSAIVZ(3x15)XCK(23x5)LUKNXCCEPEPKSODMGEZJDYY(11x12)CJTACNNPKPZ(61x12)(3x7)YRN(30x7)GCJRMCZOJFMKFZJAJTZOMYXNWIFVSE(11x3)(5x13)BZFIF(2x2)GO(2x15)EM(18x10)YIGMSZEGBPPIMGKUHO(4x14)FUKK(1851x10)(164x11)(117x3)(109x10)(56x15)(3x13)MSN(11x15)VPUOKCEWGFX(7x7)UKXWCWX(2x11)QB(3x13)QFE(12x13)(7x1)WTMANLW(21x5)SDTRPSRMRYUZKIZIMCYLO(33x11)(16x4)(4x8)ASQN(1x10)M(6x1)(1x5)F(1006x3)(21x13)(15x4)WHEZYMBJXTBYCZG(462x9)(227x1)(33x11)(2x10)VR(11x8)PLIFVKRPUWO(3x1)WFI(53x4)(5x11)GUHAR(9x6)OTBCHHMTJ(4x7)JJQH(5x8)TTUUW(4x6)GRAX(1x10)I(27x14)(12x9)TPXYVLAYHHUB(4x3)WNYV(81x3)(20x3)YXDCPPYIDNNAQJMWXFFM(5x8)FZLRN(5x7)BKMSG(12x4)ZVRYPOOSYOMA(11x3)UGUWOKXVITR(220x15)(8x7)IRFZJLCM(34x4)(8x7)KIQHQWLZ(8x1)RTGQVPLE(3x8)RVU(60x14)(3x12)UJP(8x14)NYDICRGG(23x8)CHISDWBISOZYDWRNEBRWDSJ(3x6)EJG(14x12)PIWNBDAEREATVW(73x9)(14x3)IEPNRGKUCCEERW(4x7)FCWC(3x14)EXU(29x1)CDLSEHSCOEUZKWARMGBPXCHYMVQFP(188x3)(7x6)YNYVYUC(43x10)(15x11)YHQHLIEPOVAHHJQ(15x1)(2x12)EC(2x5)KR(113x1)(8x8)ZJHMLYAU(74x12)(5x3)CQZMJ(4x2)QGWN(3x9)LAE(7x1)OCFJMDJ(29x8)FIWUGBREHYRACQYOVVQJBDFHDGMEQ(13x4)GRPUVTXRVSHVM(1x5)F(307x3)(225x10)(47x6)(17x13)VURYAUGWWOIHHQJDD(8x3)WPVVCPUT(5x5)BFBOB(59x1)(8x3)UWPCOMZH(3x13)NRQ(4x13)WUJV(12x5)FUSBMTPOWDTX(3x12)RXT(45x8)(16x6)MTVMZPSDFMLDYLLD(16x14)JUHUHFNBYHGFWLVG(50x2)(2x9)GR(4x6)URSQ(27x10)LAGGDJBKBLVLPJVVDEZCXEJLFBJ(67x14)(7x15)OMHMPKM(2x7)BH(9x14)LDAFCOKEL(25x12)(5x1)QMTQH(1x15)I(2x15)RV(5x1)KKFYZ(639x15)(295x4)(8x10)SLSXUAJJ(160x7)(5x14)ICLSB(86x3)(6x7)CUYULZ(24x14)RZUPMSJMKASMGYUKSAZQKMBC(23x7)NINZWUFKIZZNKOZUAQOROBG(9x15)YJKHZIZFP(2x7)HC(30x5)(8x2)OBZCEUCF(10x10)LNGPRAITSF(8x11)(2x14)NG(106x14)(24x9)ACQDRKVEOEDULYMLYBGOMSIJ(19x2)UBUHEYIJEGFMCZSTDDO(35x4)HFNTQACPTELDNRWVUVKNKPBVIJMZWAZEOKS(5x3)RSIAK(330x8)(179x6)(34x8)(13x1)CCRZOVJLZOBBO(3x14)WPC(1x6)L(15x13)VAVFETWJRRFZFPE(11x13)VKJLGKAOCUC(92x12)(20x10)MRTDKUJPLGPXMTVLRSUF(2x6)QZ(11x15)MHFLVOFUNDC(25x11)SONLCWNGCZFGMSXYJXSFPVGVY(3x2)QRI(136x15)(45x13)(6x4)QQSQCM(1x9)U(7x4)VIDEIXN(10x3)WFRKVWNLJM(50x7)(13x4)OYFDFFFLITCIR(16x6)CIRLRKXBHVHNUPFZ(3x15)GRD(11x3)FMDUOABWGPB(5x15)EWSOH(3x4)JYH(338x8)(331x5)(324x1)(194x3)(2x4)ZF(48x12)(3x9)JVP(4x2)BWLT(24x15)KPNIHTTPTNNAHSSSDLAKDDNT(6x3)SZJQKG(64x15)(19x14)RSMBLFUAZBGBCJPQDES(5x11)KLUTW(1x9)J(5x13)UYNTL(5x8)NVICZ(43x11)(20x6)HURCGFJBVQOKDECLQELO(3x4)XID(4x9)WOCX(38x5)(2x8)KV(25x2)(18x13)SEYOWGYPRRKBHNVVGI(72x14)(18x10)RXBCYLJENTUPCKCIDO(22x8)(5x5)ZPUYC(7x9)LXRWCDN(2x3)XD(7x4)DEKJLWL(1794x8)(1786x4)(297x10)(289x14)(162x10)(78x9)(1x9)T(28x11)WCIFRVQWPNOEEBPKGYPFCOTNMRAP(12x7)IYTEKBFTEZIX(4x6)ALRX(5x2)QSCXQ(72x4)(25x8)OHCTVXZIEWNMEZBVFKTLIMGQW(4x13)XEBD(6x13)UZZITD(12x13)QPGHTTJTMMFJ(103x9)(24x4)FOJJCXKNPHEGIRYIFBLDVUES(66x14)(15x14)AJEUHOVVHZVHGAV(5x9)CVIBX(15x8)WIHEKYSJZCLABUK(8x5)UYQLGBEY(3x14)QAR(690x4)(14x3)KRIBLTDDRJSFGY(4x9)MMCG(338x15)(15x4)(4x3)VIER(1x7)J(76x14)(8x6)VNTBZCVR(47x6)(24x3)HDWQXSRQWIFPKUSRADRBXAPD(11x8)GSSDBTQZINR(5x3)TWHSS(74x2)(5x3)DMUEM(4x2)FLBE(48x14)(10x8)YLSBTQPTJJ(2x10)ZP(8x7)JFXOKRXJ(5x11)WDHLN(82x2)(7x12)IEXUOMG(8x11)PVPIWSQY(36x7)NXNEYNWWPODZRJBIQFLDLZVSEDRPRWZUUXQS(7x11)WWTZGJK(59x11)(52x11)(17x14)QMXUKMPFATJEJQASH(22x6)WEXAZYBXEIIIWKEYRNINYH(246x5)(7x14)XMWZOQI(225x13)(9x6)(4x4)RMSV(35x9)(12x15)FSEJCGTVXEUT(1x7)L(5x5)IALLO(83x2)(5x5)HEUVE(26x8)BGAOGWCKQJVESARPQNTDIKKOKN(34x12)DGCKPWQBLZNXDLLYIWKRAOVPCXIIEWLSMN(75x6)(6x6)RHDULO(16x11)CRXVYYDZXJFFSPOR(5x14)OXTUY(24x4)UHCHXFDOONZXAZTTBFSINOEG(55x14)(12x12)ZKOOCWQTVQUS(19x10)WNHJGQATSCBTMLIVOYB(5x1)ZHQEA(710x7)(2x14)FD(170x9)(162x11)(11x10)MJTMRWMKRNT(28x10)(21x14)MJZQATVTRTWDEQNSZOXKK(59x15)(1x10)K(16x6)AVTYFAJYHSKETUYI(1x15)M(4x15)CDYM(7x15)TGWTHWL(29x11)HWMXLXCZVSSUPDBTIXDEGPNJJZNGX(2x6)KM(487x11)(3x14)UIF(84x4)(5x14)MDENR(66x12)(12x11)WQEVOLYPOSEK(30x5)LKBXTFFEOHNEJHOHKMMUKSDISVVQZE(5x10)PFZCP(197x12)(24x15)JLPYUIJVFQRWOACTFMQPLYHI(55x3)(14x1)KUTCZEZNWSISPL(8x7)YNZXWQMY(6x1)EZVHCC(6x3)AEVYOO(2x6)DE(68x6)(13x3)KRBXMIIHZERUV(3x2)TLR(35x4)LWCSHQCLMZAPMNSXKWCGVGDTKWUQAIWWLWU(17x11)FWYFWEMLVLQQGCJLJ(176x8)(4x2)ICOL(63x7)(37x14)SQVVGHBVLPVSLAYFZBLEGOKEHFSXSVEJOSRXO(2x2)IF(6x10)APYCKZ(73x15)(20x3)EARRAATGOHPONSTXOUVI(20x4)GBRNRAGYDCTGEODHJDUB(1x2)Z(1x15)R(3x4)QBQ(1x2)M(7x6)KJQAHCJ(24x6)UHLVTEERAYIUBGMUKOJFHRUJ(36x7)(30x2)(1x14)H(17x1)BSZIJHGVILXXURQDI(18x12)PSFBREKMLZRFFFRLZG(236x1)(52x7)(2x12)WK(16x10)CRNLMDQWZECYSFOT(3x10)ISI(6x13)FPJKZE(7x9)XOCUXIU(125x5)(105x5)LPOXYLAWSIIRQDNUWVHOLUDYOZSCFNCORKVFMSYIMMNCMNSOUGJHSBYKITYGFWUYHBJCQELUIMYXAFRFIAOSXSOIMGYEPJFPWQXSZYCDD(8x8)ILXIPPGD(7x13)TYZVRQS(14x12)(3x3)WXE(1x9)Q(40x10)(34x7)(2x2)AZ(10x15)UPJJICKDLA(5x6)CHXZV(153x7)(13x8)LCBGVTVMPVNMJ(30x8)(6x8)KXMWXG(6x1)DJRTOU(2x15)FW(79x10)(13x9)RIFNFQDLAWBSQ(3x2)ERQ(19x1)TTHLBYCOPMTXIIDSBXX(9x14)SBPSPMMCK(7x8)MKNEMLA(6x11)YPDDWG(220x9)(65x3)(2x6)LT(13x3)XFOPJCJBLRXYH(8x5)BKPDBCLE(6x2)UNKPOA(9x15)THYQVMZUG(50x15)(9x11)AAXOWDYIN(12x14)IWTCMNVXNJAX(10x4)JPSIYYKGVJ(86x8)(29x10)ORMIZOTUMSVKNEJDCQDQHESLAQKOF(8x14)SHFMBHHV(1x9)L(14x2)QQHGYTMVZAZRDK(5x7)COVRS(51x2)(11x2)ZDTVQIWFFND(5x8)RQTFS(1x9)B(5x9)SINCP(3x3)ACU
diff --git a/2016/aoc9/src/main.rs b/2016/aoc9/src/main.rs
new file mode 100644
index 0000000..622819c
--- /dev/null
+++ b/2016/aoc9/src/main.rs
@@ -0,0 +1,143 @@
+use std::io::BufReader;
+use std::io::prelude::*;
+use std::fs::File;
+
+#[derive(Debug, Clone, Copy)]
+struct Marker {
+ take: usize,
+ repeat: usize
+}
+#[derive(Debug, Clone, Copy)]
+enum Token {
+ Marker(usize, Marker),
+ Literal(usize)
+}
+
+impl Token {
+ fn size(self) -> usize {
+ match self {
+ Token::Marker(x, _) => x,
+ Token::Literal(x) => x
+ }
+ }
+
+ fn is_marker(self) -> bool {
+ match self {
+ Token::Marker(_, _) => true,
+ Token::Literal(_) => false
+ }
+ }
+
+ fn unwrap_marker(self) -> Marker {
+ match self {
+ Token::Marker(_, marker) => marker,
+ Token::Literal(_) => panic!("Bad unwrap marker")
+ }
+ }
+}
+
+fn main() {
+ let mut tokens = parse(read_file());
+ tokens.reverse();
+ let mut length: u64 = 0;
+
+ while tokens.len() > 0 {
+ let next = tokens.pop().unwrap();
+
+ if next.is_marker() {
+ let marker = next.unwrap_marker();
+ let mut used_take = 0;
+
+ let mut tokens_to_repeat = Vec::new();
+ while used_take < marker.take {
+ let next_token = tokens.pop().unwrap();
+ if used_take + next_token.size() <= marker.take {
+ tokens_to_repeat.push(next_token);
+ }
+ else {
+ assert!(!next_token.is_marker());
+ //assume splits only happen on literals
+ tokens_to_repeat.push(Token::Literal(marker.take - used_take));
+ tokens.push(Token::Literal(next_token.size() - marker.take + used_take));
+ }
+ used_take += next_token.size();
+ }
+
+ tokens_to_repeat.reverse();
+ for _ in 0..marker.repeat {
+ for &token in &tokens_to_repeat {
+ tokens.push(token);
+ }
+ }
+ } else {
+ length += next.size() as u64;
+ }
+ }
+ println!("Length: {}", length);
+}
+
+fn parse(text: String) -> Vec<Token> {
+ let mut tokens = Vec::new();
+ let mut chars = text.chars();
+ let mut current_char = chars.next();
+ while current_char.is_some() {
+ let c = current_char.unwrap();
+ if c == '(' {
+ let mut char_count = 1;
+ let mut take_str = String::new();
+ let mut repeat_str = String::new();
+ loop {
+ let n = chars.next().unwrap();
+ char_count += 1;
+ if n == 'x' { break; }
+ take_str.push(n);
+ }
+ loop {
+ let n = chars.next().unwrap();
+ char_count += 1;
+ if n == ')' { break; }
+ repeat_str.push(n);
+ }
+
+ let take: usize = take_str.parse().expect(format!("Tried to parse take {}", take_str).as_ref());
+ let repeat: usize = repeat_str.parse().expect(format!("Tried to parse repeat {}", repeat_str).as_ref());
+ tokens.push(Token::Marker(char_count , Marker{take: take, repeat:repeat}));
+ } else {
+ assert!(c != '(' && c != ')');
+ tokens.push(Token::Literal(1));
+ }
+
+ current_char = chars.next();
+ }
+ collapse_literals(&mut tokens);
+
+ tokens
+}
+
+fn collapse_literals(tokens: &mut Vec<Token>) {
+ let mut i = 0;
+ while i < tokens.len()-1 {
+ match (tokens[i], tokens[i+1]) {
+ (Token::Literal(l1), Token::Literal(l2)) => {
+ tokens[i] = Token::Literal(l1+l2);
+ tokens.remove(i+1);
+ },
+ _ => {
+ i += 1;
+ }
+ }
+ }
+}
+
+fn read_file() -> String {
+ let file = BufReader::new(File::open("input.txt").unwrap());
+ file.lines()
+ .map(|line| line.unwrap().trim().to_string())
+ .filter(|line| line.len() > 0)
+ .next()
+ .unwrap()
+ .trim()
+ .to_string()
+
+// "(25x3)(3x3)ABC(2x3)XY(5x2)PQRSTX(18x9)(3x2)TWO(5x7)SEVEN".to_string()
+}
diff --git a/2017/Cargo.toml b/2017/Cargo.toml
new file mode 100644
index 0000000..d84b5bd
--- /dev/null
+++ b/2017/Cargo.toml
@@ -0,0 +1,10 @@
+[package]
+name = "advent_of_code_2017"
+version = "0.1.0"
+authors = ["Justin Worthe <justin@worthe-it.co.za>"]
+
+[dependencies]
+regex = "0.2.3"
+lazy_static = "1.0.0"
+structopt = "0.1.6"
+structopt-derive = "0.1.6" \ No newline at end of file
diff --git a/2017/LICENSE b/2017/LICENSE
new file mode 100644
index 0000000..026d0f3
--- /dev/null
+++ b/2017/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2017 Justin Worthe
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/2017/inputs/day_1.txt b/2017/inputs/day_1.txt
new file mode 100644
index 0000000..7a4debd
--- /dev/null
+++ b/2017/inputs/day_1.txt
@@ -0,0 +1 @@
+21752342814933766938172121674976879111362417653261522357855816893656462449168377359285244818489723869987861247912289729579296691684761143544956991583942215236568961875851755854977946147178746464675227699149925227227137557479769948569788884399379821111382536722699575759474473273939756348992714667963596189765734743169489599125771443348193383566159843593541134749392569865481578359825844394454173219857919349341442148282229689541561169341622222354651397342928678496478671339383923769856425795211323673389723181967933933832711545885653952861879231537976292517866354812943192728263269524735698423336673735158993853556148833861327959262254756647827739145283577793481526768156921138428318939361859721778556264519643435871835744859243167227889562738712953651128317624673985213525897522378259178625416722152155728615936587369515254936828668564857283226439881266871945998796488472249182538883354186573925183152663862683995449671663285775397453876262722567452435914777363522817594741946638986571793655889466419895996924122915777224499481496837343194149123735355268151941712871245863553836953349887831949788869852929147849489265325843934669999391846286319268686789372513976522282587526866148166337215961493536262851512218794139272361292811529888161198799297966893366553115353639298256788819385272471187213579185523521341651117947676785341146235441411441813242514813227821843819424619974979886871646621918865274574538951761567855845681272364646138584716333599843835167373525248547542442942583122624534494442516259616973235858469131159773167334953658673271599748942956981954699444528689628848694446818825465485122869742839711471129862632128635779658365756362863627135983617613332849756371986376967117549251566281992964573929655589313871976556784849231916513831538254812347116253949818633527185174221565279775766742262687713114114344843534958833372634182176866315441583887177759222598853735114191874277711434653854816841589229914164681364497429324463193669337827467661773833517841763711156376147664749175267212562321567728575765844893232718971471289841171642868948852136818661741238178676857381583155547755219837116125995361896562498721571413742
diff --git a/2017/inputs/day_10.txt b/2017/inputs/day_10.txt
new file mode 100644
index 0000000..6544f8c
--- /dev/null
+++ b/2017/inputs/day_10.txt
@@ -0,0 +1 @@
+187,254,0,81,169,219,1,190,19,102,255,56,46,32,2,216
diff --git a/2017/inputs/day_11.txt b/2017/inputs/day_11.txt
new file mode 100644
index 0000000..c31c097
--- /dev/null
+++ b/2017/inputs/day_11.txt
@@ -0,0 +1 @@
+s,s,sw,se,s,nw,nw,ne,n,ne,n,n,n,n,n,n,n,ne,n,ne,ne,se,ne,n,ne,n,n,ne,se,sw,se,s,se,se,se,se,s,se,se,s,se,se,nw,se,se,se,s,s,nw,s,s,se,nw,s,n,s,nw,s,s,s,s,s,s,s,s,s,s,s,sw,s,s,s,s,s,sw,sw,s,sw,s,nw,sw,sw,s,sw,ne,sw,sw,s,se,sw,sw,sw,sw,sw,sw,sw,nw,sw,sw,sw,se,sw,nw,nw,sw,sw,sw,s,sw,nw,se,nw,se,nw,sw,nw,nw,se,n,sw,s,s,s,nw,sw,sw,nw,se,nw,sw,sw,sw,nw,sw,sw,nw,nw,nw,nw,ne,n,nw,nw,ne,nw,nw,nw,nw,nw,se,nw,nw,n,nw,nw,nw,sw,n,nw,nw,nw,nw,n,s,nw,ne,nw,s,nw,nw,nw,n,nw,nw,nw,nw,nw,nw,s,sw,n,n,nw,nw,n,n,nw,nw,n,nw,n,n,nw,n,s,n,nw,ne,n,nw,n,nw,n,n,n,n,se,s,n,s,n,s,n,n,n,nw,n,s,n,n,n,n,n,ne,n,n,n,n,s,n,n,n,n,sw,n,n,n,nw,n,n,n,n,nw,se,n,ne,n,n,ne,n,ne,ne,n,n,n,n,ne,n,n,nw,n,n,n,n,ne,se,se,ne,ne,ne,n,ne,n,ne,ne,nw,ne,ne,n,n,n,ne,ne,ne,n,ne,nw,n,s,ne,ne,ne,ne,ne,n,s,ne,ne,ne,n,ne,ne,ne,sw,ne,ne,ne,s,n,ne,ne,n,ne,ne,ne,ne,ne,se,ne,ne,se,ne,ne,ne,ne,se,ne,se,ne,nw,nw,sw,s,n,ne,ne,ne,ne,ne,sw,ne,ne,ne,sw,ne,ne,ne,ne,sw,se,ne,ne,ne,ne,se,s,se,s,nw,ne,ne,n,se,ne,ne,ne,sw,ne,s,s,nw,se,nw,ne,s,ne,se,ne,n,ne,n,s,n,ne,ne,s,ne,se,se,ne,sw,nw,s,n,nw,n,se,ne,se,se,sw,ne,ne,sw,se,se,se,se,sw,ne,se,s,ne,ne,n,se,ne,sw,ne,ne,se,se,nw,se,ne,ne,nw,sw,se,s,s,se,se,se,s,se,nw,se,ne,se,se,se,se,se,se,se,sw,nw,se,se,se,se,se,se,sw,se,sw,ne,se,se,se,se,se,se,se,se,s,se,se,se,se,se,se,ne,se,se,s,sw,s,se,se,se,se,se,se,se,s,se,sw,se,se,n,s,se,s,ne,se,se,se,s,se,s,se,se,ne,se,se,sw,s,se,se,se,se,nw,se,n,ne,s,s,nw,se,se,s,se,n,se,se,s,se,se,s,se,se,ne,se,se,se,s,s,sw,s,s,se,s,se,s,se,s,se,se,se,s,se,s,nw,s,s,se,se,se,se,sw,sw,s,se,s,se,se,s,n,se,se,se,se,s,se,se,s,se,se,se,sw,s,s,s,se,se,s,s,se,s,s,se,s,s,n,s,nw,s,n,s,sw,s,nw,s,s,se,se,sw,s,s,s,sw,se,s,n,s,se,n,s,se,se,se,s,s,s,se,ne,s,se,n,se,s,se,se,s,ne,sw,se,s,s,se,s,s,s,s,s,s,s,s,se,s,nw,s,s,s,s,s,s,s,s,s,s,s,ne,ne,s,s,s,s,s,s,s,s,s,ne,ne,s,s,s,s,s,s,s,s,nw,s,s,se,sw,s,sw,s,s,nw,s,s,s,s,s,s,s,s,s,n,ne,se,s,s,s,s,n,se,s,sw,s,sw,sw,sw,s,s,sw,s,s,s,nw,sw,s,s,s,s,s,ne,sw,s,s,sw,s,s,s,s,s,s,sw,s,s,se,s,s,sw,n,sw,s,s,sw,s,s,s,s,s,sw,s,ne,s,s,s,s,sw,ne,s,ne,n,sw,s,s,s,sw,s,sw,nw,s,s,ne,sw,sw,nw,s,s,sw,sw,s,ne,s,s,sw,se,s,s,sw,s,s,sw,s,sw,sw,s,s,s,s,sw,sw,sw,s,n,ne,s,ne,s,sw,s,se,s,sw,sw,s,sw,sw,sw,sw,s,s,s,s,se,s,sw,sw,sw,sw,n,s,sw,s,s,sw,sw,s,s,n,sw,s,sw,sw,ne,sw,sw,s,sw,sw,sw,sw,sw,s,s,sw,se,sw,sw,sw,sw,s,s,sw,s,sw,sw,nw,sw,sw,se,sw,s,s,nw,nw,s,s,sw,sw,s,n,s,sw,sw,se,s,sw,sw,ne,sw,sw,sw,sw,sw,ne,sw,s,sw,sw,n,sw,sw,sw,sw,s,sw,sw,sw,sw,sw,n,nw,s,sw,s,s,n,ne,sw,sw,sw,sw,n,sw,se,sw,sw,s,se,sw,sw,sw,sw,sw,sw,s,ne,ne,ne,sw,sw,sw,ne,s,sw,sw,sw,sw,nw,s,sw,sw,s,s,sw,sw,n,nw,nw,sw,sw,sw,se,nw,nw,sw,s,sw,sw,sw,sw,sw,sw,sw,sw,sw,n,sw,sw,sw,nw,nw,se,sw,sw,sw,sw,sw,ne,sw,nw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,nw,s,sw,sw,se,sw,s,sw,sw,nw,nw,nw,sw,sw,nw,sw,se,ne,sw,sw,sw,sw,ne,sw,sw,nw,sw,se,nw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,n,nw,sw,sw,sw,s,sw,sw,nw,n,s,sw,n,nw,nw,sw,sw,nw,sw,sw,se,sw,sw,nw,sw,sw,s,sw,nw,sw,nw,sw,nw,nw,nw,sw,nw,sw,sw,sw,sw,sw,sw,sw,sw,sw,s,sw,nw,nw,ne,n,nw,sw,sw,nw,sw,sw,nw,nw,nw,sw,sw,sw,ne,s,sw,nw,nw,sw,nw,sw,s,nw,n,nw,sw,sw,nw,nw,sw,nw,nw,n,sw,nw,sw,nw,sw,n,sw,nw,sw,sw,sw,sw,n,sw,n,nw,nw,s,sw,se,sw,sw,nw,n,sw,sw,sw,n,sw,nw,sw,ne,nw,sw,sw,s,n,nw,sw,nw,nw,nw,sw,sw,sw,nw,nw,ne,sw,s,sw,nw,n,sw,sw,sw,nw,ne,ne,sw,nw,nw,sw,s,s,sw,sw,nw,ne,sw,nw,sw,nw,nw,sw,sw,sw,sw,nw,nw,s,se,nw,sw,nw,ne,s,nw,nw,ne,sw,nw,nw,n,nw,nw,sw,sw,sw,nw,nw,nw,sw,nw,nw,n,sw,sw,nw,s,n,sw,nw,nw,sw,nw,n,nw,nw,nw,nw,nw,nw,sw,sw,n,n,sw,sw,nw,nw,nw,nw,ne,nw,nw,nw,sw,nw,nw,nw,nw,ne,nw,nw,nw,nw,n,nw,nw,nw,s,nw,nw,sw,nw,s,nw,ne,ne,nw,nw,sw,nw,nw,nw,nw,sw,nw,se,sw,nw,sw,nw,nw,ne,nw,n,nw,nw,sw,nw,nw,nw,sw,nw,ne,s,nw,nw,sw,s,nw,sw,sw,nw,nw,nw,sw,s,nw,nw,nw,nw,se,nw,s,nw,nw,nw,se,ne,ne,nw,nw,nw,nw,nw,sw,nw,ne,ne,nw,nw,nw,nw,nw,nw,nw,nw,nw,sw,nw,nw,nw,ne,nw,nw,s,nw,nw,ne,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,sw,nw,nw,nw,nw,nw,nw,nw,ne,nw,n,nw,nw,ne,n,nw,sw,nw,n,nw,n,sw,nw,ne,s,se,n,ne,se,nw,ne,nw,ne,nw,ne,nw,nw,nw,n,nw,nw,nw,nw,nw,nw,nw,ne,nw,s,se,nw,n,n,nw,ne,nw,nw,nw,nw,ne,nw,nw,s,nw,nw,nw,nw,nw,n,nw,nw,nw,nw,nw,n,nw,nw,s,nw,nw,nw,nw,nw,sw,nw,nw,nw,nw,nw,n,nw,nw,nw,nw,nw,sw,n,nw,nw,nw,nw,nw,nw,nw,s,nw,se,n,n,n,nw,se,nw,nw,s,s,nw,nw,n,nw,nw,s,nw,nw,nw,se,nw,nw,nw,se,nw,nw,nw,nw,se,nw,nw,nw,nw,nw,n,nw,n,ne,nw,nw,nw,se,ne,nw,nw,nw,n,nw,nw,ne,n,n,nw,nw,sw,nw,nw,nw,nw,se,nw,n,s,nw,nw,n,n,nw,se,n,nw,nw,nw,n,nw,nw,nw,n,nw,se,n,se,sw,s,n,s,nw,nw,nw,nw,n,n,s,nw,nw,se,nw,nw,se,nw,n,n,nw,n,se,nw,n,n,nw,n,nw,n,nw,nw,n,nw,n,s,nw,nw,nw,nw,ne,ne,se,sw,nw,n,n,nw,s,n,nw,nw,n,n,nw,n,nw,nw,nw,nw,nw,n,nw,n,n,sw,n,se,nw,n,n,nw,n,nw,nw,n,s,sw,nw,ne,nw,n,sw,nw,nw,n,nw,sw,s,nw,n,n,nw,se,n,nw,n,ne,n,nw,nw,n,nw,nw,n,nw,n,nw,nw,nw,n,se,sw,nw,nw,nw,sw,nw,nw,nw,nw,se,n,n,ne,n,nw,nw,n,nw,nw,n,sw,n,se,nw,nw,n,n,n,nw,n,nw,n,nw,n,ne,n,n,nw,n,n,n,nw,se,sw,n,sw,n,nw,nw,n,n,n,se,nw,sw,ne,n,se,nw,nw,n,n,n,n,n,n,nw,n,n,nw,sw,nw,n,sw,n,n,se,sw,n,n,n,nw,sw,nw,n,n,n,n,nw,n,n,nw,n,s,n,n,sw,n,nw,ne,s,nw,ne,n,n,n,ne,s,n,n,n,n,n,n,se,nw,nw,n,n,nw,n,n,s,se,n,nw,n,n,n,n,n,n,nw,n,n,n,nw,nw,nw,n,n,n,nw,nw,sw,n,se,n,s,n,n,n,n,n,n,ne,n,se,n,n,n,se,n,nw,n,nw,n,n,n,n,n,n,n,nw,n,n,n,n,n,n,ne,n,n,nw,n,n,sw,n,nw,n,n,sw,n,n,n,nw,se,n,n,n,nw,n,s,n,n,n,n,n,n,n,s,n,n,n,n,nw,n,n,sw,sw,nw,n,nw,nw,sw,n,n,n,n,n,n,n,n,n,n,n,s,n,n,n,n,nw,n,n,n,n,n,n,n,s,n,nw,n,sw,nw,ne,n,nw,n,sw,n,n,n,n,n,ne,n,nw,n,n,n,n,n,n,n,ne,n,n,n,n,ne,n,n,n,n,ne,n,n,n,n,ne,n,n,s,n,n,se,n,n,n,n,n,n,n,nw,n,ne,nw,sw,ne,nw,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,ne,n,n,se,n,ne,n,ne,n,n,n,n,ne,n,ne,se,s,ne,nw,se,n,n,n,n,se,n,n,ne,s,n,nw,n,nw,nw,n,n,n,n,n,n,n,n,n,s,n,n,n,s,n,nw,n,n,n,n,n,n,n,n,n,n,n,n,ne,ne,n,sw,n,se,n,n,n,n,n,n,n,se,n,ne,n,ne,n,n,n,n,n,sw,n,n,s,nw,n,n,n,ne,ne,n,n,n,ne,n,n,se,n,n,n,n,ne,n,n,n,s,n,se,ne,n,n,n,n,n,n,n,n,s,ne,s,nw,n,ne,s,ne,n,n,n,n,ne,n,n,n,n,n,n,n,n,n,ne,n,se,ne,n,ne,ne,ne,ne,se,n,n,ne,n,n,n,n,nw,ne,sw,ne,n,n,ne,se,n,n,n,n,se,n,n,n,ne,n,se,ne,ne,n,s,nw,n,ne,n,n,nw,n,n,ne,n,ne,n,sw,n,se,n,ne,nw,ne,ne,n,n,n,ne,n,ne,nw,n,s,n,n,n,n,ne,n,n,ne,n,nw,n,n,n,ne,n,s,n,n,n,n,n,ne,ne,n,sw,n,ne,n,n,sw,ne,n,ne,ne,n,n,ne,ne,ne,n,ne,ne,ne,n,ne,sw,n,n,ne,ne,ne,se,n,ne,ne,ne,n,nw,n,ne,n,n,n,ne,n,n,n,n,n,ne,ne,n,ne,s,nw,ne,n,ne,ne,ne,n,n,n,n,nw,n,n,ne,ne,ne,n,ne,n,ne,ne,n,ne,ne,nw,ne,nw,n,n,ne,se,ne,se,ne,n,nw,n,n,s,n,se,ne,ne,n,ne,n,ne,s,n,n,sw,ne,ne,se,n,ne,n,n,n,n,sw,ne,ne,nw,n,n,ne,ne,ne,n,ne,n,sw,ne,ne,ne,ne,n,ne,se,ne,sw,n,n,n,ne,ne,sw,ne,ne,ne,n,ne,ne,n,ne,se,ne,s,nw,n,sw,n,ne,n,n,n,n,ne,n,sw,ne,ne,nw,n,ne,se,ne,ne,ne,ne,n,ne,ne,n,ne,n,ne,ne,ne,n,s,s,ne,ne,ne,s,ne,ne,ne,sw,n,n,ne,n,s,ne,n,n,nw,n,se,sw,ne,ne,ne,s,n,n,ne,ne,n,ne,ne,nw,ne,ne,ne,s,se,ne,ne,ne,n,ne,nw,n,ne,ne,sw,n,n,ne,ne,ne,n,ne,ne,se,ne,ne,n,ne,ne,ne,sw,s,n,n,n,se,n,s,ne,ne,ne,sw,ne,ne,se,ne,ne,ne,ne,ne,n,s,se,ne,ne,ne,n,ne,sw,se,s,ne,n,ne,ne,n,n,n,ne,n,ne,ne,se,ne,ne,n,ne,ne,ne,ne,ne,s,ne,ne,ne,nw,ne,ne,ne,ne,ne,n,ne,s,ne,ne,ne,n,ne,sw,n,n,n,ne,ne,n,ne,s,n,n,n,ne,ne,n,ne,ne,ne,sw,se,sw,ne,ne,s,ne,nw,ne,nw,se,nw,n,ne,se,n,ne,ne,ne,ne,ne,s,ne,ne,ne,ne,ne,n,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,se,ne,ne,ne,sw,ne,ne,ne,ne,n,ne,s,ne,s,ne,ne,n,ne,se,ne,ne,nw,n,ne,ne,ne,s,ne,sw,ne,n,ne,ne,n,ne,ne,ne,ne,ne,ne,n,ne,ne,ne,ne,ne,se,n,ne,ne,ne,ne,sw,ne,n,ne,se,ne,ne,ne,se,se,ne,sw,n,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,sw,ne,ne,ne,sw,n,n,ne,ne,n,ne,ne,ne,sw,ne,n,ne,ne,ne,se,ne,ne,nw,nw,sw,ne,ne,ne,ne,sw,ne,se,ne,n,ne,ne,ne,nw,ne,ne,ne,ne,ne,ne,sw,ne,ne,nw,ne,ne,ne,ne,ne,ne,ne,ne,sw,ne,ne,s,sw,ne,ne,s,sw,sw,ne,ne,ne,nw,ne,n,se,ne,ne,ne,ne,n,ne,nw,ne,ne,n,se,ne,ne,ne,ne,sw,ne,ne,s,ne,s,ne,ne,ne,ne,ne,ne,ne,nw,ne,ne,ne,se,ne,ne,ne,ne,se,ne,ne,sw,ne,s,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,sw,n,ne,ne,nw,se,ne,ne,ne,ne,se,ne,sw,ne,ne,n,se,ne,ne,se,ne,sw,nw,ne,ne,ne,ne,ne,ne,s,ne,se,sw,ne,s,ne,se,se,se,ne,ne,s,ne,ne,s,ne,se,ne,nw,s,ne,se,ne,ne,ne,sw,ne,se,ne,ne,ne,sw,ne,ne,ne,ne,nw,ne,ne,nw,ne,ne,s,ne,ne,se,ne,ne,nw,ne,ne,se,se,se,ne,se,ne,se,se,ne,ne,s,ne,ne,ne,ne,ne,ne,ne,ne,ne,n,ne,ne,ne,ne,ne,ne,ne,s,se,ne,sw,ne,ne,se,ne,ne,ne,ne,s,ne,se,ne,ne,se,n,n,ne,se,s,ne,s,ne,se,nw,ne,se,ne,ne,se,ne,se,se,ne,ne,se,ne,ne,ne,n,se,ne,ne,ne,ne,s,se,se,n,ne,se,se,ne,ne,se,ne,se,se,ne,ne,sw,ne,ne,ne,ne,ne,ne,nw,se,ne,se,ne,se,ne,s,ne,ne,sw,ne,ne,ne,ne,ne,s,se,ne,ne,s,se,ne,ne,ne,nw,ne,ne,ne,se,ne,ne,ne,ne,se,ne,ne,ne,se,ne,ne,se,n,s,ne,ne,ne,se,s,n,se,se,ne,sw,ne,ne,n,ne,se,n,se,n,s,n,s,ne,se,ne,ne,ne,ne,n,ne,se,sw,se,ne,se,nw,ne,ne,ne,se,se,ne,ne,ne,ne,ne,ne,ne,ne,nw,ne,n,s,ne,ne,ne,ne,ne,se,se,se,se,sw,s,n,ne,s,ne,ne,sw,se,se,ne,ne,ne,ne,ne,ne,se,se,s,ne,se,ne,nw,n,ne,se,se,ne,se,ne,ne,se,se,se,ne,ne,sw,se,nw,se,nw,se,se,se,se,ne,n,n,ne,se,se,ne,ne,se,ne,ne,se,ne,sw,ne,se,ne,n,se,nw,sw,ne,ne,se,ne,se,ne,ne,se,ne,se,ne,ne,ne,se,ne,se,se,n,nw,ne,ne,ne,ne,sw,n,ne,ne,ne,nw,ne,se,se,ne,ne,s,nw,n,ne,ne,ne,ne,ne,ne,ne,se,ne,sw,se,ne,s,n,ne,ne,se,ne,se,se,ne,se,ne,se,se,ne,se,se,se,ne,ne,ne,ne,se,ne,ne,nw,ne,ne,se,ne,s,se,ne,se,ne,ne,ne,ne,n,se,ne,se,se,ne,ne,ne,nw,ne,se,se,nw,ne,se,se,ne,sw,ne,ne,ne,n,ne,ne,ne,n,se,ne,se,ne,n,n,se,ne,se,se,se,ne,se,se,sw,se,ne,se,ne,sw,sw,ne,ne,ne,s,n,ne,ne,nw,ne,n,se,se,se,se,ne,nw,ne,ne,ne,se,ne,se,n,n,se,n,se,se,se,se,se,ne,sw,ne,se,ne,se,se,se,ne,sw,se,s,se,se,ne,se,se,se,n,ne,se,se,ne,ne,ne,ne,se,se,ne,se,se,ne,se,ne,ne,se,se,nw,se,se,ne,se,sw,se,ne,n,ne,se,se,se,nw,se,se,se,ne,se,ne,se,se,ne,se,se,ne,ne,se,se,sw,ne,se,se,sw,se,se,s,ne,ne,se,ne,s,ne,se,se,ne,se,nw,n,se,se,s,se,ne,se,ne,ne,sw,ne,ne,n,se,s,n,ne,se,se,ne,nw,ne,ne,se,se,ne,sw,ne,ne,ne,se,sw,ne,se,se,ne,n,ne,se,nw,se,se,se,ne,se,ne,ne,ne,s,ne,nw,ne,ne,ne,se,se,se,nw,se,ne,se,se,se,ne,se,ne,se,se,se,ne,se,se,se,n,se,ne,ne,se,se,se,se,sw,ne,se,se,se,ne,se,nw,n,ne,ne,ne,sw,n,se,n,se,se,n,ne,se,se,ne,se,ne,se,nw,se,se,se,s,sw,ne,se,sw,se,se,se,ne,ne,se,ne,se,se,se,se,ne,se,se,ne,se,se,ne,se,ne,se,se,se,ne,se,ne,ne,se,s,ne,ne,nw,se,ne,n,ne,se,se,ne,se,n,ne,ne,se,ne,se,se,se,ne,se,se,ne,ne,nw,ne,s,se,se,se,se,se,sw,nw,n,se,se,s,se,se,se,nw,se,n,nw,se,ne,ne,se,nw,se,se,se,se,se,se,ne,se,se,se,se,ne,se,se,ne,se,se,se,se,ne,se,se,se,se,ne,ne,nw,se,se,se,se,se,se,s,se,se,se,n,se,ne,ne,ne,se,se,se,se,ne,se,se,ne,se,se,se,se,se,se,se,sw,se,ne,ne,s,se,se,ne,se,se,se,ne,ne,se,se,se,se,se,se,se,s,sw,se,ne,se,se,se,se,se,se,se,n,se,sw,se,se,se,ne,se,se,se,se,se,s,ne,nw,se,se,se,se,se,sw,se,ne,sw,se,ne,se,se,ne,se,ne,n,ne,se,se,ne,se,ne,nw,nw,se,se,se,se,se,se,se,se,se,se,sw,se,se,se,se,se,nw,se,n,se,se,ne,se,se,nw,se,se,se,se,se,ne,nw,nw,se,se,se,se,ne,se,se,se,ne,ne,se,se,se,se,se,se,se,se,se,se,se,sw,s,se,se,ne,nw,se,se,se,se,se,se,sw,sw,se,ne,sw,nw,se,se,se,se,se,n,se,se,ne,se,se,se,nw,se,ne,se,se,se,s,se,se,n,se,se,ne,se,s,se,ne,se,se,se,nw,se,se,n,se,s,n,se,se,se,nw,se,s,sw,se,ne,se,se,se,nw,se,sw,se,se,sw,s,se,n,ne,sw,se,n,nw,se,ne,se,se,se,se,se,ne,se,se,se,se,se,se,se,se,n,se,se,se,ne,se,se,se,sw,se,nw,se,se,ne,se,se,se,se,n,ne,se,se,se,n,se,se,se,se,se,se,se,s,s,se,se,se,s,ne,se,se,se,se,se,se,se,se,se,se,se,se,se,n,n,se,se,se,se,se,se,se,se,se,s,sw,se,se,se,n,nw,se,se,se,se,ne,ne,se,n,se,se,sw,ne,sw,se,se,ne,se,se,se,se,se,se,se,se,se,n,se,nw,se,se,se,sw,s,se,se,se,se,se,se,se,se,ne,s,se,se,se,nw,s,se,n,se,se,se,s,sw,se,se,se,se,nw,ne,se,se,se,ne,s,se,sw,se,se,se,se,se,se,s,se,s,se,sw,se,ne,s,se,se,nw,se,se,nw,n,se,se,se,nw,nw,se,se,se,se,se,nw,s,se,se,ne,se,se,se,se,se,se,se,sw,se,se,se,se,se,se,nw,se,se,s,se,se,se,se,s,s,se,se,se,s,se,se,se,s,s,n,se,se,se,se,n,n,se,sw,nw,se,s,se,nw,se,s,nw,nw,se,s,se,se,se,se,se,se,sw,nw,se,se,s,se,se,se,se,se,se,n,n,ne,se,s,s,se,se,se,se,se,se,s,se,se,s,se,se,n,se,se,s,se,s,se,s,se,sw,se,se,sw,se,ne,se,sw,se,se,se,s,nw,se,ne,n,se,se,nw,se,ne,se,se,se,s,se,se,nw,se,s,se,se,se,nw,se,se,sw,s,se,s,se,se,nw,s,se,se,s,se,se,s,se,se,se,se,se,sw,s,se,se,s,sw,nw,ne,nw,se,nw,se,s,se,se,se,se,se,s,se,se,se,se,sw,s,sw,se,se,se,s,sw,sw,s,n,se,s,se,nw,se,se,se,ne,se,se,se,se,s,se,se,s,nw,s,se,s,nw,se,se,se,se,se,n,s,se,ne,n,se,se,nw,se,s,se,n,se,nw,s,s,s,se,nw,s,s,se,s,se,se,nw,s,se,s,se,se,se,se,n,se,se,s,se,se,se,se,s,s,se,s,se,se,s,se,s,n,se,n,se,se,s,se,s,se,se,s,s,se,se,s,se,se,se,se,s,s,s,se,s,nw,s,se,se,se,ne,nw,se,se,se,se,se,se,n,se,se,se,se,se,se,nw,se,se,se,s,s,nw,se,ne,se,s,se,ne,se,se,nw,se,se,se,sw,n,se,sw,se,se,nw,ne,s,se,sw,se,s,s,s,se,s,se,n,sw,sw,se,se,se,ne,se,s,se,sw,n,se,se,se,s,s,se,s,se,n,s,ne,se,se,s,se,se,s,sw,s,se,se,ne,s,n,se,se,se,s,s,s,se,se,s,s,ne,se,s,se,nw,se,s,se,se,s,s,s,se,n,se,se,ne,se,se,s,sw,se,s,ne,se,se,se,s,s,se,se,se,se,se,se,se,s,ne,se,s,se,s,s,nw,nw,s,s,nw,s,se,se,ne,se,se,se,n,s,s,s,s,se,se,s,s,s,nw,sw,se,s,s,n,se,s,s,s,s,n,s,se,s,s,se,sw,nw,nw,se,se,se,s,sw,se,se,se,s,se,se,s,s,s,se,ne,s,se,s,s,se,s,ne,se,se,se,se,se,se,ne,se,ne,s,se,se,se,se,se,s,s,s,n,se,nw,nw,s,se,sw,se,se,s,se,se,nw,s,s,s,ne,nw,se,se,se,n,ne,se,s,se,ne,se,ne,sw,ne,se,s,sw,se,se,se,s,s,ne,s,se,se,sw,s,s,s,s,se,se,s,s,se,s,se,s,s,nw,s,s,s,s,nw,nw,se,s,s,sw,s,se,nw,s,se,s,se,s,se,n,sw,n,ne,s,s,s,se,se,nw,s,n,se,s,s,s,se,s,s,s,sw,se,se,se,se,se,se,sw,s,nw,se,n,s,se,sw,nw,se,se,se,se,s,ne,se,ne,s,s,se,se,se,s,s,s,s,n,se,sw,n,s,nw,s,se,s,se,se,se,s,se,n,s,se,nw,se,s,s,se,se,se,s,s,n,s,se,s,s,s,se,se,se,s,s,s,s,se,se,s,se,s,s,s,s,s,s,s,s,nw,nw,se,n,sw,s,s,ne,s,nw,s,se,s,s,sw,s,se,nw,se,s,s,s,s,s,s,s,se,se,s,se,ne,s,se,se,se,s,s,s,se,ne,s,ne,s,s,se,s,s,ne,s,s,se,s,s,s,s,s,se,n,sw,n,s,se,se,s,s,nw,s,sw,se,n,s,se,s,s,sw,s,s,s,s,s,nw,s,nw,se,se,s,s,nw,se,s,s,sw,sw,s,se,se,s,s,s,se,s,se,s,s,s,se,s,ne,s,s,se,s,s,se,se,s,s,s,n,s,s,s,s,se,s,s,se,s,s,se,s,s,s,nw,se,s,s,se,se,se,nw,s,se,ne,s,se,s,n,nw,se,sw,se,se,s,se,s,se,s,sw,s,se,se,se,nw,s,s,s,s,sw,s,s,s,n,s,sw,s,s,se,se,se,s,se,s,s,s,se,s,se,se,nw,s,s,se,ne,s,se,s,se,se,se,s,s,s,s,se,s,s,s,s,se,s,s,s,s,se,se,se,sw,s,se,s,s,nw,s,s,se,s,se,s,se,s,sw,s,ne,s,s,ne,s,sw,s,s,ne,n,s,se,se,s,s,s,s,se,se,s,s,se,se,s,nw,s,s,n,s,ne,se,n,s,s,s,s,s,sw,s,n,n,s,s,sw,s,sw,n,se,s,s,s,s,nw,se,s,s,s,s,s,s,se,s,s,sw,s,s,s,se,se,ne,s,s,s,ne,se,se,s,s,se,n,n,se,n,sw,s,sw,se,nw,n,s,n,s,nw,sw,s,se,se,s,s,s,s,s,s,se,s,s,se,s,s,s,s,s,sw,se,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,nw,se,s,se,s,s,s,s,s,s,s,s,se,nw,se,s,s,s,se,nw,s,s,ne,s,s,se,se,sw,s,ne,n,s,s,se,n,ne,se,s,s,s,s,nw,s,ne,s,s,n,s,s,s,s,s,se,s,s,s,s,se,s,s,s,s,n,s,se,s,n,s,s,sw,s,s,s,s,s,se,s,ne,s,sw,n,s,n,se,nw,nw,s,sw,ne,n,sw,n,sw,s,n,s,se,s,se,s,s,s,s,nw,se,s,s,s,se,sw,s,se,s,s,s,s,s,s,s,s,s,s,se,ne,nw,s,s,s,s,s,se,s,ne,sw,se,se,sw,sw,s,se,ne,s,nw,ne,n,s,s,s,s,s,ne,s,s,s,s,se,s,se,s,s,s,sw,s,s,se,s,s,s,s,n,se,s,ne,s,s,s,s,se,sw,se,s,s,s,s,s,se,s,n,n,s,s,sw,s,s,s,s,ne,s,sw,s,s,s,s,s,sw,s,s,n,s,n,s,s,s,n,se,s,s,s,s,s,s,s,s,s,s,s,s,ne,sw,s,s,ne,nw,se,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,sw,s,s,s,nw,s,s,se,se,s,n,s,se,s,s,s,se,s,nw,s,s,s,s,se,s,s,s,ne,s,s,s,se,s,s,s,s,s,s,s,n,s,s,s,s,s,ne,s,s,s,s,sw,s,s,s,s,s,s,s,s,s,s,ne,se,sw,s,sw,s,s,s,se,s,s,s,s,se,s,s,ne,s,s,s,s,se,ne,se,n,n,n,n,n,n,nw,nw,sw,sw,nw,ne,sw,ne,sw,nw,sw,ne,s,sw,sw,sw,sw,s,sw,sw,sw,sw,nw,s,s,s,nw,s,s,s,se,s,se,s,se,n,se,s,se,s,nw,sw,se,se,s,se,se,se,se,se,se,se,se,nw,se,se,se,se,se,ne,se,ne,s,se,se,se,se,se,ne,ne,ne,ne,ne,ne,se,ne,ne,ne,ne,ne,ne,s,ne,nw,ne,sw,ne,ne,ne,ne,ne,ne,ne,se,n,ne,ne,se,ne,ne,n,se,ne,ne,sw,ne,ne,n,ne,n,ne,n,n,n,sw,n,ne,n,ne,ne,se,ne,n,n,ne,n,n,s,n,n,ne,n,s,n,n,n,s,n,ne,n,n,n,n,n,se,nw,nw,n,n,nw,n,se,n,sw,s,n,nw,nw,se,nw,nw,nw,nw,n,n,se,n,n,n,nw,nw,n,nw,ne,n,nw,n,nw,sw,nw,n,n,n,ne,se,nw,n,nw,n,n,nw,n,nw,n,nw,n,nw,nw,nw,nw,nw,nw,sw,nw,nw,nw,nw,se,sw,sw,nw,se,nw,s,nw,nw,nw,nw,nw,nw,nw,s,n,nw,nw,nw,sw,nw,se,nw,nw,nw,nw,sw,sw,nw,s,sw,nw,s,nw,nw,sw,nw,sw,sw,nw,sw,se,nw,nw,nw,nw,nw,sw,sw,nw,se,sw,sw,nw,sw,nw,se,sw,nw,nw,nw,n,nw,sw,nw,ne,nw,nw,s,nw,nw,nw,sw,nw,sw,nw,sw,sw,sw,sw,n,sw,nw,s,sw,nw,ne,sw,n,s,sw,sw,sw,sw,ne,sw,sw,sw,nw,sw,s,sw,sw,nw,sw,sw,sw,sw,sw,sw,sw,sw,sw,se,n,sw,s,sw,sw,n,sw,sw,s,s,sw,sw,sw,sw,sw,sw,sw,s,s,sw,sw,sw,ne,sw,sw,s,sw,s,nw,sw,sw,se,se,sw,sw,sw,s,s,s,sw,nw,sw,nw,s,sw,sw,sw,sw,sw,sw,s,sw,s,sw,sw,sw,s,sw,s,sw,s,sw,s,sw,s,sw,s,sw,sw,s,s,s,sw,n,sw,s,n,s,s,s,sw,s,n,s,sw,sw,sw,sw,s,s,s,s,s,s,s,s,sw,sw,s,sw,se,s,s,s,sw,s,s,sw,s,ne,s,s,s,s,s,s,s,s,s,n,se,s,s,nw,s,s,s,se,s,s,s,s,s,s,s,s,s,s,nw,se,s,s,s,sw,s,s,s,s,s,s,s,ne,n,s,se,s,s,s,s,s,s,se,se,nw,nw,s,s,s,s,s,se,sw,s,s,se,s,s,s,s,s,s,s,s,s,n,s,s,s,se,s,s,s,s,s,s,se,s,s,n,s,s,se,s,s,s,se,s,s,nw,s,s,s,n,s,s,se,s,se,s,n,ne,s,s,s,s,se,ne,n,s,se,s,se,s,s,se,s,s,s,s,s,se,s,sw,s,se,se,s,se,s,s,ne,s,ne,ne,se,s,ne,se,s,ne,s,se,ne,se,se,se,sw,s,se,se,se,se,se,n,s,s,se,s,se,s,s,se,se,s,s,se,se,nw,se,ne,s,s,se,se,se,se,se,s,se,ne,se,se,s,ne,se,sw,se,se,se,se,se,nw,se,se,se,se,se,se,se,s,ne,n,sw,ne,se,se,se,se,se,ne,se,se,se,se,se,se,se,se,se,n,se,s,s,se,se,sw,nw,s,se,se,ne,se,se,ne,s,se,se,se,se,se,se,se,se,n,se,se,se,se,se,se,ne,se,ne,nw,se,se,ne,nw,nw,se,se,se,se,sw,se,se,sw,n,se,se,sw,se,se,se,se,nw,se,se,se,se,se,nw,sw,ne,ne,ne,se,ne,ne,nw,se,se,nw,se,se,se,se,se,ne,se,s,se,se,s,ne,se,ne,se,se,se,ne,s,se,ne,ne,ne,ne,se,n,se,se,se,se,ne,se,n,ne,se,se,se,ne,sw,nw,nw,ne,se,ne,se,se,se,n,se,ne,se,se,se,se,ne,se,ne,n,se,se,ne,nw,ne,ne,se,se,n,se,se,s,se,sw,ne,ne,ne,se,se,se,ne,ne,se,n,ne,ne,se,ne,ne,ne,se,ne,sw,n,ne,s,se,se,se,sw,ne,se,se,se,sw,ne,se,ne,ne,ne,sw,ne,ne,s,ne,s,ne,se,ne,ne,se,se,se,nw,ne,ne,ne,se,ne,se,se,ne,ne,ne,se,sw,ne,ne,ne,ne,se,ne,sw,ne,sw,ne,n,nw,sw,ne,ne,ne,sw,ne,se,sw,n,ne,ne,se,n,se,ne,n,ne,se,ne,nw,ne,ne,s,n,se,ne,nw,ne,se,ne,ne,ne,se,ne,se,se,ne,ne,ne,se,se,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,se,se,nw,ne,ne,ne,ne,ne,ne,ne,se,se,ne,ne,ne,se,ne,ne,ne,ne,ne,ne,ne,ne,nw,n,n,ne,nw,ne,ne,sw,se,ne,s,ne,nw,ne,nw,ne,ne,ne,ne,ne,ne,ne,n,n,ne,n,ne,ne,s,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,se,n,n,ne,s,ne,ne,ne,nw,se,ne,nw,nw,ne,n,n,ne,ne,nw,ne,n,ne,sw,n,ne,ne,ne,ne,ne,ne,ne,ne,ne,n,n,ne,ne,ne,ne,ne,n,n,ne,ne,se,sw,ne,n,ne,n,ne,ne,sw,ne,ne,n,ne,ne,se,sw,ne,ne,ne,s,n,n,s,ne,n,se,ne,ne,sw,s,ne,nw,n,n,ne,nw,ne,n,n,s,s,n,ne,ne,n,n,nw,ne,n,ne,ne,ne,ne,n,s,n,se,sw,se,ne,ne,ne,n,ne,ne,ne,n,nw,ne,n,n,ne,nw,ne,ne,sw,n,n,se,ne,n,ne,nw,se,ne,ne,ne,n,ne,ne,n,ne,ne,ne,ne,n,ne,ne,s,n,s,nw,n,n,nw,ne,ne,ne,s,n,s,ne,ne,ne,n,se,ne,ne,nw,n,n,n,ne,s,sw,n,ne,n,n,sw,n,ne,n,ne,n,sw,ne,ne,ne,sw,n,ne,ne,sw,ne,ne,n,n,se,ne,ne,s,ne,ne,n,nw,s,n,n,ne,nw,sw,ne,n,ne,ne,n,ne,n,se,n,ne,sw,sw,n,n,n,ne,ne,n,ne,n,s,ne,se,ne,nw,n,n,n,n,se,nw,ne,n,n,n,n,nw,nw,ne,n,se,ne,n,n,n,ne,n,ne,ne,ne,sw,n,s,n,n,n,ne,se,n,n,ne,ne,ne,sw,ne,ne,n,n,n,n,n,n,ne,ne,n,s,n,n,n,n,ne,ne,ne,n,n,se,nw,n,n,n,n,s,n,ne,n,n,n,n,n,n,n,n,sw,n,n,ne,n,n,n,s,ne,nw,n,nw,sw,n,n,n,n,s,n,n,ne,n,n,n,n,n,n,n,s,s,n,n,n,ne,n,s,ne,n,se,n,n,n,sw,n,n,n,ne,n,n,n,n,sw,se,n,sw,n,n,n,sw,ne,s,n,n,sw,s,se,n,n,n,n,ne,n,n,n,n,se,n,n,n,n,n,n,se,n,sw,n,n,n,nw,s,sw,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,sw,n,n,se,n,nw,se,n,sw,n,n,n,n,n,n,nw,n,n,n,n,n,n,n,n,n,sw,n,nw,ne,n,n,n,n,n,n,n,nw,n,n,sw,n,n,n,n,n,n,n,n,ne,n,s,n,n,n,n,ne,n,s,ne,n,n,n,nw,n,n,n,n,n,se,nw,n,nw,sw,n,n,ne,n,n,n,n,nw,n,n,n,nw,n,n,nw,n,n,n,sw,ne,n,n,s,n,n,n,nw,n,ne,n,nw,n,n,nw,nw,n,nw,nw,n,n,n,nw,sw,n,n,nw,sw,sw,n,nw,n,s,nw,n,s,nw,nw,nw,nw,n,se,n,n,nw,sw,nw,n,nw,n,ne,n,n,nw,nw,n,n,nw,nw,ne,nw,se,nw,nw,sw,n,n,n,sw,sw,n,n,n,n,nw,n,nw,nw,n,nw,n,nw,s,n,n,nw,nw,n,n,nw,n,sw,nw,nw,n,n,nw,nw,s,n,n,n,n,s,nw,n,n,n,n,n,nw,n,n,nw,n,nw,n,n,n,nw,n,n,nw,ne,nw,nw,n,nw,nw,n,n,nw,n,nw,ne,n,nw,n,n,nw,nw,nw,ne,nw,nw,n,n,n,se,ne,n,nw,n,n,n,n,nw,nw,n,nw,n,n,s,n,n,n,n,nw,n,nw,nw,se,n,nw,n,n,nw,nw,nw,nw,n,n,n,s,nw,nw,nw,ne,s,nw,nw,nw,n,nw,nw,sw,nw,n,nw,nw,n,nw,nw,n,nw,sw,n,n,n,n,nw,nw,nw,n,n,n,n,nw,n,n,ne,n,nw,nw,nw,ne,ne,n,n,nw,nw,ne,n,nw,nw,nw,nw,n,n,n,nw,nw,n,n,n,ne,nw,nw,nw,se,n,n,nw,n,nw,n,nw,nw,n,s,nw,n,nw,nw,nw,nw,nw,ne,nw,nw,n,nw,n,n,n,nw,n,n,ne,nw,n,n,nw,sw,nw,nw,nw,nw,nw,nw,nw,nw,s,nw,se,n,nw,nw,nw,nw,nw,nw,s,nw,n,nw,n,nw,nw,nw,nw,nw,se,s,nw,se,nw,n,ne,nw,nw,nw,n,nw,nw,nw,nw,nw,nw,n,ne,nw,se,n,nw,nw,nw,nw,sw,n,nw,nw,n,nw,n,nw,nw,ne,n,nw,n,ne,se,n,sw,nw,ne,nw,sw,nw,ne,n,nw,ne,se,nw,nw,nw,nw,nw,ne,nw,n,nw,s,nw,nw,nw,ne,nw,nw,nw,nw,s,nw,n,sw,s,nw,se,nw,ne,nw,n,nw,sw,nw,n,nw,nw,sw,nw,nw,nw,nw,n,nw,nw,nw,nw,nw,nw,nw,nw,se,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,n,s,s,nw,nw,nw,se,nw,nw,nw,nw,sw,nw,nw,n,nw,n,sw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,n,nw,s,nw,nw,nw,nw,nw,nw,nw,nw,n,nw,sw,nw,nw,nw,nw,nw,s,nw,sw,nw,nw,nw,se,nw,nw,sw,nw,nw,nw,nw,nw,nw,n,nw,nw,nw,n,nw,sw,n,nw,nw,se,nw,sw,se,sw,nw,sw,n,nw,nw,nw,ne,nw,nw,nw,se,nw,ne,ne,nw,nw,nw,nw,nw,s,nw,ne,n,nw,ne,nw,sw,nw,nw,sw,nw,se,nw,nw,ne,nw,ne,nw,sw,sw,nw,nw,nw,nw,nw,sw,nw,nw,nw,se,sw,sw,nw,s,sw,nw,nw,nw,nw,ne,nw,ne,nw,nw,sw,nw,nw,nw,sw,nw,nw,nw,ne,sw,s,nw,ne,nw,nw,se,se,n,nw,nw,sw,nw,nw,nw,nw,nw,sw,nw,nw,nw,nw,n,nw,sw,nw,s,nw,sw,nw,nw,nw,sw,nw,nw,se,nw,n,nw,nw,ne,sw,nw,ne,nw,se,s,nw,nw,n,n,nw,nw,nw,nw,ne,se,sw,nw,nw,nw,nw,se,nw,nw,nw,sw,nw,nw,s,nw,nw,nw,nw,nw,sw,nw,nw,nw,nw,sw,nw,sw,nw,nw,nw,ne,nw,sw,nw,sw,nw,sw,nw,nw,nw,sw,ne,sw,nw,sw,nw,se,nw,se,nw,nw,n,sw,nw,nw,nw,nw,sw,sw,nw,sw,nw,nw,nw,nw,nw,sw,sw,nw,nw,nw,sw,nw,nw,nw,nw,ne,nw,n,nw,sw,sw,nw,nw,nw,nw,nw,sw,nw,sw,nw,sw,sw,nw,nw,sw,sw,nw,nw,nw,ne,sw,ne,sw,sw,nw,nw,nw,nw,nw,nw,nw,sw,se,nw,nw,sw,sw,nw,nw,s,nw,nw,sw,nw,nw,nw,n,sw,nw,sw,sw,n,nw,nw,nw,sw,sw,nw,s,nw,nw,nw,sw,nw,n,nw,nw,nw,nw,n,nw,nw,nw,sw,nw,nw,nw,se,nw,sw,nw,sw,sw,sw,nw,ne,s,sw,ne,nw,nw,s,nw,sw,nw,s,nw,sw,sw,sw,s,nw,se,nw,nw,nw,sw,sw,sw,n,nw,sw,nw,nw,nw,nw,nw,nw,sw,n,nw,nw,nw,s,nw,nw,nw,nw,sw,sw,sw,nw,nw,sw,sw,nw,nw,sw,nw,sw,nw,sw,sw,sw,sw,sw,nw,sw,s,nw,nw,sw,sw,sw,sw,nw,sw,sw,nw,sw,ne,nw,sw,nw,nw,sw,nw,se,nw,n,sw,nw,s,nw,ne,nw,se,sw,sw,sw,n,ne,sw,nw,sw,nw,sw,se,s,sw,sw,nw,sw,sw,nw,nw,sw,nw,sw,nw,sw,nw,sw,sw,sw,ne,sw,nw,sw,nw,nw,sw,nw,n,nw,sw,n,nw,nw,sw,sw,se,nw,nw,sw,nw,sw,sw,sw,sw,nw,se,sw,sw,nw,nw,sw,sw,sw,nw,sw,nw,nw,nw,sw,n,nw,sw,n,nw,s,nw,nw,sw,s,sw,sw,nw,sw,sw,sw,nw,ne,sw,ne,sw,s,sw,sw,nw,sw,nw,sw,sw,nw,nw,nw,sw,sw,ne,sw,n,sw,sw,sw,n,sw,sw,nw,sw,n,n,sw,sw,sw,nw,s,sw,sw,sw,sw,nw,nw,sw,nw,sw,sw,s,sw,nw,sw,sw,sw,s,sw,sw,n,nw,sw,n,sw,sw,s,nw,se,sw,sw,sw,sw,sw,nw,sw,sw,sw,sw,sw,nw,sw,sw,sw,sw,sw,sw,sw,sw,sw,nw,nw,sw,sw,sw,s,ne,se,nw,sw,sw,sw,nw,s,nw,nw,sw,sw,s,sw,sw,se,sw,sw,sw,sw,sw,sw,sw,sw,sw,nw,sw,nw,nw,nw,nw,nw,nw,s,nw,sw,sw,sw,sw,sw,n,sw,se,sw,sw,s,sw,sw,sw,sw,sw,s,s,sw,s,ne,sw,sw,s,sw,sw,nw,sw,sw,sw,sw,ne,se,sw,sw,sw,sw,n,sw,sw,sw,sw,s,nw,se,nw,nw,sw,sw,nw,se,nw,se,sw,sw,sw,nw,s,sw,sw,sw,sw,sw,sw,sw,sw,sw,ne,se,nw,nw,sw,sw,sw,n,s,sw,nw,nw,se,sw,ne,sw,n,s,sw,sw,nw,sw,sw,sw,sw,sw,ne,sw,sw,se,sw,sw,sw,sw,nw,sw,sw,ne,sw,nw,sw,s,sw,sw,sw,sw,sw,sw,sw,sw,se,sw,se,sw,sw,sw,sw,sw,nw,sw,sw,sw,sw,sw,se,sw,sw,se,sw,sw,ne
diff --git a/2017/inputs/day_12.txt b/2017/inputs/day_12.txt
new file mode 100644
index 0000000..80e4ce6
--- /dev/null
+++ b/2017/inputs/day_12.txt
@@ -0,0 +1,2000 @@
+0 <-> 199, 1774
+1 <-> 350, 1328, 1920
+2 <-> 477, 984, 1419
+3 <-> 1465, 1568
+4 <-> 359, 1047, 1215, 1580, 1969
+5 <-> 613
+6 <-> 49, 617, 1213
+7 <-> 1263
+8 <-> 410
+9 <-> 1224
+10 <-> 1157
+11 <-> 304, 1168, 1875
+12 <-> 868, 891, 1369, 1712
+13 <-> 958, 1371
+14 <-> 1814
+15 <-> 261, 556
+16 <-> 830, 1646, 1901, 1933
+17 <-> 962, 1778
+18 <-> 109, 1229
+19 <-> 239, 1070, 1886, 1930
+20 <-> 327, 1307, 1801, 1905
+21 <-> 943, 1950
+22 <-> 1310
+23 <-> 659, 917
+24 <-> 373
+25 <-> 369
+26 <-> 947, 1023
+27 <-> 338, 1901
+28 <-> 1691
+29 <-> 132, 1219, 1699, 1962
+30 <-> 424, 822, 1419
+31 <-> 1444, 1464
+32 <-> 702, 1517
+33 <-> 1639
+34 <-> 909
+35 <-> 690, 1655
+36 <-> 988, 1149, 1166
+37 <-> 649, 1300, 1441, 1699
+38 <-> 1848
+39 <-> 382
+40 <-> 827, 1203, 1510
+41 <-> 714, 1056, 1184
+42 <-> 1018, 1873
+43 <-> 214
+44 <-> 670, 957
+45 <-> 45
+46 <-> 1195
+47 <-> 559, 1504
+48 <-> 1958
+49 <-> 6
+50 <-> 50, 1248
+51 <-> 1151
+52 <-> 52, 521, 1791
+53 <-> 304
+54 <-> 601
+55 <-> 1328
+56 <-> 939
+57 <-> 1583, 1995
+58 <-> 1422, 1694
+59 <-> 395, 1233
+60 <-> 862, 1811
+61 <-> 345, 1694
+62 <-> 62, 276
+63 <-> 280
+64 <-> 199
+65 <-> 117, 930
+66 <-> 364, 697
+67 <-> 1043
+68 <-> 287, 504, 1554
+69 <-> 498, 706
+70 <-> 77, 333, 713, 972, 1299
+71 <-> 1643
+72 <-> 694
+73 <-> 1381
+74 <-> 955, 1790
+75 <-> 1691, 1743
+76 <-> 76, 638, 1429
+77 <-> 70
+78 <-> 1513
+79 <-> 1397, 1716
+80 <-> 897
+81 <-> 968, 1841
+82 <-> 649
+83 <-> 522
+84 <-> 84, 125, 399, 498
+85 <-> 880, 1554, 1888
+86 <-> 86
+87 <-> 579, 1947
+88 <-> 470, 1451, 1750
+89 <-> 805, 1434
+90 <-> 453
+91 <-> 1208
+92 <-> 688, 1358, 1746
+93 <-> 357, 647
+94 <-> 234, 1270, 1520
+95 <-> 620, 1454
+96 <-> 390, 869, 919
+97 <-> 693, 1783
+98 <-> 259, 529, 782, 1018
+99 <-> 678
+100 <-> 1215
+101 <-> 459, 887
+102 <-> 888, 1135
+103 <-> 1006
+104 <-> 1375, 1422
+105 <-> 1657, 1730
+106 <-> 216, 1434
+107 <-> 333
+108 <-> 468, 1654
+109 <-> 18, 1791
+110 <-> 372
+111 <-> 111, 861, 1383
+112 <-> 1359, 1937
+113 <-> 414, 736, 1446
+114 <-> 426, 1457
+115 <-> 1605, 1672
+116 <-> 116, 713, 1584, 1602
+117 <-> 65
+118 <-> 1611, 1897
+119 <-> 541, 1569
+120 <-> 412, 787
+121 <-> 1344
+122 <-> 698, 752, 1693
+123 <-> 1173, 1576, 1634, 1802
+124 <-> 735
+125 <-> 84, 1032
+126 <-> 126, 225, 332
+127 <-> 1350
+128 <-> 128, 319, 327, 1582
+129 <-> 129, 654, 1260
+130 <-> 1080, 1296, 1350
+131 <-> 131
+132 <-> 29, 856, 1064
+133 <-> 659, 1367, 1776
+134 <-> 648, 1147, 1450, 1910
+135 <-> 411
+136 <-> 353, 935, 1590
+137 <-> 228
+138 <-> 194, 452, 1746, 1794
+139 <-> 139, 494, 1635
+140 <-> 681
+141 <-> 1507
+142 <-> 1288
+143 <-> 845
+144 <-> 1516
+145 <-> 502, 1146, 1155, 1809
+146 <-> 146, 750
+147 <-> 1600
+148 <-> 1206
+149 <-> 829, 1457
+150 <-> 675, 915
+151 <-> 651, 1678
+152 <-> 888, 1503
+153 <-> 498, 960, 1515
+154 <-> 1468
+155 <-> 751
+156 <-> 528, 803, 1655
+157 <-> 1486, 1937
+158 <-> 590, 1876
+159 <-> 159, 185, 1287, 1550, 1588
+160 <-> 160, 548
+161 <-> 1303, 1364
+162 <-> 1855
+163 <-> 1181
+164 <-> 442
+165 <-> 490
+166 <-> 1105
+167 <-> 1121
+168 <-> 760, 1129
+169 <-> 747
+170 <-> 1890
+171 <-> 1644
+172 <-> 593, 665
+173 <-> 1092, 1869
+174 <-> 705
+175 <-> 1345, 1999
+176 <-> 234, 606
+177 <-> 557, 688
+178 <-> 373
+179 <-> 1376
+180 <-> 638
+181 <-> 1996
+182 <-> 1094, 1206, 1748
+183 <-> 931
+184 <-> 880
+185 <-> 159, 1058, 1704
+186 <-> 765, 1178, 1877
+187 <-> 732
+188 <-> 188
+189 <-> 189, 1871
+190 <-> 395, 1639
+191 <-> 441
+192 <-> 192, 1034
+193 <-> 494
+194 <-> 138, 995, 1308
+195 <-> 1024
+196 <-> 226, 1632, 1919
+197 <-> 786
+198 <-> 286, 758, 1852
+199 <-> 0, 64, 1646
+200 <-> 314
+201 <-> 459, 658
+202 <-> 321, 492, 599, 1081, 1460
+203 <-> 225
+204 <-> 331, 462, 600
+205 <-> 898
+206 <-> 734, 1321
+207 <-> 558, 991
+208 <-> 397
+209 <-> 1145, 1886
+210 <-> 1343, 1925
+211 <-> 840, 1409
+212 <-> 1308
+213 <-> 1813
+214 <-> 43, 282
+215 <-> 1270
+216 <-> 106, 836, 1275, 1507
+217 <-> 312
+218 <-> 290, 386, 639, 1920
+219 <-> 784, 1001
+220 <-> 220, 322
+221 <-> 1681
+222 <-> 1616, 1653
+223 <-> 436, 1272, 1625
+224 <-> 1398, 1696
+225 <-> 126, 203, 1182
+226 <-> 196, 1655
+227 <-> 623
+228 <-> 137, 923
+229 <-> 253, 1387
+230 <-> 1374
+231 <-> 389, 1499
+232 <-> 442
+233 <-> 473, 1406
+234 <-> 94, 176
+235 <-> 235
+236 <-> 607, 838, 1487, 1856
+237 <-> 818
+238 <-> 387, 628
+239 <-> 19
+240 <-> 818
+241 <-> 1027, 1524
+242 <-> 1085, 1971
+243 <-> 1942
+244 <-> 299, 390, 916
+245 <-> 906
+246 <-> 246, 534, 763, 1427
+247 <-> 531, 1675
+248 <-> 336, 1832
+249 <-> 1497
+250 <-> 1836
+251 <-> 1309
+252 <-> 581, 1104
+253 <-> 229, 877, 1743
+254 <-> 254, 621
+255 <-> 831, 866, 874
+256 <-> 1942
+257 <-> 906
+258 <-> 1224
+259 <-> 98, 316, 419, 718, 1519
+260 <-> 1223, 1516, 1547, 1845, 1944
+261 <-> 15, 278, 1607, 1808
+262 <-> 1112, 1172
+263 <-> 424
+264 <-> 680
+265 <-> 1968
+266 <-> 804, 1252
+267 <-> 1739
+268 <-> 538, 546
+269 <-> 1265
+270 <-> 270
+271 <-> 1150
+272 <-> 272
+273 <-> 1208, 1537
+274 <-> 1427
+275 <-> 1349, 1829
+276 <-> 62, 906
+277 <-> 461, 634, 1887
+278 <-> 261, 1224, 1904
+279 <-> 303, 537
+280 <-> 63, 280, 926, 931
+281 <-> 862, 1041, 1119, 1863
+282 <-> 214, 488, 644
+283 <-> 646, 1124
+284 <-> 860, 1759
+285 <-> 746
+286 <-> 198
+287 <-> 68, 1045
+288 <-> 332, 1133, 1277, 1628, 1744, 1770, 1934
+289 <-> 1578, 1766
+290 <-> 218, 439, 1661
+291 <-> 596, 1377, 1620
+292 <-> 700, 848, 1099
+293 <-> 293, 1592, 1938
+294 <-> 653, 1948
+295 <-> 1505, 1936
+296 <-> 625, 925
+297 <-> 1105, 1185
+298 <-> 298, 544, 1444
+299 <-> 244, 933, 1012
+300 <-> 300, 1461, 1883
+301 <-> 880, 1698
+302 <-> 1221
+303 <-> 279, 375
+304 <-> 11, 53, 967, 1362
+305 <-> 777
+306 <-> 344
+307 <-> 582, 770
+308 <-> 792, 1895
+309 <-> 539
+310 <-> 390, 1482
+311 <-> 441, 1294
+312 <-> 217, 743
+313 <-> 1522
+314 <-> 200, 502, 835, 1084, 1134
+315 <-> 1970
+316 <-> 259
+317 <-> 1302, 1437
+318 <-> 365
+319 <-> 128, 976
+320 <-> 1056, 1466, 1778
+321 <-> 202
+322 <-> 220, 1431
+323 <-> 838, 1465, 1895
+324 <-> 443
+325 <-> 1056
+326 <-> 463, 1741, 1761
+327 <-> 20, 128, 681, 1797
+328 <-> 328, 348
+329 <-> 378, 1738
+330 <-> 459
+331 <-> 204, 331
+332 <-> 126, 288
+333 <-> 70, 107, 1747
+334 <-> 517, 614
+335 <-> 1259
+336 <-> 248, 550, 1485
+337 <-> 337
+338 <-> 27, 1212, 1264
+339 <-> 430, 963
+340 <-> 769
+341 <-> 341
+342 <-> 593, 718, 895
+343 <-> 569
+344 <-> 306, 1440, 1650, 1742
+345 <-> 61, 1006, 1664
+346 <-> 448, 1928
+347 <-> 1022, 1052
+348 <-> 328, 1232
+349 <-> 1232
+350 <-> 1, 526, 1086, 1821
+351 <-> 584
+352 <-> 518, 686, 1324, 1437
+353 <-> 136, 936
+354 <-> 1470
+355 <-> 1173, 1814
+356 <-> 698
+357 <-> 93
+358 <-> 737, 986, 1169
+359 <-> 4
+360 <-> 363
+361 <-> 417, 841
+362 <-> 928
+363 <-> 360, 1751
+364 <-> 66, 364, 1596
+365 <-> 318, 1766
+366 <-> 366
+367 <-> 367
+368 <-> 1897
+369 <-> 25, 369, 1460
+370 <-> 370
+371 <-> 1568
+372 <-> 110, 582
+373 <-> 24, 178, 1924
+374 <-> 374
+375 <-> 303
+376 <-> 1331, 1990
+377 <-> 388, 601, 837
+378 <-> 329
+379 <-> 623
+380 <-> 671
+381 <-> 938
+382 <-> 39, 1458
+383 <-> 383, 1490, 1763, 1844
+384 <-> 832
+385 <-> 745, 1673
+386 <-> 218, 779
+387 <-> 238
+388 <-> 377, 1817
+389 <-> 231, 656, 1038, 1960
+390 <-> 96, 244, 310, 721, 1094, 1501
+391 <-> 438, 819, 1870
+392 <-> 697
+393 <-> 443, 1275, 1463
+394 <-> 480
+395 <-> 59, 190, 1117, 1997
+396 <-> 595
+397 <-> 208, 397, 1727
+398 <-> 1153
+399 <-> 84
+400 <-> 825, 1693
+401 <-> 812
+402 <-> 1191
+403 <-> 1446, 1820
+404 <-> 442, 871, 1637
+405 <-> 426, 1067
+406 <-> 460, 1290
+407 <-> 1951
+408 <-> 1335, 1391, 1897
+409 <-> 984, 1217
+410 <-> 8, 1607
+411 <-> 135, 411, 454, 1393
+412 <-> 120
+413 <-> 1208
+414 <-> 113
+415 <-> 415, 1803
+416 <-> 428
+417 <-> 361
+418 <-> 1129
+419 <-> 259
+420 <-> 628
+421 <-> 1485
+422 <-> 1110, 1785
+423 <-> 1418
+424 <-> 30, 263
+425 <-> 1497
+426 <-> 114, 405, 780
+427 <-> 427
+428 <-> 416, 782
+429 <-> 429
+430 <-> 339, 1513
+431 <-> 886, 1408
+432 <-> 586, 1725
+433 <-> 889, 1753, 1881
+434 <-> 1078, 1120
+435 <-> 660, 1194, 1662
+436 <-> 223, 1332
+437 <-> 1487
+438 <-> 391
+439 <-> 290
+440 <-> 1828
+441 <-> 191, 311, 1003, 1561, 1702
+442 <-> 164, 232, 404
+443 <-> 324, 393
+444 <-> 1215, 1251
+445 <-> 792
+446 <-> 1015, 1392
+447 <-> 777
+448 <-> 346, 1097
+449 <-> 1117
+450 <-> 1395
+451 <-> 1414, 1845
+452 <-> 138
+453 <-> 90, 453
+454 <-> 411
+455 <-> 1801
+456 <-> 456, 791, 902, 1111
+457 <-> 457, 1075, 1384
+458 <-> 770, 1600
+459 <-> 101, 201, 330, 1108
+460 <-> 406, 1529
+461 <-> 277, 839, 1552
+462 <-> 204
+463 <-> 326, 1899
+464 <-> 1098
+465 <-> 764, 1630, 1779
+466 <-> 627
+467 <-> 904
+468 <-> 108, 1849
+469 <-> 469, 603, 780
+470 <-> 88, 1276, 1533
+471 <-> 1492
+472 <-> 472, 1048, 1409, 1518, 1758
+473 <-> 233, 1413, 1826
+474 <-> 780
+475 <-> 1005, 1968
+476 <-> 809
+477 <-> 2
+478 <-> 753
+479 <-> 479, 1296, 1615
+480 <-> 394, 775, 1623
+481 <-> 774, 1604
+482 <-> 763
+483 <-> 522, 591, 1344
+484 <-> 894, 1219
+485 <-> 507, 1114, 1250, 1351
+486 <-> 1099, 1879
+487 <-> 487
+488 <-> 282, 1164, 1189
+489 <-> 900, 1889
+490 <-> 165, 918, 1007
+491 <-> 1800
+492 <-> 202
+493 <-> 615, 899, 1200, 1326
+494 <-> 139, 193
+495 <-> 704, 1988
+496 <-> 496
+497 <-> 1149, 1216
+498 <-> 69, 84, 153
+499 <-> 1125, 1149
+500 <-> 642
+501 <-> 524, 1176
+502 <-> 145, 314
+503 <-> 1330, 1626
+504 <-> 68, 699
+505 <-> 672
+506 <-> 1083
+507 <-> 485, 1743
+508 <-> 520, 1236, 1296
+509 <-> 1676
+510 <-> 875, 1066
+511 <-> 511
+512 <-> 512, 1240
+513 <-> 705, 812
+514 <-> 1758
+515 <-> 1165, 1168
+516 <-> 811
+517 <-> 334, 1132, 1339
+518 <-> 352, 1674
+519 <-> 824, 1396, 1659
+520 <-> 508
+521 <-> 52, 915
+522 <-> 83, 483, 1637
+523 <-> 1317
+524 <-> 501
+525 <-> 525
+526 <-> 350, 850, 930
+527 <-> 527, 1338, 1449
+528 <-> 156
+529 <-> 98
+530 <-> 691, 1175, 1505
+531 <-> 247, 785, 1389, 1623
+532 <-> 1159
+533 <-> 1152, 1297
+534 <-> 246
+535 <-> 1144, 1491, 1622, 1935
+536 <-> 708
+537 <-> 279, 1656
+538 <-> 268, 538, 1756
+539 <-> 309, 802
+540 <-> 1239
+541 <-> 119, 1679, 1741
+542 <-> 1204
+543 <-> 642, 1926
+544 <-> 298
+545 <-> 1971
+546 <-> 268
+547 <-> 1465, 1613, 1614
+548 <-> 160
+549 <-> 820
+550 <-> 336
+551 <-> 1733
+552 <-> 552, 1563
+553 <-> 1654
+554 <-> 554, 1641, 1665
+555 <-> 555
+556 <-> 15
+557 <-> 177, 1204
+558 <-> 207, 1004
+559 <-> 47, 1297
+560 <-> 1189, 1709
+561 <-> 1013, 1709
+562 <-> 762, 912
+563 <-> 563
+564 <-> 585
+565 <-> 1333, 1494
+566 <-> 566, 938
+567 <-> 894
+568 <-> 586, 1397
+569 <-> 343, 1572
+570 <-> 704, 1220, 1459
+571 <-> 1451
+572 <-> 651, 846, 909
+573 <-> 1881
+574 <-> 1866
+575 <-> 1379
+576 <-> 1060, 1210
+577 <-> 1837
+578 <-> 1346
+579 <-> 87
+580 <-> 1509
+581 <-> 252, 1548
+582 <-> 307, 372
+583 <-> 624, 1599, 1753, 1908
+584 <-> 351, 774
+585 <-> 564, 977
+586 <-> 432, 568, 773, 1789
+587 <-> 826
+588 <-> 1854
+589 <-> 719, 845, 1214
+590 <-> 158, 1259
+591 <-> 483
+592 <-> 743, 898
+593 <-> 172, 342, 852, 943, 1053
+594 <-> 594
+595 <-> 396, 928
+596 <-> 291, 596
+597 <-> 597
+598 <-> 1980
+599 <-> 202, 1764
+600 <-> 204
+601 <-> 54, 377, 1340
+602 <-> 1718, 1866
+603 <-> 469, 789
+604 <-> 1006, 1033, 1626
+605 <-> 1535
+606 <-> 176
+607 <-> 236, 911, 1218
+608 <-> 1193, 1825
+609 <-> 1657
+610 <-> 733, 841
+611 <-> 747, 1892
+612 <-> 1098, 1196, 1267
+613 <-> 5, 1372
+614 <-> 334, 1492
+615 <-> 493, 798
+616 <-> 1025, 1940
+617 <-> 6, 666, 1155
+618 <-> 762, 1621, 1895
+619 <-> 1187
+620 <-> 95, 1761
+621 <-> 254
+622 <-> 784, 1476
+623 <-> 227, 379, 1081
+624 <-> 583
+625 <-> 296, 1222, 1882
+626 <-> 905
+627 <-> 466, 1692
+628 <-> 238, 420, 1004, 1412
+629 <-> 1532
+630 <-> 630
+631 <-> 977, 1092, 1458, 1713
+632 <-> 777, 1049, 1404
+633 <-> 994
+634 <-> 277
+635 <-> 635
+636 <-> 703, 1756
+637 <-> 840, 1585
+638 <-> 76, 180, 1373
+639 <-> 218, 639, 1835
+640 <-> 1559
+641 <-> 1800
+642 <-> 500, 543
+643 <-> 1808
+644 <-> 282
+645 <-> 1253, 1475
+646 <-> 283, 646, 864
+647 <-> 93, 1508
+648 <-> 134, 956, 1762
+649 <-> 37, 82
+650 <-> 1480, 1916
+651 <-> 151, 572, 1357
+652 <-> 1261
+653 <-> 294, 653
+654 <-> 129, 1139, 1176
+655 <-> 1251, 1656
+656 <-> 389
+657 <-> 1604
+658 <-> 201, 1208
+659 <-> 23, 133, 1868
+660 <-> 435
+661 <-> 1634
+662 <-> 1667, 1701
+663 <-> 974
+664 <-> 664, 1167
+665 <-> 172, 1370
+666 <-> 617
+667 <-> 1824
+668 <-> 952, 1605
+669 <-> 1822
+670 <-> 44, 670
+671 <-> 380, 1145, 1693, 1906
+672 <-> 505, 693
+673 <-> 1610
+674 <-> 1249, 1302
+675 <-> 150, 777
+676 <-> 1675
+677 <-> 910, 1282
+678 <-> 99, 1004
+679 <-> 679
+680 <-> 264, 917, 1137, 1687
+681 <-> 140, 327, 746
+682 <-> 682
+683 <-> 794, 1315
+684 <-> 1000, 1342
+685 <-> 1111, 1348, 1523, 1932
+686 <-> 352
+687 <-> 979, 1667
+688 <-> 92, 177
+689 <-> 937, 1939
+690 <-> 35, 1608
+691 <-> 530, 691
+692 <-> 1871
+693 <-> 97, 672
+694 <-> 72, 694
+695 <-> 1076
+696 <-> 1954
+697 <-> 66, 392, 1892
+698 <-> 122, 356, 698
+699 <-> 504, 1470
+700 <-> 292, 1407
+701 <-> 1231, 1327
+702 <-> 32
+703 <-> 636, 1083, 1210
+704 <-> 495, 570
+705 <-> 174, 513, 1332
+706 <-> 69, 1088
+707 <-> 1036, 1867
+708 <-> 536, 805, 1958
+709 <-> 709
+710 <-> 915, 1578
+711 <-> 711, 1478
+712 <-> 813, 927
+713 <-> 70, 116, 1469, 1539
+714 <-> 41
+715 <-> 840, 1473, 1562, 1705
+716 <-> 716
+717 <-> 949, 1864
+718 <-> 259, 342, 1557, 1853
+719 <-> 589, 781, 802
+720 <-> 1125
+721 <-> 390, 878
+722 <-> 1026
+723 <-> 1039, 1467
+724 <-> 1535
+725 <-> 883
+726 <-> 1832, 1917
+727 <-> 1245
+728 <-> 1291
+729 <-> 1203
+730 <-> 824
+731 <-> 1984
+732 <-> 187, 1214
+733 <-> 610, 1079, 1198
+734 <-> 206, 872, 1479, 1855
+735 <-> 124, 1371
+736 <-> 113, 736
+737 <-> 358, 1426
+738 <-> 974, 1024, 1717, 1842
+739 <-> 1489
+740 <-> 1634
+741 <-> 873, 1695
+742 <-> 1700
+743 <-> 312, 592, 1493
+744 <-> 948, 1306, 1400
+745 <-> 385, 1029, 1315, 1474
+746 <-> 285, 681, 793
+747 <-> 169, 611, 814, 1548
+748 <-> 748
+749 <-> 1134, 1498
+750 <-> 146
+751 <-> 155, 783, 1856
+752 <-> 122, 1417
+753 <-> 478, 1505
+754 <-> 810, 1742, 1955
+755 <-> 1735, 1847
+756 <-> 978, 1095
+757 <-> 1153, 1730
+758 <-> 198, 1476
+759 <-> 759
+760 <-> 168
+761 <-> 1496
+762 <-> 562, 618
+763 <-> 246, 482, 1258
+764 <-> 465
+765 <-> 186
+766 <-> 1448
+767 <-> 893, 896, 1019
+768 <-> 1730
+769 <-> 340, 1043, 1065
+770 <-> 307, 458, 1453
+771 <-> 1168
+772 <-> 911
+773 <-> 586
+774 <-> 481, 584, 774, 1148
+775 <-> 480, 1485, 1894
+776 <-> 926
+777 <-> 305, 447, 632, 675
+778 <-> 1690
+779 <-> 386
+780 <-> 426, 469, 474
+781 <-> 719, 1543
+782 <-> 98, 428, 903
+783 <-> 751, 1558
+784 <-> 219, 622
+785 <-> 531
+786 <-> 197, 911, 1312
+787 <-> 120, 880
+788 <-> 1089, 1487
+789 <-> 603, 844, 1681, 1731
+790 <-> 790, 1126
+791 <-> 456, 1363
+792 <-> 308, 445
+793 <-> 746
+794 <-> 683, 951
+795 <-> 1732, 1986
+796 <-> 1210, 1878
+797 <-> 804
+798 <-> 615
+799 <-> 1651
+800 <-> 851, 860, 1907
+801 <-> 1110, 1537, 1773
+802 <-> 539, 719
+803 <-> 156, 1528
+804 <-> 266, 797, 1549
+805 <-> 89, 708, 962
+806 <-> 1429
+807 <-> 1800
+808 <-> 873, 1421
+809 <-> 476, 809
+810 <-> 754
+811 <-> 516, 965
+812 <-> 401, 513
+813 <-> 712, 1023
+814 <-> 747
+815 <-> 1145
+816 <-> 1413
+817 <-> 1235
+818 <-> 237, 240, 1506
+819 <-> 391, 857
+820 <-> 549, 1162
+821 <-> 1410, 1607
+822 <-> 30, 1485
+823 <-> 1445, 1454
+824 <-> 519, 730, 1824
+825 <-> 400, 1381, 1472
+826 <-> 587, 1040, 1198, 1618
+827 <-> 40
+828 <-> 1870
+829 <-> 149
+830 <-> 16
+831 <-> 255
+832 <-> 384, 1890, 1913
+833 <-> 1529
+834 <-> 834
+835 <-> 314
+836 <-> 216, 1166
+837 <-> 377, 988
+838 <-> 236, 323
+839 <-> 461, 1825
+840 <-> 211, 637, 715, 1710
+841 <-> 361, 610, 841, 1815
+842 <-> 1669
+843 <-> 874, 1468
+844 <-> 789
+845 <-> 143, 589, 1053
+846 <-> 572
+847 <-> 1285
+848 <-> 292
+849 <-> 849
+850 <-> 526
+851 <-> 800, 1368, 1497
+852 <-> 593, 1798
+853 <-> 1339, 1593, 1749
+854 <-> 1445, 1787
+855 <-> 1026, 1356
+856 <-> 132
+857 <-> 819
+858 <-> 1511
+859 <-> 1191
+860 <-> 284, 800, 1619
+861 <-> 111, 1266
+862 <-> 60, 281
+863 <-> 1605
+864 <-> 646
+865 <-> 873
+866 <-> 255, 924
+867 <-> 871, 1707
+868 <-> 12
+869 <-> 96, 1278
+870 <-> 1307
+871 <-> 404, 867, 1482
+872 <-> 734, 1200
+873 <-> 741, 808, 865, 873
+874 <-> 255, 843, 1201
+875 <-> 510, 1325, 1797
+876 <-> 1504, 1825
+877 <-> 253
+878 <-> 721
+879 <-> 948, 1291, 1847
+880 <-> 85, 184, 301, 787, 1503, 1617
+881 <-> 1688
+882 <-> 882
+883 <-> 725, 1582, 1874
+884 <-> 1352
+885 <-> 885, 1974
+886 <-> 431, 1650
+887 <-> 101
+888 <-> 102, 152
+889 <-> 433, 1016
+890 <-> 890
+891 <-> 12
+892 <-> 1402, 1923
+893 <-> 767
+894 <-> 484, 567
+895 <-> 342, 1123, 1158, 1648
+896 <-> 767
+897 <-> 80, 986, 1418
+898 <-> 205, 592, 1019
+899 <-> 493, 1053
+900 <-> 489
+901 <-> 901
+902 <-> 456
+903 <-> 782
+904 <-> 467, 904, 1924
+905 <-> 626, 1881
+906 <-> 245, 257, 276
+907 <-> 907, 1101, 1826
+908 <-> 908, 1230
+909 <-> 34, 572, 1186
+910 <-> 677, 961
+911 <-> 607, 772, 786, 1196, 1405
+912 <-> 562
+913 <-> 1636
+914 <-> 1892, 1963
+915 <-> 150, 521, 710
+916 <-> 244
+917 <-> 23, 680, 1336
+918 <-> 490, 1483
+919 <-> 96
+920 <-> 1880
+921 <-> 921
+922 <-> 975, 1255
+923 <-> 228, 1202, 1452
+924 <-> 866
+925 <-> 296, 1270
+926 <-> 280, 776, 1170, 1788, 1970
+927 <-> 712
+928 <-> 362, 595, 1103
+929 <-> 929
+930 <-> 65, 526, 1256, 1500, 1722
+931 <-> 183, 280, 1484
+932 <-> 1737
+933 <-> 299
+934 <-> 1387, 1851
+935 <-> 136, 935, 1537, 1775
+936 <-> 353
+937 <-> 689, 1347
+938 <-> 381, 566
+939 <-> 56, 1762
+940 <-> 1559, 1860
+941 <-> 1504, 1671, 1723, 1724
+942 <-> 1293
+943 <-> 21, 593
+944 <-> 1335
+945 <-> 1650
+946 <-> 1556
+947 <-> 26
+948 <-> 744, 879
+949 <-> 717, 1604
+950 <-> 1201, 1322
+951 <-> 794
+952 <-> 668, 1371
+953 <-> 1272
+954 <-> 954
+955 <-> 74
+956 <-> 648, 1870
+957 <-> 44, 1769
+958 <-> 13, 1388, 1660
+959 <-> 959
+960 <-> 153
+961 <-> 910
+962 <-> 17, 805
+963 <-> 339, 1783
+964 <-> 1100
+965 <-> 811, 1677
+966 <-> 966
+967 <-> 304, 1029, 1269, 1910
+968 <-> 81, 1091
+969 <-> 1379, 1693
+970 <-> 1289
+971 <-> 971
+972 <-> 70
+973 <-> 973
+974 <-> 663, 738, 1005
+975 <-> 922
+976 <-> 319
+977 <-> 585, 631
+978 <-> 756, 1628
+979 <-> 687, 979
+980 <-> 1151, 1317
+981 <-> 1199, 1902
+982 <-> 1223
+983 <-> 1931
+984 <-> 2, 409
+985 <-> 985
+986 <-> 358, 897, 1564
+987 <-> 987, 1644
+988 <-> 36, 837
+989 <-> 1275
+990 <-> 990, 1295
+991 <-> 207, 1415
+992 <-> 1242, 1397, 1467, 1579
+993 <-> 1042, 1767
+994 <-> 633, 1595, 1813
+995 <-> 194
+996 <-> 1096, 1369
+997 <-> 1231, 1973
+998 <-> 1367
+999 <-> 999
+1000 <-> 684, 1078
+1001 <-> 219
+1002 <-> 1442
+1003 <-> 441
+1004 <-> 558, 628, 678
+1005 <-> 475, 974
+1006 <-> 103, 345, 604
+1007 <-> 490, 1274
+1008 <-> 1708, 1819
+1009 <-> 1009, 1118
+1010 <-> 1223, 1803
+1011 <-> 1867
+1012 <-> 299, 1923
+1013 <-> 561, 1187, 1477, 1926
+1014 <-> 1861
+1015 <-> 446, 1015, 1858
+1016 <-> 889
+1017 <-> 1435
+1018 <-> 42, 98
+1019 <-> 767, 898, 1764
+1020 <-> 1020
+1021 <-> 1666
+1022 <-> 347, 1022, 1310
+1023 <-> 26, 813, 1109, 1538, 1988
+1024 <-> 195, 738
+1025 <-> 616
+1026 <-> 722, 855, 1337, 1415
+1027 <-> 241, 1309
+1028 <-> 1028
+1029 <-> 745, 967
+1030 <-> 1577, 1689
+1031 <-> 1031
+1032 <-> 125
+1033 <-> 604, 1127, 1194
+1034 <-> 192
+1035 <-> 1992
+1036 <-> 707, 1509
+1037 <-> 1347
+1038 <-> 389
+1039 <-> 723, 1535
+1040 <-> 826, 1245, 1918
+1041 <-> 281
+1042 <-> 993
+1043 <-> 67, 769, 1142
+1044 <-> 1690
+1045 <-> 287
+1046 <-> 1561
+1047 <-> 4
+1048 <-> 472, 1703
+1049 <-> 632, 1816
+1050 <-> 1157, 1899
+1051 <-> 1818
+1052 <-> 347, 1904
+1053 <-> 593, 845, 899
+1054 <-> 1983
+1055 <-> 1599
+1056 <-> 41, 320, 325, 1567
+1057 <-> 1372, 1569
+1058 <-> 185
+1059 <-> 1112, 1939
+1060 <-> 576, 1314, 1557, 1751, 1752
+1061 <-> 1285
+1062 <-> 1162, 1338, 1739
+1063 <-> 1291
+1064 <-> 132
+1065 <-> 769, 1317
+1066 <-> 510
+1067 <-> 405, 1452, 1953
+1068 <-> 1200
+1069 <-> 1069
+1070 <-> 19
+1071 <-> 1361, 1382
+1072 <-> 1307, 1534
+1073 <-> 1282
+1074 <-> 1323, 1653
+1075 <-> 457
+1076 <-> 695, 1703
+1077 <-> 1180
+1078 <-> 434, 1000
+1079 <-> 733
+1080 <-> 130, 1757
+1081 <-> 202, 623
+1082 <-> 1082
+1083 <-> 506, 703, 1279
+1084 <-> 314, 1812
+1085 <-> 242
+1086 <-> 350
+1087 <-> 1524
+1088 <-> 706, 1900
+1089 <-> 788
+1090 <-> 1260
+1091 <-> 968, 1522
+1092 <-> 173, 631, 1850
+1093 <-> 1093, 1390
+1094 <-> 182, 390
+1095 <-> 756
+1096 <-> 996
+1097 <-> 448
+1098 <-> 464, 612
+1099 <-> 292, 486
+1100 <-> 964, 1326
+1101 <-> 907, 1799
+1102 <-> 1927
+1103 <-> 928, 1103
+1104 <-> 252
+1105 <-> 166, 297
+1106 <-> 1106, 1896
+1107 <-> 1107
+1108 <-> 459
+1109 <-> 1023
+1110 <-> 422, 801
+1111 <-> 456, 685
+1112 <-> 262, 1059
+1113 <-> 1267
+1114 <-> 485
+1115 <-> 1115, 1827
+1116 <-> 1596
+1117 <-> 395, 449, 1382
+1118 <-> 1009
+1119 <-> 281, 1670
+1120 <-> 434, 1165
+1121 <-> 167, 1121
+1122 <-> 1809
+1123 <-> 895
+1124 <-> 283
+1125 <-> 499, 720, 1308
+1126 <-> 790, 1526
+1127 <-> 1033
+1128 <-> 1500
+1129 <-> 168, 418, 1642, 1947
+1130 <-> 1454
+1131 <-> 1683
+1132 <-> 517, 1784
+1133 <-> 288
+1134 <-> 314, 749, 1586
+1135 <-> 102
+1136 <-> 1136
+1137 <-> 680
+1138 <-> 1755
+1139 <-> 654
+1140 <-> 1140
+1141 <-> 1141
+1142 <-> 1043, 1862
+1143 <-> 1550
+1144 <-> 535, 1144, 1849
+1145 <-> 209, 671, 815, 1268
+1146 <-> 145
+1147 <-> 134
+1148 <-> 774
+1149 <-> 36, 497, 499, 1652
+1150 <-> 271, 1150
+1151 <-> 51, 980, 1651
+1152 <-> 533
+1153 <-> 398, 757
+1154 <-> 1313
+1155 <-> 145, 617, 1336, 1721
+1156 <-> 1838
+1157 <-> 10, 1050
+1158 <-> 895
+1159 <-> 532, 1708
+1160 <-> 1357
+1161 <-> 1200, 1999
+1162 <-> 820, 1062
+1163 <-> 1821
+1164 <-> 488, 1572
+1165 <-> 515, 1120
+1166 <-> 36, 836
+1167 <-> 664
+1168 <-> 11, 515, 771, 1967
+1169 <-> 358
+1170 <-> 926
+1171 <-> 1666, 1827
+1172 <-> 262, 1439
+1173 <-> 123, 355, 1341
+1174 <-> 1204, 1525
+1175 <-> 530
+1176 <-> 501, 654
+1177 <-> 1311, 1796
+1178 <-> 186, 1536, 1551, 1853
+1179 <-> 1822, 1947
+1180 <-> 1077, 1264
+1181 <-> 163, 1181
+1182 <-> 225
+1183 <-> 1237, 1715, 1798
+1184 <-> 41
+1185 <-> 297, 1185
+1186 <-> 909
+1187 <-> 619, 1013
+1188 <-> 1698
+1189 <-> 488, 560
+1190 <-> 1834, 1933
+1191 <-> 402, 859, 1191
+1192 <-> 1839
+1193 <-> 608, 1438
+1194 <-> 435, 1033, 1754
+1195 <-> 46, 1828
+1196 <-> 612, 911, 1975
+1197 <-> 1503, 1854
+1198 <-> 733, 826
+1199 <-> 981
+1200 <-> 493, 872, 1068, 1161
+1201 <-> 874, 950
+1202 <-> 923
+1203 <-> 40, 729, 1719
+1204 <-> 542, 557, 1174
+1205 <-> 1332
+1206 <-> 148, 182
+1207 <-> 1207
+1208 <-> 91, 273, 413, 658, 1234
+1209 <-> 1995
+1210 <-> 576, 703, 796
+1211 <-> 1227, 1891
+1212 <-> 338, 1362
+1213 <-> 6
+1214 <-> 589, 732
+1215 <-> 4, 100, 444, 1842
+1216 <-> 497, 1745
+1217 <-> 409, 1354
+1218 <-> 607
+1219 <-> 29, 484, 1712
+1220 <-> 570
+1221 <-> 302, 1429
+1222 <-> 625, 1412
+1223 <-> 260, 982, 1010, 1591
+1224 <-> 9, 258, 278, 1506, 1893
+1225 <-> 1906
+1226 <-> 1226
+1227 <-> 1211
+1228 <-> 1773
+1229 <-> 18
+1230 <-> 908
+1231 <-> 701, 997
+1232 <-> 348, 349
+1233 <-> 59
+1234 <-> 1208
+1235 <-> 817, 1994
+1236 <-> 508
+1237 <-> 1183
+1238 <-> 1529
+1239 <-> 540, 1524, 1552
+1240 <-> 512
+1241 <-> 1241
+1242 <-> 992, 1685
+1243 <-> 1934
+1244 <-> 1574, 1839
+1245 <-> 727, 1040
+1246 <-> 1380
+1247 <-> 1506, 1923
+1248 <-> 50, 1610
+1249 <-> 674
+1250 <-> 485
+1251 <-> 444, 655, 1718
+1252 <-> 266, 1862
+1253 <-> 645, 1709
+1254 <-> 1254
+1255 <-> 922, 1255, 1341
+1256 <-> 930, 1346
+1257 <-> 1465, 1844
+1258 <-> 763
+1259 <-> 335, 590, 1259
+1260 <-> 129, 1090
+1261 <-> 652, 1261, 1838
+1262 <-> 1262, 1912
+1263 <-> 7, 1438, 1554
+1264 <-> 338, 1180
+1265 <-> 269, 1265
+1266 <-> 861, 1281, 1423
+1267 <-> 612, 1113, 1289
+1268 <-> 1145
+1269 <-> 967
+1270 <-> 94, 215, 925, 1860
+1271 <-> 1376
+1272 <-> 223, 953
+1273 <-> 1301
+1274 <-> 1007, 1860
+1275 <-> 216, 393, 989, 1275
+1276 <-> 470
+1277 <-> 288
+1278 <-> 869
+1279 <-> 1083, 1755
+1280 <-> 1588
+1281 <-> 1266
+1282 <-> 677, 1073, 1575, 1625
+1283 <-> 1571
+1284 <-> 1828
+1285 <-> 847, 1061, 1641
+1286 <-> 1494, 1649, 1889
+1287 <-> 159
+1288 <-> 142, 1288
+1289 <-> 970, 1267, 1668
+1290 <-> 406
+1291 <-> 728, 879, 1063, 1885
+1292 <-> 1407
+1293 <-> 942, 1318, 1459
+1294 <-> 311, 1754
+1295 <-> 990, 1512
+1296 <-> 130, 479, 508
+1297 <-> 533, 559
+1298 <-> 1839
+1299 <-> 70
+1300 <-> 37, 1886, 1998
+1301 <-> 1273, 1340
+1302 <-> 317, 674, 1485
+1303 <-> 161, 1624
+1304 <-> 1304
+1305 <-> 1410
+1306 <-> 744
+1307 <-> 20, 870, 1072
+1308 <-> 194, 212, 1125
+1309 <-> 251, 1027
+1310 <-> 22, 1022, 1777
+1311 <-> 1177
+1312 <-> 786
+1313 <-> 1154, 1706
+1314 <-> 1060
+1315 <-> 683, 745
+1316 <-> 1793, 1898
+1317 <-> 523, 980, 1065, 1787
+1318 <-> 1293
+1319 <-> 1319
+1320 <-> 1320
+1321 <-> 206
+1322 <-> 950, 1957
+1323 <-> 1074, 1823
+1324 <-> 352
+1325 <-> 875, 1740
+1326 <-> 493, 1100
+1327 <-> 701, 1633
+1328 <-> 1, 55
+1329 <-> 1633
+1330 <-> 503, 1687, 1782
+1331 <-> 376, 1531, 1766
+1332 <-> 436, 705, 1205
+1333 <-> 565
+1334 <-> 1805
+1335 <-> 408, 944
+1336 <-> 917, 1155
+1337 <-> 1026
+1338 <-> 527, 1062
+1339 <-> 517, 853
+1340 <-> 601, 1301, 1708
+1341 <-> 1173, 1255
+1342 <-> 684
+1343 <-> 210
+1344 <-> 121, 483
+1345 <-> 175
+1346 <-> 578, 1256
+1347 <-> 937, 1037, 1735
+1348 <-> 685
+1349 <-> 275, 1594
+1350 <-> 127, 130
+1351 <-> 485
+1352 <-> 884, 1352
+1353 <-> 1604, 1800
+1354 <-> 1217
+1355 <-> 1355, 1985
+1356 <-> 855, 1840
+1357 <-> 651, 1160, 1388
+1358 <-> 92
+1359 <-> 112
+1360 <-> 1455
+1361 <-> 1071, 1909
+1362 <-> 304, 1212
+1363 <-> 791
+1364 <-> 161, 1426
+1365 <-> 1365
+1366 <-> 1366, 1433
+1367 <-> 133, 998
+1368 <-> 851
+1369 <-> 12, 996, 1425
+1370 <-> 665
+1371 <-> 13, 735, 952, 1371, 1857
+1372 <-> 613, 1057
+1373 <-> 638, 1511
+1374 <-> 230, 1593
+1375 <-> 104
+1376 <-> 179, 1271, 1639
+1377 <-> 291
+1378 <-> 1919
+1379 <-> 575, 969
+1380 <-> 1246, 1501, 1903
+1381 <-> 73, 825, 1922
+1382 <-> 1071, 1117, 1541, 1810
+1383 <-> 111
+1384 <-> 457
+1385 <-> 1878, 1966
+1386 <-> 1396
+1387 <-> 229, 934, 1853
+1388 <-> 958, 1357, 1424
+1389 <-> 531
+1390 <-> 1093, 1603
+1391 <-> 408
+1392 <-> 446
+1393 <-> 411
+1394 <-> 1866
+1395 <-> 450, 1851
+1396 <-> 519, 1386
+1397 <-> 79, 568, 992
+1398 <-> 224
+1399 <-> 1443, 1799, 1915
+1400 <-> 744
+1401 <-> 1685
+1402 <-> 892
+1403 <-> 1714
+1404 <-> 632
+1405 <-> 911, 1532
+1406 <-> 233, 1606
+1407 <-> 700, 1292
+1408 <-> 431, 1408, 1416
+1409 <-> 211, 472
+1410 <-> 821, 1305
+1411 <-> 1653, 1993
+1412 <-> 628, 1222
+1413 <-> 473, 816
+1414 <-> 451
+1415 <-> 991, 1026
+1416 <-> 1408
+1417 <-> 752
+1418 <-> 423, 897
+1419 <-> 2, 30
+1420 <-> 1420
+1421 <-> 808
+1422 <-> 58, 104
+1423 <-> 1266
+1424 <-> 1388
+1425 <-> 1369
+1426 <-> 737, 1364, 1847, 1913
+1427 <-> 246, 274
+1428 <-> 1964
+1429 <-> 76, 806, 1221
+1430 <-> 1430
+1431 <-> 322
+1432 <-> 1719
+1433 <-> 1366, 1988
+1434 <-> 89, 106
+1435 <-> 1017, 1730
+1436 <-> 1997
+1437 <-> 317, 352
+1438 <-> 1193, 1263
+1439 <-> 1172
+1440 <-> 344
+1441 <-> 37
+1442 <-> 1002, 1860
+1443 <-> 1399
+1444 <-> 31, 298
+1445 <-> 823, 854
+1446 <-> 113, 403
+1447 <-> 1508, 1720
+1448 <-> 766, 1791
+1449 <-> 527
+1450 <-> 134
+1451 <-> 88, 571
+1452 <-> 923, 1067
+1453 <-> 770
+1454 <-> 95, 823, 1130, 1454
+1455 <-> 1360, 1533
+1456 <-> 1456, 1489, 1529
+1457 <-> 114, 149, 1956
+1458 <-> 382, 631, 1458
+1459 <-> 570, 1293
+1460 <-> 202, 369
+1461 <-> 300
+1462 <-> 1636
+1463 <-> 393, 1659, 1939
+1464 <-> 31
+1465 <-> 3, 323, 547, 1257, 1732
+1466 <-> 320
+1467 <-> 723, 992, 1706
+1468 <-> 154, 843
+1469 <-> 713
+1470 <-> 354, 699
+1471 <-> 1471
+1472 <-> 825
+1473 <-> 715
+1474 <-> 745
+1475 <-> 645
+1476 <-> 622, 758
+1477 <-> 1013, 1645, 1669
+1478 <-> 711
+1479 <-> 734
+1480 <-> 650
+1481 <-> 1481
+1482 <-> 310, 871
+1483 <-> 918, 1504
+1484 <-> 931
+1485 <-> 336, 421, 775, 822, 1302
+1486 <-> 157, 1631
+1487 <-> 236, 437, 788, 1980
+1488 <-> 1560
+1489 <-> 739, 1456
+1490 <-> 383
+1491 <-> 535
+1492 <-> 471, 614
+1493 <-> 743
+1494 <-> 565, 1286
+1495 <-> 1627
+1496 <-> 761, 1496
+1497 <-> 249, 425, 851
+1498 <-> 749
+1499 <-> 231
+1500 <-> 930, 1128
+1501 <-> 390, 1380
+1502 <-> 1713
+1503 <-> 152, 880, 1197
+1504 <-> 47, 876, 941, 1483, 1945
+1505 <-> 295, 530, 753
+1506 <-> 818, 1224, 1247
+1507 <-> 141, 216, 1565, 1726
+1508 <-> 647, 1447, 1521, 1590
+1509 <-> 580, 1036, 1605, 1609
+1510 <-> 40, 1885
+1511 <-> 858, 1373
+1512 <-> 1295
+1513 <-> 78, 430
+1514 <-> 1772
+1515 <-> 153
+1516 <-> 144, 260, 1818
+1517 <-> 32, 1616, 1806
+1518 <-> 472
+1519 <-> 259
+1520 <-> 94, 1542
+1521 <-> 1508
+1522 <-> 313, 1091, 1631
+1523 <-> 685
+1524 <-> 241, 1087, 1239
+1525 <-> 1174
+1526 <-> 1126
+1527 <-> 1835
+1528 <-> 803
+1529 <-> 460, 833, 1238, 1456
+1530 <-> 1784
+1531 <-> 1331
+1532 <-> 629, 1405
+1533 <-> 470, 1455, 1533, 1796
+1534 <-> 1072
+1535 <-> 605, 724, 1039
+1536 <-> 1178
+1537 <-> 273, 801, 935
+1538 <-> 1023, 1734
+1539 <-> 713
+1540 <-> 1748
+1541 <-> 1382, 1683
+1542 <-> 1520
+1543 <-> 781
+1544 <-> 1631
+1545 <-> 1910
+1546 <-> 1942
+1547 <-> 260
+1548 <-> 581, 747
+1549 <-> 804
+1550 <-> 159, 1143
+1551 <-> 1178
+1552 <-> 461, 1239, 1846
+1553 <-> 1553, 1982
+1554 <-> 68, 85, 1263, 1597
+1555 <-> 1713, 1931
+1556 <-> 946, 1556
+1557 <-> 718, 1060
+1558 <-> 783
+1559 <-> 640, 940
+1560 <-> 1488, 1806, 1898, 1949
+1561 <-> 441, 1046
+1562 <-> 715, 1889
+1563 <-> 552
+1564 <-> 986
+1565 <-> 1507, 1689
+1566 <-> 1570
+1567 <-> 1056
+1568 <-> 3, 371
+1569 <-> 119, 1057, 1852
+1570 <-> 1566, 1570
+1571 <-> 1283, 1736
+1572 <-> 569, 1164, 1995
+1573 <-> 1573, 1784, 1987
+1574 <-> 1244, 1574
+1575 <-> 1282, 1575, 1866
+1576 <-> 123
+1577 <-> 1030
+1578 <-> 289, 710
+1579 <-> 992, 1684
+1580 <-> 4
+1581 <-> 1581
+1582 <-> 128, 883
+1583 <-> 57
+1584 <-> 116
+1585 <-> 637
+1586 <-> 1134
+1587 <-> 1587
+1588 <-> 159, 1280
+1589 <-> 1915
+1590 <-> 136, 1508
+1591 <-> 1223
+1592 <-> 293, 1891
+1593 <-> 853, 1374
+1594 <-> 1349, 1886
+1595 <-> 994, 1595
+1596 <-> 364, 1116
+1597 <-> 1554
+1598 <-> 1729
+1599 <-> 583, 1055
+1600 <-> 147, 458, 1600
+1601 <-> 1894
+1602 <-> 116
+1603 <-> 1390
+1604 <-> 481, 657, 949, 1353, 1983
+1605 <-> 115, 668, 863, 1509
+1606 <-> 1406
+1607 <-> 261, 410, 821
+1608 <-> 690
+1609 <-> 1509
+1610 <-> 673, 1248
+1611 <-> 118, 1788
+1612 <-> 1854
+1613 <-> 547
+1614 <-> 547, 1807
+1615 <-> 479
+1616 <-> 222, 1517
+1617 <-> 880, 1989
+1618 <-> 826
+1619 <-> 860, 1807
+1620 <-> 291
+1621 <-> 618, 1957
+1622 <-> 535
+1623 <-> 480, 531
+1624 <-> 1303
+1625 <-> 223, 1282
+1626 <-> 503, 604
+1627 <-> 1495, 1933
+1628 <-> 288, 978
+1629 <-> 1629
+1630 <-> 465, 1872
+1631 <-> 1486, 1522, 1544
+1632 <-> 196
+1633 <-> 1327, 1329
+1634 <-> 123, 661, 740
+1635 <-> 139
+1636 <-> 913, 1462, 1752
+1637 <-> 404, 522
+1638 <-> 1779, 1813
+1639 <-> 33, 190, 1376, 1639
+1640 <-> 1816
+1641 <-> 554, 1285
+1642 <-> 1129
+1643 <-> 71, 1844
+1644 <-> 171, 987
+1645 <-> 1477
+1646 <-> 16, 199
+1647 <-> 1702
+1648 <-> 895
+1649 <-> 1286
+1650 <-> 344, 886, 945
+1651 <-> 799, 1151
+1652 <-> 1149, 1961, 1984
+1653 <-> 222, 1074, 1411
+1654 <-> 108, 553
+1655 <-> 35, 156, 226, 1992
+1656 <-> 537, 655
+1657 <-> 105, 609
+1658 <-> 1658
+1659 <-> 519, 1463
+1660 <-> 958
+1661 <-> 290, 1929
+1662 <-> 435
+1663 <-> 1855
+1664 <-> 345
+1665 <-> 554
+1666 <-> 1021, 1171
+1667 <-> 662, 687
+1668 <-> 1289
+1669 <-> 842, 1477, 1795, 1975
+1670 <-> 1119, 1921
+1671 <-> 941
+1672 <-> 115
+1673 <-> 385
+1674 <-> 518
+1675 <-> 247, 676
+1676 <-> 509, 1987
+1677 <-> 965, 1677
+1678 <-> 151, 1692
+1679 <-> 541
+1680 <-> 1680
+1681 <-> 221, 789
+1682 <-> 1736, 1767, 1947
+1683 <-> 1131, 1541
+1684 <-> 1579
+1685 <-> 1242, 1401
+1686 <-> 1736
+1687 <-> 680, 1330
+1688 <-> 881, 1829
+1689 <-> 1030, 1565
+1690 <-> 778, 1044, 1900
+1691 <-> 28, 75
+1692 <-> 627, 1678
+1693 <-> 122, 400, 671, 969
+1694 <-> 58, 61
+1695 <-> 741
+1696 <-> 224, 1958
+1697 <-> 1935
+1698 <-> 301, 1188
+1699 <-> 29, 37
+1700 <-> 742, 1883
+1701 <-> 662
+1702 <-> 441, 1647
+1703 <-> 1048, 1076
+1704 <-> 185
+1705 <-> 715
+1706 <-> 1313, 1467
+1707 <-> 867
+1708 <-> 1008, 1159, 1340
+1709 <-> 560, 561, 1253, 1976
+1710 <-> 840
+1711 <-> 1711
+1712 <-> 12, 1219
+1713 <-> 631, 1502, 1555
+1714 <-> 1403, 1714, 1902
+1715 <-> 1183
+1716 <-> 79
+1717 <-> 738
+1718 <-> 602, 1251
+1719 <-> 1203, 1432
+1720 <-> 1447
+1721 <-> 1155
+1722 <-> 930
+1723 <-> 941
+1724 <-> 941
+1725 <-> 432
+1726 <-> 1507
+1727 <-> 397
+1728 <-> 1728, 1937
+1729 <-> 1598, 1913
+1730 <-> 105, 757, 768, 1435, 1730
+1731 <-> 789
+1732 <-> 795, 1465
+1733 <-> 551, 1765, 1835
+1734 <-> 1538
+1735 <-> 755, 1347
+1736 <-> 1571, 1682, 1686
+1737 <-> 932, 1795
+1738 <-> 329, 1738
+1739 <-> 267, 1062, 1848
+1740 <-> 1325
+1741 <-> 326, 541, 1952
+1742 <-> 344, 754
+1743 <-> 75, 253, 507
+1744 <-> 288
+1745 <-> 1216
+1746 <-> 92, 138
+1747 <-> 333
+1748 <-> 182, 1540
+1749 <-> 853
+1750 <-> 88
+1751 <-> 363, 1060
+1752 <-> 1060, 1636
+1753 <-> 433, 583, 1873
+1754 <-> 1194, 1294
+1755 <-> 1138, 1279
+1756 <-> 538, 636
+1757 <-> 1080
+1758 <-> 472, 514
+1759 <-> 284
+1760 <-> 1760
+1761 <-> 326, 620
+1762 <-> 648, 939, 1989
+1763 <-> 383
+1764 <-> 599, 1019, 1941
+1765 <-> 1733
+1766 <-> 289, 365, 1331
+1767 <-> 993, 1682, 1767
+1768 <-> 1768, 1859
+1769 <-> 957
+1770 <-> 288
+1771 <-> 1875
+1772 <-> 1514, 1772
+1773 <-> 801, 1228
+1774 <-> 0
+1775 <-> 935
+1776 <-> 133
+1777 <-> 1310
+1778 <-> 17, 320
+1779 <-> 465, 1638
+1780 <-> 1906
+1781 <-> 1969
+1782 <-> 1330
+1783 <-> 97, 963, 1960, 1983
+1784 <-> 1132, 1530, 1573
+1785 <-> 422
+1786 <-> 1786
+1787 <-> 854, 1317
+1788 <-> 926, 1611
+1789 <-> 586, 1829
+1790 <-> 74, 1790
+1791 <-> 52, 109, 1448
+1792 <-> 1860
+1793 <-> 1316, 1981
+1794 <-> 138
+1795 <-> 1669, 1737, 1861
+1796 <-> 1177, 1533
+1797 <-> 327, 875
+1798 <-> 852, 1183
+1799 <-> 1101, 1399, 1964
+1800 <-> 491, 641, 807, 1353
+1801 <-> 20, 455
+1802 <-> 123
+1803 <-> 415, 1010
+1804 <-> 1804
+1805 <-> 1334, 1926
+1806 <-> 1517, 1560
+1807 <-> 1614, 1619
+1808 <-> 261, 643
+1809 <-> 145, 1122
+1810 <-> 1382
+1811 <-> 60
+1812 <-> 1084
+1813 <-> 213, 994, 1638
+1814 <-> 14, 355
+1815 <-> 841, 1996
+1816 <-> 1049, 1640
+1817 <-> 388
+1818 <-> 1051, 1516
+1819 <-> 1008
+1820 <-> 403
+1821 <-> 350, 1163
+1822 <-> 669, 1179, 1927
+1823 <-> 1323
+1824 <-> 667, 824, 1879
+1825 <-> 608, 839, 876, 1965
+1826 <-> 473, 907
+1827 <-> 1115, 1171
+1828 <-> 440, 1195, 1284, 1913
+1829 <-> 275, 1688, 1789
+1830 <-> 1830
+1831 <-> 1831
+1832 <-> 248, 726
+1833 <-> 1833
+1834 <-> 1190
+1835 <-> 639, 1527, 1733
+1836 <-> 250, 1836
+1837 <-> 577, 1970
+1838 <-> 1156, 1261
+1839 <-> 1192, 1244, 1298
+1840 <-> 1356
+1841 <-> 81
+1842 <-> 738, 1215
+1843 <-> 1843
+1844 <-> 383, 1257, 1643
+1845 <-> 260, 451
+1846 <-> 1552
+1847 <-> 755, 879, 1426
+1848 <-> 38, 1739
+1849 <-> 468, 1144
+1850 <-> 1092
+1851 <-> 934, 1395
+1852 <-> 198, 1569
+1853 <-> 718, 1178, 1387
+1854 <-> 588, 1197, 1612
+1855 <-> 162, 734, 1663
+1856 <-> 236, 751
+1857 <-> 1371
+1858 <-> 1015
+1859 <-> 1768
+1860 <-> 940, 1270, 1274, 1442, 1792
+1861 <-> 1014, 1795
+1862 <-> 1142, 1252
+1863 <-> 281
+1864 <-> 717
+1865 <-> 1865
+1866 <-> 574, 602, 1394, 1575
+1867 <-> 707, 1011
+1868 <-> 659, 1868
+1869 <-> 173, 1991
+1870 <-> 391, 828, 956, 1880
+1871 <-> 189, 692
+1872 <-> 1630
+1873 <-> 42, 1753
+1874 <-> 883
+1875 <-> 11, 1771
+1876 <-> 158
+1877 <-> 186
+1878 <-> 796, 1385
+1879 <-> 486, 1824
+1880 <-> 920, 1870
+1881 <-> 433, 573, 905
+1882 <-> 625, 1954
+1883 <-> 300, 1700
+1884 <-> 1884
+1885 <-> 1291, 1510
+1886 <-> 19, 209, 1300, 1594
+1887 <-> 277
+1888 <-> 85
+1889 <-> 489, 1286, 1562
+1890 <-> 170, 832
+1891 <-> 1211, 1592, 1973
+1892 <-> 611, 697, 914
+1893 <-> 1224
+1894 <-> 775, 1601
+1895 <-> 308, 323, 618
+1896 <-> 1106
+1897 <-> 118, 368, 408
+1898 <-> 1316, 1560, 1944
+1899 <-> 463, 1050
+1900 <-> 1088, 1690, 1951
+1901 <-> 16, 27
+1902 <-> 981, 1714
+1903 <-> 1380
+1904 <-> 278, 1052
+1905 <-> 20
+1906 <-> 671, 1225, 1780
+1907 <-> 800
+1908 <-> 583
+1909 <-> 1361, 1940
+1910 <-> 134, 967, 1545
+1911 <-> 1973
+1912 <-> 1262
+1913 <-> 832, 1426, 1729, 1828
+1914 <-> 1914
+1915 <-> 1399, 1589
+1916 <-> 650, 1916
+1917 <-> 726, 1917
+1918 <-> 1040
+1919 <-> 196, 1378, 1919
+1920 <-> 1, 218
+1921 <-> 1670, 1952
+1922 <-> 1381
+1923 <-> 892, 1012, 1247
+1924 <-> 373, 904
+1925 <-> 210, 1935
+1926 <-> 543, 1013, 1805
+1927 <-> 1102, 1822
+1928 <-> 346, 1928
+1929 <-> 1661
+1930 <-> 19
+1931 <-> 983, 1555
+1932 <-> 685
+1933 <-> 16, 1190, 1627, 1933
+1934 <-> 288, 1243
+1935 <-> 535, 1697, 1925
+1936 <-> 295
+1937 <-> 112, 157, 1728
+1938 <-> 293
+1939 <-> 689, 1059, 1463
+1940 <-> 616, 1909
+1941 <-> 1764
+1942 <-> 243, 256, 1546
+1943 <-> 1950
+1944 <-> 260, 1898
+1945 <-> 1504
+1946 <-> 1946
+1947 <-> 87, 1129, 1179, 1682
+1948 <-> 294
+1949 <-> 1560
+1950 <-> 21, 1943
+1951 <-> 407, 1900
+1952 <-> 1741, 1921
+1953 <-> 1067
+1954 <-> 696, 1882
+1955 <-> 754
+1956 <-> 1457
+1957 <-> 1322, 1621
+1958 <-> 48, 708, 1696
+1959 <-> 1959
+1960 <-> 389, 1783
+1961 <-> 1652
+1962 <-> 29
+1963 <-> 914
+1964 <-> 1428, 1799
+1965 <-> 1825
+1966 <-> 1385
+1967 <-> 1168
+1968 <-> 265, 475
+1969 <-> 4, 1781
+1970 <-> 315, 926, 1837
+1971 <-> 242, 545, 1971
+1972 <-> 1972
+1973 <-> 997, 1891, 1911
+1974 <-> 885
+1975 <-> 1196, 1669
+1976 <-> 1709
+1977 <-> 1977
+1978 <-> 1978
+1979 <-> 1979
+1980 <-> 598, 1487
+1981 <-> 1793
+1982 <-> 1553
+1983 <-> 1054, 1604, 1783
+1984 <-> 731, 1652
+1985 <-> 1355
+1986 <-> 795
+1987 <-> 1573, 1676
+1988 <-> 495, 1023, 1433
+1989 <-> 1617, 1762
+1990 <-> 376
+1991 <-> 1869
+1992 <-> 1035, 1655
+1993 <-> 1411
+1994 <-> 1235, 1994
+1995 <-> 57, 1209, 1572
+1996 <-> 181, 1815
+1997 <-> 395, 1436
+1998 <-> 1300
+1999 <-> 175, 1161
diff --git a/2017/inputs/day_13.txt b/2017/inputs/day_13.txt
new file mode 100644
index 0000000..87bfdb7
--- /dev/null
+++ b/2017/inputs/day_13.txt
@@ -0,0 +1,43 @@
+0: 3
+1: 2
+2: 4
+4: 4
+6: 5
+8: 6
+10: 6
+12: 6
+14: 6
+16: 8
+18: 8
+20: 8
+22: 8
+24: 10
+26: 8
+28: 8
+30: 12
+32: 14
+34: 12
+36: 10
+38: 12
+40: 12
+42: 9
+44: 12
+46: 12
+48: 12
+50: 12
+52: 14
+54: 14
+56: 14
+58: 12
+60: 14
+62: 14
+64: 12
+66: 14
+70: 14
+72: 14
+74: 14
+76: 14
+80: 18
+88: 20
+90: 14
+98: 17
diff --git a/2017/inputs/day_13_example.txt b/2017/inputs/day_13_example.txt
new file mode 100644
index 0000000..0de4bec
--- /dev/null
+++ b/2017/inputs/day_13_example.txt
@@ -0,0 +1,5 @@
+0: 3
+1: 2
+4: 4
+6: 4
+
diff --git a/2017/inputs/day_14.txt b/2017/inputs/day_14.txt
new file mode 100644
index 0000000..1155654
--- /dev/null
+++ b/2017/inputs/day_14.txt
@@ -0,0 +1,2 @@
+uugsqrei
+
diff --git a/2017/inputs/day_14_example.txt b/2017/inputs/day_14_example.txt
new file mode 100644
index 0000000..e0ffae2
--- /dev/null
+++ b/2017/inputs/day_14_example.txt
@@ -0,0 +1 @@
+flqrgnkx
diff --git a/2017/inputs/day_15.txt b/2017/inputs/day_15.txt
new file mode 100644
index 0000000..ffb6d14
--- /dev/null
+++ b/2017/inputs/day_15.txt
@@ -0,0 +1,2 @@
+Generator A starts with 591
+Generator B starts with 393
diff --git a/2017/inputs/day_16.txt b/2017/inputs/day_16.txt
new file mode 100644
index 0000000..8e74751
--- /dev/null
+++ b/2017/inputs/day_16.txt
@@ -0,0 +1 @@
+x3/4,pm/e,x15/7,pp/l,x5/8,s15,x2/6,s9,x0/4,s7,x8/12,pc/b,x2/14,pe/d,x10/11,pg/o,x9/14,ph/n,x15/8,s13,pe/i,x3/7,s2,pd/b,x4/15,s11,x0/14,s10,x7/3,s8,x2/1,pj/i,s8,x10/14,s5,x4/1,pa/h,s11,x12/6,s1,x1/14,s11,x5/12,s4,pn/b,x7/9,pj/l,x1/8,pd/e,s6,pp/g,x10/2,pi/o,x15/5,pp/l,x6/13,s3,x5/12,pk/f,x1/8,s4,x11/10,s10,x4/15,pe/n,x1/5,s14,x7/2,pc/i,x4/10,pj/p,x6/15,s12,x5/0,pa/n,x8/12,s14,x3/5,pb/d,x4/12,s3,x9/6,pg/h,x3/1,s5,x4/10,pm/f,x12/2,s11,x15/13,pa/g,x0/2,s13,pj/i,s13,x6/10,pn/a,x2/1,pm/f,x10/12,s4,pi/c,x14/13,s4,x15/0,s7,x14/8,s5,x5/2,pe/d,x3/9,s14,x7/0,s10,x6/14,s8,x3/15,pn/j,x2/1,pf/a,x13/10,pe/m,x8/0,s2,x4/7,pc/l,s4,x2/0,s4,x3/4,s12,x11/2,s3,x5/8,s2,x4/6,pn/f,x15/5,s15,x4/12,s11,x1/13,pm/b,s13,pj/h,s15,x9/3,pd/l,x14/15,po/i,x10/7,pd/g,x11/13,s5,x9/14,s6,x1/0,s7,x5/8,s7,x0/11,s10,x7/12,s2,x8/9,s7,pb/j,x3/2,s10,x6/0,pe/l,x4/8,pf/p,x6/0,po/i,x7/2,s10,x10/3,pb/n,x2/13,s3,x15/3,ph/c,s14,x1/8,s10,x13/10,s5,x14/7,s7,x1/5,pk/f,x7/0,s11,x13/2,pc/d,x8/10,pi/h,x5/1,pe/f,s8,pa/j,x13/10,pc/f,s12,x9/12,pa/h,x7/0,s15,x8/13,s8,x15/11,pl/d,x2/8,s8,x3/14,s1,pa/e,x4/8,pp/n,x0/14,s3,x10/12,pg/c,x14/9,s2,x0/10,s11,x9/3,pn/a,x5/4,s15,x12/1,s6,x14/6,pf/c,s7,x15/5,s1,x12/13,s13,x9/4,s13,pb/p,x10/5,pe/c,x6/15,s7,x2/14,s15,x7/6,s13,x5/10,pb/l,x9/7,s14,x1/3,s12,x9/10,pn/h,x7/12,pc/k,x9/4,s2,x5/15,s10,x9/0,s2,x11/4,pg/e,x8/1,pm/h,x3/4,s14,x12/2,pi/d,x1/4,s15,x11/15,s14,x13/10,pb/o,x9/12,s5,x6/2,s13,x7/4,ph/m,s4,x8/12,pi/n,s15,x2/5,pj/p,x10/0,s4,x15/9,pn/m,x14/13,pd/b,x10/9,s5,x1/5,s2,x15/3,pe/j,s7,x0/6,s2,x8/9,s3,x2/3,s9,x5/12,pp/b,x6/3,pf/l,x9/0,s15,x3/2,s12,pb/m,x14/6,s12,x3/15,ph/f,x5/1,s13,x0/15,s8,x1/9,pa/p,s9,x15/13,s7,pf/b,x2/8,ph/g,x10/3,pi/o,x13/5,s1,x4/3,s7,x7/8,s13,x0/13,pn/h,x12/15,s14,x2/6,pc/d,x8/12,s5,x5/3,s10,x10/9,pb/p,x4/11,pm/k,x14/3,s12,po/h,x6/1,s14,x15/3,s13,x7/5,pe/i,x12/6,s8,x8/13,s2,x12/15,s15,x2/4,s13,x10/7,s11,x15/1,s4,x5/11,s8,x1/15,s15,x8/13,s8,x1/15,s5,pb/c,x11/10,s13,pm/p,x0/8,s12,x2/5,pj/i,x14/3,pl/o,x2/11,pe/j,x13/1,pa/l,x3/10,s11,x7/4,pj/m,x5/10,ph/g,x13/9,s5,x3/4,s1,x15/8,s4,x0/1,s5,pd/j,x9/12,s6,pk/g,x4/6,s4,x1/3,ph/n,s9,x4/10,pf/i,s10,pk/j,x3/1,s11,pe/h,x12/4,s6,x10/5,s12,x12/13,s15,x7/5,pn/l,x12/15,s9,x14/11,s8,x5/10,s2,x12/8,pc/b,x3/10,po/n,s14,x6/14,pl/j,x3/10,s4,x1/13,pe/c,x15/0,pa/b,x8/4,s4,pk/c,x5/12,s2,pi/g,x11/7,pe/l,x14/12,s5,x8/4,pg/f,x1/7,s8,x4/13,s12,x10/14,pc/h,x13/2,s1,x15/11,s3,x3/14,s5,pb/g,x2/7,s13,x9/3,s9,x13/1,s9,x3/14,s6,x5/0,s6,x8/14,s3,x11/13,s9,x1/5,s12,x4/2,pf/m,x6/5,pi/o,x15/2,s5,x12/5,pc/b,s2,x9/8,s9,x14/0,s6,x6/1,pe/n,x8/9,po/k,x15/4,pl/f,x11/14,s3,x7/15,s14,x14/12,pe/o,x15/7,s15,x6/1,s13,x13/12,pg/h,x5/0,pe/b,x1/9,s1,x8/2,s2,x3/1,pl/k,x9/0,s5,x8/2,pi/c,s1,x6/14,ph/p,x11/15,s4,x4/14,pn/i,x0/3,ph/p,x4/5,s6,x3/7,s3,pj/g,x0/4,po/k,x3/13,s14,x12/2,s8,x15/5,s11,x1/10,pj/e,x6/9,s14,x0/3,s12,x8/5,s10,x4/15,s13,x11/2,pi/m,x13/1,s13,x8/10,s9,x0/13,s14,x5/10,pd/a,x12/8,pg/h,s12,x9/0,s2,x5/2,pi/m,x6/0,s8,x15/13,s10,x6/2,pc/b,x10/4,s12,x15/1,s2,x12/5,pe/d,x10/8,pc/f,s10,x14/1,s9,x6/10,s2,x5/1,s2,x10/0,pp/l,x3/7,s8,x8/2,s13,x13/12,s11,x7/14,pc/k,x0/5,s15,x11/12,pa/g,x13/8,s11,x4/2,s14,x11/5,s8,x0/7,s15,x4/2,pj/n,x11/8,s10,pg/a,x6/10,s9,x2/11,po/h,x8/3,s12,pf/l,x0/1,s12,x10/9,pg/m,x5/2,pl/e,x12/6,s9,x1/14,s12,x10/5,pa/k,x6/12,pe/g,x10/7,pj/d,x13/0,s8,pm/k,x5/12,ph/a,x15/3,po/l,x9/6,pk/g,x7/3,s14,x4/14,s7,x10/11,pp/m,x8/14,s11,x15/0,s1,pe/d,x13/12,pa/k,x8/14,s5,x9/7,pm/g,x8/12,pd/j,x1/13,s9,x10/6,s2,x14/5,pf/e,s1,x4/2,s8,x3/13,pi/k,x11/10,pn/j,x3/7,s3,x1/12,s10,x14/2,s13,x0/10,s4,x12/8,pp/e,x6/7,s13,x5/13,s13,x3/10,s4,x9/12,s12,po/b,x5/4,s6,x0/10,s4,x12/5,pf/c,s10,x10/15,pe/l,x4/9,s14,x6/5,s1,x2/9,pb/m,s1,x4/8,s7,x1/12,s13,x0/14,pa/o,x12/7,pk/m,x1/10,s11,x15/13,s10,x9/0,s8,x1/7,s11,x9/12,s1,x10/13,s3,x11/14,s3,x12/2,s3,x13/7,s11,x11/0,pf/l,x8/10,s10,x12/7,s8,x8/5,s5,x15/1,pj/n,s9,pp/i,x6/12,s15,x0/1,pg/a,x10/15,s1,x1/0,s7,x12/14,pm/d,s15,x6/11,s1,x7/12,pa/h,x3/9,s12,x8/5,pm/b,x9/1,pp/j,x8/7,pb/k,x1/5,s12,x10/9,pa/i,x1/4,s15,x2/0,s3,x15/10,s14,x11/9,s14,x6/14,s11,x13/2,pl/g,x7/11,s10,x4/15,s15,x12/0,s8,x3/6,pa/f,x11/2,s6,x13/6,s10,pk/d,x10/9,po/m,x13/12,pc/b,x8/4,s13,x1/11,pn/o,x8/13,s14,x15/0,s8,x13/9,s15,pa/i,x6/2,s8,x15/1,pc/m,x10/9,s6,x6/5,s3,pg/l,x8/3,s13,pa/m,x2/13,s15,x0/12,s12,x5/11,s3,po/k,x1/15,pa/f,x14/6,s15,x1/15,s3,x14/4,s4,x15/9,s15,pm/n,x1/5,s15,x3/2,pp/h,x13/5,s13,pm/e,x7/10,s5,x15/9,s10,pn/g,x10/6,pb/l,x0/8,s9,x13/1,s14,x5/8,s7,x15/11,s2,x13/4,s14,x12/3,s15,pe/n,x4/0,pk/i,x13/9,s14,x5/15,s11,x3/11,pa/e,x4/5,s13,x3/10,pf/d,x14/0,s14,x10/12,pk/e,s1,x0/1,pm/o,x3/8,s13,x15/9,s7,x11/10,pg/n,s6,ph/p,s12,x12/15,pi/a,x9/0,pe/m,x4/13,pi/p,x11/5,pj/k,x7/6,s7,x3/12,s7,x0/9,pa/d,x15/10,s9,x2/11,s4,x6/1,s4,x13/9,pb/c,x0/11,po/n,x13/6,s7,x5/1,pj/e,x4/10,pp/h,x13/11,pc/d,x3/8,s12,x4/9,s5,pg/m,x13/14,pa/f,x15/3,pi/k,x9/5,pb/e,x3/12,s8,x5/10,s8,po/j,x7/2,s10,x10/11,pg/m,x8/4,s14,x9/11,s5,x2/3,s6,x1/14,pf/h,x2/3,s11,pc/b,s1,x5/6,s11,x13/10,ph/j,s8,x14/9,s5,x4/1,pf/n,x6/13,pc/h,s1,x12/2,pa/j,x1/4,s8,x12/5,ph/o,x6/11,s4,x7/2,pl/b,x9/6,s14,x8/10,pk/h,x0/4,s1,x2/10,pd/o,x4/13,s5,x0/14,s11,x4/10,pl/b,s6,x14/7,pf/o,x6/15,s12,x4/1,s4,x12/13,s6,x8/10,pd/h,s9,x11/0,pb/a,x12/5,pg/h,x15/11,s4,x8/12,s11,x7/14,s15,x8/3,s2,x12/4,po/e,x6/15,s10,x8/10,pi/d,x6/4,pk/g,x5/12,pa/i,x2/9,s13,x15/12,pc/g,x11/9,s11,x2/12,s5,x1/5,pj/p,x15/8,s9,x12/1,s1,x0/2,pf/l,s3,x11/6,s8,x0/10,s9,x5/1,pn/i,x9/2,pd/k,x4/1,pp/l,x10/5,s10,x8/3,s2,x6/9,pg/e,x8/4,s13,x9/2,s8,x14/0,pb/m,x15/3,pi/g,x13/11,s2,x4/14,pj/o,x7/12,s10,x5/2,pm/d,x6/14,pj/b,x10/4,s15,x9/14,s1,x13/3,s7,x8/9,s5,x11/10,pc/a,s12,x9/6,s5,x13/8,s9,x15/12,s5,x0/6,s13,x15/1,s2,x6/3,pd/g,s3,x1/14,s13,x15/7,s6,x12/11,ph/n,x13/2,s12,pm/d,x12/15,pc/p,s12,x14/3,s6,x7/12,pl/h,x6/2,s1,x7/0,pn/c,x13/15,pe/b,x6/11,s1,x2/8,s6,x6/9,s7,x14/1,ph/i,s15,x13/3,s14,x5/6,pm/p,x10/3,s7,pn/d,x12/14,s10,x4/7,s5,x9/2,s9,x10/5,s13,x12/13,ph/k,x15/6,pg/c,x11/4,s1,x9/7,s1,x4/15,pf/m,s10,x6/10,pi/o,x12/2,s8,x4/8,pn/h,x9/6,pd/g,x0/3,s9,x1/7,pj/h,x6/12,pk/f,x7/10,pi/n,x12/0,pb/k,x14/3,pc/g,x7/1,po/n,x4/10,s11,x3/8,s9,x12/6,s13,x7/10,pb/k,x13/5,pc/a,x7/15,s2,x9/12,s14,x11/2,s10,pb/j,x14/5,s14,x4/10,s12,x6/14,s3,x3/13,po/n,x14/7,pb/m,x9/2,pa/k,x14/8,pc/l,x6/10,pj/m,s9,x13/12,pn/a,x15/1,s14,x5/8,pm/c,s1,x11/0,pn/d,x5/14,pc/b,x9/1,s14,x2/8,pi/l,x13/15,s14,x11/2,po/b,s11,x12/10,s12,x7/4,s7,x14/13,pd/n,x6/12,ph/m,x3/10,pp/f,x0/2,pl/g,x5/6,s3,x2/12,s11,x6/5,s11,x13/2,s8,x10/1,s7,pp/d,x11/14,s3,x9/13,pk/o,x2/12,s11,x4/7,s7,x15/2,pl/j,x1/12,s1,x5/9,s12,x12/15,s15,x3/7,s2,x5/8,s14,x2/10,po/m,s9,x5/7,s13,x11/9,pk/g,x3/14,pb/m,x5/2,pk/p,x4/11,s7,x3/6,s4,pe/h,x5/10,pn/j,x0/13,pg/k,x3/11,s11,x4/8,s13,x2/7,po/p,x5/9,pi/f,x8/4,s3,pn/j,x3/13,s2,x12/14,s5,x1/5,s8,x11/15,pf/c,x14/10,s10,x12/0,pa/d,x15/8,s8,x3/0,s15,x1/10,s11,x2/14,pb/n,x5/10,ph/j,x2/12,s12,x8/0,pa/d,s1,x9/15,pm/g,x14/4,s5,x11/9,s14,x14/0,pj/f,x15/6,s14,x9/13,s14,x7/4,s3,x12/10,s4,x9/13,pd/l,x10/6,pe/f,x0/13,pm/h,x6/1,s1,x12/9,pf/p,x2/14,s11,x8/7,ph/l,x15/3,s15,x11/5,pf/p,x15/2,pm/g,x0/10,pe/n,s11,x5/8,pl/o,x0/7,pa/e,x14/10,s11,x15/5,s13,x9/6,pl/o,x14/7,s5,x8/13,pp/m,x0/3,s12,x1/10,pd/l,x15/11,pj/f,x14/10,s5,x1/3,pl/p,x4/7,s8,x12/9,pe/m,x8/14,pa/n,x3/12,ph/o,s10,pi/e,x5/0,pm/g,x3/14,s8,x12/8,s13,x3/13,pc/j,x1/14,s2,x10/6,pe/f,x7/4,s13,x15/12,s7,x2/7,s1,x11/0,s6,x10/7,pd/n,s5,x4/0,s2,x12/10,s13,x9/2,s8,x14/13,s2,x12/0,pk/m,s14,x1/10,pj/c,x9/15,pm/p,x5/14,s5,x0/13,s11,x12/15,s7,x0/13,pl/i,x4/5,pn/o,x8/6,s5,x5/1,pp/b,x14/15,pc/m,x4/3,s3,x5/7,pb/f,x6/8,pi/l,x11/0,pb/a,x6/14,s4,x8/13,s9,x9/7,s9,pc/o,x2/14,s9,x15/10,pl/i,x2/1,s15,pp/b,x8/13,pk/n,x3/11,s11,x6/4,s1,x15/13,pd/i,x5/7,s8,x15/14,s4,x12/3,s4,x13/2,s4,x10/3,s10,x1/14,s14,x9/0,s1,x8/14,pp/o,x0/11,pd/c,x12/9,s3,x14/6,s13,x4/11,s2,x9/12,pn/e,x0/6,pk/l,x11/4,s9,pd/c,x7/9,po/a,s14,x14/4,s10,pd/j,x6/15,s4,x4/11,pl/h,x1/8,pj/k,x2/10,s14,x14/1,pl/o,x11/0,s4,x13/10,ph/e,x1/6,s8,pm/j,x0/8,pc/o,x15/10,pf/m,x7/3,s10,x15/0,s1,x6/1,pe/l,x13/7,s10,x8/1,s12,x4/6,s11,x5/15,s15,x14/7,pb/g,x0/12,pf/o,x1/9,s8,x0/7,s10,x1/11,s7,x4/15,pl/j,x3/9,s9,x14/15,s12,x9/1,s7,x5/8,pm/n,x6/13,pk/b,x0/7,s8,x11/10,s3,x13/12,pn/h,x10/4,pa/p,x13/15,s12,x4/14,s13,x2/1,s5,x15/10,s10,x9/3,po/m,x15/11,s11,x8/6,s1,x11/9,s7,pb/l,s8,x8/0,s15,x15/5,s14,x8/10,s5,x15/14,pf/h,x10/13,s14,x5/9,pm/c,x14/8,s9,x9/7,pg/a,x1/11,s14,x8/3,pm/n,x9/4,s4,x2/6,s3,x3/5,pf/a,x9/0,pp/k,x13/14,s1,ph/e,x1/5,s13,x3/15,s5,x12/9,s3,x7/11,s1,x6/12,pm/b,x10/11,s7,x4/1,pn/l,x6/5,s6,x12/7,ph/o,x0/8,pg/f,x12/6,s5,x0/2,s1,x10/9,pa/c,x6/1,s12,pl/j,x4/15,pi/o,x3/11,s6,x6/9,s7,x2/8,ph/j,x9/12,s14,x6/4,s6,pm/k,x13/15,s10,x9/11,pp/c,x7/6,s2,x11/10,s15,x14/8,pl/i,x4/5,ph/c,x13/12,pl/g,x8/11,pd/p,x4/9,ph/e,x12/6,s5,x13/10,pn/c,x3/5,s5,x1/8,pk/d,x14/6,s10,x4/3,s10,x12/11,s2,x5/2,pi/j,s14,x11/15,s9,x1/9,pm/k,x10/15,pp/f,x5/4,s4,x2/7,s5,x10/13,pn/o,x1/11,s10,x0/12,pe/b,x5/4,s15,x12/14,pc/i,s2,x13/4,s14,x14/1,s1,x2/4,ph/m,x14/1,s15,x3/13,pc/b,x14/9,s4,x6/8,s9,x12/14,s5,x10/9,pa/k,x14/13,s3,x5/7,s4,pj/i,x6/4,s1,pe/a,x8/5,s14,x12/9,s9,x13/14,s11,x3/15,s3,x13/11,s6,x12/7,pc/m,x8/11,s11,x10/1,s10,x15/12,pp/g,x3/4,pm/c,x15/13,s12,x10/8,s8,x5/12,pj/h,x13/4,s7,x11/9,s15,x10/12,s7,x2/11,pf/m,s13,x15/4,s4,x5/3,s4,ph/p,x4/8,s6,x9/14,pa/b,x5/4,s11,x11/8,pf/m,x15/7,s7,x4/2,s4,x15/9,pp/g,x5/7,s1,x13/11,pd/m,x5/0,s6,x3/8,pb/e,x12/2,s3,x3/6,s15,x13/2,pg/o,x5/1,s9,x10/13,s1,x2/14,s5,x10/6,s9,x5/1,pj/h,x10/3,pc/b,x2/8,pd/j,x12/1,s9,x13/8,s12,x15/12,s5,x8/9,s15,x13/0,s9,x2/11,pm/i,x8/10,s3,x14/0,s10,x10/8,s12,x2/5,s8,x1/14,pa/d,x2/0,s3,x14/9,s15,x1/0,s8,x13/7,pi/g,x0/1,s10,x10/13,pl/d,s7,x2/8,s10,x0/15,s12,x4/3,pi/k,x11/5,s3,x7/2,s15,pg/f,x4/0,pp/c,x10/15,s10,pj/a,x4/2,pg/o,s13,x9/8,pi/f,x5/7,s12,x12/9,pe/m,x2/6,s5,x11/0,s8,x6/12,pd/a,x0/2,s7,x9/7,ph/e,x14/11,pl/c,x4/3,s11,x7/0,pd/b,x8/2,s7,x15/13,pf/p,x9/11,s9,x0/10,pd/g,x2/4,pa/j,x3/8,s5,x12/1,s12,x15/5,pb/e,x9/10,pj/p,x6/5,pm/k,x11/7,pd/h,x4/0,pf/b,x10/5,pn/a,x14/11,s14,pj/l,x7/1,s9,x5/13,pg/h,x1/11,po/c,s11,x7/12,s12,x2/14,s2,x15/10,pb/d,x8/13,po/h,x12/6,pl/e,x9/11,s6,x14/15,s13,x12/13,ph/d,x9/7,s5,x11/10,pj/b,x5/13,s12,x2/11,s3,x5/6,s11,x10/4,s2,x13/11,s15,x0/2,pa/n,x12/13,pb/h,x14/3,pf/e,x9/6,s8,pj/l,x12/13,pd/k,x15/0,s5,pg/m,x14/10,pe/k,x4/3,s14,x1/9,s1,x15/0,s5,x3/8,s10,x2/1,pn/i,x0/4,s10,pj/p,x7/5,s15,x3/14,s15,x7/5,s4,x15/6,s10,x7/3,s2,x8/12,s13,x10/14,s15,x3/12,pg/i,x1/9,s6,x4/3,ph/b,x0/5,s5,pa/c,s7,x15/8,s8,x0/10,s9,x9/12,s6,x11/7,s2,x15/1,pm/p,x8/2,s15,x3/4,s3,x6/5,pa/f,x14/8,pm/b,x15/11,s2,x0/3,s6,x12/9,pi/e,x15/7,pp/n,x4/2,s15,x15/0,pf/g,x13/14,pj/m,x1/0,pe/i,x10/11,pp/d,x15/6,s2,x10/13,pj/o,x12/9,ph/e,x14/10,pm/a,x3/0,s4,x15/4,s11,x14/8,pp/n,x6/0,s3,x10/3,s3,x13/0,s7,x5/2,s2,x1/13,pk/j,x9/10,pn/a,s14,x13/8,pc/k,x6/10,pi/j,x3/12,s2,x9/8,s7,x3/1,pl/e,x12/15,po/m,x5/1,s1,x2/7,pk/l,x3/15,s10,pi/c,x11/10,s15,x12/0,pj/g,x8/7,pi/k,x11/15,s6,x1/13,s11,x14/8,s11,x13/5,s2,x15/4,s9,x1/9,pm/p,x3/11,pb/g,s13,x9/0,pl/k,x6/2,pb/f,x11/4,s14,x8/3,s6,x4/6,s10,x13/15,s9,x9/6,s6,x14/4,pd/i,x10/12,pl/h,x11/13,po/n,x6/9,pg/p,x14/7,s1,x0/11,s13,x9/3,pi/j,x14/1,s8,x8/13,s12,x4/11,s8,x13/3,pd/e,x6/7,s10,x2/5,s11,x9/14,pl/g,x15/1,pn/a,x14/12,s8,x1/15,s11,x6/9,s8,x3/7,pd/g,x11/0,pj/b,s10,x8/1,pa/m,x4/10,pe/d,x2/6,pg/b,x13/0,s14,x3/12,s11,x9/15,s6,x14/10,pk/p,x6/3,s7,x13/15,s10,x10/3,pa/e,x4/0,s13,x3/7,pl/n,s5,x5/15,pj/b,x0/1,s10,x12/13,s2,x0/6,pl/g,x3/12,pm/c,x5/1,pn/p,x4/6,pk/d,x8/2,s6,x14/12,pi/l,x3/9,s12,x6/5,s1,x2/10,s12,x12/3,pe/n,x15/4,pf/l,x12/14,pb/d,s13,x7/9,s4,x11/3,pe/f,x6/13,po/j,s8,pe/h,s12,x11/12,s15,x1/3,pl/g,s12,x10/13,s9,x5/8,s6,x0/6,s4,x5/3,pj/m,x10/2,s13,x15/7,pe/g,x5/3,s12,x1/9,s12,x2/14,s4,x11/0,s11,x2/7,pi/k,x11/9,po/b,x14/13,s11,x2/12,s10,x6/5,s11,x8/11,s14,x3/4,s3,x12/8,s2,x11/6,s8,x7/5,s9,x3/9,s13,x10/14,s2,x2/0,s8,x5/7,s5,x14/2,s1,x4/13,s5,x14/8,s2,pp/m,s15,x13/1,s5,x6/7,s4,x11/12,s5,x14/3,s2,x8/10,s7,pb/f,s1,x7/6,s7,x15/9,s13,x13/12,pg/h,x3/4,s13,x13/9,s5,x12/6,pk/c,s10,x8/1,s11,x14/0,pm/p,s12,x2/1,pb/h,x0/4,pm/l,x13/6,s3,x5/14,s14,x10/3,po/j,x0/9,s12,x1/5,s9,x8/4,s1,x12/6,ph/g,x10/11,s5,x12/9,pd/n,x1/14,s6,x11/4,pi/e,x2/1,pn/f,x11/13,s1,x5/0,s2,x6/9,pa/e,x0/10,pg/f,x13/15,s9,x5/11,po/c,x15/13,s15,x1/7,pp/l,x6/15,pg/k,x12/14,s7,x10/1,s12,pf/i,x2/7,s9,x13/4,pl/d,x14/10,s10,pm/k,x15/1,pd/e,s1,x11/12,s2,pg/o,x6/9,s14,x14/2,s4,x8/10,s4,x4/14,s15,pa/k,x3/11,s14,x14/15,pl/c,x8/3,s13,x5/1,s14,x14/8,s13,x3/7,pf/p,x13/8,pg/l,x7/6,s2,x11/9,ph/o,x0/2,pd/e,x4/6,s5,x7/2,s2,pj/i,s5,x5/12,s13,x0/10,s5,x7/8,s1,x4/1,s6,x7/9,s10,x3/15,pd/p,x2/11,s9,x0/10,pa/f,x15/4,s1,x6/10,pb/p,x4/14,s7,x2/13,pg/c,x12/10,s1,x13/4,s1,x1/7,s4,x4/5,pn/k,x11/10,pj/i,x1/0,s7,x14/6,s9,x11/5,s10,x4/13,s7,x1/12,s9,x3/14,s13,x0/1,pc/d,x11/10,s7,x8/2,s2,x5/11,s8,x15/6,pf/j,x10/0,s5,pm/d,s5,x7/5,s6,pg/a,x1/9,s4,x3/14,s14,pj/k,x12/10,s4,x15/3,pn/p,x6/11,pa/d,x10/8,s15,x9/11,s2,x2/3,po/g,x12/15,s15,x0/13,pj/p,x4/9,s6,x15/11,pk/g,x5/12,s3,x9/4,pj/a,s6,x0/14,s12,x12/7,pm/k,x2/0,s7,x6/1,pa/l,x14/5,s12,x1/4,s10,pn/g,x14/10,s8,x6/8,po/p,s8,x1/10,pc/a,x9/2,pg/h,s15,x10/11,pc/m,x14/4,s8,x11/7,s13,x9/12,s1,x6/2,pj/b,x1/12,s1,x10/6,ph/i,x3/13,s10,x2/7,s9,x14/4,s8,x3/5,s7,x7/8,pk/m,x12/15,s14,x0/9,s6,x5/4,s13,x0/11,s15,x15/14,pa/h,x4/9,s10,x5/0,s1,x13/14,s8,x12/15,s6,x2/4,pp/l,x5/6,pk/o,x13/3,s3,x8/10,s5,x11/12,ph/a,x5/0,s2,x6/13,pp/m,x5/2,pe/d,x6/13,po/n,x7/9,s13,x14/8,pm/f,x1/11,s6,pj/i,x2/9,s10,x15/5,pf/l,x14/9,s6,x15/1,s2,x4/8,pm/o,x15/13,s10,x8/1,pc/b,s6,x3/7,s1,x13/2,s4,x4/1,s4,x2/11,pe/m,x14/4,s10,x7/9,pd/k,x2/13,po/c,x3/9,s10,x13/8,s14,x4/7,s5,x2/0,pb/f,x12/6,pe/p,x11/9,s9,x12/7,pm/i,x4/3,s6,x2/13,pg/j,x12/0,s3,pl/b,x11/13,s10,x15/8,s2,x9/5,s4,x6/10,s2,x5/13,s13,x7/11,s15,x4/2,s8,x0/11,ph/p,x5/2,pm/n,x4/0,pe/l,x13/8,s13,x10/6,pp/b,x7/9,s14,x1/0,po/i,x3/13,s5,x8/12,pm/e,s10,x9/0,pp/k,x4/13,s8,x5/10,s5,pc/d,x14/4,s5,x12/10,pj/l,x13/11,s2,x8/1,s11,x3/12,s6,x10/2,s6,x0/12,s15,x9/7,pb/p,s7,x2/3,s11,x8/1,pk/m,x5/15,pf/d,x11/6,s10,x1/8,s11,x10/9,pm/p,x7/11,pn/b,s5,x13/6,s2,x8/9,s5,x7/13,s13,x4/1,s12,x3/9,pd/f,x13/14,s8,x2/0,s10,x10/14,pb/h,x11/1,s2,x15/3,s5,x10/6,s11,x8/1,pm/g,x11/12,pa/b,x5/4,s12,x7/12,pg/o,x1/15,pn/d,x13/9,s7,x2/4,s4,x12/14,pm/i,s5,x8/11,pb/g,x9/0,s6,x1/14,s3,x4/9,pd/i,x2/6,s14,x3/7,s4,x8/13,pf/k,x6/9,s7,x10/14,s3,x8/9,s8,x0/15,s1,x8/9,pl/n,x11/12,s12,x3/9,pc/a,x11/4,s2,x1/12,s12,x4/10,pb/l,x3/8,s3,x0/1,s1,x10/8,s6,x7/6,pn/e,s6,x9/8,s12,x7/5,pm/k,x14/0,pb/i,x12/5,s1,x15/3,s14,x6/10,s15,x15/11,pa/f,s7,x3/4,pj/h,s9,x8/2,pb/g,x4/3,s15,x2/11,s9,x1/4,s2,x0/12,pf/c,x13/10,s11,x5/14,s8,x9/0,s9,x11/8,pj/n,x2/15,s8,pf/k,s10,pb/j,x10/6,s13,x13/2,pg/n,x11/10,pi/j,x6/0,s12,x10/9,s10,x12/2,s11,x7/13,pa/d,x3/15,s2,x11/12,s11,x10/5,s6,x8/12,s8,x5/15,s15,x13/6,s3,po/i,x11/12,s9,x15/1,pb/f,s2,x12/6,s9,x13/4,s5,pp/d,x5/2,s6,x0/6,s9,x9/11,s14,pa/o,x15/3,s8,x9/1,s8,x11/12,pe/i,x6/3,s8,x0/4,po/f,x7/11,pm/n,x15/8,pg/o,x12/3,s8,x14/8,pk/b,x12/1,s8,x9/4,s7,x10/12,s12,x4/6,pe/d,x10/2,pb/c,s15,x4/12,s10,x9/1,po/n,s8,x3/2,pm/g,x4/1,pi/p,s11,x13/15,pk/a,x9/0,pe/m,x15/14,s4,x6/7,pl/k,x10/13,s14,x7/3,pg/e,x11/1,ph/k,s9,x15/7,s11,x14/9,pc/i,x6/15,pn/f,s6,x9/3,pk/c,x1/8,s2,x9/4,s8,x7/13,s3,pa/o,s11,x14/15,pm/e,x11/8,s1,x6/0,pb/k,x11/15,s14,x12/6,s4,x1/8,pa/h,s9,x5/0,s4,x10/9,s3,x0/4,s1,x12/7,s8,x5/15,s3,x11/0,s1,x5/12,s7,x0/6,s14,pd/c,x3/7,pa/n,s5,x12/4,s2,x3/13,pg/e,x2/15,s10,x4/1,s12,x8/15,pn/l,x3/14,s4,x1/15,pe/j,x5/4,s6,x14/7,s2,x12/13,pc/g,x2/3,pn/b,x0/6,s9,x10/2,pc/a,x15/8,pf/g,x10/11,s1,x8/13,pe/h,x4/6,pj/g,s15,x9/12,pm/l,x15/10,s8,x7/12,s8,x6/9,pn/i,x4/0,pd/a,x3/1,s7,x2/4,s1,x10/0,s4,x9/11,pe/k,x12/15,s13,pf/i,x14/11,s2,x0/15,s11,x12/13,po/k,x1/7,pi/j,x5/2,pk/m,x0/10,s2,x5/4,pp/d,s6,x8/12,pe/c,x0/14,s6,x11/6,s9,x9/7,s7,x6/0,s10,x5/2,s5,x14/11,s12,x0/4,pp/a,x9/12,pm/d,x14/6,s2,x15/4,pl/c,x11/12,s4,x7/5,po/j,x14/1,s12,pn/e,x10/4,pm/a,x2/13,s10,x12/6,s2,x9/2,s4,x3/6,s6,x2/0,s15,x11/14,pn/c,x15/13,s4,x14/0,s4,x11/9,s13,x2/6,pm/b,s8,x15/1,po/n,x9/10,s10,x5/0,pg/j,x2/8,s13,x0/15,s7,x9/1,s3,x8/6,s9,x4/0,po/l,x14/5,pd/h,x8/4,pa/l,x13/11,s7,x15/14,pb/n,x10/8,pj/f,x15/13,s13,x6/5,s15,x1/11,pd/o,x3/9,s4,x14/11,pb/m,x5/15,pa/h,s6,x1/11,pj/b,x5/14,s15,x15/3,s11,x5/12,pa/m,x9/11,s1,x10/1,s5,x12/11,pc/i,x4/1,s6,x11/13,pl/f,x1/6,s11,x15/11,pi/h,x7/10,s14,x2/9,pd/m,x8/1,s13,x0/3,s3,x7/12,pj/e,x2/14,s7,x9/12,s4,x1/10,pp/g,x9/13,s14,x12/0,s13,x1/3,pi/o,x5/9,s5,x4/12,pf/m,s15,x11/3,s11,x13/4,po/k,x5/0,s11,x7/13,pl/d,x15/11,s14,x13/6,s14,pe/o,s11,x12/14,s14,pc/j,x5/7,pa/g,x6/15,s1,x14/3,pd/j,s15,x1/8,s14,x2/6,s3,x1/0,pb/n,x14/6,pg/e,x4/13,s4,x7/0,pf/n,s10,x6/12,pj/o,x9/14,s10,x11/1,pi/m,x7/8,pf/d,x11/14,s10,pm/b,x4/5,s9,x9/7,po/j,x4/15,pi/b,s4,x8/2,s1,x3/13,s12,x15/1,s11,pm/d,x11/8,s1,x12/6,pf/g,x1/7,pm/p,x15/5,s11,x8/14,pl/h,x0/1,pe/a,x4/10,pm/p,x6/12,po/f,x7/2,pp/m,x14/3,s4,x10/15,pa/f,x0/14,pc/b,x7/11,s1,x15/9,pa/o,x3/5,pd/e,x11/6,po/m,x15/12,s5,x10/6,pb/h,x2/12,s5,x10/4,pg/i,x14/12,s4,x8/1,s13,x3/13,pj/b,x5/0,s3,x6/14,pg/m,x7/3,s4,x10/1,pb/l,s12,x8/15,s6,pm/f,x6/9,s14,x14/3,pg/k,x5/12,pd/n,x6/14,pj/f,x10/12,s1,x14/1,pc/g,x10/7,s11,x4/14,s9,x3/15,s12,x12/11,s8,x5/1,s6,x2/13,s5,x6/8,pm/k,x14/5,pf/p,x0/11,s12,x7/13,s3,x3/14,pj/h,x6/2,pe/k,x4/7,po/h,x3/8,s5,x14/10,s12,x12/4,s7,x13/14,pm/i,x4/0,po/d,x12/7,pp/b,x15/10,s7,x8/5,pl/a,x6/10,s7,x13/15,s6,x3/8,s11,x13/12,s13,x14/6,pb/m,x13/9,pe/j,x15/11,pb/f,x5/13,s3,x4/1,s3,x12/7,s5,pk/c,x15/10,s11,x1/13,s15,x9/5,s1,x14/3,pn/p,s10,x7/15,s2,pl/d,x0/2,pa/m,s7,x1/13,s10,ph/e,x6/12,pn/a,x3/15,pg/i,x10/8,pd/o,x7/13,pc/a,x10/0,pi/b,x3/12,pc/h,x15/1,s1,x0/11,pe/f,x3/15,pm/k,x8/4,pf/b,x7/10,s3,x2/13,po/k,x6/1,pl/h,x7/3,s6,pf/o,x8/1,s10,x14/13,pl/p,x4/8,s5,x14/5,pb/o,x13/2,pf/c,x9/1,pk/o,x6/11,s4,x7/0,s6,x3/11,s3,pc/b,x2/5,s15,x4/15,pm/o,s11,x7/5,pb/n,x12/10,s11,x13/15,pp/c,x8/14,s12,x3/1,s1,pe/g,x4/14,s6,x3/13,pc/p,x10/8,pn/e,s11,x4/11,s1,x7/10,s4,x5/14,pd/g,x2/12,s5,x3/13,s14,pp/b,x14/4,pk/n,x3/1,pd/g,x11/10,pe/p,s6,x9/8,s10,x11/3,s1,x5/10,s13,x8/15,s2,x12/9,s1,x0/10,pa/i,x1/9,pd/o,x5/12,s13,x2/0,s10,x13/9,s14,pb/p,x0/10,pa/h,x9/5,s3,pm/k,x4/8,s10,x6/10,s4,x11/3,s12,x4/7,s13,x9/6,s5,pd/i,x7/10,po/l,x4/14,s1,x0/2,s6,x1/5,s9,pm/c,x14/4,pp/n,x2/5,pl/k,x15/4,s2,x1/14,s9,x0/13,s14,pm/i,s1,x8/2,s10,x12/13,s1,x8/2,s3,x6/1,pb/e,x4/3,s2,x2/12,s6,x0/5,po/j,x8/4,pi/a,x10/2,pp/f,s5,x4/8,pl/g,x1/0,s8,x12/3,s3,x5/15,s4,x3/0,pm/n,x11/6,s5,x14/13,s14,x6/3,s7,x2/1,s15,x7/6,s14,x5/9,s9,x1/15,s9,x6/0,s12,x7/9,s13,x13/12,s14,x14/9,s15,x8/13,s5,x5/14,s8,x11/13,pj/b,x2/3,pn/o,x15/5,s4,x6/13,s6,pd/l,x9/8,s1,x0/14,s10,x6/5,s2,pp/i,x12/9,s7,x14/2,ph/f,s4,pi/l,x15/11,s12,x13/2,pn/h,s6,x4/10,s15,x13/6,s15,x15/8,s5,x4/14,pf/i,x3/7,po/g,x2/4,s5,x14/8,s10,x9/3,s4,x2/13,pf/a,x15/11,pd/c,x12/13,s1,x10/11,s12,x1/7,s10,x14/15,s10,x6/3,s12,x9/15,s14,x3/10,s11,pa/b,x14/2,s12,x5/13,s5,x9/2,pn/k,x7/1,s7,x4/5,s13,x13/6,s5,x15/3,s4,x13/1,pa/h,s8,x3/4,pm/e,x5/10,pb/g,x3/15,pe/i,s7,x4/5,s2,x2/15,s1,pm/a,x6/0,s5,x13/11,pp/b,x5/9,s6,x2/10,pk/o,x1/13,s3,x10/14,s1,x6/5,s11,x2/7,pg/i,s12,x13/9,s8,x2/10,s11,pm/a,x5/14,pg/o,x11/4,s11,x6/13,pd/p,x4/5,s1,x10/13,s15,x0/2,s1,x3/10,s4,x5/9,s11,x3/13,s13,x5/9,s1,x11/8,s14,x14/4,s9,x12/6,pm/f,s15,x7/2,pc/k,x5/6,s14,x13/1,pa/i,s10,x4/9,ph/c,x6/5,s1,x11/14,s1,x9/13,s14,pa/j,x7/14,pi/b,x12/10,pd/a,x0/11,s15,x12/7,pb/i,s12,x9/15,pe/f,x5/3,s7,x10/4,pg/i,s2,x1/6,s15,x8/14,po/j,s10,x9/11,pe/d,x2/3,s11,x14/10,s5,x13/3,pm/l,x7/15,pn/e,x12/6,s12,x8/5,s1,x1/14,s5,x6/7,s2,x3/12,s3,x5/15,s4,x13/3,s2,x11/2,pd/b,x7/0,s10,x13/8,s6,x6/5,s13,x7/8,pg/l,s10,x11/9,pn/a,x8/1,pm/f,s14,x15/14,s14,x2/9,s12,x13/11,s8,x5/2,pk/o,x7/11,pf/j,x15/13,pi/m,x1/7,s15,x13/14,s3,x12/0,s4,x6/1,s9,ph/l,x8/2,s4,x12/10,pm/n,x11/1,pl/j,x2/6,s7,x8/5,s7,x15/13,s6,x8/7,s2,x2/3,pk/p,x0/9,s9,x6/10,po/e,x3/14,pa/p,x8/15,s6,x3/7,s12,x14/9,s13,x2/8,pi/c,x13/15,s6,x1/3,pp/j,x5/10,s8,x15/1,po/f,x13/6,s13,x10/12,pp/j,x2/7,s14,x5/4,pe/a,x3/11,s9,x13/9,s10,x5/11,pg/n,x9/7,pa/l,x1/14,s6,x9/10,s14,x13/3,pn/o,x15/9,s3,x11/10,s7,x13/3,s7,x12/10,s1,x7/14,s4,x9/15,s8,x8/7,s3,x5/14,s7,x11/13,pc/g,x4/9,pi/n,x2/3,s11,x11/10,s13,x5/12,pf/e,x3/2,s4,x10/1,s12,po/m,x9/0,s6,x2/14,pl/f,x12/3,s6,x9/2,s10,x15/6,pi/c,x2/7,s7,x14/0,pl/m,x13/1,pe/p,x9/2,pb/j,x8/1,s11,x3/11,s4,x15/12,s7,x14/9,pg/l,x3/0,pa/p,x13/4,s5,x1/8,s10,x10/3,s6,x6/12,s8,x10/7,s1,x9/13,pk/h,x2/7,s15,pi/b,s5,pe/j,x12/6,pn/k,s14,x4/5,pi/b,x14/15,s15,x7/1,pc/a,x8/10,s6,x0/1,s4,x7/9,s10,x13/1,ph/l,x15/11,pg/a,x7/3,s4,x15/1,s1,x14/7,s13,x6/15,s8,x0/10,pm/o,x4/6,s8,x3/13,s2,x9/6,pg/p,x3/11,pi/k,x6/14,s7,x7/10,pe/l,x8/15,s9,pg/c,x7/11,pf/d,x2/8,s12,x15/11,s6,x5/9,pk/i,s5,x7/10,pa/g,x12/8,s5,x7/15,s6,x13/1,pf/b,x3/7,ph/n,x15/13,s4,x9/4,pc/g,x3/2,s12,x11/12,pm/o,x14/6,s6,pj/i,x3/4,s7,x12/0,pk/b,s11,x15/1,s14,pn/d,x11/0,pg/m,x12/1,s4,x5/7,s8,x9/15,s3,pj/h,x0/1,s10,x2/4,pd/m,x13/14,s11,pb/p,x3/10,s5,x15/8,pm/c,x4/14,s4,x5/8,s2,pa/h,x14/2,pe/i,x15/10,pp/b,x14/5,s15,x13/7,s12,x5/6,pa/c,x11/12,s9,x10/5,s7,x0/13,ph/f,s10,x3/12,s8,x15/2,pp/a,x5/0,s14,x13/11,s2,pn/e,x15/0,s11,x4/13,po/c,x2/5,s13,x11/1,s5,x12/2,s15,x15/13,s14,x9/5,s10,x13/12,pn/e,x10/8,pk/i,x0/9,s8,x2/10,s1,x8/0,po/c,x10/14,pb/h,x0/5,pn/i,x14/10,s2,x3/6,s8,x1/10,s15,x2/0,s13,x15/8,pc/h,x2/3,s15,x5/9,s11,pb/a,x14/4,s10,x13/7,s11,x6/2,s1,x5/4,pj/e,x9/3,ph/l,x15/4,s3,x5/0,s4,x10/3,s4,x4/14,pm/d,x13/9,s3,x15/7,s6,x9/14,s8,x2/10,s7,x0/4,s4,x11/6,pp/a,x13/4,s4,x0/12,s9,x14/8,pc/n,x4/2,s14,x11/9,pj/k,s14,x15/10,pd/g,x6/7,s8,x8/15,s8,pm/j,x11/1,pg/a,x5/8,pk/i,x10/2,s13,x5/14,s15,x1/15,pl/m,x5/14,s3,x10/3,pj/g,x13/9,ph/p,x5/2,pi/o,x15/12,s11,x6/10,pg/l,x8/5,s8,x4/13,pe/k,x3/0,pn/j,x2/5,s3,x10/8,pd/m,s10,x2/12,s14,x0/7,s10,x15/3,s15,x6/13,s14,x4/0,s15,x11/6,s2,x3/13,s8,x4/14,ph/k,s2,x15/6,pe/o,x3/14,s11,x1/7,s7,x2/11,pa/l,x3/0,pf/o,x4/7,s10,x11/6,pg/i,s6,pj/n,s14,x9/4,ph/d,x2/12,s13,x13/0,s13,x3/8,po/p,x14/11,s1,x0/10,pj/m,x12/1,s10,x15/11,pn/a,x2/14,ph/j,s3,x10/11,s12,x6/15,s3,x11/14,pp/c,x5/6,s4,x14/12,s8,x7/15,s2,x10/2,pl/m,x0/12,po/n,x8/5,s3,x4/14,pi/a,s13,x12/5,pd/j,x15/2,s13,x14/7,s5,x5/3,s13,x11/6,pa/c,x4/12,pp/e,x14/0,s13,x8/11,s6,x14/13,s10,x2/11,pk/i,s9,ph/f,x5/9,s5,x7/12,pk/a,x11/8,pb/n,x15/0,s3,x6/4,pl/m,x12/11,s10,x4/15,s15,x13/10,pj/p,x8/14,pg/m,x4/3,s10,x0/2,s15,x6/4,s14,pd/f,x3/12,s3,x14/9,pp/l,x3/15,s10,x4/14,pi/d,x12/1,s1,x4/11,s3,x14/3,s2,x5/8,s12,pj/p,x2/10,s3,x3/12,s14,x11/1,s1,x13/3,s5,x6/0,pl/g,x4/2,s6,x14/10,s11,x0/11,ph/j,x14/2,s13,x3/11,s5,x10/7,s8,x15/12,s8,x4/5,s10,x13/14,s11,x5/8,pg/p,x1/7,s13,x11/8,s8,x1/4,pf/h,s5,x9/12,po/k,x1/4,s10,x3/7,s8,x9/8,s13,x5/1,s11,x13/14,s2,x8/10,pf/e,s1,x12/9,po/k,s10,x11/15,s6,x7/1,s6,x8/9,pe/p,s13,x10/3,s2,x8/9,pb/c,x2/15,s11,x7/11,s3,x9/10,s15,x6/7,s5,x10/13,pa/e,x7/11,s10,x12/10,pm/l,x8/13,s9,pj/n,x15/11,pf/i,s11,x7/2,s14,x0/10,s15,x1/5,s7,x8/3,s8,x5/11,s15,pl/h,x4/2,s10,x6/8,s8,pb/g,x12/2,s11,x6/11,s6,pc/j,x14/12,s5,x6/8,s9,x11/9,s13,x12/5,s5,x3/14,s12,x1/0,pd/b,x4/5,s3,x0/6,s5,x14/15,pa/e,x7/1,s6,x11/15,s13,x14/1,s15,x10/6,pm/i,x13/2,pl/n,x6/15,pj/i,x5/7,s3,x0/8,s4,x2/9,s11,x1/3,pg/c,x11/15,pf/k,x0/9,s11,x10/7,pl/d,s11,x14/1,s1,x0/7,s12,pp/e,x10/6,pf/d,x9/4,pj/c,x7/0,s12,x14/3,s1,x9/12,s2,x15/11,s2,x12/14,s12,x4/5,pp/d,x15/12,po/h,x13/9,s4,x3/6,pa/g,x8/10,po/d,x12/14,s7,x13/9,s4,x7/12,s7,x1/6,pg/m,x2/4,s11,x5/9,s7,pc/i,x13/2,s4,x6/15,pg/o,x8/11,s15,x4/6,s5,x10/12,pe/b,x9/14,pc/a,x4/6,s10,pg/f,s5,x12/9,s9,x13/15,s9,x0/5,s10,x8/10,s1,x6/5,s9,x2/0,ph/e,x4/14,s12,x2/11,pd/k,x13/9,s4,x7/4,ph/n,s11,x8/13,pp/i,x6/11,s2,x5/15,s4,pl/c,x12/3,s10,x1/15,pg/n,s9,x11/4,s3,x9/8,s7,x11/15,s10,po/f,x5/0,s15,pa/g,x14/3,ph/m,x15/12,s8,x8/2,s3,x1/6,s1,pf/b,x7/3,s12,x11/12,po/g,x13/4,s4,pi/n,x6/9,s4,x5/13,pj/f,x6/10,s7,x3/11,s3,pg/p,x1/15,po/k,x6/0,s11,x13/2,pe/m,x0/5,s15,x1/14,s7,x2/6,pf/l,s6,x15/9,s15,x8/12,pg/o,x10/1,s8,x7/9,pa/e,s9,x0/13,pj/d,x15/9,s5,x11/4,s4,x5/7,s15,x12/1,s14,x11/15,s3,x10/0,s13,x9/14,s11,pb/h,x8/12,pn/f,x0/14,pp/l,x8/13,s10,x2/1,s11,po/f,x14/8,pn/j,x2/5,pc/h,x7/10,pn/e,x8/15,s15,x12/11,pd/l,x13/3,s9,x1/11,s3,x12/13,pb/k,x2/9,pd/m,x7/5,pf/g,x13/11,s12,x14/2,s10,x3/13,pj/e,x7/15,s2,x9/10,pc/d,x6/8,s10,x7/9,pm/e,x12/6,s10,x7/8,pp/a,x0/9,s2,pj/i,x8/1,s15,x7/10,s10,x0/3,po/g,x13/14,s4,x15/3,s11,x4/8,s2,pp/d,x7/11,s1,x9/8,s3,x15/5,s15,x3/12,s12,x9/14,pa/j,x8/0,s7,x4/5,pk/o,x7/3,s9,x6/0,s10,x4/7,pe/i,s8,x13/8,s4,x9/0,pd/k,x5/13,s8,x10/15,pf/a,x11/9,s5,x6/7,s3,x5/11,s3,x15/1,pb/d,s11,x2/8,s15,x3/15,pg/c,x2/8,pl/k,x0/9,s9,pg/h,x7/4,pa/f,s3,x13/3,pd/i,x6/12,s2,x13/9,pa/n,x0/5,s5,x3/12,s15,pl/k,x7/6,s1,x2/11,s14,x3/4,s9,x14/12,s15,pj/i,x4/3,pg/p,x15/0,po/a,x7/3,pp/n,x15/4,pd/o,s4,x5/13,ph/c,s3,x1/3,pj/i,x7/11,pd/g,x9/10,po/i,x11/5,pk/h,x8/2,s4,x0/12,pf/l,x9/5,pa/g,s2,x13/3,pk/c,x11/0,s10,x3/8,s10,x10/1,pg/o,x3/11,s11,x9/12,s4,pm/n,x3/14,s5,x15/0,s4,x10/12,ph/b,x15/0,pj/o,x2/1,s6,x9/10,s11,x7/12,pm/l,x1/8,pi/e,x2/12,pb/f,x1/10,pm/j,x14/4,pf/h,x2/3,pc/d,x13/1,s4,x4/7,pk/g,x3/6,s9,x0/14,s6,x6/11,s1,x10/1,s5,x11/12,pp/o,x14/3,s13,x7/5,s8,x11/4,s12,pk/e,x6/5,po/m,x1/15,s3,x8/4,s15,x1/5,s4,x4/15,s9,x13/3,pg/d,s2,x7/5,s9,x13/2,pk/n,s3,x9/4,s1,x0/6,s15,pb/i,x14/10,pl/j,x1/12,pp/i,x14/15,s14,pn/m,s9,pj/b,x6/3,s12,pe/k,x1/10,po/b,x13/6,ph/l,x5/8,pk/e,x6/15,pn/b,x13/7,pe/f,x10/15,s14,x8/5,ph/b,x15/2,pj/k,x9/5,s12,pi/o,x0/2,s13,x4/12,pe/c,x9/5,pg/h,x3/2,pa/m,x0/10,s10,x12/9,pc/g,x1/5,s15,x6/12,pl/m,x1/8,s4,x11/10,pb/k,x12/14,pg/i,x0/7,pj/e,s1,x12/8,s12,x7/11,pm/p,x14/8,pl/e,s14,x9/2,pk/d,x8/10,s9,x6/4,s5,x2/1,pn/j,x5/7,s2,x9/10,s12,x8/12,s7,x3/10,s2,pp/l,x7/11,pf/a,x14/8,s15,x15/4,po/k,x14/2,s7,x11/5,pc/b,x1/9,s1,x8/11,s13,x1/15,pj/p,x9/7,pe/a,x11/0,pg/i,x9/15,s13,x4/8,pa/l,x13/14,pg/d,x15/1,s10,x7/11,s3,x4/3,s9,x7/14,pi/k,x15/9,s3,x8/6,s6,x14/5,pa/m,x8/9,pc/f,s5,x5/6,s11,pi/l,x11/4,s13,x8/7,pm/c,x12/15,pl/g,x0/2,s3,x11/8,ph/m,s3,x3/14,s3,pn/j,x10/4,s5,x6/5,s9,x9/10,pm/i,x0/7,s5,x8/6,pg/e,x11/12,s7,x14/4,s7,x1/8,pn/d,x12/3,pl/f,x5/10,s12,x0/11,s8,x7/3,pg/j,x0/13,s15,x14/9,s2,x8/4,po/p,x13/10,pn/f,x15/9,s8,x5/2,s2,pg/o,x9/11,s7,x12/0,pl/c,x13/11,s11,x7/9,po/j,x5/13,s4,x9/6,s9,x11/5,s1,x1/2,s15,x3/5,s8,x10/15,pb/n,x2/1,s7,x10/4,s1,x3/5,pd/p,x12/1,s1,x11/8,s1,x6/10,s3,x15/1,pf/k,x5/2,pn/h,x3/12,pp/o,x11/5,s11,x3/10,s3,x8/0,s13,pc/d,x15/11,po/a,x13/2,ph/l,s8,pb/i,x1/12,pe/o,x13/5,ph/n,s6,x2/3,s7,x14/1,s13,x8/15,s5,x4/13,pi/b,x8/2,s10,x10/9,ph/k,x6/14,pc/n,x9/12,ph/a,x7/8,s4,x11/1,s10,x12/2,s1,x0/5,po/l,s11,pa/d,x1/14,s13,x10/13,pg/e,s4,x1/7,s5,x4/13,pf/h,x2/6,pi/p,x10/3,s13,x0/5,pg/l,x10/8,s4,x15/2,s15,x13/4,pk/c,x3/14,s5,x4/11,s13,x8/6,s7,x5/2,pi/g,x14/13,s8,x11/5,s9,x10/15,pc/b,x8/2,s15,x5/0,pm/p,x13/4,s11,x5/9,pe/c,x11/0,po/d,x7/9,s6,x11/0,s5,x13/12,ph/k,x3/15,s6,x2/6,s13,x1/10,s14,x9/5,s9,x10/7,s1,x15/6,s7,x4/11,s7,x7/6,pa/j,x0/14,pe/g,x9/6,s7,x10/3,pi/l,x15/12,pk/g,x6/13,s15,x15/1,s3,x11/8,s8,pa/n,x7/15,s10,pi/p,s15,x1/13,s13,pc/a,x8/12,s9,x11/4,pl/m,x14/8,s10,x9/15,pj/p,x7/3,s4,x9/15,pn/b,x6/8,s4,x11/1,pa/g,s9,pk/i,x4/12,s8,x0/13,pn/j,x14/10,s2,x15/7,s5,x9/8,s15,x5/1,s15,x4/11,s6,x8/15,s12,x10/14,s14,x6/1,po/m,x10/3,s6,pe/i,x1/13,pc/l,x4/9,s2,pg/p,x2/13,s9,x3/6,s13,x10/13,s11,x0/8,pe/m,s5,x2/9,pi/c,x13/6,pm/h,s14,x5/4,pa/e,x15/7,s12,x13/2,s6,x1/4,s4,x11/5,s5,x9/14,pn/f,x12/5,s12,x9/0,s3,x15/3,s4,x10/9,po/j,x7/4,s12,x14/5,pb/h,x10/11,po/j,x14/4,s4,x11/5,s12,x12/15,pb/n,x5/13,pl/e,x14/12,pj/m,x3/6,s2,x4/12,s3,x9/5,ph/o,x1/4,s7,x6/5,s2,x0/8,pc/m,x12/4,s13,x7/1,s14,x9/4,s13,ph/k,x10/3,pe/d,x5/7,pb/n,x1/11,s7,x14/12,s4,x5/8,s15,x9/2,s2,x8/10,s15,x4/1,pd/a,x8/3,pk/b,x2/11,pg/o,x15/5,s2,x1/6,pp/n,x0/5,pf/g,s1,x14/12,s11,x2/6,pj/l,x3/7,s1,x4/15,ph/a,x3/6,s14,x2/12,pi/p,x15/13,pd/m,x3/2,pg/l,x5/13,s9,x4/14,pj/c,x5/13,s6,x0/7,s10,x8/10,pm/i,x12/4,s13,x10/0,s2,x5/6,s4,x3/7,pl/j,x12/10,s6,x9/6,s5,x14/8,s2,x1/2,s12,x6/12,pn/m,x11/7,s3,x0/12,s11,pb/p,s15,x10/8,s12,x4/1,s6,x15/5,pi/a,x9/1,s14,x15/5,s11,x8/12,po/g,x4/9,s3,pn/m,s14,pl/f,x3/2,pa/p,x14/4,s9,pe/n,x11/2,pc/b,x13/10,s14,x3/11,s3,pp/d,x14/15,s13,x11/9,s14,x0/12,s7,x6/14,s2,x8/9,s2,x2/10,s13,x14/11,pe/n,x9/6,s5,x5/0,s9,x11/14,ph/d,x1/12,s3,x9/0,pb/c,x6/1,pl/m,x7/0,s5,x2/8,pc/e,x9/11,pk/m,x0/4,pi/p,x7/9,s3,x11/4,s5,x9/15,s10,x7/14,ph/n,s8,x9/5,s14,x8/12,s3,x5/7,s7,x12/3,s7,x13/7,pi/d,x8/2,s15,x3/13,s11,x8/15,s2,x12/7,s13,x3/4,s11,x15/0,pl/o,x4/2,s10,pb/d,x7/8,s12,x10/3,s3,x5/0,pl/k,x9/2,s11,x10/7,s11,pi/h,x13/0,pm/j,x11/14,s8,x7/13,pk/c,s2,x6/14,pn/i,x5/1,s5,x10/8,s11,x9/13,s1,pb/c,x8/2,s13,pd/j,x15/5,s2,x3/2,s8,x11/7,s8,x2/1,s5,x9/10,s6,x4/7,s14,x11/15,s3,x1/14,s7,x7/9,s1,x8/13,pb/e,x6/11,pp/i,x2/5,s13,pa/n,x12/13,s2,x11/7,pi/k,x1/5,s3,x11/9,s2,x2/6,pc/l,x12/9,s6,x2/15,pi/a,x6/10,pn/d,x0/1,s11,x15/6,s13,x4/11,pg/f,s7,x6/9,s14,x1/11,po/m,x14/9,s9,x15/6,s10,x5/0,s12,x3/8,s12,x10/4,s13,pb/d,x11/9,pf/e,x8/6,s10,x9/14,s10,x1/10,s5,pl/n,x12/4,pp/f,x15/8,s5,x0/4,s11,x10/12,s13,x11/1,s6,pm/l,x5/2,s9,pf/a,x10/12,s5,x0/13,pk/p,x10/7,s8,x14/11,pj/f,x0/8,pl/b,x3/9,pe/n,x8/5,pm/d,x15/6,s13,x2/13,pp/n,x6/4,s4,x7/13,s1,x2/11,s3,x14/7,pi/a,x4/3,s3,x15/7,s1,x14/4,s6,x7/5,s13,x0/12,s10,ph/b,x3/10,pn/d,x2/1,pk/f,x3/5,pd/e,s3,x11/7,s8,x14/3,s3,x7/8,s2,x4/1,pm/f,x6/11,s4,x10/7,s9,x11/0,pj/i,s5,x3/1,s6,x5/0,pc/d,x11/13,s14,pf/j,x4/12,s6,x14/0,pm/n,x3/5,po/i,x13/12,pk/b,x0/15,s9,x2/5,s9,pa/j,s6,x3/12,s12,x8/2,pe/m,x13/5,s13,x7/4,s2,x2/15,po/h,x8/0,s15,pj/g,x9/12,s10,x13/6,s13,pl/n,x2/10,s6,x5/12,pe/p,x4/11,s13,x2/14,s14,x10/4,pj/h,x2/11,pi/p,x13/5,s12,x9/0,s14,x2/11,s8,x12/15,s7,x8/10,pe/j,x6/11,s12,pp/m,x5/4,pn/k,x7/6,s13,x12/5,s10,x10/0,s11,x1/6,pm/h,x13/9,pa/d,x10/3,s15,x0/13,s11,x6/1,s2,x0/7,s2,x13/14,pp/h,x0/5,pj/d,x7/9,pb/i,s2,x0/14,s4,x4/5,s11,x11/10,s14,x7/12,s8,x5/6,s12,x8/3,pg/m,x2/13,s12,x9/5,pc/o,x3/6,pe/b,x14/2,s4,x0/1,s14,x13/4,s2,x11/9,pa/k,x12/14,s4,x13/4,pg/p,x5/11,pb/d,x8/7,pa/n,x13/6,pd/g,x10/0,s8,pm/n,x13/4,pk/d,s9,x3/5,s6,x1/4,s15,x9/12,pm/b,x5/11,pl/a,x3/8,s2,x2/1,s11,x7/10,s8,po/c,x12/5,s4,x6/9,pl/p,x1/11,s8,x14/12,pa/i,x10/8,pl/e,x7/13,s14,x10/0,s9,x6/4,s14,x10/11,ph/g,x0/9,s4,x6/2,s10,x3/7,s14,x6/5,pj/k,s2,x3/10,s3,x5/8,pp/d,x9/3,s11,x12/6,s11,x8/10,s6,x5/6,ph/n,x4/1,s13,x2/8,pl/p,s7,x6/5,s5,x3/4,s4,x7/11,s15,x13/14,pb/g,x9/8,po/n,s14,x2/15,s13,x12/3,s15,x9/13,pa/f,x3/6,s13,x1/4,pn/b,x7/0,pl/f,x1/10,pa/c,x2/7,s5,x15/14,pj/g,s13,x3/0,s7,pc/d,x12/6,pa/p,x15/8,s13,x0/9,pm/l,x4/12,pk/a,x0/3,pg/i,x2/12,s13,x4/1,pe/p,x6/0,pm/a,x15/2,pe/l,x0/6,po/f,x11/10,s5,x6/0,s9,x11/15,s5,x1/7,s8,x9/3,pg/i,s4,pb/e,x11/6,pl/k,s3,x2/3,pf/b,x1/13,pk/h,x2/5,s6,x3/6,pn/f,x5/1,pe/h,x14/12,pn/j,x10/2,s3,x1/15,s12,x13/3,s12,x1/6,pm/k,x8/15,s5,x10/14,pg/c,s6,x8/2,s14,x4/12,pj/i,x8/0,s14,x13/15,po/e,s15,x7/1,s11,pj/h,x3/5,pb/n,x11/1,s13,x8/9,s10,x0/14,s8,x9/7,s7,x4/12,s6,pc/m,x13/0,s1,x8/15,s1,x0/2,s6,x10/3,s5,x7/12,s4,x1/2,s12,x13/4,s14,x12/2,pe/n,x0/9,s5,x5/15,s8,x3/0,s4,x5/1,pg/k,x4/6,s9,x13/3,s15,x10/7,s6,x9/15,pp/n,x6/11,pd/j,s10,x1/7,s10,x13/10,s15,x4/1,s6,x2/9,pp/h,x11/14,s6,x4/0,s1,x1/5,pn/c,x8/11,s6,pp/f,x0/13,pe/m,x3/8,s9,x2/6,s12,x8/7,s14,x12/1,s1,x13/3,s1,x4/11,s9,x7/2,pn/j,x15/6,s9,x13/9,s9,x3/0,pk/c,x14/10,pf/e,x13/3,s7,x7/4,pk/p,s8,x14/2,s9,x15/3,s13,x5/6,pd/l,x8/2,s5,pm/c,x11/3,pe/g,x6/5,s4,x15/0,s10,x14/9,pc/l,x7/12,pf/i,x14/2,s2,x11/6,s10,x15/12,pg/l,x3/14,pp/h,x9/8,pl/a,x0/14,pi/m,x7/9,s8,pg/c,x2/0,pe/l,s7,x5/6,s15,x9/0,s12,pf/d,x4/11,s12,x15/1,pi/e,x4/14,pb/k,x3/0,s4,x2/14,s9,x1/6,s7,x11/7,s12,x1/10,pp/n,x15/6,ph/k,x4/11,s11,x7/0,po/g,x15/8,s3,x12/14,pl/j,x11/5,pe/d,x6/13,ph/k,s8,x10/4,s7,x14/11,pn/b,x7/1,s3,x10/3,pj/k,x11/4,s4,x13/5,s14,x1/9,s12,x0/6,s8,x15/11,s1,x5/4,po/c,x14/0,pe/k,x5/8,pb/j,x15/14,s2,x0/10,s9,x11/9,s7,x3/0,s12,x5/14,s11,pc/p,x7/2,s3,x12/1,s5,x6/0,s13,x11/5,pm/b,x14/13,pd/j,x7/1,s10,x11/14,s5,x4/13,s12,x10/8,s14,x5/12,s6,x9/4,pm/c,x10/15,s6,x3/0,pk/o,x6/13,s11,x4/11,ph/e,x1/13,s6,x2/0,s13,x3/13,s7,x14/12,s10,pk/p,x8/9,s11,x10/2,s2,x7/6,pa/l,x14/13,s11,x3/15,s3,x12/11,s10,pb/c,x0/6,pe/n,x10/4,pf/c,x2/5,pj/e,x14/13,s12,x7/3,pd/n,x10/1,pc/b,x4/3,ph/k,x9/13,s2,x14/6,s2,x5/9,s5,x2/14,s7,pa/m,x11/0,s13,x7/3,s2,x4/1,pd/l,x7/13,pp/b,x8/4,s6,x10/5,pe/g,s14,x1/12,s12,x11/6,s6,x5/8,s5,x11/15,ph/c,x6/0,po/m,x4/10,s2,pe/d,s15,x11/15,ph/c,x1/9,s6,x3/8,pf/b,x10/11,pp/n,x5/13,pj/g,s4,x12/9,s14,x4/15,s6,x1/9,s1,pp/f,s4,x15/11,pa/g,x14/2,pn/o,s9,x8/3,s12,x6/13,pa/j,x1/10,pc/h,x3/12,s14,x2/5,pk/l,x12/7,pg/i,x2/15,pk/f,x14/5,pd/g,x4/6,pj/n,x10/13,s1,x15/3,s11,x4/8,s5,x15/12,s14,x9/10,pf/b,x8/3,s2,x0/15,s14,x14/7,po/d,x5/0,s5,x8/14,s2,x3/4,s4,x0/2,s2,x5/4,s9,pb/j,x15/9,pe/p,x0/5,s12,x2/12,s15,x13/0,s15,x10/9,s8,x4/6,po/g,x11/15,pc/f,x10/2,s11,x5/11,s12,x2/1,pd/j,s14,x12/5,s14,x11/6,pi/l,x7/5,s9,x6/2,s3,x7/15,s14,x3/2,s10,x0/10,pp/f,x11/14,s9,x10/13,s3,x9/2,po/e,x12/10,s2,x7/6,s10,x8/3,s11,x11/10,pf/j,x1/5,s9,x15/4,pb/g,x11/0,pk/f,x12/14,s10,x8/2,s5,x6/10,pi/n,s12,x0/8,pm/g,x4/13,s3,x6/3,pn/p,x8/9,s15,x3/4,s1,x5/9,pm/a,x1/4,pe/b,x8/13,s7,x6/7,pk/j,s11,x3/1,s4,x2/9,s14,x6/4,s14,pb/l,s13,x0/3,pf/j,x1/10,s8,x12/11,s12,pe/h,x14/15,s10,x13/3,s11,x6/12,s10,x5/0,s7,x10/14,s11,x4/3,pk/j,x13/0,s8,x14/9,s12,x3/13,pi/m,s11,x9/11,s9,x4/3,s9,x12/7,s3,x0/11,s14,x2/8,pl/h,x5/14,s12,x11/7,s13,x12/2,po/c,x11/8,s3,pm/n,s15,x15/10,pl/c,x8/0,s6,x1/6,pb/p,x4/0,s1,x5/3,pd/i,x2/1,pl/k,x4/13,s8,x3/1,s2,ph/p,x11/4,s5,x9/10,s13,x15/14,pl/f,x2/6,pi/e,x10/0,s3,pn/k,x15/5,s6,x10/9,s8,x8/0,pi/l,x7/1,pg/a,x9/8,pb/p,x7/5,pj/h,x10/0,s9,x11/1,s8,x15/8,s8,x3/9,pd/a,x14/2,pf/c,x10/3,s5,x6/5,s8,x0/10,pd/j,x15/2,s4,pn/o,s13,pj/i,x0/9,pl/b,s12,x11/1,po/g,x13/9,pe/k,x0/15,pl/m,x9/14,po/i,s7,x6/13,s8,x8/1,s3,x12/11,s15,x3/13,s12,x5/0,pk/c,s7,x10/9,pf/m,x3/8,s3,x9/7,s8,x0/4,s7,x14/3,s1,x1/9,pg/a,s3,x5/15,pe/f,x6/13,pb/k,x4/3,po/n,x8/14,pg/i,x11/15,pd/c,s14,x1/0,s13,x15/14,s4,x12/5,s5,x15/7,ph/e,s2,x5/13,s4,pg/k,x2/3,pa/n,x15/5,ph/l,s9,x13/9,s13,x0/8,pb/p,x13/2,s9,x11/4,pk/j,x6/5,s7,x7/1,s5,x5/2,pm/p,x9/14,s11,x2/10,pg/c,x8/9,s5,x4/11,s13,pn/a,x9/0,s13,x5/8,s1,x9/0,s2,pi/p,x4/8,s13,x12/0,pb/m,x4/3,s6,pk/i,x7/12,s11,x11/9,pc/e,x15/14,pn/m,x4/8,pc/e,x9/11,pi/a,x14/6,pl/o,x0/12,pa/g,x9/7,s1,x6/5,s1,x9/3,ph/k,x7/5,s10,x11/1,s4,x5/13,s13,x7/9,pb/c,x5/13,pd/a,s5,x1/6,s5,x13/5,s8,x0/12,pj/g,x13/2,s12,po/e,x5/4,pk/d,x9/13,pp/a,x10/5,pg/n,x0/7,s4,x12/2,pi/k,x5/15,pb/e,s13,po/g,x7/11,pd/a,x12/9,ph/e,x8/2,po/n,x12/7,pg/k,x6/5,s5,x12/4,s2,x10/5,pf/e,s4,x8/2,s5,x5/14,s10,x7/15,s5,x2/9,s8,x3/6,s11,x0/8,s8,pm/a,x3/13,pb/l,x8/4,pa/j,x11/6,s6,pn/k,x7/15,s14,x6/8,pj/a,x14/0,s3,x13/8,ph/i,s13,x3/1,pj/d,x10/14,s10,x7/4,pm/h,x13/10,pp/j,x14/9,pa/h,x2/15,s7,x6/1,s4,x0/4,s6,pj/p,x7/9,s13,x6/4,ph/b,x12/11,pd/f,x4/10,pb/h,x13/7,s8,x11/15,pn/d,x14/3,s11,x12/15,s2,x2/6,s5,x15/3,pk/l,x5/12,s2,x14/8,pc/g,x6/7,pf/p,x8/3,s12,x10/11,pm/o,x7/6,s10,x2/1,pp/j,x15/10,pa/n,x1/0,s9,x8/13,pg/e,x0/4,pd/m,x15/14,pc/j,x1/7,s4,x0/6,pb/o,x9/15,s15,x10/13,s2,pj/d,s9,x12/6,s5,x11/15,s7,x1/0,s6,x4/6,s2,x11/5,ph/n,x6/12,s14,x4/5,s6,x15/6,s8,x12/2,pb/i,x6/9,s15,x8/13,s2,x5/1,s6,x0/10,pe/d,x7/8,s10,x14/1,s13,x8/4,s12,x11/5,pb/m,x7/9,s2,x11/6,s11,x12/9,po/k,x11/4,pc/m,x1/8,pf/o,x3/13,s8,x10/9,s3,x13/12,pb/g,s8,x7/9,s9,x11/4,s4,x10/8,pi/m,x13/3,pa/d,x0/15,s6,x11/10,s14,x8/4,s13,x5/15,ph/n,x10/8,s4,x0/12,s1,x11/14,s5,x6/0,pa/b,s12,x1/11,s7,x3/9,pf/e,x13/15,pm/l,s1,x8/5,ph/f,x6/0,pe/m,x7/14,s1,x5/1,s11,x14/12,po/j,x13/15,pk/f,x4/11,ph/j,x5/8,s11,x15/1,s14,x2/13,s5,x14/1,pl/g,x11/2,s9,x8/7,pb/c,x2/14,s9,x9/12,s3,x4/3,s3,x10/11,s6,x1/15,pl/f,s13,x7/11,pm/n,x3/6,pl/p,x10/4,s10,x7/6,s6,x3/11,s8,x5/2,s1,x15/8,pj/g,x10/0,pa/e,x4/2,pp/c,x12/13,s3,x8/15,s5,x4/2,pf/l,x14/5,s1,x12/10,s4,pi/a,x3/2,po/e,x8/7,pi/c,x5/6,s11,x9/7,s3,x13/12,s15,x10/3,s3,x0/7,s7,x6/8,pj/l,x15/11,s14,x9/7,pp/a,s4,pk/g,x1/2,s7,x14/6,ph/i,x0/9,pp/f,s8,x5/3,s15,pc/b,x10/2,s15,x1/3,s6,x15/12,s6,x9/1,pm/f,x12/11,s3,x10/15,pj/k,x3/5,s5,x4/6,s15,x12/1,s11,x14/2,s14,x1/15,pb/d,x2/10,s4,x14/4,s5,x2/7,s15,pk/l,x10/14,pd/b,x0/1,s11,x14/7,pi/l,s3,x1/11,pb/m,x5/7,s12,x4/1,pk/c,s8,x11/2,s8,x1/13,s11,x3/14,pp/m,s15,x8/10,pk/b,x6/7,pf/j,x14/8,s7,x12/7,s6,x4/11,pe/n,s5,x1/3,s13,x5/14,pm/d,s9,x11/12,s8,x2/1,s2,x0/12,pg/p,x15/13,s14,x3/12,s8,x14/6,pe/j,x0/11,s10,x3/4,pp/b,x6/12,s6,x5/2,pc/h,x8/4,pp/k,x14/5,s14,x7/13,s3,x2/10,s3,x11/1,s4,pl/b,s9,x0/12,ph/i,x15/8,s12,pl/p,x5/0,s1,x2/9,s4,x15/4,s14,po/m,x2/14,s1,x4/7,s14,x8/6,s13,x5/10,s4,x3/11,s5,x9/2,s6,x5/10,pd/a,s11,x8/0,s6,x7/13,s4,pg/i,x11/3,s15,x15/13,pk/d,x7/8,pi/l,x1/2,pk/a,x9/13,s2,x12/14,s8,x13/9,s2,x0/15,pg/f,x11/4,pi/o,x0/7,s7,x6/4,pk/n,x14/5,s10,x13/12,pf/l,x3/14,s13,x8/11,pg/n,x1/9,s12,x5/14,s8,x7/3,s11,pf/j,x10/12,pd/e,x13/11,s13,x1/4,pc/n,x7/8,s9,pa/k,s9,x9/1,s9,x7/11,s10,x9/2,s7,x10/15,ph/d,x7/6,pl/m,x3/2,ph/f,x5/10,pp/g,s13,x12/6,pj/c,x10/8,s3,x6/11,pk/o,x12/15,s12,x10/0,pf/l,x6/1,pc/g,x0/4,s1,x15/7,s10,x9/12,pj/n,s12,x4/5,s7,x9/6,s10,x15/10,s10,x4/9,s10,x0/8,s6,x7/3,pm/g,x15/1,s13,x2/7,s12,x6/15,s2,x5/2,s3,x15/14,s5,x4/3,pc/l,x10/9,pa/e,x3/11,s4,x0/13,s2,x15/10,s8,x0/4,pp/j,x14/13,pl/d,s6,x1/6,pe/o,x14/13,ph/c,x0/6,s3,x1/2,pb/e,x4/5,s11,x1/3,pc/o,x2/9,s14,x12/11,pm/j,x1/7,s11,pi/l,x5/6,s12,x15/8,pj/f,x5/1,s9,x11/12,s3,pb/n,x10/2,s10,x1/4,s11,x12/0,s7,x13/7,s14,x0/3,s9,x8/15,pi/j,x0/11,s5,x13/15,s11,x7/11,ph/f,x8/10,pm/n,x13/12,ph/j,x8/10,s6,x7/5,s7,x4/3,pa/o,x8/15,s4,x3/1,s8,x6/10,s9,ph/c,s6,x12/14,s12,pp/i,s8,x4/9,s1,x8/12,s3,x2/6,s14,x4/11,s2,x8/5,s10,x7/4,s14,x8/12,s4,x5/2,s1,x8/9,s5,x7/12,pb/a,x11/3,s14,x13/12,s4,x9/6,pi/l,x15/2,pk/c,x12/7,pa/d,x9/4,s14,x1/14,pm/e,x6/9,s3,x7/8,s7,x6/14,s12,x3/7,s15,ph/d,s9,x6/12,pc/a,x7/11,s6,x8/12,s1,x3/5,s1,pm/p,x8/15,s14,x0/2,pn/d,x14/8,ph/c,x13/12,pg/i,s5,x8/14,pk/m,x15/2,pp/l,x0/12,s5,x2/7,pk/e,x1/13,pi/h,x6/9,s1,x2/12,s13,x7/10,s12,x12/14,po/k,x11/4,s1,x3/8,s1,x10/2,s9,x5/4,pj/h,x13/10,s8,x8/2,pd/p,x6/3,pi/n,s9,x4/12,pj/e,s5,x8/0,s9,x4/5,s12,x10/7,pm/d,x6/8,pe/i,x0/4,pb/j,s11,x3/13,s8,pg/c,x4/11,s9,x14/5,pl/n,x10/11,s6,x5/0,pk/b,x1/3,s13,x13/4,ph/n,x2/8,s10,x11/3,s6,x7/10,po/c,x3/14,pa/k,s1,x11/8,pb/n,x0/12,s4,x5/9,s6,x2/1,s6,x6/8,s3,x5/13,ph/f,x10/1,pb/l,s9,x12/11,s15,x5/15,s8,x3/1,pd/p,x11/0,s7,x9/15,s5,x0/7,pc/n,x12/10,ph/j,x14/9,s2,x15/0,s1,x7/10,pa/n,x2/15,s1,x11/4,s14,x2/6,pj/i,x13/11,s7,x14/10,pb/f,x8/6,s11,x7/12,pm/i,x13/14,pk/o,x7/12,s12,x3/8,pj/g,x13/7,s15,x1/4,ph/n,x0/15,pl/g,x12/5,s15,pd/h,s11,x9/3,pa/n,s2,x12/6,pk/j,x10/0,s7,x3/8,s13,x0/7,pa/i,x12/11,pj/f,x5/1,s11,x13/12,s9,x15/3,pp/m,x9/5,s8,x8/2,pd/e,s8,pm/n,x10/13,s7,pd/h,x4/9,pj/c,x3/7,s10,pa/l,x12/1,s3,x2/3,pi/o,x10/5,s7,x14/0,pl/m,x2/13,s1,x5/7,s7,x14/1,pi/e,s6,x2/15,s12,x9/3,pf/n,s2,x12/13,s2,x8/1,pa/k,x7/14,pe/p,x11/6,s8,x0/9,s6,x2/15,s13,x7/9,s3,x2/10,pc/o,x3/11,s15,x15/9,pp/k,x4/12,s14,x9/11,pl/i,s13,x6/0,s9,x2/14,pc/g,x9/11,s9,x2/12,s2,x0/3,pd/j,s5,pg/p,x9/6,s8,x10/12,s9,x7/5,s8,x14/13,s13,x8/11,pa/l,x1/0,s8,x11/5,pm/n,x3/10,s2,pc/g,x2/4,pj/d,x15/7,pc/b,s5,x10/12,s8,x15/14,pj/i,x4/11,s8,x1/7,s2,x13/3,pe/p,x15/2,ph/i,x7/10,s12,x13/11,s15,x14/1,s9,x6/11,s12,x1/12,s11,x4/9,s2,x12/8,pd/p,x5/3,po/f,s3,x14/1,s1,x0/3,s9,x8/9,s14,x4/0,s5,x2/6,s2,x0/14,s2,x3/12,s2,x15/9,s6,x6/3,s3,x4/7,pd/g,x2/3,s2,x7/0,s7,x11/6,s10,x9/15,s10,x5/3,s6,x9/2,pf/p,s9,pl/c,s14,x7/11,s3,x5/15,s1,x9/11,s6,x0/13,ph/g,x12/14,s12,x7/4,pm/k,x12/11,s4,x3/7,pl/h,x10/14,s2,pj/g,x0/11,s10,x9/15,s7,x1/7,s14,x3/10,s8,x12/1,s12,x2/5,pp/i,x4/6,s9,x8/2,s14,x0/4,s11,x11/9,s11,x13/6,s8,x0/1,pb/e,x10/5,s3,x2/13,s7,x7/15,s6,x6/8,pn/d,x10/14,s7,x13/5,pf/m,x7/0,pg/l,x8/2,s4,x9/0,pa/m,x2/7,s8,x10/0,pb/f,x15/1,s3,x9/10,pk/d,x14/0,s7,x12/1,pf/h,x9/7,s9,x4/11,pi/n,x0/14,s3,x5/2,s8,x11/0,s11,x15/5,pg/a,x4/6,pk/m,s4,x2/11,s4,x3/8,pi/o,x13/4,s6,x14/9,s14,x3/15,pl/j,x0/9,s12,x2/12,s8,x13/8,ph/n,x10/9,s9,x0/1,s1,x12/5,s3,x3/15,s14,x10/2,pi/p,x1/12,pd/b,s3,x11/2,s13,x10/15,s6,x12/3,s10,x6/15,s3,x10/3,s1,x4/13,s6,x14/5,po/m,x7/0,s6,x5/2,s11,x3/13,pb/d,x7/12,s15,x4/15,pp/c,x5/1,pg/n,x14/15,s13,x12/4,s3,x5/7,s15,x11/4,s3,x13/7,pl/k,x4/0,s3,x1/3,s3,x10/12,s7,pe/i,x11/6,s6,x0/15,s7,x14/12,s9,x10/3,pf/p,x1/11,po/c,s10,x3/15,s10,pi/k,x6/4,pm/g,s11,x1/10,s8,x6/13,s7,x2/14,s11,x15/13,s14,x5/2,pf/b,x13/0,pm/i,s7,x1/2,s13,x11/7,s9,x5/9,s10,x11/15,pb/o,x13/10,s11,x2/6,s4,x8/12,s3,x10/13,pc/n,s14,x7/9,pf/m,x6/8,pi/g,x13/9,s1,x15/3,pl/m,x1/5,s5,x3/4,pd/j,x14/9,s15,pe/f,x6/5,s11,x10/11,s11,x7/15,pp/a,s9,x11/14,po/c,s13,x8/13,s7,x7/11,pi/f,x14/6,s6,x10/15,pj/a,x13/6,s14,x7/1,pl/b,x2/14,s10,x3/15,s2,x9/8,po/d,x12/15,pn/h,x4/1,s5,x2/15,pp/f,s6,x10/7,s8,x3/1,s13,x11/5,s5,x2/1,pb/h,x15/0,s12,x10/4,s13,x9/6,s4,x3/4,s9,x9/8,s15,pj/e,s13,x12/11,s1,x8/14,s7,x12/11,po/g,x4/14,pa/e,s12,x6/2,pp/o,x7/10,s1,x11/5,ph/m,x7/1,pn/o,x5/15,pm/i,s12,x9/0,s3,x5/7,pa/n,x10/11,pk/b,s2,x6/14,pi/f,s2,x9/4,s4,x12/2,s6,x13/14,s13,x10/1,pk/e,s10,x6/3,s5,pd/n,x4/5,s10,pe/i,x1/14,s5,x12/10,pj/f,x0/9,pc/d,x13/14,s11,x3/5,pn/l,x6/2,s10,x1/3,s15,x2/14,s1,x4/10,s13,x7/13,s5,x3/1,s8,x7/2,pi/a,s15,x9/14,s14,x11/0,s5,x1/5,pj/c,x10/6,pp/k,x3/13,s5,x11/12,s13,x15/0,pl/c,x4/11,s2,x10/5,po/b,x8/2,pa/m,x0/11,s14,x6/15,s14,x5/12,pg/j,s5,x9/4,s4,x3/12,po/n,x15/11,ph/m,x4/13,pi/e,s12,x3/6,s13,pd/n,x8/11,s11,x3/0,s12,pc/b,x12/1,pf/d,x3/6,s4,x5/13,s2,x2/4,s2,x15/10,po/g,x14/6,s5,x12/8,s12,x3/7,s7,x14/8,pf/j,s5,x15/11,s8,x3/7,s12,x0/8,po/g,x3/10,pe/m,s13,x15/9,s7,x10/8,s8,x14/15,s13,pl/a,x6/2,s9,x7/9,pe/b,x2/15,s14,x3/13,s7,x14/7,s13,x0/4,s14,x13/9,pk/l,x15/6,s4,x13/4,po/c,x2/1,pa/p,x4/9,s14,x15/10,ph/c,x14/12,pj/g,s8,x2/6,s9,x0/1,s9,x7/11,s10,x5/15,pm/e,x9/14,pb/c,x3/15,s9,x6/7,pk/f,s8,x9/4,pg/b,x0/7,pn/j,x11/15,pf/e,x5/13,pb/m,x12/0,s6,x2/9,s7,x5/6,ph/l,s5,x1/0,pg/f,x8/6,pn/d,x0/14,po/a,x2/15,pb/c,s10,x13/4,po/l,x6/1,pc/h,s10,x2/3,pe/b,x12/7,s15,x9/0,s5,x13/8,s1,x5/6,pk/c,x13/11,s10,x7/14,s2,x10/1,s13,x5/14,pe/l,x8/13,po/b,x11/7,s10,x2/0,s4,x9/13,s13,x3/14,s13,x4/10,s14,x14/2,pj/g,x3/1,s15,x11/6,s3,x13/4,s1,x6/1,s14,x4/14,s6,pk/a,x12/11,s11,x9/15,s6,x12/2,ph/j,x0/1,pe/b,x14/6,s10,x13/7,pi/f,x14/2,s14,x12/0,s7,x1/9,pj/h,x14/13,pg/d,x6/12,s15,x1/7,s5,x9/0,s10,x1/7,pc/e,x15/14,s5,x13/0,s10,x15/7,pj/i,s3,x4/0,s14,x7/3,s15,x14/5,pf/m,x2/1,pb/a,x3/6,pe/n,x9/2,pk/i,x10/15,s2,x4/7,s13,x15/13,s11,x2/6,pp/j,x15/11,s15,x14/5,pn/i,x4/12,s13,x2/6,pg/p,x0/3,pd/a,x15/8,pk/b,x9/14,pf/n,s11,x10/12,pl/a,x2/1,s8,x11/8,pf/h,x12/2,pc/e,x11/5,s6,po/m,x13/9,s5,x0/6,s1,x5/14,s5,x2/8,s11,pj/n,x11/15,s2,x2/3,pe/f,x4/15,s15,x3/6,s14,x0/1,s15,x12/11,pa/c,x5/1,s2,x14/9,pn/p,x0/7,s5,x14/5,s7,pd/c,x11/9,s15,x2/8,pi/b,x15/9,pk/g,x7/3,s15,x2/1,ph/o,x14/6,s7,x12/2,s7,x6/3,s4,x2/8,s3,x4/11,s3,x6/8,s5,x14/15,pe/p,x4/10,s3,x2/6,s2,x15/7,pg/o,x8/11,pc/a,x12/15,s14,x7/13,s4,x14/8,pl/h,s14,pb/p,x12/5,pe/a,x4/7,ph/c,x10/2,pj/m,x6/7,pd/b,s6,x4/9,s12,x10/12,pl/p,x3/8,s13,x10/6,pj/b,x14/15,pn/a,x1/8,s13,x14/6,po/h,x12/9,s7,x5/2,s3,x8/12,s14,x5/14,pe/a,x0/1,s1,x12/3,pl/p,s9,x9/2,s13,x11/1,pg/d,x12/2,ph/f,s10,x11/3,s9,x4/2,pd/e,x14/9,pn/l,x13/6,pi/k,x15/1,s14,x6/12,s6,x15/0,s4,x8/11,pp/j,x9/0,pd/e,x11/4,s15,x8/9,pj/i,x15/10,s3,x5/2,pl/h,x15/8,pe/p,x12/4,s9,x8/2,s5,x10/6,s14,x0/9,s14,x5/3,pm/c,x11/1,pd/o,x9/15,s10,x4/8,s14,x6/7,s12,x14/5,s9,x12/11,s2,x10/13,pi/m,s15,x15/5,s7,x10/2,s6,pk/l,x12/6,pd/h,x11/10,s9,x1/14,s3,x7/12,pf/e,s14,x3/2,s5,x0/12,s8,pc/b,x1/8,s5,x6/9,s3,x10/8,po/m,x14/9,s4,x13/15,pn/f,x3/8,s6,x15/0,ph/d,x13/3,pi/l,s13,pa/p,x12/8,pb/j,x5/13,s2,x3/15,s5,ph/p,x4/1,pj/k,x11/2,s1,pl/o,x7/1,s4,x15/12,s3,x10/4,s10,x0/2,s7,x5/4,s10,x10/1,pb/c,s8,x13/8,s3,pd/p,x6/15,s1,x13/4,s3,x0/7,s8,x8/6,s4,x2/3,s5,x9/4,s4,x3/14,s15,x15/1,s12,x2/5,pg/i,x11/9,pc/d,x3/2,s14,x15/10,pj/p,x7/13,pg/f,x12/15,po/n,x5/1,s14,x6/3,s6,x5/4,s13,x0/7,s1,x1/5,s15,x3/8,s1,x14/11,s11,x5/3,s1,x11/4,s10,x14/9,s4,x13/11,s12,x12/10,s2,x9/2,s6,x12/6,s1,x9/1,pd/f,x10/4,pe/p,x12/3,s9,x2/11,s12,x1/12,s3,x3/4,s1,x9/12,pj/n,x11/10,s3,x6/14,s2,x4/8,s7,x11/14,s3,x9/1,s7,x5/13,po/d,x9/10,pj/e,x1/6,s5,x13/3,pc/d,s8,x4/1,pp/n,x10/11,pd/o,x5/13,s4,x10/8,s13,x12/1,s14,x9/2,s9,x4/0,s6,x11/10,s12,x15/5,s9,x12/6,s7,x15/1,s6,x9/8,s1,x5/15,pm/c,x6/14,s1,x1/10,s2,x11/5,s5,x0/3,s6,x14/1,pl/o,x8/10,s1,x2/14,s6,x15/5,pg/i,x3/8,s1,x0/6,s10,x1/14,s10,x13/2,s7,x6/10,s3,x2/15,s14,x11/0,pk/h,x10/12,s3,x1/6,s8,x10/9,pp/m,x5/7,s14,x8/15,s14,x0/9,pa/l,x13/15,pc/g,s13,x1/14,s5,x15/7,s7,x12/3,s5,x15/4,s8,x13/11,pk/d,x2/15,pp/l,x14/1,s4,x8/5,pm/i,x9/11,po/g,x1/7,s15,x9/13,s12,x3/6,s15,pa/n,x7/1,s14,x15/11,pm/p,x14/6,ph/b,x15/2,s3,x4/9,s4,x5/7,s5,x3/13,s6,x11/14,s8,x2/8,s6,x6/0,s5,x1/10,s6,x14/13,s1,x7/8,pm/e,x1/3,pb/j,x15/4,s10,x6/12,s9,x0/10,s15,pk/p,x5/4,s2,x3/9,pb/l,x10/13,s8,x2/15,pa/f,s14,x12/1,pe/k,x4/14,ph/j,x1/3,pd/l,x0/4,pb/k,x7/11,s12,x4/12,s4,x0/14,s8,x1/15,s9,x13/9,s2,x6/7,s3,x12/13,pg/e,x4/6,pf/c,x0/1,s10,x12/13,s2,x9/10,pe/g,x6/2,pl/f,x7/12,s2,x6/10,pj/g,s11,x3/2,s11,x11/0,po/a,x14/9,pg/l,x4/12,s7,x5/11,pm/b,s11,x12/10,po/a,x5/3,s3,x0/9,s6,x15/4,s3,x6/11,s1,x9/2,s9,x10/6,pe/g,s7,x9/2,s8,x10/13,s11,x6/15,s14,x12/11,pm/a,x7/14,po/c,x9/3,s13,x2/5,pd/f,x13/12,s10,pe/n,x4/9,pk/c,x2/5,s3,x8/10,s1,x1/7,s9,x6/14,s6,x8/4,pf/n,x0/9,s13,x14/2,pl/c,x11/8,pd/a,x2/9,s9,x7/5,pm/b,x1/11,s8,x0/4,pc/f,x12/13,s12,x11/6,s4,x4/3,ph/i,x15/1,pm/g,x4/3,s3,x2/8,s13,x14/0,pj/b,x7/2,pg/i,x11/13,pa/f,x15/7,s11,pn/i,x11/6,pd/g,x9/3,s14,x1/4,s6,x6/11,s10,x15/2,s11,x11/1,s10,x6/4,s6,x14/7,s9,ph/n,x5/11,s8,pj/e,x7/9,s6,x6/11,s2,pc/h,x10/7,s14,x9/1,s7,x15/5,pk/o,s3,x14/7,s7,x0/2,s12,x1/14,pp/a,s8,pk/m,x12/8,s12,x9/13,s6,pj/i,x10/6,s12,x4/15,pp/g,x7/5,s7,x14/15,s6,x5/13,s4,x9/8,pe/a,x0/11,s14,x15/2,pm/o,x11/7,s10,pi/g,x8/5,po/m,x3/12,s5,pg/c,x1/8,pd/o,x11/10,s2,x6/5,ph/p,x14/11,po/b,x9/2,s15,pj/i,s15,x12/14,s10,x11/7,pm/p,s5,x10/3,s10,x7/8,s15,x11/5,po/b,s5,x15/14,s10,x3/6,pd/f,x2/10,pm/e,x4/14,s12,x5/11,s8,x12/8,s11,x10/5,s12,x0/8,s3,x5/2,s10,x11/14,s4,x4/7,pl/n,s10,x14/8,s13,pm/k,x10/15,pi/f,s1,x0/14,s11,x2/13,pc/o,x10/4,pi/g,s1,x13/14,pa/j,x9/5,s1,x4/7,s5,x1/13,s4,x5/9,pi/b,x8/11,pj/a,x2/10,pe/f,x4/12,s10,x0/3,s5,x7/12,s11,x11/6,pi/k,x5/1,s1,x0/2,pl/f,x5/15,pp/c,x14/10,pa/k,s14,x7/11,ph/b,x0/5,pe/a,x14/7,ph/i,x0/13,s9,pb/j,x1/9,pc/k,x3/8,ph/n,x10/6,pi/o,x15/7,s15,x0/14,pj/f,s1,x4/5,s11,x12/11,s4,x3/6,s5,x1/12,pp/l,x2/4,s15,x8/3,s7,x7/12,pj/o,x4/13,pe/d,s2,x6/3,s15,x5/8,s14,x3/9,s1,x7/0,s11,x2/8,pp/i,x12/13,s15,x9/11,s4,x3/4,po/n,s12,x2/11,s14,x7/6,s4,x9/14,pm/a,x2/13,s12,x9/14,s14,x5/3,pp/j,x15/7,pd/k,x0/6,s9,x12/11,pn/i,s8,x5/14,s11,x4/10,s7,x11/6,s7,x5/2,s6,x11/7,s2,x0/9,ph/d,x1/2,s7,x3/8,s11,x6/9,po/e,x0/2,s9,x8/7,s12,x4/0,pb/n,x5/11,s4,x8/1,pm/p,x12/5,s6,x2/7,s9,x6/13,pk/f,x15/3,s15,x0/5,pi/j,x11/14,pl/e,x8/4,s10,x12/9,s3,x6/1,s3,x8/9,pg/k,x6/10,s3,x15/3,s1,x8/0,s1,x6/13,pa/h,x8/7,s4,pb/f,x9/2,s10,pi/a,x1/0,pl/j,x14/3,pf/d,x9/1,pe/i,x8/4,pa/f,x7/12,pc/h,x1/10,s13,x9/15,pb/f,x5/1,ph/j,x14/12,s10,pf/p,x8/1,s4,x6/2,pa/b,x3/7,pp/k,x5/11,ph/f,x10/12,s3,x0/8,pk/d,x10/4,pb/c,x0/13,pg/o,x10/2,s14,pb/k,x5/1,s3,x10/9,ph/j,x4/8,s7,x9/7,s6,x1/5,s9,x14/13,s3,x11/6,s15,x13/9,s4,x5/7,pn/b,x10/12,s8,x1/8,s7,x3/0,s9,pj/f,x7/6,s4,x8/1,s7,x12/5,pe/b,s13,x9/13,pn/d,x14/8,pb/f,x4/7,s9,x9/14,s13,x2/11,s15,x6/4,pn/g,x3/9,s5,x8/14,pp/m,x11/7,s6,pi/e,x15/1,s9,x10/8,s1,x6/1,s6,ph/n,x4/8,pd/k,s10,x9/0,s8,pf/g,x4/8,pk/l,s4,x7/0,s2,x1/10,s9,x8/6,pf/b,x3/11,ph/j,x6/14,pk/l,x2/1,pp/m,x4/10,pa/k,x11/8,pg/j,x6/13,pe/k,x11/9,pg/o,s2,x13/6,s1,x14/4,s2,x3/9,s6,x11/13,s7,x14/15,pe/l,x11/6,pf/d,x9/15,pn/h,x2/4,s7,pg/m,x3/15,s10,x4/11,s1,x7/10,po/d,x12/11,s1,x10/9,s1,x8/7,s6,x1/2,s10,x8/5,s14,x13/9,s10,x2/1,pl/p,x7/4,s12,x0/3,pm/k,x8/1,pp/d,x14/15,s15,x6/11,s4,x9/4,s8,x1/12,pj/a,x8/9,s14,x13/5,pd/f,x8/4,s1,x0/15,pm/p,x4/7,pf/e,x3/5,pp/k,x12/10,s11,x4/14,pn/f,x11/13,s3,x8/2,pi/j,x14/13,s1,x12/15,pd/l,x14/4,po/b,x9/6,s4,x10/2,s2,x1/0,s9,x5/7,pk/g,s7,x14/15,s13,x9/4,s9,pa/m,x1/3,pf/e,x6/2,pd/l,x13/9,s5,pj/n,s11,x4/7,pi/f,x10/3,pb/l,x4/7,pj/g,x15/13,s5,x8/7,s4,pk/l,x9/12,s4,x2/0,s9,po/g,x6/4,pb/k,x5/0,s4,x13/4,pe/l,s11,x14/1,s4,x7/11,s11,x10/6,s10,pj/h,s14,x13/9,s15,x4/1,pe/c,x11/15,s15,x5/2,pd/i,x1/3,pb/a,x2/11,s6,x0/12,s9,pj/i,x1/3,pb/e,s13,x6/15,s7,x7/14,pp/h,s11,x3/15,s6,x7/12,s9,x1/14,pl/m,x6/8,pd/j,x2/11,s7,x15/1,s8,x3/6,s1,x15/9,pi/g,x7/1,pd/b,x6/5,s3,x13/4,s1,x0/2,pp/e,x9/15,pa/n,x8/2,s4,x1/7,s14,x11/6,pg/f,x3/1,pl/o,x6/15,pg/p,x1/12,s12,x0/6,pe/b,x15/10,s6,x3/2,s14,x14/1,s6,x9/12,s2,x14/2,s11,x3/5,ph/a,x10/2,s15,x12/13,pg/n,s2,pe/a,x4/11,s15,x15/7,s7,x14/0,s15,x10/9,pd/l,x12/4,s4,x15/5,pn/i,x10/1,pc/j,x5/12,s13,x2/9,s10,x15/10,s12,x11/9,s13,x13/14,pe/a,x15/8,s7,pj/h,x0/11,s3,x10/6,pe/m,x13/5,pc/k,x11/0,pf/j,x6/4,pe/o,x8/0,pj/c,x15/13,s7,x10/8,s10,x5/6,s1,x2/15,s6,x9/4,pb/h,x8/12,pe/o,x7/9,pp/k,s9,x0/2,s5,x8/14,s2,x0/3,pj/m,x4/12,pg/n,s8,x5/1,s7,x4/14,s15,x5/8,s5,x0/14,s9,x9/2,s4,x14/15,pj/l,x0/13,s4,x14/15,pn/k,x1/8,s15,x2/5,po/c,x6/7,ph/a,s6,x8/1,pm/b,s2,x7/13,s7,x6/5,s14,x0/7,s9,x2/1,s7,x15/14,po/e,x3/13,s8,x14/7,pk/c,x15/4,s14,x5/10,s6,pp/m,x11/6,s10,x5/9,s6,x10/11,s4,x13/14,pa/h,s2,x3/5,s10,x6/11,pm/e,s4,x8/3,s14,pj/l,x1/0,s9,pn/i,x11/3,pg/j,x4/10,pk/n,x0/8,pc/p,x3/15,pd/j,x9/7,pg/i,x12/1,s11,x3/8,pp/a,x0/14,pf/j,x12/13,s14,x8/9,pi/m,x13/3,s3,x7/6,pd/h,s2,x8/0,s5,pa/p,x4/12,s13,x1/2,s1,x8/5,pf/k,x11/1,s12,x10/7,s11,x13/1,s3,x2/6,pc/i,x15/8,s6,x14/7,s7,x11/1,pn/h,x13/5,s10,pj/c,x9/3,po/l,x14/0,pj/p,x8/3,s13,x0/7,s13,x1/14,pl/m,x11/10,s15,x4/2,s11,x13/7,s1,pd/j,x1/4,s4,x6/3,s13,x15/7,s9,x0/3,pi/n,x4/5,pm/e,x14/13,po/n,x5/12,pd/i,x7/3,s2,x8/11,ph/a,x3/14,s4,x5/4,pd/c,x12/3,s15,x10/7,s9,x8/11,pf/n,x5/15,s4,x7/10,pm/c,s14,x15/9,pg/o,x1/7,s6,x9/5,s15,x2/3,pp/d,x13/7,pb/c,x1/8,s5,x2/12,s13,x14/13,s10,x15/9,s10,x8/3,s1,x1/11,s10,x3/9,pi/l,x7/5,s10,x14/1,pn/p,s1,x0/4,s14,x12/11,s6,pg/h,x2/4,pc/a,x14/13,s3,x11/6,pl/k,x3/14,s9,x10/2,pm/o,x3/5,pd/k,x13/4,s7,x3/14,ph/i,x13/4,s6,x5/12,s15,x8/15,s11,x9/3,pc/g,x10/14,s9,x8/5,pe/m,s10,x15/11,pk/h,x4/10,pi/a,x0/11,s4,x3/9,ph/e,x11/8,pn/f,x10/1,pb/h,s12,x2/9,s7,x10/15,pp/d,x11/7,s12,x5/15,pk/h,x8/1,s1,x14/15,s7
diff --git a/2017/inputs/day_17.txt b/2017/inputs/day_17.txt
new file mode 100644
index 0000000..67bf40f
--- /dev/null
+++ b/2017/inputs/day_17.txt
@@ -0,0 +1 @@
+371
diff --git a/2017/inputs/day_18.txt b/2017/inputs/day_18.txt
new file mode 100644
index 0000000..8b74206
--- /dev/null
+++ b/2017/inputs/day_18.txt
@@ -0,0 +1,41 @@
+set i 31
+set a 1
+mul p 17
+jgz p p
+mul a 2
+add i -1
+jgz i -2
+add a -1
+set i 127
+set p 735
+mul p 8505
+mod p a
+mul p 129749
+add p 12345
+mod p a
+set b p
+mod b 10000
+snd b
+add i -1
+jgz i -9
+jgz a 3
+rcv b
+jgz b -1
+set f 0
+set i 126
+rcv a
+rcv b
+set p a
+mul p -1
+add p b
+jgz p 4
+snd a
+set a b
+jgz 1 3
+snd b
+set f 1
+add i -1
+jgz i -11
+snd a
+jgz f -16
+jgz a -19
diff --git a/2017/inputs/day_19.txt b/2017/inputs/day_19.txt
new file mode 100644
index 0000000..b4826aa
--- /dev/null
+++ b/2017/inputs/day_19.txt
@@ -0,0 +1,201 @@
+ |
+ +-----------------------+ +-------------------------------------------------------------------------------------------+
+ | | | | |
+ +-------------------|-----------------------|-----------------------+ +-----------------------------------------------------------------------|-----+ |
+ | | | | | | |
+ +-----------+ | +---------------------------------|-------------------------+ | | |
+ | | | | | | | | |
+ | +-----+ | | | | +---------------------|---------------------------------------+ | | |
+ | | | | | | | | | | | | |
+ | | | | +---|-------+ +---------------------------|---------------------------------------------------------------------|-----|-------------+
+ | | | | | | | | | | | | |
+ +-------|-------------------------------|-+ +-+ | | | +---------------------+ +-+ | +-----------------------+ +-------------+
+ | | | | | | | | | | | | | | | | | | | | |
+ | +---|---------|-----------------------|---|---|---|---------------|-----------------+ | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | |
+ | | | +-|-----+ | | | | | | | | +-------------------------------------|-----------------------------------------|-+
+ | | | | | | | | | | | | | | | | | | | | |
+ | +-------------|-----------------------|---|---|----Y------|-------|-----------------------------------------------------------+ | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | +-----------------------------------------------------------|-----|-------------------|-+ | |
+ | | | | | | | | | | | | | | | | | | | | | | |
+ | | +---------------------------|-----------|---------------|-------------------------------------------------------------------------------------|-----------------+ | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | +---------------------------+ | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +-+ | | | | | | | | | | | | +-+ +-------------------------------------|-----------------------------------|-----+ | +-----+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | +-|-|-------------------|-------------|-|---------|---+ | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | +---|-+ | | | | | | | +-----|-------------|-----------|---|-------------------------------------------------------------|-|-----|-----------|-------|-|---+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | +-|---|---+ | | | | | | | | +-------|-----|-|---------|-------|-|-----+ | | | | | | | | +-|---+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | +-|---+ | +---------|---|-----|-------------------------------|-----------------------|-----------+ +-|-------|-|---+ | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | +-|---------------|-------|-----|-------------|-----|---------+ | | +-|---+ | +-------------------+ | +-------------------|---------|-+ | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | +-------+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-------|---+ | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | +-|---|-|-------|-----------|-----|---------|-------|-------|-+ | | +-+ | | | | +-----------+ | | | +-+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | +-----------------|---|---|-|---+ | +-----------------------|-------+ +-+ | | +-|-|---|-|-------|-+ | | +-+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | +---|-----|-------------|---|-+ +-------|---------+ | | | | | | | | | | | | | | | | | | | | +-+ | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | +-|-|-----|---|-|-|-------------------------------------------|-----|-|-------+ | | | | +-----|---|---------+ | | +-----------|---------+ | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +-|---|-|-|-+ | +---|---|-------------------------+ | | | | | +---|-------|---|-+ +-|-|---|-|-----------|-----------|-----|-|-----|---|-|-----+ | +---|-----|---+ | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | +-----|-------------------+ | | | | +---|---------+ | | | | | | | | | | +-------|-|-----|-----|-------+ | | | +-+ | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | +---------------------|-+ | | | | | | +-----|---+ | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | +-|-|-----|---|---|-|-|-|-|-------------------+ | | | | | | | | | +-|-----+ | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | +-|---|---------------------------|-------------+ | +---+ | | | | | | | | | | | | | | +-----|-----------|-----|-------|---|---+ | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | +---------|-|-|-----------------------|-|-----------|---------------|-----|---|---------|---|-|---|-|-|-----|-----------|-------|---+ | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | E | | | | | | | | | | | | | | |
+ | | | | | | | | | | +-----|-----------|---|---------------------+ | | | | | | | | | | | | | | | | | | | | | | | | | | +-|---|-+ | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | +-|-------------|-|-|-----|----------U----|-|---|-------|-------------|-|-|---|---+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | +---------------|---------------------------|-----|---------|-----|-------------|-----------------+ | | | | | | | | | +-+ | +-|---|-----------------+ | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | +-|-----+ | +-|-+ +---------------|-|---+ | | | | | | | | | | | | | | | | | +-------|-----------------------|-|---|---|-|-----|---------|-|---------|---------+ T | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-------------+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | +-----------------------+ | | | | | +---+ | | +-|-----|---|-|-|-+ | | | | | +-------|---+ +-+ +-|-|-+ | | +---+ | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | +-----------|-----|-----------|-----|-----|-----------------|-|---|-------------|---|---|---|-----|---------|---------|-------|-----------+ | +---|-|-|-|-|---|---|-----+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | +---+ | | | | | +-|-----|-----|-------|---------|-+ | | | | | +---|-----|---------|---------|-------------+ | | | +-----------|---|-------|-----+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +---------|-----|-|-----|-------|-|-----------|-|-|-----|---|-------|-------|---|-|--D------|-|---|-------------|---------+ | +-------------|-|-----------------|-|---|-|-|-------|-------+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | +---------|---+ +-------|---|-------+ | | | | | | | | | | | | | | | +---|---------|---+ | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---------------|---|-|-----|-----+ | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-------+ +-+ | +-|-----|-----|-----|-|-|-------|-|-------|-|-|-|---+ | | | +-+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | +-|-------|-------|-----------------------------------|-+ | | | | | | | | | | | | | +---------------|---|-|-----|-|-|-------|-|-------+ | | | | +-|-|---|-+ +-+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | +---|-|---------|-|---------|-|---|-|-----|-----|-|-|-----+ +---------+ | | | | | | | | | +---|-|-|-|-+ | | | +-----+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | +-------------|-|-----------------|-----------|-|-----|-----|-----|-|-----+ | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | +-----|-|-----+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---------|---+ | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-|-+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | I | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | +-|---------|-----|---------------------------+ | | | | | | | | | | | | | | | +-|-------+ | | | | | | | | | | | | | | | | | | +-+ | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | +-|---|-------|---|-----|-|-----|---------------|-----|-----|-----------|---|-----------|-|-----|-----|---------------|---------|-|-|-+ | | | +-------|-------+ | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | +---|-|-+ +---------+ | | +-------|-----|-----|---------------------+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +-|-------|---+ | | | | | | | | +-----------------|-|---------------|---+ | | | | | | | +---|---|-----------|-|---+ | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | +---|---|-|-------------------------|-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +-|-------|---|-----|-----|-----------|-------------------------|---|-+ | | | | | | | | | | | | | | | | | | +-----|-----------|---|---|---+ | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +-------------|-|-|-------|-----|-------|---------|---------|-------------------|-|---------+ +-|---|-----+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +-|-------------|---------|---|-|-----|-|-------------------|-|-----|-----|---------+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | +-----------|---|---+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | +-----|---|-----------|-|-|---------|-----|-|-------------|---|-------+ | | | | | | | | | | | | | | | | | | | | +---------|-|-----------|---|-+ | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | +---------|-----|---|-|-----|-----|-----|-|-|-----|-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | +-|-|---|---|---|-------|-----------|-|-+ +-|-|-----+ | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | +-----|-|-+ | | | | | | | | +-----------|---|-----|-|-------|-|---|-|N|-|-----|-------|-|-----------|---|-|-----|-+ | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | +-|-|-------|-|---|-------+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-----+ | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---|-------|---|-+ | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | +---|-----|-----------|-|-|-|-----|-|---|---|-+ | | | | | | | | | | +-|-|-|-+ | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | +---+ +---|-------|---------------|---|---|-------------------|-------------------|-|---|-|-|---|-|-------------------|-----|-----|-|---|---+ | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | +-----|---------------|-----------|---|-------|-----------------|-------|-------|-----------|-------|-+ | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | +-|---|---|-------------------|-----|-----|-----|-|-|-|-----------+ | | | | | | | +-|-|---+ | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | +-----|---------------|-------|---|---+ | | | | | | | +-----|-|-----|-|---|---|---|-|-|---------|---------|---------|---------+ | +-----------+ | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-|---------------|---|---|---|-|---------|-|---+ | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | +-------|-|-|-------|-------|---|---------|-------|-----------+ +-|---+ | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | +-------|---------|-----|---------|---------------------|-----|-----------|-|-----------|-+ | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | X | | | | | | | | | | | |
+ | | | | | | | | | +-----|-----|-|-|---------+ | | +-----------+ | | | | | | | | | | | | | | | +-----------+ +-|---+ | +-|-------|-+ | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | +-----------------|-|---+ | | | +-------|-|-------------|-------------|-----+ | | | | +-|---|-----|-+ | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +---------|-----------|-----------------|---|---|-----|-+ | | | | | | | | +-----|-|-|---|-------|-----|---------------|-----|-----|-|---|-----------|-----|---------|-----+ | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | +---+ | | | | | +---------------------|-----|-----|-|-------------|-----|-----|-|-----------|-|-|-|-|---|-------------|---------|-----+ | +-----------|---------|---|-----|-----|-|---|-+ |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | +---|---|-----|---|-----|-------|-------|-----------|---------------------------|-|-|---------------------|-|-|---------------------|---+ | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | +-------|-----|-----------------+ | +-+ | | | | | | | | +-|-|---|-+ | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | +-|-----|---+ | | | | | | | | | | +-|-|-------------|-|-----|---------+ | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | +-|-----+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +-+ |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +-----|-|-|-------|---|---------|-------|---------|---|-----|-|-------------------|-------|-------------|-----|-|---------|-|---------------|---|-----------------|-------|-|---|-----------|---------+
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +---------+ | | | | | | +-----|---|-----|-----|---|-|-------------------------|-|-|-----------|-|-----|---------|-----|-----------------|-----|-----|-|-------|-----------------|---------+
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | +---|-|-----------|-|-|-----|---------|-----|-----------|---|-|---+ | | | | | | | +-----------|-+ | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | A | | | | | | | | | | | | | | | | | | | | | | | | |
+ +-----|-----|-|---|-+ | | | +---+ +-----|---|-------------------------+ | | | | | +---------|---------------|-----------|-----|-+ | | | | | | +-|-------------|-|-|-|---|---+
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | +-----|-----------|-+ | | | | | | | | | | | +-+ | | | | | +---|---|---+ | | | | | +---+
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | +-|-----|-|-------|-----------+ | | | | | | | | | | | | | | | | | | | | | | | | | +-+ | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | +-----|-|-----------|-+ | | | | | | | +-------|-|-------------|-----|-----|-----|---------------------|-|-------|---|-|---|---|---|-----|-----|---+ |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | +---|---+ | | | | | | +-|-|---+ | | +-+ | | | | | | | | +---|---|-|---|-------|-+
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | +-------------|-+ | | +-|-----------------------------------+ | | | +---|-----+ | | | | | | | | | | | | +-|-----------+ | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +---|-|-------|-+ | | +---|-------+ | | | +---------------------------|-----------|---|-------|-----|-----|---------------------------------|-------------------+ | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | +-------|---+ +-------------+ +---+ +-|-|-------|-------------|-|---------------------------|-+ | | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | +-------|---+ | | | | | | | | | | | +-+ +-------------------|-----+ +-+ +-----|-+ | +---+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | | +-----|-------------------|---------|---|-------|-|---+ | | | | | | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | | | |
+ +-+ +---|-----------|-----------------------------------------------------------------------|-------|-----------|-----|-----------------------------------+ | +-------------------+ +-|-+
+ | | | | | | | | | | | | | | | | | | | | | | | | | P
+ | +-------|---------+ | | +-------------|-------------------------|---------|---|---------|-------------|-------------------------+ | +-----------------+ | |
+ | | | | | | | | | | | | | | | | | | | | | | | | | |
+ | | | | | | | | +-----------------------------|-----+ | +-------|-------------|---+ | +-----|---+ | | | | |
+ | | | | | | | | | | | | | | | | | | | | | | | |
+ | +---+ | +-|-------------+ | | | +---------+ +-------+ +-------------+ +---+ | | +---+ |
+ | | | | | | | | | | | |
+ +-----+ +-----+ +-+ +-----+ +-----------------------------------------------------------------------------------+ +-----------------+
+
diff --git a/2017/inputs/day_2.txt b/2017/inputs/day_2.txt
new file mode 100644
index 0000000..f2f1f5e
--- /dev/null
+++ b/2017/inputs/day_2.txt
@@ -0,0 +1,16 @@
+493 458 321 120 49 432 433 92 54 452 41 461 388 409 263 58
+961 98 518 188 958 114 1044 881 948 590 972 398 115 116 451 492
+76 783 709 489 617 72 824 452 748 737 691 90 94 77 84 756
+204 217 90 335 220 127 302 205 242 202 259 110 118 111 200 112
+249 679 4015 106 3358 1642 228 4559 307 193 4407 3984 3546 2635 3858 924
+1151 1060 2002 168 3635 3515 3158 141 4009 3725 996 142 3672 153 134 1438
+95 600 1171 1896 174 1852 1616 928 79 1308 2016 88 80 1559 1183 107
+187 567 432 553 69 38 131 166 93 132 498 153 441 451 172 575
+216 599 480 208 224 240 349 593 516 450 385 188 482 461 635 220
+788 1263 1119 1391 1464 179 1200 621 1304 55 700 1275 226 57 43 51
+1571 58 1331 1253 60 1496 1261 1298 1500 1303 201 73 1023 582 69 339
+80 438 467 512 381 74 259 73 88 448 386 509 346 61 447 435
+215 679 117 645 137 426 195 619 268 223 792 200 720 260 303 603
+631 481 185 135 665 641 492 408 164 132 478 188 444 378 633 516
+1165 1119 194 280 223 1181 267 898 1108 124 618 1135 817 997 129 227
+404 1757 358 2293 2626 87 613 95 1658 147 75 930 2394 2349 86 385
diff --git a/2017/inputs/day_20.txt b/2017/inputs/day_20.txt
new file mode 100644
index 0000000..f249f9e
--- /dev/null
+++ b/2017/inputs/day_20.txt
@@ -0,0 +1,1000 @@
+p=<-317,1413,1507>, v=<19,-102,-108>, a=<1,-3,-3>
+p=<1639,477,-2519>, v=<-79,-102,130>, a=<-9,9,12>
+p=<613,-993,-305>, v=<-39,27,-48>, a=<-2,8,11>
+p=<1343,190,-1565>, v=<-82,31,31>, a=<1,-4,5>
+p=<735,-285,2387>, v=<-20,-64,-67>, a=<-2,8,-6>
+p=<963,456,-1888>, v=<-42,-73,88>, a=<-1,5,1>
+p=<-1659,1444,-463>, v=<-14,-25,-77>, a=<10,-5,10>
+p=<-443,-95,-1185>, v=<142,-14,81>, a=<-12,2,-2>
+p=<-2590,3249,-710>, v=<35,-30,36>, a=<10,-14,0>
+p=<-1602,-171,924>, v=<83,-50,-20>, a=<0,6,-3>
+p=<-633,2195,-458>, v=<31,-200,31>, a=<4,0,2>
+p=<-347,-49,-1976>, v=<-19,-50,151>, a=<8,9,5>
+p=<852,314,125>, v=<-56,-83,-22>, a=<-4,9,2>
+p=<-10088,3682,-5210>, v=<52,32,-38>, a=<14,-8,11>
+p=<-4019,1982,4446>, v=<-4,47,-7>, a=<7,-6,-7>
+p=<3444,-2319,-11041>, v=<-171,-89,81>, a=<4,9,14>
+p=<2390,792,2117>, v=<0,47,114>, a=<-4,-4,-10>
+p=<5661,-1318,-1666>, v=<-87,-44,-33>, a=<-5,5,5>
+p=<2856,-1912,743>, v=<-36,59,-174>, a=<-3,0,9>
+p=<4275,5447,-5461>, v=<6,-11,31>, a=<-8,-9,8>
+p=<1263,1223,980>, v=<-98,-69,-68>, a=<0,-3,-1>
+p=<1094,963,1253>, v=<-85,-105,-75>, a=<0,5,-3>
+p=<2641,-922,2124>, v=<-113,61,-142>, a=<-13,2,-3>
+p=<600,859,-398>, v=<-26,-97,-4>, a=<-3,5,5>
+p=<-128,-1533,330>, v=<-12,73,-88>, a=<3,7,9>
+p=<1419,-1507,-528>, v=<-159,29,-15>, a=<7,13,8>
+p=<574,-1299,-1100>, v=<-17,104,113>, a=<-4,0,-4>
+p=<-440,-1923,-8>, v=<-2,131,36>, a=<5,3,-5>
+p=<-1705,-1617,-226>, v=<45,42,123>, a=<0,0,-6>
+p=<708,36,4790>, v=<1,57,-48>, a=<-1,-3,-4>
+p=<2266,9745,3707>, v=<38,-101,-78>, a=<-5,-8,-1>
+p=<7320,-629,-2164>, v=<-134,-62,18>, a=<-3,4,2>
+p=<746,6097,-2544>, v=<-78,-44,-11>, a=<3,-6,4>
+p=<1563,-7678,5873>, v=<115,-13,-57>, a=<-8,11,-5>
+p=<-8146,-3232,-5147>, v=<156,-52,155>, a=<3,7,-1>
+p=<-3966,4235,1389>, v=<7,44,22>, a=<5,-8,-3>
+p=<2171,-5151,14708>, v=<21,-21,-75>, a=<-4,8,-16>
+p=<442,-1232,2730>, v=<9,-20,3>, a=<-2,5,-8>
+p=<-273,-1960,5408>, v=<-58,89,-100>, a=<5,-1,-8>
+p=<-624,-3559,247>, v=<50,137,31>, a=<-2,0,-3>
+p=<2106,-2688,1482>, v=<-82,144,-57>, a=<0,-3,0>
+p=<-2886,1147,2678>, v=<83,-44,-157>, a=<2,0,4>
+p=<1984,472,-191>, v=<-31,-3,63>, a=<-3,-1,-4>
+p=<3604,-6710,-2540>, v=<-21,123,-32>, a=<-8,9,9>
+p=<5305,1390,781>, v=<-182,103,-15>, a=<-1,-11,-1>
+p=<-527,256,-1055>, v=<-22,-107,39>, a=<3,7,0>
+p=<7708,1660,5803>, v=<-131,-19,-103>, a=<-11,-3,-8>
+p=<-5981,-2228,-6671>, v=<68,-15,23>, a=<11,7,16>
+p=<1356,-1869,-687>, v=<39,68,25>, a=<-6,0,0>
+p=<-1052,4725,937>, v=<38,-66,54>, a=<0,-7,-6>
+p=<-1668,10101,-631>, v=<2,-229,23>, a=<4,-9,0>
+p=<-1906,-4165,4255>, v=<-33,-24,37>, a=<7,12,-13>
+p=<-2760,-2373,-2325>, v=<-46,57,40>, a=<10,2,3>
+p=<516,-6601,-1625>, v=<69,63,44>, a=<-6,12,1>
+p=<1062,-6279,-4929>, v=<6,66,17>, a=<-3,11,11>
+p=<1636,-2387,-1205>, v=<-87,72,58>, a=<2,1,-1>
+p=<3099,3807,-117>, v=<-71,-169,77>, a=<-9,-3,-7>
+p=<1009,-3185,-991>, v=<-1,39,-47>, a=<-5,13,10>
+p=<-3228,368,1954>, v=<142,32,-62>, a=<3,-5,-4>
+p=<1180,1793,-896>, v=<-20,-173,-2>, a=<-4,8,5>
+p=<-1936,7,2790>, v=<24,1,-36>, a=<8,0,-11>
+p=<-1214,-2045,3474>, v=<116,9,-132>, a=<-5,10,-5>
+p=<4619,2971,-3480>, v=<-171,-75,104>, a=<-7,-8,8>
+p=<-2088,1166,3018>, v=<112,-40,-28>, a=<0,-2,-13>
+p=<211,653,2410>, v=<21,107,-46>, a=<-3,-14,-8>
+p=<2415,1926,-1580>, v=<-75,50,34>, a=<-5,-15,5>
+p=<1538,-908,976>, v=<-54,31,26>, a=<0,0,-4>
+p=<3539,7415,1788>, v=<-18,-151,-32>, a=<-7,-7,-2>
+p=<3249,4196,-1373>, v=<-23,-25,2>, a=<-6,-8,3>
+p=<2031,-4301,1701>, v=<-41,148,-29>, a=<-2,0,-2>
+p=<2002,11678,-2475>, v=<-25,-148,85>, a=<-3,-17,0>
+p=<2350,-560,-1315>, v=<-52,64,15>, a=<-2,-3,2>
+p=<11423,-875,9878>, v=<-163,-146,-174>, a=<-13,11,-9>
+p=<1751,-5773,2469>, v=<53,156,33>, a=<-7,2,-7>
+p=<-2155,4333,-7110>, v=<51,-122,38>, a=<1,-1,12>
+p=<-5906,7123,1229>, v=<92,-84,-39>, a=<6,-9,0>
+p=<4696,-2115,113>, v=<-106,-74,-35>, a=<-3,9,2>
+p=<-1132,-4533,1322>, v=<34,36,6>, a=<0,7,-3>
+p=<1658,519,-978>, v=<-72,-26,-46>, a=<-5,-1,14>
+p=<83,-426,732>, v=<25,-35,32>, a=<-4,8,-10>
+p=<278,-1926,-1653>, v=<-52,49,79>, a=<4,10,4>
+p=<-787,-6,-183>, v=<-21,57,61>, a=<9,-7,-6>
+p=<-487,1044,612>, v=<-65,-109,32>, a=<12,5,-9>
+p=<2603,-1521,-123>, v=<-135,86,105>, a=<-5,2,-12>
+p=<-562,1044,-1188>, v=<12,-5,160>, a=<3,-8,-10>
+p=<-1715,3425,5361>, v=<-30,-42,-103>, a=<5,-4,-4>
+p=<-2803,721,-5279>, v=<-95,92,48>, a=<11,-7,7>
+p=<957,-303,-5263>, v=<-97,-107,64>, a=<4,7,6>
+p=<829,-943,-7839>, v=<-93,12,62>, a=<4,1,11>
+p=<-2883,4417,-4703>, v=<56,-40,96>, a=<2,-6,3>
+p=<2557,-6319,3889>, v=<51,147,9>, a=<-8,3,-8>
+p=<-7939,-799,-4191>, v=<82,-9,-52>, a=<10,2,11>
+p=<-7470,-439,367>, v=<120,92,9>, a=<17,-6,-2>
+p=<-2134,-94,-898>, v=<20,-115,40>, a=<6,10,0>
+p=<-478,1930,2092>, v=<20,-35,-114>, a=<0,-4,2>
+p=<1040,-1727,551>, v=<-82,28,-59>, a=<3,4,3>
+p=<-2318,-324,2069>, v=<4,63,-77>, a=<8,-4,-1>
+p=<-2249,21,-1220>, v=<73,0,18>, a=<2,0,3>
+p=<2627,-3199,-2577>, v=<17,44,113>, a=<-11,8,0>
+p=<-2732,-1796,482>, v=<-2,103,-68>, a=<10,-2,4>
+p=<441,1243,20>, v=<43,-28,83>, a=<-10,-8,-11>
+p=<1029,-1151,-764>, v=<-104,68,94>, a=<4,2,-5>
+p=<-672,-2551,97>, v=<25,153,40>, a=<3,4,-6>
+p=<1027,1714,-804>, v=<-72,-122,60>, a=<-1,-2,1>
+p=<416,1506,-50>, v=<-32,-22,16>, a=<0,-14,-1>
+p=<-1131,1623,-1103>, v=<150,-108,20>, a=<-9,-3,10>
+p=<1001,-990,-1454>, v=<-63,37,75>, a=<-2,5,6>
+p=<-418,465,403>, v=<-35,5,45>, a=<12,-8,-14>
+p=<682,-734,73>, v=<-21,120,-75>, a=<-7,-9,11>
+p=<-2343,333,-1159>, v=<140,-79,25>, a=<12,8,13>
+p=<924,421,-587>, v=<-43,3,-75>, a=<-7,-7,21>
+p=<-693,-404,293>, v=<44,24,-5>, a=<3,2,-4>
+p=<363,355,183>, v=<-58,-33,-49>, a=<4,0,5>
+p=<-5454,-1885,-2432>, v=<116,-43,149>, a=<13,12,-3>
+p=<342,-793,-941>, v=<-17,15,23>, a=<0,2,2>
+p=<-456,1139,-920>, v=<21,-22,0>, a=<0,-3,4>
+p=<-101,-4352,13169>, v=<23,75,-150>, a=<-1,2,-10>
+p=<-3122,360,-2677>, v=<83,-49,-84>, a=<0,2,8>
+p=<-7093,-2072,800>, v=<51,-24,78>, a=<7,4,-5>
+p=<6397,1082,4505>, v=<8,88,-39>, a=<-9,-6,-4>
+p=<-63,1937,-1005>, v=<22,46,106>, a=<-1,-5,-4>
+p=<-595,1367,-910>, v=<-42,-56,45>, a=<3,1,-1>
+p=<2578,-11667,-1670>, v=<-28,-25,-52>, a=<-2,17,5>
+p=<-3425,-215,4501>, v=<138,8,41>, a=<-2,0,-11>
+p=<-4625,-135,-939>, v=<27,-77,13>, a=<7,5,1>
+p=<479,1913,2117>, v=<-17,-42,-66>, a=<0,-1,0>
+p=<-3015,2181,-3524>, v=<-9,-40,-70>, a=<7,-2,12>
+p=<-2280,-5424,436>, v=<137,74,108>, a=<-4,7,-8>
+p=<6240,-669,-2024>, v=<-54,-7,-89>, a=<-10,2,10>
+p=<-3885,-84,-8054>, v=<51,-11,50>, a=<5,1,14>
+p=<-3345,6336,2956>, v=<2,-8,-69>, a=<7,-13,-2>
+p=<-3465,-1449,-779>, v=<6,-43,-22>, a=<7,6,3>
+p=<-1170,-8754,-1094>, v=<162,92,-27>, a=<-8,13,4>
+p=<6195,2541,886>, v=<-68,10,-31>, a=<-9,-6,0>
+p=<5625,3321,-2279>, v=<-142,-78,90>, a=<-3,-2,-1>
+p=<146,1150,-504>, v=<-34,-42,20>, a=<4,-8,3>
+p=<-64,-2,1992>, v=<16,-63,-110>, a=<-1,10,-9>
+p=<-1138,334,-24>, v=<99,0,-7>, a=<0,-4,1>
+p=<2156,-146,354>, v=<-104,14,-19>, a=<-11,0,-2>
+p=<2224,501,-708>, v=<-92,-21,-46>, a=<0,0,6>
+p=<664,405,960>, v=<98,33,22>, a=<-10,-4,-5>
+p=<1144,2061,-2388>, v=<-47,-36,149>, a=<0,-4,-4>
+p=<-212,-2043,4500>, v=<-78,-65,-113>, a=<7,12,-6>
+p=<1084,4569,-4644>, v=<-57,-28,-32>, a=<1,-13,18>
+p=<-824,5649,-4296>, v=<60,-48,-34>, a=<-2,-15,17>
+p=<88,-591,-3132>, v=<22,-13,30>, a=<-2,3,8>
+p=<2836,1917,-696>, v=<-30,-105,116>, a=<-7,2,-7>
+p=<-4061,279,753>, v=<73,-63,7>, a=<7,4,-3>
+p=<4439,579,-422>, v=<-46,-23,-24>, a=<-10,0,3>
+p=<-2060,11364,-3131>, v=<-39,-107,-127>, a=<6,-14,13>
+p=<6751,672,-9962>, v=<-119,64,97>, a=<-5,-5,12>
+p=<-575,7206,-6068>, v=<-33,-100,13>, a=<3,-7,10>
+p=<2197,2553,-4418>, v=<2,-78,-71>, a=<-4,0,12>
+p=<4045,243,-5342>, v=<31,9,-26>, a=<-9,-1,11>
+p=<358,122,480>, v=<-55,-68,25>, a=<4,8,-8>
+p=<-1021,-158,1908>, v=<156,12,-122>, a=<-11,0,-2>
+p=<939,283,-283>, v=<1,33,-48>, a=<-9,-7,9>
+p=<519,-438,1425>, v=<31,107,-35>, a=<-9,-10,-9>
+p=<904,-641,-388>, v=<-139,54,12>, a=<10,-1,2>
+p=<6864,2454,-491>, v=<65,22,15>, a=<-17,-6,0>
+p=<-272,1750,-3947>, v=<57,11,-9>, a=<-3,-4,8>
+p=<1168,-6842,3589>, v=<78,164,36>, a=<-7,3,-9>
+p=<-2224,4070,-347>, v=<-80,21,-105>, a=<9,-9,7>
+p=<-1872,2102,-875>, v=<41,66,-39>, a=<1,-8,4>
+p=<-5120,-3610,1701>, v=<126,63,-4>, a=<2,3,-3>
+p=<-7936,774,-2043>, v=<115,-74,47>, a=<8,3,1>
+p=<-5770,1949,-1810>, v=<144,-4,67>, a=<16,-10,3>
+p=<1032,524,-993>, v=<66,-119,54>, a=<-12,9,0>
+p=<-241,904,-2703>, v=<23,-39,74>, a=<-1,-1,7>
+p=<1659,-2535,52>, v=<73,32,-11>, a=<-16,10,1>
+p=<-469,790,-214>, v=<-55,97,-77>, a=<8,-14,9>
+p=<-13,-179,356>, v=<31,18,-57>, a=<-3,-1,4>
+p=<899,-312,-2000>, v=<-27,-45,127>, a=<-2,6,-2>
+p=<1545,581,-727>, v=<-11,38,40>, a=<-7,-7,0>
+p=<-3167,1702,-43>, v=<147,49,4>, a=<2,-14,0>
+p=<-526,106,-3919>, v=<8,-17,38>, a=<2,1,17>
+p=<1381,-388,-404>, v=<-175,24,29>, a=<7,2,2>
+p=<-144,-1008,-374>, v=<5,163,59>, a=<2,-12,-4>
+p=<-4344,-3608,1616>, v=<45,54,-4>, a=<6,4,-3>
+p=<-1647,-787,4189>, v=<-10,-53,25>, a=<4,5,-10>
+p=<3965,7621,-1235>, v=<-35,-45,34>, a=<-4,-9,0>
+p=<-6925,-515,4255>, v=<27,33,-26>, a=<9,-1,-5>
+p=<-3361,-7715,-3737>, v=<76,48,122>, a=<1,9,-1>
+p=<4829,5857,-1217>, v=<-96,-107,15>, a=<-2,-3,1>
+p=<1877,-1469,-4079>, v=<-51,41,39>, a=<0,0,4>
+p=<4584,-3664,7121>, v=<124,69,-87>, a=<-17,3,-9>
+p=<4708,-719,1014>, v=<-8,54,-82>, a=<-9,-2,3>
+p=<-4530,3249,1665>, v=<-46,22,73>, a=<12,-8,-8>
+p=<361,-798,851>, v=<-116,55,25>, a=<10,-1,-8>
+p=<-2177,1209,-355>, v=<82,-66,16>, a=<4,0,0>
+p=<784,-573,1544>, v=<-54,52,-23>, a=<1,-2,-7>
+p=<1639,-879,-436>, v=<-73,-121,68>, a=<-2,18,-5>
+p=<1297,1317,-166>, v=<-54,-15,-4>, a=<-2,-6,1>
+p=<3466,1938,-2011>, v=<-70,-78,13>, a=<-13,-3,10>
+p=<-2096,1173,-1561>, v=<11,-83,121>, a=<11,2,-4>
+p=<-548,2163,1724>, v=<-75,-119,-109>, a=<11,0,1>
+p=<469,-2427,1067>, v=<11,3,-63>, a=<-4,14,0>
+p=<919,57,3083>, v=<-33,-78,-118>, a=<-2,8,-6>
+p=<947,-909,986>, v=<-77,0,-36>, a=<1,10,-6>
+p=<609,-857,-925>, v=<-79,73,20>, a=<5,-1,7>
+p=<-4448,-1323,-14360>, v=<54,34,149>, a=<3,0,11>
+p=<1636,4332,-3557>, v=<78,-71,-68>, a=<-6,-2,8>
+p=<-2420,-12321,6739>, v=<2,56,88>, a=<3,13,-13>
+p=<1636,6477,-944>, v=<-42,34,-35>, a=<0,-10,3>
+p=<8812,2148,-5273>, v=<-26,45,96>, a=<-10,-5,2>
+p=<-587,-3195,-14945>, v=<-85,22,84>, a=<5,3,15>
+p=<6394,-3429,3346>, v=<36,88,15>, a=<-10,0,-5>
+p=<-1958,2401,204>, v=<102,-119,-34>, a=<5,-7,3>
+p=<-1090,266,1569>, v=<55,-19,-109>, a=<3,0,0>
+p=<2574,-921,907>, v=<-139,58,-86>, a=<-6,1,3>
+p=<-2718,-298,501>, v=<59,6,-57>, a=<18,2,3>
+p=<-219,-1950,998>, v=<23,94,-40>, a=<-1,6,-4>
+p=<3407,-809,1474>, v=<-116,35,-89>, a=<-17,3,-2>
+p=<-541,-1670,-661>, v=<-14,29,41>, a=<7,12,1>
+p=<-485,451,1803>, v=<-18,-25,-75>, a=<7,-1,-7>
+p=<796,1109,1586>, v=<3,-132,-82>, a=<-8,7,-4>
+p=<5,-438,2104>, v=<22,76,-59>, a=<-3,-6,-12>
+p=<2770,724,137>, v=<-138,8,74>, a=<-8,-8,-11>
+p=<1335,-935,1586>, v=<-133,59,-52>, a=<5,1,-8>
+p=<-600,-494,17>, v=<0,26,-10>, a=<4,0,1>
+p=<-73,1376,-1547>, v=<-13,42,37>, a=<2,-14,6>
+p=<-2198,1750,-1088>, v=<85,-124,10>, a=<5,2,6>
+p=<-955,2741,1118>, v=<87,-214,-96>, a=<0,-6,-1>
+p=<79,398,260>, v=<-1,11,0>, a=<-1,-8,-4>
+p=<-394,112,-873>, v=<90,55,13>, a=<-9,-11,11>
+p=<750,-251,-1390>, v=<-2,-32,72>, a=<-11,9,9>
+p=<-933,-625,-1511>, v=<25,68,77>, a=<10,-2,10>
+p=<-812,673,-1159>, v=<38,-38,153>, a=<6,-4,-8>
+p=<-2490,1276,508>, v=<17,-16,112>, a=<5,-2,-9>
+p=<730,-1902,-4252>, v=<18,-62,21>, a=<-3,9,9>
+p=<-1678,6904,3168>, v=<17,-72,-41>, a=<3,-12,-5>
+p=<-40,-432,-3034>, v=<-56,132,50>, a=<4,-8,4>
+p=<2980,-2943,13263>, v=<-88,-2,-129>, a=<0,5,-15>
+p=<8216,3432,-5165>, v=<-67,-32,-42>, a=<-10,-4,11>
+p=<-2188,11252,-4927>, v=<64,-87,-49>, a=<0,-14,11>
+p=<-2513,-3249,3089>, v=<176,-8,-100>, a=<-6,7,0>
+p=<-5055,223,-4289>, v=<2,24,-22>, a=<10,-2,10>
+p=<-3722,1370,-2274>, v=<7,35,-7>, a=<7,-5,5>
+p=<9201,8581,1004>, v=<-55,-80,114>, a=<-9,-7,-7>
+p=<-315,469,-6640>, v=<-51,-52,-30>, a=<3,2,10>
+p=<5886,-19772,1433>, v=<-70,127,63>, a=<-4,19,-5>
+p=<4716,7333,-7264>, v=<120,12,26>, a=<-12,-10,8>
+p=<2571,4213,-7108>, v=<75,-108,42>, a=<-7,0,7>
+p=<2688,7060,-946>, v=<12,39,-36>, a=<-4,-11,3>
+p=<3195,-4523,-5548>, v=<-41,116,-38>, a=<-2,0,9>
+p=<16182,20203,8375>, v=<-134,-78,-175>, a=<-14,-22,-2>
+p=<-8583,4213,3851>, v=<41,-28,-99>, a=<9,-4,0>
+p=<-29,-291,-717>, v=<-1,26,133>, a=<1,0,-11>
+p=<-1487,-747,-663>, v=<140,90,44>, a=<-2,-4,2>
+p=<-77,-1047,129>, v=<29,63,-48>, a=<-3,4,6>
+p=<1,627,-9>, v=<-62,-5,-4>, a=<10,-7,1>
+p=<-689,225,1479>, v=<28,-4,-89>, a=<5,-2,-5>
+p=<3651,9977,-1851>, v=<-74,-16,28>, a=<-1,-12,1>
+p=<-2004,-10303,2127>, v=<-9,4,-54>, a=<3,13,0>
+p=<1389,4088,-3060>, v=<104,15,-1>, a=<-7,-6,4>
+p=<11256,-2971,-2007>, v=<-129,36,52>, a=<-8,2,0>
+p=<6147,-787,12696>, v=<-98,60,-145>, a=<-3,-2,-9>
+p=<8994,6467,10551>, v=<-51,-186,110>, a=<-9,1,-19>
+p=<2832,3035,2322>, v=<107,62,41>, a=<-9,-7,-5>
+p=<-11559,7286,-5244>, v=<116,-47,-45>, a=<9,-7,9>
+p=<5991,-8704,8679>, v=<-94,-17,-2>, a=<-3,12,-11>
+p=<4718,-4023,8441>, v=<-136,19,-128>, a=<-1,7,-9>
+p=<4625,-861,-1262>, v=<-69,77,73>, a=<-5,-3,-2>
+p=<589,3578,-416>, v=<58,-10,64>, a=<-7,-12,-4>
+p=<1141,-2678,1217>, v=<-50,34,29>, a=<0,7,-7>
+p=<3211,1600,2988>, v=<-44,4,-60>, a=<-8,-6,-6>
+p=<-2056,-33,-1727>, v=<5,51,13>, a=<7,-4,5>
+p=<-3476,6358,-3757>, v=<96,49,73>, a=<1,-16,3>
+p=<2476,-4275,-99>, v=<64,40,-29>, a=<-9,6,2>
+p=<9885,2111,1265>, v=<-47,-86,-41>, a=<-17,1,0>
+p=<-10544,1150,955>, v=<132,121,-31>, a=<13,-10,0>
+p=<-717,-338,-6640>, v=<-41,57,54>, a=<4,-3,10>
+p=<-1306,3785,-502>, v=<-22,-124,-32>, a=<4,0,3>
+p=<-3941,-2105,-5090>, v=<79,-62,-12>, a=<3,8,11>
+p=<-3352,4405,-4067>, v=<108,-32,67>, a=<0,-7,4>
+p=<403,-1972,-1042>, v=<-28,84,-34>, a=<1,-1,5>
+p=<2153,884,-496>, v=<11,69,-68>, a=<-6,-7,6>
+p=<-264,-3603,2640>, v=<26,104,-76>, a=<-1,0,0>
+p=<-754,4587,1100>, v=<22,-58,4>, a=<0,-4,-2>
+p=<4321,-3078,-6425>, v=<93,125,-33>, a=<-12,-2,12>
+p=<-1419,387,-8280>, v=<41,26,92>, a=<0,-2,8>
+p=<681,4902,3760>, v=<-55,-49,0>, a=<2,-5,-6>
+p=<1451,-7348,-10450>, v=<-59,-5,118>, a=<1,12,10>
+p=<4286,2802,-7265>, v=<-122,83,-45>, a=<0,-9,14>
+p=<1337,5510,-5238>, v=<7,-83,58>, a=<-3,-6,7>
+p=<6297,1232,8216>, v=<-89,-25,-184>, a=<-7,-1,-5>
+p=<787,3206,2183>, v=<42,-63,4>, a=<-5,-4,-6>
+p=<-941,3017,-3568>, v=<8,-112,147>, a=<2,0,-1>
+p=<4027,3557,-679>, v=<-134,-104,68>, a=<-1,-2,-3>
+p=<4864,-1438,-2137>, v=<31,67,-46>, a=<-15,-1,9>
+p=<325,164,754>, v=<-74,3,-4>, a=<7,-4,-13>
+p=<610,524,-201>, v=<-75,-22,20>, a=<2,-6,0>
+p=<-215,224,699>, v=<-9,-36,-15>, a=<5,2,-10>
+p=<-495,1334,-1331>, v=<30,-136,133>, a=<3,0,0>
+p=<-390,-6,-861>, v=<25,9,130>, a=<2,-2,-8>
+p=<-595,729,-116>, v=<-4,-59,6>, a=<11,-3,1>
+p=<1360,804,-56>, v=<-139,-72,0>, a=<0,-2,1>
+p=<90,359,-591>, v=<-78,11,92>, a=<12,-9,-6>
+p=<-620,-1566,-231>, v=<48,99,23>, a=<2,10,0>
+p=<-1355,1069,-1321>, v=<94,-126,110>, a=<7,3,4>
+p=<699,-1699,-4607>, v=<5,86,93>, a=<-3,-1,9>
+p=<2056,3131,-329>, v=<-90,8,-141>, a=<0,-12,13>
+p=<-3602,1291,407>, v=<36,-44,-53>, a=<10,-1,3>
+p=<-267,2717,-1870>, v=<83,-142,82>, a=<-6,2,0>
+p=<-704,1636,3903>, v=<6,-47,-109>, a=<2,-2,-5>
+p=<-1946,1429,1626>, v=<0,22,-70>, a=<7,-7,0>
+p=<156,4594,673>, v=<33,8,-18>, a=<-2,-7,0>
+p=<3116,1597,3966>, v=<-28,-6,-31>, a=<-3,-2,-4>
+p=<10812,5334,1672>, v=<-27,-126,-64>, a=<-14,-1,1>
+p=<1414,524,2190>, v=<75,23,131>, a=<-6,-2,-10>
+p=<5336,9663,-6357>, v=<26,-91,58>, a=<-9,-9,6>
+p=<4300,-438,-12758>, v=<73,-46,22>, a=<-10,3,17>
+p=<3967,-3546,-918>, v=<-70,0,44>, a=<-2,5,-1>
+p=<6224,10440,3670>, v=<-112,78,-23>, a=<-3,-19,-4>
+p=<7334,2707,1783>, v=<-66,-55,-48>, a=<-7,-1,0>
+p=<1007,10514,-3175>, v=<-47,-19,86>, a=<1,-14,0>
+p=<-2289,2879,3134>, v=<87,43,-47>, a=<-1,-8,-3>
+p=<1279,9407,-6930>, v=<157,-194,53>, a=<-12,-6,10>
+p=<943,-8481,-1938>, v=<-80,35,-4>, a=<3,14,4>
+p=<-7969,4127,-738>, v=<50,37,-58>, a=<12,-10,5>
+p=<2019,1112,5886>, v=<-99,-85,-7>, a=<2,3,-13>
+p=<4861,6767,-4438>, v=<-137,5,34>, a=<-2,-16,8>
+p=<6427,909,3218>, v=<-56,72,10>, a=<-11,-7,-8>
+p=<1758,2446,-4960>, v=<45,-146,112>, a=<-7,4,4>
+p=<4165,-1469,2000>, v=<-128,124,-128>, a=<-1,-5,4>
+p=<1113,-1854,63>, v=<-47,6,-29>, a=<-3,13,3>
+p=<-1495,-30,2031>, v=<65,28,-84>, a=<3,-3,-5>
+p=<-1055,-998,1583>, v=<-39,148,-56>, a=<12,-10,-5>
+p=<-2071,-654,2647>, v=<135,-1,-216>, a=<-1,5,6>
+p=<769,10,2767>, v=<-51,0,-11>, a=<0,0,-19>
+p=<-1047,3450,943>, v=<20,-45,-16>, a=<5,-20,-5>
+p=<-679,-814,1511>, v=<31,-59,-94>, a=<1,13,0>
+p=<17,-1334,-273>, v=<-4,-18,-42>, a=<0,12,7>
+p=<521,802,-1201>, v=<7,27,84>, a=<-5,-9,-1>
+p=<1041,-686,-737>, v=<-68,69,106>, a=<0,-3,-7>
+p=<5465,-618,2857>, v=<-66,17,-74>, a=<-4,0,0>
+p=<4344,-1207,-15402>, v=<-134,91,75>, a=<1,-3,17>
+p=<-1375,-181,-4002>, v=<-3,-14,87>, a=<2,1,1>
+p=<15288,-9263,3256>, v=<-71,69,-26>, a=<-17,9,-3>
+p=<-6733,-6755,2914>, v=<21,120,22>, a=<8,3,-5>
+p=<88,1567,8025>, v=<17,18,-54>, a=<-1,-3,-8>
+p=<2026,1168,-2577>, v=<-34,-30,30>, a=<-1,0,2>
+p=<-104,1351,-1305>, v=<59,-36,-21>, a=<-4,-1,5>
+p=<2137,1108,-738>, v=<-52,-55,28>, a=<-2,1,0>
+p=<3730,-2807,5013>, v=<29,90,-73>, a=<-12,1,-8>
+p=<2299,-971,1341>, v=<-86,78,-49>, a=<0,-3,0>
+p=<-939,-4363,2031>, v=<35,140,-73>, a=<0,1,0>
+p=<265,2329,5083>, v=<-66,-41,-95>, a=<4,-3,-6>
+p=<-1009,-261,8765>, v=<52,-21,-38>, a=<-1,2,-19>
+p=<2393,1125,2717>, v=<-84,-56,-83>, a=<0,1,-1>
+p=<1035,1125,-3989>, v=<8,2,84>, a=<-3,-3,4>
+p=<-85,4961,7253>, v=<-39,-164,-71>, a=<3,-1,-13>
+p=<6201,-3075,7757>, v=<-191,123,-60>, a=<-2,-1,-15>
+p=<300,-160,-566>, v=<-5,-6,-76>, a=<-2,2,15>
+p=<2281,-1672,-706>, v=<-124,42,84>, a=<-5,10,-5>
+p=<-2836,323,-251>, v=<159,-3,44>, a=<6,-3,-4>
+p=<2169,-573,-706>, v=<-71,31,54>, a=<-11,1,-1>
+p=<1511,-1259,1527>, v=<-9,95,-38>, a=<-13,-1,-10>
+p=<-330,-937,-2071>, v=<-50,-18,84>, a=<10,11,8>
+p=<13,386,1457>, v=<-7,15,-108>, a=<1,-6,0>
+p=<-953,1163,1331>, v=<-28,-33,-144>, a=<13,-7,6>
+p=<-799,-1490,246>, v=<126,149,1>, a=<-9,-6,-3>
+p=<90,-930,1177>, v=<10,64,-43>, a=<-2,0,-6>
+p=<-1763,-994,1921>, v=<95,80,12>, a=<0,-3,-11>
+p=<-1155,-709,-834>, v=<73,-25,67>, a=<-1,6,-2>
+p=<1429,-405,1959>, v=<-33,79,-90>, a=<-4,-6,-1>
+p=<4418,1330,2934>, v=<-78,-60,33>, a=<-4,1,-8>
+p=<-3239,4306,-1902>, v=<57,52,93>, a=<3,-12,-2>
+p=<-2929,-5149,4949>, v=<-65,-11,-160>, a=<10,11,0>
+p=<-511,-778,-6149>, v=<-47,40,22>, a=<4,-1,11>
+p=<5162,4306,-2677>, v=<-38,-188,38>, a=<-8,3,3>
+p=<-1631,-8674,2819>, v=<130,172,-108>, a=<-5,12,0>
+p=<-1761,3091,-1250>, v=<0,-105,8>, a=<5,-1,3>
+p=<-1631,-42,-7022>, v=<-32,110,122>, a=<7,-8,11>
+p=<150,-5333,3664>, v=<-33,3,8>, a=<2,15,-11>
+p=<6923,-3578,-418>, v=<-118,165,57>, a=<-11,-2,-3>
+p=<8873,5795,-5189>, v=<-166,-128,119>, a=<-13,-7,6>
+p=<-2125,2103,-2628>, v=<41,-40,115>, a=<3,-3,-1>
+p=<-2543,858,5229>, v=<21,-7,-67>, a=<3,-1,-5>
+p=<-4668,3476,-3917>, v=<-74,-84,132>, a=<12,-1,-1>
+p=<-8357,6332,-7793>, v=<17,-63,36>, a=<13,-7,11>
+p=<3125,665,3538>, v=<-65,-76,-2>, a=<-1,3,-5>
+p=<-6384,-14838,5203>, v=<59,58,-104>, a=<6,18,-2>
+p=<-908,3810,-1753>, v=<-51,67,8>, a=<4,-9,2>
+p=<-1722,-6180,-6082>, v=<-48,-43,49>, a=<5,11,6>
+p=<-3054,1368,-4565>, v=<83,-38,-49>, a=<0,0,9>
+p=<-2373,1080,365>, v=<-31,-24,53>, a=<12,-2,-6>
+p=<-4430,2169,-614>, v=<51,53,86>, a=<13,-13,-5>
+p=<-924,-3134,591>, v=<79,-14,-49>, a=<-3,18,2>
+p=<-1874,514,-3988>, v=<-1,-26,32>, a=<10,0,18>
+p=<-145,-1747,4486>, v=<8,43,-114>, a=<0,5,-12>
+p=<653,-2032,2320>, v=<-34,108,-70>, a=<0,0,-5>
+p=<881,2243,1294>, v=<-6,-37,-26>, a=<-4,-8,-4>
+p=<-2425,-1101,-1480>, v=<88,-11,70>, a=<4,7,1>
+p=<-2919,1578,1256>, v=<194,-32,46>, a=<-4,-5,-11>
+p=<-2634,856,2320>, v=<-1,-24,-50>, a=<14,-2,-7>
+p=<144,-1759,161>, v=<26,100,-4>, a=<-6,7,-2>
+p=<1464,-673,437>, v=<-32,55,-27>, a=<-14,0,-2>
+p=<72,1133,65>, v=<-20,-37,4>, a=<2,-9,-2>
+p=<-444,-943,-577>, v=<75,19,-53>, a=<-6,9,15>
+p=<-4278,-11885,3366>, v=<-11,163,56>, a=<7,9,-8>
+p=<3984,5233,8190>, v=<0,76,-4>, a=<-6,-12,-12>
+p=<5460,-4091,8892>, v=<-41,39,-5>, a=<-6,4,-13>
+p=<150,-2147,1692>, v=<-60,-52,-27>, a=<3,6,-1>
+p=<-2874,1183,-576>, v=<61,133,-75>, a=<1,-9,5>
+p=<-1956,-1103,1656>, v=<128,104,11>, a=<-4,-4,-3>
+p=<186,-3893,4752>, v=<50,15,-38>, a=<-3,5,-5>
+p=<-591,7845,4320>, v=<-13,-93,-43>, a=<2,-10,-6>
+p=<1889,-5082,-1012>, v=<-29,148,-63>, a=<-2,1,6>
+p=<1858,3040,-2283>, v=<100,-34,74>, a=<-10,-4,0>
+p=<-3691,1862,-299>, v=<103,132,-102>, a=<1,-12,7>
+p=<-6853,2141,1592>, v=<109,-53,13>, a=<7,-1,-4>
+p=<6663,1769,9497>, v=<-55,23,-146>, a=<-10,-5,-10>
+p=<-5309,-4880,2885>, v=<105,126,4>, a=<3,1,-5>
+p=<3021,-8416,6149>, v=<-70,125,-22>, a=<-1,7,-9>
+p=<3949,1547,1981>, v=<-5,21,84>, a=<-11,-6,-12>
+p=<5093,156,1487>, v=<-76,-47,22>, a=<-9,3,-6>
+p=<6094,2899,-5455>, v=<-74,-112,127>, a=<-12,0,6>
+p=<6523,-4615,395>, v=<-131,96,-17>, a=<-9,6,0>
+p=<-2486,1820,-2023>, v=<94,-84,130>, a=<0,1,-4>
+p=<-4028,1467,2219>, v=<128,-43,-17>, a=<10,-4,-11>
+p=<-1472,531,-5062>, v=<-14,9,150>, a=<10,-4,14>
+p=<-608,-954,-1948>, v=<-43,6,110>, a=<8,5,0>
+p=<-3921,1247,5039>, v=<-33,-106,51>, a=<9,4,-12>
+p=<-9267,1214,-175>, v=<61,14,-80>, a=<13,-3,5>
+p=<2646,4481,-6313>, v=<23,-34,-64>, a=<-6,-6,15>
+p=<996,-2548,-3145>, v=<-63,-93,61>, a=<2,10,2>
+p=<-786,-6277,-373>, v=<-26,-14,-40>, a=<3,12,3>
+p=<-2898,-8323,-2122>, v=<157,150,47>, a=<-4,6,1>
+p=<4098,9167,-2617>, v=<-89,-57,113>, a=<-2,-13,-2>
+p=<-225,1808,3752>, v=<42,13,-63>, a=<-2,-4,-3>
+p=<-4219,1852,5263>, v=<73,-68,-70>, a=<6,0,-9>
+p=<-4597,-119,6667>, v=<101,33,-80>, a=<5,-2,-12>
+p=<4637,-3521,2887>, v=<-157,-93,-108>, a=<-1,16,0>
+p=<1505,-4304,538>, v=<-41,62,7>, a=<-1,7,-2>
+p=<-4737,3953,180>, v=<127,-44,-8>, a=<9,-13,0>
+p=<-2154,-1066,-4440>, v=<81,-3,179>, a=<2,5,3>
+p=<2025,-457,4380>, v=<-8,-109,-87>, a=<-8,12,-11>
+p=<870,1916,1125>, v=<-118,-2,-31>, a=<7,-8,-2>
+p=<-33,1076,4338>, v=<-9,-94,-195>, a=<1,4,-1>
+p=<3726,1664,-1143>, v=<-122,43,-22>, a=<-5,-11,7>
+p=<-3855,-142,3645>, v=<85,-14,-19>, a=<9,2,-14>
+p=<-3330,-268,-975>, v=<137,-96,36>, a=<2,10,1>
+p=<3096,4079,2280>, v=<-4,-105,-20>, a=<-13,-8,-8>
+p=<738,943,775>, v=<-36,0,-63>, a=<-7,-16,-2>
+p=<-437,-727,-595>, v=<54,123,63>, a=<-2,-8,0>
+p=<633,-157,-1665>, v=<-86,-33,170>, a=<4,10,0>
+p=<-312,-262,-110>, v=<-8,49,-13>, a=<7,-3,5>
+p=<-897,1478,-1095>, v=<67,-92,113>, a=<4,-9,0>
+p=<548,-502,880>, v=<-61,73,-101>, a=<1,-3,3>
+p=<-957,-77,-260>, v=<18,3,-20>, a=<14,2,9>
+p=<23,-1767,370>, v=<-25,128,-50>, a=<4,10,3>
+p=<9335,-1502,-1376>, v=<-94,46,109>, a=<-12,0,-4>
+p=<-89,-8910,-1472>, v=<19,162,13>, a=<-1,7,2>
+p=<1431,402,7824>, v=<-45,-30,-30>, a=<0,1,-13>
+p=<3607,-1854,-3216>, v=<-80,90,-15>, a=<-2,-2,7>
+p=<-1431,-1856,4713>, v=<-152,52,-127>, a=<10,0,0>
+p=<1418,-8072,-4870>, v=<56,30,132>, a=<-5,10,0>
+p=<-5020,-6592,-2539>, v=<21,-67,12>, a=<6,13,3>
+p=<1418,6284,-4574>, v=<-20,-16,-85>, a=<-1,-8,11>
+p=<-1357,3879,-11493>, v=<36,30,-31>, a=<0,-7,18>
+p=<4779,-2196,-6490>, v=<34,-13,-96>, a=<-9,4,15>
+p=<405,8280,-820>, v=<63,-82,135>, a=<-4,-8,-6>
+p=<-4347,2178,890>, v=<84,-42,-153>, a=<2,-1,7>
+p=<7425,936,6740>, v=<-21,11,-1>, a=<-10,-2,-10>
+p=<2030,-6060,5989>, v=<-94,68,9>, a=<2,5,-9>
+p=<-3113,1562,-3557>, v=<121,-62,20>, a=<-2,1,4>
+p=<15387,8111,-3927>, v=<-132,-11,-27>, a=<-15,-11,7>
+p=<1105,-12905,-1522>, v=<-31,139,-16>, a=<0,11,3>
+p=<-13843,4300,957>, v=<50,-22,12>, a=<17,-5,-2>
+p=<1364,970,-338>, v=<-38,-46,-67>, a=<0,1,4>
+p=<328,-9020,11539>, v=<-67,-23,-160>, a=<3,14,-8>
+p=<1441,1858,-3933>, v=<-114,-33,72>, a=<4,-1,2>
+p=<-12401,-6674,-9819>, v=<67,19,69>, a=<15,9,11>
+p=<5095,6196,567>, v=<25,-24,-16>, a=<-9,-8,0>
+p=<-4751,-4964,10125>, v=<21,27,-152>, a=<6,6,-7>
+p=<-1546,-4772,-2286>, v=<41,141,-34>, a=<1,2,8>
+p=<6784,-1538,4434>, v=<-126,-76,-129>, a=<-8,9,-2>
+p=<-1896,4454,-2356>, v=<68,-58,70>, a=<0,-7,1>
+p=<4166,296,2040>, v=<-47,-11,0>, a=<-7,0,-5>
+p=<-7306,-125,-3525>, v=<148,-33,50>, a=<11,3,7>
+p=<-4356,-8500,-3550>, v=<69,68,168>, a=<8,21,-2>
+p=<1044,-225,-1950>, v=<-95,23,39>, a=<4,-1,3>
+p=<-617,666,-1168>, v=<-14,-32,45>, a=<4,0,1>
+p=<5515,5664,-1714>, v=<-141,-83,71>, a=<-11,-17,1>
+p=<1735,-1329,-1084>, v=<50,96,52>, a=<-12,-3,0>
+p=<1101,-5305,-338>, v=<-82,-26,-62>, a=<3,14,5>
+p=<6843,1974,-4137>, v=<5,-37,-51>, a=<-16,-2,13>
+p=<-206,-91,-1046>, v=<110,-61,68>, a=<-15,12,4>
+p=<520,877,175>, v=<8,-47,-49>, a=<-9,-5,5>
+p=<520,-795,65>, v=<-112,-9,-15>, a=<11,14,1>
+p=<597,-608,-1046>, v=<-101,10,86>, a=<8,8,1>
+p=<-1702,-190,230>, v=<138,2,54>, a=<3,3,-13>
+p=<465,-1136,-1321>, v=<-29,58,87>, a=<-2,8,5>
+p=<-1152,-487,-331>, v=<94,71,39>, a=<2,-4,-2>
+p=<-1733,-1423,-1483>, v=<-61,121,34>, a=<10,-5,2>
+p=<-3583,-148,-2933>, v=<78,-8,27>, a=<5,1,7>
+p=<1292,-548,1717>, v=<-39,125,-16>, a=<-1,-8,-4>
+p=<-333,2677,842>, v=<91,-4,-33>, a=<-6,-8,0>
+p=<1542,4377,1792>, v=<-114,32,20>, a=<4,-16,-7>
+p=<2192,402,-2183>, v=<16,22,36>, a=<-8,-3,4>
+p=<1792,102,3467>, v=<32,-57,-125>, a=<-8,4,-1>
+p=<17,2502,1642>, v=<25,29,-78>, a=<-2,-10,1>
+p=<158,-2993,164>, v=<-42,8,-3>, a=<2,4,0>
+p=<4820,-3011,2756>, v=<-5,-10,36>, a=<-7,5,-6>
+p=<-3151,-4516,-1216>, v=<118,172,1>, a=<3,4,5>
+p=<-1324,1385,-1867>, v=<-46,1,54>, a=<10,-6,3>
+p=<-4012,1028,-2329>, v=<93,40,54>, a=<9,-8,5>
+p=<524,-3697,1829>, v=<31,56,32>, a=<-5,11,-11>
+p=<-7847,-3949,10230>, v=<-49,45,-93>, a=<13,3,-9>
+p=<-969,-3322,-12874>, v=<-152,-69,203>, a=<9,8,7>
+p=<-4579,2131,-1113>, v=<-57,41,69>, a=<9,-5,-2>
+p=<-1140,-6286,-9758>, v=<67,126,121>, a=<-2,2,7>
+p=<399,-8775,5271>, v=<7,16,-99>, a=<-1,11,-2>
+p=<-1390,-740,258>, v=<152,-4,-23>, a=<-6,9,1>
+p=<2276,-2742,11>, v=<-172,213,59>, a=<0,0,-8>
+p=<1522,-714,63>, v=<-107,-62,-1>, a=<-1,17,0>
+p=<-948,1236,492>, v=<-36,-86,8>, a=<16,-1,-6>
+p=<-350,-1195,895>, v=<-68,24,5>, a=<14,10,-10>
+p=<-662,1392,-106>, v=<61,-14,-30>, a=<-1,-13,6>
+p=<2744,547,1090>, v=<-82,-82,-52>, a=<-18,6,-4>
+p=<-714,508,-886>, v=<44,-79,44>, a=<2,6,4>
+p=<91,79,957>, v=<-26,53,12>, a=<3,-10,-17>
+p=<-96,1014,-1573>, v=<3,-80,140>, a=<1,-2,0>
+p=<-393,827,55>, v=<48,-63,-8>, a=<-2,-2,0>
+p=<872,-559,583>, v=<-49,57,-8>, a=<-5,-1,-8>
+p=<-30,673,231>, v=<-57,-61,-60>, a=<10,0,6>
+p=<-613,-702,1793>, v=<2,88,-70>, a=<9,-4,-16>
+p=<663,596,-253>, v=<-48,-90,26>, a=<-2,6,-1>
+p=<-394,705,481>, v=<4,30,-34>, a=<3,-10,0>
+p=<61,-1297,-1430>, v=<84,38,50>, a=<-12,8,7>
+p=<-233,1909,-163>, v=<15,-131,-33>, a=<0,0,6>
+p=<-870,348,2105>, v=<83,-42,-45>, a=<-3,3,-14>
+p=<1664,285,1755>, v=<-113,45,-35>, a=<-1,-8,-12>
+p=<-1269,1545,-415>, v=<89,-60,-30>, a=<0,-6,8>
+p=<-534,-261,1293>, v=<-1,-21,-92>, a=<5,6,0>
+p=<-135,-121,-2557>, v=<-7,44,93>, a=<2,-4,12>
+p=<1223,-415,292>, v=<-74,35,-28>, a=<-2,0,1>
+p=<824,-1430,922>, v=<-68,115,-73>, a=<1,-1,1>
+p=<-640,2303,-1594>, v=<-90,328,-227>, a=<5,-25,15>
+p=<-1065,354,-3254>, v=<-152,47,-462>, a=<10,-3,31>
+p=<2462,751,1569>, v=<346,107,226>, a=<-22,-7,-14>
+p=<-106,-2052,-2044>, v=<-16,-295,-290>, a=<4,15,15>
+p=<-2837,147,1838>, v=<-406,22,262>, a=<24,-6,-22>
+p=<2592,-1392,-608>, v=<374,-198,-87>, a=<-23,12,7>
+p=<1813,1582,-1758>, v=<259,229,-248>, a=<-18,-17,14>
+p=<-1899,1420,658>, v=<-267,200,92>, a=<16,-16,-11>
+p=<1208,-1527,-1923>, v=<172,-215,-275>, a=<-16,10,16>
+p=<2156,-2278,169>, v=<307,-326,27>, a=<-21,22,-1>
+p=<1056,-798,-2596>, v=<147,-116,-372>, a=<-9,7,28>
+p=<-1199,620,2328>, v=<-171,88,326>, a=<14,1,-26>
+p=<-2396,-657,2316>, v=<-338,-95,329>, a=<24,6,-22>
+p=<-824,587,-2484>, v=<-121,82,-353>, a=<8,-2,28>
+p=<1659,739,-2320>, v=<235,105,-333>, a=<-18,-8,23>
+p=<-2673,-573,489>, v=<-379,-75,67>, a=<25,5,0>
+p=<-1570,-2486,60>, v=<-229,-357,7>, a=<14,29,-2>
+p=<-2626,179,257>, v=<-375,24,38>, a=<23,-1,-4>
+p=<849,-331,-2900>, v=<120,-49,-417>, a=<-8,0,31>
+p=<645,1229,2673>, v=<89,177,376>, a=<-6,-14,-28>
+p=<-1480,-2064,-361>, v=<-211,-295,-55>, a=<14,21,5>
+p=<-2665,43,1552>, v=<-381,6,223>, a=<30,3,-17>
+p=<-1459,51,2649>, v=<-202,7,371>, a=<13,-3,-21>
+p=<-1482,-2729,-452>, v=<-211,-391,-64>, a=<14,24,4>
+p=<1608,2630,144>, v=<228,371,14>, a=<-16,-26,4>
+p=<1165,499,2876>, v=<163,71,411>, a=<-12,-9,-30>
+p=<2642,-695,-895>, v=<383,-101,-127>, a=<-23,1,4>
+p=<-2614,-864,-1341>, v=<-370,-122,-187>, a=<26,8,10>
+p=<-1044,729,-2321>, v=<-151,103,-328>, a=<5,-7,22>
+p=<-1018,-916,-2755>, v=<-145,-129,-388>, a=<5,8,23>
+p=<-3177,847,960>, v=<-456,120,143>, a=<30,-8,-2>
+p=<1358,1463,-2332>, v=<194,215,-332>, a=<-15,-12,23>
+p=<-1230,-3445,-695>, v=<-178,-496,-100>, a=<9,34,8>
+p=<284,229,2992>, v=<41,34,427>, a=<-4,-2,-30>
+p=<-1398,-1284,-2531>, v=<-195,-185,-358>, a=<12,18,30>
+p=<280,1690,-1795>, v=<41,241,-252>, a=<-4,-16,19>
+p=<-1556,637,2590>, v=<-215,94,374>, a=<15,-3,-25>
+p=<1970,-1629,2345>, v=<282,-237,335>, a=<-14,13,-29>
+p=<624,-2660,-1245>, v=<92,-377,-177>, a=<-6,27,12>
+p=<2472,-1297,-1889>, v=<352,-187,-272>, a=<-21,11,21>
+p=<1475,-2024,-2192>, v=<216,-292,-316>, a=<-19,18,22>
+p=<2316,-1953,720>, v=<327,-284,103>, a=<-25,21,-5>
+p=<-1493,692,-3102>, v=<-213,100,-443>, a=<14,-7,27>
+p=<1825,1169,2010>, v=<263,164,287>, a=<-18,-10,-16>
+p=<132,-416,2718>, v=<18,-59,390>, a=<-2,7,-26>
+p=<-3328,-231,203>, v=<-477,-34,36>, a=<31,4,-4>
+p=<-1458,911,-2505>, v=<-208,128,-357>, a=<16,-9,26>
+p=<-232,2726,-1244>, v=<-34,389,-177>, a=<-3,-28,9>
+p=<-2076,-2126,878>, v=<-297,-304,128>, a=<21,23,-10>
+p=<3071,-1789,-978>, v=<444,-255,-139>, a=<-32,15,6>
+p=<470,1352,2371>, v=<69,192,338>, a=<-1,-14,-19>
+p=<-366,2757,334>, v=<-51,394,48>, a=<3,-23,-2>
+p=<142,3704,-779>, v=<23,528,-111>, a=<-4,-35,6>
+p=<-2560,678,-902>, v=<-365,96,-128>, a=<26,-4,10>
+p=<-799,-1439,1718>, v=<-115,-205,245>, a=<2,16,-16>
+p=<252,-205,2964>, v=<36,-31,420>, a=<-3,2,-29>
+p=<1111,-2850,-712>, v=<159,-409,-107>, a=<-10,28,8>
+p=<-460,2649,-1121>, v=<-67,382,-159>, a=<7,-32,15>
+p=<3050,-961,419>, v=<434,-142,58>, a=<-31,13,-4>
+p=<-690,583,3314>, v=<-98,86,474>, a=<8,-6,-34>
+p=<1533,1358,-2236>, v=<218,195,-319>, a=<-15,-12,23>
+p=<2116,1539,1334>, v=<296,223,196>, a=<-23,-12,-16>
+p=<-480,-2566,1780>, v=<-70,-372,250>, a=<5,19,-14>
+p=<-157,-2633,1171>, v=<-20,-380,163>, a=<0,30,-8>
+p=<-551,2588,-222>, v=<-81,366,-28>, a=<11,-23,-1>
+p=<-2411,917,589>, v=<-341,131,85>, a=<24,-8,-6>
+p=<-889,-2793,-844>, v=<-130,-400,-122>, a=<12,24,8>
+p=<1520,-2712,-490>, v=<219,-383,-68>, a=<-12,27,6>
+p=<-1591,-1155,1957>, v=<-228,-169,282>, a=<14,15,-18>
+p=<-2439,1395,-500>, v=<-347,199,-73>, a=<28,-12,5>
+p=<-1337,172,-2489>, v=<-187,23,-355>, a=<18,3,23>
+p=<316,-2188,1642>, v=<42,-313,230>, a=<-3,21,-17>
+p=<-165,1828,-2025>, v=<-19,258,-292>, a=<1,-16,18>
+p=<-1747,1095,1978>, v=<-244,154,284>, a=<18,-12,-25>
+p=<-2666,540,-1200>, v=<-379,80,-168>, a=<25,1,8>
+p=<1683,-834,-1770>, v=<240,-119,-252>, a=<-16,5,18>
+p=<-2653,450,-388>, v=<-382,65,-56>, a=<31,3,7>
+p=<2146,-2673,-252>, v=<307,-382,-35>, a=<-25,26,-1>
+p=<-496,-2646,1797>, v=<-73,-379,258>, a=<3,24,-16>
+p=<1530,360,-3009>, v=<217,48,-423>, a=<-15,-1,30>
+p=<-640,-802,-2660>, v=<-88,-114,-376>, a=<7,7,28>
+p=<-811,1540,-2260>, v=<-116,218,-322>, a=<1,-12,22>
+p=<-2796,1328,-710>, v=<-396,191,-100>, a=<27,-13,7>
+p=<129,472,2813>, v=<24,63,404>, a=<4,-2,-26>
+p=<-1420,-2470,-1046>, v=<-201,-355,-153>, a=<21,18,6>
+p=<2451,808,-944>, v=<347,115,-138>, a=<-24,-6,11>
+p=<-40,2324,-1830>, v=<-3,330,-266>, a=<-1,-17,18>
+p=<-82,3079,1442>, v=<-10,440,210>, a=<0,-26,-10>
+p=<2698,-1471,-783>, v=<379,-209,-112>, a=<-26,16,9>
+p=<2894,-1493,-387>, v=<412,-213,-57>, a=<-28,14,-3>
+p=<1417,2516,-12>, v=<198,358,2>, a=<-17,-23,-2>
+p=<747,2897,-1186>, v=<106,417,-165>, a=<-7,-33,15>
+p=<-4,2281,-2417>, v=<-4,328,-340>, a=<6,-23,31>
+p=<1737,-1461,2393>, v=<243,-202,335>, a=<-13,18,-30>
+p=<-902,1843,-2360>, v=<-130,264,-337>, a=<11,-15,25>
+p=<-1582,20,-1857>, v=<-227,-1,-263>, a=<14,-1,23>
+p=<-1830,629,-1964>, v=<-258,85,-278>, a=<10,-8,17>
+p=<-2085,1038,-866>, v=<-292,149,-127>, a=<21,-10,8>
+p=<-1186,2355,1683>, v=<-169,335,243>, a=<11,-23,-16>
+p=<-2259,248,-2209>, v=<-324,35,-314>, a=<22,0,21>
+p=<-1283,-2116,1398>, v=<-186,-301,202>, a=<7,19,-21>
+p=<-645,-3178,1278>, v=<-90,-449,181>, a=<6,26,-15>
+p=<-1736,-2087,-1254>, v=<-249,-297,-181>, a=<17,19,14>
+p=<183,-1786,-1791>, v=<26,-249,-259>, a=<-1,19,17>
+p=<2465,-1286,-188>, v=<355,-185,-26>, a=<-24,12,4>
+p=<234,-1280,-2961>, v=<29,-180,-419>, a=<-2,13,25>
+p=<1084,1772,-2323>, v=<151,254,-331>, a=<-10,-15,23>
+p=<-33,-757,2842>, v=<-7,-110,407>, a=<1,7,-27>
+p=<-62,223,-2854>, v=<-6,30,-407>, a=<4,-2,29>
+p=<-1939,-2234,-470>, v=<-276,-318,-65>, a=<18,23,6>
+p=<-1064,-2485,1011>, v=<-154,-357,141>, a=<10,28,-5>
+p=<-2793,-281,1074>, v=<-400,-36,156>, a=<25,2,-9>
+p=<-2153,1885,362>, v=<-301,274,50>, a=<19,-19,0>
+p=<-1097,2219,-1431>, v=<-157,314,-207>, a=<11,-22,12>
+p=<1795,-2653,694>, v=<256,-382,99>, a=<-18,29,-6>
+p=<-1706,2021,-841>, v=<-238,287,-120>, a=<17,-25,10>
+p=<-163,-1743,1795>, v=<-26,-252,258>, a=<1,17,-17>
+p=<1425,1729,977>, v=<202,243,138>, a=<-13,-17,-10>
+p=<648,2109,-994>, v=<90,303,-143>, a=<-3,-19,14>
+p=<-1738,468,1971>, v=<-249,65,278>, a=<18,0,-20>
+p=<1045,1218,2731>, v=<148,175,394>, a=<-8,-11,-27>
+p=<-540,1940,-2022>, v=<-77,280,-283>, a=<5,-21,17>
+p=<-2979,1549,-239>, v=<-430,222,-34>, a=<27,-21,0>
+p=<-2598,-2175,-183>, v=<-374,-314,-26>, a=<21,19,2>
+p=<-1391,2880,-1142>, v=<-195,410,-163>, a=<9,-28,12>
+p=<-1253,-1245,2513>, v=<-182,-173,362>, a=<12,13,-22>
+p=<771,75,2400>, v=<104,11,342>, a=<-7,4,-25>
+p=<468,988,-2854>, v=<67,143,-403>, a=<1,-13,25>
+p=<-1290,2001,1041>, v=<-180,286,148>, a=<12,-22,-8>
+p=<11,-1463,2584>, v=<-4,-215,375>, a=<0,13,-30>
+p=<1672,-2459,-1046>, v=<233,-348,-149>, a=<-21,24,15>
+p=<-1973,2358,-291>, v=<-279,338,-37>, a=<21,-23,1>
+p=<327,-2775,2079>, v=<49,-396,298>, a=<-4,32,-24>
+p=<-2260,400,-2962>, v=<-327,56,-422>, a=<22,-8,28>
+p=<-431,-282,3083>, v=<-61,-39,440>, a=<1,5,-24>
+p=<-2378,1821,-1219>, v=<-331,261,-174>, a=<14,-22,18>
+p=<187,2556,-1007>, v=<26,368,-146>, a=<-2,-24,10>
+p=<1417,-2451,289>, v=<199,-350,40>, a=<-19,25,-3>
+p=<-2105,292,2336>, v=<-295,42,329>, a=<22,-1,-23>
+p=<1397,2026,1405>, v=<200,289,200>, a=<-8,-19,-11>
+p=<2364,323,-382>, v=<341,49,-58>, a=<-21,-6,4>
+p=<-256,-3019,633>, v=<-36,-430,90>, a=<2,35,-5>
+p=<3025,-164,1078>, v=<429,-21,153>, a=<-29,1,-9>
+p=<2723,-2091,-29>, v=<388,-297,-3>, a=<-29,16,-2>
+p=<197,709,2512>, v=<30,108,362>, a=<-6,-5,-25>
+p=<-1843,874,1771>, v=<-261,131,253>, a=<17,-12,-17>
+p=<2707,-769,818>, v=<382,-107,112>, a=<-26,9,-4>
+p=<164,-239,3326>, v=<20,-36,474>, a=<-5,-2,-35>
+p=<-1484,-1867,1429>, v=<-211,-271,204>, a=<12,18,-16>
+p=<-1091,-1732,-2881>, v=<-154,-248,-411>, a=<8,15,29>
+p=<2142,1579,-1231>, v=<306,223,-177>, a=<-19,-18,6>
+p=<-2977,300,945>, v=<-425,44,133>, a=<30,3,-7>
+p=<1742,1775,-36>, v=<244,253,-7>, a=<-17,-17,5>
+p=<-1594,-2674,495>, v=<-230,-382,74>, a=<13,21,-1>
+p=<-1665,2225,-1776>, v=<-240,314,-250>, a=<17,-21,17>
+p=<142,2432,-376>, v=<18,351,-52>, a=<-2,-16,2>
+p=<-950,1633,1739>, v=<-139,229,248>, a=<9,-16,-17>
+p=<-2816,-480,-893>, v=<-404,-71,-131>, a=<31,6,8>
+p=<-455,932,2810>, v=<-69,135,403>, a=<3,-13,-27>
+p=<-3730,366,-606>, v=<-532,55,-86>, a=<37,-3,4>
+p=<252,-2577,-244>, v=<36,-367,-35>, a=<-6,26,3>
+p=<801,-2233,-1237>, v=<112,-315,-174>, a=<-8,27,13>
+p=<2442,-462,1909>, v=<350,-65,270>, a=<-22,5,-12>
+p=<-2324,1403,-1040>, v=<-332,203,-139>, a=<22,-13,12>
+p=<-2533,1295,-1541>, v=<-361,183,-221>, a=<25,-11,17>
+p=<-1512,-932,1936>, v=<-216,-134,276>, a=<18,9,-18>
+p=<2274,1583,-1494>, v=<319,227,-214>, a=<-21,-17,14>
+p=<-2158,-1734,-2643>, v=<-302,-242,-377>, a=<26,15,26>
+p=<687,954,2298>, v=<94,130,329>, a=<-12,-8,-28>
+p=<-2296,571,-1404>, v=<-334,81,-198>, a=<24,-5,13>
+p=<-431,2980,489>, v=<-55,424,64>, a=<4,-33,-4>
+p=<-2237,-2695,-582>, v=<-316,-385,-83>, a=<21,32,5>
+p=<-1619,759,-2656>, v=<-225,114,-380>, a=<19,-12,26>
+p=<945,447,3126>, v=<130,61,444>, a=<-12,-9,-31>
+p=<2412,-1076,1127>, v=<344,-158,158>, a=<-28,8,-7>
+p=<77,3074,-1824>, v=<14,438,-257>, a=<0,-30,21>
+p=<1306,1552,-1954>, v=<187,222,-281>, a=<-16,-13,18>
+p=<808,2843,1357>, v=<116,408,190>, a=<-9,-28,-10>
+p=<-105,-919,2898>, v=<-15,-129,418>, a=<1,13,-28>
+p=<994,1043,-1978>, v=<140,151,-279>, a=<-9,-9,20>
+p=<3077,70,482>, v=<442,10,68>, a=<-32,-1,-6>
+p=<-2772,1,-1392>, v=<-397,-2,-201>, a=<30,2,13>
+p=<1297,-2205,120>, v=<184,-321,17>, a=<-9,20,0>
+p=<-3102,-5,-1354>, v=<-444,3,-194>, a=<30,-1,12>
+p=<-1621,-2313,374>, v=<-235,-329,52>, a=<18,20,-3>
+p=<1902,-240,2425>, v=<266,-34,348>, a=<-19,1,-25>
+p=<-1803,-1696,-543>, v=<-257,-238,-74>, a=<21,18,4>
+p=<2854,-216,1608>, v=<404,-28,229>, a=<-30,6,-13>
+p=<1502,-1352,-2578>, v=<211,-192,-364>, a=<-15,19,16>
+p=<1559,-2311,-45>, v=<220,-328,-6>, a=<-17,22,5>
+p=<-402,2270,-796>, v=<-58,325,-110>, a=<7,-21,3>
+p=<-1370,-11,-2620>, v=<-196,3,-373>, a=<13,4,31>
+p=<-953,3009,1273>, v=<-138,429,181>, a=<8,-33,-15>
+p=<1782,-1172,-2352>, v=<255,-164,-337>, a=<-20,11,27>
+p=<2237,418,2402>, v=<322,59,341>, a=<-21,-8,-24>
+p=<2252,1657,1721>, v=<320,238,247>, a=<-20,-18,-15>
+p=<-1315,-2410,1308>, v=<-189,-340,189>, a=<10,26,-18>
+p=<48,244,-2745>, v=<2,35,-388>, a=<3,-3,29>
+p=<1665,2253,-689>, v=<237,317,-98>, a=<-17,-21,5>
+p=<1117,-1998,-2158>, v=<161,-285,-308>, a=<-9,21,22>
+p=<-1209,2307,-403>, v=<-172,324,-58>, a=<11,-24,2>
+p=<-2058,1700,1773>, v=<-291,243,254>, a=<20,-17,-18>
+p=<-995,-1138,-2951>, v=<-138,-163,-418>, a=<8,13,27>
+p=<785,-983,2672>, v=<116,-146,383>, a=<-7,10,-26>
+p=<-1923,-330,-1677>, v=<-271,-41,-241>, a=<16,4,16>
+p=<1401,1896,937>, v=<197,268,131>, a=<-16,-15,-10>
+p=<-572,2692,1022>, v=<-83,384,149>, a=<1,-24,-10>
+p=<1741,1338,-1868>, v=<253,193,-269>, a=<-17,-10,17>
+p=<1566,2188,350>, v=<225,312,48>, a=<-16,-21,-4>
+p=<-1734,-1324,-1866>, v=<-244,-188,-269>, a=<17,13,17>
+p=<3149,-129,-952>, v=<449,-16,-132>, a=<-32,-1,11>
+p=<2091,-1276,-782>, v=<293,-179,-108>, a=<-21,10,11>
+p=<1814,2072,315>, v=<260,295,47>, a=<-18,-21,-6>
+p=<-1036,-1282,1829>, v=<-147,-189,265>, a=<10,14,-18>
+p=<-2434,-333,-1071>, v=<-347,-45,-155>, a=<23,2,7>
+p=<2813,315,265>, v=<397,43,35>, a=<-29,-3,-2>
+p=<704,-541,-2684>, v=<100,-81,-383>, a=<-8,2,25>
+p=<180,-1863,-2277>, v=<28,-266,-326>, a=<-2,12,22>
+p=<-537,478,-3146>, v=<-73,72,-449>, a=<1,-3,29>
+p=<-2275,1286,1169>, v=<-326,182,165>, a=<21,-16,-13>
+p=<-3153,-167,839>, v=<-452,-22,117>, a=<31,5,-8>
+p=<-2659,-1005,-62>, v=<-379,-143,-11>, a=<33,14,0>
+p=<-2857,1552,-245>, v=<-403,219,-34>, a=<26,-15,-2>
+p=<-2420,1189,-1497>, v=<-348,165,-213>, a=<22,-10,13>
+p=<-996,-2088,1463>, v=<-141,-296,209>, a=<10,21,-13>
+p=<785,-2777,-89>, v=<111,-396,-11>, a=<-10,22,2>
+p=<-3064,52,457>, v=<-439,3,58>, a=<29,0,-1>
+p=<-2003,1537,-2027>, v=<-286,222,-283>, a=<18,-14,20>
+p=<-2744,192,516>, v=<-390,27,75>, a=<28,-1,-8>
+p=<2627,428,1268>, v=<377,62,183>, a=<-26,-4,-11>
+p=<2370,516,-2130>, v=<335,71,-306>, a=<-25,-4,20>
+p=<-167,2752,-190>, v=<-23,391,-27>, a=<1,-24,0>
+p=<-2333,-1758,399>, v=<-332,-254,59>, a=<23,10,-4>
+p=<115,1289,-2001>, v=<17,186,-285>, a=<0,-12,22>
+p=<-1645,320,-2350>, v=<-235,48,-336>, a=<15,1,23>
+p=<168,539,-2987>, v=<26,80,-429>, a=<4,-6,30>
+p=<550,109,2265>, v=<77,14,323>, a=<-1,-1,-15>
+p=<2314,-1485,1355>, v=<330,-206,194>, a=<-21,21,-13>
+p=<-2350,1553,904>, v=<-337,226,132>, a=<17,-17,-9>
+p=<-1292,2795,-539>, v=<-184,402,-74>, a=<12,-30,8>
+p=<-770,-1190,-2785>, v=<-108,-172,-397>, a=<7,9,30>
+p=<-2348,-1197,1425>, v=<-336,-172,211>, a=<23,14,-13>
+p=<1914,787,1936>, v=<275,112,273>, a=<-19,-8,-16>
+p=<-20,934,-2534>, v=<-2,133,-361>, a=<0,-9,24>
+p=<-1896,-1410,1509>, v=<-269,-201,214>, a=<14,14,-11>
+p=<-3039,-1083,-1197>, v=<-436,-151,-174>, a=<30,14,12>
+p=<-703,-1842,2083>, v=<-100,-263,297>, a=<8,21,-21>
+p=<-865,2968,-1508>, v=<-121,421,-215>, a=<8,-31,19>
+p=<3111,410,1160>, v=<442,62,161>, a=<-26,-4,-15>
+p=<-783,2409,-1292>, v=<-107,344,-184>, a=<7,-24,11>
+p=<3426,56,23>, v=<492,10,-1>, a=<-31,2,0>
+p=<-3055,796,570>, v=<-440,112,73>, a=<28,-6,-8>
+p=<-407,1576,2244>, v=<-62,226,323>, a=<3,-11,-22>
+p=<-1560,2842,919>, v=<-221,405,133>, a=<14,-26,-7>
+p=<2900,635,1073>, v=<411,92,158>, a=<-26,-3,-7>
+p=<-2028,-452,2148>, v=<-286,-59,306>, a=<22,4,-20>
+p=<-2567,1085,45>, v=<-371,157,1>, a=<32,-18,-1>
+p=<-991,1405,2370>, v=<-142,203,340>, a=<9,-14,-23>
+p=<142,-1409,-2144>, v=<15,-199,-308>, a=<0,8,26>
+p=<1497,303,-2973>, v=<213,42,-427>, a=<-13,-6,33>
+p=<-1158,221,2675>, v=<-167,32,380>, a=<9,5,-25>
+p=<-147,-400,3215>, v=<-21,-51,459>, a=<-1,0,-32>
+p=<-1828,-2033,567>, v=<-263,-290,82>, a=<19,26,-4>
+p=<-1953,1811,-2055>, v=<-278,255,-294>, a=<15,-18,14>
+p=<-838,-1721,-2258>, v=<-119,-250,-324>, a=<10,16,25>
+p=<598,-1963,-2331>, v=<84,-274,-335>, a=<-5,21,24>
+p=<-210,400,-2911>, v=<-29,61,-416>, a=<4,-9,31>
+p=<-1336,-1236,2422>, v=<-192,-175,348>, a=<9,11,-27>
+p=<2593,1842,156>, v=<366,258,23>, a=<-26,-22,3>
+p=<683,-2491,2131>, v=<94,-355,301>, a=<-5,26,-19>
+p=<-1754,-1837,-1551>, v=<-249,-262,-221>, a=<15,23,13>
+p=<1971,2423,440>, v=<278,345,64>, a=<-23,-24,-1>
+p=<-398,2348,1947>, v=<-56,333,281>, a=<-2,-23,-19>
+p=<2374,-1106,-1948>, v=<339,-158,-282>, a=<-24,13,22>
+p=<-989,-1488,-1769>, v=<-148,-214,-252>, a=<9,12,12>
+p=<2259,-943,-1333>, v=<318,-135,-185>, a=<-21,9,8>
+p=<2871,-44,150>, v=<412,-7,23>, a=<-26,2,-2>
+p=<876,-1583,-1974>, v=<131,-232,-281>, a=<-12,18,14>
+p=<-597,-2656,690>, v=<-82,-383,91>, a=<5,26,-8>
+p=<3218,-115,-141>, v=<455,-18,-18>, a=<-36,0,5>
+p=<1347,-17,-2874>, v=<195,-2,-410>, a=<-16,-4,28>
+p=<2607,646,1802>, v=<375,90,259>, a=<-30,-7,-18>
+p=<2246,-82,1413>, v=<316,-6,200>, a=<-21,-5,-11>
+p=<-1515,2402,-1329>, v=<-208,341,-188>, a=<16,-22,15>
+p=<-740,-2443,839>, v=<-106,-345,118>, a=<9,27,-9>
+p=<-370,-1496,2055>, v=<-57,-212,293>, a=<5,14,-19>
+p=<-1652,-1944,-1349>, v=<-236,-281,-184>, a=<9,16,13>
+p=<-2499,2057,-233>, v=<-355,294,-32>, a=<24,-21,2>
+p=<307,-2054,1512>, v=<38,-293,216>, a=<-4,19,-16>
+p=<-2617,-1535,-1691>, v=<-371,-221,-238>, a=<26,14,19>
+p=<1419,2503,374>, v=<205,362,55>, a=<-18,-25,-3>
+p=<2882,48,1837>, v=<407,3,267>, a=<-26,-4,-22>
+p=<-563,-3347,223>, v=<-79,-476,34>, a=<7,33,-2>
+p=<-814,-2302,-208>, v=<-116,-326,-29>, a=<7,21,2>
+p=<2886,-461,892>, v=<417,-72,127>, a=<-30,4,-11>
+p=<38,-829,2517>, v=<9,-117,361>, a=<0,6,-29>
+p=<1954,768,-1801>, v=<278,111,-257>, a=<-22,-7,22>
+p=<-1138,-848,2144>, v=<-161,-121,307>, a=<14,13,-20>
+p=<-2676,69,-662>, v=<-388,11,-94>, a=<26,0,6>
+p=<-1190,-2014,1742>, v=<-170,-287,249>, a=<11,21,-20>
+p=<-865,2859,-981>, v=<-126,407,-140>, a=<8,-31,12>
+p=<3060,1455,828>, v=<437,209,118>, a=<-25,-19,-6>
+p=<1292,-1828,-1200>, v=<181,-268,-168>, a=<-13,18,9>
+p=<-2351,-1092,557>, v=<-339,-155,81>, a=<23,13,-3>
+p=<1107,-2033,693>, v=<155,-290,100>, a=<-7,21,-10>
+p=<-962,323,3456>, v=<-140,48,493>, a=<11,-4,-30>
+p=<2434,637,-1784>, v=<348,96,-252>, a=<-24,-9,18>
+p=<2157,1618,59>, v=<308,226,8>, a=<-25,-20,-2>
+p=<849,-62,-2418>, v=<121,-8,-344>, a=<-7,-3,23>
+p=<2762,1436,-1383>, v=<394,207,-197>, a=<-23,-15,11>
+p=<-3036,419,878>, v=<-432,57,124>, a=<24,1,-10>
+p=<2503,1489,-756>, v=<356,217,-109>, a=<-25,-12,4>
+p=<-1397,-2563,-133>, v=<-199,-361,-19>, a=<12,23,1>
+p=<-288,1425,-3042>, v=<-41,207,-432>, a=<1,-13,29>
+p=<24,2975,447>, v=<2,428,63>, a=<-2,-37,-4>
+p=<285,-2013,-2331>, v=<34,-287,-329>, a=<5,25,26>
+p=<-634,-2885,-1380>, v=<-90,-410,-196>, a=<4,31,16>
+p=<-2550,-1613,1326>, v=<-369,-228,189>, a=<22,15,-12>
+p=<-260,-1885,1699>, v=<-40,-269,242>, a=<7,18,-16>
+p=<-632,1319,2283>, v=<-91,186,323>, a=<4,-18,-22>
+p=<-865,-2642,-279>, v=<-126,-373,-39>, a=<3,24,0>
+p=<2223,-1977,880>, v=<317,-281,130>, a=<-23,20,-8>
+p=<42,2810,-450>, v=<10,401,-65>, a=<0,-24,0>
+p=<-950,2330,2037>, v=<-134,332,291>, a=<4,-23,-18>
+p=<1044,286,3174>, v=<151,40,451>, a=<-8,-1,-30>
+p=<-932,2492,-342>, v=<-135,352,-53>, a=<9,-25,-1>
+p=<3318,808,-839>, v=<473,112,-125>, a=<-33,-7,8>
+p=<2190,802,1373>, v=<314,108,196>, a=<-21,-10,-13>
+p=<-110,2227,2514>, v=<-13,321,357>, a=<1,-26,-22>
+p=<-762,-2542,1571>, v=<-107,-363,219>, a=<7,27,-15>
+p=<-843,1461,-2501>, v=<-121,208,-360>, a=<6,-15,25>
+p=<1037,-2192,-1862>, v=<146,-314,-266>, a=<-9,21,16>
+p=<1428,-2502,783>, v=<208,-357,117>, a=<-12,24,-1>
+p=<-1519,802,-2626>, v=<-214,115,-375>, a=<12,-10,21>
+p=<-2483,1663,1263>, v=<-349,237,180>, a=<19,-18,-17>
+p=<1246,-500,2566>, v=<175,-69,366>, a=<-15,2,-25>
+p=<-2286,-1779,-461>, v=<-327,-255,-65>, a=<22,23,2>
+p=<350,3135,1064>, v=<50,449,152>, a=<-3,-31,-6>
+p=<-506,275,-2858>, v=<-70,47,-408>, a=<6,-1,29>
+p=<2283,2049,-751>, v=<328,292,-107>, a=<-18,-23,12>
+p=<-1926,-1360,-1240>, v=<-279,-194,-175>, a=<19,15,14>
+p=<1343,457,-2363>, v=<185,63,-333>, a=<-13,-2,23>
+p=<-1206,2687,-982>, v=<-173,379,-140>, a=<8,-22,15>
+p=<2187,30,2741>, v=<312,5,391>, a=<-21,2,-25>
+p=<2627,1354,-644>, v=<375,193,-92>, a=<-23,-13,-2>
+p=<2234,1551,-629>, v=<314,221,-87>, a=<-21,-15,6>
+p=<-2224,181,-1582>, v=<-317,28,-226>, a=<19,-2,18>
+p=<-1203,943,2568>, v=<-174,137,364>, a=<12,-2,-28>
+p=<1723,2089,584>, v=<247,300,80>, a=<-17,-19,-9>
+p=<1087,-867,2921>, v=<156,-126,421>, a=<-10,7,-29>
+p=<359,-2816,1809>, v=<51,-402,255>, a=<0,28,-19>
+p=<1010,1125,-2626>, v=<144,160,-377>, a=<-13,-17,27>
+p=<-2218,1407,-767>, v=<-321,206,-110>, a=<24,-16,1>
+p=<-3075,459,556>, v=<-436,65,76>, a=<28,-5,-5>
+p=<-711,3207,1693>, v=<-97,457,242>, a=<10,-35,-20>
+p=<2313,-442,-2190>, v=<330,-64,-315>, a=<-19,2,18>
+p=<-1225,2747,-653>, v=<-177,394,-93>, a=<8,-30,5>
+p=<1874,-2001,-949>, v=<267,-285,-133>, a=<-18,21,8>
+p=<1135,-2961,-1056>, v=<159,-420,-148>, a=<-9,25,9>
+p=<-992,1847,1999>, v=<-139,262,285>, a=<7,-22,-23>
+p=<355,2681,-983>, v=<50,383,-140>, a=<-4,-27,15>
+p=<-366,-2446,1278>, v=<-52,-353,183>, a=<4,27,-12>
+p=<1878,-2548,244>, v=<268,-365,33>, a=<-18,27,0>
+p=<2552,811,567>, v=<366,110,84>, a=<-25,-8,-8>
+p=<3105,498,303>, v=<444,68,45>, a=<-31,-5,-2>
+p=<167,-2030,-2095>, v=<20,-290,-300>, a=<2,16,26>
+p=<637,2069,1692>, v=<83,294,243>, a=<-9,-20,-18>
+p=<279,-2256,1998>, v=<45,-322,285>, a=<-6,21,-14>
+p=<1300,-1475,2240>, v=<185,-210,320>, a=<-13,10,-26>
+p=<-909,1932,1771>, v=<-128,280,256>, a=<4,-20,-20>
+p=<-2564,-1688,925>, v=<-368,-238,129>, a=<27,16,-11>
+p=<-1016,-2945,738>, v=<-147,-419,106>, a=<9,33,-5>
+p=<-53,-2665,-2270>, v=<-11,-379,-324>, a=<-2,28,19>
+p=<1575,642,2511>, v=<223,94,355>, a=<-17,-1,-16>
+p=<1038,2769,151>, v=<144,397,21>, a=<-12,-27,-3>
+p=<2607,805,-1130>, v=<372,115,-161>, a=<-27,-9,11>
+p=<2070,170,2504>, v=<298,21,356>, a=<-24,-4,-26>
+p=<-2063,152,-2561>, v=<-295,24,-365>, a=<16,-4,31>
+p=<2655,-493,-835>, v=<379,-69,-115>, a=<-26,8,7>
+p=<-2780,900,-676>, v=<-397,132,-100>, a=<29,-11,6>
+p=<252,2668,1762>, v=<39,379,250>, a=<-2,-29,-17>
+p=<-2790,-731,-1001>, v=<-395,-101,-140>, a=<26,6,13>
+p=<-1229,497,-2048>, v=<-171,72,-295>, a=<12,1,23>
+p=<2491,1388,1334>, v=<356,203,191>, a=<-29,-14,-12>
+p=<2321,-1287,2441>, v=<333,-179,351>, a=<-24,14,-23>
+p=<1460,2731,-68>, v=<209,390,-5>, a=<-15,-28,7>
+p=<1398,618,2852>, v=<202,87,407>, a=<-11,-1,-32>
+p=<47,1927,2446>, v=<9,271,348>, a=<-1,-25,-19>
+p=<757,2073,-2212>, v=<113,296,-317>, a=<-6,-25,21>
+p=<-1045,2707,-1885>, v=<-145,385,-264>, a=<5,-27,18>
+p=<-1495,-818,-1857>, v=<-215,-118,-262>, a=<14,9,12>
+p=<-2627,-718,-1764>, v=<-378,-101,-252>, a=<25,9,18>
+p=<2024,960,1742>, v=<293,135,254>, a=<-27,-9,-21>
+p=<1784,2855,-138>, v=<252,406,-15>, a=<-16,-32,1>
+p=<-2160,-710,-1609>, v=<-304,-103,-223>, a=<17,6,17>
+p=<-2478,-2089,95>, v=<-353,-299,15>, a=<28,23,1>
+p=<2435,527,2073>, v=<347,75,296>, a=<-27,-4,-20>
+p=<-1352,2955,791>, v=<-193,424,117>, a=<13,-31,-6>
+p=<3003,1189,678>, v=<424,169,100>, a=<-30,-9,-10>
+p=<604,-799,2066>, v=<89,-115,292>, a=<-10,10,-17>
+p=<-2506,-1768,406>, v=<-354,-247,58>, a=<30,16,-2>
+p=<-1310,-352,-1934>, v=<-188,-48,-276>, a=<13,6,19>
+p=<1378,-2170,834>, v=<196,-312,122>, a=<-13,22,-8>
+p=<-714,2923,-799>, v=<-107,414,-115>, a=<8,-30,7>
+p=<906,232,-2566>, v=<128,32,-362>, a=<-9,2,18>
+p=<-2288,-1476,1309>, v=<-327,-210,183>, a=<22,14,-13>
+p=<1697,1613,308>, v=<240,226,45>, a=<-16,-18,-4>
+p=<2453,773,-1994>, v=<353,111,-283>, a=<-25,-6,24>
+p=<2094,-2409,33>, v=<295,-347,4>, a=<-15,25,2>
+p=<526,-1113,2073>, v=<77,-157,294>, a=<-5,12,-21>
+p=<-2442,591,-1823>, v=<-349,83,-262>, a=<24,-1,17>
+p=<-335,-2835,592>, v=<-43,-406,86>, a=<4,28,-4>
+p=<-2785,-972,229>, v=<-394,-135,36>, a=<23,11,-1>
+p=<-1100,-1480,1796>, v=<-154,-210,257>, a=<10,17,-20>
+p=<2325,1914,-452>, v=<332,272,-60>, a=<-23,-21,2>
+p=<2180,1218,2887>, v=<313,177,412>, a=<-19,-12,-29>
+p=<2374,-881,-1454>, v=<334,-132,-207>, a=<-22,13,16>
+p=<-1748,2499,-1372>, v=<-248,359,-196>, a=<17,-23,16>
+p=<1727,-1109,1790>, v=<246,-160,255>, a=<-19,13,-19>
+p=<905,1527,-2078>, v=<121,218,-303>, a=<-5,-16,19>
+p=<2420,-59,2292>, v=<347,-12,329>, a=<-24,0,-16>
+p=<2287,-1783,1206>, v=<328,-257,170>, a=<-21,20,-14>
+p=<-2664,-152,-1382>, v=<-374,-23,-198>, a=<26,1,13>
+p=<-1081,1292,-2263>, v=<-158,184,-324>, a=<5,-11,24>
+p=<2446,-545,-2289>, v=<350,-75,-328>, a=<-25,7,22>
+p=<2235,-1381,-2054>, v=<322,-198,-298>, a=<-22,16,26>
+p=<-3257,-154,-718>, v=<-466,-23,-101>, a=<29,-2,7>
+p=<1673,1690,516>, v=<244,239,70>, a=<-19,-22,-6>
+p=<1385,-2456,418>, v=<196,-350,58>, a=<-17,25,-4>
+p=<2985,-884,-799>, v=<428,-119,-111>, a=<-33,5,7>
+p=<-1513,2311,-173>, v=<-212,328,-23>, a=<15,-20,-4>
+p=<-2074,-1496,-1222>, v=<-297,-214,-176>, a=<24,18,12>
+p=<-2057,-370,-2301>, v=<-294,-52,-326>, a=<21,6,23>
+p=<-2227,-2336,-145>, v=<-320,-339,-18>, a=<22,22,-3>
+p=<2914,1632,652>, v=<414,227,94>, a=<-28,-16,-6>
+p=<-1038,-2308,1378>, v=<-152,-333,198>, a=<13,31,-15>
+p=<643,-1788,-2511>, v=<94,-255,-361>, a=<-2,21,23>
+p=<902,2772,-1464>, v=<131,400,-212>, a=<-10,-23,17>
+p=<1063,-1453,2430>, v=<156,-209,349>, a=<-10,16,-22>
+p=<-224,3075,442>, v=<-29,439,67>, a=<-1,-31,1>
+p=<-1373,-2192,-921>, v=<-196,-313,-132>, a=<13,24,8>
+p=<-3353,295,495>, v=<-481,42,66>, a=<31,-1,-10>
+p=<-1853,809,2625>, v=<-260,110,375>, a=<17,-4,-26>
+p=<78,-1196,2121>, v=<9,-171,303>, a=<2,6,-18>
+p=<3114,913,1260>, v=<443,123,184>, a=<-28,-10,-8>
+p=<2387,-357,370>, v=<341,-48,51>, a=<-29,2,-3>
+p=<-2301,-1677,-546>, v=<-328,-241,-75>, a=<22,16,3>
+p=<1126,2571,-1330>, v=<157,367,-193>, a=<-13,-25,13>
+p=<1806,345,2195>, v=<258,46,317>, a=<-20,-3,-18>
+p=<1375,2815,-293>, v=<194,400,-43>, a=<-13,-28,0>
+p=<2393,-1081,1055>, v=<342,-154,156>, a=<-23,13,-10>
+p=<-74,1914,-2448>, v=<-14,273,-350>, a=<2,-17,23>
+p=<2018,-1928,814>, v=<287,-279,114>, a=<-23,12,-10>
+p=<-89,1458,2267>, v=<-14,213,322>, a=<-1,-16,-22>
+p=<-2310,1272,-1141>, v=<-328,178,-156>, a=<23,-12,10>
+p=<1157,2183,885>, v=<162,309,120>, a=<-11,-19,-5>
+p=<-2528,2520,163>, v=<-360,364,20>, a=<25,-29,4>
+p=<1873,1210,2281>, v=<268,176,327>, a=<-22,-10,-25>
+p=<-654,-2387,-1867>, v=<-91,-341,-267>, a=<1,22,17>
+p=<1619,-1540,-1714>, v=<226,-222,-247>, a=<-20,13,17>
+p=<-2781,1254,-451>, v=<-399,186,-64>, a=<26,-13,0>
diff --git a/2017/inputs/day_21.txt b/2017/inputs/day_21.txt
new file mode 100644
index 0000000..280e26d
--- /dev/null
+++ b/2017/inputs/day_21.txt
@@ -0,0 +1,108 @@
+../.. => ..#/#../.#.
+#./.. => #../#../...
+##/.. => ###/#.#/#..
+.#/#. => ###/##./.#.
+##/#. => .../.#./..#
+##/## => ##./#.#/###
+.../.../... => ##../.#../#.#./....
+#../.../... => ..../##.#/...#/##.#
+.#./.../... => ###./####/#.../#..#
+##./.../... => ###./.##./...#/..##
+#.#/.../... => .###/.##./#.../#.##
+###/.../... => ##.#/#..#/#.#./#.##
+.#./#../... => #.#./.###/#.../#.##
+##./#../... => #.../####/#.##/....
+..#/#../... => #.##/..#./...#/...#
+#.#/#../... => #.##/####/.#.#/#.#.
+.##/#../... => #.../##../##.#/.##.
+###/#../... => ..../#.#./.###/#...
+.../.#./... => .#.#/#..#/##../#.##
+#../.#./... => ###./.###/.#.#/..#.
+.#./.#./... => ..##/.##./..##/.#.#
+##./.#./... => ..#./##../###./...#
+#.#/.#./... => ..##/.##./.###/###.
+###/.#./... => ..#./.###/###./#.##
+.#./##./... => ###./..../.#../#...
+##./##./... => .#.#/##../##.#/...#
+..#/##./... => ##.#/.##./.###/..##
+#.#/##./... => .###/..#./#.##/####
+.##/##./... => ##.#/..#./..##/###.
+###/##./... => ..../.#.#/.#../#...
+.../#.#/... => ###./.#.#/.#../#.##
+#../#.#/... => ####/#..#/..../....
+.#./#.#/... => #.../..##/#.##/#.#.
+##./#.#/... => #.#./###./##../#.#.
+#.#/#.#/... => ...#/.##./.##./.#..
+###/#.#/... => ..../.##./####/#.#.
+.../###/... => .###/.#../.###/#.##
+#../###/... => ..##/..##/.##./##..
+.#./###/... => .#.#/..#./..##/##.#
+##./###/... => ...#/#.##/#.#./##.#
+#.#/###/... => #.##/.##./...#/###.
+###/###/... => ##../...#/..##/####
+..#/.../#.. => #.##/#.../.#../#.#.
+#.#/.../#.. => .##./.##./.#.#/.##.
+.##/.../#.. => .#.#/#.##/...#/##.#
+###/.../#.. => ##../..#./...#/##..
+.##/#../#.. => ##../..##/#..#/#..#
+###/#../#.. => ##../..#./#.#./....
+..#/.#./#.. => .##./##.#/##../####
+#.#/.#./#.. => ####/...#/.#.#/..#.
+.##/.#./#.. => .#.#/..#./##.#/.#..
+###/.#./#.. => #.../#.##/..../##.#
+.##/##./#.. => #.#./#.#./#.##/#.#.
+###/##./#.. => ...#/###./.##./.#.#
+#../..#/#.. => ####/####/..../.##.
+.#./..#/#.. => #.##/...#/..#./####
+##./..#/#.. => ..#./#.../..##/####
+#.#/..#/#.. => #.../#.##/#.##/..##
+.##/..#/#.. => ####/..../##../####
+###/..#/#.. => ..../##.#/.##./####
+#../#.#/#.. => ...#/..##/###./#..#
+.#./#.#/#.. => #..#/..#./.###/##.#
+##./#.#/#.. => ###./####/#.##/..#.
+..#/#.#/#.. => ##../##.#/..##/.##.
+#.#/#.#/#.. => .#.#/.##./#.../##.#
+.##/#.#/#.. => .#.#/#..#/.##./..#.
+###/#.#/#.. => ...#/.#../.##./##.#
+#../.##/#.. => ###./##../#.#./####
+.#./.##/#.. => .#../##../#.#./.#.#
+##./.##/#.. => ##.#/.#../.#.#/####
+#.#/.##/#.. => ####/.#.#/..../....
+.##/.##/#.. => ####/##../#..#/####
+###/.##/#.. => .###/##.#/.#../#.##
+#../###/#.. => #..#/###./####/.#.#
+.#./###/#.. => ..##/##../##.#/.#.#
+##./###/#.. => #..#/.#../####/...#
+..#/###/#.. => ##../##.#/...#/#..#
+#.#/###/#.. => ..#./.##./#..#/....
+.##/###/#.. => #..#/#.../..../.#..
+###/###/#.. => ..#./#.##/.##./#...
+.#./#.#/.#. => .#.#/.##./##.#/.##.
+##./#.#/.#. => #..#/.###/.#.#/.##.
+#.#/#.#/.#. => #.../##../#.../.###
+###/#.#/.#. => ###./.###/###./....
+.#./###/.#. => .#../####/...#/##..
+##./###/.#. => ####/###./..../....
+#.#/###/.#. => ...#/.###/..../####
+###/###/.#. => ..../#.../..#./.###
+#.#/..#/##. => #.#./#.../####/#.##
+###/..#/##. => .#.#/#..#/.###/#...
+.##/#.#/##. => ..##/..#./..../##..
+###/#.#/##. => #.#./##.#/####/#..#
+#.#/.##/##. => ..../.#../#.#./##.#
+###/.##/##. => ..../..../.#../##.#
+.##/###/##. => #.#./.###/#.#./#.##
+###/###/##. => ##.#/##.#/.###/..#.
+#.#/.../#.# => #..#/.#../#.../...#
+###/.../#.# => ##../.#../##.#/..#.
+###/#../#.# => ..##/#.#./####/.#..
+#.#/.#./#.# => ...#/...#/#..#/#.#.
+###/.#./#.# => ..../####/.##./.#.#
+###/##./#.# => #..#/.#.#/..##/####
+#.#/#.#/#.# => #.#./..#./...#/.#..
+###/#.#/#.# => ...#/##.#/.###/.#..
+#.#/###/#.# => .#.#/###./.#../.##.
+###/###/#.# => ...#/.###/.#.#/###.
+###/#.#/### => #.##/.#.#/...#/.#..
+###/###/### => ..##/.#../#.#./.#..
diff --git a/2017/inputs/day_21_example.txt b/2017/inputs/day_21_example.txt
new file mode 100644
index 0000000..f6d24df
--- /dev/null
+++ b/2017/inputs/day_21_example.txt
@@ -0,0 +1,2 @@
+../.# => ##./#../...
+.#./..#/### => #..#/..../..../#..#
diff --git a/2017/inputs/day_22.txt b/2017/inputs/day_22.txt
new file mode 100644
index 0000000..1343456
--- /dev/null
+++ b/2017/inputs/day_22.txt
@@ -0,0 +1,25 @@
+.##..#.#.##...#....#..###
+####.#...###.####..#.....
+#.#.#####....######.###.#
+#.#..###.#.#####....#..#.
+####.#.#...#.##.##..#.###
+#.####..#####.#.#....#.##
+.#.####.#....###..##....#
+..##.#..##.#.#.###.##.#..
+##....#....######.###.###
+.#.##.###.###.###.#..#.#.
+#.##.#.#..#.#.....###....
+####.....#..###..##..##..
+##....#.#...####...#.#.#.
+...#.##..###..##..#......
+#....#..##.##.#..#.###..#
+...#...##.##.##...#.#.#..
+.##....#.####.#..##.#...#
+#.######......#.#...#.##.
+#.##....###...###.###....
+#..#.#.#.#.#..#.#.....#..
+...##..##.###....#.###...
+.######.#...###.###.#.#.#
+####..###.####...#..#####
+.##.#.##...##..##...#.#.#
+###...##..#..##.##..#..#.
diff --git a/2017/inputs/day_22_example.txt b/2017/inputs/day_22_example.txt
new file mode 100644
index 0000000..3105a0b
--- /dev/null
+++ b/2017/inputs/day_22_example.txt
@@ -0,0 +1,3 @@
+..#
+#..
+...
diff --git a/2017/inputs/day_23.txt b/2017/inputs/day_23.txt
new file mode 100644
index 0000000..9d29443
--- /dev/null
+++ b/2017/inputs/day_23.txt
@@ -0,0 +1,32 @@
+set b 99
+set c b
+jnz a 2
+jnz 1 5
+mul b 100
+sub b -100000
+set c b
+sub c -17000
+set f 1
+set d 2
+set e 2
+set g d
+mul g e
+sub g b
+jnz g 2
+set f 0
+sub e -1
+set g e
+sub g b
+jnz g -8
+sub d -1
+set g d
+sub g b
+jnz g -13
+jnz f 2
+sub h -1
+set g b
+sub g c
+jnz g 2
+jnz 1 3
+sub b -17
+jnz 1 -23
diff --git a/2017/inputs/day_24.txt b/2017/inputs/day_24.txt
new file mode 100644
index 0000000..1fbfe25
--- /dev/null
+++ b/2017/inputs/day_24.txt
@@ -0,0 +1,57 @@
+42/37
+28/28
+29/25
+45/8
+35/23
+49/20
+44/4
+15/33
+14/19
+31/44
+39/14
+25/17
+34/34
+38/42
+8/42
+15/28
+0/7
+49/12
+18/36
+45/45
+28/7
+30/43
+23/41
+0/35
+18/9
+3/31
+20/31
+10/40
+0/22
+1/23
+20/47
+38/36
+15/8
+34/32
+30/30
+30/44
+19/28
+46/15
+34/50
+40/20
+27/39
+3/14
+43/45
+50/42
+1/33
+6/39
+46/44
+22/35
+15/20
+43/31
+23/23
+19/27
+47/15
+43/43
+25/36
+26/38
+1/10
diff --git a/2017/inputs/day_25.txt b/2017/inputs/day_25.txt
new file mode 100644
index 0000000..892ee98
--- /dev/null
+++ b/2017/inputs/day_25.txt
@@ -0,0 +1,62 @@
+Begin in state A.
+Perform a diagnostic checksum after 12667664 steps.
+
+In state A:
+ If the current value is 0:
+ - Write the value 1.
+ - Move one slot to the right.
+ - Continue with state B.
+ If the current value is 1:
+ - Write the value 0.
+ - Move one slot to the left.
+ - Continue with state C.
+
+In state B:
+ If the current value is 0:
+ - Write the value 1.
+ - Move one slot to the left.
+ - Continue with state A.
+ If the current value is 1:
+ - Write the value 1.
+ - Move one slot to the right.
+ - Continue with state D.
+
+In state C:
+ If the current value is 0:
+ - Write the value 0.
+ - Move one slot to the left.
+ - Continue with state B.
+ If the current value is 1:
+ - Write the value 0.
+ - Move one slot to the left.
+ - Continue with state E.
+
+In state D:
+ If the current value is 0:
+ - Write the value 1.
+ - Move one slot to the right.
+ - Continue with state A.
+ If the current value is 1:
+ - Write the value 0.
+ - Move one slot to the right.
+ - Continue with state B.
+
+In state E:
+ If the current value is 0:
+ - Write the value 1.
+ - Move one slot to the left.
+ - Continue with state F.
+ If the current value is 1:
+ - Write the value 1.
+ - Move one slot to the left.
+ - Continue with state C.
+
+In state F:
+ If the current value is 0:
+ - Write the value 1.
+ - Move one slot to the right.
+ - Continue with state D.
+ If the current value is 1:
+ - Write the value 1.
+ - Move one slot to the right.
+ - Continue with state A.
diff --git a/2017/inputs/day_3.txt b/2017/inputs/day_3.txt
new file mode 100644
index 0000000..ce15bc4
--- /dev/null
+++ b/2017/inputs/day_3.txt
@@ -0,0 +1 @@
+325489
diff --git a/2017/inputs/day_4.txt b/2017/inputs/day_4.txt
new file mode 100644
index 0000000..b9f9e0e
--- /dev/null
+++ b/2017/inputs/day_4.txt
@@ -0,0 +1,512 @@
+kvvfl kvvfl olud wjqsqa olud frc
+slhm rdfm yxb rsobyt rdfm
+pib wzfr xyoakcu zoapeze rtdxt rikc jyeps wdyo hawr xyoakcu hawr
+ismtq qwoi kzt ktgzoc gnxblp dzfayil ftfx asscba ionxi dzfayil qwoi
+dzuhys kfekxe nvdhdtj hzusdy xzhehgc dhtvdnj oxwlvef
+gxg qahl aaipx tkmckn hcsuhy jsudcmy kcefhpn kiasaj tkmckn
+roan kqnztj edc zpjwb
+yzc roc qrygby rsvts nyijgwr xnpqz
+jqgj hhgtw tmychia whkm vvxoq tfbzpe ska ldjmvmo
+nyeeg omn geyen ngyee rcjt rjuxh
+qpq udci tnp fdfk kffd eyzvmg ufppf wfuodj toamfn tkze jzsb
+rrcgxyp rbufd tfjmok vpyhej hcnz ftkojm
+jnmomfc jnmomfc bkluz izn ovvm flsch bkluz
+odisl hzwv hiasrhi hez ihihsra qpbmi ltwjj iknkwxf nbdtq gbo
+gjtszl gjtszl fruo fruo
+rdapv gaik cqboix sxnizhh uxmpali jdd usqnz advrp dze
+flooz flooz qad tcrq yze bnoijff qpqu vup hyagwll
+lnazok dze foi tqwjsk hpx qcql euzpj mwfrk
+ilb fmviby ivybmf gtx xtg
+rpauuu timere gyg wcolt ireetm safi
+croe szwmq bbhd lciird vhcci pdax
+hnc ykswt qqqmei goe bri wmyai hnc qpgqc pberqf bzs
+hsnrb wdvh iezzrq iezzrq rdbmpta iezzrq kemnptg alkjnp wymmz
+ngw don ddvyds nlhkoa aaf gptumum ugtpmmu
+vmccke qbpag kvf kvf tgrfghb kvf bhpd sglgx
+obomgk bkcgo yso ttft vbw ckl wjgk
+fli qvw zhin dfpgfjb udsin nihz ovr tiewo
+tgmzmph hauzieo jmg tdbtl lvfr qpaayq qapaqy ausioeu jun piygx
+jkp guqrnx asdqmxf vmfvtqb tloqgyo ioix gajowri tmek ilc puhipb
+uycn zxqm znft ayal znacus kvcyd ekv qqfpnh
+fqghur xtbtdd ztjrylr bpuikb ziyk
+rvakn uqbl ozitpdh uqbl dsej xehj
+laxp haz jyd xnkrb ijldth woy xapl iqgg alpx gnupa ukptmmh
+dyiy dyiy ihb qcyxr
+wbwkd hdwu zvgkn hdwu wjc sakwhn zxujdo npllzp uyr uyr
+fxczpmn cininu akcxs ggslxr riyxe ojisxe
+ppbch sampq dnct afikor dnct edsqy pnzyzmc afikor
+jnvygtn hijqjxl vsd jnvygtn nqcqv zns odq gkboxrv kolnq wrvd
+mroq mroq flsbu flsbu
+fyshor xvpaunj qmktlo xoce wkiyfu ukcl srndc ugwylwm ozcwdw mtqcste kpokr
+cfh cxjvx cfh cfh uewshh
+bpspbap bpspbap fquj mxmn bwls iirhvuk dmpkyt exrn mxmn
+tvyvzk ezszod ntxr xtnr och
+knfxhy kbnyl knfxhy xhkssx lxru uprh nkxpbx oodolxr tpvyf
+nblmysu iwoffs upgof tyagwf aan vovji ajk ywzq oyfi sfulz
+aushzkm lcaeki mkuzsah ynxvte rsntd refk pcm
+mgguob gobmug dzenpty gmogbu
+yvq eepof rgnree nerger fpb stfrln ernger
+hrgkbl mzwvswk rsrsbk ieru holco pajvvn ztgsr qkyp fyeg owpcmoj
+fowda gmsqdca yugj mcrroxv mqcbojd fjnqfji qdfsc jqs
+qnc rvjfz vvxk sjd xrma ucdjvq sbw zydyt dfzww
+ocajazv cozaajv tqunkla udwf ecnnmbz lsakqg bki njnda zsdu ccfqw rxpc
+qqm qdfya qxyx qmq qfday uqnfttt
+rnbirb iapor qet iapor hxkhz dfvzig pedl ybyb
+mkgamxg xkniv meb hbzmxjn dhbj zhbxjmn hdjb
+ilteux pyutyfx mau lrr bacak
+sjjonmn dbbbgs crxyuu jztstgd ezb uiabyaa
+tra fle ufzlvf nnaw kec hiwnnlj tei wld iyt syk hjdczb
+qmd jtlud dgh dbanock fzp dsjgqru wwvo jwvxwgv xlemfij jcacd
+rpkx oxesil snazcgx fly miiyc ikmtmp oefyyn egbw
+ypfpeu wldnyd acchppb yqwcaw wldnyd turbz megci nbgxq xkc ypfpeu
+iqqv iqqv neui iqqv
+ypsxm icqyup zyetrwq nbisrv
+viommi toszx dpueq eyy cunjou ffcjc jaeez djefra pxvkj liudlig yye
+fhnacbg jghchh ghjhhc iue hwqmo
+vbjw lpn cizba ltnsfpz tzoweml irewlc uzckhpd mszal obd
+yeos utxkft hflxkfe fxczge qpgigkc ksgr vuumql vhlvv
+xzmkv xzmkv krecdi klpem jsbu nwcmik emfzxf cjmpgnj
+vtkjo pmiv zou gxo qdiyxsf hwyinjk jhkgf rjq
+dyuoc ywiyvch irfgl ywiyvch fxb fxb
+tuz onhr syu rqya abkaf bcfx mbknex juwoor zmksl
+oheg spjorx ksdy vwtq fxz phvtazk tcze lrxg
+hew lbup botaj ltr jpd
+dxgc tzinkej gnz hxvvub adsqmc dxgc asgpp rqbdcra goy pmamdua bhiacva
+xqv ygb kihxqz vyv pjcny vmyvsdv cgsi nfyx
+tqga ssshrw ndq qlbvwh huyd pxbgj qbxk dkkbf jxy chsobw pph
+hxl iwph iwph xnr otifm ljhre
+zlgvpd kapxpoc dve rklk ogh hgnp rbrmc zzkz hhmcx aklmo
+sar gfor nkf hek nkf aql shc aql
+dtcrw kfjzcjx qyhi bldson whwdayo mqtgt xhqzp ttqmg
+omspdml isze jdl nvwo qrkm wztfg ssfgyh dryj jhp unsmty
+jxt cszylng ifht ixtuna azoi xutqlv jtx tjx
+usgm azuayp fgkby ezpyq jqwl ezofj
+tnhvil nrvg moyrpqs sldx qymoff megflxh pyhqwms xmdw
+zomy zcquwnv lzx bvcna yods mjp dgsez
+blklyf xokd gpit tiysj yrwfhm tofx
+dtig vhdp omuj vhpd
+fogwxim qvdwig emdiv jvhl euwbzkg xvxb hwmqo ujdmlp epmykj
+sjxll sjxll pedvgb sjxll
+drvay gtzhgtx yrt okz nqf
+haxfazn pvkovwb pgu tgshw mxcjf pbe nwoymzc mxcjf pbe hydwy jradcr
+prjsloa ahylvj okbsj qbdcdjt pmfo pagyoeg vkmhjzt khzmjvt opfm xfrji gyjqyel
+lzypt jdbtrad ogr jdbtrad heink
+rcoucuq gdxewa rcoucuq whlw zhhm rcoucuq azaqohe mzyli rdvaf
+yuag ebcf yuag nsotg qqzuxr jfmao vyucw wmoye
+qwvk xemm hgqrr wyxkpp tojndm xlvzypw jus bgnu bgnu nklfwhs
+daqi knenmku ccm xkiuy vkexsbc kvvdagx umopitw yaocnx yoakqql mllmsp
+mrxgl gywit mfopia ncnsvw vdxek axuiot rsejua nei prndudz mnu
+egqn gaa qgen urs mix zbn rhn
+ewharq aihy udkdaob kgrdd kgrdd kugbjtj fcef llqb pduxaq wcexmm
+dwtiw nelq hppad algxgf gcc upou akm efnb mxmhrud
+yxqaa ups okbhgt iet qns tqn rnjqxgp
+npmhdm cgds ldexvr typi jyivoqk zkgq vfyxu xgfo
+dkwnmr umm dkwnmr okpjw wqx jpztebl eqsib dkwnmr
+dxbild wpbup evscivq dxbild dxbild geqp ojfbpl jshvqej
+cxdntxs csfocjd pyy tuhws teb boyloz xfw scxh pxhonky
+lteucke xrgwy hszgzu hnyrcvb
+pfgsgwg dxzh fworek qbstod
+usemcrf psczxu gcjtr brls
+hjol efxczux bqdn gvrnpey yyoqse gbam ndzyj lbwb bhzn unsezg
+bapw xifz blupk qqdk bofvqpp wnbuwyt rnwocu lzwgtt zucag pov
+xkre lqvd juf lqvd xio xyg xyg
+tzdao ztheib aymcf aorg iyawrch hetcxa iyawrch czdymc ccv
+ucgl azlppu jvxqlj pest
+dvwlw fuuy mnhmm okrp ualnqlm uyuznba fzyejk yaq crl ctprp
+odfq knox mkbcku pxucmuf lpjpol phl
+ixongh hfs ruorbd auy qyssl kykwcix aytsm rlj aytsm duq segpqhk
+izufsk wedpzh podjkor eamo vqvev ifnz podjkor xrnuqe
+twyfps bmdbgtu qye qkwjms
+wlav htym vhsnu cocphsj mdsuq vhsnu jflgmrp
+opajag itwjhfu purnnvk opajag
+hpkopqp vnj aialpt lzrkzfs nwucez nwuezc
+mcx hzcjxq zbxr dsx tpknx fva
+rlvgm xrejsvn ghawxb efyos xty wdzdgh olahbtn rga efyos vhtm nsr
+cni mbab qtgeiow ulttn rckc kmiaju jvbq emyvpew cdlxldn ulttn brhkprx
+eykpffp rapik qki fhjgdyu tome ehjuy bibjk htxd vexvag
+wrk dpxt gwkuiov gbkif ike gbkif pcd wpj toywyf qzsa aol
+yqwzh uujn ujun ujnu
+srs ralwxrz yxvvmgp sjhbhk waasid cqtxoxf whcladv jkmaq khjbsh dlavcwh
+mdvsjh xaj etvxlsy fxgiy rgjesel rlegesj ptriz ebdyhkp kugxm dxv egljser
+lhehwrs mqevb ygmv gri izop qgb ivm
+loqqam alojlwg hgen hbyw qlwpun loqqam worgnwk kope
+phozre todsknr todsknr ibj mvllsar
+wuripy ruwlfbh wukbkey qhq iishw tvtvci xawvxc vxacwx hsiwi ogq
+xryq vxwupqa zhqex aquxpwv bnvxrba dtbxki
+yvvwh zvsm vqskhp vqskhp ggqqlw bpn wbuv
+kqz tdy goqwge ygn jgd
+szjjhdk zkpoo nxexz ebicc
+wzuemcj oyd qupulju iaakzmt vzkvz
+nppahov umm wpzev wxkgfxd owgekp bhhb bbhh dgviiw kdfgxwx wryb
+bnc rhes lmbuhhy kwbefga bnc rtxnvz bnc
+ani mggxf mcoixh zdd nai hbhzl mes bdpqr
+mjn uinoty jjegvze bjgqg yhqsxbt coj obylb hddude xqi rhfbhha alood
+cbjzj drmihy tfkrhsd nuhav hihzx bvblqpl tdd szmp gjgfv box
+uumhdxd cmwgyf vepr rwqdkj exwk
+hwvr ydvw bqefu kghes gvbhp awms iqsqes khgse
+mrey jqfw fwvzhps komj dayvs fbui zmtd cofn mrey
+dsjds fdpx irjj usndok qcctsvf fgk wvg txwxcl dxs llp zyilwtq
+xmkelgk fdukc cye legkxkm wwly
+enlny eynln cccku brkz dpof mwfoxcd yftmnqh wpebvyc
+ggdn jnysl dsacffw ukj hdae cmzxku
+uqhm gcachmn kxndfrl htmfis jfnajz fiqiypr kekho kekho ndcw ckrndub dejfna
+keazuq ertql rauwl keazuq obmh rauwl ksrotm
+jppp poigqhv repfsje grjk xwkyuh pkx ayzcj hoxzv
+yhjw pcuyad icie icie icie hwcsuy wcd yihjh jnrxs
+gaug ivvx ceb xujonak hbtfkeb ttciml cctoz
+dggyyi dggyyi gqlyumf yasu fwdfa cbb nncn verhq
+rhgcw gpcyct kiuhbg kiuhbg gpcyct jlmleo nhumm
+wulxxu jyjek hclcp ogob viex wiqcupq
+tthu nxgzpid kcnj mss ukapgkp nnc bxjocv qwxs oejwsif aywqtu brahkb
+dtde bgvb smu vbbg zhlu
+lyo nwjjmep ldbok wgxhto wwuh qfgjknk wnsl
+lleyr onha hkwulbm jfg
+bybjwd uoxvbh mvj iqfpnxs bybjwd zqtszp wvc lbazjr zkzenja cev
+rbuyyr divtslq yuqmyt ajyveb smxsjb nlk tzqhq ims fewg wpjhr gqh
+kpewfd beq klilis klisli eeezut
+euqh hueq ldoo crqurv lvrwh tmaewp oodl
+bqi lzrf jyhvxfh bqi jyhvxfh nbztd lwpdn cuzi
+srjylou phavzjd wost uxkaq byh sluryoj
+ihrdk bcegkpq nygrs qbcq wyjg dvzme pgzhjl vibg kvv
+ijsx iedemek ktlz gtga tbal lbki gtga
+vmiaxn kefig kefig vngxz
+vrdmfvi qts vlvhq vlvhq dihmq
+cfz dyrz zlw qnt vok fwvahg skshbqf hbwozdc ntana jdb uflp
+rimbj bxemw sfps krtk umta vnk ewmbx nrlje ymrtqrz mxewb kjxunbt
+egnuti ozat eltl ngueti
+qtcwoxq rmaf qtcwoxq qtcwoxq
+zws gcoa pydruw qsrk lrkybdf ugr wkrxoj nyvf vitwn
+tmr hhd dojid zwrj bhsim righ keqlep flzunou
+lwoquvy acjowxk tqudk oenvioh nyavyl
+rgh dfhgyke iff cpxhuz hui koe iff hui dmukrei
+bjiumig lcbmbgh vleipx sfawua rnf
+gftfh qwb tfdroe xbno qhgofm vqfoe mux
+ljdrr gyfggai iun nju xrucbis mhrcrh fukr obvuqc whlalfe xrucbis nju
+nxjmjr egqwg arllu xqaahri lzc ivt uhsti
+sqiepba rcmts kvesv nvp
+tiksw tiksw rjni gbhvzm ctbq zuqfyvz
+ibsnm kfka aoqigwo sqouih rxz
+jmymq lxio adtmk umyu sxvzquq bporqnb heol fow
+mepa eckq rqviawv dkqoei ifmngpp jiava rtklseu
+yuycd jiufjci yuycd uowg yuycd udq izkicbr csxobh
+nwu tfsjavb rruoxbn oepcov elxf rruoxbn rruoxbn azglwth jcjm ksqiqpv
+dthfwip zqnwa zqnwa zqnwa
+gso wruece ufl crgnlxv vllsm dpyfm wpa ctxko
+wvpze seodz lpq lpq pmtp wsxs ffppx
+yfxquj phvjn rtwieq rtwieq kgxztyu vbjvkc prqqd lyzmdo ojbrt ojbrt qiqjz
+esaezr rpggiy jey kbzrhu uthus osr xxaiijd qfxlf auhzbx gkigoqw
+yfhcj uvgck cds gjhhrg cmempgj yfhcj cjb
+yxi voxvtuw unwg jqqm
+igvjr ljz rus sru gbjtjt qfeg ztu zjl
+leof ocxns hbkoysh hbkoysh leof
+hab lyxmf yhh qeks fwhfxki xmbcak okqjii nfgzyg bhtfgdj lpmjn
+mgognh tad herere lvwnzx ixwqs zphmuuc etdjz kczsf
+mtej rlolsnn zbl uykek dpkan gmz etxtgj
+mihuieo emjgbp jgks mihuieo iexrfw mjdnr bvp mcuzea xkbusvi
+jvqpj bwt jvqpj bwt gxr
+qpnd fpt tpor bibbpcg hmvguez wqc afl ckviua gpi
+dntmcg jglm sxtnu sxtnu sxtnu
+fzkbptw cbfwo ozvwov wbv gcdd izqo ovwzov lolewo xikqpw
+nkxyxzd kpn datf fki werq mwidqx oiibor zizcjph
+xvgyxym zor ijoy lvwsf fjuara idvvq rreit mqyyy ctio tzwqqhj rnpee
+maqkfpk maqkfpk xukg sfdmnlg xjopvr xjopvr irf
+liujcd vnlkouy dxkwc gto vhjvtw
+swhqhj cas aupsd swhqhj cas bvbooii jquck dtdm
+igh iqicicf ghi pcxt srcrjx gmf gyscphv
+drplj drplj wopgpnk wytag wopgpnk
+zexe ilcqoh qiefb txkuv lirfzv
+ovvpn ovvpn uqeurqx uwzn hgmucj ovvpn sjxulms
+rox silka irhsvym kutus otasof tdneav pcagds
+mkja omu tyshbfq onp trxs lxa tftbv bnpl djhnc zdqfs muo
+tjj rmmqas cbbkxs qio pikk ykyew gxlxt nhsyl ykyew
+frcprg njrz oaxcmhc qben pedm ecvtga nzxwpb ior gaklot dpem
+zyt kncau spoe qlchg sqys wkpbng yflju qlchg vkve bzadbpa
+qtq pkaicl qtq mfkfqvr dnleiq brrjxsx uoyxh pkaicl yvmlug
+firwy imtlp ywl qfa dqrbazz ztzb pcsbwhn zesmlag
+ivey ivey mtvc mtvc
+lhize acwf moa cdeoazd voktshy qmvqq jvmuvk ljfmq tsanygc
+xreiqkc aawrovl pofcsg xreiqkc xreiqkc
+cjbzvn ozds iniqu sdoz gqmki bablvll krs vjzcbn
+izsod htkeqz entxn qtns prpcwu omfnmoy
+kwfb tctzda aztctd tadtcz gyt wunbcub ydiwdin xxk
+epnl ijcp giq ltfk zjcabve zfksmz epnl giq xxxbsom
+ulyukpa mdjsbn dydko uhkdt qms aaaj hustlwu
+zlsbu ohx jcwovf egf zlvpqgx qhejm wrywdmw
+uhxqrzr mmu kjxcalj unuohiq rri yzngnb ikvlxry mfiym qbksdx
+khqciz som yklmm jceb khqciz jspy jceb
+ncwggv njvi nqox krtsn lnm
+bgtqme xaxcoq qbtgme obqual vorfk baoqul lgrb
+jli tsbb nlxjc pkwzmz dlxrj hmho gzguko ilj iyaasm
+wlmw grkumg dynwtyo emxhhqr huluk slpqu uhqcmd absmr ufirmwr
+pbs pcammxv dplfr tzvmav nccyy blvyq ffhnz bccutq
+hgge ghge vxmvz hqxgjdg zab guo gheg
+ylj bucoyoq udndc wpgyrbx ueh udndc gxdsdh hdoz wwgqlg
+cjdeh gttyqe kdkm ltzd lfeozse quvjq mnwhokm kdv oojxm nxt
+mfkzus knqxt saxkqww njx zumsfk sbmcyad cpt agvbuv
+tukn vyco yobvsn bzgnn klrnzy kea thzk pxpwq ryfff nxzm
+ylbm lxlz lybm lzxl
+wgtxoij zad slgsi cvnxfg iomswwl vmx
+hkm yinhnkj kmh kwkw kayknck chur styjif yknakck
+rtfwhkq rtfwhkq zsf zsf
+sldq zlntr ueegiw kajivqc ozcbm ceft snvugom pdyc elppeed nnqrp prwwf
+lhk xjonc muc tudag tsafx mmivb dvrjbp qgrew
+hnzer fbgqp aazta aazta lxaz lmgv aazta
+victgxu victgxu mlpd ummrnbx cazjgnw isxcyp efy zfa cyusj
+gyojxo onzq gyojxo uxufp awi ilhl wefwfxr gcjlt tmliynw uxufp pdcnxah
+wjwachn xkuhfbp oky oky ybaeqkr rbuix yreoaw wepmye brvon aasb
+kiidorw vxtxiqx wtqvbrv efdth isel qbom vcssyc vxtxiqx wtqvbrv riafzsw mqzsj
+eurpjd vkhdamt tmfx czeoot hiz ykz lmixzq tfur jhzr
+ipuftpj qbll sqkkdw fwncmiv bri oeeh lehd ioh wag
+suima nanngc imrmc krq atxdo woy atxdo akev qlr aezco qlr
+cfc efwbzck ozkmcxv moczkvx ccf
+bnekky iakrk sask uwgnjp iyi rynev bdnas ldh kass
+sicmw vvjbvv cap nsumc xgvrlm wsoo uoqdu psykckm
+ugg mtr wnzhmmh tjxc ehwnji lwhu mdsckk yvmk enubrqo
+grb oxmxz ohu ytetedv ssx apzlppg fdkamm sxofc jdt ynmu wyejok
+umoep rbyqm eqfk twqnog cptbbi dragna ngqs ffb cexxnc rbyqm
+utizi ormkel wvwur bdx ecelqbv xiccama aag glfvmj
+znb rsuqoa uxo svc
+obs lbifa cffi catpd
+qkxwian ajlzjz wewduzp bbyv qmt fsr qgiu epinp ghmf
+hatg bfgmb aght ghat
+kuq inp dun cknbun wmwsu drlmmg kyxc bdl
+bddybth swdbf jhi fva qpobio bjwm wjaztp jywi
+mgckz vhveu zkemhp zdf xtiqqew mlx wazgd
+umbjq pya lvvxf jeavij rhrxvew bwjqgpr piz
+xaycpwo vjcuc qksc yuixhni sfbfb dydyaq gdfvb tggg xidphvf bpjdrl goskxym
+agxfoip gguif wvo agxfoip ntkbaw fbyggy ooft zxih
+nzvsu ffwq uxvfbl qrql olhmhom qhdltg ymwz krtndtx olhmhom nfsv krtndtx
+qdp jqk ustz xjripzv mnk grnodk pjwdsj uug zqxjqj
+mufrcox zunisfs ocvcge acamm xua vor bsde kxr vor kxr orccxx
+ncycbp anvcxay bmm wndmeaw oso knmk mmb wamenwd kmkv ppdd
+motdcn xzagzwu vuzt utffrn yuqxzrh uvzt ujttq
+tauoqy coiy ybesz tauoqy wpmr trquyne ahxbj jzhems dsdy
+aczq ypw pgmzz srfn quatjgf
+cih ypapk bfxvr euvhkk gugru auhqui
+vyf pssgfvy dnhvbfl xpacme dnhvbfl mzdv iynq hcqu
+lbzvbu hhxiq hdfyiiz iyzihfd xhqih uzdqyxr
+iapbdll vdr cprmrkk vdr dfjqse mlry flpqk vdr
+grrfkq xcpxd grrfkq dxc bjpr prvwh swoc swoc
+bopo chvwuhf qhd ieesl xey ieesl fnjcbe
+kic fyq hsucnu agwyl pzzmd hqksh psw
+mxf uau iti lcoz lpg zbu ocre wqlocmh mxf nidqj lcoz
+bypmix ptzxgmf xmtzgpf hrvzzq
+lbfw zwusma lbfw tuyyy
+lrf uej unswvh obgsb npbl zajr kenea uej qnyjcu wzufim qpzkgya
+qcrxj llyu kligt hlm ehwtbx dda lgsvhdt xewfcv uikn
+nfzjx izqdbq mfbxs imiuc yqxb xlmvix izqdbq eflqfq wku omgtuu izqdbq
+lasdwg hiy btzt eefd eyoep icn nnmhg otml rek luixac nyzgn
+vekteds utsuxdx utsuxdx vekteds
+feyov qrij zbebwg ijrq seplram wttkwm zewbgb kzuhuh
+dmkgtv wohgqo ddtqmv zatahx mym hqowog tkmvdg
+vhha wjrmuyx kqh vyyrj xzchbi ejsdq orlxg vyyrj dlrc
+yetngqn zdtuqox hkarjei fqpsgh eaqwbg zsssog ghb gddqqzr hbg
+obldb zsrhz zxp uxphnev mwnbc pfjft fms xwslk vjm fxy
+nfij dbfykv ttq gyjgac igxuyqi gtiioqx ilhdex dbfykv uyp bdiwya gqf
+pffzruz vogfosh dcs wje
+pohhf fhpoh oon yyz
+xxuam afwm qxl lnt syyr bwxhhf sozauq shlhfmz kwnn milav ochq
+wefcqrt gejw cwerqtf fttf gjew
+jfsvnmr osca epwtle pgfif sxom
+exlfzmq nakp rgdnx rrcvth vhrrct aajjdrt ryyg dsozd jdqlqj pakn iruv
+rmcvo txszcs xxhyxz hbsozk wshkocf rmcvo rcbnt
+kitz yjgney yvkymef nauj hmllsgl kyhm kqr pzsu rcf pzsu qpte
+cdinpx bfur mkj naz ihkheyr nohhoe
+ylris xeqcgup wap bbfih tgfoj
+ina gnlnm zyeqhij cudfuf ipufae bvkdzni aat teqsg cudfuf bjokrbl teqsg
+aedx edax dnfwq qndwf
+rdngdy jde wvgkhto bdvngf mdup eskuvg ezli opibo mppoc mdup zrasc
+qcnc iaw grjfsxe gnf gnf
+zbjm snznt zelswrk gkhlnx dqxqn qqxnd dmro
+zisecvx ztezof uzbq otnrtj qsjzkwm ewvcp rlir bfghlq tgapdr qxmr
+ipnqj opjf vabyoe wkwnd
+wyf mfqxnrf apm snarf jqu aaghx pwecbv lvghayg
+acncv jmmbwlg oiphlm ifuo cvt
+pvmb egansnd zmh gcuzzci rrxpslv ubith
+uoleptg xbouzn xbmg cfh cpn wpqi xbouzn xtxis sxzpns
+rilybri kurbpq vfmjpck tjyogho hfyxad svfofx lfbbhxj khaerfs iqr
+seaebgz wlmtkre qguv qguv wlmtkre
+sgo edkxya zdqgwtt gxu nibuu rairqoq mzxli dci qsv
+tsol mdhzqr rmaqnru ggvcq arbwkn hlkcnj ljkcuof
+mmliphp ocup puoc eijjv
+gmajqpb ijki ijki kvz
+pmqss unhlpcj dlkll nuhlcjp expe tlurzmv nsy vlumtzr tgseozl
+gkvaoni hsba hsba viuedv phyoclp fdq phyoclp febld nqfs
+rxvdtw abn pntv qrqfzz slsvv abn lrxix mnu npot
+ghlfjp woy xwkbmv bkahpkj jve cncvk jvdype fwgvoju yrkwjp gwfvln mvkv
+kmluh mie bby fwer chsinb ojglqr nqk mie
+yzmiu igkgca ybnsqja jpfejtp yjddy xsosxfi ingx qwuhb emrkwpx idqjmmm
+btrllw mphm dkvo ewdl dchcul yah btrllw kmqi mtvgk wtb
+hxsgard yuikc lykt tdee adprp gpougod klnzk mzsmlb
+hdn znblw ifoblur bwzln dbv
+smofpbs vjuyiro llk lfzesga tybu tybu
+gffnpug xaup iqiyz fjkpnkz drrk fwyxw lwzfskz gslwpmv vjxylva tbkyo nib
+evydmb nhwuiiu fkerq nkgbuyy uclrs ydjgglh xhotwbm riirgzt
+bsub eavbt uvd dpzwyt rhn khrbptt xszckc djnfxju axofhat powmso nvdffrv
+xtuykl fjz mbikc xpnx hmey fjz fjz
+rkls nwdcsyx rkls rkls
+tygml untequ ybdfumz nqffbq uipc sove hfnqj
+ytecew vven koqn royynd qsn ksl qsn sdw
+hknlw qwho whoq oqwh
+lzmmtqu qvhyeo cnofuj utpwkjz gnirz yhhu aodbnd
+zsr axw kwtzcv tydzo kwtzcv lkxsm
+rbjtqe nihifd gvdxd bpxzy rxteky vgcgllv vbbua anygiup rqo
+dpd wblfwp wblfwp wblfwp ygahc tqjbaq
+gsw gsw pacgj xmrcz zmxhmch xmrcz
+pdq rhe xqmq lgpkhg fyffrot ovnqh wle
+tbjavke ypzzrj jizx gdxoh icjsat otfh fmygumv
+snch nxlgjgp jeyn sxoqfj jtage jtage iuice
+rtb coefuj grwg grwg rtb krhqnma vfhgbr
+vhegtl btorwxg szcev kbvkx itsk nlzpbed
+hiukrf ilzkm yllhh xsgwkdp zyy kjbv
+rfcg tdorci zcj wzftlv rfcg rfcg
+lgbc lzizat vsno pau nvv vsno bbr lzizat qhtb gwp
+sfwnio tcugjk bsfsz ykyfwg ibkap fsrvy mygk kzunawx zyhyh
+mpavlh qps bylh lttjkz rqabgk vewb bwev tlzkjt gzrbxga ktmso prpkj
+gpf ims ynh ffrs vpa iemp gofh cgbauje
+secys qks mcnfhwh drog kqs pajy zoltkw lfihnb myb ioxptu
+ytq nrta ouk ajqblf yuwwcd zdy blyoxbw dakk nvgi bzrhzaa
+nkoych sufiia xkdvw crtldee zycl qblab egqhr qblab
+nllno muxaf vds qjnitmw zkpj wskyhft kmqct xamuzpw qcai cdjtbt kaxv
+qzdytpe osr fuw osr qzdytpe whperd rydwdcl knoa
+zkdznhd peh duoygr zamrgl irnvj otpe pltpq jdkecg
+byzgw rece iigdug ehif tpgje
+ccnn foqdran gbctca tefdjxh ntcr rjciii xip xlss crl wvvhzqm twyohf
+dqyii milqqc qjgkojp qjgkojp ryde
+tdkyj tbrcud tsba vqtmb cjwxnf
+hqhmq wemvrce nagig pwnw nagig epg nagig vlsi
+tqgvw luoplw hccti npjm rytdruq cylrsun rytdruq vjsbjl rytdruq ppti
+itgt tuwc itgt rvp itgt tigns eipl ksmru
+pdw wdhtkn nbdbpn wff zhuuipg rvemv qxr
+qgkwdq cjilayh ymeks mrpuzai dwgs stfstgz ucvqhb yout oiq
+vpxik ypfr qytimvu qms oxbmw ppyfx
+fwwidn gdhd pyuexk snsz iwndfw
+lfcb sllxjna lfcb hpzahfg mmvgaa svny jhuzd
+unyg gicmzd fwc spkciy toyq wjupckd vzzx iuqgka ytqycb pxsufj
+goj tnrcml eyizngj txa xrkiw zvu igduz
+wek xrrlkna clyof rrlnxak
+cjm rmyuku vjom gtf
+buk cfae awstd dywgqp hxo wcxvf laihqw xdqfes wdbh qceh uzlwj
+sudguo dxwplto rlebdh bkamu dxwplto
+crwkyxm yuz kjtdhom crwkyxm
+trhc sduorxr aizfryh rsudxor gbyc
+pczkyl bptp qnn nxmpwsx udrg hhlb rubtrmx twzodlp xygnht
+jmqct cden yfajtkz fevcw sxonbxz sxonbxz qkzkm hhngr fbv
+sdsnm mwvicr wypfi cty ndbowr woiz mrauwzd qlno mwvicr
+vteyo fng lvr lxytn txpj milg
+wjx ahtmgo cgwcaj kaxae fhlvlqf
+ezj eetqhzu upwda iiefwlk vyvby
+imalvy yeghqe jwcu mvrod cwju
+bxnmsa yhfu npsdar tsbri hfuy sirbt oofxmy
+fkndt elbjtn vepqtxt elvpf fpelv bzkgag qttexpv prblwb
+rmq iqs yvprnyy iezqrzm wlqsrr
+yviovq lekxghj oey qwhzj lxknxw qiyovv ksnt jptz
+tyrg cifxt hugqf tyrg ffuiv jmax qyw fozfosq ffuiv
+nmg rsl jpzazd qbtlf yxqtsj czwmdfd bamge lbjdof uqy jssc
+cbx boozjip pwgvzlq rjz kxy kxy hszacok fvsq jhnir cnsba gafz
+sbcuxb wfur nnnfqjj fdwg huhe sbcuxb
+icwk qelbxs uevp qped zsnhh wpuok wddxsln ftnzupr ruxol cgxjb jbhh
+izcp htykj xxmndoq amnspe htykj
+vverol oixwlny vqd tvfzu henc gnyrwr
+ytxio etytsx choynep zqapo hfjit
+lkvgr oyzfa taiqr jok djatvy ckif tmdw oyzfa zroy
+jlgpyp kkqysg oqjki hjohoug hbhta muilz zft
+sumfyu wftcu bwwdcy lezimwa qwvxv zwh mqyv bmfot aii torcol rnt
+tpdj xrw ccsbnh fhptv fwkxjfm dmqaokd bjci
+zxi vmf vmf dpyg
+sfzxysw lcms bkojtv bkojtv
+opywo qll ipkitr mtwp tudrr svhyp huz bxsdpn xomfy
+gkod luo qrosbp orbd rpsjzyd rlh gdok tze
+nusiuq nusiuq zeys ahufexc
+veno jntg avtmtdn qojxru zegdcql odfcetz pgehau
+uqun vigjm ykac ozlelj danmji bibugox
+rpuozh ajwru rbvuevv uhzsq
+iawoe tyb aewio ymf byt inijv ctu fcys micsgzl pbby alt
+gktyxp ris mqpfm bkqsfl nrg idbbcxg jhcf
+qibt invvv qibt luitx rnm eby hrfbmwl wnap sgkzvb qlwc hrfbmwl
+jwkv qecsjbw lycgldd wjvk tjcp dycldgl pzrvr zrlcf kji
+nzsrmiq nmhse ilivrk kqv
+besmyzi imkgpt iekbjax abxeijk uvzs wwv
+jdocl uki ltswp tjkljc ymce iuepze qygqxzs tei lkry
+hhyfy gvzd mqksxlq czn afe mesnag eep frwgekg mqksxlq phpy
+ehg connnza ekt ddgokw
+mpbsoms uzhzl xevww ztt uzhzl
+lftybr firc awsud dsxdkk ltf ipjv dtx lcymth
+vkcpb gxtxq yioeq fexj xxgqt
+srvca fslnnvf nfmkpvt egw wemumq jie vznf dzsjw cukf kcvyir
+yxjkl lyjkx jyxlk kgc xtz
+tpoe xzov csp leleoqo noyre tdhf cyib sjgtdx raehdw nmcxp
+qvt uhznqe bpvos vtq ddlebtd tqv
+xlw utsxs gpia rvlvnts elkxr dddihy tnrslvv ibf wlx bxg
+cwqnnrt rkkqyf dye yde fzl pthanj
+boc rqjenpp xjqte jteqx pvoofc pidqe ruoucy gvnro ognrv
+qhalb gnazwc fhl iuti
+clnbjfo nnfs nnfs heymvr oarew oarew nxu
+lwtrotg hiaxwj ymzbly nvhzjhj zlsaheg nvhzjhj ymzbly
+rrvi tsjp tsjp tsjp killji
+rpx hiclj cmwq ibhj nfd
+pvwymn iebkd xmpw vuhhkap ksw zigzy mzzyyxy rmuh iwwhea cglfq
+rlwelgy sffml jin qsdzro xlsty mgqzuu etxjuo emzd jgnoyq tkjuy vfvb
+tkctdj hhkuc viskmy obw
+zvjkuj akeky ikj jqd hfhzbwe bkc
+btev nrdo hcyiuph stf qharfg vpmel mpfz nvs ytgbbc
+ieepn ndueuw svmdr tcvumw mceyrn mrjwhyl tbdj mgrgvz
+uxrs ckyi xpmqm czzrkl cjp
+nlliwd wrqkrkz yjmng nlliwd zirde hcjjn wco ysf mgl
+dxti lcahe ommare izlwf ramsfb nzgfvo ijvm fwymrdu bndq
+isxy jpvuzu tdduyhw dixp cfa fkzbteg ytoi kepk ysf yqcpi
+qmeprfj soqo ncgeor cqsuuj grzy wogxy vyblnbg slvtry vdols kka
+ltykfp gtzl olrp gxend vapee deq
+emywfbn dbfiut rkt wvwe dbfiut bwffhea yuzcxv gogpicp wvwe
+vqvmrp ofbk dlfabd jwllzxk obx vqpwjj umvng tqwis fstxy fstxy
+miha zgvyux rmraszo xwf
+kjaagk btm kjaagk wkewjrg kjaagk
+lbmli aizs omrdr gzktnx asiz ptanzpa xlo ljre ckyb wob
+svz dlk rijagg avxmg fkzwhk uro gegm
+dzplum temdw jqnm tvxcww bmg tftttpp deuw comxey xfimzjx caluczi nqn
+uwvhxa ztkd nlsdyt vihl julkwwv uzch dwakhs
+wkhuihh ycrc cxff vzcfhpp uegfd gaok kcnvz lhzogq lwa tyrypvu
+idp zmrrzp zmrrzp nktp xsnx rjsxn
+eybrnib ivgntl vaxsbpi eybrnib
+nzvnq xvbfa pbhwwh ylju runvsj imlx vztesn
+nfdohd nfdohd gtevnky pivjyct ihvd fzcsrq lko fmqk
+kwpkks ecikxu bcxswlt qvrxm sbcqmh
+kdjrmj piuh kdjrmj vnaf gyedkg vptxgm xezssxx zsg qjzpo zsg
+oqo sley aqx qmpqb fgmylbj egd zivj kepxizv kuakyn lunbnd
+hmcf hmcf xlhgc hmcf cdlm buofnx
+onjcj yluonz kzmk phqo phqo phqo
+ohaafy efl bnkkjww wwjnyoj dxeaig ywnjjwo slk hrbebw ohlyju elf
+msohiqz aunk njki bfktdgi htmyrj mgx
+numlzrl rmnlulz glb ltt fhbajz gqxpu
+gko hco oai ryq xwy sdqosft spjkiu cxfhg ycwpglh noy rah
+btzpjem brpk vqr atxu rhlh rqv jmg fvyus
+phmxxgj ejx xje qtk hsb kqt npwj gqt
+hujyjp nwmsd ant zipuya lrkahww uwqal vzlo qmbo twkjkse ufivi
+zfbnyz fwvh xrnrw usn zin daq iwjzj
+yykyg iwypfy hehqnl cjvk cevdrec
+gui muuto wsta glqmx gfo rdmbv mxwz gffzt eejpw gion
+lpng nduid iqbpu nduid knrqd
+xwxn oefpckv gjaua ugaaj gjuaa
+qxk aeql trqdmqc crzlinj crzlinj trqdmqc rijcne ewyf
+rfv qmbe fvr bmeq
+upqyfw lowzq wpen upqyfw gfskbil sljuzh wpen
+bdcara qyhx rtaez qyq gbyr
+evzls qxtxq clzd svbgqi zxlzgss vtrre fko eebo qjyl
+zaapeo kpwhz tygknau nyd pch trp xqe
+ypzcafg rnqmbh qtteg sncu ssojhhm zonfym thir xmgheb wqj gpjg ssojhhm
+wvcwyn xrf muozyya lasdp xpjgu kpqv zkiihiv ifje cbdlavg xbied hfnaa
+qqqb rettz rycukl ihpkhh
+dnxzxqv znb znb fbxj azxtezb xvxa
+peqkd xlzqkov esgnw ucku hrwpfxd xtd vnig vlmfp ajte qswr kqoj
+dpwy oavzkk dwyp ehij upqxgii pydw
+amfc hfv xmqa nqvn cal rqmcq oej amqx cla ntxj
+hqhhe qkbhwli wmhlcq xaczs peywuo
+vcr xfv xfv kymo qpszwzo xfv
+nmrbur tswo xbo ljlrzo bmhpgc pev zovkznz lok wbbhtkk
+tojj lxqgr rhjavrm ndsdup gdbjwaq cqpnl wfaxivl rfry ryfr udspnd
+beffod sknlph amb feobdf
+mldgn jxovw yuawcvz kzgzwht rxqhzev fsdnvu vluuo eycoh cugf qjugo
+tlnd qcxj ker fdir cgkpo nrqhyq raef uqadf iahy rxx
+mhvisju lhmdbs tcxied xeidtc ujry cditex gvqpqm
+cgc jazrp crgnna uvuokl uvuokl uoiwl sknmc sknmc
+rvbu czwpdit vmlihg spz lfaxxev zslfuto oog dvoksub
diff --git a/2017/inputs/day_5.txt b/2017/inputs/day_5.txt
new file mode 100644
index 0000000..3b5dd14
--- /dev/null
+++ b/2017/inputs/day_5.txt
@@ -0,0 +1,1070 @@
+2
+2
+-1
+1
+-1
+1
+1
+-5
+-5
+-1
+0
+-8
+-2
+-11
+-4
+-5
+-10
+-4
+-9
+-9
+1
+1
+-11
+-8
+-19
+-14
+-6
+-2
+-1
+-11
+-23
+-8
+-7
+-9
+-26
+-1
+-8
+-11
+-34
+0
+-22
+-17
+-41
+-12
+-43
+-33
+-15
+0
+2
+-41
+-41
+-26
+-48
+-52
+-47
+-30
+-38
+-20
+-4
+-21
+-17
+-19
+-55
+-32
+-12
+-55
+1
+-34
+-8
+-15
+-59
+-56
+-16
+-23
+-43
+-5
+-41
+-56
+-32
+-67
+-14
+0
+-28
+-32
+-7
+-54
+-19
+-9
+-24
+-63
+-2
+-60
+-5
+-78
+-11
+-84
+-50
+-36
+-72
+-14
+-30
+-4
+-62
+-6
+-1
+-69
+-17
+-33
+-32
+-45
+-71
+-87
+-71
+-60
+-19
+-80
+-11
+-106
+-45
+-27
+-23
+-51
+-77
+-67
+-103
+-17
+-98
+-109
+-91
+-125
+-68
+-39
+-34
+-96
+-49
+-64
+-38
+-105
+-31
+-100
+-89
+-108
+-69
+-36
+-94
+-38
+-124
+-123
+-79
+-92
+-42
+-14
+-87
+-68
+-17
+-36
+-21
+-54
+-98
+-79
+-142
+-25
+-60
+-112
+-99
+-64
+-15
+-78
+-37
+-64
+-15
+-129
+-32
+-102
+-74
+-112
+1
+-146
+-151
+-147
+-153
+-4
+-181
+-22
+-176
+-4
+-57
+-151
+-86
+-121
+-38
+-137
+-160
+-156
+-72
+-73
+-149
+-64
+-182
+-117
+-146
+-180
+-195
+-27
+-194
+-191
+-108
+-153
+-40
+-149
+-100
+-120
+-207
+-83
+-94
+-73
+-200
+-95
+-155
+-94
+-76
+-9
+-149
+-70
+-125
+-49
+-146
+-223
+-68
+-139
+-26
+-132
+-142
+-165
+-2
+-45
+-154
+-129
+-130
+-185
+-60
+-34
+-173
+-91
+-37
+-40
+-153
+-189
+-236
+-95
+-128
+-46
+-14
+-53
+-245
+-67
+-9
+-208
+-244
+-198
+-74
+-62
+-104
+-51
+-251
+-48
+-50
+-115
+-76
+-79
+-32
+-82
+-65
+-185
+-124
+-32
+-189
+-124
+-174
+1
+-273
+-223
+-275
+-238
+-200
+-184
+-229
+-195
+-152
+-63
+-150
+-73
+-44
+-54
+-187
+-49
+-250
+-192
+-290
+-282
+-266
+-214
+-117
+-199
+-83
+-104
+-251
+-176
+-262
+-296
+-39
+-259
+-87
+-132
+-166
+-67
+-194
+1
+-294
+-8
+-3
+-264
+-217
+-228
+-233
+-241
+-294
+-210
+-72
+-307
+-259
+-33
+-101
+-103
+-235
+-100
+-110
+-253
+-292
+-134
+-269
+-52
+-265
+-15
+-29
+-272
+-126
+-210
+-151
+-308
+-40
+-40
+-112
+-268
+-185
+-346
+-237
+-287
+-34
+-302
+-41
+-25
+-191
+-29
+-170
+-95
+-315
+-278
+-160
+-220
+-99
+-126
+-224
+-33
+-350
+-76
+-138
+-340
+-284
+-268
+-128
+-238
+-197
+-93
+-110
+-120
+-190
+-140
+-64
+-217
+-296
+-103
+-363
+-199
+-254
+-233
+-190
+-282
+-136
+-174
+-309
+-61
+-206
+-18
+-105
+-111
+-163
+-287
+-188
+-145
+-294
+-251
+-398
+-265
+-273
+-50
+-250
+-376
+-5
+-357
+-6
+-8
+-198
+-20
+-82
+-158
+-122
+-196
+-97
+-183
+-48
+-428
+-36
+-88
+-424
+-35
+-380
+-109
+-209
+-323
+-394
+-102
+-276
+-153
+-229
+-320
+-391
+-7
+-328
+-127
+-430
+-102
+-372
+-447
+-222
+-401
+-184
+-183
+-49
+-239
+-413
+-101
+-187
+-289
+-12
+-418
+-248
+-279
+-318
+-134
+-443
+-272
+-456
+-143
+-3
+-209
+-276
+-414
+-189
+-302
+-238
+-241
+-106
+-332
+-375
+-400
+-476
+-9
+-95
+-412
+-52
+-127
+-442
+-278
+-25
+-446
+-411
+-39
+-55
+-80
+-234
+-361
+-223
+-384
+-283
+-47
+-164
+-18
+-38
+-87
+-393
+-93
+-380
+-493
+-73
+-150
+-241
+-378
+-211
+-516
+-349
+-520
+-38
+-397
+-406
+-16
+-461
+-276
+-448
+-316
+-376
+-156
+-369
+-216
+-431
+-309
+-400
+-135
+-523
+-40
+-508
+-87
+-25
+-151
+-355
+-141
+-3
+-495
+-153
+-438
+-343
+-161
+-66
+-455
+-70
+-248
+-278
+-548
+-300
+-337
+-290
+-551
+-200
+-68
+-540
+-476
+-395
+-245
+-318
+-424
+-112
+-556
+-541
+-94
+-148
+-542
+-100
+-120
+-199
+-569
+-471
+-298
+-16
+-453
+-469
+-50
+-500
+-84
+-435
+-579
+-287
+-522
+-77
+-83
+-347
+-437
+-171
+-231
+-139
+-350
+-357
+-221
+-214
+-224
+-148
+-125
+-385
+-255
+-38
+-320
+-254
+-517
+-532
+-80
+-286
+-58
+-97
+-390
+-309
+-548
+-319
+-323
+-238
+-297
+-12
+-312
+-517
+-434
+-466
+-103
+-621
+-448
+-503
+-72
+-601
+-287
+-61
+-577
+-87
+-143
+-33
+-482
+-275
+-529
+-340
+-279
+-130
+-512
+-63
+-109
+-528
+-22
+-549
+-317
+-375
+-377
+-385
+-23
+-191
+-138
+-509
+-40
+-565
+-559
+-14
+-547
+-28
+-159
+-153
+-585
+-508
+-582
+-431
+-580
+-637
+-561
+-513
+-243
+-420
+-298
+-485
+-132
+-613
+-157
+-521
+-596
+-61
+-420
+-498
+-577
+-563
+-354
+-662
+-264
+-273
+-111
+-597
+-466
+-389
+-345
+-306
+-102
+-57
+-596
+-1
+-45
+-12
+-619
+-47
+-43
+0
+-323
+-9
+-319
+-529
+-402
+-238
+-191
+-487
+-315
+-65
+-386
+-110
+-605
+-363
+-461
+-6
+-95
+-95
+2
+-596
+-454
+-618
+-83
+-481
+-283
+-386
+-247
+-417
+-707
+-564
+-603
+-17
+-712
+-140
+-336
+-567
+-443
+-36
+-476
+-251
+-735
+-589
+-198
+-197
+-476
+-49
+-736
+-422
+-383
+-569
+-732
+-1
+-104
+-261
+-352
+-453
+-273
+-344
+-66
+-307
+-698
+-158
+-238
+-280
+-207
+-624
+-491
+-765
+-506
+-146
+-616
+-711
+-650
+-655
+-393
+-19
+-315
+-311
+-572
+-675
+-533
+-156
+-373
+-744
+-142
+-582
+-491
+-796
+-777
+-125
+-483
+-426
+-510
+-560
+-700
+-778
+-407
+-440
+-409
+-238
+-738
+-477
+-147
+-152
+-317
+-110
+-323
+-788
+-601
+-202
+-517
+-487
+-726
+-300
+-1
+-554
+-448
+-15
+-191
+-531
+-568
+-466
+-527
+-132
+-254
+-290
+-8
+-400
+-655
+-788
+-376
+-249
+-662
+-315
+-378
+-41
+-793
+-163
+-29
+-327
+-839
+-133
+-124
+-129
+-673
+-32
+-605
+-393
+-664
+-374
+-135
+-366
+-717
+-93
+-601
+-763
+-788
+-494
+-802
+-282
+-443
+-491
+-461
+-197
+-83
+-96
+-162
+-97
+-161
+-232
+-144
+-472
+-118
+-429
+-387
+-724
+-789
+-636
+-298
+-484
+-720
+-526
+-382
+-102
+-449
+-846
+-525
+-547
+-696
+-524
+-272
+-843
+-286
+-247
+-838
+-447
+-489
+-797
+-483
+-386
+-775
+-340
+-772
+-158
+-293
+-256
+-432
+-812
+-273
+-93
+-487
+-264
+-594
+-330
+-712
+-798
+-131
+-591
+-539
+-677
+-455
+-470
+-108
+-573
+-57
+-845
+-383
+-273
+-890
+-747
+-913
+-648
+-625
+-650
+-544
+-137
+-490
+-434
+-734
+-182
+-355
+-859
+-835
+-141
+-536
+-874
+-102
+-940
+-359
+-83
+-800
+-894
+-712
+-470
+-687
+-578
+-435
+-935
+-400
+-780
+-814
+-458
+-892
+-481
+-371
+-761
+-348
+-388
+-891
+-764
+-297
+-536
+-695
+-314
+-336
+-978
+-379
+-462
+-597
+-533
+-561
+-9
+-474
+-292
+-560
+-420
+-828
+-721
+-769
+-874
+-157
+-495
+-771
+-899
+-571
+-98
+-282
+-233
+-203
+-982
+-416
+-142
+-993
+-540
+-979
+-851
+-506
+-238
+-292
+-184
+-695
+-195
+-632
+-575
+-962
+-76
+-546
+-705
+-13
+-271
+-222
+-124
+-380
+2
+-1003
+-251
+-525
+-228
+-644
+-159
+-624
+-477
+-912
+-712
+-343
+-263
+-88
+-745
+-85
+-374
+-675
+-804
+-610
+-854
+-511
+-612
+-964
+-731
+-358
+-495
+-946
+-466
+-364
+-1053
+-57
+-101
+-829
+-155
+-600
diff --git a/2017/inputs/day_6.txt b/2017/inputs/day_6.txt
new file mode 100644
index 0000000..b16e11b
--- /dev/null
+++ b/2017/inputs/day_6.txt
@@ -0,0 +1 @@
+4 10 4 1 8 4 9 14 5 1 14 15 0 15 3 5
diff --git a/2017/inputs/day_7.txt b/2017/inputs/day_7.txt
new file mode 100644
index 0000000..faa4be1
--- /dev/null
+++ b/2017/inputs/day_7.txt
@@ -0,0 +1,1091 @@
+yjmbbu (75)
+zdhvqrl (40) -> fpbsu, fwpfjjd, viqhfi
+dywqvqh (9)
+gewgn (31)
+xfekjt (67)
+zezowe (31)
+wgqkdcr (79)
+ljhwzvv (258)
+vustse (1584) -> ffnabs, qinmi, qhafxnl
+idfwjgx (112) -> buoakk, itwbpot
+lxesg (71)
+qkbnq (99)
+jppgd (27)
+ztghd (125) -> bcibchp, aaheijb
+qcrpdy (29)
+fwidkbp (152) -> mnkwo, ehjooz, jvccsp, cyrrjtx, imynb, chnkkj, agywjrs
+nymhem (52)
+cazid (93)
+olspit (121) -> bqtas, fhuiyrl
+ayteb (92)
+hjucki (58)
+wrqtk (305)
+jfjemon (217) -> bjhickt, uacjhqx
+mcmqliy (925) -> coopirx, ekohgo, ioywk
+rsancy (70) -> aeuub, vchuc, heacb
+zjwpbzs (23) -> jysaup, pgubexv, lckuoqf, eeguu
+qflouyn (90)
+nswximo (65478) -> ibjvonk, sdhtguj, dxyifeb
+rymkqd (102) -> vgqeyx, zezowe
+wlujpl (92) -> sjwhig, wymfopy, ylfsnz
+imcczga (95)
+xehdglb (52)
+twubx (46) -> goimlra, vlimzz, xaoncma, gfzbp, spdhhoe, fhmauag, cyapi
+yjhes (72)
+ymcuygn (81)
+yatbsip (19) -> bkdtinl, nzqcq, tkmed, ysbrui
+yipoeia (58)
+chophr (27)
+tdwtlf (305) -> epuaii, idfwjgx, nwikpdm
+emzrj (119) -> aimav, dtscjna
+vbxmpc (7)
+nrpxx (21)
+wgexpa (103) -> paxzd, vgdwm
+vnrmx (359) -> knzppj, gkkgkp, ttwfig, vcixs
+knltna (677) -> zbhtee, ztzwh
+ojvlwm (52)
+bgflw (27)
+lsdrwz (73)
+hswzo (40)
+spwgm (351) -> mizab, cyzkk
+jlnyr (16)
+nwikpdm (36) -> ihwaeuw, wwkeej
+qbmtmcs (34)
+djirpp (19)
+pkfhp (59)
+qfypnb (76)
+jzequar (272) -> mtcrswx, wkcyd
+tttle (71) -> xlskkfi, ayteb
+zbhtee (48)
+iriun (9)
+dwezv (73)
+tojyt (58) -> dwezv, nbngkou, wnjtb, rarkunn
+bsorz (27)
+qvkotfd (337)
+azxjd (268) -> exeub, lryzkx, nqvxs
+wpxxh (998) -> wrqtk, yosnw, vyxfljc
+gwournc (85)
+aghdlll (88)
+lejgcu (19)
+lxlbt (363) -> oiosol, mpchqe, bsorz, jbpjt
+nbeagw (94)
+vbbgeo (19)
+lqfyzo (21) -> tggkm, zdbqs
+vqclii (331) -> dmkbnot, omdpc
+lhmnd (216) -> onnylx, khaupo
+wwkeej (60)
+laczal (99)
+xrbjn (20)
+qvteg (64)
+ogbsm (92) -> xpzhy, mhsjkm
+ymckwqo (41)
+ghsjtj (271) -> hhmwlo, faixe
+sjrxs (259) -> mnijdlk, hygfoe
+hdvel (197) -> upuxd, dtstgj
+lckuoqf (78)
+yppydul (91)
+frirj (6)
+duftj (42)
+dnmvzeg (64)
+cpazlc (19)
+krxyaak (198) -> maqgick, xbnmvd
+oyczfgb (395) -> rxcnn, ktpte, qybmgto
+oxiuaz (12)
+wfphcf (6)
+ihtnbb (87)
+omsroa (45)
+lybkeg (6022) -> oyczfgb, jzequar, yrcgsnx, ujulj
+agywjrs (184) -> anpnrdt, hgdbaol, hcjmsd, kzbvrxk
+tiujei (34)
+lwencl (28) -> ieusgd, mthhq, fsuzqyz, miwoup, isrtfc
+wekya (34)
+bkdtinl (1167) -> ojsjuts, euoclfs, xbkeua, mykrcq, jjsvfy, aazxafl
+qinmi (1896) -> qshbt, ruozmjk
+yfmxvay (46)
+kgpwo (52)
+fgjjwep (14)
+odvtiti (76)
+ienye (19)
+tcvabyz (99)
+ycclns (7)
+njogewi (30)
+bfchbs (87) -> jykbb, qnbfk
+dlbzng (99)
+xnmvtem (51)
+ccciux (94)
+xwlmsqy (25)
+wekkbw (17)
+yipzce (21)
+hcjmsd (10)
+upvhfmn (68) -> fvlfq, ivmndi, ussmw, ccciux
+hacwv (50)
+redqvw (269)
+dtpexjq (52)
+kmlwj (84)
+mluykm (19)
+ucbbun (114) -> hrqzqqh, ccuarv
+kymhbse (155) -> tznudmk, hnlgkv
+xomnhw (185)
+nsmoh (65) -> ceuygh, acpfsnb, vgubuy, apkwi, yoeau, pdosfg, lfpzff
+zvepqr (51)
+wnotwt (99)
+lcrwbqi (27)
+hdlqvlg (27)
+iphgmyt (160) -> woolxv, ewyzqg
+ujulj (50) -> cazid, npmwcx, yeooycn, dmeee
+zjaklmn (52)
+bjrpalu (53) -> rhodopg, tcospq, cvrcvgp
+azdei (48)
+snzfrer (149) -> bhsbd, tgdzl
+zsxizw (18)
+fwpfjjd (89)
+fndxl (36)
+uzrnud (14)
+igyxt (41)
+vxdkej (135) -> diomq, qokscr
+gjuekv (5)
+uzufet (143) -> fgjjwep, uzrnud
+vzuqbye (87) -> eviqjr, cgxsmq, egmfbdq
+zirocl (29)
+jonshpm (99)
+zmlth (154) -> zhxhkgf, cokzlht
+bujroda (51)
+bdvtvcu (74) -> tvcod, ouamzwh
+jdrdxu (36)
+troyu (29)
+nrczsn (86)
+aihow (92)
+gaihmf (84)
+ehjooz (124) -> hgwsl, mefxonk
+omydd (6)
+raevpsw (64)
+aylmbfh (188) -> ddspu, thdwfw, kxnkbs, rziezq, jfjemon
+diomq (65)
+jjyjrtr (87) -> fjduphn, yjvgwdl
+zsiziaa (38)
+lyptirp (8)
+lctdjj (56)
+pbtks (85)
+jxhrar (227) -> barnhza, iqovqp
+neqfzm (13)
+dhwauy (48)
+qvjqfi (80)
+ivstcsm (72)
+aabrjf (72)
+jvccsp (86) -> gukuqw, hpmbkwb
+ddspu (113) -> yjmbbu, dzbrgb
+zgevpxx (48)
+qrrey (588) -> bhvmgw, wgexpa, xiotwdk
+ncodn (62)
+rbcqgqv (75) -> imcczga, xzurwza
+fpxtub (11)
+ldfopw (30)
+ewyzqg (49)
+iuhlc (6)
+oqphsw (2722) -> iueejt, ekdqf, btbxk, jdshuob
+eysrnaa (71)
+ojsjuts (176) -> njxyw, dzasw, rpzaqc
+ozyexx (83)
+nnldikq (316) -> upwlxnb, vbxmpc, dgwcz
+tfmtk (69)
+hwctdr (76)
+rothisa (66)
+qnbfk (91)
+qcgxvx (99)
+igyiie (237) -> knirl, trbzi, auxvur, rvhxik
+cverrt (52)
+orrutjs (93)
+ffloi (25) -> kflize, icgwppo
+phrxnli (21)
+eopxpo (41)
+vlfouc (62)
+fdnom (87)
+wuxhvnx (86) -> ikfpktb, zcvipz
+flefy (38)
+yoeau (206) -> rfwgtb, drmyco
+ozatmpe (34)
+ydbri (66)
+tufds (42)
+pprhx (57) -> xitzb, zqyua, dtpexjq, zyradhz
+zhxhkgf (29)
+qwzmv (52)
+paxzd (53)
+cyzkk (60)
+gyjxkl (37)
+pzpjw (54)
+svayf (89)
+xxxqpkx (7)
+imihjj (69) -> yygqky, qlkslp
+tkpvf (47)
+tljdqy (81) -> sxllorg, yatfpqx, zbznuyf, kymhbse, rfmeug, tetmzw
+iphzyj (260) -> omsroa, mxupea
+xiotwdk (177) -> jlnyr, nsqqw
+eyyzy (274) -> opuaau, qolnvo, jxhrar
+baewpe (55) -> svkdyq, hitoud, zvnxfa, emfctr, facrq, vykqcnj, bckuyxm
+barnhza (20)
+oafnfo (51)
+pjcttzo (50)
+aooni (205) -> xrvbzya, gvjrx
+scchi (48)
+zcgrnt (73)
+pmsdv (93) -> pyypotx, marzlxh, zvepqr
+kngbqid (89)
+iwhqlr (949) -> ztkgsyt, ffloi, hzgig
+vyxfljc (92) -> pyrlph, wdsiq, eysrnaa
+hddzn (69)
+cxvqvjz (136) -> kfrti, nslettz
+tcospq (96) -> aabrjf, dllgpye
+mnmwzz (142)
+xfblj (40)
+vfwegiu (46)
+iphncut (138) -> wslsg, qhnaxuy
+algqhtz (37) -> qeojk, sybpano
+dmoxr (73)
+tozktyo (29)
+npjxq (46)
+uvfyo (675) -> lxlbt, gnjvf, nfsuzef, spwgm
+ollhxuy (821) -> vefzbc, faecnr, geldsqv, xneoi, cxvqvjz, jgkvfa, xtwdx
+ksvfdcc (72)
+avycyh (180) -> hwosyg, alqim
+nsqqw (16)
+nsfsj (99)
+tpphe (64887) -> yatbsip, syzlt, uttujj
+miwoup (40) -> gyjpoco, apgjv, eknui
+iljwgzf (92)
+bfuywyg (82)
+aaqdb (44)
+fgbyre (11)
+kywfqzv (41) -> lajidkr, gyjxkl, wfhyr, evhsybt
+aiovxpk (95) -> yoxvx, pbtks
+hrovawq (50)
+ajenoz (48)
+aeuub (53)
+gxjvj (163) -> yiusa, nrczsn
+ippzix (9)
+ttllx (73)
+rorqy (43)
+dqash (96)
+lwvnbzs (24)
+ckheb (34)
+rgfndsx (18) -> qkbnq, welll, bkextqn, wnotwt
+rsazi (62)
+rpfmi (52)
+uxslfay (72)
+aemgsa (40)
+jfmnsqg (85)
+ggnsa (114) -> xhmfmo, azdei
+lndaa (175) -> qvjqfi, iyuuh
+kjdoubx (128) -> eopxpo, igyxt
+dzasw (47)
+emfctr (9120) -> qzckx, fsaoa, bjrpalu, mdneq, tdwtlf, hswrbpz, knltna
+srqntb (137) -> raevpsw, qvteg
+wweusm (66)
+hawsl (13)
+cupsjm (146) -> baiaa, pcqyagx
+ppqlc (42)
+tadnt (47) -> ufefj, rwxggm, rorqy
+rvhxik (11)
+vijkx (32)
+lqcar (71)
+dhkahb (49)
+ftuemb (19)
+ewdqb (50)
+npmwcx (93)
+wwezydn (97)
+fuvru (98)
+cdpwklz (83)
+dtscjna (46)
+exuusj (7)
+ouamzwh (88)
+ggvbqrp (145) -> opohwq, yrmgc, gewgn
+ekdqf (467) -> ugvqayz, ysgsry, ogbsm
+torxqh (90) -> dzwol, lepja
+hpmbkwb (69)
+ripqyzr (48)
+eiklbh (32)
+omdlwm (168) -> ihtnbb, hjjkx, bomho
+lbwzat (74) -> iivncbz, dmoxr
+pyypotx (51)
+bjabd (7)
+auzbdlz (95)
+sxfilp (72) -> livlj, lgenxz
+kxvlprg (60)
+rfmeug (121) -> apygt, viwns, chtlcwq, wekkbw
+xajjyba (164)
+kzltfq (94288) -> vnrmx, lrihy, arqoys, nsmoh
+mbhld (73)
+rwxggm (43)
+vapwxei (61)
+ufefj (43)
+oajawn (34)
+dgnjf (335) -> yxseri, nscbsob
+xaoncma (296) -> yipzce, nrpxx, rrfbngi
+kqlsniq (95) -> qwsxpnc, mqmbcl, gtbbuvb
+jrvbacq (49)
+oavluo (21)
+qpldch (54)
+ieusgd (295)
+tifgptk (100) -> ddldgex, ggvbqrp, focqhgt, cncak, ksvpnt, weuwc
+lhradm (583) -> vusxa, lbwzat, ucbbun
+apgjv (85)
+cbibo (99)
+jxhngrl (48)
+qwsxpnc (96)
+ysbrui (1293) -> iqggu, upvhfmn, kpqyb, wdeuy
+ekvall (209) -> jxhngrl, aplvqql, drwfop
+mkwfj (35)
+pjiqvd (87)
+pgubexv (78)
+vbhnmr (2850) -> iftfc, kunzpa, qrrey, tljdqy
+sjwhig (93)
+zyradhz (52)
+wcexum (116) -> eiklbh, vijkx
+cdcye (53) -> izppmg, rxvyqsp
+bdinafh (10)
+rziezq (145) -> taiho, pkfhp
+nslettz (10)
+svhbd (109) -> xcvxle, fqzsq, jopjvd
+limljj (68)
+kauphp (231) -> dyxsmz, yzxzo
+caryo (7)
+nahovfk (109) -> flefy, cfztpc
+qolnvo (267)
+cmqwplb (9)
+cfhuce (71) -> cecsr, josdslh
+zwnvqu (88)
+mhjtjp (91)
+apkwi (222) -> rxragg, zsxizw
+ioywk (16) -> ozyexx, eikmns, ktjav
+yrmgc (31)
+kqzemkv (96)
+rxvyqsp (60)
+hnlgkv (17)
+raryuo (73)
+bomho (87)
+rixnft (85) -> cpndnx, fpxtub
+zoewj (193) -> ohbuhy, ymckwqo
+hnyqq (34)
+tkmed (1959) -> tuqmup, jwgchxu, sjforw, zmsosb, tqikxkp
+wlpyulp (10)
+pixjzh (158) -> fgjwz, lsknlg, hlcghe, txhfuoh, hdvel
+likvlm (62)
+xhmfmo (48)
+rgrxpe (69)
+weuwc (84) -> xtwdau, muncur
+uevcwul (92)
+kpxqlr (155) -> nbbyqsa, ilkqp
+fqzsq (98) -> tiujei, yhubw
+ubovv (6)
+knirl (11)
+lzvniiz (60)
+cwtdf (29)
+qeojk (99)
+ycxzfkf (131) -> bgflw, chophr
+thjulip (20)
+vgdwm (53)
+myhch (25)
+bovno (175)
+uqlso (48)
+rhnkdt (59) -> rsazi, ncodn, pwizhzr, likvlm
+acpfsnb (204) -> nmlcne, vfsttaj
+wzfkk (99)
+oqlpz (81)
+nscbsob (24)
+mzmfygf (171) -> jxyoypa, ippzix
+rvrlma (211)
+pfphng (90)
+mdiqsgg (12)
+jtzkva (274) -> flomey, ukvvt
+tvwxmur (64) -> yodoqn, ksvfdcc, ivstcsm, pvgzz
+aplvqql (48)
+qybmgto (9)
+mtcrswx (75)
+aphpzub (29)
+vchsdif (105) -> ofisj, zwnvqu
+dllgpye (72)
+lfzahrm (79)
+oiosol (27)
+geldsqv (80) -> ienye, eeppf, ftuemb, vbbgeo
+vlbba (81) -> ewdqb, vfzby, pjcttzo, abddskq
+nfsuzef (75) -> dlbzng, cbibo, wzfkk, jonshpm
+lryzkx (71)
+mhndszl (190) -> tbrfk, xprzeeb
+jbepak (66)
+nmlcne (27)
+gfffvbp (8)
+bqtas (93)
+fhmauag (221) -> vantwg, kzwqzqf, vfwegiu
+misyfn (82) -> uixlx, oupzsh, bovno
+jtauf (13) -> xskehl, bmfhjm, srhirm, kjfmqkt, qzxaqvy
+eerktn (85) -> npjxq, kasfuwe, ljbss, theau
+ktaet (58)
+eeppf (19)
+vgqeyx (31)
+qhnaxuy (31)
+xrvbzya (35)
+nzqcq (66) -> vewgrvp, vfngjd, sjrxs, hvjtn, ecokyy, gcaxntb, omdlwm
+sybpano (99)
+ebsniof (39)
+urzul (9)
+srmiagk (292) -> dvdgowj, vqpeg, gjuekv
+uexdnv (82)
+pgspysb (40)
+wymfopy (93)
+nqhdt (164) -> mkwfj, gjwaqu, sxmbcwp
+twzpqip (41)
+bniti (66)
+yfjenp (295) -> qxfce, zsiziaa
+meoeea (60) -> laczal, tcvabyz
+heacb (53)
+focqhgt (238)
+dtstgj (36)
+kkmqko (7)
+vcjjo (98)
+nnnkeh (445) -> gzzpja, bhuyfk, xnukvni, tttle, snzfrer
+baesyhf (1013) -> tznkwk, hcjxz
+hygfoe (85)
+wtxbqe (87)
+vwzglf (58)
+hswrbpz (254) -> flcqsb, sbguah, cdcye
+axtqrx (29)
+auxvur (11)
+iqggu (444)
+kceusl (42)
+jykbb (91)
+nxzkuj (75)
+xzurwza (95)
+rrflox (52)
+kfmzbvk (10)
+mnkwo (212) -> jyskb, wfphcf
+dfvhic (82) -> fhmazv, hwctdr
+gfzbp (197) -> ymcuygn, mxzbcqn
+tlednk (39)
+lgenxz (54)
+emwbbut (9)
+exoft (17)
+woolxv (49)
+auxqbbc (87)
+wvocz (67)
+hvjtn (325) -> cverrt, kfxoi
+aunhcg (613) -> kjdoubx, ggnsa, acknlp
+absdwf (39)
+wajnxjj (40) -> imjzf, wwezydn
+hgdbaol (10)
+cfztpc (38)
+chlxm (46)
+ljbss (46)
+gauumxf (230) -> tkiraal, lyptirp
+nhlittn (22)
+gcaxntb (405) -> mdiqsgg, oxiuaz
+lfxew (66)
+bamxg (66)
+wdsiq (71)
+mykrcq (98) -> zcgrnt, raryuo, okrdziq
+erpvue (91)
+kmwbbz (93)
+vsgaam (7)
+hokyk (66)
+pjzpmq (38)
+iqovqp (20)
+mmcychg (65)
+guncf (259) -> proshun, wxjka
+jatnl (216) -> oavluo, phrxnli
+nhkvp (100) -> rgrxpe, nscav, illjvf
+hcjxz (31)
+mqrroj (243) -> jtjcj, dnmvzeg
+lvksghj (18)
+mhsjkm (84)
+popplum (89)
+vusxa (30) -> ieadjz, mzmtuw
+dmkbnot (26)
+httit (18)
+tbrfk (19)
+ztzwh (48)
+imjzf (97)
+rypdxr (105) -> qyoqb, lejgcu, djirpp
+qzckx (35) -> qzzkvf, pmsdv, gauumxf
+xbnmvd (76)
+ouymke (47)
+rajtef (365) -> iriun, ezaypy
+itngcua (65)
+orxoo (66)
+tcdwurt (18)
+auqoj (99)
+sqnvvbg (36)
+rxragg (18)
+kpqyb (258) -> sqkcdf, iqxwh, vnhvilk
+proshun (47)
+uscufoy (15)
+tpipb (61)
+owhjmt (155) -> vsruoi, ifxcrug
+bkvle (9)
+yosnw (32) -> ilymgq, yppydul, yamclb
+iynywq (66)
+nxpexoq (92)
+eviqjr (25)
+trbzi (11)
+rfvomn (95)
+ohbuhy (41)
+vkpltts (73)
+ktpte (9)
+bbgwzg (79)
+bgcigo (8) -> bruzfkf, lxcbjgy, vlmcmcu
+ecokyy (357) -> iaphzk, httit, vztnh, owmni
+jwgchxu (32) -> rfvomn, auzbdlz
+xlskkfi (92)
+uxjasn (36)
+dcumfo (73)
+wpnqet (87)
+ilqol (88)
+bhsbd (53)
+flcqsb (115) -> meypo, aphpzub
+yvqtyi (85)
+oyvhouc (37) -> cdpgoi, bbgwzg, xoziel, lfzahrm
+bjhickt (23)
+hmvwl (32) -> nswximo, tpphe, baewpe, hghnmib, kzltfq
+oiijtm (20)
+ylfsnz (93)
+imynb (146) -> absdwf, cikaze
+yygqky (82)
+yuswp (68)
+izppmg (60)
+itwbpot (22)
+hwosyg (42)
+mkrzp (211) -> laxsl, zirocl
+vqpeg (5)
+gddkqw (244) -> vhtyadn, lvksghj
+bhuyfk (79) -> aghdlll, ilqol
+yrfqaga (103) -> jqinti, zjaklmn
+bnfopv (118) -> cjmxed, zlzers, qrlggma
+welll (99)
+ehuzoq (77)
+nqyok (77)
+rrfbngi (21)
+yoezrpw (38)
+rpzaqc (47)
+qxlucvg (84)
+tehyhc (13)
+gqrfok (231) -> kfhnhm, aituccf, qrkhol
+zvnxfa (10022) -> aylmbfh, lwencl, pixjzh
+gzzpja (255)
+ofrwmq (205) -> iigvpqy, wweusm
+qanbo (50)
+obslyn (13)
+hwovhvw (915) -> qdhrchr, nahovfk, xomnhw, ycxzfkf
+smlfbc (1615) -> wnjwnr, pprhx, aiovxpk
+xbkeua (157) -> pgspysb, aemgsa, xfblj, hswzo
+btklib (51)
+owmni (18)
+qzzkvf (108) -> aobitc, tsrogy
+umtrod (22)
+vxajmkg (71)
+jmlmzpz (62)
+plurwe (228)
+jyskb (6)
+xnuoujm (16)
+nakmo (10)
+uzhlers (50)
+umlkxqv (20) -> ecimj, wudjf, jfmnsqg
+ziqwzzy (204) -> uscufoy, fooyrq
+ymrogz (272) -> ebsniof, tlednk
+lpuass (28)
+qrkhol (9)
+hpkpw (38)
+gtzcxq (73)
+gvjrx (35)
+ieadjz (95)
+tcukgv (66)
+ifxcrug (55)
+thxtoc (178) -> trtgn, fdnom
+puwvse (414)
+pvppi (246) -> qlwxeb, nuqyqh
+vcixs (260) -> noipcz, frohei
+cichyqw (71)
+ugvqayz (126) -> xfekjt, wvocz
+hrqzqqh (53)
+qedst (18)
+wnjtb (73)
+kjfmqkt (138) -> pzpjw, qpldch
+ussmw (94)
+sxmbcwp (35)
+dqdfv (73)
+ptyxo (13)
+upuxd (36)
+fppcif (209) -> uxslfay, yjhes
+kxykfr (82) -> twzpqip, qymwy
+yodoqn (72)
+mnzbkuh (28) -> jtouvtb, wdvwub
+omdpc (26)
+ccrftvw (62)
+bmfhjm (222) -> lyvyhkm, sbyxyf, kblshw
+fwgqj (1924) -> zmcgfdp, vzuqbye, rypdxr
+rlbom (79)
+livlj (54)
+ybvgki (8)
+zcvipz (97)
+xyohoxa (928) -> qkkzzlm, lmuyfcw, avycyh
+dchts (99) -> lctdjj, oevyknd
+ksfok (217) -> gfffvbp, ybvgki
+hoomyh (88) -> aaqdb, ljfqvk
+qijarlh (58)
+tznudmk (17)
+cyrrjtx (124) -> oqbdf, xwlmsqy, ulztj, rjsnth
+nuqyqh (52)
+oblsboq (85)
+imnhql (94)
+hxswghs (126) -> dwwsu, hdlqvlg, jppgd
+ulztj (25)
+hgwsl (50)
+ksvpnt (96) -> fqlezvk, lqcar
+mjpzp (10)
+fsaoa (89) -> dbwmq, uzufet, arwmalf, gobrf
+iftfc (159) -> thxtoc, jtzkva, tvwxmur
+zjpsm (83)
+vwfhi (9)
+opuaau (75) -> dqash, kqzemkv
+mxupea (45)
+dmkyzy (15) -> ttllx, horqcc, dcumfo
+sxllorg (69) -> kxvlprg, lzvniiz
+txhfuoh (219) -> lwdqnj, myhch
+chtlcwq (17)
+hlcbqu (104) -> ccrftvw, jmlmzpz
+ivmndi (94)
+lficpr (62)
+ortqc (99)
+dvzlq (33)
+acknlp (56) -> aozoac, ehuzoq
+jqxnf (60)
+hfftu (52)
+ihzvygq (94) -> kmwbbz, orrutjs
+rarkunn (73)
+hitoud (5511) -> vcktg, rqbjbio, xtyzy, ssdgbnh
+sdhtguj (58) -> uklsrym, mcmqliy, nnnkeh, clinrg, fwidkbp, hzmhm, xyohoxa
+hrlkgen (99)
+vuyzhsh (61)
+nzzfer (85) -> qcgxvx, ortqc, auqoj, ilfzi
+tuqmup (222)
+zbznuyf (137) -> ptyxo, qwtzc, neqfzm, hawsl
+qwtzc (13)
+vykqcnj (71) -> jitzj, nkhadt, tcsbho, fhxpkd, fwgqj, smlfbc
+mjzksjz (7)
+yfdtz (36)
+faixe (56)
+tejnuve (209) -> jgmisxl, dhkahb
+opohwq (31)
+lsknlg (95) -> vwzglf, hjucki, yrkvb
+fhmazv (76)
+egmfbdq (25)
+rxcnn (9)
+tboizos (250)
+glwhd (122) -> ceoav, troyu
+ykehxw (19)
+bruzfkf (91)
+rjjlus (87)
+ocnna (18)
+qshbt (73)
+raakduh (85) -> fuvru, vcjjo
+wudjf (85)
+ihwaeuw (60)
+kfxoi (52)
+oewzluz (39)
+coopirx (251) -> exuusj, rvimq
+cokzlht (29)
+uacjhqx (23)
+tznkwk (31)
+mthhq (111) -> uevcwul, nxpexoq
+uixlx (7) -> kmlwj, gaihmf
+nqvxs (71)
+ktjav (83)
+eknui (85)
+fhuiyrl (93)
+fktsu (65)
+vugnug (65)
+ilymgq (91)
+clinrg (1033) -> rsancy, jrqorlo, lvklj
+bkextqn (99)
+ekohgo (251) -> xxxqpkx, wkphn
+alkneau (34)
+mnijdlk (85)
+dyxsmz (38)
+mefxonk (50)
+lajidkr (37)
+uiuokpq (89)
+oupzsh (43) -> bzmade, bamxg
+cijptz (18)
+khibjj (89)
+yamclb (91)
+okrdziq (73)
+sbyxyf (8)
+zknziw (18)
+fobzai (75)
+rjsnth (25)
+iaphzk (18)
+lufgosn (10)
+rzkcu (34)
+xlhfyw (471) -> yuswp, limljj
+tcsbho (1842) -> mnmwzz, mnzbkuh, zpidc, cpqti
+docln (85)
+neeqb (7)
+tvcod (88)
+uklsrym (40) -> bbhniy, gddkqw, lhmnd, ihzvygq, nhkeb, wuxhvnx
+qkkzzlm (76) -> imnhql, nbeagw
+qywkuqu (20)
+fvgbg (191) -> iwkntdi, jdrdxu, sqnvvbg, yfdtz
+qlkslp (82)
+iqxwh (62)
+mdneq (623) -> uzhlers, qanbo, tedplb
+msmgk (173) -> fygmpjn, exoft
+euoclfs (241) -> pjzpmq, hpkpw
+vlimzz (19) -> yvqtyi, gwournc, docln, oblsboq
+zoqni (189) -> chlxm, yfmxvay
+oignan (206) -> hdaqxlh, fgbyre
+zpidc (40) -> bujroda, btklib
+aazxafl (215) -> xnmvtem, oafnfo
+yhubw (34)
+xneoi (138) -> vwfhi, cmqwplb
+vefzbc (138) -> dywqvqh, emwbbut
+ruozmjk (73)
+jrwfehi (75) -> kcnim, bdvtvcu, tfsoxgb, tboizos
+iivncbz (73)
+ccuarv (53)
+lrihy (185) -> vchsdif, bgcigo, raakduh, vlbba, igyiie, zoqni
+vewgrvp (73) -> dntphko, svayf, uiuokpq, popplum
+iigvpqy (66)
+fjduphn (91)
+uttujj (11755) -> glwhd, sxfilp, wcexum
+tluap (6)
+exeub (71)
+dzwol (61)
+ilfzi (99)
+cdpgoi (79)
+hxckb (71)
+yoxvx (85)
+theau (46)
+vwnjh (233) -> jqxnf, qfpwln
+jbpjt (27)
+zmsosb (14) -> rrflox, ovluts, rpfmi, ojvlwm
+yoivja (59)
+towlhi (36)
+zcrjb (253) -> qhohy, uwaiki
+josdslh (59)
+xoziel (79)
+fsuzqyz (169) -> duftj, ppqlc, kceusl
+chwjiub (96)
+fpbsu (89)
+qyoqb (19)
+dfeomzr (38)
+kfhnhm (9)
+oevyknd (56)
+buoakk (22)
+wduqgix (77)
+qokscr (65)
+oqbdf (25)
+jjsvfy (199) -> yoivja, gdnsat
+ssdgbnh (887) -> qtsjbq, plurwe, mhndszl, hlcbqu, pgskth, oignan
+lrsedv (213) -> eaqjcju, cekpxgj
+iwkntdi (36)
+qfgzmtz (73)
+rfwgtb (26)
+alcvj (7)
+bvdxf (30)
+ofisj (88)
+mpchqe (27)
+pwizhzr (62)
+wkcyd (75)
+mxzbcqn (81)
+npzdqeg (227) -> tufds, msxhvo, pcsucog
+illjvf (69)
+iyuuh (80)
+fygmpjn (17)
+dvdgowj (5)
+hlcghe (91) -> khibjj, kngbqid
+zvurtb (77)
+ouspx (46)
+dbvxai (76)
+facrq (13496) -> fkbla, ffvprc, yrfqaga, msmgk, hxswghs
+xbcgipi (66)
+wfhyr (37)
+ziyata (221) -> oqlpz, jjtrisl
+muncur (77)
+vlvss (183) -> odvtiti, fazqw
+kvdkwy (96)
+ddldgex (84) -> nqyok, wduqgix
+trtgn (87)
+jitzj (65) -> fvgbg, nbfqgr, zjwpbzs, lndaa, vlvss, gxjvj, zcrjb
+hkhoyje (95) -> frirj, iuhlc
+gtbbuvb (96)
+tfsoxgb (250)
+rohvy (95)
+qhohy (41)
+goimlra (227) -> orxoo, lfxew
+hubbqbi (95)
+vchuc (53)
+svkdyq (9559) -> akmgfo, lhradm, jtauf, aunhcg
+fazqw (76)
+flomey (39)
+apygt (17)
+wjptb (43)
+srhirm (147) -> bicsjoc, dvzlq, olykwbi
+wdeuy (254) -> hubbqbi, rohvy
+yeooycn (93)
+qoyzgsp (28)
+sqkcdf (62)
+rgbvlc (49)
+qinzaf (813) -> aooni, zoewj, ogzrdrk, umlkxqv
+kflize (84)
+isrtfc (201) -> vmutyru, ouymke
+nkhadt (292) -> fppcif, vwnjh, oyvhouc, ekvall, guncf, npzdqeg
+nbbyqsa (40)
+ikfpktb (97)
+maqgick (76)
+xtwdx (156)
+sbyzsq (10)
+vgubuy (74) -> iljwgzf, aihow
+taiho (59)
+cpndnx (11)
+vhtyadn (18)
+aaheijb (54)
+rykadr (19)
+onnylx (32)
+gukuqw (69)
+fooyrq (15)
+zqyua (52)
+vsruoi (55)
+ikmvhid (2745) -> hwovhvw, arsuc, yzrdupu
+vztnh (18)
+khaupo (32)
+cpqti (142)
+qtsjbq (126) -> wekya, rzkcu, alkneau
+pcsucog (42)
+lepja (61)
+ibjvonk (10277) -> xlhfyw, svhbd, misyfn
+rqbjbio (29) -> mqrroj, hjeysaa, wlujpl, vooac, rrggg, yfjenp
+ceuygh (90) -> aqxsjq, qxlucvg
+qzxaqvy (78) -> fwskxtt, jlgvplm
+fwskxtt (84)
+yrkvb (58)
+thdwfw (219) -> umtrod, nhlittn
+zpkbe (73) -> cwtdf, tozktyo, qcrpdy, axtqrx
+hjjkx (87)
+jxyoypa (9)
+ilkqp (40)
+akwvj (238) -> jatnl, iphgmyt, meoeea, gqrfok, ljhwzvv
+lkcddrg (2238) -> lqfyzo, rixnft, hkhoyje
+xprzeeb (19)
+rhodopg (94) -> qfgzmtz, dqdfv
+ttwfig (340) -> rykadr, ykehxw
+kueyf (85) -> ulbbc, nzzfer, azxjd
+zmcgfdp (136) -> tehyhc, obslyn
+ffnabs (20) -> guehoas, nnldikq, ofrwmq, lrsedv, qvkotfd, shfdaba
+arwmalf (143) -> vsgaam, bjabd, ycclns, kkmqko
+gyjpoco (85)
+drmyco (26)
+arqoys (1859) -> urzul, bkvle
+nscav (69)
+tsrogy (69)
+qhafxnl (1337) -> xbcskih, kpxqlr, algqhtz
+yiusa (86)
+zdbqs (43)
+xzppxad (58) -> ltxkw, ollhxuy, qinzaf, wpxxh
+dxyifeb (1862) -> twubx, lkcddrg, uwqgz, uvfyo
+zlzers (49)
+gkkgkp (358) -> wlpyulp, nakmo
+abddskq (50)
+tggkm (43)
+dgwcz (7)
+bhvmgw (29) -> qflouyn, pfphng
+guehoas (283) -> qedst, cijptz, zknziw
+marzlxh (51)
+mizab (60)
+jgkvfa (120) -> ocnna, tcdwurt
+jopjvd (80) -> dnouufu, wjptb
+lwdqnj (25)
+xpzhy (84)
+noipcz (59)
+bbhniy (20) -> itngcua, mmcychg, vugnug, fktsu
+jtjcj (64)
+tgdzl (53)
+gobrf (25) -> gtzcxq, lsdrwz
+arsuc (65) -> rbcqgqv, huwsoc, bnfopv, srqntb, vxdkej, owhjmt
+ogzrdrk (101) -> vztbn, wtxbqe
+oxbkwyr (91)
+yatfpqx (109) -> xrbjn, qywkuqu, thjulip, oiijtm
+jlgvplm (84)
+bcibchp (54)
+glgnecl (16)
+tqikxkp (222)
+bhcal (7)
+vmutyru (47)
+kzwqzqf (46)
+evhsybt (37)
+gdnsat (59)
+cikaze (39)
+jrqorlo (229)
+ovluts (52)
+nbfqgr (169) -> cdpwklz, zjpsm
+nbngkou (73)
+wslsg (31)
+aobitc (69)
+htgxu (24)
+wjolzt (46)
+hzgig (95) -> jrvbacq, rgbvlc
+ulbbc (217) -> bniti, jbepak, iynywq, xbcgipi
+wkphn (7)
+fkbla (207)
+jqinti (52)
+yhiogu (256) -> neusnw, tkpvf
+ebjsluk (39)
+shfdaba (76) -> wpnqet, rjjlus, pjiqvd
+anpnrdt (10)
+jdshuob (491) -> kywfqzv, zpkbe, cfhuce, mzmfygf
+vooac (341) -> lufgosn, sbyzsq, mjpzp
+frohei (59)
+baiaa (15)
+pyrlph (71)
+cgxsmq (25)
+ukvvt (39)
+gaujsyk (26) -> ktaet, yipoeia, qijarlh
+gnjvf (375) -> ajenoz, ripqyzr
+hghnmib (47802) -> vbhnmr, vustse, lybkeg, ikmvhid, oqphsw, xzppxad, gvkcsad
+yrcgsnx (270) -> qfypnb, dbvxai
+kwqrbav (34)
+wdvwub (57)
+viqhfi (89)
+akmgfo (243) -> zhvji, iphncut, oyxbblb, gaujsyk, ybftt
+faecnr (80) -> dfeomzr, yoezrpw
+xskehl (228) -> ubovv, omydd, tluap
+pdosfg (21) -> rlbom, lbjwlov, wgqkdcr
+tkiraal (8)
+aimav (46)
+ecimj (85)
+eikmns (83)
+fqlezvk (71)
+qrlggma (49)
+ztkgsyt (29) -> bfuywyg, uexdnv
+tedplb (50)
+cvrcvgp (86) -> zvurtb, dkcix
+bckuyxm (11306) -> eyyzy, jrwfehi, baesyhf
+ffvprc (65) -> vxajmkg, cichyqw
+jjtrisl (81)
+vantwg (46)
+vlmcmcu (91)
+qdhrchr (89) -> dhwauy, uqlso
+ceoav (29)
+bhrbod (50) -> oxbkwyr, erpvue, zhrnwk, mhjtjp
+yxseri (24)
+kzbvrxk (10)
+kcnim (76) -> zjoxibi, auxqbbc
+ltxkw (30) -> eerktn, nqhdt, jjyjrtr, bfchbs, redqvw, mkrzp, nymguj
+rrggg (371)
+uwqgz (1923) -> torxqh, zmlth, lnctft
+dbwmq (117) -> bmecxwd, lcrwbqi
+kasfuwe (46)
+btbxk (755) -> xajjyba, kxykfr, rymkqd
+njxyw (47)
+fvlfq (94)
+zhvji (162) -> cpazlc, mluykm
+aozoac (77)
+chnkkj (86) -> tfmtk, hddzn
+dkcix (77)
+lxcbjgy (91)
+mofks (30)
+yzrdupu (719) -> wajnxjj, dfvhic, dmkyzy, ziqwzzy
+wxjka (47)
+xitzb (52)
+rvimq (7)
+qddsx (30)
+lvklj (97) -> ydbri, tcukgv
+sjforw (208) -> alcvj, neeqb
+yjvgwdl (91)
+fhxpkd (261) -> kauphp, zdhvqrl, rhnkdt, nhkvp, tejnuve, olspit, srmiagk
+eaqjcju (62)
+ybftt (122) -> oewzluz, ebjsluk
+jgmisxl (49)
+hdaqxlh (11)
+cjmxed (49)
+aqxsjq (84)
+cekpxgj (62)
+tetmzw (121) -> ozatmpe, qbmtmcs
+mqmbcl (96)
+xtyzy (155) -> yhiogu, iphzyj, pvppi, tojyt, krxyaak, ymrogz
+drwfop (48)
+pgskth (86) -> hxckb, lxesg
+pvgzz (72)
+kunzpa (687) -> tadnt, cupsjm, hoomyh
+nhkeb (252) -> caryo, bhcal, mjzksjz, ufitse
+cncak (182) -> qoyzgsp, lpuass
+aituccf (9)
+qfpwln (60)
+laxsl (29)
+yzxzo (38)
+lnctft (116) -> zgevpxx, scchi
+lyvyhkm (8)
+vcktg (1556) -> ztghd, imihjj, ksfok
+dzbrgb (75)
+xbcskih (85) -> fobzai, nxzkuj
+jtouvtb (57)
+ufitse (7)
+upwlxnb (7)
+jysaup (78)
+ysgsry (228) -> glgnecl, xnuoujm
+horqcc (73)
+vfsttaj (27)
+gvkcsad (5412) -> ghsjtj, dgnjf, ziyata, rajtef, kqlsniq, vqclii
+lbjwlov (79)
+vnhvilk (62)
+dntphko (89)
+syzlt (6183) -> tifgptk, iwhqlr, akwvj, kueyf
+hzmhm (1087) -> rvrlma, dchts, emzrj
+neusnw (47)
+vfzby (50)
+cecsr (59)
+uwaiki (41)
+msxhvo (42)
+fgjwz (113) -> qwzmv, xehdglb, kgpwo
+lmuyfcw (164) -> hrovawq, hacwv
+zjoxibi (87)
+viwns (17)
+olykwbi (33)
+meypo (29)
+sbguah (49) -> vlfouc, lficpr
+oyxbblb (92) -> towlhi, fndxl, uxjasn
+bzmade (66)
+lfpzff (238) -> bdinafh, kfmzbvk
+epuaii (88) -> ckheb, kwqrbav
+dwwsu (27)
+xnukvni (207) -> htgxu, lwvnbzs
+zhrnwk (91)
+vfngjd (325) -> hfftu, nymhem
+vztbn (87)
+kxnkbs (19) -> tpipb, vuyzhsh, vapwxei, wbxdta
+bmecxwd (27)
+nymguj (123) -> vkpltts, mbhld
+qlwxeb (52)
+kfrti (10)
+xcvxle (106) -> qddsx, bvdxf
+wbesqn (99)
+kblshw (8)
+qymwy (41)
+ezaypy (9)
+dnouufu (43)
+cyapi (227) -> rothisa, hokyk
+itbsk (30)
+alqim (42)
+hjeysaa (251) -> mofks, itbsk, njogewi, ldfopw
+ljfqvk (44)
+iueejt (5) -> rgfndsx, bhrbod, puwvse
+knzppj (81) -> hrlkgen, nsfsj, wbesqn
+wnjwnr (197) -> hnyqq, oajawn
+xtwdau (77)
+dmeee (93)
+qxfce (38)
+pcqyagx (15)
+bicsjoc (33)
+eeguu (78)
+wbxdta (61)
+gjwaqu (35)
+mzmtuw (95)
+huwsoc (173) -> ouspx, wjolzt
+spdhhoe (167) -> chwjiub, kvdkwy
+hhmwlo (56)
+icgwppo (84)
diff --git a/2017/inputs/day_8.txt b/2017/inputs/day_8.txt
new file mode 100644
index 0000000..7b63126
--- /dev/null
+++ b/2017/inputs/day_8.txt
@@ -0,0 +1,1000 @@
+ev dec -705 if cag != 2
+b dec -195 if ty >= -8
+red dec -404 if v > -7
+d inc -971 if k >= -9
+k inc 303 if k > -8
+cag inc 539 if ev > 697
+ev inc -11 if d <= -963
+alf inc -634 if xoc < -2
+eb dec 927 if b <= 201
+e dec 67 if eb >= -930
+he dec -29 if qby < 8
+cox inc 193 if b >= 188
+red dec 340 if alf >= -7
+k dec 8 if red > 57
+eb inc -606 if e <= -75
+xoc inc 337 if red == 64
+xoc inc 186 if mk == 0
+cox inc 840 if npo >= -5
+s inc -449 if anb != -3
+eb inc -233 if npo < 2
+npo inc -808 if mk <= 9
+eb dec 139 if eb > -1161
+ty inc -929 if ty > -7
+mk inc 789 if d > -977
+red dec 915 if k < 299
+anb inc 852 if mk == 789
+red dec 242 if swy == -6
+e inc -29 if cag < 546
+alf dec -219 if cag > 535
+red dec -298 if ty < -921
+tm dec 175 if obo <= 2
+alf dec 553 if eb != -1298
+alf inc -870 if s != -449
+v dec 744 if cox < 1036
+d dec -720 if he > 24
+ty inc -201 if k <= 301
+xoc inc 956 if v > -744
+s dec 539 if e >= -100
+mk dec -37 if anb != 852
+mk dec 833 if tm < -167
+ev dec -410 if ev < 686
+s dec 77 if cag != 539
+anb inc 917 if swy >= -2
+obo dec -5 if s >= -997
+qby inc -231 if tm == -175
+ev dec 378 if tm <= -167
+b dec -106 if s < -985
+s dec 301 if e < -89
+npo inc 232 if b == 301
+red dec -960 if mqk < -9
+he inc -789 if k == 300
+npo dec 826 if cox < 1033
+e inc 101 if k > 291
+v inc -898 if he > 27
+alf inc 141 if anb > 1767
+red inc -613 if e < -2
+tm inc -151 if cag >= 530
+k inc -346 if b != 305
+he dec 967 if cag <= 546
+ev dec -931 if cag < 543
+swy dec 309 if qby < -228
+d inc 437 if cox > 1030
+ty dec 586 if ev <= 1249
+alf dec 299 if e <= -2
+d inc 977 if xoc == 523
+d inc 594 if s <= -1282
+ev inc 21 if swy < -306
+qby dec -722 if cag < 543
+k inc -381 if ev < 1259
+alf inc 847 if anb > 1764
+k inc 126 if s <= -1292
+eb inc -109 if mqk > -4
+obo dec 900 if swy < -300
+obo dec 364 if mk <= -35
+swy inc -211 if eb >= -1416
+ty dec -680 if mqk <= 1
+ty dec -235 if cox > 1024
+cag dec -261 if red <= -559
+obo dec -897 if mqk == 0
+tm inc -981 if mk < -49
+ty inc -805 if eb >= -1402
+mk inc 278 if red < -552
+ev inc 63 if v > -1645
+swy dec -388 if xoc <= 530
+mqk inc 187 if obo != -357
+s inc 416 if b < 309
+qby inc 399 if mqk >= 185
+red inc -680 if mqk != 188
+he inc -981 if eb >= -1407
+d inc 225 if tm >= -327
+he dec 158 if d <= 1991
+d dec 74 if qby == 890
+k dec -930 if anb <= 1770
+s dec -546 if mqk == 179
+ty dec 733 if k >= 874
+ev dec 581 if obo == -362
+cox dec -922 if obo == -362
+obo dec 922 if e == 5
+d inc -948 if tm == -326
+cag inc 161 if mk <= 241
+eb inc -580 if e != -1
+anb inc -632 if qby != 889
+red dec -285 if mk <= 239
+qby inc 550 if eb >= -1997
+e dec 930 if k > 869
+eb inc 604 if swy > -138
+obo inc 383 if he != -1100
+s dec -89 if eb <= -1377
+qby dec -821 if ty < -1532
+ty inc 940 if qby >= 2257
+alf inc -421 if swy != -123
+qby inc 787 if b != 293
+alf inc -80 if b < 301
+b dec 205 if eb <= -1378
+qby dec 870 if obo != -892
+d inc 183 if swy == -132
+s dec -81 if mqk != 187
+swy inc 976 if d >= 1138
+red dec 281 if anb == 1138
+xoc inc 681 if d < 1141
+v dec 14 if obo > -902
+he dec -525 if xoc <= 530
+v inc -866 if red >= -955
+cag inc -835 if mk != 240
+qby inc -549 if s <= -781
+eb dec 584 if mk >= 229
+qby dec -711 if obo >= -904
+ev inc -400 if anb <= 1144
+k inc 82 if swy >= 840
+e dec -415 if mk != 229
+red dec -923 if anb > 1128
+v dec 602 if b != 86
+ty dec -699 if ev > 346
+xoc dec 549 if k > 968
+k inc 317 if qby < 2343
+npo dec 919 if d >= 1137
+e inc 421 if e > -519
+eb dec -104 if ev <= 351
+b inc 368 if qby != 2342
+mk dec -987 if ev == 357
+eb dec -509 if alf <= 236
+obo dec -380 if v != -3127
+npo dec -790 if b < 455
+xoc inc 405 if k < 1287
+obo dec -56 if b < 465
+swy dec 194 if k != 1281
+red inc -562 if tm <= -326
+swy dec 75 if e <= -86
+obo dec -4 if ev == 350
+e inc 533 if xoc < 931
+cox inc -584 if d < 1146
+swy inc 506 if eb >= -1354
+obo dec 458 if k >= 1279
+swy inc 447 if e > 447
+qby dec 847 if cox <= 1377
+xoc inc 225 if xoc < 931
+obo dec 301 if b > 462
+cag inc -740 if e > 438
+tm dec -83 if e <= 447
+tm dec -151 if cag <= -866
+npo inc 26 if s < -784
+v inc 12 if cox != 1368
+eb inc -399 if ev > 340
+eb dec 780 if d == 1143
+e dec 87 if tm == -91
+k dec -13 if anb <= 1139
+v dec 829 if swy >= 567
+k dec -229 if ev < 351
+qby inc 972 if xoc == 1143
+s inc 609 if s >= -789
+mk dec -931 if ev > 346
+mqk inc -605 if cag > -880
+v inc 302 if anb <= 1139
+mk dec 342 if v > -3647
+xoc inc -905 if k <= 1523
+qby inc -412 if qby == 1493
+v dec -548 if d > 1142
+xoc inc 311 if obo >= -771
+npo inc -955 if xoc < 551
+swy inc -885 if mk > 821
+ty dec 91 if ty >= 100
+s dec -840 if npo <= -1492
+qby inc 158 if ev > 342
+ev inc 227 if cag >= -878
+alf dec 612 if tm <= -92
+ev inc 395 if he <= -572
+s inc 570 if swy > -311
+s inc 283 if alf > -382
+xoc inc 297 if tm >= -94
+v dec 100 if d != 1153
+cag inc 928 if ty <= 19
+tm inc 829 if obo > -765
+alf inc -94 if ty >= 8
+ty inc -224 if cox <= 1367
+obo dec -352 if d > 1137
+mqk inc 223 if ev <= 580
+cag inc 55 if eb >= -2541
+red dec 969 if alf > -474
+alf inc -564 if e != 447
+qby inc -97 if obo < -400
+red dec -530 if cag > 107
+ev inc -579 if he > -574
+tm dec -788 if eb <= -2528
+alf inc -217 if v > -3191
+tm inc 635 if cox >= 1362
+tm inc -217 if mqk < -189
+cag dec -547 if v != -3191
+red dec -241 if alf > -1045
+red inc -492 if b <= 473
+he inc 46 if b > 454
+xoc inc 86 if ty > 8
+d dec -755 if qby < 1140
+mk inc -347 if obo <= -405
+v dec 870 if npo >= -1497
+npo inc 216 if red != -1287
+anb inc -574 if obo > -414
+ev inc -364 if eb == -2534
+anb dec -825 if npo < -1277
+k dec 587 if cox < 1372
+anb inc -888 if obo > -401
+swy dec -435 if npo != -1283
+e dec 551 if e != 444
+swy dec 772 if alf == -1036
+tm dec -339 if e == 444
+swy dec 259 if mk == 470
+xoc inc -224 if ev >= -359
+ty inc 265 if red >= -1279
+obo dec 449 if mqk > -202
+d inc 891 if e >= 438
+cag dec 606 if b >= 461
+mk inc -894 if v != -4064
+cag dec -128 if d != 2034
+eb dec 723 if eb <= -2528
+swy inc -12 if s < 1525
+s inc -569 if d == 2032
+npo inc 326 if alf >= -1038
+cox dec -213 if anb == 1379
+obo dec -222 if d > 2026
+ev dec 809 if anb == 1393
+s inc -637 if alf != -1037
+s dec -892 if xoc == 942
+eb inc -248 if cag != -491
+b dec 499 if qby != 1142
+b dec 543 if d <= 2033
+mk inc 345 if mk < -411
+ty dec -284 if npo != -960
+d dec -327 if eb < -3498
+cag inc -743 if mqk > -196
+cag dec 708 if ev > -374
+eb inc 935 if swy == 113
+d dec -908 if swy == 113
+npo inc -753 if swy == 113
+cag dec -227 if alf > -1045
+red dec -658 if v <= -4061
+cox inc -66 if anb < 1397
+cag dec -209 if b > 463
+cox inc -245 if alf != -1037
+alf dec -212 if s >= 2402
+d inc 590 if d >= 3273
+xoc inc -325 if xoc > 935
+red inc 935 if he >= -519
+tm dec 332 if ev >= -366
+cag inc 583 if xoc <= 615
+e inc -892 if e >= 439
+npo inc -628 if obo > -629
+red inc -819 if tm <= 1958
+qby dec -960 if ev > -372
+red dec -781 if tm < 1959
+cox inc -831 if xoc < 621
+b inc -830 if ty >= 559
+anb inc 654 if cag < -1507
+cag dec 995 if red >= -659
+npo inc 356 if b < -361
+tm dec 286 if qby > 2093
+mk dec 369 if ty <= 569
+mk dec -971 if qby != 2112
+swy inc 137 if xoc > 617
+alf dec -743 if npo > -1355
+alf inc 39 if ty < 569
+tm dec -42 if s <= 2413
+anb inc -685 if alf != -48
+ty dec 660 if anb <= 1360
+npo dec 313 if ev < -359
+cag inc -611 if obo >= -646
+tm inc 728 if v <= -4067
+swy inc -4 if cag != -3124
+npo inc 359 if xoc >= 613
+obo inc 694 if b != -358
+obo dec 439 if e >= -452
+npo dec -160 if xoc <= 626
+red inc -659 if e <= -439
+b inc -445 if obo == -382
+red dec 543 if k > 931
+s dec 274 if qby != 2093
+cag dec -338 if k <= 934
+alf dec -211 if alf == -45
+v dec -451 if tm == 1706
+obo dec -465 if v > -3606
+k inc 415 if qby > 2100
+anb dec 220 if swy == 109
+alf inc -3 if cox < 477
+d dec 164 if s > 2131
+qby dec -974 if alf >= -40
+cag dec 891 if anb < 1146
+d dec -337 if qby > 2100
+cag dec -628 if d != 3442
+k dec -648 if alf == -46
+red dec -329 if k == 1996
+e inc -891 if alf <= -38
+cox inc -626 if ty >= -99
+mqk inc -349 if mqk >= -204
+alf inc 388 if qby > 2092
+mk inc -430 if d > 3443
+eb dec 338 if alf < 352
+mk inc -215 if cox == -147
+e dec 171 if b >= -819
+alf dec -205 if d != 3433
+d inc -490 if qby == 2102
+e inc 612 if he > -528
+anb inc -811 if mqk > -543
+he inc 685 if cox >= -154
+red dec -748 if anb <= 1129
+ty dec -872 if ty >= -97
+b inc -920 if eb == -2908
+s inc -701 if mqk >= -548
+tm inc 136 if alf > 545
+he dec -100 if e != -898
+qby inc 552 if anb >= 1132
+xoc inc 700 if xoc == 617
+xoc dec 827 if obo != -385
+anb inc 738 if d != 2956
+eb inc 476 if mqk == -544
+s dec -100 if ev == -366
+obo inc -602 if e == -898
+tm inc -80 if xoc == 490
+eb inc 160 if eb == -2432
+he inc 229 if he == 159
+tm inc 453 if b > -1739
+obo dec 786 if qby < 2655
+swy inc -120 if qby != 2651
+ev dec -382 if obo != -1770
+qby dec 41 if eb < -2265
+cox inc -991 if obo > -1765
+cag inc -713 if obo > -1773
+he inc -958 if red <= -1522
+ty inc -426 if mqk != -551
+k inc 902 if ty == 349
+npo dec -550 if eb < -2274
+swy inc -30 if d < 2954
+anb dec 990 if npo < -1139
+ty dec 301 if red >= -1529
+ev inc -687 if ty > 347
+ty dec 261 if he <= -802
+b dec -313 if ev < -1043
+alf dec 231 if k != 2889
+npo inc 956 if qby >= 2618
+cag inc -39 if npo <= -1135
+he dec 117 if qby > 2605
+v inc -574 if cag > -4421
+npo inc -179 if mk <= 538
+v inc -737 if he < -910
+npo inc 722 if swy < -37
+mk inc 200 if alf != 313
+npo dec -604 if mqk == -544
+ev dec -794 if ev > -1048
+eb inc -384 if npo == 3
+he dec -10 if qby != 2614
+e dec -317 if e > -906
+e inc -662 if d >= 2946
+s inc 941 if npo != 0
+xoc inc 765 if e <= -1235
+b inc 434 if ty > 354
+e inc 513 if anb > 880
+cox inc 146 if mk > 734
+mk inc -31 if alf == 316
+qby inc 887 if mqk == -547
+obo dec -87 if mqk != -536
+he inc -230 if tm != 2217
+e dec -469 if alf < 326
+alf inc 608 if d != 2950
+mqk dec -78 if v < -4355
+b inc -865 if ty < 356
+s dec 57 if npo < 7
+npo dec -100 if cag > -4428
+cag inc -217 if red > -1522
+b dec 338 if k == 2898
+npo inc -324 if k <= 2906
+mk dec -763 if obo >= -1687
+e inc 760 if d > 2945
+e dec 984 if v == -4350
+obo inc 651 if he <= -1126
+red dec -380 if d >= 2950
+b inc 11 if k > 2888
+v dec -406 if red <= -1142
+anb dec -900 if e <= 501
+ty inc -2 if mk != 1471
+tm dec -655 if qby > 2619
+k inc 142 if mqk < -540
+ev inc -346 if xoc != 1265
+xoc dec -284 if k >= 3032
+d inc -908 if k == 3040
+e inc 36 if swy == -41
+xoc dec 372 if alf != 930
+s dec -327 if xoc != 1159
+e inc 56 if ty < 343
+v inc -445 if npo == -221
+xoc dec 265 if s >= 2746
+k dec 604 if swy >= -42
+alf inc 918 if eb > -2662
+mk inc -227 if cox != -150
+cox dec -693 if qby <= 2614
+d inc 88 if k != 2434
+tm dec -278 if k > 2428
+v dec 384 if red <= -1145
+npo inc 854 if ev != -1390
+he inc 69 if xoc >= 893
+d inc 587 if eb <= -2650
+b dec 873 if anb == 1785
+tm dec -557 if mk != 1230
+k dec -335 if k <= 2437
+d inc -215 if cag != -4424
+obo dec -754 if red == -1140
+d inc 369 if v != -4766
+tm dec -12 if red >= -1155
+anb dec -836 if xoc <= 892
+s inc -170 if cag <= -4422
+k dec -717 if mk != 1234
+npo inc -790 if k >= 2764
+obo dec -87 if red <= -1157
+v dec -894 if ev >= -1401
+cag inc -440 if swy >= -49
+e inc 31 if d > 3091
+v dec -581 if he != -1057
+anb dec 760 if k <= 2775
+swy dec 513 if v != -3295
+s inc 840 if mk > 1242
+npo dec -359 if mqk > -549
+red dec -958 if ev >= -1403
+ty dec -246 if qby != 2617
+k inc -28 if cox <= 544
+npo inc -881 if cox > 545
+ty dec -733 if ev < -1391
+e dec 750 if cag <= -4863
+cox dec -44 if alf < 1843
+mk inc 751 if ev < -1390
+he inc -968 if mk > 1980
+d dec -431 if npo != 202
+v inc 406 if xoc != 902
+tm inc 635 if mk <= 1991
+npo dec 401 if anb <= 1022
+v dec 940 if obo >= -1034
+npo dec 572 if qby < 2619
+swy inc 934 if anb != 1021
+eb inc 499 if swy == 893
+mqk inc 17 if s < 2568
+mqk dec -704 if alf != 1836
+ty inc -301 if mqk != 162
+npo dec 29 if cox >= 579
+alf inc -677 if npo > -409
+mk dec -399 if npo == -399
+cox dec 639 if e == -213
+ev inc 602 if qby < 2617
+ev dec -238 if eb != -2149
+mqk inc 26 if k > 2734
+anb dec -153 if v > -4238
+b inc -331 if cox != 584
+mk dec 411 if s > 2574
+xoc dec -631 if xoc == 902
+mqk dec 795 if d != 3083
+swy dec -911 if anb > 1184
+anb dec 368 if e >= -217
+b dec 463 if qby != 2612
+qby dec -127 if v <= -4226
+alf inc -848 if npo != -409
+obo dec -499 if s >= 2571
+swy dec 165 if v < -4225
+alf dec 71 if mqk == -609
+b dec -717 if d != 3090
+cag inc 721 if tm <= 3694
+xoc inc 304 if ty > 1033
+swy inc 728 if d < 3096
+tm inc -690 if eb >= -2163
+qby inc 979 if ty == 1025
+s dec -175 if swy >= 1449
+s dec 639 if he > -2038
+mqk dec 615 if red <= -189
+he dec 481 if cox >= 578
+anb inc -329 if xoc <= 1532
+anb inc 350 if red != -192
+obo inc 720 if s != 2108
+ev dec -316 if s > 2111
+mqk inc 322 if alf == 246
+d dec -723 if cox > 580
+b inc -301 if alf >= 254
+cox dec 847 if xoc > 1528
+v dec -298 if cox <= -254
+eb dec -842 if cag != -4874
+he inc 483 if eb != -1324
+b inc -160 if npo >= -400
+tm dec 885 if obo == 187
+anb inc -505 if tm <= 2129
+red dec 387 if e < -212
+e dec 761 if npo <= -397
+he dec 303 if tm == 2128
+s dec 308 if b < -3718
+mqk dec -207 if he > -2041
+ev inc -655 if xoc != 1533
+s inc -601 if d > 3809
+ev dec 666 if cox < -256
+ty inc 384 if he != -2041
+v inc -560 if ty >= 1403
+ty inc 446 if obo != 194
+obo inc -570 if cag != -4868
+obo inc 21 if k == 2743
+cox dec -183 if mk != 1973
+s inc -780 if eb <= -1306
+b inc -173 if tm != 2131
+b inc 489 if v > -4488
+swy inc 337 if s < 431
+ty inc 36 if alf >= 240
+xoc inc -941 if s < 427
+xoc dec -533 if xoc <= 600
+eb dec 269 if swy == 1795
+eb inc -718 if swy < 1796
+xoc dec 319 if eb <= -2039
+ev dec 855 if npo < -390
+v inc 208 if d >= 3805
+d inc -846 if tm == 2122
+red inc -636 if mk <= 1977
+d dec 695 if ev == -1764
+e dec -864 if cox == -268
+v dec -913 if d == 2270
+alf inc -364 if cox > -270
+he dec -211 if cag != -4862
+b dec 624 if b != -3887
+v dec -953 if b < -4514
+ty dec 631 if b < -4518
+e dec -496 if obo <= -367
+d dec -911 if cag >= -4872
+mk inc -549 if xoc >= 1117
+alf dec -586 if e <= -971
+cag dec -919 if k == 2743
+qby inc -803 if cag <= -3943
+k dec 18 if k > 2734
+ty dec 537 if qby > 2909
+swy dec 973 if tm >= 2122
+d dec -502 if qby == 2916
+ty inc 50 if he >= -1816
+cag dec 344 if e > -985
+cag inc -967 if anb < 311
+ev inc 193 if npo != -393
+ev inc -934 if cag >= -5265
+ev dec 416 if d == 3683
+ty inc -963 if d < 3688
+s dec -904 if s <= 424
+b dec 52 if b >= -4524
+alf inc -427 if obo <= -363
+red dec -686 if cox > -268
+b dec 551 if mqk == -695
+xoc dec -670 if v > -2428
+anb inc 310 if ty >= 401
+ev dec 768 if red < -519
+tm dec -391 if k == 2725
+b inc -624 if xoc < 1797
+s inc -962 if ty != 391
+xoc inc -482 if mqk > -703
+alf inc -110 if v < -2418
+mqk inc -812 if s < 1329
+cag dec -584 if red >= -529
+qby dec -503 if npo >= -405
+npo dec -592 if npo <= -396
+anb inc -611 if anb < 313
+anb inc -537 if red < -538
+eb inc 781 if cag < -4664
+xoc dec -241 if he >= -1821
+k inc -974 if swy >= 816
+eb dec -649 if ev > -3690
+he dec 258 if b > -5750
+cag inc -618 if tm >= 2513
+b inc -132 if npo == 190
+cox inc -187 if mk > 1427
+tm dec 244 if npo <= 198
+cag inc -21 if alf != 350
+npo inc -332 if ev >= -3696
+obo inc -144 if ev < -3698
+npo inc 652 if k >= 1744
+anb inc 682 if b > -5739
+mk dec -585 if eb > -607
+ty dec -395 if red <= -521
+d dec -118 if cox < -260
+obo dec 97 if d < 3797
+mk inc 561 if s != 1327
+mqk inc 341 if xoc < 1558
+eb dec 136 if xoc >= 1546
+eb dec -144 if b == -5744
+b dec 416 if xoc < 1560
+e inc -688 if red <= -520
+cag inc -846 if cox <= -264
+e inc 858 if mk >= 2009
+d inc 120 if mqk < -1165
+eb inc 275 if anb < -304
+d dec 426 if e <= -801
+obo inc -175 if alf == 358
+b inc 411 if v > -2433
+anb dec -285 if qby != 3420
+e inc -899 if cox != -257
+ty inc 764 if xoc >= 1552
+eb inc 157 if tm == 2273
+alf dec 416 if xoc <= 1562
+mqk inc -251 if d <= 3498
+s inc -405 if e != -1698
+he dec 280 if v < -2419
+mqk dec 783 if e == -1705
+s dec -530 if mk > 2013
+cox dec 601 if qby >= 3421
+alf dec -214 if cox <= -253
+cox inc -280 if v < -2418
+obo inc -617 if k > 1749
+tm dec 400 if v >= -2427
+obo inc -810 if swy == 820
+cag inc 245 if red < -524
+k inc 939 if obo < -1973
+xoc inc -867 if d != 3499
+ev inc 930 if ev >= -3690
+npo inc 490 if npo == 513
+obo dec -127 if tm <= 1874
+v inc -937 if cox < -539
+cox inc 806 if eb < -315
+tm inc 868 if b == -5749
+d inc 370 if cox != 264
+mk dec 735 if d >= 3488
+v dec 651 if tm >= 2736
+d dec 751 if d == 3495
+eb inc 73 if eb == -320
+anb inc 946 if mqk >= -2202
+k inc -879 if tm != 2731
+cag dec 329 if cag >= -5075
+v dec 110 if npo <= 998
+cox inc -324 if v != -4012
+s dec -43 if xoc <= 688
+xoc inc 154 if ty <= 1552
+npo dec 126 if e == -1705
+mqk inc 631 if qby < 3428
+obo dec 875 if k < 882
+eb inc -159 if d >= 2737
+ty inc 158 if mk < 1266
+cox inc -726 if cox != -65
+red inc 699 if he <= -2352
+anb dec 348 if he == -2353
+mqk dec -25 if cox <= -792
+he inc -72 if ty == 1550
+tm dec -396 if obo >= -2712
+mqk inc -730 if alf >= 153
+ty inc 950 if b <= -5741
+qby inc 711 if b <= -5747
+he inc 990 if ty == 2500
+eb inc 691 if cag <= -5394
+v dec 315 if v >= -4001
+cag inc 831 if k == 872
+cag dec -285 if s != 974
+tm inc 500 if k >= 865
+ty inc -407 if ev >= -2761
+ev dec -960 if v >= -4019
+anb dec 698 if cox < -781
+swy dec 265 if cox <= -783
+e dec -962 if anb < 237
+he dec -152 if swy != 555
+npo dec -416 if alf < 159
+red dec 450 if qby > 4127
+cag inc 253 if s <= 964
+cox dec -969 if tm <= 3634
+e dec 442 if qby < 4135
+mk dec 890 if qby > 4128
+cag dec -934 if ty != 2085
+cox dec 905 if k != 876
+red inc 595 if k <= 862
+b inc 105 if npo > 1286
+obo dec 502 if mk == 394
+ty dec 533 if obo != -2718
+ev inc -6 if mk < 386
+npo inc -144 if d < 2746
+e inc -232 if ev >= -1813
+alf inc -78 if ty > 1553
+eb inc -637 if ev != -1796
+tm dec 132 if e != -1425
+swy inc 667 if alf == 78
+red dec -166 if mk <= 387
+swy dec -173 if v >= -4014
+qby inc 788 if qby > 4121
+ty dec 172 if qby <= 4919
+red dec 447 if tm == 3501
+obo dec 366 if alf == 78
+he dec -842 if mqk != -2305
+xoc inc -10 if d >= 2736
+ev inc 517 if cox != -726
+mqk dec 865 if npo != 1151
+obo inc 29 if red <= -552
+qby inc -337 if b == -5644
+cag dec -970 if mqk != -3172
+e dec 343 if xoc != 827
+d dec -890 if v == -4017
+v dec 793 if anb > 220
+cox dec -442 if he == -599
+eb dec -759 if anb > 225
+obo dec 45 if k == 872
+obo dec -534 if e > -1764
+cag inc 344 if npo >= 1149
+eb inc -458 if e <= -1764
+obo dec 55 if mqk > -3167
+s dec -487 if v > -4813
+xoc dec -51 if d >= 2744
+ty dec 568 if ty >= 1387
+cag inc -698 if cox <= -276
+cag dec 162 if mqk > -3170
+k inc 563 if qby > 4579
+alf inc -784 if tm >= 3498
+mqk dec 520 if obo > -2624
+npo inc -780 if qby > 4576
+alf dec 152 if he >= -602
+v inc -614 if eb <= 415
+he dec 659 if k < 1445
+ev inc -49 if d >= 2740
+e dec 302 if v >= -5424
+ty dec -877 if alf < -867
+qby inc 368 if swy != 1394
+anb inc 732 if swy < 1396
+mk inc 61 if ev > -1344
+b inc -66 if cox == -280
+npo inc 11 if swy <= 1397
+swy inc 292 if alf >= -852
+red inc -606 if mqk == -3684
+e dec -460 if cox > -272
+s dec -469 if cag > -2898
+tm dec -717 if obo > -2618
+xoc dec -796 if cag != -2893
+ev inc -145 if tm < 4222
+e dec 892 if red == -1167
+red inc -403 if red == -1164
+tm dec 519 if npo != 389
+cag dec -107 if cag <= -2900
+ev inc -385 if d > 2743
+qby inc -444 if alf <= -857
+ev inc -201 if swy != 1398
+npo dec -851 if s >= 1922
+s inc 975 if s <= 1923
+alf inc -906 if v != -5413
+obo dec 870 if ty >= 815
+obo inc -26 if anb == 959
+e dec -65 if e <= -2951
+ty dec -835 if anb == 958
+anb dec -49 if swy > 1394
+mk inc -253 if mqk <= -3680
+e dec -862 if b != -5708
+qby dec -293 if s == 2896
+s inc -845 if cox != -271
+xoc inc 509 if npo >= 387
+obo dec -758 if mqk >= -3675
+v inc 370 if b < -5703
+cox dec -986 if red >= -1172
+b inc -682 if d >= 2739
+k dec 568 if v >= -5055
+mk inc 451 if alf == -1764
+ty inc -56 if mk <= 645
+eb dec 173 if s <= 2051
+s inc 836 if ty != 764
+alf dec 345 if cag <= -2887
+cox dec 206 if k != 867
+eb inc 44 if s > 2053
+d dec -294 if cag <= -2891
+he dec 904 if swy >= 1386
+ty dec 499 if swy < 1399
+e dec 891 if tm > 3698
+b dec -732 if v < -5057
+qby inc 722 if red != -1168
+e inc -609 if npo != 379
+b inc 741 if e < -3525
+b inc -833 if tm >= 3701
+red inc 282 if ev > -2072
+obo dec 441 if b < -5647
+xoc dec -612 if anb != 1005
+s dec 67 if mk > 647
+cox dec -341 if red > -879
+v inc 316 if qby <= 5519
+mk inc -251 if ty == 271
+ty dec 587 if b <= -5658
+anb dec 204 if d < 3044
+he dec -358 if qby < 5521
+s dec -594 if obo < -3946
+xoc dec -802 if d > 3029
+alf dec -536 if alf <= -2105
+tm dec 209 if cox <= 711
+s inc -142 if anb > 809
+s inc -571 if mqk >= -3676
+npo inc 607 if alf == -1563
+swy inc -438 if swy >= 1388
+b inc 325 if xoc != 3092
+k dec 338 if s <= 2650
+cag dec -748 if he == -1804
+npo inc -186 if npo <= 382
+cag inc -920 if tm != 3483
+swy dec 288 if mk >= 652
+ty dec 362 if mqk != -3685
+alf inc 291 if anb == 811
+mqk inc 203 if red == -890
+swy inc 712 if eb >= 231
+ty dec 327 if v > -5052
+npo inc -453 if mqk == -3684
+cox inc 747 if mqk < -3685
+qby dec 844 if cox >= 698
+cag inc 785 if swy != 1659
+red dec -820 if xoc > 3086
+anb inc -2 if cox < 709
+cox inc 91 if cag <= -2280
+cox inc 988 if mk <= 643
+ev inc 895 if ty != -433
+red dec -411 if npo == -259
+npo dec 831 if npo > -261
+k dec 799 if mk == 643
+qby inc 373 if v != -5054
+e inc 949 if swy > 1668
+qby inc 278 if d > 3037
+eb inc -839 if obo != -3946
+mk dec 758 if anb <= 800
+npo inc -662 if s != 2642
+e inc -807 if e < -2575
+cag inc 755 if swy <= 1669
+e dec -532 if swy > 1662
+alf dec -4 if eb <= -596
+swy dec -552 if ev <= -1170
+d dec -857 if cox != 1700
+anb dec -31 if anb > 798
+eb dec -482 if npo < -1759
+ty inc 820 if d == 3897
+xoc inc -846 if v >= -5054
+alf dec 312 if d != 3895
+obo dec -531 if npo >= -1752
+b dec 722 if ev > -1177
+d inc 912 if ev == -1173
+e inc -497 if cag <= -1514
+b dec 551 if eb <= -599
+mqk dec -130 if alf >= -1576
+obo dec 426 if s >= 2649
+mqk inc 672 if cox >= 1698
+red inc -879 if alf <= -1568
+he dec -503 if cox != 1687
+tm dec 117 if ev != -1173
+he dec 237 if mk < 645
+qby inc 189 if eb != -601
+k inc 820 if k < -279
+mqk inc -594 if obo <= -3421
+k dec 375 if v > -5041
+cag dec 298 if d != 4807
+b inc 985 if ev != -1163
+tm inc -697 if cox >= 1687
+v dec -940 if swy >= 2212
+k inc -260 if d >= 4806
+ty dec 73 if k < -526
+swy inc -530 if s <= 2654
+mqk dec 636 if swy >= 1686
+d inc 32 if qby <= 5516
+v inc -809 if v <= -4103
+e dec 380 if k != -540
+ev inc -651 if b == -5939
+qby inc 352 if alf >= -1576
+v inc -256 if obo > -3416
+mqk dec 28 if red <= -527
+alf inc 395 if npo > -1762
+ev dec 317 if d < 4837
+cag inc 74 if red >= -528
+mk dec -575 if anb == 833
+cag dec 744 if obo == -3421
+mk dec -455 if qby == 5868
+k inc 350 if cag <= -2266
+d inc 730 if npo <= -1749
+ty dec 180 if mk != 1673
+xoc inc 364 if cox == 1694
+anb inc 937 if cox == 1694
+s dec 459 if tm >= 2785
+cox inc -594 if cag != -2271
+cox dec 874 if cox > 1102
+xoc dec 289 if alf > -1178
+e inc -178 if obo < -3413
+red dec -965 if obo >= -3416
+npo dec -47 if ty == -497
+alf inc -264 if npo < -1697
+v inc -518 if alf == -1429
+red dec -264 if swy == 1697
+k inc 540 if obo > -3415
+ev dec 208 if tm != 2799
+npo dec -967 if tm >= 2788
+xoc inc 106 if swy == 1691
+eb dec -276 if s >= 2185
+b inc -151 if mqk == -4812
+he dec 120 if he <= -1534
+e inc -236 if cox >= 1091
+tm dec -25 if alf == -1436
+xoc inc 618 if s == 2186
+b dec 269 if qby != 5876
+cag inc -911 if cag != -2267
+mqk inc -68 if he == -1658
+alf inc -267 if ev > -2035
+cag dec -228 if npo < -733
+k inc -527 if cag > -2043
+qby inc 341 if red == -533
+xoc dec 539 if mqk >= -4879
+d dec 884 if ev == -2032
+mk dec -837 if ty == -497
+tm inc -879 if k == -707
+k dec -32 if tm > 1907
+e dec 771 if ev > -2026
+qby inc -732 if s <= 2192
+ev dec 629 if swy < 1700
+obo dec -799 if e > -4138
+e dec -954 if k >= -683
+ev inc 177 if eb == -329
+d inc -151 if cag < -2032
+b dec 967 if alf > -1711
+e dec 836 if b == -7326
+he dec -543 if eb > -337
+d inc 478 if alf == -1705
+mqk dec 251 if xoc < 3047
+v inc 235 if anb == 1770
+xoc inc 94 if mqk > -5134
+swy dec -106 if s > 2176
+cox inc 591 if xoc != 3138
+eb dec -594 if eb == -329
+he inc -389 if qby == 5469
+swy dec 680 if ty != -487
+alf inc 713 if ev < -2483
+mqk dec 533 if b != -7332
+mk dec -282 if tm <= 1920
+d dec -878 if tm >= 1913
+ev inc -821 if b > -7327
+s dec -229 if qby > 5475
+tm dec -671 if swy > 1115
+mk dec 703 if eb > 262
+cag inc 96 if v == -4682
+alf inc -771 if mqk != -5672
+eb inc 140 if b > -7322
+swy inc -493 if eb != 270
+he inc 826 if eb == 273
+v inc 82 if s <= 2408
+anb inc -898 if tm <= 2585
+mk dec 735 if red <= -531
+obo inc -704 if eb >= 262
+cag dec -145 if tm == 2585
+k dec -952 if swy > 620
+mqk inc 818 if eb == 265
+he inc 229 if b > -7325
+v dec -717 if npo != -746
+npo inc -329 if d == 5890
+xoc inc 820 if v > -3957
+ev inc -751 if alf != -1768
+he inc -105 if npo == -1066
+tm inc -86 if swy <= 627
+npo inc 83 if qby < 5486
+npo inc 829 if mk != 1347
+swy dec -554 if tm >= 2504
+anb inc 836 if red <= -524
+npo dec -878 if b > -7328
+cag inc -276 if alf != -1763
+red inc 215 if qby >= 5469
+eb inc -509 if d >= 5884
+xoc dec -707 if he >= -1119
+s dec 42 if cag > -1801
+s dec 63 if obo >= -4125
+mk dec 358 if cag <= -1793
+eb inc 95 if cag <= -1793
+eb dec -637 if b >= -7323
+ty inc -617 if xoc != 3854
+mqk dec 510 if ty < -1112
+he inc -285 if tm != 2499
+ev inc -547 if qby < 5487
+mk dec -915 if npo < 730
+eb inc -953 if e > -4036
+obo dec 412 if he >= -1108
+npo inc -925 if d < 5888
+ev inc 930 if cag < -1792
+v inc 658 if npo <= 726
+ev inc 892 if mk <= 1918
+ev inc 756 if b == -7326
+qby inc -574 if s > 2307
+npo inc -638 if red >= -326
+tm dec 248 if mk < 1913
+cox inc 865 if s < 2317
+cox dec -950 if d <= 5893
+mk dec -632 if he <= -1108
+v inc 176 if d <= 5893
+mk inc -805 if ty != -1120
+ev dec 973 if npo < 89
+swy dec -601 if s < 2308
+e dec -146 if cox < 3509
+mqk inc 321 if cag > -1803
+xoc inc -534 if alf >= -1764
+d dec 747 if ev >= -3004
+npo inc -826 if obo != -4120
+xoc inc -343 if ev < -2994
+b dec 415 if anb <= 1708
+b dec 323 if xoc > 2976
+b inc 697 if ty <= -1118
diff --git a/2017/inputs/day_9.txt b/2017/inputs/day_9.txt
new file mode 100644
index 0000000..eb4d605
--- /dev/null
+++ b/2017/inputs/day_9.txt
@@ -0,0 +1 @@
+{{{{{<!!!>!>'!!!>!!!!!!!>u!!!!!>},<'>,<!>e{o!!!>!'>}},{{{<!!u<>},<!!!!!>!'!!a}!!!>,<!>!!!!!i!!,e!>,<i{o!>},<!!>}},{{},{{<e},!>},<!{"!!'e'>},<auu<oa{!!!>!i>},{<a!!,'<!>>,{<a}!!!>a>}}},{{{{<!!'!>,u!!,}!!!>!!"'!!!>,i!!e>},<!!}<!>},<!!!!'i!!!>ii{!>},<!>,<!!"!>">}},{<!!ua<!>},<{!!!>!>},<!<e''!!!>ou!!!!!>!"!!!!!!!>!!>,{<!>},<u!!a!>,<!><"ui!!,u'!>,<!!!>!!o!!a>}},{{<"!!<<!>,<!>},<o{<e!!!>!!"<!>},<o>}}}}},{{{{{{{{{<!>!>,<,>},{<!>,<,}!>},<!a"!!!>},<,!!!>,<!!!>!!!>'>}},{{<{}!!e!!!!>},{<e!!!><!!!!'!>,<ea!!u'i,e{!i>,<""a!!!>},<o>}},{<!>,<!u<!!!!au!!!>!eia'!>},<!>,<!<>,{}}},{<,oo>,{{<!>},<ei,{<oeo,!!'a!!!>!>},<''>,{<{e!!!>!!!>}>}},{{}}}},{{<i!!'}u!>>}}},{{{{<!>,<oe}'u<!>,<e"e!a>}},{{}},{{{{<!!!!!>o!!!>!!"o!!!>>}},{<'>}},{<e>}}},{{<!>,<!!o<<!>i>}},{}}},{{{<a!>!>},<!!!!{!a,!!!>{!"i!}oie>},{<e!!!!!>,<,">}}},{{{},{{{{{{<{uu{'!!>},{<>,<!aeoae>}},{{{<!!!>,<!<<!>,<!!!!i<!!!ue!>,<ui}o!!e>}},<!>,<!!e"i!!'{"'>}},{}}},<'i!!ueiu,!>},<!>},<!>!!<"}!!!>,<!>},<>}}}},{{{{<,!>},<',!!',ei!>!>},<!}!!!>i!!}ee,>,{{}}},{{{<'a'!!e!"i!>o!!!>!!!>!!!>{!!!>,<,>},<ei!<!!<!{e{ua>},{<!!!>,<{!!!!!>!!,!!!>>,{<,!!>}},{<!>,<!>!>}e!>},<!!!>}{'!!!>o>}},{}},{{{<!!!uu!!!!!!!i<>,{<,}"!>!!!>}o!>,<>}}},{{{{{<!>,<u!oo!>,<!!}a<>},{<!!!'!>o>}},<o!>,<!<!>,<<ii>}},{},{{<<!>,<>},{<i!>"o!!aue,>,<i!>},<!>},<<!!e!!i>}}},{<!>},<!!{"!>,<!o!}!>},<o,o'!>!!a,e!!!!!>,<>,{<u"!!!>!>},<!!>}}}},{{{{{<!>},<!!!>!>,<o>,{<!!!!!>!!!!o!>},<!>u!>,<!!!>i!o!>!e<!!!>''!>!>i>,{{<,u'!>i"o!!"}>}}}}},{<!!!!'}{>}},{<!>"}{!>},<!>},<i<!!!>,<i<>,<"!>,<"u>},{{}}},{{{{{<!!'e!!!!!>>,<!!a{o!>u,,o}"{>},{<!>,<<,!!!>,!>o!,!>,<!!!!'>}}},{{{<uo!!!>!>},<!>,<e>,{}},{<!!'a",!}!!!>!!i>,{{},{<!!!!!e!!"e!>},<'{<!!!>},<o!!u!!!!!>{{!>,<>}}}},{{<,<!,!!">},{{{}},<!"o<o!!}!>},<!>,<{!!!!!>"o!!<,e!o!!!!!>},<!>},<>},{<i!>},<>}},{{<'!>!>!>,<>},<"io!!!''!!!>!!o!!o!!!>,<<i<i!!!>!>,<>}},{}},{{{<'i!!!'}!!!>!>!!u!!!u!>oo!>},<>},{<!!,i!>,<!!a!>!>,<u!>},<ae>}}}},{{<{i!!iu!,!!'!!!!{"!!!>>,{<!a'>}},{{<",!>a{a!!{i!>,<!>},<}u!>,<!>!!oii>},{{<'u!!"!!!>}a!!e!aa!>,<i!!!>!!!>,<<>},<!>},<"}"!!!>i!>,<>}},{{<!!u!a',"{>,{<'}"!!!o!>},<!!'!!<a,,"!!,uo>}},{<e!>,<e{!!,}<!!<!!eu<<uui>,{<{!>,<"!>,<,!!,!!,e!!{{a,!!!!!>},<<a>}}}},{{<}!>'!!{,<!}!!"!!e!!u"e,!!i>,<!!!>e!>,<!>},<!!!!!>>},{{{{{{<!!""!!!a!u>}}},{}},{{<eio>}}}}}}},{{{{},<!!'<!!!>},<u!>!!!!i}e!!},!>,<{!>,<!!!>>},{<'!'''!>o"},!!e{!"o!>,<u!!!>{!>u>,{}}},{{{<!>,<u"o"{!!!>!>!!o!!}iou>}},{{{},<io<!!'"!>,<!>,<!!!>a<>},{<!>,<a!>},<<o!!!>{i!!o>,<!ao!>,<!!"!!u{!!{!!!!<!!e<!!a}{u}{!!!!a>}}}}},{{{{<!!!><!>},<!>},<a!"!>,<,!!!!!!,!!!>,<a!!e>}},{{<!!o<!u!!ee{>},{<!!!><<o<"e>,{<!>},<{!,!!u!!!!!!!!!>},<!!!>,!!!>i!!{<!>,<!!>}}},{<!!!!!>o!>'<!{<{!!{!!>,{<"!>!>!>},<!!!><'{o{e!>,<,a}!!i>}}},{{},{},{<!!!!a!>},<!!!}!>,<!!!>e!!!!!!!!e}!!!!a!!'}">}},{{{{<!>},<i!!!>!>},<uu<o{io>},<e<!!!>!!!>i}!>,<<>},{},{{{},{<i"!!a!!i!!!!}!>},<!}{<!'o!uu,>}},{<u!!eo!!{eo!>,<'!!!>{!!>}}},{{},{<!!!>'""!o!>,<>,<i<!>!!!>ue!!!>i{'!u<<!!!>,!,>},{{<e>}}},{{{},<!>,<!!!>,i}},!>,<!!e!!>},{{<!!!!}e!!i!'"!iu!>},<!!{!!u>},<u!>>}}},{{<"}<!!!>},<ou!o}!>,<>,<!!!>'!!!'u!!!!!u!!}>},{{<!!!>!>},<}>},<!!<!"!,'u!!!>!!,a','>},{{<u>,{}}}}},{{{{{{}}},{{{{{<aa,,!>!>,<>}},{{<oo>}}},{<}!>,<,{i!!}!>},<!!!>>},{{{{<a!!!>,<!'<!>"!!!>u<i!>},<a}'}!<ie>,{<!>,<o!!!!!>i"a}!!}a!>i<!>},<!!!>!!a!!!>>}}},{{},{}},{{{{<!>,<"u<!!}ui!!e<!a}u!>},<!!",>}},{}},{{{<">,<!>},<!!!>!!u>},{<!>,<{>,{{<"ie!}!>a!e>,{}}}},{<}i''ua{!>},<>}},{{},{<!>},<!>!>},<o},!!!>!>},<<!>,<u{,!>},<,a,>}}}}},{{},{{<,"u{>},{}}}}},{{<,!!i!!i!!!!"a"!!!>!>,<>,<e,a,}!>,<<!!!<>}},{<!!!!!>!!ou>,<<!>},<}u!!!!!>{!!,!>,<i!>,<>}},{{{<a!>{!>},<!>">},<a!o!!!>!i"!><!>,<"i}!>!>!>a>}}},{{{{<a>,<!!!>!>e!!>},{<!!a!!>},{{{},{<i>}},{}}},{{{<!>},<>,<"'<<!,">}},{{<e!!""!e!>"iaa,a>}}},{{{}},{{}},{}}},{{{},{<!i>}},{{}},{{{{<<!>},<{a!!!>!!!>}ua!!!!!>a>},{<ea!!{i!!,!!a"}!!}{u'!>ae!!!>'>}},{<>}},{{<!>},<!',!<<,!>,<>,<{,"ea>}},{<u,o!!u>,{{},<}!!{!>},<i!!!"<!!}!>},<ieo!>!>,<{!>},<!{!<!>,<!!u>}}}},{{<!!"',u"}u!>,<>}},{{{<u!>,<!a!!o>},{<!>},<!>{!>'!!u!!!!'!>,<!!<!>,<!!!>},<},!!!!'>}},{},{{{{<<ou!!e!>},<i>},{<}{!>},<!>,<!>"''!!!>a<!!!>o!!!>ue>,<!<,'!>,<<!>,<o}!!!>,<!!!>}o!!ea}>}},{{<!>eo,a!>!>},<<a!'!>},<"!u!{i!!!!e!>,<,!!u>},<{}>}}}}}},{{{}}}},{{{<,au'!>},<oo!>,<!i},}"!>},<>,<i!!!!!>},<{!!!>!>!!o'"!>!,"}!">}},{{<!!'ia!!o{e}'!>!>!!!>",!!!!!!!!!!!<!>},<>,{<!!""}!'<"{!!!>>}},{{{}}},{{<!!!>i!!!>!>},<!!!!!>!>e!!!>,<!>},<!!}eei<i!!!!uu>},{}}},{{<>},{{<!i<!!a}u!!!>"!>,<'!!!>,!>},<<!>},<ui!>,<>},<<!>o<"!!!!e}}!!!!}!!!>!!">},{{<,<!!!>e>,<!e!i!>i{<!}!>},<}!!!>>},{{<"e""!}u"!!!>!>,<!!">},{<!!!>!>},<oo!!!>'!!e!!!>!>,<!!!>,<{iau!>},<eo'>,<!>{u{e!!"}u!!<!'o>}},{}}}},{{{{{<!o!>},<>,{<o{ee!>}"!!!>},<!!o!>!!!!!>!!!>},<!>!>,<oa>}}}},{{{{<{i!!uu',",u>},<a!>,<"!!,i,!!a!>!!o!>,<!a!!e,!>},<>},<,o<!!!>!!!>o!>o>},{},{<'u!>,<!!!!>,{<i!!!>!>},<!!i!!""{!!e}u!>},<i}!!'e!!!>{'>}}}},{{{<e!>},<,!>>,{<""a'oa<!a}!!!>!>,<>,{<!>},<>}}},{<ou!!!>,!!!>,<>}},{{{<e{!!{!!!>!!!>a!!!o!!!>!!'e!>,<}o{!>},<!!">,<,'>},<!!!,!}i!>oa!>,<i"<!!<',!o>},{<i!>},<>}},{}},{{{{<,{!!o!>i>}},{<oe!>,<,"o!>},<a>}},{<i'!',!>,'>,<o<a!>},<<!>},<!!!>"!!!!o<a>},{}}}},{{{{{<a!iaou>},<!!!!!!!>ua,!>o"}e!>},<e,>},{{<,!!!>!!!><o!>,<!>,<<!>},<!>{a{i!>},<u>}}},{{{<>,{<!>,<u'i!o!>},<>}},{{}}},{{{<>}},{{<'!>,<!>},<",!!o}}{!>},<oo!!!>>},{{{{<'}!!!>,{a>},{}},{<!!!>o'!u"!!!>,<!!!!!>!a!!!>>}},{{<'!!!>,<'"}>}},{}},{{<!!!>e,o<uao>,{<<">}},{},{{{},{{<{e!!!>{!!!>},<"!"!!!>!>},<>},{<o'!!!>{>}}},{{{<'!>},<,!!e>}}}}}},{{<aioa!>{{!>,<",!>,<!!o!!a>,{{<}!>,<<!!!!!>!>},<,'{,}!>{uiu,!!i">},<!!!>u>}},{{<!!!>!!!!!!!!!>ae}'"!ua<i,!!!>,<oe!!!>>},<}!>},<!!!>}}ui!}u>},{{},{}}}},{{},{<!!!>,<!!!>o!!!!o'!!!!!>{u!>,<!>},<'i,!!}<!!,>}}},{{{<u'a,!!!>i>}},{{{{{<!!!>}e,""!{!!!!""!>!!!>ea>}}},<!!!!",'!!!>,<!!!>!!!>!<!!!>,<}>},{{<'!!!'!>ee!>,<>,<!!}!'>},<""!!!>},<i!o<!>,<eie!!",!>e>}},{<!!!>},<i!!!>'"!!!>!!<!>},<a!!,!>},<>}}},{{{{{<!>},<u!>,<!>,<!!{'!>},<!>},<<<>}},{<a!!!!!!!>!>},<<!o<"u<a'">,<!!!>,<'<!>},<!!!e!>},<!!!>oe,!!<>}},{{{{<u''!a",<io!>,<!>'a!!!>,<!!{"!!u'>},{<'!>},<!>,<!!a!>!>},<a!a!!,>}}},{{<!>},<oa>,{{{<!>},<!!o,>}},<i}u!>},<a!>},<<<!}!!!>!"e<!!!>!>},<}i>}}},{<{>,{<!>},<!>,<}{a!>,<u!>},<e!o>,{<!{e!!!>!>,<e!,!!o',>}}}},{{<'!<<i,a!!!!!o>},{{<<"}'!>},<<ao>},{<!!o!<!!!>>}},{{{},{{<!aoa{!>,<i!!e!{!!!!e!'ao!!!>,<}!>!!!>e!!{>}}},{},{{<i!>,<!>},<!>},<!>iaeo>},{{{{<!!u}!!!!,!!!!"uo!>,<<'o!>,<!>},<'i!!!>},<">},{<ii>}},<,>},{{<!>},<!>},<>,{<u>}},{<!>},<!!!!!!'"!!!>!>},<{!!!>i!>ao!>i>}},{{}}},{<i!!'!!!>e<{o"!!!!!>'>,{}}}}},{{{{<ou!{"!>},<!>},<>},<!!!>iauiui!>},<>},{<!!}e}e'!>,<!!!>>}}}}},{{{},{<!!!>}eoei!!!>u!>},<ie!!!>">,{{{<e!o!>},<}!>},<!>!!ie!,!!!i!oi!!!>},<!!!>>}}}}},{{<}!!e!iieu!!'>},{{<!>,<!!!!!>>,<}o!!!>>}},{{<!>!!u!!!>>}}},{{<!>},<<!>},<},,!!!<'u,!!o!!i<u{">,{<!>,<}!>,<!>!>,<!!!!!>!!!>!!!!}u"}i>}},{{{{<{e!>,<e{'i!oiu>},{{{{<>},{<"e!>},<ie">}}},<uu'<{<!>,<,}!!!>!!!!!>,<!!'o!!u'{>}}},{},{{},{<!!,'}!>!!!!!!!>,o!<!!!>'!>,<>,<o}!>!>,<{!!e!!,!>!!e!>,<!>i!!<{>},{}}}},{{{}},{{{<!!eu!!{o!!!>!>!!!!!!"!!!!>}},{},{<!!!>!!!!!>'oaii!!!>e!>,<!!!!!!!!!>!!!>o!>},<!!!>a>,<!!!>'!!i}u'{e!'!>e!>'!}!!>}},{{<!!!>!>},<o!!!}!!!>}'!!!>>,{}}}}}},{{{{{},{{<}u!!!!i<e!!a,i>}}}},{{<!!<}{<<u}u!>{ioe!!>,<''!!'e}!>>},{<u}eai>}},{{<'!,o>},{{}}},{{}}},{{{{{},<!!<u!!{o!}!!!>"<!>,<!,>},{{{},{}},{{<i,!>!>,<"<!}'!>,<!{>},{<!!!>}a!>ae!!!>o!!u!!"e!!<'o{>,<u<!{!>},<{>}},{{{<{}eeoua!!!>},<!!o"'{{>}},{<u!!!>!!}!!!!!>!u>},{{{<!!!>!>,<'a!>}!>!!<,u"!>!,{e<>},{{<!!eu!e!aa"'o'"!>u"'<!>>,<!>},<!!>}}},{<,eo'}o!'{>,<ia,!>i!!a"!!!>!>},<}!a!!!>!!!!!>,<ee>}}}}},{{{<!>u!!o'!!}!!!!!>!!!>>},<e<!>},<u!!>},{{<,!>!i!!<!>,<!>},<!>!>,<!!!!ao{<ae,,!>},<>,<<"e!>!>!>,<u!!!!u!!!!!>,o!>,<o!!!!!>},<a>},{{}}},{}}},{{{{},{},{<"!"<"!,!!!!!>eau!>,<,>}}}},{{{{{{}},<o<i!!!>,!>,<a,!!!>!!!>!!!>!<<<>},{<a{ue>,{<a!>!>"i!o,!!{!>},<a!!!!>}},{<"ia,i>,<'!>ioi!>},<>}},{{{<>},<!!<,e'au!!!!'>},{},{{<i',e!<!>,<'u,>}}}},{{{<o'i'!!<{!>,<a!!o!!e!!,!u!!o>},<,!>,<<o!>,i!>>},{{{<},}!!",!>!!!><>}}},{{},{{{<!!!'',u'a!<a!!!>},<ou!!!>!!a>},{{},{}}},<}a!!!,'a',!>u>},{{<!u!!!>ia{!!o!!!>},<!>,<!!<!>},<!!!>"!>,<!!!!}i>},{<!>,<!>!!,!>,!>>,{<}i>}},{{},{{<''!!e<!>},<a!!!>e{!e>}}}}}},{{{{{<"u!>!!!!>,<a!!o!>},<}!>},<!>i!}'>}}},{{{{{{<,,!eaa!u!!oie!<,!!!>!>},<!>,<!>{u{!!i>},{<"<i,!a"!!eo>,{}}},{{},{<!!!!e!>},<'!!!!,!!!>!!",>}}},{}}}},{{{<i{}'>},{<{!!!>,,!!e!>,<!!!!!>a"!u!!!!e!>,<{!!!!!',<>}},{{<!!u!!,!<}}<,<>},{<"!,!>},<{a!>},<}}>}},{{<<!!!>}!!"!>,<}!!i""'!!!>{>,<!!!>},<!>,<{!u!!'<io!o{>},{{{{{}},{<!!}!>!'u>,{<'u!!!>,<!eo<!>,<!!!>{>}}},{{<a{o!!!>"!!!>'}e!>,<}>},<!>,<}{!!!>!!!!"!"!>!!!!,}<<>}}}}}}},{{{},{{{{<,!!!>,!>},<!>,<!>},<>}}},{<!>},<>}},{}},{},{},{{},{{<u!>},<ieo!{!!<'"!u<!!!>!!!>,>,{}},{},{{{<o>},<,>},{<<i!a{{{<<!!!>!!!!o>,{<!!{<a!!!>u!>},<,!!!!oo!!!>!!u"!>}!>,<>}},{}}},{}}}},{{{{{{<<!!!!!>i!>!oi}oeuu>},{{<,{!>!>!!!>!!!>},<!!!>!!!>!!!>!!,'!},o!}>}}},{{<!>a!!iu{!e>},{{{<{!!{!!o!,!!!>>},{<!>},<!>},<"oi!"!!!>!>},<>}},{<!>},<i!!i}>},{<ue'!!a"uu{!>,<!>},<uuaa{!"!!!>>,<ee>}},{{},{{{},{}},{{<a!!!>!!!!!!{!"{e}e!!,!>ae!!'},!>},<!!!!o!>},<>}}}}},{{<!!!>},<>},{<u!!!>!><,!!!>},<!!!!<>}}},{{<{<e!<,!>},<'i!"{!>},<!>,<!>,<ie}>,<{,!{},!>e!!!!!!!>!","ua!}!!<'!!u'>},{{{{<!!!>!>,<!!e'u"'<"!"',,i!!i}<a>},<aoie}!>},<'}o,<>},{<'!a!!{"u!e!><i!!'!!"o!>,<>}},{<!>!!i!{{o!!!!!>,<!{!!i<e!!{">,<e!o'u,!!!!uu!!!}!>},<,!!}>},{{{{<!!!>,i""{!!!>},<!a,>,{}},{{<!}!!!>,o!>}"!!o,!!>},{<!>},<"u}!>"!ae!{!<>}},{{<oao}}a"i{!!!>,<o{>},{<o!!!><a!!!>u>}}},{{},{}}},{<!>!!!><",{}!>ee!>,<!'!!!eu!!!><!!>}}}}},{{{<e}!>},<!!!>!!o!!!!{{!!!>!>"a!>!!!!!!>},<!>!!!!!>!!!>e>},{{<!!a!!!>}!!{ie,!!<!>!!<e!}eo!>},<,}>,<!!!!}!>i!>,<,!!"!>},<}!>o!"oo'o!>},<>},{{<{{!!!>ua'ei'!!<>},{}}}}},{{{{{{}}}}},{{},{{<!>iu'!>>}},{{<!!ouo,!>},<i!ii!>},<o!!!>,<>},{}}},{{{{{<}<!!!>},<"}<oa!!''!>'!oe!>,<!>,<iu>},<{o<<a>}},{<!,<!!!>},<>,<>}},{{}},{{{{<!ua""<o{<!!!>!>},<'i<"!",>}},{<a{!!!>,!!i!",!>,<!!i{>},{{<a!>"{aia<!!!>!!!>,<u'!!u,>}}},{{<i!>},<!{!!!!!>},<,,!!}'!!!!ae"!>,<"i!>,<o}>,{{{<,!{o<!>},<!!a}}i>,<!!'!>!oi!!!>!u<'"e!!,{i>}},{<uu{!e!!!>}}a!,o!!a!{a>}}},{}},{{{<{!>,<!!}i!>,<}{!!!>!!!>,<i"!>,<oi"}'>},{<o!>,<!!!!!!!>,!>},<!<!"!!<!>!!!>e,>,{<!>},<!!<o!!'<}i!>!>,<u!>,<!>},<!>,<!>,<!a!>,>,{}}}},{{},<aee}}u!!<}!>i!>,<>},{{{{{},{<!!!>!!"'{!!,'}>}},{{},{<!!!<>}}},{{<'a"!>e!>},<',>},<io,,a!!!>!>,<i!e!!,!>,<,,eu!!!>!!u!>,<>},{{{{<,!}<!!!!{!>,<{!!!><ia}e!>},<{}e>}},{<!!!!!!{a,>}},{{{{<i,e!!{!!!>"o{uu!>},<>},<!>},<!>!!!'!!i!>!"a!!}!>,<"'!'!>>},<{!!!>,<!!!>a!!!!{""!>"!!"'u!!!!!><!!!>>}}}},{{<!!}!>,<!>},<'!!"!"<!!,<!!!!!>!>>},<!>{}!>!>},<}}"ao!!!!ua!!{!><">},{{<!!!!!!ou<!!'u!>!>},<!>,<{!>!><>}}}}}}},{{{{<'}u!>,<{!!,}!>},<'!"'{!>},<!>>}}},{{{<{a!!!>u!>!>!!!>ae}!>!>},<{!!ua>},{{}}},{{<,!!!>},<!>!!!>>},{<}!!!uu{,!!!!i!>},<{!!!>},<ie<!a"e>}},{{<ou{!>!!!>a!!}!!>},{{{{}},{<!,u'!!!>,<u!>,<ui,}u!!!'!!!>{a!>a>,<,,"!!a!!>}},{<!!!>!>},<o!!{!>oa!!{!!!>a}a!!{>},{{<!>},<a>,{<!!o!>,<!"}!!'!!a",!a!>,<i!!!>o!!e!>,>}},{<,!>},<"{}}}"<!>},<!!e!!!e!!!>,<!!!>,<<!>},<>,{}},{<!!iao!>},<}!!!ea{!!!>,<'uui>,<i"!!!>!>,<u!a"ea!!!>,<>}}}}}},{{{{{{{}},{<,!>},<a{!>},<eoei<<o>,<>}},{},{<i!!!>!>!!!>ii!>!'<!!!>"},},!!>}},{{{{{<,,!i,,ae{!!!,!>!!!>},<!,!!o!!}!!!>}>,{{<}!!!>!!!>'!!!>"!{{!>!!!>>}}},{<!!a!>,<{oia}ueue!!!>eai>}},{{<!>},<!}!!!>!!!!!!ei!io}!!!>!!ue>},{<}!!!>!>i}!!!>,<!>u!>,<!a!!!>!>,<"o!>,<!>,<a!>},<!>,<>}}},{{<!>eo,o!'!!!>'<!!e>}}},{{{{{<!e!>!>,<!!<!!!>!!!!!>}>}},<!>!>'}}!!!>!>!>,<!>!u>},{<!o!!!{>,<!>},<'''!>},<">}},{<<,iiu!'iu!><>,{<,!!{e!!!>o!ai'!!'!!!!{a!>>}},{{<a},!>},<!!!!!><,i{!>"}>},<'<ui<!!a!!''!aa!!!!!>!!!>u'ao!!<!'>}},{{{<!u<e!>,<'{"a'!>,<!>},<!!!>>,<!i'>},{}},{{<'!,e!>},<!!>},{},{{{<<euu!>,<!!,!e!>,<!!!!},!>},<a}!!!!!>a{>},{{<!<ee!>},<o<{i!!}!!!>'!u!>,<>},<}!!!!eai!!!>,<e!>!>!!!!!>>}},{<!!!!!u!!!>!!a{oo,i>}}},{{{}},{},{<!!!>,<{'a!!'a!!!>{<!<e!>},<!!'!io>}}},{{{<i!!,!!e!!aee!!!!!>},,!!'>},{{},<e"o!!u{!>,<{!>},<,>}},{<",!>,<'!>,<!!!>!!u!!{'{!>},<}!!{!oa!!!!e'!>>,{<!>,<!>},<!>,<uie!!,!>,<{!>!!!!!!!>>}},{{<>},{{<!>,<!!a!}!!o'!>!>,<>}}}}},{{{{{{<>}},<u{!>},<e'!>,<,!>},<>},{{},<>},{{<',!,ioe!>u>,{<!>}o!>},<}>}},{{<{a'e,i!>"u>},{{{<!>},<!!!>,i,eo!!!!!>},<eo!>>},{}}}}}}},{},{{},{{{{{},{<a!!a!!!>,<e{>}}},{{<>},{{{<!>},<>}},<<ea,},!!!>!>!!"{,uei!>},<}>}},{<!!',eu'"a}!>o'}!<!>!a!!o!eu>}},{<>,<!!!>>},{<!,!!o!!!>,!,u!!}'!{ee!!i!>,<!!!>!!!>!>>}}}},{{<uo!!">},{<!!u!a!!">,<!!!>!!,}o{>},{<iuoa{!}u',{!!,}'!>,<>,<!!!>!!a!>!!!>u!>,<!>},<!>,<!'!>,<!!!!!><!!!>},<!!<>}}},{{{<!!!>},<!e>,{}},{}},{}},{{{{<,e!!,!>,<!>},<,!!!>a!,!!'ie!>,<o!>},<>},{{<e!!'i!>},<!!!>,!e!!!>!!!e"}uu!>},<u!i'>},{{},{{{<o!><!!o<"!'!!!>,<!>},<!!!>!!!>e'u!!!>o!!u!>},<}>},{}}}},{{{<!i<!i>,<{'!!i!>,<>},{{}}},{}}},{{<>,<,<e!!!>,>},<{>}},{<!!!>,<e!>,<<!!,!<!!,ou>,<!!!>o'!!!!!!!>"a!!eeu!o,!>},<o<>},{{<!>},<!!,!!,o,>},{}}},{{<!>,<'o>},{{<aeei{o}i>},{}}}},{{{{},<>},{<{!>},<!!!!!!<!!'e!>'e>,{{}}}},{{{{{{<!>,<e!{!>,<i!u!!!!<!>,<!!!>>},{}},{<oo">}},{{},<',i!!"<>}},{{{<!>,<!!,u,u'}i<!>},<!!!>!!!>{!>},<!i>},{}},{{<!oe!>}'iou!{u!!!!!!}!<!>u<a>,{<{!!'oa}!!!>!!!!,ii!>,<oa!!i!!a>}},{{{<{a}o}!,!!!!!>,<'}{>}},{{{<!>!!i"eeeuo!>},<<aa!{!!!>!!!!!>!>,<>},<{!!'>},<!>,<<<a!!,{'!!<>}},{{<'!>ao!{u!!!>"!i{}i'u,},>,{<!!!>!!iuee!!!>'!!!>,<>}},<!!!>!>},<!o!>,<e!!!!"!>,'e'a<!!}>}},{{{<eou!>o}i!>!!u}>}}}}},{{{<!!}u!>o!>,<u!!u"u!!a",a!>,<>,{}},<}}"!>,<o!>,<!}'!>>}},{{<>,<!>!>'!!!>!>!>,<!!!ai!,>},{<}}!!!><!>!!!>!!!>},<!><!>!!{!{!!}o!}>,<}i!!"!!!>,<,,!!!!!>>},{{<!!!>'!!}!!!>!!!!!>>}}}}},{{{}},{{{{<!'i!>,<ae>}},<!aa!,">}}}},{{{<!!a,"!iu!!e!"'{>},{{{{<uu'i<!!!><!>!>}uieo!!!>!>,<"o>},<}!>}!>,<>}},{{<!!!>'<!>,<!>},<ua{!>},<i!i!}!!i>},{}}},{{<!!u}!!!><a{!u!>"o!!!>!!!>",e">,<{}i!!!>!!!,!!u!!,"}!>,<!>,<i>},{<!!'o!!!!{>},{{{{<!!!>a!}e!!e"!>},<!><!o>},{{<"a""!>},<!!!!,!>}!>},<}'!!u!!!!!>!>},<>}}},{{},<}>},{{<ioo!!u}!>},<<{"!!!!ui!!{>},<"!iui!!!>!!!>'"!!!!,!!o''!>},<}u!!!>{>}},{{},{<a!!oi>}}}}},{{<"o!>},<,!}!!!>"<ao'>,{<e!>,<eu>}},{{},{{<<}!!o!{!i<!!!>,<!!!>,!>},<o"!!!>!>},<!>,<>},{<!!"u!>,<!!oa"'!!!!>}},{<!>},<o!><<<,>,{{{<!!!>{!!'u!>,<!!{o}"!>},<!>,<>}},<!!!>!!>}}},{}},{{<!!!>},<,!>ei'!e!!!>},<u,u!!!>'aui>,{}}},{{{{{<!>,<"oia!!e!!!>!!{!!u!>,<>,<!!>},{<!'!i!!!>o!o{>}},{<',!!{",<>,{<o!!<}'ii!!!>!>},<''!!!>>}},{{}}},{{{},{<!!!>{{!!!!!!a,e!'<!>,<!!!>!!!>u"i!,i!e>},{{<{<}>},{<!>,<!>{>}}},{{},{<i!!},u}'!<>,<!><o!>>},{}},{{{<a!!!!!>{!>,<o>,{<!!!>!>},<!!'a!>ii!!!>u!!oa}}"">}},{<!ai!ua!!<!!!>,<<e}a!>>}},{<u!ea"ue,!!<!<,>,{{<!}"a!>>}}},{<oa!!!>,<{!>},<e!,!>!!!!<u!!i}!>>,{{<,{{"!>},<<!>,<!>u!>!>},<}'{!!!ao>},{<!!!>},<>}}}}}},{{{{<{o'oi!>,<o!>},<ue!>},<ao>},{<!>,<a!!ia!,i}{!>,<!!!>>}}},{{{<!!o!>,<o!>},<!>},<,,{!>},<i!>u!>,<i}>,<e!!!>,<!>,<'!><a<e!>,<!>},<e,",!{!!!>,<i>},{{<!>,<"!>},<!!}!!!!!!!>!!aa!!o'!>},<!>},<>,{{}}}}},{{{<<ea!!!!}!o!!,!!,!!!>!>i!>,<"''!>!!}>,{<,,!!!!!>},<"!>!!!!!>,<o>}}}},{{<!>},<u{!a<"!!>,{<}!>,<}'e!!"<!>},<>}},{{<a!!'}{!>},<{!!!>!!!>,oa"!>,<}''!!!>,<!!}u>}},{<!!'!!'a!>},<!!!>!!!!>,{<!!!>},<{a"u}!>},<!!,!>,<i>}}},{}},{{{}},{{<"!>},<!!,uii"a!>},<a!>>},<aa!>>},{{<!!'>},{<!>!>,<e!!a''!>"!!!>o>}}},{{{<!>},<u'<'!>,<o'"!>,<,"a!>,<!!a!{!>,<!!>},{{{}}}},{{},{{{{<}}}!!!!!>,<!iiue!!"!!>},{}},{<!>!!!!!><!!!!!>!a!!!>!!,<!>},<<aa'!!<u!>,<!">},{{},<>}},{{<e!!!>a<{!!!!'}!>oi!!<!!!!!}>,{{{{<!>}}a"!!,"!!!>!>,<e!!i!!!!!>a'!!e>,{<>,{<{ue!!!!!>!!}!!!>o>,{<!>,<!>}!>!<!>!>},<!!!!!oa!!!>!>},<!>},<}<'>}}}}},<!!"u>},{}}},{<>},{<ii}!!!>}i>}},{{},{<}!>,<!>},<<">,<!>{>},{{{<'>},<>}}},{{{<!{ia!>,<a!!<'!!!",<!}e>}},{},{{{<'u}>}},{<}i!>},<}<!!o}'a,}!>!}!>i<>}}}},{{{{<>},{<!i!!"!!!>},<"!!e}u!!!>},<'!!>,{{<o!>,<!!a"!!<!>,<'!>,<,}!!!!!{!>a!!!!ea>}}},{{<!>,<<!>},<{ao}>},<>}},{{{{<uo!>,<>},{<}<!!>}},{<,u!>},<!>,<}i>}},{{<a!>,<,!!!>o!>!>},<"{oa>,{{<o!>,<!!!>,!{!>},<"}i!!!o!!!>>}}},{<,o!!!i!a{<!>,<!!!!"!,!!!>>}}}},{{<e!!ai!e,!>>,<i{,e}e!>!>},<!!'!!a<>}},{{{<i!>},<!>,<!>},<!!o>,{<"!!!>!>,<>}}},{{},{<!>},<<i>,<<!>,<oi!!!!!>!a!>,<!'"!>,<!>},<"!!!>{>}}},{{<eao!>},<a{a<e"!>!>},<>},{{{{<!!!>!'!!!!!>e!>},<!!",>},<!o<!!!!!>,!!'!!!!,i!>o!!!!!>{!'"u}>}},{{},{{{{<i!<!!,!!!!!>!!!>>}},<!!!>!{}a!!!!!>},<i",>},{},{<>,<{!><o!o!!!!!!!>i"uo}o!!"!!{>}}}}}}},{{{{<,e!!}">},<!>},<e!>,<u!!!>,<'!>},<<!!u!>!!>},{{},{}}},{{<<!>,<{<!!!u>},{{<!,!,>},{<<!>},<}a!!{!><>,{<e!>!>},<,oai!>!>},<!{>}}},{{<"u!>,<<!>},<i!>,<i'<!>!!e!{!>},<!!i,>}}},{{<}!!<!>},<i!!!!<<!!!>,<!>,<!!i!!!!!>!>},<!!!>},<ao,!>},<>},{<i!!!>"a'!!}!!{"{>,{{<!!u!!"!>,<'>},{<!!""u!e!!!!u!>,<io!>,<"u!>,<{'">}}}}},{{<!>!!<oe!>!!!>'!!,<!!<!!!>}!>>,{{{}},<!!!>,!!!>!>"ii>}},{{{<'u!!!>!!!>,<>},<u>}}}}},{{{{<i!!!{,!"!!o"i}!>,<!!!{{>}},{{{}},{{{<ao!>,<!}'!}"e,o!!!!>},<!>!>,<a{e,a<!!!>",'oe<>},{<ae,!!oue}>,{<','a!!!>a!!<!iu!a!!u!!!i>,{<}!!,!>},<!!!>,a>}}},{{<}>}}},{{{},{<i!!o!!!>"!>!!ou!}i!!oo!>},<'!!!!!>>}}}},{<!>!!u}!>,!>i!!!!!!,"!!,!>},<u!!,'>,{<}a'ua!>o!>},<!}!>},<!!u>}}},{<!>,<!!!!!>},<!!e!o!>'!!"!>,<>,{<eu,e!uiioe{>}}},{{{}}}}}},{{{<>,{}},{<o!>},<'>}},{},{{{{{{}},{{<!>},<!!,'ii!>,<!!o,!>},<"!!i'"u}a!"e>}}},<!,<i>},{<!"!e"''!>,<iau!>!>},<i'>,{{}}},{{},<!!!>,<ea!>,<!a!'}<!!!>,<!!!>!>},<!!!!!!!,>}},{{{{<e<e>},{<>}},<!'au!>!!!!!>!>,<'!!',ea'!!o!}}!!}>},{{<!!!>a{!!,!!""oue{o"!>!!}>,{}},{}}},{{{},<a"!><a!!u!>!>,<u{!>!!">},{{{<!!o!>},<ao,o!!!>,<,i<i>}}}}}}}},{{{{{<"e}uu!!,!!i!!!>!>},<"!>>,{<}<!>!!!>!>,<i!!{!!",a<!>},<!>},<!o!>o>}}},{{{{<iuu>,{{{<,>},<!>},<e!>,<}!!!><o!>},<o!!!!}>},<{a>}}},{{<!!!>ie}i<!"a{!!i>}}},{<!>u!e,e!!!!!>e"e!!!!!>ue{{!!"!>},<u>},{{{<,!a!>!,!>},<,,e!!,!,<ui>},{{<auei!!!>{!!!!!!>},<!!!>'}!>,<a!!!>e'"o!>!>"{ou}}!!}>}}}},{{{<!>,<!!'u!u!>!!!>!>,<!!,!!!>i!>,<o"!>,<}>,{}},{<>}},{{{<a'o<!>,<i!'ia!!e!!!"!!!>u'!o>},{<}!!e!!!>>}}},{{<e!>!>},<>}}},{{{},{{{{<!!!!a!!!!!!<u>}}},<'!'<!au!!!>a!<'{e,,!!{a'!!}>}},{<,>,<!!!>!!>}}},{{{{},{<>},{{<!!!>},<"!}{!!'{!!!}e"o!>,<}!>!}ou,!!<>}}},{{<<}!>},<>},{{<!>!>,<!!!>o,""eu!!'u!!i>}}},{{<!>},<iu!>,<e>,<!>},<',o,,{a!!!!o<!<e!>,<>},{{<'!>,<o!>,<!>,<>},{}}}},{{{{}},{{<}!!e!!}!}}!!!>{{>}}},{{},{{{{{{<!>"iu!<!!,i!!!>>},{<u'>,{}}},{},{}},{{<o<}u'e!>,<!!u{a!>,<eaoa>}},{<!>},<{i!>},<o>,{<,!eo!!}>}}},{{{{<!!!!!!!!!><!!!>>},<!!!!!!e{}!>,<!>,<{!,e{}aoo!!{{}>},{<!>},<u!>},<!!!<'>}},{{{},{}}}},{<!!ue!>},<!!""}{!!!>,,{a!{{!!"!!!>,<e>,{<ou,,"}!!!>!!!>!!!""!>,<o,e!}"!!!>a>}}}},{<e!!!>!>},<!>},<u>,<u'!>},<"a"!!!>,!!!>>}},{{{},<eoeo'<eiaa!!,,>},{<!!,!!!>{!!!'!>},<{!>,<ou!}!!!>,'!!!!o>},{{<o!!aa!>!!!>!>,<"!'!!!>!!!!{"a!!!>io<!>},<!>},<>}}},{{{<o"!!!>!!!>},<e!>},<o!!a>,{<ieoie!>,<u!!a!>">}},{{<!!!>!!a!>,<a!!!,!>},<!>},<u!>u">}},{{{}},{<io!!i!>,<!!e{aa!>},<>,{{<!>},<!!!!ui!!,!>!!!!{o}}!>},<>},{{}}}}}},{{{<"!!!>!>,<!>},<,a!'}!!}!>},<u"}!!,>}}}}},{{{<a'"<>},{{<!>u!>{!!i>},{{<!>{!!!>},<o!o!!"!>},<e}i!!!>o>},{<aei<e{",!!>}}},{{{<!!!!!>!o!!!>!>!>},<u{<!!}i!!!>,<!!!!<"'ei>}},{<{e!>"!>,!a!!!>,<!!!{!!!>!!!>{<!>,<!!!>,<>}}}},{{{{{<}u>},<i"!<u}!!u,!>,<>},{<!!!>!>},<}{!!"oeu>}},{{<,"'u}!>!<{'o>,<{!!}!>,!!!!!!,!>,,"!>,<!eu!>},<!>},<<>},{<!>},<'!!!>!>!>},<}<!"!><oua!<'ou>}},{{{<>},<>}}},{{{{<ai!>,<}''!>},<o!"i!>>},{<{!>u!eu{!!!>}'e>}},{<,{!e!!}!!!>,<,i>}},{<!!"i{{>},{}}},{{{{<ui>},{}},{{{}},{{<<!>,<{!!a<!>},<!!!!"a!!!>},<e'!!>}}},{{<u!>},<i!">},{{<e,!}!aea!"!'!!ea>,{<a!>},<!>,<o!>},<!>,<!>>}},{}}}},{},{{{{},{<"!!e!!"!>},<"}!><{}"!>>,{{<!o!!!>uo!!,o!!!!io!!!>'>}}},{{{<a>}},{<e,,!>,,!!i<!}!!{!!!!!>!>e!>},<u>}}},{}},{{<!!!!!!">},{{{},{<uo<!>""!>,<!!}"!>!!!>i!>>}}},{{{<!>,<e!>o!!!>o!>{,'u}!!u',!>},<}>}},{}}}},{{{}},{{{<<!>!!!>,<!>>},<{i"<uu{a!!a!}!>},<!>},<!!!}}>},{{<oaa!>!>},<'>},<!!!!aie>},{<e!>,<u,}<!>},<{iu}'!>}!!<'i>,<oea!>},<!><!u}<a"!>{>}},{<>,{}}}}},{{{},{{{<e}e<u>},{{<a"!>!!!>!!!>'>,<{,'!>!!}!>u<}!!,!!i!!!ei}>},<a!"!!!>>}}}},{{<'!!!>!!o!>,<}',!>o<o!>},<!!i>,{<!>,!>},<>}},{<{!!,!!{<ouu>}},{{{{{<o!{!}!i!io!>!!!!e!!!>!>!>!!!>!>'>}},{}},{<!!!>>,<!!!u!>""!,!>},<i}!>},<ou!>!>{,!>'o>},{}},{{<ua>,{<!!!!!>a,!}!>,<!>iaa>}},{<>}},{{{}}}}},{{{{{<!!!>!>},<{e>},{<!>,<!>,,<i}!!!!!uu,!!!>>,{<!i">}}},{{<!,!u>},{{<!>},<"uoa<au!!!>a!!,}>}}},{<!!aa}!>,<!>,<au!!!<o>}},{{{<!>!,!!u!!!>'<!>,<,!>!!>},{<!!e!>uo!!'ai{a!>>,{}},{{<o{!><i{!!!>!!!>!>>}}},{{{{<!>!>},<a!}!a!!!!>}},<!>},<,<'o!!!!,uiu>},{<!!e}{"u!!!i!>},<!!a!>!!!!!}'>},{}}},{{<!!'!!!>,!""!!!>,'!>},<{o!!}!o<>,{<"o!!"!!uu>}},{},{{}}},{{},{{{<!>},<{!!!!,!>,<>,{}},{{<oie!!i!eo!!!>{!>},<<<>}},{{}}},{{<!>},<!>!!ae!>,<>},<!>,<!{!>!>!>},<'i!!>},{<i}!!!a!>u!<'>}},{{{<!!aee!!!>!>,<!!!>u"}!!"!!i!>!e,i!!{,>},<e'oa{!!e!!}'a!!!!!>>},{{}}},{{{<a!!e!>{,i"i!!!>}!!"!!!!!>},<uu!>},<">}},{<!>!>},<!"a}ee"!>,<{!>,<,oe!!!>!>!>,<!>>}}}},{{{{{<!>,<{!!o>,{<{,!>e}!e!>,<>}},{},{<!>},<<!>,!>u,!>,<!!!!!>ae'>,{<!>},<'!!o!>},<!!e}o}!!!>!>,<e!>},<'i{!!o>}}},{{{<"!!{}"!!,,!>},<i<"e}>,{<>,{}}}},{{<u'<!!'!>},<!!!>>}},{{<!>e!!!>},<!>,<!!!>i!>!>},<ae,{u!iu!!!>u}!!e>},{<!!!>a'i!!au!{u!>},<!>},<o},u>}}}}},{{{{{<!!!ee"!>},<!>,<a!>},<a!>a!>},<}<!!"!!!>>}},{{<!!!u{<",ao!!u,!>,<'!!!>},<!!!>u>},{<ueea}!!!>{!!!!!!!!!!!>!>},<!!>,{<!!!!!>o'>}}}}},{{{<'!!!>!>o{""<i"}!"!>},<!!e!!!>!>},<{>},{<!>!!u!>},<!!,'u!>},<!>"u!>"!}!>{a!!!>},<}>},{{<!>},<e!!!>}"i{>,{}},{{{<a'!>,<,o!!!>,<e'}>}},{<!!u'!!<,e{e!><i!!!>a<>}},{<o{!!'!!!>!!{}!!<{}!>!>,<!!}>}}},{{{}}},{<!>o"u!{u"{!>,<'!!!!!>!>!>},<>,<!,a<{!!!>!!,i!>!>},<e<<!>a>}},{{<,>,{}},{{<!!o"!!!>>},{{{}},<ea">}}}},{{},{{<!!eeou{!!!>ai!>,u!!!>,<!}'!>,<!<{>,{<!!!'!<e>}}},{},{{{{<u!!!>u!>,<!!'!>,<}a!!,!>},<i!>,<>},{}},{<i{!>,<!!!>{!>!>},<!>},<{a>,<oi!i{!>o!>!!{e!>,<}!!!>>}},{},{{{<>}},{{{<!!!'!,!>e!>o<e!>i!>,<>}},{}}}}},{{{{{{{{},<!>},<o!>,<!!'eo!!!>},<!!i!"!>,<!!!>!>ie"ae>},{<!!{au!{!!!i!}a!!!>,<o!u}}!!!>!!!>,<!!!>>}},<ui!!!"","'}!>,<,!!!>e!!,!>,<!>},<!!e!!!>,<!!!!i>},{{<!>!!}"e}{!oe!'}!>!>a,>},{<!{!!u!>},<>}},{<!!!,!>,<o!!!>'''!{!!!>'!!!!!>"!>},<!!>}},{<o!>,<o"i'!>!eo>,{{{<u!!!>,,!!!>!>!>,<!>,<>},<!}!!!>e!a}ao!i!>aau,!!!!!>e>},{<!ee!o,}!!!!!>>,{<!!">}}}}},{},{{},{<!!'a!{!!!>!!{,!>!!u}!!!>,<>}}}}}},{{{},{{{}}},{}},{{{{<uu!i{}!>,<'!i>},<{aa!>,<<e!>},<<!>a!>>},{{<<a<ue!>},<o!!!!!>},<{!!eea!>,<>},{}},{<!>},<"eo!!!!o,a!!"u!!>}},{{{<}}!>,<!!o!>},<e>},{<!!!!ao!>,<!!!!!!!!!>!>!'e<<<!!!,o,!!!>!>,<>}},{<}},'!>e!!!>!!!>!a}<!>,<!!!>e}!>},<!!!>>},{<,e>,{<!>,<eu}!!!!'e"!!"!i!!!>o!!i!>"!>>,{<'}o!!u<!!!>!>},<<a<!>},<!!i<{!>,<u>}}}},{{{{{{<!>!>},<"io>}},{<'!e{!>!>},<!>,<!>,<ii}>}}},<u!!"!!!!!>,<i'e!>},<'i!!!>i{>},{{{{<!>,<a<"<{>},<u!'!>},<!!!!}{!>!!!>!>},<o>}}}},{{{{},{{},<a!!!>!o!>},<i!!!>,<'"e<}!!>}},{{}}},{{<{,!!!,!!!>},<"!>!!!>},<!!!>"'"'!!!>!!!>!>,<>}},{{},{<!!>}}}}}},{{{{<aao!!!>,<'{u"u>},{<!>},<{!>},<i!>ii!>},<!>"a<i!!>}}},{{{{{}},{<"i!!{>,{{{<!><!>},<a,,!{!!!i,!!',,'ae>}},<euio!iu!!!>!!""!>a!>},<"oa>}},{{},{<!!'}!>,<<},!!u,,!!!>!!!!,!!!{',{!<!!o!!!>>,<e{!!>},{{<<!>},<}"">,<a'<!!ouo!>,">},{}}}},{{{<{{!!"!>},<""{!o!>},<!>,<!!!>!>i!!!>!>,<}>},{<!!,"!!!}uu>,{<i!!u<!>},<uo!>,<!!ia!>,<>}}},<!!<!!a<!!!>i<!!!!!a!!ouo!!!!!!!>e>},{<o!{o}o!!!>,!>},<aa!',!!>,{<!!"!!!>},<!>i{>}}},{{<!>!}!>a'>,{{<"a}'eo!!!>,!!!>,<{",!>!>>}}},{},{<!!i!>!!}>,{}}},{{{{{},{{}}},{{}},{{{{<!>>},<}ao!!,'!!u!>,<'}{!!!>o!>},<<!!"a>},{{<e!!i!!}'!!!!!!!>},<!!!!!!i{eiu!>},<!!!>!i!>},<<!>!!!!!>!>,<>}},{{{{},{}},{<!!uo!>,<"!!e!!!!!>,'!!}>}},{<!!}!!!>!>,<>}}},{<!!e"!uuu>},{{<,>},{{},{{}}}}}}},{{},{{<,{e!>},<!,!!ue>}}},{{{{<{!>},<>,{<}"!>!>,<!}"!>,<!!!!a!>},<ea!!!!{>}}},{<!!'o!!!>u<>,{<!i!{>}}},{{<'oa!>},<>},<iio!>!>,<!<!>,<!ie!!{"<}<!!!!!>!>},<!>>}},{{<!>,o!!oe!!{!>,<"e!!!>!>>}}}},{{{},<!>},<}!!a!!!>e!!,!!!>,!!!>!>},<<o!!i!>},<>},{<!i!!!>!>},<!!!!!!!>,<<!!"!!!!a!!!!!><u!>,<>,{{<'''>}}},{{{<!>o'!>i{!>},<!>},<a">},{{<!!e>},{{<>},{{{<"<!!iia!>,<a<a!>},<!i,!>!!!!o!>},<!!!>,<u">},{<}!!,!>ii<!>,<o}io>}}}}},{{<!'"!<"!!!>,<!>!>},<!}!!a!!"!e<u"oi!>,<>,<!!!>,!i!>},<'i>},{<<o!!'oiue!!!>!eiu}!>,<!>},<!>},<>}}},{{}},{{<!>},<!!!!!>>},{<!>,"!!!!!>!i!!!>!>!><{ae!!!>o!>},<>}}}},{{{<!!!!!>}!!!>u"o''"!ai!>,<!!!!>,{{<!!!>!!!!,!>},<{!>,<!>{<eo{,!!o!>},<'i!<'>},{<!!!>>}}},<!>,<!!!>i>},{{<!!!!!{,iu!a{!>!!!>"!>},<a!>a>}}}},{{{{{<!!!>,<!!!!"<"!!<!a!>,<'!>,<<u!>,<">},<!>,<!!!>},<!>,<e!!!>!!o!!o!!!!o!!!!>},{{<'u!>a!>,<>},<!!!>!i<o!a!!!><}aouu'<,>},{{{<!!!>"!!!>,}ea!!}!>!><!!'"!!<{>,<e!!!>!>!a<!!o!!!>i}!!}>},{{{<!>},<!">}},{<,!!!!!!!><>}},{{<!!!>},<'e>,<i!>,!i,!!!>ea>},{{<,>,<!!!>o!u,i!>u!!!!u!!!!!!!>},<}{!!>}},{{<}!>,,>}}}},{<i}}iu}{!>},<!>{<u!!!!!!o'>,<}<!!<<<,!>,<!<!!"u!>,<u>}}},{{{<!>},<!>},<!!'!>,<!!o!!oa!}!>!>!!!!"{>}},{}},{{{<<!>e!ooa!!!>},<<!!!>",!>},<!u{!!!!<e!!<>},{<}}u{!!"!>},<"!!o!!!><!<!!!>,<e!!!>u!!a!!!>},<>}},{{},<a!>'{"!>},<}!>,<!!!>"e>},{{<!>},<>,{<oe!!!>!!u>}},{<!!!!!>},<!>,<!>!!i!>,<!>}},!!!!e",>},{{<}!!!>!>},<!!a'oi<>,{{<"ou!!{{!>,<''euu>}}},{{<i<<o>},{}}}}}},{{{{<uu!!!>,<!>,<e!{,!>,<!!!!!>'!!>}},{{<o,>,{<{}oe}!o!>!!!!>}},{{}},{{<<o'!<!>,<{{,!!!>},<'e!!!!!!,!!!>!!!!!!!!>}}}},{{},{{}},{{<ai!>},<}!>,}<!!"e<!>,<!o>}}},{{{<<}o!!!>!}!}>},<"i"ei<}!!!!ae,!>,<!u!!i!>!!u>},{{{<!!!>"{o!!!>!!!>ii!!!!!}!!"!!u!!!>,<!!!>e!!<>},{<uu!>'ou!'""!"i!!!>,>}},<!o!>,<<!!!!<e!>},<"!>,<>}},{{}}}}},{{{{{},<'e!!'>},{{<!!,!>!e,!>},<,'!>},<!!!!!>!!!>},<,!!a,ie!!o!>},<!u>,{<a}"!a!>!!!!!>!>},<eao!>!!oi>}},{<!a!}!>o!!!>e!>,<!!!>,<!!!>,!!a"!!,{a,>}}},{{<!!!>a!!!!!>!!!>>},{{{<!!!>}!ueae!>!>{o!!!!!>!!"!!!>!>!ua>}},<!!!>}>}},{{{{<'u,!e!{"!!{!!{"''"a}{u!}>},<!!!oo'!>,<!!!>},<!!!!!!!>},<!!!>},<!>},<o!}!!!}>}},{{{<i!>,<!!!>ui!!!>!>}i<e>},{{{<!>,<!!e!>},<"!,'!!!!aa'!!!!,>}},{<u!!"!!!>!>},<!!!>{!!!!">}}},{{<'u!!{!}{>,<!e!>,<}e}!>},<>}},{<ea!!'!>!>,<o}<!!!!!!",e!!!'}>,{<>}}},{{<{!>},<o!!!>,<,>},{{{},{<u,e!!!>},<{u!>,<'au>}},{{<{a!o,!!{<!!!>{"!>!!!>!>},<'{'<>}}}},{}},{{{{<!>{!>,<<'ei!,!!!>iu!>e!!!>!!>}},<!>,<!>},<!!o'}}u!!!>,<!>!!!>},<eu>},{{<i<"{!"}!!!<o>},{<ao!!!i!!}!!!>!>!<oae<>}},{{{},{},{<}"!>,!!}'!>},<i!!!o}!!oo!!!>!!!>i!!>,{<<!!<e<!!!!!!eo!>},<!!o!a!!!>ei!!!>!>,<!!','<u>}}},{}}}}},{{{<}>},{<!!!>eu>,{<ui<!'!!{!!!>!!!>},<o!!!>o"u!!>,<}!!!>i!!!!!!!>!>},<!<uo<''!!,ii>}},{{},{<'e'!>!>},<!!!a!>!!i!!!>!!!!<!>"{<}>}}},{{<!>,<{i>,{{<a'!eu!>"!!!>>}}},{{<!>,<o!!!>,<o<!e}"!!!>!!!>"!},,e>}},{{{{<!>,<>},{<!!a!>,<u!!<,!!o"!'{>}},<!>!>,<o"<!!!,!><<!>u>},{},{{{<e!>,<o!>,<,!>,<!>,<>},{}},{}}}},{{{{<>},{<uo>,{{{<!!!>o!>},<}e}a"{e!!!>,<!>,<u<"!!"!>},<>}}}}}},{{{<,!{>}},{<o>}},{}}}},{{{{},{{<<!!{!!!>!!!!!!!>!>},<!>},<!!a!!!>},<,!!!>'!!!!!>,!!!>''">,{{},{<{}{'!>>}}}},{}},{{{}},{{{<>}},{<a"{!>},<>}}},{},{{{{},{<!!!>>}}},{{{<!"!>},<!!<<{!>,<!!a>},<{aoi'!!>}}}},{{{{{},{<'!>}!!!>,<!!!>i!o!!!>i!!!>},<"!>,!>!!{!>,<o>,<i<!>,<!!}",>},{<i!>},<a!>!!e>,{<<!}{!>},<!!!>!!!>!>,<!>},<!!!!!>!>!!>}}},{{<!!{"!!!{!!u!!!>'!!!>!!e!!!,'>}}},{{{}},{{{<!>},<>},<}e!'i>},{{{<!>ue!!!>},<{uu!!!>}!!{'>,{{<!!!>!e!>,<ooa}ou{!>''!}",!a'>}}},{{<i!!!<}u!!,}u!!!>"!!!>},<}{!!}>},{<!!'o,!>},<o}}',!>},<<!>},<!!,a"!>,<!"!>,<a>}}},{{<i{}o!!>,{<}i!!!>!>,<!!!>!!,!!!>{>,<!>},<!>,<!<!!'!!!"}!!!>e!>,<u<>}}}}},{<!!!u,!>!>,<u>,<e{!!!>u{eu!>},<!!<<!>,<u>}},{{{<!!}!>},<'!!'ii,"!!uu!>!'e>}}},{{{{<!a<'!>,<,>},<>},{<!!,}>}}}},{{<aoo,'!>!!,!>},<!i!!u>,{}},{{}}}},{{{<{!!'e!!!>!>},<!!!>"o!!,!>},<ooi!!!><>},{{<!!!!!>},<ee!!!>,<'!!!>a{!!,e!!!!!>a!>,!<!i!>,<>}}},{{{<ua}!>o>,{<!>,<!>'a{!!!>,<!>>}},{{{<,oiu{!!!!!!!>},<eo>},{<<e>}}}},{<!>},<""!!!>!>,<,ooe!!{!!!>},<!>,<>}},{{<i!!!><>},{},{{{<!!e{!>,<!!o!!!>,<e<!}!!"!!!>!>},<,>},{<!>},<!!oo}!a!!!>!!<'u>}},{{<e>},<>}}},{{<!}{a<!'}"a!>,<a!!o'i>,<!!!>},<!!!>i"!!!!{!!!!}ao!>},<}!!'i!!!!!!>},{{<!>},<!!,!>a!"!!u!!"a!!e>},<o,e!>,<!>,<}!!e!>},<!!'a,ii!o!>},<!!ai">},{{<o"!!!>!!!>}}!!!!!>i!>},<!>},<">,<!!!!!!!><{!!u!!,a'o{!>,<!">},{{<<a<>,<{>},{{{<!>o!>!>e}i">},{{<!!!!!>!>,<<!>},<!{a<a<!!>},{<!!'ue"e{ua>,<!>'!!}o!!!>!!!>a!>,<<!!!>!!!!!!{!>>}}},<{<a"!!"}o'io>},{<ue!>},<}e'e{>}},{{<'!>,<o!!!>},<!>!!!>oi'!!!>},<'o<>},{{{<!>!>!!!>!>},<!!!>},<u,!>,<!o}>},{}},{<!!!!}!u{!o!!ieea",u!!!!!>!!!>!><!!"">}},{<!>},<<}!!aa"!>},<"!>}a{!>},<!!!!!>!uo>}}}}}}},{{{{<{!}>},{{}},{}},{},{{<,!>"!!!>!>,<!!oo!!!>},<}i!'u'!!!>!>!>},<{a>,{<a!!!>!!!>!>,<!!!'!>!a",!>},<!!o!>},<a!!!!}}{>}},{<{u!>{,!>!!<!i>,<e<!>o!i!!!>!!!!"uo"!>,<u'"!>},<,!i>}}},{{{<<iee!!a"!>},<!>,<,>,<,!!!!!>}o!>,<oo!>!>,<"io!>},<}!',"!o>},{<}!!{'{!!!!<{!ai!!!>"!<ou!!a!{<!!">},{<!>},<!>,<i!e!!!>a!>,<!!o!>!>},<!>},<!!!>aa>,{<u"{<!>},<}!!o'"i!!u<}a>}}},{{{{{<>},{<<}uoa,'!e!!e!!!>!{o!!!i>}}},{<ai!!!>eou!!!>!a!!!ei}!{u!!!a!!!<!!ei>,<aue}!!!!}!>,<a{o!>,<!!!!>}},{{<!!o!!ieu!>,<!u',aeaia!!}">},{{{},{<!!'"<}i>}}}}}},{{},{{{{<'!!e!i!>u!><e,!">},{<!<<!>!!uu"!>},<!!u<iia!!}!">,{}}},{{}}},{{<a!!a<!>,<'!>,<!>,<,',!>,<>,{{{<!!!!!!!>e}"!!i<>}},<e!}'!>},<!>!>},<!!a!!'i>}},{<"!a',"a>}}},{{{<<,!>},<!>,<!o<!>},<<!!!>u>},{{{}},{<!!!!e<!!!!!>o!>,<o{!>!>,<>,<>},{}},{{},{<"!>,<!i>,{<>}}}},{{{<{!"!>i"!!<i"{}>}},{<>,<oi,i'>}},{{{<{!!!>oe!'!!!!!>!>!>},<!>,!!!e{a>}},{{<"!>,<!>u!!,!>a{<!!'a,>,{<i"!>},<u!>,<,,'!,!o!>},<!!!!i>}},<i!>},<io<!!a!!,!!!>}!"'"o!!o!>}>},{<!>'ue!!!>,<'ia}{!>},<!>,<{o<u!>,<>}},{{{{{<>}},<!o!!!>},<!!!>!>},<!!{ae!!e!!!!!!!!!!!>i>},{{},{{<o!>},<}{o!>,<!!!!!>!!!>,<!>!!!>!>,<u>}}},{{{<!>,a"!!i!>},<!!"!!"!!u}ue!!"o!!e>},{}},{<!>,<!!!>!!!>{ue!e,!>,<o<o{!>,<!>,<!!!>,<>}}},{{<!>},<i}!!<<!!e!>>}}}}},{{{<,>,<{!>},<{!,{,>},{<<e"}u}}!!!>!>!!!>a!>},<!>,<oea'u!!!>>,<i!>,o<!>!!"!>a!!!>,<!'!>!!!>>},{<{o{uuo<,o!!!>!!!>!!!>}>,{}}}},{{},{{{},{}},{{<i{ie"!o'{!!!>},<!a}!!!>},<>},<!!,e<e!>},<!>},<!!!>a!!e!>i>}},{{{{{{{{{<!>u!!!>!!!>!ui'{!>},<>}},{}},{}}},{<o!!!>>},{}},{{{{}},{{{<}ue<!!!!!>i!>},<!!a}a<!>,<!>,<>}},{{<!!{!>i!!!>},<a<!!!>!>},<!>},<u}{ao!!!!>},<o!>,<o!!!>!!!>i!!!><!>oe}!o>},{{{<!>!>,<!>ee!!!a!>!!!>>}}}},{{<a!!!>!!<<!!!!u!!e>,{}}},{{{<!>},<eu!>i!!'!>!!!!!>!>,<">},{{<'!!!!!>u!>,<ue"{,i!a}"{!!!>!!o!>,<>}},{{},{}}},{{{{},{{{<!>,<!'>}}},{<!i!>,<oe}!!o''<!>},<>}},{{{<ee!>!!>}},{<a{>,<!>!!{!>,<>}},{{{}},{{{{<!!a>},<>},<{!!!>,<o>},{{<{<<>},<!!!"!>,<!!!!!>!!e!!!>!>!!>}}},{{<!!,u{!!}"uie!!}!>,<o>},{{{<}!!!>!>,<!>},<a>}},{<!!!>!>,<<ea{"!>}aua}!>},<}!!!>!!!o'>,{<'",}"}>}}}}}},{{{<e!>},<!>>},{{<!>!>"'!!!<}!io!!!!u!!!>!><i!a!!!!!>>}}},{}},{{}}}},{{{<>},{{<!!!!!}!!i!><!!!>>}},{{<!!!!!>'>}}},{{{<{!!!><!!!>e!>!!!>e"!,}u>},{<!>}>,<!!!>'!"ae<a>},{{<i!>,<"!>},<!!!!!>},<ae!>>},{}}},{{{{<>}},{<o<!!!>e>,{{<oa!>,<"!}'u!>,<o'!>!"",!!!>>},{<!!a!>,<!!}!>},<!>},<!!!!!>,<u!>,<e<!!<a!{a!,!!!>!!!>>}}},{{<}'{!!a!!!>!!o!>!{!>},<!!!!!!""'>},{<{!!!>{>}}},{},{{{{{}},{{{<!!{"eu>},{}},{<!!'ia!}a''!>}>,{{<<},!>,<,ea!oi!!'a!!!"!!!>!>,<!!!>u>},<>}}}},{{<>}},{{{{<!>,<{!e!>,<au<,}>},{<!>!>},<"<e!>!"o',ua'"!>},<!!!{>}},{<!"!>},<!!}!!"e!!!>{{!!'u!e!>,<"!>,<>}},{{{<o!!!>!!"!"o!>!>,<!!!>>},<,a<!>},<!>,<!!o{ioo!"!>>},{{}},{{{<}'!!!!!>},<}{>}}}}}},{{<}e{!!ieia"a!>!eeu!!i!>>,{<!!!!!>"i>}},{{<'<,!'!!!>!>},<e>,<a!>>},{{<!!u<a'!!!><"!ou>,<!!!>!,!!>}}},{{<}u!o>},<!>!>,<ui>}}},{{<uu!i!<u!<u!!!>{!!!ii!!!>>},{<!!,,!<!{!>},<!!!>>,<<i!"}!!!>"oi}"o'!>!'!>!u>},{{<<i!!a!>!!"o!!i!!,e}{!!"i!!!><>},{}}}}},{{{{{},<a"!!!>!>'>}},{{<'>},{<,!!eie!>},<!!!>},<o!!!>!!!>'"!!!!<!>>,<o!>ou<>},{{<a!i!!io,>}}},{{{{<!!!>!>},<!!'!!,"!!!>!}"}!>},<}!!u>,<<a!!!>"!>,<"!!"o!>},<>},{{}}}}}},{{{<u!!!>"!>!!!>oi{!!!!<a!>},<i{!>!>"<}>},{{<}!!ee!>!!!!ea!!!!!!!><,!>>},<i!!!>,<u<i}"!!!>,iii{a}a!o>}},{<!>,<!>},<!!,}!!<!!!>'!!!>'!!!>},<!!!a>,{<!<}!>,<!!!>,!{{<o!>,<a!!!>!{u!>,<}!!!!!!,>}},{<o>}},{{{<!e!!!!!>,<,}a!!o!e}!!<i,a!!!!!>!>>}},{{<'!>},<!!<i!>!>a!><!>,<!!!>'>}}},{{{{<}!>,<!>},<>}},{<}!!!>!!!>!!e!>,<ooia!<>}},{{<}"i,i{!>,<<,}!>}!<!!}!!!!,{!!>},<<ii}!!!>!i>},{}}}},{{{<i,,a"!!oie!>,<u>}}}},{{{<>},{<!ua}>}}},{{},{},{{{},{<'!ou{>}},<!!!>!>!>},<{!>,<oeu>}}},{{<!!!!o!>!!"!!!>!>,<!"!>!!!>!>,<{u!!!>},<!!!>"!!>}},{{{<!>!},<!!{<>},<!>},<o}e!>,<}>},{{{},{{<aio{<!{!!u!>'{a,o!!ii">}},{<ei!>},<},!'<!!o'!!<!!{!>,<a!{>,{{}}}},{},{{<!!!>!>},<,!!!>}!>}!!ou!}ia'i>,<!e!!!!!!i!>},<!!!>!>!>},<!>,<!!!>},<e'!!'u!!!a{>},<u'i}!!!!}!>e">}},{<{!!auo!>,<e!>},<<i!!i!>,<'!!!>ie}"u>}}},{{<>,{{}}},{{{{<!!<a!!<,!!a!!!!!!e<>},<!>>},{<a}!!!>!>},<{!>},<u!>},<,!>},<'>}},{},{<"!!!!i!!{"o!!a}!o!!!>!>'>}}},{{<ou<!>,<>,{<!>,<!!,{'a,'!!,!>,<!!u!>,<!>!<<!>,<">}},{<<'>}}}}}}
diff --git a/2017/src/bin/day_1.rs b/2017/src/bin/day_1.rs
new file mode 100644
index 0000000..5d0e431
--- /dev/null
+++ b/2017/src/bin/day_1.rs
@@ -0,0 +1,24 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let number_chars = args.input[0].chars().collect::<Vec<_>>();
+
+ let mut sum = 0;
+
+ for i in 0..number_chars.len() {
+ let next = if args.part == 1 {
+ (i + 1)
+ } else {
+ (i + number_chars.len() / 2)
+ } % number_chars.len();
+ if (number_chars[i] == number_chars[next]) {
+ let parsed: i32 = number_chars[i].to_string().parse().unwrap();
+ sum += parsed;
+ }
+ }
+
+ println!("Sum is {}", sum);
+}
diff --git a/2017/src/bin/day_10.rs b/2017/src/bin/day_10.rs
new file mode 100644
index 0000000..faec18a
--- /dev/null
+++ b/2017/src/bin/day_10.rs
@@ -0,0 +1,63 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let lengths: Vec<usize> = if args.part == 1 {
+ args.input[0].split(",").map(|x| x.parse().unwrap()).collect()
+ } else {
+ let suffix: [usize; 5] = [17, 31, 73, 47, 23];
+ args.input[0].as_bytes()
+ .iter().map(|&x| x as usize)
+ .chain(suffix.iter().cloned())
+ .collect()
+ };
+
+ let mut position = 0;
+ let mut list: Vec<u32> = (0..256).collect();
+
+ if args.part == 1 {
+ hash_round(&mut list, &lengths, &mut position, 0);
+ } else {
+ for i in 0..64 {
+ let skip = lengths.len() * i;
+ hash_round(&mut list, &lengths, &mut position, skip);
+ }
+ }
+
+
+ if args.part == 1 {
+ let answer = list[0]*list[1];
+ println!("{}", answer);
+ } else {
+ let mut current_char = 0;
+ for (i, l) in list.iter().enumerate() {
+ current_char = current_char ^ l;
+ if i % 16 == 15 {
+ print!("{:02x}", current_char);
+ current_char = 0;
+ }
+ }
+ println!("");
+ }
+}
+
+fn hash_round(list: &mut Vec<u32>, lengths: &Vec<usize>, position: &mut usize, skip: usize) {
+ for (inner_skip, &length) in lengths.iter().enumerate() {
+ reverse(list, *position, length);
+ *position = (*position + length + skip + inner_skip) % list.len();
+ }
+}
+
+fn reverse(list: &mut Vec<u32>, position: usize, length: usize) {
+ let mut a = position;
+ let mut b = position + length - 1;
+ let len = list.len();
+ while a < b {
+ list.swap(a%len, b%len);
+
+ a += 1;
+ b -= 1;
+ }
+}
diff --git a/2017/src/bin/day_11.rs b/2017/src/bin/day_11.rs
new file mode 100644
index 0000000..ffb0833
--- /dev/null
+++ b/2017/src/bin/day_11.rs
@@ -0,0 +1,57 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let directions: Vec<&str> = args.input[0].split(",").collect();
+
+ let mut x = 0.0;
+ let mut y = 0.0;
+
+ let mut max_away = 0.0;
+
+ for dir in directions {
+ y += match dir {
+ "ne" => 0.5,
+ "n" => 1.0,
+ "nw" => 0.5,
+ "se" => -0.5,
+ "s" => -1.0,
+ "sw" => -0.5,
+ _ => panic!("Unexpected direction {}", dir)
+ };
+
+ x += match dir {
+ "ne" => -0.5,
+ "n" => 0.0,
+ "nw" => 0.5,
+ "se" => -0.5,
+ "s" => 0.0,
+ "sw" => 0.5,
+ _ => panic!("Unexpected direction {}", dir)
+ };
+
+ let current_distance = tile_distance(x, y);
+ if current_distance > max_away {
+ max_away = current_distance;
+ }
+ }
+
+ if args.part == 1 {
+ println!("Child process is {} away", tile_distance(x, y));
+ } else {
+ println!("At most, child process was {} away", max_away);
+ }
+
+}
+
+fn tile_distance(x: f32, y: f32) -> f32 {
+ let tiles_x = x.abs()*2.0;
+ let tiles_y = if y.abs() < tiles_x {
+ 0.0
+ } else {
+ y.abs() - tiles_x
+ };
+ tiles_x + tiles_y
+}
diff --git a/2017/src/bin/day_12.rs b/2017/src/bin/day_12.rs
new file mode 100644
index 0000000..39f05e9
--- /dev/null
+++ b/2017/src/bin/day_12.rs
@@ -0,0 +1,52 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+use std::cmp;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let mut groups: Vec<Vec<i32>> = vec!(vec!(0)); //0 in the first group
+
+ for line in args.input {
+ let mut words_iter = line.split_whitespace();
+ let current: i32 = words_iter.next().unwrap().parse().unwrap();
+ if find_group(&groups, current).is_none() {
+ groups.push(vec!(current));
+ }
+ words_iter.next().unwrap(); //<->
+ for other_str in words_iter {
+ let other: i32 = other_str.trim_right_matches(",").parse().unwrap();
+
+ match (find_group(&groups, current), find_group(&groups, other)) {
+ (Some(current_group), Some(other_group)) if current_group != other_group => {
+ merge_groups(&mut groups, current_group, other_group);
+ },
+ (Some(_), Some(_)) => {
+ },
+ (Some(current_group), None) => {
+ groups[current_group].push(other);
+ },
+ (None, _) => panic!("Current group not found!")
+ };
+ }
+ }
+
+ if args.part == 1 {
+ println!("First group has {} members", groups[0].len());
+ } else {
+ println!("Total of {} groups", groups.len());
+ }
+}
+
+fn find_group(groups: &Vec<Vec<i32>>, x: i32) -> Option<usize> {
+ groups.iter().position(|group| group.contains(&x))
+}
+
+fn merge_groups(groups: &mut Vec<Vec<i32>>, a: usize, b: usize) {
+ let src = cmp::max(a, b);
+ let dest = cmp::min(a, b);
+
+ let mut from = groups.swap_remove(src);
+ groups[dest].append(&mut from)
+}
diff --git a/2017/src/bin/day_13.rs b/2017/src/bin/day_13.rs
new file mode 100644
index 0000000..e85b541
--- /dev/null
+++ b/2017/src/bin/day_13.rs
@@ -0,0 +1,46 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+use std::collections::HashMap;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let input: HashMap<u32, u32> = args.input.iter().map(|line| {
+ let mut split_line = line.split(": ");
+ (split_line.next().unwrap().parse().unwrap(), split_line.next().unwrap().parse().unwrap())
+ }).collect();
+
+ if args.part == 1 {
+ let severity = calculate_severity(&input, 0, &args);
+ println!("Severity: {}", severity);
+ } else {
+ let optimal_delay = (0u32..).find(|&delay| calculate_severity(&input, delay, &args) == 0).unwrap();
+ println!("Wait {} picoseconds", optimal_delay);
+ }
+}
+
+fn calculate_severity(input: &HashMap<u32, u32>, delay: u32, args: &AdventArgs) -> u32 {
+ let mut severity = 0;
+ let max_depth = input.keys().max().cloned().unwrap();
+
+ for depth in 0..max_depth+1 {
+ severity += match input.get(&depth) {
+ Some(range) => {
+ let position = (depth + delay) % (2*range-2);
+
+ if position == 0 {
+ if args.part == 1 {
+ range * depth
+ } else {
+ range * depth + 1
+ }
+ } else {
+ 0
+ }
+ },
+ None => 0
+ };
+ }
+ severity
+}
diff --git a/2017/src/bin/day_14.rs b/2017/src/bin/day_14.rs
new file mode 100644
index 0000000..778a57f
--- /dev/null
+++ b/2017/src/bin/day_14.rs
@@ -0,0 +1,52 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+ let input = args.input[0].clone();
+
+ let mut used = 0;
+ let mut grid: Vec<Vec<bool>> = vec!(vec!(false; 128); 128);
+ for i in 0..128 {
+ let to_hash = format!("{}-{}", input, i);
+ let hash = knot_hash(&to_hash);
+ for (x1,c) in hash.chars().enumerate() {
+ let parsed = u32::from_str_radix(&c.to_string(), 16).unwrap();
+ used += parsed.count_ones();
+ for (x2,b) in format!("{:04b}",parsed).chars().enumerate() {
+ grid[i][4*x1+x2] = b == '1';
+ }
+ }
+ }
+
+ if args.part == 1 {
+ println!("{} is used", used);
+ } else {
+ let mut group_count = 0;
+ for start_y in 0..128 {
+ for start_x in 0..128 {
+ if grid[start_y][start_x] {
+ group_count += 1;
+ clear_group(&mut grid, Point{
+ x: start_x as i32,
+ y: start_y as i32
+ });
+ }
+ }
+ }
+ println!("{} groups", group_count);
+
+ }
+}
+
+fn clear_group(grid: &mut Vec<Vec<bool>>, point: Point) {
+ if point.x >= 0 && point.x < 128 && point.y >= 0 && point.y < 128 {
+ if grid[point.y as usize][point.x as usize] {
+ grid[point.y as usize][point.x as usize] = false;
+ clear_group(grid, point.up());
+ clear_group(grid, point.down());
+ clear_group(grid, point.left());
+ clear_group(grid, point.right());
+ }
+ }
+}
diff --git a/2017/src/bin/day_15.rs b/2017/src/bin/day_15.rs
new file mode 100644
index 0000000..29b63ad
--- /dev/null
+++ b/2017/src/bin/day_15.rs
@@ -0,0 +1,40 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let mut a: u64 = 591;
+ let mut b: u64 = 393;
+
+ let mut matches: u64 = 0;
+
+ let comparisons = if args.part == 1 {
+ 40_000_000
+ } else {
+ 5_000_000
+ };
+
+ for _ in 0..comparisons {
+ a = (a * 16807) % 2147483647;
+ b = (b * 48271) % 2147483647;
+
+ while args.part != 1 && a % 4 != 0 {
+ a = (a * 16807) % 2147483647;
+ }
+ while args.part != 1 && b % 8 != 0 {
+ b = (b * 48271) % 2147483647;
+ }
+
+ if lower_16_match(a, b) {
+ matches += 1;
+ }
+ }
+
+ println!("There were {} matches", matches);
+}
+
+fn lower_16_match(a: u64, b: u64) -> bool {
+ let mask = 65535; //2^16-1, ie 16 ones
+ (a & mask) == (b & mask)
+}
diff --git a/2017/src/bin/day_16.rs b/2017/src/bin/day_16.rs
new file mode 100644
index 0000000..9676714
--- /dev/null
+++ b/2017/src/bin/day_16.rs
@@ -0,0 +1,87 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+extern crate regex;
+use regex::Regex;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let spin_re = Regex::new(r"s(\d+)").unwrap();
+ let exchange_re = Regex::new(r"x(\d+)/(\d+)").unwrap();
+ let partner_re = Regex::new(r"p(\w)/(\w)").unwrap();
+ let input: Vec<Instruction> = args.input[0]
+ .split(',')
+ .map(|instruction| {
+ if let Some(caps) = spin_re.captures(instruction) {
+ let spin_amount: usize = caps[1].parse().unwrap();
+ Instruction::Spin(spin_amount)
+ } else if let Some(caps) = exchange_re.captures(instruction) {
+ let position_a: usize = caps[1].parse().unwrap();
+ let position_b: usize = caps[2].parse().unwrap();
+ Instruction::Exchange(position_a, position_b)
+ } else if let Some(caps) = partner_re.captures(instruction) {
+ let program_a = caps[1].chars().next().unwrap();
+ let program_b = caps[2].chars().next().unwrap();
+ Instruction::Partner(program_a, program_b)
+ } else {
+ panic!("Unhandled instruction: {}", instruction)
+ }
+ })
+ .collect();
+
+ let mut states = vec!("abcdefghijklmnop".chars().collect());
+ if args.part == 1 {
+ let answer = run(&input, &states.last().unwrap());
+ println!("{}", answer.iter().collect::<String>());
+ } else {
+ let repetitions = 1_000_000_000;
+ let mut cycle_found = false;
+ let mut cycle_start = 0;
+ while !cycle_found {
+ let next = run(&input, &states.last().unwrap());
+ if let Some(i) = states.iter().position(|&ref x| *x == next) {
+ cycle_found = true;
+ cycle_start = i;
+ } else {
+ states.push(next);
+ }
+ }
+ println!("Cycle found after pushing {} states", states.len());
+ println!("Cycle starts at {} states", cycle_start);
+
+ let solution_index = (repetitions - cycle_start) % (states.len() - cycle_start);
+ println!("{}", states[solution_index].iter().collect::<String>());
+
+ }
+}
+
+enum Instruction {
+ Spin(usize),
+ Exchange(usize, usize),
+ Partner(char, char)
+}
+
+fn run(instructions: &[Instruction], start: &Vec<char>) -> Vec<char> {
+ let mut programs = start.clone();
+ for instruction in instructions {
+ match instruction {
+ &Instruction::Exchange(a, b) => {
+ programs.swap(a, b);
+ },
+ &Instruction::Spin(spin_amount) => {
+ for _ in 0..spin_amount {
+ //this may be slow, but will suffice for right now
+ let end = programs.pop().unwrap();
+ programs.insert(0, end);
+ }
+ },
+ &Instruction::Partner(program_a, program_b) => {
+ let position_a: usize = programs.iter().position(|&x| x == program_a).unwrap();
+ let position_b: usize = programs.iter().position(|&x| x == program_b).unwrap();
+ programs.swap(position_a, position_b);
+ }
+ }
+ }
+ programs
+}
diff --git a/2017/src/bin/day_17.rs b/2017/src/bin/day_17.rs
new file mode 100644
index 0000000..09d6fdc
--- /dev/null
+++ b/2017/src/bin/day_17.rs
@@ -0,0 +1,47 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+ let step_size: usize = args.input[0].parse().unwrap();
+
+ let inserts = if args.part == 1 {
+ 2017
+ } else {
+ 50_000_000
+ };
+
+ let mut buffer = Vec::with_capacity(inserts + 1);
+ buffer.push(0);
+ let mut position = 0;
+
+ for i in 0..inserts as u32 {
+ let to_insert = i+1;
+ // the +1 is because they want it to insert AFTER the element
+ // that adding position ends on
+ position = ((position + step_size) % buffer.len()) + 1;
+ if args.part == 2 && position != 1 {
+ // for big vectors, push is MUCH more efficient than
+ // insert (O(C) vs O(n)). In part 2, we want the element
+ // after 0, which will always be index 1. It only needs to
+ // be inserted into the right place if it's actually going
+ // to be in position 1.
+ //
+ // If I wasn't meshing the solution with part 1, there
+ // probably wouldn't even be a vector, just tracking the
+ // length and index 1.
+ buffer.push(to_insert);
+ } else {
+ buffer.insert(position, to_insert);
+ }
+ }
+
+ let answer_position = if args.part == 1 {
+ (position+1)%buffer.len()
+ } else {
+ 1
+ };
+
+ let answer = buffer[answer_position];
+ println!("{}", answer);
+}
diff --git a/2017/src/bin/day_18.rs b/2017/src/bin/day_18.rs
new file mode 100644
index 0000000..f763f1f
--- /dev/null
+++ b/2017/src/bin/day_18.rs
@@ -0,0 +1,207 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+use std::str::FromStr;
+use std::collections::HashMap;
+use std::sync::mpsc::*;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let instructions: Vec<Instruction> = args.input.iter()
+ .map(|line| line.parse().unwrap())
+ .collect();
+
+ let (sender0, receiver0) = channel();
+ let (sender1, receiver1) = channel();
+
+ let mut program0 = Program::new(0, instructions.clone(), sender0, receiver1, args.part == 1);
+
+ if args.part == 1 {
+ program0.run();
+ let mut answer = 0;
+ while let Ok(x) = receiver0.try_recv() {
+ answer = x;
+ }
+
+ println!("Last sent value: {}", answer);
+ } else {
+ let mut program1 = Program::new(1, instructions.clone(), sender1, receiver0, args.part == 1);
+
+ while !(program0.terminated && program1.terminated) && (program0.run() || program1.run()) {
+ }
+
+
+ println!("Program 0 sent {} messages", program0.sent_count);
+ println!("Program 1 sent {} messages", program1.sent_count);
+ }
+
+
+}
+
+struct Program {
+ instructions: Vec<Instruction>,
+ registers: HashMap<char, i64>,
+ pc: i64,
+ terminated: bool,
+ sender: Sender<i64>,
+ sent_count: u64,
+ receiver: Receiver<i64>,
+ part1: bool
+}
+
+impl Program {
+ fn new(process_id: i64, instructions: Vec<Instruction>, sender: Sender<i64>, receiver: Receiver<i64>, part1: bool) -> Program {
+ let mut reg = HashMap::new();
+ if !part1 {
+ reg.insert('p', process_id);
+ }
+ Program {
+ instructions: instructions,
+ registers: reg,
+ pc: 0,
+ terminated: false,
+ sender: sender,
+ sent_count: 0,
+ receiver: receiver,
+ part1: part1
+ }
+ }
+ fn run(&mut self) -> bool {
+ use Instruction::*;
+
+ let mut blocked = false;
+ let mut did_something = false;
+
+ while !blocked && !self.terminated {
+ if self.pc < 0 || self.pc as usize >= self.instructions.len() {
+ self.terminated = true;
+ }
+ else {
+ let ins = self.instructions[self.pc as usize].clone();
+
+ match ins {
+ Snd(x) => {
+ self.sent_count += 1;
+ self.sender.send(self.get(x)).ok();
+ },
+ Set(x, y) => {
+ let y_val = self.get(y);
+ self.set(x, y_val);
+ },
+ Add(x, y) => {
+ let x_val = self.get(x);
+ let y_val = self.get(y);
+ self.set(x, x_val + y_val);
+ },
+ Mul(x, y) => {
+ let x_val = self.get(x);
+ let y_val = self.get(y);
+ self.set(x, x_val * y_val);
+ },
+ Mod(x, y) => {
+ let x_val = self.get(x);
+ let y_val = self.get(y);
+ self.set(x, x_val % y_val);
+ },
+ Rcv(x) => {
+ if self.part1 {
+ blocked = self.get(x) != 0;
+ } else {
+ match self.receiver.try_recv() {
+ Ok(y) => {
+ self.set(x, y);
+ },
+ Err(_) => {
+ blocked = true;
+ return did_something;
+ }
+ }
+ }
+ },
+ Jgz(x, y) => {
+ if self.get(x) > 0 {
+ self.pc = self.pc + self.get(y) - 1;
+ }
+ },
+ }
+ self.pc += 1;
+ did_something = true;
+ }
+ }
+ true
+ }
+
+ fn get(&self, register: Data) -> i64 {
+ use Data::*;
+ match register {
+ Register(c) => self.registers.get(&c).cloned().unwrap_or(0),
+ Literal(i) => i
+ }
+ }
+
+ fn set(&mut self, register: Data, value: i64) {
+ use Data::*;
+ match register {
+ Register(c) => {
+ self.registers.insert(c, value);
+ },
+ _ => {}
+ }
+ }
+}
+
+#[derive(Debug, Clone)]
+enum Instruction {
+ Snd(Data),
+ Set(Data, Data),
+ Add(Data, Data),
+ Mul(Data, Data),
+ Mod(Data, Data),
+ Rcv(Data),
+ Jgz(Data, Data)
+}
+
+impl FromStr for Instruction {
+ type Err = String;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ use Instruction::*;
+
+ let mut str_iter = s.split_whitespace();
+ let ins = str_iter.next();
+ let x = str_iter.next().map(|x| x.parse::<Data>());
+ let y = str_iter.next().map(|x| x.parse::<Data>());
+
+ match (ins, x, y) {
+ (Some("snd"), Some(Ok(x)), _) => Ok(Snd(x)),
+ (Some("set"), Some(Ok(x)), Some(Ok(y))) => Ok(Set(x, y)),
+ (Some("add"), Some(Ok(x)), Some(Ok(y))) => Ok(Add(x, y)),
+ (Some("mul"), Some(Ok(x)), Some(Ok(y))) => Ok(Mul(x, y)),
+ (Some("mod"), Some(Ok(x)), Some(Ok(y))) => Ok(Mod(x, y)),
+ (Some("rcv"), Some(Ok(x)), _) => Ok(Rcv(x)),
+ (Some("jgz"), Some(Ok(x)), Some(Ok(y))) => Ok(Jgz(x, y)),
+ (_, _, _) => Err(format!("Unknown instruction {}", s))
+ }
+ }
+}
+
+#[derive(Debug, Clone, Copy)]
+enum Data {
+ Literal(i64),
+ Register(char)
+}
+
+impl FromStr for Data {
+ type Err = String;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ use Data::*;
+
+ match (s.parse(), s.chars().next()) {
+ (Ok(num), _) => Ok(Literal(num)),
+ (Err(_), Some(c)) => Ok(Register(c)),
+ (_, _) => Err(format!("Invalid data {}", s))
+ }
+ }
+}
diff --git a/2017/src/bin/day_19.rs b/2017/src/bin/day_19.rs
new file mode 100644
index 0000000..b333c98
--- /dev/null
+++ b/2017/src/bin/day_19.rs
@@ -0,0 +1,78 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ use Direction::*;
+
+ let args = AdventArgs::init();
+
+ let input: Vec<Vec<char>> = args.input.iter().map(|line| line.chars().collect()).collect();
+
+ let mut position = Point {
+ x: input[0].iter().position(|&c| c == '|').unwrap() as i32,
+ y: 0
+ };
+
+ let mut direction = Down;
+ let mut path_ended = false;
+ let mut tokens = Vec::new();
+
+ // moving onto the map counts as one, but because of how I'm
+ // counting there's also an off the map step that I shouldn't be
+ // counting at the end. They cancel out.
+ let mut steps_moved = 0;
+
+ while !path_ended {
+ position = position.shift(&direction);
+ steps_moved += 1;
+
+ match char_at(&input, &position) {
+ '|' | '-' => {
+ //continue as is
+ },
+ ' ' => {
+ path_ended = true;
+ },
+ '+' => {
+ let left_option = char_at(&input, &position.shift(&direction.rotate_left()));
+ let right_option = char_at(&input, &position.shift(&direction.rotate_right()));
+ match (left_option, right_option) {
+ (' ', ' ') => {
+ path_ended = true;
+ },
+ (_, ' ') => {
+ direction = direction.rotate_left();
+ },
+ (' ', _) => {
+ direction = direction.rotate_right();
+ },
+ _ => {
+ panic!("Don't know where to go from {:?}", position);
+ }
+ }
+ },
+ token => {
+ tokens.push(token);
+ }
+ }
+
+ }
+
+ if args.part == 1 {
+ println!("{}", tokens.iter().collect::<String>());
+ } else {
+ println!("{}", steps_moved);
+ }
+}
+
+fn char_at(input: &Vec<Vec<char>>, position: &Point) -> char {
+ if position.y < 0 ||
+ position.x < 0 ||
+ position.y as usize >= input.len() ||
+ position.x as usize >= input[position.y as usize].len() {
+ ' '
+ } else {
+ input[position.y as usize][position.x as usize]
+ }
+
+}
diff --git a/2017/src/bin/day_2.rs b/2017/src/bin/day_2.rs
new file mode 100644
index 0000000..307029a
--- /dev/null
+++ b/2017/src/bin/day_2.rs
@@ -0,0 +1,26 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+ let sum = args.input.iter().map(|line| {
+ let splitline = parse_space_separated_ints(line).unwrap();
+
+ if args.part == 1 {
+ let max = splitline.iter().max().unwrap();
+ let min = splitline.iter().min().unwrap();
+ max-min
+ } else {
+ for i in 0..splitline.len() {
+ for j in 0..splitline.len() {
+ if i != j && splitline[i] % splitline[j] == 0 {
+ return splitline[i] / splitline[j];
+ }
+ }
+ }
+ panic!("Didn't find a dividing one! {:?}", splitline)
+ }
+ }).sum::<i32>();
+
+ println!("Checksum is {}", sum);
+}
diff --git a/2017/src/bin/day_20.rs b/2017/src/bin/day_20.rs
new file mode 100644
index 0000000..f528675
--- /dev/null
+++ b/2017/src/bin/day_20.rs
@@ -0,0 +1,89 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+extern crate regex;
+use regex::Regex;
+
+#[macro_use]
+extern crate lazy_static;
+
+use std::str::FromStr;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let mut particles: Vec<Particle> = args.input.iter()
+ .map(|line| line.parse().unwrap())
+ .collect();
+
+ // I took eventually to be after a largish number. Seemed to work
+ // out, but I'm sure there is a more mathematical way to work it
+ // out.
+ for _ in 0..1000 {
+ particles = particles.iter().map(|p| p.step()).collect();
+ if args.part == 2 {
+ let before_collisions = particles.clone();
+ particles.retain(|p| {
+ before_collisions.iter().filter(|p2| p2.position == p.position).count() == 1
+ });
+ }
+ }
+
+ if args.part == 1 {
+ let (closest, _) = particles.iter().enumerate().min_by_key(|&(_, p)| p.position.manhattan_distance()).unwrap();
+ println!("Closest to 0: {}", closest);
+ } else {
+ let remaining = particles.iter().count();
+ println!("Remaining: {}", remaining);
+ }
+
+}
+
+#[derive(Debug, Clone)]
+struct Particle {
+ position: Point3d,
+ velocity: Point3d,
+ acceleration: Point3d
+}
+
+
+impl Particle {
+ fn step(&self) -> Particle {
+ let v = self.velocity + self.acceleration;
+ Particle {
+ position: self.position + v,
+ velocity: v,
+ acceleration: self.acceleration
+ }
+ }
+}
+
+impl FromStr for Particle {
+ type Err = String;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ lazy_static!{
+ static ref RE: Regex = Regex::new(r"p=<(-?\d+),(-?\d+),(-?\d+)>, v=<(-?\d+),(-?\d+),(-?\d+)>, a=<(-?\d+),(-?\d+),(-?\d+)>").unwrap();
+ };
+
+ let caps = RE.captures(s).unwrap();
+ Ok(Particle {
+ position: Point3d {
+ x: caps[1].parse().unwrap(),
+ y: caps[2].parse().unwrap(),
+ z: caps[3].parse().unwrap()
+ },
+ velocity: Point3d {
+ x: caps[4].parse().unwrap(),
+ y: caps[5].parse().unwrap(),
+ z: caps[6].parse().unwrap()
+ },
+ acceleration: Point3d {
+ x: caps[7].parse().unwrap(),
+ y: caps[8].parse().unwrap(),
+ z: caps[9].parse().unwrap()
+ }
+ })
+ }
+}
+
diff --git a/2017/src/bin/day_21.rs b/2017/src/bin/day_21.rs
new file mode 100644
index 0000000..7f7ac79
--- /dev/null
+++ b/2017/src/bin/day_21.rs
@@ -0,0 +1,200 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+extern crate regex;
+use regex::Regex;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let (t2, t3) = parse_transforms(&args.input);
+
+ let mut picture = vec!(
+ vec!(false, true, false),
+ vec!(false, false, true),
+ vec!(true, true, true)
+ );
+
+ let iterations = if args.part == 1 {
+ 5
+ } else {
+ 18
+ };
+ for _ in 0..iterations {
+ picture = expand(&picture, &t2, &t3);
+ }
+
+ let ones: usize = picture.iter().map(
+ |row| row.iter().filter(|&&x| x).count()
+ ).sum();
+ println!("{} ones", ones);
+}
+
+fn print(picture: &Vec<Vec<bool>>) {
+ for row in picture {
+ for &c in row {
+ print!("{}", if c {"#"} else {"."});
+ }
+ println!();
+ }
+ println!();
+}
+
+fn expand(picture: &Vec<Vec<bool>>, t2: &Vec<Transform2>, t3: &Vec<Transform3>) -> Vec<Vec<bool>> {
+ let size = picture.len();
+ let div = if size % 2 == 0 { 2 } else { 3 };
+ let segments = size / div;
+ let new_size = size + segments;
+
+ let mut result = vec!(vec!(false; new_size); new_size);
+
+ for i in 0..segments {
+ let y = i*div;
+ let v = i*(div+1);
+ for j in 0..segments {
+ let x = j*div;
+ let u = j*(div+1);
+ if div == 2 {
+ let init = [
+ [picture[y][x], picture[y][x+1]],
+ [picture[y+1][x], picture[y+1][x+1]]
+ ];
+ let pattern = t2.iter().find(|p| p.matches(&init)).expect(&format!("No pattern matches {:?}", init));
+ let to = pattern.to;
+
+ for a in 0..div+1 {
+ for b in 0..div+1 {
+ result[v+a][u+b] = to[a][b];
+ }
+ }
+ } else {
+ let init = [
+ [picture[y][x], picture[y][x+1], picture[y][x+2]],
+ [picture[y+1][x], picture[y+1][x+1], picture[y+1][x+2]],
+ [picture[y+2][x], picture[y+2][x+1], picture[y+2][x+2]]
+ ];
+ let pattern = t3.iter().find(|p| p.matches(&init)).expect(&format!("No pattern matches {:?}", init));
+ let to = pattern.to;
+
+ for a in 0..div+1 {
+ for b in 0..div+1 {
+ result[v+a][u+b] = to[a][b];
+ }
+ }
+ }
+ }
+ }
+
+ result
+}
+
+fn parse_transforms(input: &Vec<String>) -> (Vec<Transform2>, Vec<Transform3>) {
+ let t2_re = Regex::new(r"^(.)(.)/(.)(.) => (.)(.)(.)/(.)(.)(.)/(.)(.)(.)$").unwrap();
+ let t3_re = Regex::new(r"^(.)(.)(.)/(.)(.)(.)/(.)(.)(.) => (.)(.)(.)(.)/(.)(.)(.)(.)/(.)(.)(.)(.)/(.)(.)(.)(.)$").unwrap();
+
+ let mut t2 = Vec::new();
+ let mut t3 = Vec::new();
+ for line in input {
+ if let Some(t2_caps) = t2_re.captures(line) {
+ t2.push(Transform2 {
+ from: [
+ [&t2_caps[1] == "#", &t2_caps[2] == "#"],
+ [&t2_caps[3] == "#", &t2_caps[4] == "#"]
+ ],
+ to: [
+ [&t2_caps[5] == "#", &t2_caps[6] == "#", &t2_caps[7] == "#"],
+ [&t2_caps[8] == "#", &t2_caps[9] == "#", &t2_caps[10] == "#"],
+ [&t2_caps[11] == "#", &t2_caps[12] == "#", &t2_caps[13] == "#"]
+ ]
+ });
+ } else if let Some(t3_caps) = t3_re.captures(line) {
+ t3.push(Transform3 {
+ from: [
+ [&t3_caps[1] == "#", &t3_caps[2] == "#", &t3_caps[3] == "#"],
+ [&t3_caps[4] == "#", &t3_caps[5] == "#", &t3_caps[6] == "#"],
+ [&t3_caps[7] == "#", &t3_caps[8] == "#", &t3_caps[9] == "#"]
+ ],
+ to: [
+ [&t3_caps[10] == "#", &t3_caps[11] == "#", &t3_caps[12] == "#", &t3_caps[13] == "#"],
+ [&t3_caps[14] == "#", &t3_caps[15] == "#", &t3_caps[16] == "#", &t3_caps[17] == "#"],
+ [&t3_caps[18] == "#", &t3_caps[19] == "#", &t3_caps[20] == "#", &t3_caps[21] == "#"],
+ [&t3_caps[22] == "#", &t3_caps[23] == "#", &t3_caps[24] == "#", &t3_caps[25] == "#"]
+ ]
+ });
+ }
+ }
+
+ (t2, t3)
+}
+
+#[derive(Debug)]
+struct Transform2 {
+ from: [[bool; 2]; 2],
+ to: [[bool; 3]; 3]
+}
+
+impl Transform2 {
+ fn rotate(from: &[[bool;2];2]) -> [[bool;2];2] {
+ [
+ [from[1][0],from[0][0]],
+ [from[1][1],from[0][1]]
+ ]
+ }
+
+ fn flip(from: &[[bool;2];2]) -> [[bool;2];2] {
+ [
+ [from[0][1],from[0][0]],
+ [from[1][1],from[1][0]]
+ ]
+ }
+
+ fn matches(&self, other: &[[bool; 2]; 2]) -> bool {
+ let mut any_match = false;
+ let mut spinning_other = other.clone();
+ for _ in 0..4 {
+ any_match = any_match ||
+ self.from == spinning_other ||
+ self.from == Transform2::flip(&spinning_other);
+
+ spinning_other = Transform2::rotate(&spinning_other);
+ }
+ any_match
+ }
+}
+
+#[derive(Debug)]
+struct Transform3 {
+ from: [[bool; 3]; 3],
+ to: [[bool; 4]; 4]
+}
+
+impl Transform3 {
+ fn rotate(from: &[[bool;3];3]) -> [[bool;3];3] {
+ [
+ [from[2][0],from[1][0],from[0][0]],
+ [from[2][1],from[1][1],from[0][1]],
+ [from[2][2],from[1][2],from[0][2]]
+ ]
+ }
+
+ fn flip(from: &[[bool;3];3]) -> [[bool;3];3] {
+ [
+ [from[0][2],from[0][1],from[0][0]],
+ [from[1][2],from[1][1],from[1][0]],
+ [from[2][2],from[2][1],from[2][0]]
+ ]
+ }
+
+ fn matches(&self, other: &[[bool; 3]; 3]) -> bool {
+ let mut any_match = false;
+ let mut spinning_other = other.clone();
+ for _ in 0..4 {
+ any_match = any_match ||
+ self.from == spinning_other ||
+ self.from == Transform3::flip(&spinning_other);
+
+ spinning_other = Transform3::rotate(&spinning_other);
+ }
+ any_match
+ }
+}
diff --git a/2017/src/bin/day_22.rs b/2017/src/bin/day_22.rs
new file mode 100644
index 0000000..917ed63
--- /dev/null
+++ b/2017/src/bin/day_22.rs
@@ -0,0 +1,73 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+use std::collections::HashSet;
+
+fn main() {
+ let args = AdventArgs::init();
+ let input_width = args.input[0].len();
+ let input_height = args.input.len();
+
+ let mut position = Point {
+ x: (input_width / 2) as i32,
+ y: (input_height / 2) as i32,
+ };
+ let mut direction = Direction::Up;
+
+ let mut weakened: HashSet<Point> = HashSet::new();
+ let mut infected: HashSet<Point> = HashSet::new();
+ let mut flagged: HashSet<Point> = HashSet::new();
+
+ for (y, line) in args.input.iter().enumerate() {
+ for (x, c) in line.chars().enumerate() {
+ if c == '#' {
+ infected.insert(Point {
+ x: x as i32,
+ y: y as i32
+ });
+ }
+ }
+ }
+
+ let mut infections_caused = 0;
+
+ let bursts = if args.part == 1 {
+ 10_000
+ } else {
+ 10_000_000
+ };
+
+ for _ in 0..bursts {
+ if args.part == 1 {
+ if infected.contains(&position) {
+ direction = direction.rotate_right();
+ infected.remove(&position);
+ } else {
+ direction = direction.rotate_left();
+ infected.insert(position);
+ infections_caused += 1;
+ }
+ }
+ else {
+ if weakened.contains(&position) {
+ infected.insert(position);
+ weakened.remove(&position);
+ infections_caused += 1;
+ } else if infected.contains(&position) {
+ direction = direction.rotate_right();
+ flagged.insert(position);
+ infected.remove(&position);
+ } else if flagged.contains(&position) {
+ direction = direction.rotate_right().rotate_right();
+ flagged.remove(&position);
+ } else {
+ direction = direction.rotate_left();
+ weakened.insert(position);
+ }
+ }
+ position = position.shift(&direction);
+ }
+
+ println!("Infections caused {}", infections_caused);
+
+}
diff --git a/2017/src/bin/day_23.rs b/2017/src/bin/day_23.rs
new file mode 100644
index 0000000..d199af0
--- /dev/null
+++ b/2017/src/bin/day_23.rs
@@ -0,0 +1,168 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+use std::str::FromStr;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ if args.part == 1 {
+ let instructions: Vec<Instruction> = args.input.iter()
+ .map(|line| line.parse().unwrap())
+ .collect();
+
+ let mut program = Program::new(instructions.clone(), args.part == 1);
+ let mul_called = program.run();
+ println!("Mult called {} times", mul_called);
+ } else {
+ println!("Result is {}", run_as_rust());
+ }
+
+}
+
+fn to_register(c: char) -> usize {
+ (c as u32 - 'a' as u32) as usize
+}
+
+struct Program {
+ instructions: Vec<Instruction>,
+ registers: [i64; 8],
+ pc: i64
+}
+
+impl Program {
+ fn new(instructions: Vec<Instruction>, part1: bool) -> Program {
+ let mut reg = [0; 8];
+ if part1 == false {
+ reg[0] = 1;
+ }
+ Program {
+ instructions: instructions,
+ registers: reg,
+ pc: 0
+ }
+ }
+ fn run(&mut self) -> u32 {
+ use Instruction::*;
+
+ let mut mul_called = 0;
+
+ while self.pc >= 0 && (self.pc as usize) < self.instructions.len() {
+ let ins = self.instructions[self.pc as usize].clone();
+
+ match ins {
+ Set(x, y) => {
+ let y_val = self.get(y);
+ self.set(x, y_val);
+ },
+ Sub(x, y) => {
+ let x_val = self.get(x);
+ let y_val = self.get(y);
+ self.set(x, x_val - y_val);
+ },
+ Mul(x, y) => {
+ let x_val = self.get(x);
+ let y_val = self.get(y);
+ self.set(x, x_val * y_val);
+ mul_called += 1;
+ },
+ Jnz(x, y) => {
+ if self.get(x) != 0 {
+ self.pc = self.pc + self.get(y) - 1;
+ }
+ },
+ }
+ self.pc += 1;
+ }
+
+ mul_called
+ }
+
+ fn get(&self, register: Data) -> i64 {
+ use Data::*;
+ match register {
+ Register(c) => self.registers[c],
+ Literal(i) => i
+ }
+ }
+
+ fn set(&mut self, register: Data, value: i64) {
+ use Data::*;
+ match register {
+ Register(c) => {
+ self.registers[c] = value;
+ },
+ _ => {}
+ }
+ }
+}
+
+#[derive(Debug, Clone)]
+enum Instruction {
+ Set(Data, Data),
+ Sub(Data, Data),
+ Mul(Data, Data),
+ Jnz(Data, Data)
+}
+
+impl FromStr for Instruction {
+ type Err = String;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ use Instruction::*;
+
+ let mut str_iter = s.split_whitespace();
+ let ins = str_iter.next();
+ let x = str_iter.next().map(|x| x.parse::<Data>());
+ let y = str_iter.next().map(|x| x.parse::<Data>());
+
+ match (ins, x, y) {
+ (Some("set"), Some(Ok(x)), Some(Ok(y))) => Ok(Set(x, y)),
+ (Some("sub"), Some(Ok(x)), Some(Ok(y))) => Ok(Sub(x, y)),
+ (Some("mul"), Some(Ok(x)), Some(Ok(y))) => Ok(Mul(x, y)),
+ (Some("jnz"), Some(Ok(x)), Some(Ok(y))) => Ok(Jnz(x, y)),
+ (_, _, _) => Err(format!("Unknown instruction {}", s))
+ }
+ }
+}
+
+#[derive(Debug, Clone, Copy)]
+enum Data {
+ Literal(i64),
+ Register(usize)
+}
+
+impl FromStr for Data {
+ type Err = String;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ use Data::*;
+
+ match (s.parse(), s.chars().next()) {
+ (Ok(num), _) => Ok(Literal(num)),
+ (Err(_), Some(c)) => Ok(Register(to_register(c))),
+ (_, _) => Err(format!("Invalid data {}", s))
+ }
+ }
+}
+
+
+fn run_as_rust() -> i64 {
+ let mut h: i64 = 0;
+ let mut b: i64 = 99 * 100 + 100000;
+ let c: i64 = b + 17000;
+
+ while b <= c {
+ let f = (2..b).any(|d| {
+ b % d == 0
+ });
+
+ if f {
+ h += 1;
+ }
+
+ b += 17;
+ }
+
+ h
+}
diff --git a/2017/src/bin/day_24.rs b/2017/src/bin/day_24.rs
new file mode 100644
index 0000000..eb7fddd
--- /dev/null
+++ b/2017/src/bin/day_24.rs
@@ -0,0 +1,60 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+ let components: Vec<Component> = args.input.iter()
+ .map(|line| {
+ let mut split = line.split('/');
+ Component {
+ a: split.next().unwrap().parse().unwrap(),
+ b: split.next().unwrap().parse().unwrap()
+ }
+ })
+ .collect();
+
+ if args.part == 1 {
+ let strongest = build_strongest(0, components);
+ println!("{}", strongest);
+ } else {
+ let (strongest, longest) = build_longest(0, components);
+ println!("length: {}, strength: {}", longest, strongest);
+ }
+}
+
+fn build_strongest(start: u32, components: Vec<Component>) -> u32 {
+ components.iter().enumerate()
+ .filter(|&(_, c)| c.a == start || c.b == start)
+ .map(|(i, c)| {
+ let end = if c.a == start { c.b } else { c.a };
+ let mut subset = components.clone();
+ subset.remove(i);
+ c.strength() + build_strongest(end, subset)
+ }).max().unwrap_or(0)
+}
+
+fn build_longest(start: u32, components: Vec<Component>) -> (u32, u32) {
+ components.iter().enumerate()
+ .filter(|&(_, c)| c.a == start || c.b == start)
+ .map(|(i, c)| {
+ let end = if c.a == start { c.b } else { c.a };
+ let mut subset = components.clone();
+ subset.remove(i);
+ let (s, l) = build_longest(end, subset);
+ (c.strength() + s, 1 + l)
+ }).max_by(|&(s1, l1), &(s2, l2)| {
+ l1.cmp(&l2).then(s1.cmp(&s2))
+ }).unwrap_or((0, 0))
+}
+
+#[derive(Debug, Clone)]
+struct Component {
+ a: u32,
+ b: u32
+}
+
+impl Component {
+ fn strength(&self) -> u32 {
+ self.a + self.b
+ }
+}
diff --git a/2017/src/bin/day_25.rs b/2017/src/bin/day_25.rs
new file mode 100644
index 0000000..8d7b0da
--- /dev/null
+++ b/2017/src/bin/day_25.rs
@@ -0,0 +1,125 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+extern crate regex;
+use regex::Regex;
+
+use std::slice::Iter;
+use std::collections::HashSet;
+
+fn main() {
+ let args = AdventArgs::init();
+ let program = parse(&args.input);
+
+ let mut position: i32 = 0;
+ let mut state = program.state(program.start).expect("Started out of program bounds");
+ let mut tape = HashSet::new();
+
+ for _ in 0..program.iterations {
+ let instruction = if tape.contains(&position) {
+ &state.if1
+ } else {
+ &state.if0
+ };
+ if instruction.write {
+ tape.insert(position);
+ } else {
+ tape.remove(&position);
+ }
+ position += instruction.offset;
+ state = program.state(instruction.next).expect("Redirected to unknown state");
+ }
+
+ println!("{}", tape.len());
+}
+
+fn parse(input: &Vec<String>) -> Program {
+ let state_re = Regex::new(r"state (\w)").unwrap();
+ let iterations_re = Regex::new(r"(\d+) steps").unwrap();
+ let write_re = Regex::new(r"Write the value (\d)").unwrap();
+ let move_re = Regex::new(r"Move one slot to the (\w+)").unwrap();
+
+ let mut lines = input.iter();
+ let start = parse_char(&mut lines, &state_re);
+ let iterations = parse_number(&mut lines, &iterations_re);
+
+ let mut states = Vec::new();
+ while let Some(heading) = lines.next() {
+ states.push(State {
+ id: state_re.captures(heading).unwrap()[1].chars().next().unwrap(),
+ if0: parse_instruction(&mut lines, &write_re, &move_re, &state_re),
+ if1: parse_instruction(&mut lines, &write_re, &move_re, &state_re)
+ });
+ }
+
+ Program {
+ start: start,
+ iterations: iterations,
+ states: states
+ }
+}
+
+fn parse_char(lines: &mut Iter<String>, re: &Regex) -> char {
+ re.captures(
+ lines.next().unwrap()
+ ).unwrap()[1].chars().next().unwrap()
+}
+
+fn parse_number(lines: &mut Iter<String>, re: &Regex) -> u32 {
+ re.captures(
+ lines.next().unwrap()
+ ).unwrap()[1].parse().unwrap()
+}
+fn parse_direction(lines: &mut Iter<String>, re: &Regex) -> i32 {
+ if re.captures(
+ lines.next().unwrap()
+ ).unwrap()[1] == *"left" {
+ -1
+ } else {
+ 1
+ }
+}
+
+fn parse_bool(lines: &mut Iter<String>, re: &Regex) -> bool {
+ re.captures(
+ lines.next().unwrap()
+ ).unwrap()[1] == *"1"
+}
+
+fn parse_instruction(lines: &mut Iter<String>, write_re: &Regex, offset_re: &Regex, next_re: &Regex) -> Instruction {
+ lines.next();
+ Instruction {
+ write: parse_bool(lines, &write_re),
+ offset: parse_direction(lines, &offset_re),
+ next: parse_char(lines, &next_re)
+ }
+}
+
+#[derive(Debug)]
+struct Program {
+ start: char,
+ iterations: u32,
+ states: Vec<State>
+}
+
+impl Program {
+ fn state(&self, i: char) -> Option<&State> {
+ self.states.iter().find(|s| s.id == i)
+ }
+}
+
+#[derive(Debug)]
+struct State {
+ id: char,
+ if0: Instruction,
+ if1: Instruction
+}
+
+#[derive(Debug)]
+struct Instruction {
+ write: bool,
+ offset: i32,
+ next: char
+}
+
+
diff --git a/2017/src/bin/day_3.rs b/2017/src/bin/day_3.rs
new file mode 100644
index 0000000..69ded88
--- /dev/null
+++ b/2017/src/bin/day_3.rs
@@ -0,0 +1,62 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+use std::collections::HashMap;
+
+fn main() {
+ use Direction::*;
+
+ let args = AdventArgs::init();
+ let input = args.one_number_input().unwrap();
+
+ let mut memory: HashMap<Point, i32> = HashMap::new();
+ let mut last_allocated = 1;
+
+ let mut current = Point {
+ x: 0,
+ y: 0
+ };
+ memory.insert(current, last_allocated);
+
+ let mut steps_per_direction = 1;
+ let mut steps_to_next_turn = 1;
+ let mut turns_to_spiral_increase = 2;
+
+ let mut current_index = 1;
+ let mut current_direction = Right;
+
+ while (args.part == 1 && current_index != input) || (args.part == 2 && last_allocated < input) {
+ current = current.shift(&current_direction);
+ current_index += 1;
+
+ steps_to_next_turn -= 1;
+ if steps_to_next_turn == 0 {
+ current_direction = current_direction.rotate_left();
+ turns_to_spiral_increase -= 1;
+ if turns_to_spiral_increase == 0 {
+ steps_per_direction += 1;
+ turns_to_spiral_increase = 2;
+ }
+
+ steps_to_next_turn = steps_per_direction;
+ }
+
+ if args.part == 2 {
+ last_allocated = memory.get(&current.left()).cloned().unwrap_or(0) +
+ memory.get(&current.right()).cloned().unwrap_or(0) +
+ memory.get(&current.up()).cloned().unwrap_or(0) +
+ memory.get(&current.down()).cloned().unwrap_or(0) +
+ memory.get(&current.up().left()).cloned().unwrap_or(0) +
+ memory.get(&current.up().right()).cloned().unwrap_or(0) +
+ memory.get(&current.down().left()).cloned().unwrap_or(0) +
+ memory.get(&current.down().right()).cloned().unwrap_or(0);
+
+ memory.insert(current, last_allocated);
+ }
+ }
+
+ println!("{:?}", current);
+ println!("Distance: {}", current.x.abs() + current.y.abs());
+ println!("Last Allocated Value: {}", last_allocated);
+
+}
diff --git a/2017/src/bin/day_4.rs b/2017/src/bin/day_4.rs
new file mode 100644
index 0000000..a9a098a
--- /dev/null
+++ b/2017/src/bin/day_4.rs
@@ -0,0 +1,37 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let valid_count = args.input.iter()
+ .map(|line| {
+ let words = line.split_whitespace().map(|x| x.to_string()).collect::<Vec<String>>();
+ if args.part == 1 {
+ let mut deduped_words = words.clone();
+ deduped_words.sort();
+ deduped_words.dedup();
+ words.len() == deduped_words.len()
+ } else {
+ !words.iter().enumerate().any(|(i, word1)| {
+ words.iter().enumerate().any(|(j, word2)| {
+ i != j && is_anagram(word1, word2)
+ })
+ })
+ }
+ })
+ .filter(|&valid| valid)
+ .count();
+
+ println!("Valid count: {}", valid_count);
+}
+
+fn is_anagram(word1: &str, word2: &str) -> bool {
+ let mut chars1 = word1.chars().collect::<Vec<_>>();
+ chars1.sort();
+ let mut chars2 = word2.chars().collect::<Vec<_>>();
+ chars2.sort();
+
+ chars1.len() == chars2.len() &&
+ chars1.iter().zip(chars2.iter()).all(|(c1, c2)| c1 == c2)
+}
diff --git a/2017/src/bin/day_5.rs b/2017/src/bin/day_5.rs
new file mode 100644
index 0000000..49bdbd1
--- /dev/null
+++ b/2017/src/bin/day_5.rs
@@ -0,0 +1,25 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let mut jumps: Vec<i32> = args.input.iter().map(|line| line.parse().unwrap()).collect();
+ let mut steps_taken = 0;
+ let mut current_position: i32 = 0;
+
+ while current_position >= 0 && (current_position as usize) < jumps.len() {
+ let previous_position = current_position;
+ current_position += jumps[current_position as usize];
+
+ if args.part == 1 || jumps[previous_position as usize] < 3 {
+ jumps[previous_position as usize] += 1;
+ } else {
+ jumps[previous_position as usize] -= 1;
+ }
+
+ steps_taken += 1;
+ }
+
+ println!("Escaped in {} jumps", steps_taken);
+}
diff --git a/2017/src/bin/day_6.rs b/2017/src/bin/day_6.rs
new file mode 100644
index 0000000..be9a515
--- /dev/null
+++ b/2017/src/bin/day_6.rs
@@ -0,0 +1,61 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let init_layout = parse_space_separated_ints(&args.input[0]).unwrap();
+
+ let mut layouts = vec!(init_layout);
+ let mut balances = 0;
+ let mut cycle_found = false;
+ let mut cycle_size = 0;
+
+ while !cycle_found {
+ balances += 1;
+ let new_layout = find_next_layout(&layouts);
+
+ if let Some(index) = layouts.iter().position(|x| *x == new_layout) {
+ cycle_found = true;
+ cycle_size = layouts.len() - index;
+ };
+
+ layouts.push(new_layout);
+ }
+
+ if args.part == 1 {
+ println!("Did {} rebalances", balances);
+ } else {
+ println!("Cycle was {} long", cycle_size);
+ }
+}
+
+fn find_next_layout(layouts: &Vec<Vec<i32>>) -> Vec<i32> {
+ let previous_layout = layouts.last().unwrap();
+ rebalance(&previous_layout)
+}
+
+fn rebalance(layout: &Vec<i32>) -> Vec<i32> {
+ let biggest_container = layout.iter()
+ .enumerate()
+ .max_by(|&(ai, &asize), &(bi, &bsize)| {
+ asize.cmp(&bsize).then(bi.cmp(&ai))
+ })
+ .map(|(i, _)| i)
+ .unwrap();
+
+
+ let mut new_layout = layout.clone();
+ let mut to_redistribute = new_layout[biggest_container];
+ new_layout[biggest_container] = 0;
+ let mut target = (biggest_container + 1) % layout.len();
+
+ while to_redistribute > 0 {
+ new_layout[target] += 1;
+ to_redistribute -= 1;
+ target = (target + 1) % layout.len();
+ }
+
+ new_layout
+}
+
diff --git a/2017/src/bin/day_7.rs b/2017/src/bin/day_7.rs
new file mode 100644
index 0000000..3c3b185
--- /dev/null
+++ b/2017/src/bin/day_7.rs
@@ -0,0 +1,62 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+extern crate regex;
+use regex::Regex;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let names_re = Regex::new(r"[a-z]+").unwrap();
+ let weight_re = Regex::new(r"\d+").unwrap();
+
+ let tree: Vec<(String, Vec<String>, i32)> = args.input.iter()
+ .map(|line| {
+ let mut matches = names_re.find_iter(line);
+ let base = matches.next().unwrap().as_str().to_string();
+ let leaves = matches.map(|m| m.as_str().to_string()).collect();
+ let weight = weight_re.find(line).unwrap().as_str().parse().unwrap();
+ (base, leaves, weight)
+ }).collect();
+
+ let mut possible_roots: Vec<String> = tree.iter().map(|&(ref id, _, _)| id.clone()).collect();
+ for &(_, ref leaves, _) in &tree {
+ for leaf in leaves {
+ let index = possible_roots.iter().position(|x| x == leaf).unwrap();
+ possible_roots.remove(index);
+ }
+ }
+ let root = &possible_roots[0];
+
+ if args.part == 1 {
+ println!("{:?}", root);
+ } else {
+ find_unweighted_plate(&root, &tree);
+ }
+}
+
+fn find_unweighted_plate(root: &String, tree: &Vec<(String, Vec<String>, i32)>) -> i32 {
+ let root_node = find_node(&root, &tree);
+ let &(_, ref leaves, ref weight) = root_node;
+ let leaf_weights: Vec<i32> = leaves.iter().map(|leaf| {
+ find_unweighted_plate(&leaf, &tree)
+ }).collect();
+
+ if let Some(base_leaf_weight) = leaf_weights.first() {
+ if let Some(different_leaf_weight) = leaf_weights.iter().find(|&w| w != base_leaf_weight) {
+ println!("Unbalanced plate is off by {}", (different_leaf_weight-base_leaf_weight).abs());
+ println!("Towers on plate: {:?} weigh {:?}", leaves, leaf_weights);
+ // This still needs some manual work to get to the puzzle
+ // output. Take the first unbalanced plate, figure out
+ // which is the unbalanced tower visually, find its
+ // individual weight in the file, and add/subtract as
+ // necessary.
+ }
+ }
+
+ leaf_weights.iter().sum::<i32>() + weight
+}
+
+fn find_node<'a>(name: &String, tree: &'a Vec<(String, Vec<String>, i32)>) -> &'a (String, Vec<String>, i32) {
+ tree.iter().find(|&&(ref id, _, _)| id == name).unwrap()
+}
diff --git a/2017/src/bin/day_8.rs b/2017/src/bin/day_8.rs
new file mode 100644
index 0000000..0359747
--- /dev/null
+++ b/2017/src/bin/day_8.rs
@@ -0,0 +1,99 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+extern crate regex;
+use regex::Regex;
+
+#[macro_use]
+extern crate lazy_static;
+
+use std::str::FromStr;
+use std::collections::HashMap;
+use std::cmp;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let instructions: Vec<Instruction> = args.input.iter()
+ .map(|line| line.parse().unwrap())
+ .collect();
+
+ let mut memory: HashMap<String, i32> = HashMap::new();
+ let mut max_mem_ever = 0;
+
+ for instruction in instructions {
+ if instruction.is_true(&memory) {
+ instruction.execute(&mut memory);
+ max_mem_ever = cmp::max(max_mem_ever, memory.values().max().cloned().unwrap_or(0));
+ }
+ }
+
+ let max_mem = memory.values().max().cloned().unwrap_or(0);
+
+ if args.part == 1 {
+ println!("Highest value in memory is {}", max_mem);
+ } else {
+ println!("Highest value in memory ever is {}", max_mem_ever);
+ }
+}
+
+
+struct Instruction {
+ target_register: String,
+ action: String,
+ value: i32,
+ condition_register: String,
+ condition: String,
+ condition_value: i32
+}
+
+#[derive(Debug)]
+struct InstructionParseError {
+ reason: String
+}
+
+impl FromStr for Instruction {
+ type Err = InstructionParseError;
+ fn from_str(s: &str) -> Result<Self, InstructionParseError> {
+ lazy_static!{
+ static ref INSTRUCTION_RE: Regex = Regex::new(r"^(\w+) (inc|dec) (-?\d+) if (\w+) (<|>|<=|>=|==|!=) (-?\d+)").unwrap();
+ }
+ match INSTRUCTION_RE.captures(s) {
+ Some(caps) => Ok(Instruction{
+ target_register: caps[1].to_string(),
+ action: caps[2].to_string(),
+ value: caps[3].parse().unwrap(),
+ condition_register: caps[4].to_string(),
+ condition: caps[5].to_string(),
+ condition_value: caps[6].parse().unwrap()
+ }),
+ None => Err(InstructionParseError {
+ reason: format!("{} did not match regex", s)
+ })
+ }
+ }
+}
+
+impl Instruction {
+ fn is_true(&self, memory: &HashMap<String, i32>) -> bool {
+ let mem = memory.get(&self.condition_register).cloned().unwrap_or(0);
+ match self.condition.as_ref() {
+ "<" => mem < self.condition_value,
+ ">" => mem > self.condition_value,
+ "<=" => mem <= self.condition_value,
+ ">=" => mem >= self.condition_value,
+ "==" => mem == self.condition_value,
+ "!=" => mem != self.condition_value,
+ _ => panic!("Unknown condition: {}", self.condition)
+ }
+ }
+
+ fn execute(&self, memory: &mut HashMap<String, i32>) {
+ let modifier = if self.action == "inc" {
+ self.value
+ } else {
+ -self.value
+ };
+ *memory.entry(self.target_register.clone()).or_insert(0) += modifier;
+ }
+}
diff --git a/2017/src/bin/day_9.rs b/2017/src/bin/day_9.rs
new file mode 100644
index 0000000..e0ca0c0
--- /dev/null
+++ b/2017/src/bin/day_9.rs
@@ -0,0 +1,42 @@
+extern crate advent_of_code_2017;
+use advent_of_code_2017::*;
+
+fn main() {
+ let args = AdventArgs::init();
+
+ let mut cancelled = false;
+ let mut in_garbage = false;
+
+ let mut depth = 0;
+ let mut total_score = 0;
+ let mut total_garbage = 0;
+
+ for c in args.input[0].chars() {
+ if cancelled {
+ cancelled = false;
+ } else if c == '!' {
+ cancelled = true;
+ } else if in_garbage {
+ if c == '>' {
+ in_garbage = false;
+ } else {
+ total_garbage += 1;
+ }
+ } else {
+ if c == '<' {
+ in_garbage = true;
+ } else if c == '{' {
+ depth += 1;
+ total_score += depth;
+ } else if c == '}' {
+ depth -= 1;
+ }
+ }
+ }
+
+ if args.part == 1 {
+ println!("Total score is {}", total_score);
+ } else {
+ println!("Total garbage is {}", total_garbage);
+ }
+}
diff --git a/2017/src/lib.rs b/2017/src/lib.rs
new file mode 100644
index 0000000..53d7d20
--- /dev/null
+++ b/2017/src/lib.rs
@@ -0,0 +1,225 @@
+extern crate structopt;
+#[macro_use]
+extern crate structopt_derive;
+use structopt::StructOpt;
+
+use std::path::PathBuf;
+use std::io::BufReader;
+use std::io::prelude::*;
+use std::fs::File;
+use std::process;
+
+#[derive(StructOpt, Debug)]
+#[structopt(name = "AOC2017", about = "An Advent of Code CLI arguments object.")]
+struct AdventCli {
+ #[structopt(help = "Which part of the puzzle you are solving")]
+ part: u32,
+
+ #[structopt(help = "Input file", parse(from_os_str))]
+ input: PathBuf
+}
+
+pub struct AdventArgs {
+ pub part: u32,
+ pub input: Vec<String>
+}
+
+impl AdventArgs {
+ pub fn init() -> AdventArgs {
+ let opt = AdventCli::from_args();
+ let input = match AdventArgs::read_file(&opt.input) {
+ Ok(input) => input,
+ Err(error) => {
+ // Typically I would think of exiting the program like
+ // this to be bad form, but in this case I'm matching the
+ // interface of StructOpt: if the input parameters were
+ // invalid, just quit now with a nice message.
+ eprintln!("Error reading file: {}", error);
+ process::exit(1);
+ }
+ };
+ AdventArgs {
+ part: opt.part,
+ input: input
+ }
+ }
+
+ fn read_file(file: &PathBuf) -> Result<Vec<String>, std::io::Error> {
+ let file = File::open(file)?;
+ let file_reader = BufReader::new(file);
+ file_reader.lines()
+ .collect::<Result<Vec<_>, _>>()
+ .map(AdventArgs::preprocess_file_lines)
+ }
+
+ fn preprocess_file_lines(lines: Vec<String>) -> Vec<String> {
+ lines.iter()
+ .filter(|line| line.len() > 0)
+ .map(|line| line.trim_right().to_string())
+ .collect()
+ }
+
+ pub fn one_number_input(&self) -> Result<i32, std::num::ParseIntError> {
+ self.input[0].parse()
+ }
+ pub fn number_per_line_input(&self) -> Result<Vec<i32>, std::num::ParseIntError> {
+ self.input.iter().map(|line| line.parse()).collect()
+ }
+}
+
+pub fn parse_space_separated_ints(line: &String) -> Result<Vec<i32>, std::num::ParseIntError> {
+ line.split_whitespace()
+ .map(|x| x.parse::<i32>())
+ .collect()
+}
+
+
+#[derive(Hash, Eq, PartialEq, Debug, Clone, Copy)]
+pub struct Point {
+ pub x: i32,
+ pub y: i32
+}
+
+impl Point {
+ pub fn up(&self) -> Point {
+ Point {
+ y: self.y-1,
+ ..*self
+ }
+ }
+
+ pub fn down(&self) -> Point {
+ Point {
+ y: self.y+1,
+ ..*self
+ }
+ }
+
+ pub fn left(&self) -> Point {
+ Point {
+ x: self.x-1,
+ ..*self
+ }
+ }
+
+ pub fn right(&self) -> Point {
+ Point {
+ x: self.x+1,
+ ..*self
+ }
+ }
+
+ pub fn shift(&self, dir: &Direction) -> Point {
+ use Direction::*;
+
+ match *dir {
+ Right => self.right(),
+ Left => self.left(),
+ Up => self.up(),
+ Down => self.down()
+ }
+ }
+}
+
+#[derive(Debug)]
+pub enum Direction {
+ Left,
+ Up,
+ Down,
+ Right
+}
+
+impl Direction {
+ pub fn rotate_left(&self) -> Direction {
+ use Direction::*;
+ match *self {
+ Right => Up,
+ Up => Left,
+ Left => Down,
+ Down => Right
+ }
+ }
+
+ pub fn rotate_right(&self) -> Direction {
+ use Direction::*;
+ match *self {
+ Right => Down,
+ Up => Right,
+ Left => Up,
+ Down => Left
+ }
+ }
+}
+
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+pub struct Point3d {
+ pub x: i32,
+ pub y: i32,
+ pub z: i32
+}
+
+impl std::ops::Add for Point3d {
+ type Output = Point3d;
+
+ fn add(self, other: Point3d) -> Point3d {
+ Point3d {
+ x: self.x + other.x,
+ y: self.y + other.y,
+ z: self.z + other.z
+ }
+ }
+
+}
+
+impl Point3d {
+ pub fn manhattan_distance(&self) -> i32 {
+ self.x.abs() + self.y.abs() + self.z.abs()
+ }
+}
+
+pub fn knot_hash(input: &String) -> String {
+ let suffix: [usize; 5] = [17, 31, 73, 47, 23];
+ let lengths: Vec<usize> = input.as_bytes()
+ .iter().map(|&x| x as usize)
+ .chain(suffix.iter().cloned())
+ .collect();
+
+ let mut position = 0;
+ let mut list: Vec<u32> = (0..256).collect();
+
+ for i in 0..64 {
+ let skip = lengths.len() * i;
+ knot_hash_round(&mut list, &lengths, &mut position, skip);
+ }
+
+ let mut current_char = 0;
+ let mut result = String::new();
+ for (i, l) in list.iter().enumerate() {
+ current_char = current_char ^ l;
+ if i % 16 == 15 {
+ result.push_str(&format!("{:02x}", current_char));
+ current_char = 0;
+ }
+ }
+ result
+}
+
+fn knot_hash_round(list: &mut Vec<u32>, lengths: &Vec<usize>, position: &mut usize, skip: usize) {
+ for (inner_skip, &length) in lengths.iter().enumerate() {
+ knot_hash_reverse_segment(list, *position, length);
+ *position = (*position + length + skip + inner_skip) % list.len();
+ }
+}
+
+fn knot_hash_reverse_segment(list: &mut Vec<u32>, position: usize, length: usize) {
+ let mut a = position;
+ let mut b = position + length - 1;
+ let len = list.len();
+ while a < b {
+ list.swap(a%len, b%len);
+
+ a += 1;
+ b -= 1;
+ }
+}
+