diff --git a/Cargo.toml b/Cargo.toml index 8a2286f..d948d6b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,16 +1,7 @@ [workspace] members = ["day_*"] -resolver = "2" [profile.release] lto = true panic = "abort" opt-level = 3 - -[workspace.lints.clippy] -correctness = "deny" -suspicious = "deny" -complexity = "deny" -perf = "deny" -style = "deny" -pedantic = "deny" diff --git a/README.md b/README.md index fb9dcce..c7a425a 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ -# Advent of Code 2024 +# Advent of Code 2021 ## Progress: -- [Day 1](https://github.com/ankjevel/adventofcode/tree/2024/day_01) ⭐️ ⭐️ -- [Day 2](https://github.com/ankjevel/adventofcode/tree/2024/day_02) ⭐️ ⭐️ -- [Day 3](https://github.com/ankjevel/adventofcode/tree/2024/day_03) ⭐️ ⭐️ -- [Day 4](https://github.com/ankjevel/adventofcode/tree/2024/day_04) ⭐️ ⭐️ -- [Day 5](https://github.com/ankjevel/adventofcode/tree/2024/day_05) ⭐️ ⭐️ -- [Day 6](https://github.com/ankjevel/adventofcode/tree/2024/day_06) ⭐️ ⭐️ -- [Day 7](https://github.com/ankjevel/adventofcode/tree/2024/day_07) ⭐️ ⭐️ +- [Day 1](https://github.com/ankjevel/adventofcode/tree/2021/day_01) 🌟 🌟 +- [Day 2](https://github.com/ankjevel/adventofcode/tree/2021/day_02) 🌟 🌟 +- [Day 3](https://github.com/ankjevel/adventofcode/tree/2021/day_03) 🌟 🌟 +- [Day 4](https://github.com/ankjevel/adventofcode/tree/2021/day_04) 🌟 🌟 +- [Day 5](#) +- [Day 6](#) +- [Day 7](#) - [Day 8](#) - [Day 9](#) - [Day 10](#) diff --git a/day_01/Cargo.toml b/day_01/Cargo.toml index e628253..51a47b4 100644 --- a/day_01/Cargo.toml +++ b/day_01/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "day_01" version = "0.1.0" -edition = "2021" -authors = ["Dennis Pettersson "] +edition = "2018" +authors = ["Dennis Pettersson "] [lib] doctest = false diff --git a/day_01/src/lib.rs b/day_01/src/lib.rs index ee71f73..bdc838a 100644 --- a/day_01/src/lib.rs +++ b/day_01/src/lib.rs @@ -1,44 +1,29 @@ pub mod part_01; pub mod part_02; -pub type Number = i128; -pub type Input = (Vec, Vec); +pub type Input = Vec; pub fn parse_input(input: &str) -> Input { - input.trim_start().trim_end().lines().map(str::trim).fold( - (vec![], vec![]), - |mut values, line| { - let distances: Vec<_> = line - .split_whitespace() - .map(|string| string.parse().unwrap()) - .collect(); - - values.0.push(distances[0]); - values.1.push(distances[1]); - - values - }, - ) + input + .lines() + .map(str::trim) + .filter(|string| !string.is_empty()) + .map(|src| u32::from_str_radix(src, 10).unwrap_or(0)) + .collect() } #[cfg(test)] mod tests { use super::*; - const EXAMPLE_DATA: &str = " - 3 4 - 4 3 - 2 5 - 1 3 - 3 9 - 3 3 + const EXAMPLE_DATA: &'static str = " + 199 + 200 + 208 "; #[test] fn it_parses_example() { - assert_eq!( - parse_input(EXAMPLE_DATA), - (vec![3, 4, 2, 1, 3, 3], vec![4, 3, 5, 3, 9, 3],) - ); + assert_eq!(parse_input(&EXAMPLE_DATA), vec![199, 200, 208]); } } diff --git a/day_01/src/part_01.rs b/day_01/src/part_01.rs index 10f177a..f6b25a3 100644 --- a/day_01/src/part_01.rs +++ b/day_01/src/part_01.rs @@ -1,16 +1,22 @@ use std::io::Result; -use crate::{Input, Number}; - -pub fn main(input: &Input) -> Result { - let (mut left, mut right) = input.clone(); - - left.sort(); - right.sort(); - - Ok(left.iter().enumerate().fold(0, |sum, (index, left_value)| { - sum + (left_value - right.get(index).unwrap()).abs() - })) +use crate::Input; + +pub fn main(input: &Input) -> Result { + let mut last = None; + let mut measurement_increases = 0; + for value in input { + match last { + Some(pre_value) => { + if &pre_value < value { + measurement_increases += 1; + } + } + _ => {} + } + last = Some(value.to_owned()); + } + Ok(measurement_increases) } #[cfg(test)] @@ -19,18 +25,22 @@ mod tests { use super::*; - const EXAMPLE_DATA: &str = " - 3 4 - 4 3 - 2 5 - 1 3 - 3 9 - 3 3 + const EXAMPLE_DATA: &'static str = " + 199 + 200 + 208 + 210 + 200 + 207 + 240 + 269 + 260 + 263 "; #[test] fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 11); + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 7); Ok(()) } } diff --git a/day_01/src/part_02.rs b/day_01/src/part_02.rs index 35a6ae3..73f3419 100644 --- a/day_01/src/part_02.rs +++ b/day_01/src/part_02.rs @@ -1,16 +1,28 @@ use std::io::Result; -use crate::{Input, Number}; +use crate::Input; -pub fn main((left, right): &Input) -> Result { - Ok(left.iter().fold(0, |sum, left_value| { - let occurrences = right - .iter() - .filter(|right_value| right_value == &left_value) - .count() as Number; - let similarity_score = left_value * occurrences; - sum + similarity_score - })) +pub fn main(input: &Input) -> Result { + let mut last = None; + let mut measurement_increases = 0; + for value in input.windows(3) { + let window = value + .into_iter() + .map(u32::to_owned) + .reduce(|a, b| a + b) + .unwrap_or(0); + + match last { + Some(pre_value) => { + if pre_value < window { + measurement_increases += 1; + } + } + _ => {} + } + last = Some(window.to_owned()); + } + Ok(measurement_increases) } #[cfg(test)] @@ -19,18 +31,22 @@ mod tests { use super::*; - const EXAMPLE_DATA: &str = " - 3 4 - 4 3 - 2 5 - 1 3 - 3 9 - 3 3 + const EXAMPLE_DATA: &'static str = " + 199 + 200 + 208 + 210 + 200 + 207 + 240 + 269 + 260 + 263 "; #[test] fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 31); + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 5); Ok(()) } } diff --git a/day_02/Cargo.toml b/day_02/Cargo.toml index b9b0001..38e36fb 100644 --- a/day_02/Cargo.toml +++ b/day_02/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "day_02" version = "0.1.0" -edition = "2021" +edition = "2018" authors = ["Dennis Pettersson "] [lib] diff --git a/day_02/src/lib.rs b/day_02/src/lib.rs index a3437e1..98e19bf 100644 --- a/day_02/src/lib.rs +++ b/day_02/src/lib.rs @@ -1,9 +1,14 @@ pub mod part_01; pub mod part_02; -type Number = i32; +#[derive(Debug, Hash, Eq, PartialEq, Clone, Copy)] +pub enum Command { + Up(i32), + Down(i32), + Forward(i32), +} -pub type Input = Vec>; +pub type Input = Vec; pub fn parse_input(input: &str) -> Input { input @@ -11,102 +16,34 @@ pub fn parse_input(input: &str) -> Input { .map(str::trim) .filter(|string| !string.is_empty()) .map(str::to_owned) - .map(|line| { - line.split_whitespace() - .map(|string| string.parse().unwrap()) - .collect() + .map(|string| { + let split = string.split_whitespace().collect::>(); + let units = i32::from_str_radix(split[1], 10).unwrap_or(0); + match split[0] { + "forward" => Command::Forward(units), + "down" => Command::Down(units), + "up" => Command::Up(units), + _ => panic!("unknown command"), + } }) .collect() } -pub fn is_safe(row: &&Vec) -> bool { - let mut index = 1; - while index < row.len() - 1 { - if check_if_safe(row, index) { - index += 1; - continue; - } - return false; - } - true -} - -fn check_if_safe(row: &[Number], index: usize) -> bool { - let current = row.get(index).unwrap(); - if let Some(left) = row.get(index - 1) { - if let Some(right) = row.get(index + 1) { - let change_right = current - right; - let change_left = left - current; - - if is_unsafe_value(change_left) || is_unsafe_value(change_right) { - return false; - } - - if is_unsafe_change(change_left, change_right) { - return false; - } - } - } - true -} - -fn is_unsafe_value(change: Number) -> bool { - change == 0 || change.abs() > 3 -} - -fn is_unsafe_change(left: Number, right: Number) -> bool { - let increase_left = left > 0; - let increase_right = right > 0; - - increase_left != increase_right -} - #[cfg(test)] mod tests { use super::*; - const EXAMPLE_DATA: &str = " - 94 94 95 93 95 94 - 4 4 6 3 8 + const EXAMPLE_DATA: &'static str = " + forward 5 + down 5 + up 2 "; #[test] fn it_parses_example() { assert_eq!( - parse_input(EXAMPLE_DATA), - vec![vec![94, 94, 95, 93, 95, 94], vec![4, 4, 6, 3, 8]] - ); - } - - #[test] - fn it_handles_increased_changes() { - assert!( - !check_if_safe(&[2, 7, 8], 1,), - "Unsafe because 2 7 is an increase of 5" - ); - } - - #[test] - fn it_handles_decreased_changes() { - assert!( - !check_if_safe(&[7, 6, 2], 1,), - "Unsafe because 6 2 is a decrease of 4" - ); - } - - #[test] - fn it_handles_left_inc_and_right_dec() { - assert!( - !check_if_safe(&[7, 6, 2], 1,), - "Unsafe because 1 3 is increasing but 3 2 is decreasing" - ); - } - - #[test] - fn it_handles_no_change() { - assert!( - !check_if_safe(&[6, 4, 4], 1,), - "Unsafe because 4 4 is neither an increase or a decrease" + parse_input(&EXAMPLE_DATA), + vec![Command::Forward(5), Command::Down(5), Command::Up(2)] ); } } diff --git a/day_02/src/part_01.rs b/day_02/src/part_01.rs index 83a4363..6ebcd05 100644 --- a/day_02/src/part_01.rs +++ b/day_02/src/part_01.rs @@ -1,9 +1,17 @@ use std::io::Result; -use crate::{is_safe, Input}; +use crate::{Command::*, Input}; -pub fn main(input: &Input) -> Result { - Ok(input.iter().filter(is_safe).collect::>().len()) +pub fn main(input: &Input) -> Result { + let (mut horizontal_position, mut depth) = (0, 0); + for command in input { + match command { + Forward(units) => horizontal_position += units, + Up(units) => depth -= units, + Down(units) => depth += units, + } + } + Ok(horizontal_position * depth) } #[cfg(test)] @@ -12,18 +20,18 @@ mod tests { use super::*; - const EXAMPLE_DATA: &str = " - 7 6 4 2 1 - 1 2 7 8 9 - 9 7 6 2 1 - 1 3 2 4 5 - 8 6 4 4 1 - 1 3 6 7 9 + const EXAMPLE_DATA: &'static str = " + forward 5 + down 5 + forward 8 + up 3 + down 8 + forward 2 "; #[test] fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 2); + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 150); Ok(()) } } diff --git a/day_02/src/part_02.rs b/day_02/src/part_02.rs index b3fa8e1..69a6692 100644 --- a/day_02/src/part_02.rs +++ b/day_02/src/part_02.rs @@ -1,22 +1,22 @@ use std::io::Result; -use crate::{is_safe, Input}; +use crate::{Command::*, Input}; -pub fn main(input: &Input) -> Result { - Ok(input - .iter() - .filter(|row| { - for i in 0..row.len() { - let mut copy = row.to_owned().to_owned(); - copy.remove(i); - if is_safe(&©) { - return true; +pub fn main(input: &Input) -> Result { + let (mut horizontal_position, mut depth, mut aim) = (0, 0, 0); + for command in input { + match command { + Forward(units) => { + horizontal_position += units; + if aim != 0 { + depth += aim * units; } } - false - }) - .collect::>() - .len()) + Up(units) => aim -= units, + Down(units) => aim += units, + } + } + Ok(horizontal_position * depth) } #[cfg(test)] @@ -25,19 +25,18 @@ mod tests { use super::*; - const EXAMPLE_DATA: &str = " - 7 6 4 2 1 - 1 2 7 8 9 - 9 7 6 2 1 - 1 3 2 4 5 - 8 6 4 4 1 - 1 3 6 7 9 + const EXAMPLE_DATA: &'static str = " + forward 5 + down 5 + forward 8 + up 3 + down 8 + forward 2 "; #[test] fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 4); - assert_eq!(main(&parse_input("86 87 90 92 91 94"))?, 1); + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 900); Ok(()) } } diff --git a/day_03/Cargo.toml b/day_03/Cargo.toml index 480fee2..40d792e 100644 --- a/day_03/Cargo.toml +++ b/day_03/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "day_03" version = "0.1.0" -edition = "2021" +edition = "2018" authors = ["Dennis Pettersson "] [lib] @@ -13,5 +13,3 @@ name = "day_03" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -regex = "1.11.1" -lazy_static = "1.5.0" diff --git a/day_03/src/lib.rs b/day_03/src/lib.rs index cbf1344..34c38f1 100644 --- a/day_03/src/lib.rs +++ b/day_03/src/lib.rs @@ -1,50 +1,7 @@ -#[macro_use(lazy_static)] -extern crate lazy_static; -extern crate regex; - pub mod part_01; pub mod part_02; -use regex::Regex; - -lazy_static! { - static ref ROW: Regex = - Regex::new(r"(?do\(\))|(?don't\(\))|mul\((?\d{1,3}),(?\d{1,3})\)") - .unwrap(); -} - -pub type Number = u64; -pub type Input = Vec; - -#[derive(Debug, Clone, Eq, PartialEq)] -pub struct Instruction { - mul: Option<(Number, Number)>, - skip: Option, -} - -impl Instruction { - pub fn mul(left: Number, right: Number) -> Self { - Self { - mul: Some((left, right)), - skip: None, - } - } - - pub fn skip(skip: bool) -> Self { - Self { - mul: None, - skip: Some(skip), - } - } - - pub fn sum(&self) -> Number { - if let Some((left, right)) = self.mul { - left * right - } else { - 0 - } - } -} +pub type Input = Vec; pub fn parse_input(input: &str) -> Input { input @@ -52,53 +9,20 @@ pub fn parse_input(input: &str) -> Input { .map(str::trim) .filter(|string| !string.is_empty()) .map(str::to_owned) - .fold(vec![], |mut all, line| { - all.extend( - ROW.captures_iter(&line) - .map(|matched| { - if let Some(left) = matched.name("left") { - Instruction::mul( - left.as_str().parse().unwrap(), - matched.name("right").unwrap().as_str().parse().unwrap(), - ) - } else { - Instruction::skip(matched.name("dont").is_some()) - } - }) - .collect::>(), - ); - - all - }) + .collect() } #[cfg(test)] mod tests { use super::*; + const EXAMPLE_DATA: &'static str = " + 00100 + 11110 + "; + #[test] fn it_parses_example() { - assert_eq!( - parse_input("xmul(2,4)%&mul[3,7]!@^do_not_mul(5,5)+mul(32,64]then(mul(11,8)mul(8,5))"), - vec![ - Instruction::mul(2, 4), - Instruction::mul(5, 5), - Instruction::mul(11, 8), - Instruction::mul(8, 5) - ] - ); - assert_eq!( - parse_input( - "xmul(2,4)&mul[3,7]!^don't()_mul(5,5)+mul(32,64](mul(11,8)undo()?mul(8,5))" - ), - vec![ - Instruction::mul(2, 4), - Instruction::skip(true), - Instruction::mul(5, 5), - Instruction::mul(11, 8), - Instruction::skip(false), - Instruction::mul(8, 5) - ] - ) + assert_eq!(parse_input(&EXAMPLE_DATA), vec!["00100", "11110"]); } } diff --git a/day_03/src/part_01.rs b/day_03/src/part_01.rs index e6a026a..afb09b2 100644 --- a/day_03/src/part_01.rs +++ b/day_03/src/part_01.rs @@ -1,9 +1,49 @@ use std::io::Result; -use crate::{Input, Instruction, Number}; +use crate::Input; -pub fn main(input: &Input) -> Result { - Ok(input.iter().map(Instruction::sum).sum()) +pub fn main(input: &Input) -> Result { + let bits = (0..input.first().unwrap().len()) + .into_iter() + .map(|n| { + input + .into_iter() + .map(|v| v.chars().collect::>()[n].to_owned()) + .collect::>() + }) + .map(|v| { + let mut result = vec![(0u8, 0u32), (1u8, 0u32)]; + v.iter().for_each(|n| match n { + '1' => result[1].1 += 1, + _ => result[0].1 += 1, + }); + result + }) + .collect::>>(); + + let gamma = bits + .clone() + .iter() + .map( + |vec| match vec.iter().max_by_key(|n| n.1.to_owned()).unwrap().0 { + 1 => '1', + _ => '0', + }, + ) + .collect::(); + + let epsilon = bits + .clone() + .iter() + .map( + |vec| match vec.iter().min_by_key(|n| n.1.to_owned()).unwrap().0 { + 1 => '1', + _ => '0', + }, + ) + .collect::(); + + Ok(u32::from_str_radix(&gamma, 2).unwrap() * u32::from_str_radix(&epsilon, 2).unwrap()) } #[cfg(test)] @@ -12,13 +52,24 @@ mod tests { use super::*; - const EXAMPLE_DATA: &str = " - xmul(2,4)%&mul[3,7]!@^do_not_mul(5,5)+mul(32,64]then(mul(11,8)mul(8,5)) + const EXAMPLE_DATA: &'static str = " + 00100 + 11110 + 10110 + 10111 + 10101 + 01111 + 00111 + 11100 + 10000 + 11001 + 00010 + 01010 "; #[test] fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 161); + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 198); Ok(()) } } diff --git a/day_03/src/part_02.rs b/day_03/src/part_02.rs index d422c4f..7b4e9ce 100644 --- a/day_03/src/part_02.rs +++ b/day_03/src/part_02.rs @@ -1,27 +1,61 @@ use std::io::Result; -use crate::{Input, Instruction, Number}; - -pub fn main(input: &Input) -> Result { - let mut should_skip = false; - Ok(input - .iter() - .filter(|row| { - if should_skip { - if row.skip.is_none() || row.skip.unwrap() { - should_skip = true; - return false; +use crate::Input; + +pub fn main(input: &Input) -> Result { + let process = |cmp: fn((Vec, Vec)) -> Vec| -> String { + let mut res = "".to_owned(); + let line_len = input.first().unwrap().len(); + let mut lines = input.clone(); + let mut sum: (Vec, Vec) = (vec![], vec![]); + for bit_n in 0..line_len { + lines.clone().iter().enumerate().for_each(|(i, row)| { + match row.chars().collect::>()[bit_n] { + '1' => sum.1.push(i), + _ => sum.0.push(i), } - should_skip = false; - } else if row.skip.is_some() { - should_skip = row.skip.unwrap(); - return false; + }); + + let entries = cmp(sum); + + if entries.len() == 1 { + res = lines[entries[0]].to_owned(); + break; } - row.mul.is_some() - }) - .map(Instruction::sum) - .sum()) + lines = lines + .clone() + .iter() + .enumerate() + .filter(|(i, _n)| entries.contains(&i)) + .map(|(_i, line)| line.to_owned()) + .collect::>(); + + sum = (vec![], vec![]); + } + res + }; + + let oxygen_generator_rating = process(|sum| { + let (sum_0, sum_1) = (sum.0.len(), sum.1.len()); + if sum_1 == sum_0 || sum_1 > sum_0 { + sum.1.to_owned() + } else { + sum.0.to_owned() + } + }); + + let co2_scrubber_rating = process(|sum| { + let (sum_0, sum_1) = (sum.0.len(), sum.1.len()); + if sum_1 == sum_0 || sum_1 > sum_0 { + sum.0.to_owned() + } else { + sum.1.to_owned() + } + }); + + Ok(u32::from_str_radix(&oxygen_generator_rating, 2).unwrap() + * u32::from_str_radix(&co2_scrubber_rating, 2).unwrap()) } #[cfg(test)] @@ -30,13 +64,24 @@ mod tests { use super::*; - const EXAMPLE_DATA: &str = " - xmul(2,4)&mul[3,7]!^don't()_mul(5,5)+mul(32,64](mul(11,8)undo()?mul(8,5)) + const EXAMPLE_DATA: &'static str = " + 00100 + 11110 + 10110 + 10111 + 10101 + 01111 + 00111 + 11100 + 10000 + 11001 + 00010 + 01010 "; #[test] fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 48); + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 230); Ok(()) } } diff --git a/day_04/Cargo.toml b/day_04/Cargo.toml index 2666cfa..7dd489f 100644 --- a/day_04/Cargo.toml +++ b/day_04/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "day_04" version = "0.1.0" -edition = "2021" +edition = "2018" authors = ["Dennis Pettersson "] [lib] diff --git a/day_04/src/board.rs b/day_04/src/board.rs new file mode 100644 index 0000000..faa53c5 --- /dev/null +++ b/day_04/src/board.rs @@ -0,0 +1,75 @@ +use std::collections::HashMap; + +#[derive(Debug, Eq, PartialEq, Clone, Copy)] +pub struct N { + pub pos: (usize, usize), + pub marked: bool, +} + +#[derive(Debug, Eq, PartialEq, Clone)] +pub struct Board { + pub values: HashMap, + pub completed: bool, +} + +impl Board { + pub fn new(input: &Vec>) -> Self { + let mut values = HashMap::new(); + + for (i, n) in input.into_iter().enumerate() { + for (j, nn) in n.into_iter().enumerate() { + values.insert( + nn.to_owned(), + N { + pos: (i, j), + marked: false, + }, + ); + } + } + Self { + values, + completed: false, + } + } + + pub fn new_draw(&mut self, n: &u32) { + if self.values.contains_key(&n) { + self.values.get_mut(n).unwrap().marked = true; + } + } + + pub fn get_unmarked(&self) -> u32 { + let mut sum = 0u32; + for b in self.values.iter() { + if !b.1.marked { + sum += b.0; + } + } + sum + } + + pub fn completed_row_or_column(&mut self) -> bool { + if self.completed { + return false; + } + + let mut completed_row = vec![0, 0, 0, 0, 0]; + let mut completed_column = vec![0, 0, 0, 0, 0]; + for n in self.values.values_mut() { + if !n.marked { + continue; + } + + let (row, col) = n.pos; + completed_row[row] += 1; + completed_column[col] += 1; + if completed_row[row] == 5 || completed_column[col] == 5 { + self.completed = true; + return true; + } + } + + false + } +} diff --git a/day_04/src/lib.rs b/day_04/src/lib.rs index 390c049..5d3f855 100644 --- a/day_04/src/lib.rs +++ b/day_04/src/lib.rs @@ -1,50 +1,86 @@ +use std::mem; +pub mod board; pub mod part_01; pub mod part_02; -pub type Input = Vec; +#[derive(Debug, Eq, PartialEq, Clone)] +pub struct Input { + pub numbers: Vec, + pub boards: Vec>>, +} pub fn parse_input(input: &str) -> Input { - input - .lines() - .map(str::trim) - .filter(|string| !string.is_empty()) - .map(str::to_owned) - .collect() + let input = format!("{}\n\n", input); + let mut lines = input.lines().map(str::trim).map(str::to_owned).into_iter(); + let mut numbers: Vec<_> = vec![]; + + loop { + let curr = lines.next(); + let unwrap = curr.expect("no value exists"); + + if unwrap.is_empty() { + continue; + } + + let _old = mem::replace( + &mut numbers, + unwrap + .split(&",") + .map(|c| u32::from_str_radix(c, 10).unwrap()) + .collect::>(), + ); + + break; + } + + let mut boards = vec![]; + let mut board = vec![]; + lines.for_each(|v| { + if v.trim().is_empty() { + if !board.is_empty() { + boards.push(board.to_owned()); + board.clear(); + } + return; + } + + board.push( + v.split_whitespace() + .map(|c| u32::from_str_radix(c, 10).unwrap()) + .collect::>(), + ); + }); + + Input { numbers, boards } } #[cfg(test)] mod tests { use super::*; - const EXAMPLE_DATA: &str = " - MMMSXXMASM - MSAMXMSMSA - AMXSXMAAMM - MSAMASMSMX - XMASAMXAMM - XXAMMXXAMA - SMSMSASXSS - SAXAMASAAA - MAMMMXMMMM - MXMXAXMASX - "; + const EXAMPLE_DATA: &'static str = " + 7,4,9,5 + + 22 13 17 11 0 + 8 2 23 4 24 + 21 9 14 16 7 + 6 10 3 18 5 + 1 12 20 15 19"; #[test] fn it_parses_example() { assert_eq!( - parse_input(EXAMPLE_DATA), - vec![ - "MMMSXXMASM", - "MSAMXMSMSA", - "AMXSXMAAMM", - "MSAMASMSMX", - "XMASAMXAMM", - "XXAMMXXAMA", - "SMSMSASXSS", - "SAXAMASAAA", - "MAMMMXMMMM", - "MXMXAXMASX", - ] + parse_input(&EXAMPLE_DATA), + Input { + numbers: vec![7, 4, 9, 5], + boards: vec![vec![ + vec![22, 13, 17, 11, 0], + vec![8, 2, 23, 4, 24], + vec![21, 9, 14, 16, 7], + vec![6, 10, 3, 18, 5], + vec![1, 12, 20, 15, 19], + ]] + } ); } } diff --git a/day_04/src/part_01.rs b/day_04/src/part_01.rs index cf9c476..9242c9a 100644 --- a/day_04/src/part_01.rs +++ b/day_04/src/part_01.rs @@ -1,61 +1,32 @@ -use std::{ - collections::{HashMap, HashSet}, - io::Result, -}; +use std::{io::Result, sync::Mutex}; -use crate::Input; +use crate::{board::Board, Input}; -pub fn main(input: &Input) -> Result { - let mut x_es: Vec<_> = vec![]; +pub fn main(input: &Input) -> Result { + let boards = Mutex::new( + input + .boards + .to_owned() + .into_iter() + .map(|b| Board::new(&b)) + .collect::>(), + ); - let all: HashMap<_, _> = HashMap::from_iter(input.iter().enumerate().flat_map(|(y, row)| { - row.chars() - .enumerate() - .map(|(x, char)| { - let pos = (x as isize, y as isize); + let mut result = 0u32; - if char == 'X' { - x_es.push(pos.to_owned()) - } + 'main: for n in &input.numbers { + let mutable_boards: &mut Vec<_> = &mut *boards.try_lock().unwrap(); + for board in mutable_boards { + board.new_draw(n); - (pos, char) - }) - .collect::>() - })); - - let look = |(x, y): _, v: _, h: _| -> Option<_> { - let m = (x + v, y + h); - let a = (x + (v * 2), y + (h * 2)); - let s = (x + (v * 3), y + (h * 3)); - let x = (x, y); - - if all.get(&m) == Some(&'M') && all.get(&a) == Some(&'A') && all.get(&s) == Some(&'S') { - Some((x, m, a, s)) - } else { - None + if board.completed_row_or_column() { + result = board.get_unmarked() * n; + break 'main; + } } - }; - - let found = x_es - .iter() - .flat_map(|x_y| { - [ - (-1, 0), // left - (1, 0), // right - (0, 1), // down - (0, -1), // up - (-1, 1), // down-left - (1, 1), // down-right - (-1, -1), // up-left - (1, -1), // up-right - ] - .iter() - .filter_map(|(v, h)| look(*x_y, *v, *h)) - .collect::>() - }) - .collect::>(); + } - Ok(found.len()) + Ok(result) } #[cfg(test)] @@ -64,22 +35,31 @@ mod tests { use super::*; - const EXAMPLE_DATA: &str = " - MMMSXXMASM - MSAMXMSMSA - AMXSXMAAMM - MSAMASMSMX - XMASAMXAMM - XXAMMXXAMA - SMSMSASXSS - SAXAMASAAA - MAMMMXMMMM - MXMXAXMASX + const EXAMPLE_DATA: &'static str = " + 7,4,9,5,11,17,23,2,0,14,21,24,10,16,13,6,15,25,12,22,18,20,8,19,3,26,1 + + 22 13 17 11 0 + 8 2 23 4 24 + 21 9 14 16 7 + 6 10 3 18 5 + 1 12 20 15 19 + + 3 15 0 2 22 + 9 18 13 17 5 + 19 8 7 25 23 + 20 11 10 24 4 + 14 21 16 12 6 + + 14 21 17 24 4 + 10 16 15 9 19 + 18 8 23 26 20 + 22 11 13 6 5 + 2 0 12 3 7 "; #[test] fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 18); + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 4512); Ok(()) } } diff --git a/day_04/src/part_02.rs b/day_04/src/part_02.rs index 0f2accf..eb1ad38 100644 --- a/day_04/src/part_02.rs +++ b/day_04/src/part_02.rs @@ -1,75 +1,37 @@ -use std::{collections::HashMap, io::Result}; - -use crate::Input; - -pub fn main(input: &Input) -> Result { - let mut every_a: Vec<_> = vec![]; - - let all: HashMap<_, _> = HashMap::from_iter(input.iter().enumerate().flat_map(|(y, row)| { - row.chars() - .enumerate() - .map(|(x, char)| { - let pos = (x as isize, y as isize); - - if char == 'A' { - every_a.push(pos.to_owned()) +use std::{io::Result, sync::Mutex}; + +use crate::{board::Board, Input}; + +pub fn main(input: &Input) -> Result { + let boards = Mutex::new( + input + .boards + .to_owned() + .into_iter() + .map(|b| Board::new(&b)) + .collect::>(), + ); + + let total_boards = input.boards.len(); + let mut completed = 0usize; + let mut result = 0u32; + + 'main: for n in &input.numbers { + let mutable_boards: &mut Vec<_> = &mut *boards.try_lock().unwrap(); + for board in mutable_boards { + board.new_draw(n); + + if board.completed_row_or_column() { + completed += 1; + if completed == total_boards { + result = board.get_unmarked() * n; + break 'main; } - - (pos, char) - }) - .collect::>() - })); - - let is_ok = - |a: &char, b: &char| -> bool { (*a == 'M' && *b == 'S') || (*a == 'S' && *b == 'M') }; - - let xmas = every_a - .iter() - .filter_map(|(x, y)| { - let top_left = (x - 1, y - 1); - let top_right = (x + 1, y - 1); - let bottom_left = (x - 1, y + 1); - let bottom_right = (x + 1, y + 1); - - if all.contains_key(&top_left) - && all.contains_key(&top_right) - && all.contains_key(&bottom_left) - && all.contains_key(&bottom_right) - { - Some([top_left, top_right, (*x, *y), bottom_left, bottom_right]) - } else { - None } - }) - .filter_map(|positions| { - let [top_left, top_right, a, bottom_left, bottom_right] = - positions.map(|pos| (pos, all.get(&pos).unwrap())); - - let ok = is_ok(top_left.1, bottom_right.1) && is_ok(top_right.1, bottom_left.1); - - if ok { - Some([top_left, top_right, a, bottom_left, bottom_right]) - } else { - None - } - }) - .collect::>(); - - #[cfg(test)] - { - let mut field = vec![vec!['.'; input.first().unwrap().len()]; input.len()]; - for col in &xmas { - for ((x, y), c) in col { - field[*y as usize][*x as usize] = **c; - } - } - - for y in field { - print!("\n{}", y.into_iter().collect::()); } } - Ok(xmas.len()) + Ok(result) } #[cfg(test)] @@ -78,22 +40,31 @@ mod tests { use super::*; - const EXAMPLE_DATA: &str = " - MMMSXXMASM - MSAMXMSMSA - AMXSXMAAMM - MSAMASMSMX - XMASAMXAMM - XXAMMXXAMA - SMSMSASXSS - SAXAMASAAA - MAMMMXMMMM - MXMXAXMASX + const EXAMPLE_DATA: &'static str = " + 7,4,9,5,11,17,23,2,0,14,21,24,10,16,13,6,15,25,12,22,18,20,8,19,3,26,1 + + 22 13 17 11 0 + 8 2 23 4 24 + 21 9 14 16 7 + 6 10 3 18 5 + 1 12 20 15 19 + + 3 15 0 2 22 + 9 18 13 17 5 + 19 8 7 25 23 + 20 11 10 24 4 + 14 21 16 12 6 + + 14 21 17 24 4 + 10 16 15 9 19 + 18 8 23 26 20 + 22 11 13 6 5 + 2 0 12 3 7 "; #[test] fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 9); + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 1924); Ok(()) } } diff --git a/day_05/Cargo.toml b/day_05/Cargo.toml deleted file mode 100644 index 3cf42ef..0000000 --- a/day_05/Cargo.toml +++ /dev/null @@ -1,15 +0,0 @@ -[package] -name = "day_05" -version = "0.1.0" -edition = "2021" -authors = ["Dennis Pettersson "] - -[lib] -doctest = false - -[[bin]] -name = "day_05" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] diff --git a/day_05/src/lib.rs b/day_05/src/lib.rs deleted file mode 100644 index 8e4fceb..0000000 --- a/day_05/src/lib.rs +++ /dev/null @@ -1,62 +0,0 @@ -pub mod part_01; -pub mod part_02; - -pub type Number = u8; -pub type Input = (Vec<(Number, Number)>, Vec>); - -pub fn parse_input(input: &str) -> Input { - let input = input - .trim() - .lines() - .map(str::trim) - .map(str::to_owned) - .collect::>(); - - let (page_ordering, page_numbers) = - input.split_at(input.iter().position(String::is_empty).unwrap()); - - let page_ordering = page_ordering - .iter() - .filter(|line| !line.is_empty()) - .map(|line| { - let split = line - .split("|") - .map(|part| part.parse().unwrap()) - .collect::>(); - (split[0], split[1]) - }) - .collect(); - - let page_numbers = page_numbers - .iter() - .filter(|line| !line.is_empty()) - .map(|line| line.split(",").map(|part| part.parse().unwrap()).collect()) - .collect(); - - (page_ordering, page_numbers) -} - -#[cfg(test)] -mod tests { - use super::*; - - const EXAMPLE_DATA: &str = " - 47|29 - 75|13 - 53|13 - - 75,47,61,53,29 - 53,29,13 - "; - - #[test] - fn it_parses_example() { - assert_eq!( - parse_input(EXAMPLE_DATA), - ( - vec![(47, 29), (75, 13), (53, 13)], - vec![vec![75, 47, 61, 53, 29], vec![53, 29, 13]] - ) - ); - } -} diff --git a/day_05/src/main.rs b/day_05/src/main.rs deleted file mode 100644 index 3e6c10d..0000000 --- a/day_05/src/main.rs +++ /dev/null @@ -1,12 +0,0 @@ -use std::io::Result; - -use day_05::{parse_input, part_01::main as part_01, part_02::main as part_02}; - -fn main() -> Result<()> { - let input = parse_input(include_str!("../../input/day_05")); - - println!("part_01: {:?}", part_01(&input)?); - println!("part_02: {:?}", part_02(&input)?); - - Ok(()) -} diff --git a/day_05/src/part_01.rs b/day_05/src/part_01.rs deleted file mode 100644 index 7633fe2..0000000 --- a/day_05/src/part_01.rs +++ /dev/null @@ -1,50 +0,0 @@ -use std::{cmp::Ordering, io::Result}; - -use crate::Input; - -pub fn main((order, pages): &Input) -> Result { - Ok(pages - .iter() - .filter(|pages| { - let orders = order - .iter() - .filter(|(l, r)| pages.contains(l) && pages.contains(r)) - .collect::>(); - let mut ordered = pages.to_owned().to_owned(); - ordered.sort_by(|a, b| { - if let Some(order) = orders - .iter() - .find(|(l, r)| (l == a && r == b) || (l == b && r == a)) - { - if order.0 == *a { - Ordering::Less - } else { - Ordering::Greater - } - } else { - Ordering::Equal - } - }); - - ordered.eq(*pages) - }) - .fold(0, |sum, pages| { - let middle = (pages.len() as i8 / 2).abs(); - sum + *pages.get(middle as usize).unwrap() as usize - })) -} - -#[cfg(test)] -mod tests { - use crate::parse_input; - - use super::*; - - const EXAMPLE_DATA: &str = include_str!("../../input/day_05_example"); - - #[test] - fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 143); - Ok(()) - } -} diff --git a/day_05/src/part_02.rs b/day_05/src/part_02.rs deleted file mode 100644 index 7182ec7..0000000 --- a/day_05/src/part_02.rs +++ /dev/null @@ -1,54 +0,0 @@ -use std::{cmp::Ordering, io::Result}; - -use crate::Input; - -pub fn main((order, pages): &Input) -> Result { - Ok(pages - .iter() - .filter_map(|pages| { - let orders = order - .iter() - .filter(|(l, r)| pages.contains(l) && pages.contains(r)) - .collect::>(); - let mut ordered = pages.to_owned().to_owned(); - ordered.sort_by(|a, b| { - if let Some(order) = orders - .iter() - .find(|(l, r)| (l == a && r == b) || (l == b && r == a)) - { - if order.0 == *a { - Ordering::Less - } else { - Ordering::Greater - } - } else { - Ordering::Equal - } - }); - - if ordered.eq(pages) { - None - } else { - Some(ordered.to_owned()) - } - }) - .fold(0, |sum, pages| { - let middle = (pages.len() as i8 / 2).abs(); - sum + *pages.get(middle as usize).unwrap() as usize - })) -} - -#[cfg(test)] -mod tests { - use crate::parse_input; - - use super::*; - - const EXAMPLE_DATA: &str = include_str!("../../input/day_05_example"); - - #[test] - fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 123); - Ok(()) - } -} diff --git a/day_06/Cargo.toml b/day_06/Cargo.toml deleted file mode 100644 index a22aa97..0000000 --- a/day_06/Cargo.toml +++ /dev/null @@ -1,15 +0,0 @@ -[package] -name = "day_06" -version = "0.1.0" -edition = "2021" -authors = ["Dennis Pettersson "] - -[lib] -doctest = false - -[[bin]] -name = "day_06" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] diff --git a/day_06/src/lib.rs b/day_06/src/lib.rs deleted file mode 100644 index eb3fff3..0000000 --- a/day_06/src/lib.rs +++ /dev/null @@ -1,76 +0,0 @@ -pub mod part_01; -pub mod part_02; -pub mod square; - -use std::collections::BTreeMap; - -use square::{ - Guard, - Square::{self, Floor, Obstruction}, -}; - -pub type Pos = isize; -pub type Map = BTreeMap<(Pos, Pos), Square>; -pub type Input = (Guard, Map); - -pub fn parse_input(input: &str) -> Input { - let mut current_position = (0, 0); - let map = input - .lines() - .map(str::trim) - .filter(|string| !string.is_empty()) - .map(str::to_owned) - .enumerate() - .flat_map(|(y, string)| { - string - .chars() - .enumerate() - .map(|(x, square)| { - let x_y = (x as Pos, y as Pos); - ( - x_y, - match square { - '#' => Obstruction, - '^' => { - current_position = x_y; - Floor - } - _ => Floor, - }, - ) - }) - .collect::>() - }) - .collect(); - - (Guard::new(current_position), map) -} - -#[cfg(test)] -mod tests { - use square::Guard; - - use super::*; - - const EXAMPLE_DATA: &str = " - .^ - #. - "; - - #[test] - fn it_parses_example() { - let expected: Input = ( - Guard::new((1, 0)), - vec![ - ((0, 0), Floor), - ((1, 0), Floor), - ((0, 1), Obstruction), - ((1, 1), Floor), - ] - .into_iter() - .collect(), - ); - - assert_eq!(parse_input(EXAMPLE_DATA), expected); - } -} diff --git a/day_06/src/main.rs b/day_06/src/main.rs deleted file mode 100644 index 1209313..0000000 --- a/day_06/src/main.rs +++ /dev/null @@ -1,12 +0,0 @@ -use std::io::Result; - -use day_06::{parse_input, part_01::main as part_01, part_02::main as part_02}; - -fn main() -> Result<()> { - let input = parse_input(include_str!("../../input/day_06")); - - println!("part_01: {:?}", part_01(&input)?); - println!("part_02: {:?}", part_02(&input)?); - - Ok(()) -} diff --git a/day_06/src/part_01.rs b/day_06/src/part_01.rs deleted file mode 100644 index 7120c27..0000000 --- a/day_06/src/part_01.rs +++ /dev/null @@ -1,39 +0,0 @@ -use std::{collections::HashSet, io::Result}; - -use crate::{square::Square::Obstruction, Input}; - -pub fn main((guard, map): &Input) -> Result { - let mut guard = guard.to_owned(); - let mut visited = HashSet::from([guard.position]); - - loop { - let next = guard.next(); - if let Some(square) = map.get(&next) { - if square == &Obstruction { - guard.turn(); - } else { - guard.set_position(next); - visited.insert(next); - } - } else { - break; - } - } - - Ok(visited.len()) -} - -#[cfg(test)] -mod tests { - use crate::parse_input; - - use super::*; - - const EXAMPLE_DATA: &str = include_str!("../../input/day_06_example"); - - #[test] - fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 41); - Ok(()) - } -} diff --git a/day_06/src/part_02.rs b/day_06/src/part_02.rs deleted file mode 100644 index aff2846..0000000 --- a/day_06/src/part_02.rs +++ /dev/null @@ -1,62 +0,0 @@ -use std::{collections::HashSet, io::Result, thread}; - -use crate::{ - square::{Guard, Square::*}, - Input, -}; - -pub fn main((guard, map): &Input) -> Result { - let start_position = guard.position; - Ok(map - .iter() - .filter_map(|(pos, square)| { - if pos != &start_position && square == &Floor { - Some(pos.to_owned()) - } else { - None - } - }) - .map(|pos| { - let mut map = map.to_owned(); - let mut guard = Guard::new(start_position); - let mut visited = HashSet::from([guard.current()]); - - map.insert(pos, Obstruction); - - thread::spawn(move || loop { - let next = guard.next(); - if let Some(square) = map.get(&next) { - let key = (next, guard.facing); - if visited.contains(&key) { - return true; - } else if square == &Obstruction { - guard.turn(); - } else { - guard.set_position(next); - visited.insert(key); - } - } else { - return false; - } - }) - }) - .map(|handle| handle.join().unwrap()) - .filter(|loop_encountered| *loop_encountered) - .collect::>() - .len()) -} - -#[cfg(test)] -mod tests { - use crate::parse_input; - - use super::*; - - const EXAMPLE_DATA: &str = include_str!("../../input/day_06_example"); - - #[test] - fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 6); - Ok(()) - } -} diff --git a/day_06/src/square.rs b/day_06/src/square.rs deleted file mode 100644 index ea2b709..0000000 --- a/day_06/src/square.rs +++ /dev/null @@ -1,59 +0,0 @@ -use crate::Pos; - -#[derive(Clone, Copy, Eq, PartialEq, Hash, Debug)] -pub enum Square { - Floor, - Obstruction, -} - -#[derive(Clone, Copy, Eq, PartialEq, Hash, Debug)] -pub enum Facing { - Up, - Right, - Down, - Left, -} - -use Facing::*; - -#[derive(Clone, Copy, Eq, PartialEq, Hash, Debug)] -pub struct Guard { - pub position: (Pos, Pos), - pub facing: Facing, -} - -impl Guard { - pub fn new(position: (Pos, Pos)) -> Self { - Self { - position, - facing: Up, - } - } - - pub fn current(&self) -> ((Pos, Pos), Facing) { - (self.position, self.facing) - } - - pub fn set_position(&mut self, position: (Pos, Pos)) { - self.position = position; - } - - pub fn turn(&mut self) { - self.facing = match self.facing { - Up => Right, - Right => Down, - Down => Left, - Left => Up, - }; - } - - pub fn next(&self) -> (Pos, Pos) { - let (x, y) = self.position; - match self.facing { - Up => (x, y - 1), - Right => (x + 1, y), - Down => (x, y + 1), - Left => (x - 1, y), - } - } -} diff --git a/day_07/Cargo.toml b/day_07/Cargo.toml deleted file mode 100644 index 8dbc02a..0000000 --- a/day_07/Cargo.toml +++ /dev/null @@ -1,15 +0,0 @@ -[package] -name = "day_07" -version = "0.1.0" -edition = "2021" -authors = ["Dennis Pettersson "] - -[lib] -doctest = false - -[[bin]] -name = "day_07" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] diff --git a/day_07/src/lib.rs b/day_07/src/lib.rs deleted file mode 100644 index 8c476ab..0000000 --- a/day_07/src/lib.rs +++ /dev/null @@ -1,43 +0,0 @@ -pub mod part_01; -pub mod part_02; - -pub type Number = i64; -pub type Input = Vec<(Number, Vec)>; - -pub fn parse_input(input: &str) -> Input { - input - .lines() - .map(str::trim) - .filter(|string| !string.is_empty()) - .map(str::to_owned) - .map(|line| { - let mut line = line.split(": "); - ( - line.next().unwrap().parse().unwrap(), - line.next() - .unwrap() - .split(' ') - .map(|part| part.parse().unwrap()) - .collect(), - ) - }) - .collect() -} - -#[cfg(test)] -mod tests { - use super::*; - - const EXAMPLE_DATA: &str = " - 190: 10 19 - 3267: 81 40 27 - "; - - #[test] - fn it_parses_example() { - assert_eq!( - parse_input(EXAMPLE_DATA), - vec![(190, vec![10, 19]), (3267, vec![81, 40, 27]),] - ); - } -} diff --git a/day_07/src/main.rs b/day_07/src/main.rs deleted file mode 100644 index 6530793..0000000 --- a/day_07/src/main.rs +++ /dev/null @@ -1,12 +0,0 @@ -use std::io::Result; - -use day_07::{parse_input, part_01::main as part_01, part_02::main as part_02}; - -fn main() -> Result<()> { - let input = parse_input(include_str!("../../input/day_07")); - - println!("part_01: {:?}", part_01(&input)?); - println!("part_02: {:?}", part_02(&input)?); - - Ok(()) -} diff --git a/day_07/src/part_01.rs b/day_07/src/part_01.rs deleted file mode 100644 index 5433e25..0000000 --- a/day_07/src/part_01.rs +++ /dev/null @@ -1,46 +0,0 @@ -use std::{io::Result, mem}; - -use crate::{Input, Number}; - -pub fn main(input: &Input) -> Result { - Ok(input - .iter() - .filter_map(|(test_value, operators)| { - let mut operators = operators.iter().to_owned(); - let mut calibrations = vec![operators.next().unwrap().to_owned()]; - for operator in operators { - let new_calibrations = calibrations - .iter() - .flat_map(|calibration| vec![calibration + operator, calibration * operator]) - .collect(); - let _ = mem::replace(&mut calibrations, new_calibrations); - } - - let calibrations = calibrations - .iter() - .filter(|result| test_value == *result) - .collect::>(); - - if calibrations.is_empty() { - None - } else { - Some(test_value) - } - }) - .sum()) -} - -#[cfg(test)] -mod tests { - use crate::parse_input; - - use super::*; - - const EXAMPLE_DATA: &str = include_str!("../../input/day_07_example"); - - #[test] - fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 3749); - Ok(()) - } -} diff --git a/day_07/src/part_02.rs b/day_07/src/part_02.rs deleted file mode 100644 index 2cbd42f..0000000 --- a/day_07/src/part_02.rs +++ /dev/null @@ -1,52 +0,0 @@ -use std::{io::Result, mem}; - -use crate::{Input, Number}; - -pub fn main(input: &Input) -> Result { - Ok(input - .iter() - .filter_map(|(test_value, operators)| { - let mut operators = operators.iter().to_owned(); - let mut calibrations = vec![operators.next().unwrap().to_owned()]; - for operator in operators { - let new_calibrations = calibrations - .iter() - .flat_map(|calibration| { - vec![ - calibration + operator, - calibration * operator, - format!("{calibration}{operator}").parse().unwrap(), - ] - }) - .collect(); - let _ = mem::replace(&mut calibrations, new_calibrations); - } - - let calibrations = calibrations - .iter() - .filter(|result| test_value == *result) - .collect::>(); - - if calibrations.is_empty() { - None - } else { - Some(test_value) - } - }) - .sum()) -} - -#[cfg(test)] -mod tests { - use crate::parse_input; - - use super::*; - - const EXAMPLE_DATA: &str = include_str!("../../input/day_07_example"); - - #[test] - fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 11387); - Ok(()) - } -} diff --git a/input/day_01 b/input/day_01 index fe669c4..94adc1c 100644 --- a/input/day_01 +++ b/input/day_01 @@ -1,1000 +1,2000 @@ -56208 95668 -52621 74203 -95252 33335 -79799 26047 -88005 37435 -61887 93836 -48454 95821 -62543 40154 -68631 73255 -76702 79056 -70838 34466 -18680 46550 -51787 55754 -37646 48228 -85603 29306 -37768 75105 -90135 21612 -35469 74470 -21245 49622 -18699 49193 -21078 61415 -10873 95775 -91781 60483 -56840 42667 -81094 12954 -71762 61434 -64670 22232 -33536 77827 -24607 75889 -37829 78341 -36203 82413 -31747 95700 -22170 79056 -28403 89045 -82265 37081 -10713 74405 -76191 43205 -99737 87526 -75120 72550 -82607 40971 -81396 47693 -11533 39908 -21138 40655 -97567 42427 -11179 89506 -19548 50064 -43080 93836 -90155 37743 -21664 58398 -90621 89990 -52392 94519 -82246 62358 -14857 73475 -56878 69951 -48921 56211 -49545 83117 -84329 12955 -71390 48442 -27461 28450 -94969 86731 -32344 14652 -89304 37435 -61343 61730 -38097 85797 -21480 31806 -79330 58398 -29803 73475 -83903 58398 -82961 37081 -19048 16800 -46338 45021 -65120 97811 -94574 18471 -43129 37435 -80135 20553 -13860 30053 -23228 37081 -75373 99812 -72438 43358 -62029 81330 -46550 11995 -86921 92694 -34790 20959 -98862 85030 -82648 53872 -23156 43559 -86507 43025 -78535 78226 -86410 58158 -23699 18312 -43083 25346 -69925 11280 -93761 82246 -31314 38097 -31775 47098 -50720 24867 -59647 66769 -95275 17550 -12756 82744 -93464 99949 -50801 55400 -12063 60335 -10930 12955 -96820 63957 -51672 40727 -35874 40727 -23608 79584 -94056 80438 -46387 50916 -34304 37081 -83311 93836 -25295 43512 -17263 63763 -70673 30357 -68716 11280 -52238 27269 -99670 49467 -50516 93196 -84006 78719 -61795 33177 -43228 87640 -77557 99949 -98130 64716 -96939 61786 -95849 79056 -16209 89990 -65420 44437 -94486 11280 -66223 99949 -43524 86363 -62859 61786 -90225 84321 -88954 98335 -75285 17907 -38457 73475 -42857 24650 -10995 32077 -91376 57464 -77255 90595 -89361 86284 -59270 46550 -71756 57794 -87966 17022 -58398 55419 -96091 37435 -17150 87526 -39389 12196 -76990 67087 -61924 34998 -95291 73475 -50147 84321 -53391 84401 -36506 93836 -52291 27344 -12731 50538 -60534 89078 -79539 10368 -56787 99949 -54143 40727 -98095 75373 -30744 52795 -12926 38097 -51613 50801 -36198 65515 -28401 27065 -56046 78440 -70329 71912 -95114 36977 -60740 47082 -56549 11280 -57725 26874 -56639 89045 -79567 29741 -94022 76570 -96358 90832 -12302 95795 -76023 82246 -15612 97271 -17185 90595 -46709 45432 -13154 46550 -88519 43458 -32560 90478 -65035 71620 -92462 61237 -69416 79584 -35688 21793 -28438 39240 -82325 27813 -78531 84321 -24899 36148 -85012 89990 -23508 67634 -66264 60161 -66503 38477 -15986 91668 -79146 63922 -37435 85030 -62752 85977 -26512 81606 -40841 82246 -46251 73475 -34026 19249 -50440 41947 -76774 11280 -22007 60880 -94909 87526 -58404 84321 -75320 18175 -76222 89990 -91724 15431 -48733 37574 -36629 12879 -58515 21379 -12471 45395 -37709 79056 -14932 47109 -98634 80670 -97279 38097 -96785 84321 -12591 89556 -36934 61786 -41593 32076 -78262 38097 -60695 50941 -79770 93836 -41948 58398 -84058 63922 -35466 34206 -99842 86919 -57631 53042 -22167 33022 -61786 68147 -69070 89045 -30553 48228 -96972 46550 -49251 79584 -50994 75840 -91178 59794 -29903 18646 -92270 63922 -50470 19887 -68328 87526 -87788 29501 -56579 59667 -23154 37081 -29012 69142 -24751 89990 -12191 38097 -14613 62616 -88157 75476 -78319 74115 -57573 37081 -49634 88296 -80779 23920 -58363 45944 -38626 23891 -44119 43477 -87012 92308 -94285 19887 -47957 58398 -98671 73475 -80957 90536 -75724 97254 -55207 34449 -26929 46570 -88177 67524 -42538 87526 -60062 34610 -31875 89453 -84401 51230 -30370 37435 -77609 26508 -54400 89045 -16998 76877 -53993 49621 -80345 11280 -33089 83000 -59754 54338 -10070 58398 -79056 47218 -38998 94596 -78946 93836 -17022 58398 -26488 96876 -29505 48228 -87585 84630 -11881 50840 -34065 89196 -92780 57959 -84213 19887 -89873 64164 -88432 76456 -27932 48228 -75295 51234 -87532 48228 -89045 79056 -90024 40848 -83717 70022 -44095 35548 -61389 31672 -45153 80712 -53642 46743 -79895 27572 -62353 63922 -31718 43553 -47638 16679 -68079 37435 -99980 82246 -28989 53198 -55315 72011 -39285 57048 -63939 79056 -79274 44485 -67372 46550 -37081 89990 -90006 46550 -78226 14583 -49740 39212 -57801 58398 -99700 89990 -20514 78226 -74207 90650 -30895 37435 -45690 48228 -59599 95569 -36570 43919 -27098 46550 -23232 58398 -64885 62096 -85030 17022 -91242 68818 -32735 79056 -84321 35330 -15556 73475 -65535 20996 -46287 47868 -72870 88715 -26102 28963 -53627 60988 -24886 17144 -96189 76191 -24759 45636 -98950 93836 -47061 90595 -74001 11280 -91701 50701 -35581 79056 -55474 50020 -39955 95451 -16183 78226 -76584 61285 -22474 97165 -23396 37435 -71483 50801 -94355 26883 -16187 82246 -48892 19971 -78206 44272 -90897 53164 -60606 54389 -15976 30489 -64132 87526 -30030 56758 -58524 78226 -37832 38097 -78244 99949 -10124 28222 -45015 95384 -98771 10124 -69753 82069 -71588 56590 -39250 55040 -60302 75373 -44720 75373 -49715 89857 -17921 63358 -20595 41212 -71304 86278 -52931 42672 -12734 79056 -96838 51840 -69950 91553 -20134 46460 -44631 57523 -21834 82246 -87705 67785 -67003 90674 -57615 46550 -24713 27095 -92252 37081 -69531 40818 -95550 98970 -69979 52208 -86183 56378 -97271 66222 -34116 56073 -61862 26938 -69230 60312 -39386 73475 -91297 27731 -91115 71904 -65373 32930 -22264 84534 -42510 24914 -31022 11750 -79868 79584 -52225 11280 -81993 22693 -90622 29200 -10788 36850 -19596 74840 -18745 89990 -95360 48049 -37314 40727 -43291 88941 -16658 42023 -42096 91462 -35810 67282 -60361 64835 -92458 79056 -75435 68039 -28125 44179 -59855 53140 -77935 17022 -54641 63922 -38395 79056 -57487 60560 -28437 42839 -70988 11280 -71731 44391 -71274 97823 -26290 50801 -44854 28186 -48594 90871 -77287 73475 -65614 84401 -15083 12542 -46738 84321 -97269 92183 -70388 79584 -43702 50801 -68959 40727 -85936 67896 -66276 61786 -46788 79046 -75138 51794 -67218 16350 -84121 37435 -85923 46550 -27696 64738 -33242 97663 -53268 90595 -74163 13720 -35519 37435 -95673 76504 -75926 50898 -31828 46367 -13255 34762 -91251 19661 -35165 60459 -89359 57486 -56104 68802 -23120 10446 -27928 94429 -13036 87135 -68217 89045 -90595 77093 -64564 19604 -20580 38456 -95473 99949 -23762 19970 -94918 49478 -95915 73475 -43165 21655 -28604 10124 -77991 89045 -69168 12955 -67281 36803 -63168 34514 -54261 92874 -43629 11280 -58472 56533 -87513 85394 -78278 38097 -27186 53704 -12183 15651 -85071 34888 -74115 71810 -38589 42387 -59858 58282 -81623 50530 -18220 40720 -80203 37435 -25112 95576 -27487 51328 -52735 36378 -57441 83458 -16583 74359 -68008 88649 -93205 93836 -29428 76277 -63669 73090 -27809 91190 -71814 87028 -36345 69002 -19141 71868 -85043 10124 -35017 38242 -72320 53921 -66740 17022 -28399 78733 -22592 81140 -30299 45195 -34919 40727 -19792 89045 -25687 93836 -83082 90916 -40314 82874 -80873 63922 -21542 11066 -55959 94833 -77334 37081 -19353 21529 -19186 73475 -34259 95072 -13064 74519 -41193 49662 -55457 72223 -16381 65670 -50435 19770 -50032 50801 -49806 46550 -18336 37435 -13333 90595 -90334 19267 -60180 82246 -93184 62302 -74440 26507 -63011 87526 -40458 91304 -23721 57800 -63922 17206 -95151 38097 -51880 98112 -20539 54229 -93904 62420 -72851 46550 -42399 61786 -99078 63519 -12254 84321 -10577 44243 -46056 37435 -51235 39472 -50954 12660 -77199 56517 -18283 63922 -52859 87526 -15246 98536 -93836 97622 -49522 88978 -73549 40727 -31118 75373 -51627 61786 -89566 93643 -23542 37435 -54992 11280 -24990 37435 -33159 19657 -53499 17022 -84995 72286 -45818 50732 -41169 14636 -40120 26973 -64286 84321 -63432 30593 -99949 24130 -61077 17022 -36433 82246 -54816 59964 -85544 84321 -60397 52196 -76341 37081 -31479 79027 -16260 17420 -96337 10124 -65067 62284 -26483 44801 -96326 17022 -14058 54149 -13393 65898 -65901 53423 -38500 57276 -20118 79584 -44353 40727 -47498 49739 -93041 47833 -46970 46550 -33688 75373 -68223 90514 -87884 94553 -65159 37435 -58329 74006 -42199 37350 -76135 20844 -46639 93433 -65739 49055 -43290 40727 -31619 86698 -77506 86616 -65377 56317 -31884 84321 -52311 81238 -99796 93836 -51116 95658 -41167 73020 -16379 18876 -12306 97271 -31299 48015 -73188 70147 -11052 42268 -65938 89990 -26961 98705 -95494 58398 -59265 23555 -87502 32132 -70660 84797 -12091 89045 -41613 26719 -68419 20739 -26943 58398 -89349 89990 -16651 17022 -95467 28221 -89990 98021 -85616 86929 -16479 51259 -76664 83454 -78928 74941 -31423 45590 -93437 82778 -85851 52691 -76954 15659 -16646 74584 -48296 46550 -77084 70921 -27964 99119 -41032 78157 -32094 82246 -29499 49175 -79737 13077 -25423 68557 -12219 58628 -70282 29077 -87976 11280 -57871 43034 -81209 58398 -56626 45328 -29128 28793 -14975 38794 -58884 36392 -24278 46550 -77033 27547 -74285 73475 -10130 32903 -34728 11456 -40336 17022 -62399 45936 -95138 53688 -12955 16609 -74887 93836 -18948 93836 -28427 26898 -67749 80949 -94522 17022 -76210 82892 -78717 36081 -13088 80671 -80352 18670 -68720 41082 -62146 69651 -39371 84952 -41619 27315 -90093 58398 -32716 45626 -11280 27624 -22129 94534 -24812 10124 -43238 86431 -35791 97662 -13162 53170 -57534 15678 -66069 63618 -49841 11541 -23345 38097 -36649 79056 -37193 76443 -18519 64707 -34081 61786 -47018 75935 -30452 48882 -12559 58817 -32825 91051 -16051 19974 -80171 17022 -19374 54710 -57295 84738 -81314 38097 -33479 49965 -38611 79056 -63785 49754 -18774 70415 -98510 72330 -85801 73475 -10744 17022 -15097 11280 -52514 37435 -86860 96099 -27804 22005 -62601 79155 -86020 70452 -26991 15399 -98690 69989 -18491 79768 -85009 79056 -11329 20212 -10782 70405 -85026 40727 -26888 34001 -36315 42445 -49098 37435 -59474 38097 -86676 41947 -55178 84321 -53985 87526 -65575 47299 -57292 82817 -24657 37081 -82204 10439 -82639 73475 -81107 74139 -89946 97271 -93306 41394 -62863 46550 -48547 86956 -12374 55301 -81681 95539 -94195 84321 -15303 24017 -36395 93928 -28572 10804 -62931 45406 -33902 88845 -25697 83483 -86956 51476 -73957 55123 -83525 29803 -16581 19887 -96012 90129 -14067 40727 -66384 38351 -43782 75373 -53517 29489 -17126 71797 -10854 68046 -68594 89990 -89786 17022 -81737 11280 -71138 84321 -77457 62041 -99540 54740 -15369 87693 -73475 39716 -35348 99949 -67944 97271 -91345 20757 -48703 99901 -56450 84321 -75169 70680 -27015 45299 -34175 85030 -21184 64377 -95716 97271 -25738 70254 -79049 75062 -54904 68773 -12813 47161 -95857 74505 -17456 87526 -24008 30203 -92925 17022 -17008 98227 -53399 13325 -84080 49498 -23522 62070 -80392 37081 -67497 89518 -31797 46550 -67380 29610 -29237 47817 -32106 13477 -17711 61786 -19802 35480 -46456 37081 -17560 67389 -59598 64837 -30808 10592 -78213 86193 -34411 89045 -22714 61786 -88368 79584 -49172 37435 -28106 30525 -34595 65269 -67363 90595 -50389 33649 -57932 74115 -85665 15566 -68846 84257 -37420 75483 -70969 85030 -53989 74115 -30509 81520 -92232 63922 -12314 64612 -59372 76983 -31019 75373 -28072 58019 -51728 67527 -82597 36949 -66512 46706 -89805 89043 -13220 72753 -19121 31313 -27852 89644 -29411 97271 -10756 88672 -60773 82080 -81746 11688 -90653 23550 -59400 14905 -97489 44079 -20132 40678 -82210 43722 -90436 80985 -92889 18182 -40727 19573 -76922 17022 -27554 78420 -47592 87324 -78580 75728 -91390 63922 -82409 80324 -60005 53958 -46353 90334 -89672 26377 -52436 11280 -71495 41947 -59787 93836 -13621 79584 -16093 31156 -11603 51436 -31593 12955 -70829 89990 -61100 96353 -71072 61786 -33450 17022 -65493 48359 -51250 44884 -49691 61786 -41947 61786 -60973 93836 -44926 87954 -90989 35723 -98883 30386 -83974 67713 -86576 17323 -32534 77745 -57475 32708 -86499 43190 -26325 71687 -16737 58398 -88460 17022 -10798 61963 -59899 54790 -84722 56390 -38117 75766 -12595 97271 -23267 78757 -70504 97271 -44104 63922 -22950 85030 -66137 84321 -18407 99949 -37598 61786 -28201 24323 -19404 79868 -53725 33781 -56941 41947 -88231 83925 -30916 73475 -81019 46011 -91386 23123 -29455 79332 -32603 42378 -61578 46922 -67431 12955 -85884 15692 -40799 89045 -27326 97271 -79681 11280 -35614 38097 -99407 54190 -30288 10124 -59805 66109 -27031 12955 -51952 46550 -63420 17022 -96282 17307 -45123 17022 -95858 32553 -85339 98702 -19887 81650 -20177 66465 -92548 84663 -28915 38097 -48995 58398 -32153 97259 -14697 55843 -15115 31921 -97258 21175 -11833 75150 -20476 37081 -57780 87869 -20868 16813 -55154 72786 -51855 79056 -58551 94071 -32367 60493 -70926 16754 -95196 94004 -30949 32933 -93955 10128 -14553 61786 -67116 11579 -34377 85680 -69983 79584 -92220 38097 -69116 11280 -83291 10124 -63499 30127 -48167 97271 -70014 13990 -40226 78226 -71699 12411 -40455 75750 -74381 11343 -88846 74967 -17219 79739 -78747 30775 -98201 18354 -54571 68841 -85738 49837 -17375 10897 -44862 46550 -15932 11030 -79584 17022 -77641 58398 -54882 38097 -87246 75159 -33635 41878 -75249 60331 -46712 55151 -48228 91967 -17264 39458 -58907 86956 -62693 87904 -72122 43222 -70553 73934 -43027 90334 -69420 97905 -91527 10124 -34146 96995 -77998 88728 -80279 91008 -35125 77608 -33786 63922 -82027 38917 -10855 49903 -66407 38097 -50926 49360 -73591 97271 -97759 84321 -82742 49137 -16002 57753 -53455 38875 -66703 40727 -76244 92842 -87526 49664 -92147 87526 +173 +179 +200 +210 +226 +229 +220 +221 +228 +233 +237 +238 +249 +261 +284 +285 +287 +289 +291 +284 +285 +279 +295 +313 +314 +315 +317 +318 +316 +344 +345 +347 +352 +356 +352 +379 +384 +389 +392 +394 +395 +401 +424 +429 +432 +446 +454 +464 +459 +455 +467 +501 +509 +523 +526 +529 +535 +557 +559 +562 +564 +572 +573 +576 +584 +586 +588 +587 +588 +594 +598 +599 +600 +602 +604 +609 +626 +633 +641 +642 +649 +655 +658 +661 +681 +683 +685 +684 +685 +687 +691 +694 +696 +697 +705 +706 +710 +740 +741 +749 +740 +744 +749 +750 +753 +759 +754 +736 +731 +732 +722 +720 +732 +745 +754 +769 +771 +772 +766 +768 +778 +780 +768 +771 +775 +804 +809 +810 +806 +808 +818 +813 +801 +804 +813 +817 +836 +827 +833 +836 +840 +860 +865 +877 +843 +845 +871 +872 +874 +885 +900 +904 +906 +909 +911 +910 +919 +932 +938 +954 +961 +962 +964 +979 +980 +992 +997 +1000 +1012 +1017 +1025 +1027 +1028 +1035 +1036 +1052 +1053 +1057 +1068 +1092 +1093 +1104 +1106 +1107 +1112 +1121 +1123 +1126 +1127 +1126 +1132 +1135 +1136 +1138 +1143 +1146 +1148 +1149 +1154 +1172 +1173 +1174 +1175 +1176 +1182 +1183 +1188 +1194 +1195 +1199 +1204 +1208 +1211 +1210 +1190 +1197 +1209 +1210 +1211 +1221 +1240 +1241 +1240 +1244 +1247 +1245 +1249 +1266 +1272 +1280 +1285 +1305 +1308 +1315 +1325 +1328 +1357 +1362 +1363 +1365 +1368 +1366 +1376 +1359 +1378 +1380 +1381 +1375 +1376 +1374 +1375 +1377 +1379 +1380 +1376 +1377 +1391 +1393 +1399 +1412 +1416 +1420 +1427 +1428 +1432 +1434 +1435 +1436 +1439 +1440 +1464 +1458 +1461 +1465 +1467 +1502 +1503 +1500 +1514 +1516 +1533 +1535 +1536 +1517 +1547 +1531 +1532 +1543 +1544 +1546 +1519 +1521 +1522 +1529 +1510 +1518 +1520 +1511 +1486 +1489 +1501 +1484 +1479 +1481 +1485 +1493 +1497 +1498 +1500 +1505 +1512 +1534 +1535 +1539 +1522 +1523 +1531 +1548 +1549 +1550 +1576 +1586 +1583 +1584 +1585 +1599 +1606 +1607 +1609 +1625 +1638 +1643 +1681 +1680 +1688 +1702 +1703 +1705 +1706 +1717 +1716 +1711 +1708 +1719 +1721 +1716 +1728 +1729 +1739 +1765 +1769 +1778 +1779 +1781 +1785 +1786 +1783 +1786 +1787 +1778 +1776 +1797 +1802 +1808 +1811 +1816 +1819 +1818 +1830 +1837 +1839 +1842 +1843 +1845 +1846 +1854 +1842 +1815 +1816 +1829 +1831 +1836 +1842 +1845 +1868 +1869 +1870 +1877 +1879 +1897 +1896 +1897 +1899 +1909 +1912 +1913 +1920 +1919 +1921 +1902 +1921 +1923 +1928 +1935 +1936 +1941 +1944 +1964 +1962 +1971 +1983 +1985 +1987 +2000 +2002 +2005 +2006 +2026 +2024 +2025 +2027 +2029 +2026 +2028 +2029 +2044 +2043 +2047 +2055 +2056 +2068 +2085 +2086 +2096 +2097 +2108 +2105 +2106 +2103 +2098 +2101 +2102 +2107 +2127 +2128 +2131 +2132 +2123 +2126 +2141 +2160 +2163 +2167 +2171 +2179 +2184 +2187 +2198 +2209 +2218 +2219 +2221 +2236 +2239 +2245 +2249 +2268 +2272 +2269 +2270 +2262 +2261 +2263 +2260 +2263 +2265 +2270 +2285 +2286 +2290 +2272 +2259 +2267 +2268 +2283 +2286 +2289 +2290 +2300 +2304 +2305 +2306 +2294 +2295 +2324 +2331 +2345 +2352 +2356 +2357 +2362 +2369 +2377 +2398 +2405 +2397 +2398 +2391 +2394 +2399 +2400 +2411 +2412 +2415 +2416 +2421 +2417 +2395 +2397 +2404 +2414 +2432 +2405 +2406 +2423 +2425 +2427 +2436 +2442 +2443 +2451 +2450 +2451 +2479 +2484 +2491 +2494 +2491 +2480 +2485 +2486 +2487 +2497 +2499 +2526 +2525 +2526 +2528 +2526 +2528 +2532 +2536 +2563 +2566 +2580 +2584 +2595 +2603 +2615 +2620 +2627 +2641 +2645 +2643 +2659 +2664 +2665 +2669 +2671 +2678 +2687 +2688 +2713 +2717 +2729 +2732 +2733 +2732 +2734 +2735 +2737 +2718 +2719 +2720 +2727 +2736 +2738 +2740 +2749 +2743 +2785 +2799 +2800 +2821 +2828 +2829 +2832 +2834 +2852 +2853 +2850 +2863 +2866 +2867 +2865 +2860 +2861 +2869 +2862 +2864 +2862 +2868 +2873 +2881 +2887 +2888 +2891 +2898 +2892 +2901 +2903 +2901 +2906 +2910 +2911 +2922 +2919 +2918 +2912 +2910 +2924 +2921 +2923 +2924 +2931 +2945 +2946 +2918 +2946 +2947 +2951 +2937 +2938 +2940 +2941 +2945 +2960 +2965 +2964 +2965 +2966 +2967 +2979 +3000 +3006 +3008 +3010 +3003 +3009 +3003 +3012 +3026 +3032 +3036 +3041 +3046 +3058 +3059 +3070 +3059 +3056 +3060 +3070 +3078 +3084 +3085 +3089 +3092 +3095 +3078 +3113 +3107 +3109 +3121 +3129 +3118 +3128 +3130 +3131 +3132 +3133 +3132 +3128 +3130 +3149 +3159 +3162 +3172 +3180 +3195 +3196 +3197 +3209 +3214 +3216 +3217 +3218 +3221 +3234 +3236 +3238 +3246 +3212 +3205 +3214 +3243 +3245 +3250 +3252 +3268 +3271 +3270 +3258 +3253 +3264 +3273 +3281 +3282 +3288 +3291 +3300 +3310 +3312 +3331 +3329 +3330 +3331 +3344 +3366 +3367 +3381 +3385 +3386 +3395 +3396 +3397 +3433 +3422 +3433 +3426 +3421 +3422 +3427 +3433 +3439 +3443 +3445 +3442 +3447 +3446 +3449 +3458 +3470 +3473 +3479 +3478 +3480 +3482 +3484 +3495 +3494 +3492 +3499 +3491 +3495 +3506 +3512 +3518 +3523 +3538 +3546 +3554 +3559 +3565 +3580 +3583 +3584 +3591 +3592 +3607 +3609 +3633 +3636 +3634 +3637 +3638 +3642 +3643 +3652 +3653 +3655 +3657 +3656 +3657 +3656 +3677 +3678 +3716 +3727 +3730 +3751 +3752 +3776 +3778 +3775 +3779 +3782 +3783 +3817 +3819 +3822 +3824 +3826 +3841 +3842 +3843 +3864 +3868 +3875 +3880 +3896 +3898 +3899 +3900 +3901 +3907 +3914 +3904 +3908 +3917 +3918 +3919 +3926 +3939 +3945 +3938 +3956 +3967 +3968 +3972 +3975 +3974 +3975 +3976 +3981 +3982 +3983 +3977 +3982 +3987 +3995 +4012 +4025 +4021 +4046 +4048 +4053 +4069 +4078 +4083 +4081 +4080 +4082 +4091 +4099 +4100 +4097 +4109 +4112 +4126 +4127 +4128 +4129 +4130 +4133 +4132 +4136 +4156 +4160 +4161 +4159 +4160 +4161 +4178 +4180 +4197 +4195 +4197 +4199 +4201 +4200 +4196 +4219 +4220 +4221 +4205 +4219 +4224 +4257 +4262 +4263 +4266 +4267 +4266 +4271 +4272 +4273 +4285 +4286 +4285 +4266 +4242 +4248 +4270 +4271 +4293 +4309 +4314 +4340 +4343 +4348 +4347 +4348 +4351 +4352 +4364 +4365 +4388 +4390 +4417 +4410 +4426 +4431 +4429 +4434 +4424 +4432 +4421 +4440 +4441 +4428 +4438 +4456 +4457 +4460 +4468 +4471 +4473 +4490 +4477 +4478 +4486 +4475 +4487 +4490 +4497 +4524 +4533 +4537 +4541 +4545 +4548 +4552 +4556 +4558 +4571 +4573 +4578 +4580 +4581 +4542 +4545 +4548 +4549 +4536 +4551 +4557 +4556 +4547 +4548 +4567 +4552 +4554 +4552 +4576 +4577 +4603 +4616 +4633 +4634 +4639 +4642 +4651 +4656 +4657 +4659 +4663 +4667 +4673 +4695 +4712 +4713 +4720 +4718 +4721 +4737 +4743 +4746 +4778 +4779 +4793 +4768 +4773 +4776 +4778 +4796 +4798 +4800 +4802 +4803 +4822 +4823 +4831 +4836 +4831 +4833 +4840 +4842 +4847 +4868 +4870 +4869 +4875 +4876 +4879 +4881 +4891 +4892 +4909 +4903 +4901 +4902 +4930 +4933 +4932 +4933 +4936 +4937 +4943 +4945 +4948 +4949 +4943 +4963 +4956 +4967 +4969 +4961 +4966 +4970 +4974 +4961 +4964 +4952 +4953 +4981 +4984 +4966 +4970 +4971 +4975 +4966 +4968 +4966 +4968 +4974 +4971 +4988 +4989 +4995 +4996 +5001 +5004 +5005 +5008 +5016 +5018 +5007 +5010 +5011 +5024 +5027 +5032 +5037 +5033 +5034 +5045 +5071 +5068 +5069 +5070 +5088 +5086 +5088 +5114 +5133 +5144 +5145 +5152 +5161 +5154 +5155 +5156 +5159 +5170 +5176 +5189 +5190 +5200 +5204 +5205 +5206 +5221 +5222 +5223 +5224 +5217 +5218 +5219 +5225 +5203 +5210 +5212 +5213 +5215 +5214 +5215 +5221 +5222 +5233 +5242 +5256 +5258 +5256 +5281 +5286 +5315 +5336 +5337 +5345 +5348 +5341 +5336 +5341 +5344 +5350 +5341 +5342 +5337 +5339 +5346 +5347 +5364 +5366 +5368 +5361 +5362 +5365 +5358 +5370 +5376 +5377 +5380 +5381 +5382 +5383 +5388 +5396 +5405 +5396 +5410 +5431 +5432 +5436 +5447 +5456 +5457 +5462 +5475 +5476 +5490 +5493 +5503 +5504 +5512 +5513 +5527 +5542 +5546 +5545 +5547 +5555 +5558 +5577 +5613 +5614 +5620 +5623 +5636 +5651 +5660 +5665 +5668 +5672 +5676 +5687 +5712 +5707 +5708 +5709 +5711 +5712 +5714 +5715 +5717 +5727 +5731 +5746 +5754 +5755 +5758 +5759 +5770 +5775 +5799 +5789 +5794 +5800 +5802 +5813 +5808 +5812 +5832 +5830 +5839 +5842 +5825 +5830 +5835 +5836 +5847 +5851 +5849 +5855 +5816 +5818 +5829 +5830 +5829 +5830 +5858 +5859 +5860 +5862 +5867 +5868 +5863 +5864 +5869 +5872 +5878 +5885 +5888 +5890 +5884 +5875 +5876 +5880 +5886 +5889 +5890 +5892 +5895 +5896 +5895 +5896 +5897 +5895 +5907 +5906 +5908 +5897 +5900 +5913 +5915 +5914 +5917 +5915 +5916 +5920 +5923 +5929 +5931 +5936 +5944 +5929 +5932 +5934 +5945 +5948 +5949 +5951 +5957 +5967 +5968 +5969 +5974 +5975 +5982 +5983 +5990 +5994 +5989 +5993 +5996 +5986 +5987 +5990 +5991 +5993 +5995 +5998 +5999 +5990 +5994 +5996 +6010 +6016 +6032 +6039 +6041 +6044 +6057 +6058 +6059 +6060 +6061 +6063 +6064 +6067 +6073 +6074 +6075 +6070 +6071 +6076 +6077 +6071 +6083 +6088 +6096 +6095 +6100 +6101 +6106 +6109 +6111 +6112 +6121 +6143 +6151 +6175 +6179 +6174 +6175 +6185 +6186 +6184 +6195 +6196 +6197 +6188 +6195 +6196 +6197 +6198 +6204 +6209 +6222 +6233 +6231 +6222 +6223 +6224 +6233 +6235 +6239 +6229 +6259 +6286 +6295 +6269 +6273 +6274 +6265 +6266 +6264 +6259 +6260 +6265 +6268 +6280 +6281 +6283 +6277 +6279 +6311 +6340 +6342 +6345 +6353 +6375 +6399 +6425 +6423 +6428 +6448 +6449 +6456 +6460 +6465 +6470 +6477 +6493 +6494 +6499 +6521 +6522 +6524 +6525 +6536 +6537 +6538 +6526 +6550 +6551 +6552 +6559 +6561 +6563 +6564 +6584 +6585 +6588 +6600 +6610 +6612 +6616 +6619 +6639 +6644 +6646 +6647 +6644 +6629 +6635 +6646 +6648 +6659 +6662 +6641 +6637 +6626 +6627 +6630 +6632 +6643 +6644 +6645 +6656 +6658 +6663 +6680 +6675 +6678 +6681 +6682 +6680 +6692 +6702 +6707 +6708 +6709 +6717 +6719 +6733 +6734 +6730 +6751 +6757 +6766 +6770 +6810 +6812 +6816 +6810 +6817 +6821 +6823 +6828 +6844 +6838 +6841 +6846 +6843 +6844 +6848 +6851 +6853 +6868 +6870 +6884 +6886 +6896 +6886 +6887 +6891 +6896 +6905 +6902 +6903 +6902 +6911 +6951 +6955 +6958 +6940 +6943 +6945 +6946 +6945 +6943 +6944 +6949 +6950 +6952 +6953 +6958 +6962 +6970 +6974 +6977 +7018 +7023 +7027 +7029 +7031 +7033 +7035 +7057 +7058 +7060 +7071 +7072 +7087 +7102 +7111 +7138 +7118 +7136 +7142 +7143 +7162 +7163 +7166 +7153 +7152 +7151 +7154 +7156 +7178 +7177 +7184 +7188 +7193 +7198 +7205 +7217 +7248 +7247 +7249 +7251 +7253 +7254 +7255 +7263 +7265 +7280 +7287 +7315 +7323 +7332 +7333 +7323 +7324 +7332 +7334 +7338 +7339 +7341 +7347 +7346 +7347 +7365 +7370 +7372 +7373 +7374 +7376 +7381 +7383 +7401 +7402 +7421 +7433 +7438 +7439 +7440 +7476 +7484 +7504 +7510 +7526 +7527 +7531 +7532 +7539 +7542 +7553 +7555 +7560 +7558 +7560 +7562 +7578 +7581 +7587 +7599 +7600 +7616 +7627 +7645 +7658 +7659 +7646 +7648 +7652 +7650 +7651 +7667 +7671 +7675 +7682 +7683 +7684 +7687 +7686 +7688 +7699 +7710 +7699 +7698 +7699 +7706 +7724 +7725 +7740 +7741 +7740 +7741 +7747 +7742 +7749 +7758 +7769 +7770 +7785 +7793 +7794 +7797 +7805 +7806 +7826 +7827 +7828 +7826 +7827 +7837 +7843 +7852 +7867 +7874 +7881 +7875 +7874 +7873 +7887 +7890 +7919 +7918 +7926 +7935 +7936 +7935 +7941 +7942 +7940 +7949 +7958 +7960 +7963 +7961 +7963 +7965 +7960 +7983 +7980 +7984 +7986 +7988 +8000 +8009 +8014 +8013 +8014 +8015 +8022 +8023 +8020 +8035 +8046 +8053 +8050 +8046 +8057 +8056 +8085 +8086 +8087 +8088 +8092 +8094 +8095 +8094 +8096 +8099 +8128 +8159 +8167 +8185 +8200 +8212 +8214 +8219 +8246 +8248 +8261 +8262 +8242 +8236 +8237 +8247 +8243 +8242 +8244 +8256 +8268 +8270 +8311 +8323 +8324 +8325 +8327 +8349 +8347 +8348 +8347 +8353 +8366 +8384 +8386 +8389 +8404 +8405 +8408 +8411 +8415 +8428 +8437 +8423 +8427 +8455 +8463 +8466 +8470 +8471 +8475 +8476 +8479 +8484 +8483 +8486 +8485 +8498 +8502 +8503 +8507 +8517 +8518 +8531 +8532 +8545 +8548 +8561 +8569 +8573 +8575 +8580 +8581 +8585 +8589 +8598 +8604 +8630 +8628 +8625 +8620 +8625 +8626 +8627 +8620 +8631 +8643 +8645 +8669 +8673 +8674 +8679 +8687 +8698 +8731 +8738 +8746 +8785 +8760 +8764 +8760 +8761 +8767 +8768 +8769 +8771 +8773 +8768 +8766 +8767 +8785 +8789 +8790 +8802 +8801 +8802 +8809 +8820 +8823 +8824 +8829 +8830 +8836 +8835 +8834 +8828 +8829 +8833 +8844 +8852 +8857 +8863 +8862 +8863 +8853 +8858 +8859 +8860 +8845 +8844 +8823 +8822 +8850 +8851 +8852 +8863 +8879 +8881 +8882 +8889 +8892 +8894 +8910 +8908 +8912 +8933 +8932 +8911 +8906 +8908 +8909 +8919 +8920 +8921 +8933 +8935 +8945 +8947 +8948 +8951 +8961 +8962 +8972 +8989 +8990 +8999 +9000 +9018 +9028 +9029 +9035 +9031 +9043 +9044 +9049 +9078 +9074 +9078 +9081 +9074 +9077 +9071 +9054 +9055 +9060 +9062 +9065 +9094 +9099 +9108 +9125 +9136 +9137 +9143 +9147 +9150 +9162 +9166 +9170 +9171 +9174 +9188 +9198 +9204 +9207 +9217 +9230 +9243 +9256 +9264 +9273 +9275 +9286 +9293 +9299 +9300 +9317 +9320 +9324 +9348 +9351 +9356 +9372 +9380 diff --git a/input/day_02 b/input/day_02 index 7370319..2efbeb6 100644 --- a/input/day_02 +++ b/input/day_02 @@ -1,1000 +1,1000 @@ -9 12 14 16 17 18 15 -86 88 91 94 95 95 -15 18 20 21 23 25 28 32 -70 72 74 77 78 83 -57 60 62 64 63 64 65 -44 45 44 47 46 -33 35 32 33 36 36 -83 86 88 89 87 88 90 94 -56 59 62 65 68 65 68 75 -36 39 40 40 43 -87 90 93 95 95 97 94 -90 91 92 92 95 95 -11 14 14 15 16 19 23 -35 37 39 39 44 -59 61 63 67 68 69 -86 87 91 92 91 -33 36 38 39 43 44 47 47 -82 84 86 89 93 94 98 -4 5 7 10 13 17 24 -51 54 60 63 64 67 68 -38 40 43 45 51 54 56 53 -8 9 10 15 16 17 17 -24 26 33 34 38 -61 62 64 66 68 74 80 -44 43 46 48 49 50 51 53 -5 2 5 8 6 -12 11 14 16 17 18 18 -3 1 3 4 7 9 13 -60 58 59 62 63 70 -45 44 41 42 43 44 46 -12 11 13 12 15 13 -56 53 50 52 53 53 -70 69 72 69 70 71 72 76 -53 51 54 57 55 58 64 -26 24 26 28 28 29 31 33 -33 32 35 35 38 40 43 42 -82 81 81 82 85 86 86 -49 47 47 50 51 55 -39 36 36 39 40 41 48 -65 62 66 67 70 72 75 -20 18 22 24 26 23 -53 51 53 57 60 63 65 65 -22 20 23 26 29 33 37 -47 46 48 51 55 56 63 -55 53 60 63 65 -36 35 36 39 40 47 44 -3 2 3 4 9 9 -55 54 61 64 65 69 -17 16 19 24 26 28 29 34 -87 87 90 92 94 -66 66 68 70 72 69 -69 69 71 72 75 77 77 -74 74 77 78 82 -84 84 85 86 88 95 -55 55 57 58 59 60 59 62 -94 94 95 93 95 94 -38 38 41 38 40 40 -69 69 70 73 76 79 76 80 -4 4 6 3 8 -74 74 74 77 78 -34 34 34 37 36 -55 55 55 57 58 60 62 62 -37 37 39 40 40 41 44 48 -50 50 53 55 56 56 57 64 -11 11 12 16 17 -3 3 6 9 10 14 15 13 -71 71 74 76 80 82 85 85 -2 2 3 6 8 12 14 18 -86 86 87 91 93 94 99 -61 61 62 69 70 71 -61 61 64 71 74 76 79 78 -82 82 84 90 93 94 94 -72 72 73 75 82 83 87 -8 8 11 17 23 -7 11 14 15 17 18 -19 23 25 27 28 30 31 30 -63 67 70 72 74 76 78 78 -51 55 57 60 63 67 -42 46 48 50 53 55 62 -16 20 21 24 27 29 26 27 -37 41 40 42 45 48 46 -90 94 97 99 96 96 -43 47 48 50 52 51 55 -76 80 83 86 83 86 87 93 -81 85 85 88 90 -21 25 25 27 30 29 -11 15 15 17 17 -80 84 84 85 86 88 91 95 -3 7 7 8 14 -24 28 32 33 36 39 -57 61 65 66 68 70 72 70 -9 13 14 18 21 24 24 -28 32 34 35 37 41 42 46 -56 60 64 65 72 -5 9 14 16 17 19 21 -40 44 47 48 49 54 53 -50 54 57 64 64 -7 11 17 18 22 -67 71 73 78 80 82 85 92 -28 34 36 38 40 42 43 45 -69 76 79 82 79 -53 60 63 66 67 70 70 -51 57 60 61 62 66 -78 84 87 88 91 97 -87 92 90 93 94 -31 37 36 39 40 41 38 -2 8 9 12 11 11 -78 85 87 86 88 90 93 97 -27 32 30 33 35 38 40 46 -48 55 58 61 63 63 66 -78 85 88 88 89 88 -52 59 62 64 65 65 65 -52 58 59 62 65 65 69 -33 40 43 43 46 51 -6 12 14 18 20 -51 56 60 63 61 -18 23 24 28 29 31 31 -5 12 13 17 18 19 23 -64 70 73 77 82 -61 66 71 72 74 75 76 -11 16 23 26 29 30 28 -70 77 78 84 84 -57 62 65 72 76 -20 25 28 29 35 38 40 46 -84 81 78 75 73 76 -13 10 8 7 4 4 -12 11 10 9 7 3 -99 97 94 93 86 -95 94 92 94 93 91 90 87 -13 11 9 7 8 5 7 -32 30 28 29 29 -94 92 91 90 91 90 86 -65 62 59 61 59 54 -36 34 34 31 30 28 -53 50 49 46 43 42 42 43 -91 88 85 83 83 80 80 -75 72 70 70 68 65 61 -9 7 7 6 1 -87 84 82 78 75 -46 45 41 39 36 33 31 34 -91 88 86 83 80 77 73 73 -66 64 62 59 58 56 52 48 -33 31 29 28 24 18 -78 75 73 72 65 64 -20 17 15 8 11 -55 53 50 44 44 -46 44 43 37 33 -98 96 90 89 88 86 79 -69 71 69 66 63 -31 33 30 27 30 -91 92 90 87 86 83 81 81 -82 84 82 81 77 -53 55 53 51 46 -38 41 44 41 40 -95 97 96 94 97 94 93 96 -32 33 30 33 33 -46 48 47 49 45 -83 85 84 81 79 82 75 -77 78 77 77 76 -11 12 12 11 8 5 8 -81 82 82 81 78 76 76 -92 95 92 91 89 89 86 82 -21 22 19 18 18 15 14 9 -37 38 34 31 29 -28 31 28 24 22 20 17 20 -42 44 42 41 40 36 33 33 -67 68 64 61 57 -73 74 70 69 67 60 -79 80 78 76 75 69 66 64 -80 83 76 75 73 70 72 -96 97 92 89 89 -44 47 45 39 38 35 31 -68 70 67 65 58 57 52 -51 51 50 47 46 45 42 39 -53 53 50 47 45 43 46 -66 66 65 63 61 58 58 -49 49 46 44 40 -17 17 16 14 13 6 -66 66 65 62 64 61 -57 57 55 56 55 58 -95 95 94 96 96 -65 65 67 65 64 62 58 -35 35 32 33 32 25 -57 57 57 54 52 51 50 49 -47 47 47 45 42 45 -42 42 42 39 39 -54 54 53 51 51 47 -19 19 19 16 11 -56 56 54 50 48 45 -80 80 77 76 75 74 70 73 -90 90 88 85 84 82 78 78 -29 29 28 24 20 -88 88 85 84 83 82 78 72 -18 18 12 9 8 6 4 -18 18 12 10 12 -98 98 95 90 89 86 84 84 -41 41 39 34 30 -98 98 97 95 93 87 82 -96 92 90 87 84 -65 61 58 57 54 53 54 -38 34 32 30 28 25 22 22 -93 89 86 85 81 -58 54 52 51 50 45 -86 82 80 79 76 75 76 74 -54 50 47 49 52 -57 53 52 49 50 48 48 -64 60 57 58 55 51 -56 52 53 50 43 -90 86 85 84 84 82 -66 62 61 59 58 58 59 -86 82 81 81 78 75 75 -63 59 56 56 55 54 52 48 -86 82 79 79 78 75 70 -49 45 44 40 37 36 -95 91 87 84 82 79 76 77 -65 61 59 58 56 52 51 51 -56 52 50 46 44 41 37 -19 15 14 10 9 3 -95 91 85 84 81 -16 12 5 3 5 -95 91 84 83 82 79 76 76 -65 61 60 55 51 -72 68 67 66 59 52 -64 59 57 55 54 52 50 48 -98 91 89 88 86 85 82 83 -32 26 23 20 17 14 14 -88 81 78 76 73 69 -66 61 58 56 53 52 50 45 -63 58 59 57 55 53 -35 29 26 24 26 29 -45 40 41 39 38 37 35 35 -63 58 57 60 57 53 -37 31 30 28 27 24 25 19 -61 56 53 53 51 49 -29 22 21 20 20 18 15 17 -75 68 67 64 64 63 63 -92 85 83 82 82 81 77 -35 29 26 24 24 21 16 -40 35 34 30 27 26 25 -40 33 32 28 27 30 -25 19 17 13 13 -32 26 25 21 17 -87 80 77 76 72 71 65 -67 60 57 52 49 -22 17 11 8 10 -96 90 87 81 81 -40 33 31 30 28 26 20 16 -65 58 55 50 48 45 44 37 -75 75 77 80 85 87 88 85 -93 94 96 93 93 -9 16 13 14 14 -79 79 78 79 79 -20 19 22 23 27 28 30 -26 22 20 13 12 8 -71 64 63 57 56 53 50 50 -60 62 63 63 67 -43 38 37 35 34 37 34 -64 60 59 61 58 57 54 48 -19 14 13 11 11 -89 87 91 94 94 -3 7 10 11 14 19 21 20 -91 90 93 91 91 -26 26 24 20 17 16 -57 53 51 49 47 46 47 -35 32 29 31 28 27 20 -15 15 16 18 21 21 -18 22 23 23 26 26 -29 31 33 34 38 40 41 38 -25 19 16 12 5 -57 54 56 56 61 -7 14 17 21 23 -52 57 62 63 64 67 70 74 -79 75 73 74 77 -55 52 54 55 56 53 -56 55 52 51 51 48 48 -58 60 58 61 59 -84 86 83 77 75 -32 32 33 33 37 -54 50 47 40 40 -43 40 44 47 51 -58 58 60 61 64 65 65 72 -85 88 86 85 82 81 80 73 -42 47 49 50 52 56 55 -12 12 11 11 9 4 -22 26 30 32 35 32 -80 73 72 74 73 71 67 -22 20 17 17 13 -77 72 69 68 61 -75 74 77 79 79 79 -28 32 34 38 41 43 45 -30 30 27 25 24 22 22 18 -34 37 35 33 31 31 -73 77 80 84 90 -55 50 52 50 47 45 39 -89 85 83 79 78 81 -30 34 37 39 41 42 44 47 -26 26 25 25 23 23 -45 38 35 33 30 28 26 25 -73 77 79 79 83 -86 82 82 81 74 -29 32 30 25 18 -30 30 25 23 19 -19 12 13 11 11 -92 88 85 82 79 80 78 74 -65 64 65 68 71 74 77 77 -13 13 13 10 9 12 -74 75 77 80 82 88 86 -34 35 34 32 31 31 28 29 -17 11 9 9 7 -34 38 37 39 41 -50 49 46 46 45 42 39 42 -13 19 20 23 24 27 27 25 -33 40 45 46 46 -21 27 29 30 31 33 33 -81 74 71 65 63 61 60 -74 78 81 83 90 94 -21 21 14 11 4 -70 70 69 65 63 56 -46 50 51 51 54 57 58 57 -52 58 60 61 62 64 64 65 -42 42 36 33 32 29 28 31 -74 75 74 72 75 73 71 67 -62 62 64 67 74 75 78 85 -79 75 72 71 70 68 -53 58 59 56 57 58 61 -85 82 85 86 86 83 -4 6 8 6 6 -27 28 35 38 41 42 43 43 -94 92 90 91 90 87 86 82 -34 34 35 35 37 39 36 -18 19 20 19 16 14 -62 67 70 73 74 78 78 -64 70 75 78 81 -58 58 61 60 59 52 -85 79 75 72 68 -68 68 71 68 65 62 59 55 -75 76 74 68 66 65 65 -43 47 51 54 54 -56 59 57 53 50 48 -33 37 38 38 43 -84 79 72 70 64 -67 65 68 70 69 68 -23 22 23 24 29 -18 24 25 26 26 33 -11 16 20 22 23 26 27 31 -68 68 67 66 64 -44 38 38 37 37 -62 58 58 55 53 50 52 -11 14 15 15 18 21 21 -36 39 41 40 38 41 -42 46 49 53 54 55 57 61 -49 47 44 45 48 51 53 57 -62 68 70 71 73 -32 32 33 39 41 43 44 44 -85 82 86 89 87 -20 24 25 32 35 42 -73 73 75 77 80 84 87 93 -64 64 66 68 70 69 73 -29 27 25 22 21 19 15 9 -25 26 27 29 33 36 39 -14 19 20 22 25 27 26 -55 57 54 54 51 50 -41 34 31 29 25 -44 44 41 39 38 37 40 42 -15 13 15 16 17 20 21 24 -3 5 6 7 12 15 -13 13 15 18 21 26 30 -61 58 61 67 71 -11 8 11 14 20 22 22 -53 53 55 57 60 63 -61 59 54 53 50 48 44 -50 43 39 36 37 -53 52 51 50 46 44 42 -54 50 48 45 43 39 -65 65 62 61 59 57 53 -96 96 95 93 91 90 84 -42 44 48 51 57 -82 80 80 83 87 -78 78 82 85 88 -18 22 25 26 24 26 28 28 -17 17 20 24 25 26 27 31 -81 80 79 77 73 -35 33 29 26 25 23 24 -81 77 74 68 70 -51 53 50 49 51 46 -19 23 24 26 30 -36 36 35 34 32 32 -6 9 9 12 10 -24 22 16 14 11 9 9 -23 20 18 15 13 10 7 8 -70 71 78 79 83 -66 71 74 77 80 87 84 -31 35 38 36 39 40 43 42 -65 63 64 65 70 72 -25 25 23 19 17 14 11 13 -25 31 32 33 36 35 39 -87 83 82 80 80 -45 49 51 53 56 59 59 -84 82 79 77 76 76 -39 45 46 47 50 55 60 -16 16 14 17 19 20 23 -37 35 38 40 42 40 41 41 -82 82 85 87 89 90 94 94 -12 14 13 10 9 -63 67 69 71 73 74 71 -15 19 22 24 22 24 28 -82 82 83 89 90 91 94 95 -42 41 39 36 33 32 26 28 -10 13 14 17 17 22 -85 85 86 84 85 85 -62 57 57 56 51 -91 85 84 84 82 84 -64 65 66 69 72 74 79 -64 57 56 50 48 44 -29 29 29 27 24 22 -99 95 94 92 89 87 83 82 -79 83 85 87 94 96 97 -95 91 88 84 83 80 79 72 -86 86 84 85 84 -83 86 85 81 76 -30 29 28 26 22 19 15 -67 63 62 64 64 -6 6 10 13 14 11 -54 53 50 52 58 -37 36 36 35 33 30 27 21 -86 87 85 82 81 79 76 78 -46 50 53 56 59 65 -76 78 81 85 88 92 -62 58 57 55 54 54 50 -57 57 59 61 62 61 -83 79 78 75 74 68 66 59 -56 52 48 47 44 44 -54 50 48 46 43 43 42 -15 14 15 16 17 19 22 26 -72 73 68 67 64 63 62 58 -12 19 20 22 26 28 29 36 -26 33 30 32 35 41 -27 29 31 32 33 37 -64 64 62 61 57 54 51 51 -54 61 61 62 66 -59 63 66 71 73 76 79 79 -95 88 86 84 83 82 78 75 -61 62 61 61 61 -61 58 57 51 50 48 -39 35 38 36 34 -44 44 47 50 52 54 56 60 -42 40 38 35 32 26 -30 27 24 21 22 20 23 -19 19 22 24 27 28 34 -49 50 47 46 42 42 -82 77 79 78 76 77 -2 1 3 3 4 5 6 -77 77 76 74 69 67 66 64 -49 50 53 54 56 58 58 -83 86 84 82 78 77 74 75 -60 54 50 49 47 46 44 44 -49 48 47 47 44 42 39 36 -77 73 73 70 67 67 -31 27 22 19 18 -64 60 58 56 54 49 -62 66 68 68 70 73 75 -89 94 95 97 99 99 99 -51 53 49 47 46 43 39 -8 10 11 12 17 18 25 -87 88 90 93 91 92 95 99 -70 70 71 68 70 73 80 -57 55 61 64 62 -58 59 61 64 62 64 -26 28 30 31 33 31 -67 71 74 75 74 81 -33 34 33 31 30 28 24 -42 35 33 31 29 27 25 27 -24 22 21 17 17 -70 63 62 62 60 56 -33 35 35 38 39 40 -2 2 4 4 5 5 -43 43 41 40 36 33 29 -85 85 86 86 89 92 95 -26 32 29 32 34 36 33 -26 27 30 28 34 -51 54 54 51 50 48 44 -71 71 65 62 59 59 -58 53 48 45 44 46 -97 93 91 87 84 80 -11 10 13 14 15 16 23 28 -43 48 51 52 57 -43 42 44 48 50 56 -58 63 64 65 66 69 70 74 -80 79 76 73 68 61 -4 4 7 4 3 -82 81 80 78 77 -81 84 87 89 90 91 -67 64 62 61 58 56 53 50 -84 82 80 77 76 -70 71 73 74 77 78 81 82 -24 26 27 29 30 32 -32 30 28 26 25 23 21 20 -36 38 39 41 43 -32 29 26 25 23 22 19 18 -40 37 34 33 32 31 29 -81 84 85 87 89 -20 22 23 25 28 -53 50 49 48 47 -48 49 50 53 55 56 -18 17 14 13 12 9 6 4 -14 12 9 8 5 4 3 -9 10 11 12 13 16 18 -50 48 47 45 44 41 40 37 -46 48 50 52 53 -21 20 19 18 16 -28 26 23 21 19 -82 80 79 76 73 72 70 -70 69 66 65 64 63 -83 86 87 90 92 95 -46 49 52 55 58 59 62 63 -30 27 24 22 19 18 16 -19 17 14 12 11 9 -48 51 54 55 56 59 61 63 -17 16 15 14 12 11 -71 68 66 64 63 61 59 -74 73 72 69 66 64 61 60 -38 39 41 42 44 -38 35 32 31 29 -53 52 51 48 46 44 41 39 -23 22 20 17 15 14 -39 38 37 35 32 30 27 24 -60 59 57 54 52 49 -34 37 39 40 42 -76 79 82 85 88 -65 62 59 57 55 53 52 51 -20 22 24 27 28 31 33 36 -76 79 81 83 85 86 -37 34 32 30 27 24 23 -41 42 44 45 47 50 -6 8 9 10 11 12 -51 53 55 56 59 -65 62 60 58 57 55 54 52 -7 8 11 13 16 19 20 22 -49 46 45 44 42 -50 53 55 58 60 63 65 68 -63 60 58 57 54 -9 11 14 17 20 21 22 -37 36 35 32 31 30 29 28 -82 79 76 73 70 67 66 64 -8 11 12 15 18 20 -78 79 80 82 85 86 -96 93 90 89 88 86 84 -69 72 75 76 77 79 82 -50 47 44 43 42 41 38 35 -67 69 70 73 74 75 77 -52 53 55 58 59 -23 25 28 31 33 35 38 -77 78 79 80 82 83 -91 89 87 84 81 -17 14 11 8 6 -40 43 44 47 49 51 52 53 -62 65 68 69 71 74 76 -34 36 38 40 42 44 -86 83 80 79 76 73 72 -82 83 84 87 90 92 94 97 -14 15 16 17 18 19 20 -77 80 83 84 87 88 -80 77 75 72 70 69 67 66 -44 42 40 38 36 -39 40 41 44 46 48 -17 15 13 12 9 -54 56 57 60 63 -86 89 91 93 96 -36 33 31 29 27 25 23 21 -66 63 60 59 56 53 52 49 -79 81 83 86 89 90 91 -36 35 32 31 29 28 26 24 -80 82 83 85 87 -45 48 51 52 55 57 58 61 -90 89 88 86 83 80 -28 29 31 32 34 36 37 -7 10 11 13 15 -78 81 84 87 89 90 91 92 -73 74 77 80 82 83 -94 93 92 90 87 86 83 80 -72 73 75 78 81 82 84 86 -2 3 4 7 8 -77 79 80 81 82 83 -67 66 65 62 59 56 55 53 -37 38 41 43 46 47 -57 59 62 65 67 -78 80 81 83 86 88 90 -12 15 16 17 18 20 23 25 -59 58 57 55 53 51 -80 82 84 85 87 90 -60 61 62 64 66 68 69 70 -99 96 94 91 90 -80 77 76 74 72 71 69 -44 45 48 51 53 54 56 -22 23 25 26 29 30 -40 39 36 34 32 -11 10 7 6 5 -46 49 50 52 55 57 -83 85 88 90 93 -57 58 60 63 66 -76 78 81 82 85 -5 7 8 10 11 13 15 16 -24 25 26 28 30 32 34 -53 54 55 57 59 -34 37 38 41 43 46 47 49 -68 70 73 74 77 79 -41 39 36 35 33 30 27 26 -62 59 58 56 53 52 49 -27 25 24 22 20 -3 6 9 11 14 17 18 -51 48 45 43 41 40 38 36 -99 98 97 95 92 90 87 -22 19 18 16 14 11 8 -13 15 18 21 24 26 27 -75 73 72 71 68 65 -97 95 92 91 88 -65 66 69 71 72 73 74 -46 48 49 52 55 58 -43 42 40 39 37 35 33 31 -19 18 15 13 12 11 10 7 -63 66 68 70 73 75 -60 62 65 68 71 72 73 75 -97 96 93 91 88 86 -74 75 77 80 81 82 -52 53 56 57 59 60 61 63 -16 19 20 23 25 -44 43 40 39 37 35 -25 23 22 20 19 17 14 -22 20 19 17 16 15 12 10 -32 30 28 27 24 -44 45 48 51 52 53 54 56 -71 72 75 78 80 -65 67 70 71 73 75 77 79 -25 27 29 32 35 37 39 42 -66 64 61 60 59 -65 64 61 60 59 57 -72 71 68 66 65 62 -68 71 74 75 76 77 -19 16 13 11 9 -48 45 43 42 40 38 37 -51 48 47 46 45 42 40 39 -43 44 47 48 49 52 55 -86 83 82 80 78 -80 78 75 72 70 -70 67 64 63 62 59 56 55 -96 94 92 89 88 -83 84 85 88 89 91 -80 81 82 83 85 88 90 -36 37 39 41 44 45 -41 43 44 45 47 48 51 -62 65 68 70 72 75 77 80 -83 84 87 88 89 92 95 -34 37 40 43 45 47 -62 60 58 56 54 -81 83 84 87 89 90 93 -98 96 95 93 92 91 89 -28 31 33 34 35 36 39 41 -35 34 32 30 29 -75 73 70 68 66 64 62 59 -17 18 21 24 25 27 30 32 -31 33 34 36 39 -67 66 65 63 62 59 -45 47 50 53 54 -8 9 11 13 15 16 -22 20 17 15 14 13 11 -81 84 87 89 90 -54 56 58 59 60 61 63 -51 52 55 57 59 62 65 67 -73 76 78 79 81 83 86 89 -94 93 90 89 88 -30 31 32 33 36 38 40 -46 44 41 40 38 35 -66 64 62 61 58 56 54 -14 16 19 22 24 -55 58 60 61 63 66 69 72 -67 66 65 63 61 58 55 -55 57 60 62 64 67 70 -25 28 31 33 35 37 -98 97 95 93 91 90 -58 61 63 65 67 69 70 -75 74 72 69 66 -71 74 75 78 79 80 81 -13 16 18 20 22 25 26 28 -84 86 87 89 92 -10 11 12 15 18 21 23 26 -91 88 86 83 81 78 76 -62 63 64 67 69 72 -32 31 30 27 24 21 20 17 -49 51 52 55 56 58 60 -76 77 79 82 83 86 -76 77 79 80 81 83 85 88 -17 20 22 25 26 29 31 -62 59 57 56 53 -12 10 7 6 5 4 3 -65 64 63 60 57 56 54 -90 91 92 95 97 98 -21 24 25 27 28 29 31 -33 34 37 38 40 -16 15 12 9 7 -71 73 75 78 79 -94 91 90 88 85 82 -80 77 75 72 69 -80 82 83 86 87 89 91 94 -89 91 92 94 95 98 -60 58 55 52 49 46 -44 45 47 49 52 55 -66 65 64 62 59 56 54 51 -49 50 51 52 53 54 56 -15 12 9 7 5 4 1 -19 17 16 14 11 8 -29 28 27 25 22 21 19 -23 20 18 15 13 10 -19 22 25 28 29 32 -55 53 52 51 48 47 45 44 -15 17 20 22 24 25 26 -52 53 56 58 59 62 65 67 -79 80 82 84 85 88 91 -3 6 7 8 11 12 13 16 -21 23 24 27 30 31 -37 40 41 42 43 45 47 50 -66 67 68 69 72 -51 52 53 54 55 -33 34 37 40 41 42 45 -85 84 83 80 77 -54 51 49 46 45 44 -96 93 91 90 87 84 81 80 -82 80 79 78 77 74 71 69 -49 47 46 43 41 40 39 -25 24 22 21 18 -98 95 93 92 89 -35 36 39 41 42 44 -45 44 42 39 38 35 34 31 -68 70 71 74 76 77 80 82 -44 46 48 49 52 55 -87 86 83 80 78 76 -78 76 75 72 70 69 67 65 -56 59 61 62 63 66 69 -64 66 67 68 69 -78 80 82 85 88 90 93 96 -85 88 89 91 93 95 98 99 -33 34 36 38 39 -34 33 31 30 27 25 23 20 -16 15 13 12 9 7 6 -62 59 57 56 55 -72 71 68 65 64 61 60 -6 7 8 10 11 14 17 -78 79 80 83 84 87 88 91 -66 69 70 72 75 76 77 79 -99 96 95 93 92 90 87 84 -4 6 8 11 12 14 16 -39 36 35 32 30 29 -93 91 88 85 84 -31 33 34 36 38 40 43 -59 56 55 54 53 50 47 44 -14 16 18 21 24 27 30 31 -33 30 28 26 24 -83 82 79 76 73 -44 41 40 39 38 37 36 33 -5 6 9 11 14 16 17 19 -11 12 15 16 18 20 23 -33 31 30 28 25 22 20 -43 42 40 39 37 34 31 29 -1 4 7 8 10 13 -30 32 34 35 37 39 -37 39 42 45 46 49 51 52 -72 75 77 78 79 80 82 -85 83 80 77 76 74 72 70 -60 57 56 54 52 51 -62 61 60 57 54 -85 82 80 78 75 -42 45 47 48 50 51 52 54 -40 42 43 46 47 50 -44 47 49 50 51 -42 45 47 48 49 52 53 -24 26 28 29 31 33 -28 25 23 22 19 16 -14 13 11 9 6 3 1 -68 66 63 60 57 56 54 51 -3 4 5 8 11 14 16 -41 43 44 45 48 50 53 55 -62 64 67 70 72 74 76 -16 13 11 10 7 5 3 1 -87 86 83 82 79 -26 29 30 32 35 36 37 -58 61 62 64 67 -83 82 79 76 73 70 -65 67 69 70 72 73 75 77 -64 65 66 67 69 71 -1 3 5 7 9 -51 53 54 55 58 61 -19 16 15 13 11 10 7 5 -82 79 76 74 71 68 67 64 -32 30 28 27 25 22 20 -71 72 73 76 78 81 -45 43 40 38 37 35 34 31 -35 34 32 31 28 -16 17 18 21 22 25 28 29 -24 23 22 21 18 17 16 13 -54 56 59 60 63 66 68 -56 59 61 64 65 -63 62 59 56 54 -43 45 48 50 52 55 56 -80 77 76 75 73 71 -35 36 39 42 45 47 49 -6 9 12 15 18 20 23 -71 73 76 77 80 83 85 -57 59 61 63 64 67 68 70 -30 28 25 22 21 18 15 14 -70 67 64 63 61 58 57 -26 24 21 20 18 17 15 13 -60 59 56 54 51 48 47 45 -93 95 96 98 99 -91 88 86 84 81 80 79 76 -12 10 9 6 3 -22 19 16 15 14 11 8 -40 39 38 35 32 -64 62 60 58 56 55 -31 33 35 38 40 42 -18 17 14 11 9 6 5 2 -82 85 87 88 90 91 -65 64 61 58 57 54 -28 30 32 33 34 35 38 -58 55 54 51 50 47 45 42 -31 30 28 25 22 19 18 -53 55 56 59 61 -16 15 13 10 8 5 3 1 -34 37 40 43 45 47 50 53 -38 35 34 31 29 -20 17 16 14 11 -27 24 21 20 18 -79 80 83 84 87 88 89 -30 29 26 24 22 21 -47 50 53 56 58 61 -77 74 72 69 66 -78 77 75 72 70 67 65 64 -79 77 74 73 70 69 67 64 -54 56 58 59 61 64 -87 85 82 80 79 -59 60 63 65 68 71 72 -82 83 86 89 91 94 97 98 -15 14 12 9 7 6 4 3 -24 25 27 29 31 32 35 -68 65 64 61 58 57 -31 34 36 38 40 41 -49 51 52 55 56 58 61 64 -15 14 13 10 7 -88 87 86 84 82 80 79 78 -60 61 64 65 68 69 -90 92 94 97 99 -62 64 66 68 70 72 73 74 -34 35 36 38 41 43 45 -25 27 29 30 31 33 34 -80 81 82 84 85 86 -22 19 16 15 13 11 10 -45 48 49 52 53 54 57 -60 57 55 52 51 48 45 -95 92 89 88 86 84 -51 50 48 46 43 40 39 -60 58 57 55 53 50 47 -69 67 65 63 60 57 -37 40 42 43 44 46 49 51 -11 14 16 18 21 22 25 -51 48 46 45 44 41 40 -80 81 82 84 87 90 -46 44 42 40 37 35 32 29 -62 63 65 67 68 71 74 -5 7 8 11 13 16 19 20 -19 16 13 10 9 -45 48 49 51 53 54 55 56 -3 4 5 6 8 11 12 15 -44 47 48 51 54 57 60 -83 82 80 77 74 72 71 68 -69 68 65 63 62 61 59 56 -14 11 8 6 4 -82 83 86 87 90 92 -62 59 57 56 55 54 53 -64 65 67 70 72 75 -48 47 44 42 41 40 38 36 -26 25 23 20 19 16 -61 59 58 55 54 52 -70 73 75 76 77 78 79 -68 71 72 74 77 78 80 83 -69 70 71 72 75 76 78 80 -84 85 87 90 91 94 96 99 -2 3 5 8 9 -27 29 31 33 34 37 38 -65 63 61 58 57 56 -59 57 54 53 51 49 -46 47 49 51 54 57 -66 68 70 72 74 77 80 81 -55 53 51 48 46 43 -84 83 80 79 76 75 73 -60 63 66 68 71 72 74 77 -82 84 85 86 88 89 91 -51 53 55 58 61 62 65 66 -55 57 59 61 64 65 -41 42 44 47 48 50 -67 64 63 61 59 58 55 52 -20 22 25 26 28 31 32 -32 35 38 41 43 46 -13 10 9 8 6 3 1 -31 28 27 26 23 20 -61 60 59 57 55 -77 80 83 86 89 90 -29 26 25 22 19 -32 34 37 39 42 43 -76 74 73 71 69 66 -23 26 28 29 32 34 36 37 -34 33 32 30 29 27 24 22 -62 59 57 56 55 52 49 46 -63 62 60 58 57 54 -52 54 57 60 62 65 -1 4 5 6 7 -8 9 12 15 17 19 21 -16 18 21 23 26 29 -72 69 68 67 65 62 60 59 -51 50 47 45 44 41 40 39 -27 24 22 19 18 17 -21 22 24 27 28 31 33 -84 83 80 79 78 76 74 73 -84 85 86 88 90 92 93 -38 39 41 44 47 49 52 -3 6 9 10 13 14 15 -14 12 11 9 6 4 -79 77 74 71 69 67 66 64 -55 54 53 50 49 47 45 -54 55 56 58 60 62 63 65 -41 44 45 48 49 52 -75 77 78 79 81 83 86 -55 57 58 59 61 63 -97 96 94 93 90 87 -78 80 82 84 85 88 89 91 -57 54 51 50 48 47 45 43 -66 65 63 60 59 56 -26 24 23 22 19 17 16 14 -46 43 40 39 37 -71 69 66 63 61 -68 66 64 61 58 55 53 51 -68 65 63 60 58 57 55 -65 68 69 72 74 76 77 79 -82 81 78 75 72 69 66 65 -79 76 73 71 68 67 66 -21 23 24 25 26 -39 36 34 31 30 28 25 24 -6 9 10 12 15 16 -33 30 27 25 23 20 19 16 -46 48 50 52 54 -75 77 79 81 84 85 86 89 -83 84 85 87 88 90 93 -43 45 46 48 51 54 56 58 -29 32 35 38 40 -29 27 26 24 22 -41 38 35 33 30 27 26 -42 43 45 48 50 51 54 55 -93 91 90 89 88 85 83 -10 13 15 17 20 -62 64 67 68 69 -18 17 15 13 10 8 7 -44 46 49 51 54 -41 40 37 34 31 29 -89 92 94 96 97 99 -81 79 76 73 71 69 66 63 -46 49 52 55 58 60 61 63 -40 41 43 44 46 48 -67 69 72 73 75 76 77 -90 87 85 84 81 -8 7 4 2 1 -35 36 37 39 41 43 -72 74 75 76 77 78 80 -87 84 83 80 78 75 73 -78 80 82 85 88 90 91 -57 54 52 51 49 48 45 42 -30 33 34 36 39 40 43 -52 55 58 60 62 64 -72 69 67 66 64 63 -98 95 92 90 88 87 85 82 -96 94 91 89 87 86 -42 41 38 36 34 32 29 28 -73 76 79 82 85 87 -30 32 33 36 39 41 42 -75 72 69 68 67 66 65 64 -94 93 90 87 86 84 -32 34 36 38 40 43 46 -29 26 25 24 21 -89 92 93 94 95 97 -69 72 74 75 77 78 79 81 -77 74 73 72 70 69 -67 65 62 60 59 -11 13 15 17 18 21 22 -21 19 16 15 12 9 6 3 -90 87 85 83 80 78 75 -27 30 31 34 35 36 38 -54 55 57 58 60 62 65 67 -38 41 44 46 49 -24 25 26 29 32 -80 79 76 73 72 -73 70 68 65 63 61 58 -28 26 23 20 17 16 14 -36 34 31 28 26 23 -66 64 63 62 59 58 +forward 9 +down 9 +down 6 +up 2 +down 5 +forward 3 +forward 6 +forward 8 +down 8 +up 4 +down 5 +down 4 +up 6 +down 7 +forward 5 +forward 5 +down 9 +down 5 +up 4 +forward 1 +forward 7 +down 8 +up 2 +down 1 +down 3 +up 7 +up 5 +down 8 +down 6 +forward 9 +up 8 +down 4 +forward 9 +forward 4 +forward 1 +up 9 +forward 5 +forward 1 +down 2 +down 7 +forward 5 +up 8 +forward 1 +down 9 +down 3 +forward 6 +up 6 +down 4 +forward 6 +down 3 +forward 5 +forward 1 +down 3 +forward 3 +down 8 +down 2 +forward 8 +forward 1 +up 4 +forward 4 +down 1 +down 5 +forward 2 +forward 9 +forward 5 +down 2 +up 9 +forward 2 +down 2 +down 2 +down 9 +up 8 +down 3 +forward 8 +down 4 +up 3 +down 1 +forward 7 +down 7 +forward 9 +down 2 +up 9 +up 3 +down 2 +up 2 +forward 8 +down 3 +forward 2 +forward 6 +down 5 +up 9 +forward 6 +forward 7 +down 3 +forward 1 +down 2 +forward 8 +up 5 +down 6 +forward 1 +down 8 +down 5 +forward 4 +down 5 +forward 3 +forward 5 +up 3 +down 4 +down 8 +up 7 +down 7 +forward 3 +down 2 +forward 3 +up 2 +down 1 +up 2 +forward 4 +forward 2 +down 1 +up 9 +forward 5 +forward 7 +down 6 +down 3 +down 5 +down 4 +up 4 +forward 8 +down 6 +forward 1 +forward 6 +down 8 +down 2 +down 3 +up 8 +forward 9 +down 5 +down 6 +forward 7 +down 2 +forward 6 +up 3 +up 6 +forward 2 +up 8 +up 2 +up 4 +forward 3 +forward 4 +down 7 +up 1 +forward 5 +forward 1 +forward 9 +forward 8 +up 6 +forward 4 +forward 2 +up 9 +forward 8 +down 2 +forward 4 +forward 4 +forward 6 +down 3 +forward 8 +forward 7 +forward 6 +forward 3 +down 5 +down 3 +forward 4 +forward 7 +forward 4 +forward 3 +forward 1 +forward 1 +up 1 +down 4 +up 5 +up 4 +up 8 +forward 7 +forward 4 +forward 3 +up 6 +up 4 +down 4 +up 4 +down 6 +forward 1 +forward 5 +up 3 +forward 5 +up 9 +down 9 +forward 1 +down 3 +forward 7 +up 2 +up 1 +down 8 +forward 9 +forward 3 +forward 2 +forward 6 +down 2 +forward 4 +up 9 +forward 6 +forward 8 +down 5 +down 6 +forward 7 +forward 5 +forward 6 +forward 9 +forward 5 +up 3 +forward 2 +forward 2 +forward 8 +down 5 +forward 9 +forward 7 +forward 5 +up 2 +up 7 +forward 7 +forward 9 +down 9 +up 5 +up 5 +up 1 +forward 8 +forward 3 +forward 2 +forward 4 +down 7 +down 7 +forward 7 +down 2 +forward 4 +down 6 +down 8 +down 5 +down 9 +forward 1 +forward 4 +forward 1 +forward 1 +up 5 +down 5 +up 7 +up 7 +down 6 +down 5 +forward 9 +up 7 +down 2 +down 9 +down 9 +forward 3 +up 9 +down 7 +down 2 +up 6 +down 9 +down 6 +up 3 +up 6 +forward 4 +forward 6 +down 2 +up 3 +down 3 +forward 8 +up 1 +forward 8 +forward 5 +forward 4 +forward 9 +forward 8 +up 1 +forward 2 +down 8 +up 9 +forward 3 +forward 9 +down 3 +down 8 +down 5 +up 5 +up 3 +down 5 +down 4 +down 2 +forward 1 +forward 8 +down 3 +down 1 +down 5 +down 1 +up 1 +down 4 +forward 6 +down 5 +down 7 +forward 4 +down 2 +down 2 +up 1 +forward 9 +down 2 +forward 7 +up 4 +down 8 +down 5 +up 2 +down 7 +forward 7 +up 4 +down 8 +forward 9 +up 3 +down 9 +forward 4 +forward 5 +up 6 +forward 5 +down 6 +down 3 +down 1 +down 6 +forward 7 +forward 3 +forward 4 +up 8 +forward 7 +down 3 +up 2 +up 3 +up 5 +forward 4 +forward 9 +forward 1 +down 2 +forward 4 +forward 1 +forward 6 +down 6 +forward 8 +down 2 +forward 7 +down 5 +forward 6 +down 4 +down 8 +down 6 +forward 9 +forward 2 +forward 4 +forward 9 +down 1 +down 9 +forward 2 +down 3 +forward 2 +down 4 +down 6 +up 5 +forward 9 +forward 1 +down 1 +forward 8 +forward 7 +forward 2 +forward 4 +forward 3 +up 8 +down 4 +forward 5 +up 5 +forward 4 +up 5 +forward 7 +up 7 +forward 5 +down 3 +up 9 +up 2 +forward 9 +forward 8 +forward 7 +down 8 +forward 8 +down 2 +forward 7 +forward 4 +down 7 +up 4 +forward 2 +forward 1 +up 5 +forward 5 +down 5 +down 1 +down 7 +up 6 +down 5 +down 6 +forward 2 +forward 2 +forward 8 +down 9 +down 4 +down 3 +forward 7 +forward 6 +forward 5 +up 9 +forward 8 +forward 9 +forward 4 +down 9 +down 6 +down 2 +down 7 +up 3 +forward 3 +forward 5 +up 6 +down 7 +down 3 +forward 3 +down 5 +down 2 +down 4 +up 4 +down 5 +forward 3 +forward 1 +forward 7 +down 7 +forward 8 +up 7 +forward 3 +forward 8 +down 9 +down 1 +forward 4 +forward 4 +forward 5 +forward 6 +down 5 +down 6 +forward 6 +down 5 +down 7 +forward 2 +down 1 +down 8 +down 3 +down 4 +forward 9 +forward 4 +down 4 +up 4 +down 3 +forward 5 +down 4 +forward 3 +forward 9 +up 7 +down 5 +down 1 +forward 8 +down 2 +forward 9 +forward 6 +forward 3 +down 7 +forward 2 +forward 5 +down 6 +forward 1 +forward 7 +up 1 +forward 3 +forward 7 +forward 3 +forward 5 +down 5 +forward 6 +forward 9 +up 4 +forward 6 +forward 3 +down 9 +up 4 +up 6 +down 5 +down 8 +down 2 +down 9 +forward 8 +up 8 +forward 3 +forward 8 +up 8 +down 5 +down 9 +down 1 +down 3 +forward 3 +forward 9 +up 9 +down 5 +down 6 +down 1 +forward 9 +up 3 +forward 3 +forward 9 +down 7 +down 4 +down 5 +up 5 +forward 2 +down 5 +up 5 +up 4 +up 5 +forward 1 +down 2 +forward 7 +down 9 +forward 8 +forward 7 +forward 5 +down 3 +forward 5 +forward 7 +forward 1 +up 5 +forward 3 +forward 1 +down 1 +up 1 +down 7 +up 4 +forward 8 +up 9 +down 9 +down 9 +forward 8 +forward 3 +forward 3 +up 4 +down 3 +forward 4 +forward 6 +forward 7 +down 2 +forward 5 +down 3 +down 9 +down 4 +down 4 +forward 3 +down 3 +down 6 +up 5 +up 4 +down 6 +up 9 +down 9 +up 2 +up 1 +down 3 +forward 6 +up 6 +forward 1 +down 9 +down 6 +down 8 +down 9 +down 6 +forward 4 +up 6 +down 2 +forward 9 +forward 2 +down 4 +up 3 +forward 6 +down 2 +down 7 +down 1 +up 6 +down 5 +forward 1 +forward 7 +up 9 +forward 2 +up 8 +down 4 +forward 8 +up 2 +up 2 +down 1 +forward 6 +down 3 +forward 7 +forward 2 +down 5 +down 6 +up 8 +forward 4 +up 2 +forward 7 +forward 4 +forward 2 +down 1 +forward 7 +down 1 +up 1 +down 9 +forward 5 +forward 3 +down 6 +up 5 +up 9 +down 1 +forward 2 +forward 8 +down 5 +down 4 +forward 6 +forward 1 +forward 4 +forward 2 +forward 4 +up 7 +forward 5 +forward 2 +down 2 +forward 1 +forward 4 +down 4 +forward 7 +down 6 +forward 9 +forward 9 +forward 3 +up 5 +up 5 +down 6 +forward 7 +forward 8 +down 5 +forward 6 +forward 5 +forward 1 +forward 7 +forward 6 +up 2 +up 4 +forward 6 +down 4 +down 9 +forward 9 +down 4 +up 2 +down 5 +forward 9 +down 7 +forward 9 +up 9 +forward 9 +up 7 +up 2 +up 6 +forward 1 +up 9 +down 4 +down 8 +forward 8 +forward 7 +up 5 +forward 4 +down 3 +down 5 +up 9 +up 5 +forward 1 +down 3 +down 9 +up 2 +forward 5 +down 8 +down 3 +forward 5 +up 8 +forward 1 +forward 8 +forward 6 +down 2 +down 8 +down 8 +down 8 +forward 8 +forward 9 +up 2 +up 9 +up 8 +forward 2 +down 4 +up 7 +down 3 +forward 1 +forward 7 +down 8 +down 2 +forward 6 +forward 2 +down 6 +down 6 +up 9 +forward 9 +down 7 +forward 7 +down 4 +up 2 +up 7 +down 8 +forward 6 +up 2 +forward 4 +forward 9 +down 7 +forward 4 +up 4 +forward 8 +down 4 +forward 6 +forward 8 +down 2 +down 6 +up 4 +forward 5 +forward 1 +down 2 +up 6 +down 6 +down 3 +up 2 +up 4 +forward 1 +up 3 +up 5 +down 4 +down 1 +down 7 +down 7 +down 4 +forward 7 +down 9 +down 4 +down 2 +down 7 +forward 7 +forward 8 +forward 1 +down 8 +down 3 +down 5 +down 8 +forward 7 +forward 9 +forward 3 +up 8 +forward 5 +up 5 +up 2 +forward 4 +forward 6 +down 8 +down 1 +up 6 +forward 5 +forward 5 +down 9 +forward 3 +up 1 +down 1 +forward 5 +forward 5 +up 5 +down 4 +up 6 +forward 8 +forward 6 +up 5 +forward 2 +up 3 +forward 9 +forward 5 +down 9 +forward 3 +forward 1 +forward 4 +up 5 +forward 3 +forward 3 +up 9 +down 2 +down 3 +down 1 +forward 8 +down 4 +forward 8 +forward 8 +down 8 +forward 9 +forward 8 +forward 7 +down 6 +forward 5 +down 6 +up 8 +forward 6 +down 8 +forward 8 +down 6 +up 2 +forward 5 +forward 1 +up 2 +forward 4 +down 5 +up 8 +up 3 +forward 8 +down 3 +forward 4 +up 5 +forward 2 +down 3 +down 2 +down 7 +forward 5 +down 5 +forward 2 +up 1 +down 3 +down 9 +up 4 +up 3 +down 8 +up 1 +down 5 +down 5 +forward 7 +up 2 +down 3 +up 3 +forward 1 +forward 4 +forward 3 +up 5 +down 5 +up 3 +down 2 +forward 6 +down 6 +up 3 +forward 9 +down 9 +up 4 +down 4 +down 6 +up 9 +forward 3 +forward 2 +up 2 +up 5 +forward 2 +up 5 +forward 7 +down 8 +down 7 +up 8 +down 1 +up 1 +up 9 +forward 7 +forward 5 +down 9 +forward 8 +down 8 +forward 4 +forward 1 +forward 2 +down 8 +forward 3 +forward 6 +down 9 +forward 2 +forward 9 +down 4 +down 1 +down 1 +down 8 +down 1 +down 4 +up 3 +down 7 +down 5 +forward 1 +forward 5 +forward 8 +forward 4 +down 7 +down 6 +forward 2 +down 3 +down 3 +down 3 +forward 5 +forward 7 +down 4 +forward 6 +forward 9 +down 1 +forward 7 +down 5 +up 4 +up 5 +down 3 +down 1 +up 5 +forward 4 +down 9 +down 7 +up 1 +up 9 +up 4 +forward 7 +down 5 +down 8 +forward 5 +forward 9 +down 2 +down 7 +forward 8 +forward 7 +down 6 +down 8 +forward 3 +forward 6 +down 5 +forward 7 +up 7 +down 8 +forward 9 +down 3 +up 3 +forward 4 +up 4 +forward 3 +forward 4 +forward 9 +forward 5 +down 3 +down 6 +forward 9 +forward 4 +forward 1 +forward 7 +forward 8 +forward 2 +forward 7 +up 9 +down 8 +forward 4 +forward 4 +down 5 +forward 2 +forward 5 +down 6 +forward 4 +forward 2 +forward 7 +down 6 +down 2 +down 5 +down 1 +forward 5 diff --git a/input/day_03 b/input/day_03 index a1d15f0..4c5a9e7 100644 --- a/input/day_03 +++ b/input/day_03 @@ -1,6 +1,1000 @@ -why()$mul(735,469)^?!what()don't()~~('mul(982,758)what()^-^who()mul(294,364)&#/ )&%)[~mul(285,81)what()[{where()+ mul(129,761)^]why()>$^<>who()mul(53,344)select()%mul(567,352),mul(915,20)/#(>+^how()'mul(141,658){&~!how()from()?~?who()mul(830,116)#%;mul(139,634)?,#+who()@mul(169,719)[)?'-who();mul(18,751)},when(){;/mul(691,391)mul(856,314)^mul(558,88)]('/>how()@where()(,mul(274,100)%who()#~*mul(220,748)@how(){$how()/*%$when()mul(718,754)[!when(617,291)!{(what()+*do()[;<+ /from()[mul(840,803)}?mul(429,848)?select()how()^why()],&#select()mul(519,894){ !>:^@+mul(522,225)@!^^/'[>select(118,66)>mul(847,195)when(585,749)]mul(641,667):>mul(317,349) +:/^*what()mul(352,440)select()mul(349,981))@mul(450,917)why()how()mul(471,401)?where():}select():mul(632,956))mul(727,370)!}$~*%+$don't()why()select()^]who():mul(276,773)*^^mul(757,668):}mul(232,346)%[*@$ where()mul(898,992)who()why()~+['mul(43,434),where()who()>what()mul(908,953)select();do()}!select()when()!mul(676,368)how()from(966,785)@:$+)how()mul(414,120)mul(108,395) +~{#!@select(),mul(483,964)&do()?>mul(963,893)$,,/%'mul(318,508)?,{mul(390,813)select()>(select()mul(792,357)!{where();mul(717,18)why()$#]why()$^?mul(948,239)how()&>$from()]:>?select()mul(453,180)&&]&,[how()mul(674,281);*how()mul(548,919)how()]{{who()~+where()where()&mul(962,14)/why(),%>when()mul(31,451)/)&:,>}mul(225,266)-*)where()who()]#mul(224,69)#&-+~mul(309,393)@#;%!(][select()mul(389,558)+*how()*^+when()]when()mul(995,181);(mul(5,74)&(#^from()$~&don't()}? ,($ when()mul(216,767)>()!,/how():@mul(425,905):]>>from()mul(93,831)}select()(mul(70,72)mul(137,510)[]{where()mul(477,400)&?/who()who(335,756){/mul(364,311),$select()what()mul(710,251){mul(351,763)+-}mul(517,661)mul!}?how()where()mul(948,407)-{<]*^from()who()from()mul(979,180)/,:#mul(602,496)%'what(),#}what()~how()mul(343,710))'when()from()#mul(314,877)(+,[?mul(480,685),;do()%*<^)from()what()#@what()mul(502,65)where()why()(!*where()from(){/mul(847,541)mul(116,490)]';how(612,404))when()who()&; don't()mul(446,220)(%'?;{^?mul(784,876);)]mul(959,402)%]];mul(362,432)mul(330,805)where()mul(142,473)~don't()-who()mul(965,688)when()[]):-}from()%mul(949,478)why()>~+,!&~,select()mul(633,237!-who()>where()]mul(809,464){@'/when()when()mul(720,462)&select()select() )@}'~how()mul(518,133)mul(512,118)/}what()*][++mul(56,978when(),where()&don't()who()}where()mul(329,879))&$,:when()#when()@what()mul)~who()(;mul(141,130)'?^}#+#from()'-mul(237,78)&what();];%where(614,809){:mul(391,45)mul(787,970)from()-?&~when()mul(59,790) what()where()~?what()mul(399,503)^from()where()when()mul(190,97);why()who() ,select(){mul(428,654)mul(350,302)?{mul(592,241)when()how()mul(705,191)who() !who()mul(50,6)~'from()% &]mul(902,106),select();/ why()from()>mul(800,867)select(659,586)~ )when()}~&'mul(709,298)-:'do()[who()what() mul(31,997)$%(where(309,559)%: mul(177,184)@mul(58,102) -'^why()>-why()mul(489,67)who(682,115)where()how()>why()~;'^mul(179,994)who()#[+when()}mul(343,121)]^mul(622how()select()<{how()mul(315,335)-:%mul(611,869)who()when()$where()who()mul(242who()from()%&!['do()@:^-})}';*mul(266,851);^[{!&why()how()from()mul(980,269)^{where()how()/where():;+mul(971,795)#>][+^where()mul(279,554)/why()mul(736,24)mul(63,622when()who()how() -;mul(500,888) ]where()where()when();mul(255,25)<]!-,#!+how()@do()mul(670,579)?(//]from(41,426)$do()mul(427,50)/%mul(359,247)'what()~{~-?[#mul(862,40)]{from()when()mul(426,212)>who()mul(653,462)why()mul(15,779))]mul(258,38)how()**$?(}% ;mul(624,853)[;&select()where()*-)<)mul(111,225)mul(440,503)/what()###mul(840,369)who()mul(529,595)>(-/who()mul(168,832)mul(658,544)%:~~)what()why()%+]mul(358,878)who()'$+@-)*mul(30,603)&-do()mul(627?mul(834,46)+when(751,926)-mul(132,173)who()do()-%where()mul(487,54)!$what(),{mul(546,92):$where())&/mul(978,930)-/mul)#mul(693,136)!$select()mul(490,906)%!}({;where()mul(853,453)*]!<%what(85,66)+ mul(720,355)]+mul(65,942)? $mul(736,168)#who()from()< %mul(279,223),,how()select()'mul(949,79)@)-who()when()+;/why(),don't()~(@,^~mul(55,965)what()select()'where()$)?mul(615,265)mul(801,65/why())mul(55,877)[why()+>:~&%~mul(418,463)from()+'who()(how()who()when()mul(176,831)!#'mul(350,399)>'@{ '!mul(847,397):{who()'#$where() @mul(148,609))&,+,<->$@mul(475,800)who()what()do())}from()&why(821,875))mul(675when()select()), %mul(786,308)-[,/,+mul(305,3)how()what(107,974);!}+how()mul(535,976)from()[)mul(820,558):(why(){^mul(715,523);mul(288,378)'why()$why(),@mul(184,850)when()'';^where()mul(957,549)do():~{:{)select()mul(347,642)from():(mul(834,376)>mul(803,111)(,,'select()select()who()[ !mul(143,742)+:# {mul(891,385)where()}<%^>mul(995,109)'?from()$):who()mul(414,498)&/%mul(809,958),why()[!>,mul(591,908!(how()}mul(600,673)'%* *mul(48:$);(/from(371,7)(>mul(261,884)?&don't())mul(246,229) >;*'&!don't(),+mul(131,199),$don't()-(what()mul(13,595)'don't(),who()how() %mul(839,198))do()select()*from()mul(903,555)what()mul(74,674)%;@mul(190,543#)])[^*! ,>mul(428,756)/:>+%?mul(585,685)?@~/*why()){[mul(87,499)],@~!}mul(585,674) [,],]}?[:mul(511,978)!?)don't()&~*mul(735,638)select()[{from()!{>mul(897,633)select() #*mul(680,8)mul(671*how()^mul(580,632)(} how(9,101)from()where()'<&mul(936,112)select()what()how()#mul(720,608)'&^/ &when()@mul(697,116),#from(),what()!where();(:mul(833,800#mul(842,722)why()$from()[(^from()/mul(591,920)how()(don't()}mul(65,254)#why()@mul(696,883)^?what()mul(917,413)from();>{~mul(524,943)mul(465,955)how()select() &how()how()mul(528,18)how()]]do(){who();~>who()&mul(837,821) -+when()mul(957,88){mul(446,234),(%[mul(225,735)mul(616,489)<[]~+@why(274,559)-why(45,518)mul(841,337)@mul(826,883)-(where()don't();@'+~/from()mul(829,811)(what()how()how()#mul(435,969)mul(743,179)from()/'[/,];mul(797,84)[from()>:~&$} mul(934,535)@?})%mul(630,155)]mul(81,271)why();@;%]who()mul(616,154)^do()^)-*;/mul(562,475)select()(select())$mul(119,594)what()?mul(103,712)why()(what()mul(358,496),why()~+select()what()~select()from()mul(316,752):+^mul(851,254)select()from(){when(216,975):*mul(776,658)from()from()?!mul(724,606)from()mul(878what()^%'why()>]mul(920,733)mul(500,262)when()why()do()]!who(333,560)]why()^ ,}mul(594,767)~':}!mul(69,623)})where()where()@-^mul(510,559)from()where()mul(990,412)%)[ how()mul(627,280)@mul(314,481)- from()how()who()}'<^*mul(515,459)$how()do()]mul(307,482)@~( $(@-%:mul(460,946)%mul(942,646) {>mul(160,832)where()when()what()~{where()&@mul(24,840)^#[mul(344,387)#how();mul(525,285)mul(221,638)-!/?#-$^don't()mul(91,395)select(43,376)what()]~mul(677,682)from()$ mul(358,545)$+%mul(697,89):how()who()^mul(599,952)?where()#mul(752,46)where()* ?},#'mul(803,569)select()+()-when()*mul(5,223)'<])#~*^[mul(360,79)<$+mul(784,713)-%when();from()why()<]mul(288,526)';^~do()[;where()}%?<^+<mul(25,575)#^;mul(169,580)when() ^where();]mul(575,888)'who() &::,mul(172,538)@when()*!mul(718,235)%+/mul(281,117)who(),don't();what()how()select(126,34);why(460,565)mul(153,278)~when()*]mul(284,592)what()#@mul(416,344)+how()from(472,343)+]+*? mul(218,315)who()#:$@{}mul(415,704)mul(367,153)*where()!'do()what()[mul(298,416)<'*$:} !mul(8,562 ~#/[{~-$what()&mul(312,424) '??mul-$ -mul(49,590)>[+{how(472,207)]^mul(482,423)&why()(#^' mul(178,565)~^&>from()!#?don't()why()who(596,596))who()from()>how():{@mul(385,718) ~?@//**mul(783,105)~why(22,278):#how()do(),from()!:mul(40,924){[when(),/*mul(694~+mul(311,607)who()[/'mul(744,908)%>: ]~,:mul(310,993)from()%:-(+where()when()[mul(455,786)from()~]?from()^where()mul(460,406)how()when(831,855)'where()>[,:mul(250,253)~:select()){#)[[[mul(825!<{from()mul(205,719))why()@?%mul(729,531):where(); $~ mul(547,617)when()/mul(791,433)from()%select()what()%how()%}}mul(616,548)?%:',when()where()who(),mul(417,691)mul(548,124)<-%mul(459,792)mul(93,742)&from()who()select()mul(38,516)why()$ ; -how();mul(682,71);*why(603,344)mul(588,565)*#:do()'from()!who()-mul(564,344)mul(58,41)mul(881,91) when();/#!/usr/bin/perl!+'mul(791,572) -%mul(264,168)mul(409,229)[#what()mul(393,212)$-from()'*do()mul(274,560)-{+::&>,mul(778,511)when()[;why()'how(701,98)%}mul(630,304){%{>*why(52,488)?}[(mul(149,108&'why(222,790)[mul(8,101)}>;why())what()mul$-%^why()mul(823,831)'*+mul(2,756)>, *don't();/}~&mul(602,479)~%)from()*}-when()%^mul(849,417)$>!-+from() +mul(280,463)'select(),@how(637,7)+&?mulhow(771,951)$mul(373,910)what()when()from()-]:why()mul(835,707):<]&when(915,675)~mul(628,69)&^@&#)mul(419,539):%:mul(534,992)'mul(987,602}why() when()]mul(438,915)~}$why()@!'#>don't()^)}?-select(355,550)},,(mul(649,262)^ *[&}/%mul(867,47)mul(104,808):@why()'@'($$mul(74,805)what(597,630)}(;]>~mul(217,927)>what()mul(669,965)>from()mul(647,126)->mul(52,497) select()mul(22,612from()why()'mul(277,463)!mul(473,104)[!:;mul(655,992)how()>%(what()-mul'why()!&where(11,929)+mul(314,422)$how()what(610,732):&{~}#select()mul(517,349)why()!mul(815,441)#why(349,312)))how()['$where()[mul(593,303)]#$^;mul(901,6)<-}:,who()mul(254,964)select()@['mul(297,705) who()#^mul(794,226)when()who()who(562,667)>}[mul(265,242$'from()@}mul(724,493)mul(313,610)*->%,mul(83,839)^)%mul(149,753)&when()select()from() 'mul(3,784)select()select(715,428)mul(502,975)how()who() !when();{[mul(106,800)<;mul(513,728)select()select()}@;':from():mul(259,697}'$]&':+mul(998,295)how()@who();!mul(947,199)?/what()where()where()]mul(415,221)select(487,105)^mul(688,128)#&mul(394,445)mul(384,810) @!why()do();&!where(424,549)why()mul(934,449)%()-^from()?who()<(do()when()'what()#mul(424select(76,581):<+}from()#>+mul(616,317)#$what()@-select(425,315)mul(146,882)mul(509,291/#from()mul(152,967)why()how()mul(348,501)<[&^who()why():+mul(36/mul(856,681)!mul(46,203) -mul(315,935)mul(451,658)when()when(353,392)<why()]*')mul(21,640)from()mul(755,282)>^why()from()mul(442,981)!when()^why()why()(/mul(876,31),who()/[mul(740,627)]who()/+[mul:+mul(557,285)!(&how()mul(538,865)select()what()~$from()([+when()/mul(826,278):@select(546,967)!?&select()what()mul(847,194)#{mul(468,530)*![%where()^<what()?&mul(277^ mul(780,751)^what()~!#mul(635,606)?*when(): }who()]-don't()mul(42,308)+,(how()how()$-!~mul(29,791)%)mul(248,71)#when()-)]mul(670when():from(505,247)who()>select()what()'(mul(327,578)from()from(){who()who()from()^/mulwhen(801,176)what()};}! :#-:who():/mul(466,327)#~'!),&>mul(776,335where()]why()&]?]:how()how(),do()mul(442,378)when()/^^mul(407,519)'-mul(157,451)+]from()when()when()/mul(689,597#{mul(387,624)><]&$!from()%[-don't()what()why(801,120)how():%select())(mul(847,645)where();&'}#how(698,791)!don't(){)<^mul(694,504)](/*{$who()+mul(480,559)where()#>'who()[}select()!@mul(225,926)when()?%>+mul(631,126)}#@how()mul(712,802)-select()why()~'mul(748,579)from(){%mul(649,879){:select()~&!,[ !mul(147,693)<+}mul(87,949)-{where(345,734)/ mul(351,115)>mul(52,566)&mul(427,269)}mul(901,457)when()&mul(600,957)mul(734,851)!why()/[$/how();mul(383,59)'why(802,790)(;%'from()who()mul(904how()<;select()@{,who()>[don't()why()}[&[!mul(859,668)what()^mul(483,700) -]where()>>>&^@what()mul(320,309)[#<#:]~/mul(497,511)mul(95,653)how():mul(572,330)&mul(809,308)*(&:mul(29,810)who()how():mul(915,147)when()^#mul(849,988);who()?,(/*mul(129,470)select())$select()-&/why()where():do()mul(590,753),@;'/mul(396,339)>%mul(613,991) '{,(mul(899,674))/$}from(656,762)'select()(';do()+-(@mul(502,495)]{$>@)+do()'why()select(),when()mul(454,97)')'where(326,126) select()mul(334,130who(494,552)%@*$who(979,600)mul(876,925)^&^mul(975,151))who()who()&mul(136,404);%!';#mul(450,492[}+[&[$}%//mul(487,75)%mul(870,786),when()why()+~>mul(316,132)-from()who()when()'@who()mul(169,959)~~when()]how()+from()*^mul?&why()how()mul(641,834)^:!(-#mul(197,843why()?}[-mul(479,27)#,/when()when(284,485)from()(mul{)from()+'$~from()*mul(555,485)mul(37,175what()why()who()mul(849,203)who(607,487)how()select():&&;mul(874,736)when()/from(626,997)mul(482,451))who()[};mul(186,966)select()when()*mul(918,369)~who()](%mul(452,814)/&&^-!&$<<{mul(161,632)]mul(434,106):){select()mul(137,656)why()*when()^mul(198,859):mul(589,609) @-mul(79,388)/+}~]}from()how(),do()@<#])-mul(673,936)!mul(999,158)%mul(600,817)%~!#?@<^mul(948,543)$),'mul(108,479)]&mul(359,23)~@{+when()&%^!{mul(186,477)who()from()select()*{where()how()%%/mul(714,701)select()what()why()from(138,787)from()'$ mul(589,314)&what()}]**where()don't()@'?mul(905,694)%~mul(52,222),?]mul(726,995):where()^'[/mul(948,887)how()mul(396,68)what(){;select()$[% (mul(939,722)why()from()$who() &,$]mul(917,716)how()where()']~%'mul(174,257)/how()why()@select()mul(673,441)-<)'?select()do()how():what()]{}?-mul(202,788)[mul(842,734)who(980,842)/?/{+how()select()&how(149,196)mul(533,78),@#select()don't();when()mul(595,87)[(how()-;do()@>what()mul(543,798)/&mul(118,844)who(520,900)>!mul(615,214)'-/select(){where()@do()*#{%/mul(254,489)$@*,who()^mul(209,427)<%how()'^!^{how()mul(112,898)where()-/what()% ^'mul(400,703)mul(347,239)+:who()select()'<,mul(695,520)mul(595,418)why()?!#&^,;,:mul(128,623)$:/@why()$,!$where()mul(489,451):]}mul(426,973)/)don't()-<]what()what()!how()mul(384,927)?select()~:]*])-#mul(210,978)why()-/ +010011001001 +110101011110 +111111000101 +100111111001 +000000011111 +111100100111 +011111100000 +001001011100 +101100111011 +010001010100 +111011001010 +010001100011 +110110011011 +011011000001 +001100101100 +001000101100 +100000001010 +001111110000 +100101000000 +010000100000 +010100110000 +110000111101 +000001011010 +000011011001 +011000101110 +100011100101 +110010010100 +001110110101 +100011000000 +110100111100 +100100001111 +010110011001 +000001111101 +100001000010 +110010101110 +000101001100 +100100010010 +111111101000 +001010111001 +100101000001 +001101101110 +101100011010 +100100011100 +111100000111 +101011000100 +110000101010 +101100111010 +101100010101 +001011111101 +011010000110 +001101000011 +110001001110 +011010101111 +001111111011 +001100100001 +111010110001 +011011111100 +001011111001 +111110111110 +011111001011 +110110011101 +111110011011 +101101010010 +110111011110 +111011110100 +111110001011 +110100000010 +000011111001 +100001001111 +101110101010 +000111111011 +011110110001 +000011110110 +011101001011 +010011001110 +101110011110 +110101010011 +111010100011 +010101011001 +011011010101 +000010110100 +010011001000 +110000010010 +101111111001 +000100111011 +011101010101 +100011101111 +001010110100 +101101000110 +011100111011 +000100010111 +010111100000 +100100111110 +110110001111 +010010010111 +001000001110 +001110000101 +001111101100 +101100111110 +111011010111 +110110111000 +000111110001 +111001101001 +011111001000 +001110100011 +111100100010 +010111101000 +111100110101 +111100111010 +010100110110 +100101111100 +101000011000 +011011111111 +010000111100 +101111000000 +100001011000 +110010010110 +111000011011 +010100110111 +100100110011 +000010011101 +010001100111 +011000110011 +100101001101 +110111011011 +000100001000 +011111100101 +110110111100 +100010010100 +110110110111 +111000111011 +101101111000 +000000110110 +101111111010 +000110000001 +011111000110 +110010100111 +111010101111 +101011000010 +011001010111 +010100111110 +110001111000 +110101101111 +011001000110 +111000111111 +010100100111 +100001100001 +110101011010 +000110111000 +101101001010 +010110100110 +111101101010 +110100011111 +101010010000 +001100001001 +001000000101 +111000010001 +100100101100 +001111100011 +110110010000 +011010111010 +011001110110 +000000100111 +011110111100 +011101000101 +011000111010 +110110100011 +101110101000 +111001111001 +010001000001 +111000111100 +001011101011 +110111111111 +010111011101 +110010001010 +011111000100 +011001100110 +011100000010 +000101100010 +000111111010 +000000010101 +010011110110 +000111111101 +101101000010 +101111010001 +011110001101 +100000000111 +110111111110 +000010011110 +111000010010 +110011110011 +101101101011 +011011101110 +101011011000 +000101101001 +010110100011 +011001100111 +011101000011 +001110010110 +001001010010 +111110101001 +001111001001 +010101001111 +100111100001 +011100010101 +100001110011 +010001110001 +101011010101 +000100000110 +100101110001 +100101110010 +111011011001 +100110101101 +101100110001 +101111100101 +001010000000 +011000100011 +010010001111 +011100011101 +001100110010 +000001011111 +101111000011 +111000111110 +011111100100 +100110000000 +011110110100 +001100101011 +110010101010 +010011100100 +011000010100 +001101100101 +101010101000 +011110011010 +010010001100 +010100010001 +010001011011 +110010011001 +010111000101 +111011010110 +111010111100 +011111101000 +100110010100 +010101011011 +010111001011 +011110010011 +011000011110 +100001000111 +000011111101 +111100101001 +000000100011 +110011100100 +101111100001 +010011110111 +101000001011 +001101111001 +100111000011 +000001000100 +100100010000 +000010010100 +000111111001 +000100100010 +011011011111 +010110011110 +001101010011 +110111101001 +111011101111 +100110000100 +001101110111 +010101101110 +011010100011 +010010100101 +101110110110 +111000001011 +010001101000 +111101100110 +100111010001 +100010011010 +101111001000 +011000100000 +111000010101 +100101011001 +011011110011 +110011001010 +000110010111 +101000010011 +100100111100 +001111000001 +001110101101 +100111100011 +011001011101 +111000000000 +101001010011 +000000111101 +000011000000 +001011000100 +011111111011 +000111101111 +101100011000 +111011000001 +101000000111 +111110000100 +101001110100 +010111000001 +010010101001 +110011001111 +100010000010 +001001001010 +100110010110 +101100110010 +111000111010 +101110011111 +110111111001 +011010110011 +111010100010 +110000011000 +011000101011 +001001000001 +000100110010 +111100000000 +001010100101 +101011010110 +110001010100 +101111010000 +000110000000 +111110011000 +110011110111 +011010111001 +001100110110 +111111111101 +001010010001 +101001111000 +000100110101 +000100111111 +100000110111 +001011100001 +001010111000 +100010101100 +110110000111 +100101010010 +101001001010 +110000011101 +111010010101 +001011011000 +101101101001 +010101111011 +101010011100 +000010000011 +001110110110 +111100001111 +011000000001 +000000111010 +000110011110 +010100110010 +000111010000 +110111110111 +110000000101 +011111111111 +010101000011 +110000101000 +000001110001 +010001010010 +100100010110 +000100101110 +100011011000 +000110010001 +100000001001 +011010010001 +010111101011 +101101101100 +001101100001 +010101111101 +001010101110 +001110001001 +100101110110 +001000110011 +010001011110 +100110011001 +010100101110 +101101111011 +001110110011 +000111001111 +100100110110 +101000111101 +100000111100 +111000101100 +000010010011 +001100001101 +111101011011 +001100101010 +001000010001 +011001010010 +111011101011 +010010001101 +000100100011 +111110001111 +110010001111 +010001100010 +101101110001 +101100110011 +110111111011 +011011010100 +011101100101 +111111000100 +101111001001 +010000000100 +011001111110 +110101111100 +111111100001 +111011000100 +100110100001 +101001110000 +001011010010 +011010001000 +110010001110 +000101111001 +010100100110 +011100110100 +000011111000 +100100000111 +110111001000 +111100001110 +001010101100 +010111111011 +111010100100 +101000011101 +110111100110 +111100110100 +000010011010 +000110101111 +001101010001 +010010000111 +011000100001 +110111100100 +010011100101 +011001001011 +101101010100 +010000010001 +001001110001 +100010000110 +111101111011 +011110100101 +000101001000 +111110011100 +000001101110 +111101000001 +100111000100 +011110100011 +110000101011 +000010011111 +000101011001 +101100111001 +011010000111 +000010001011 +010001111110 +000010111110 +101001111110 +000110001101 +001100101001 +000101111011 +110000100110 +110001000011 +000001111100 +010100111010 +011001000001 +110111000010 +110011101010 +001101101000 +100110100011 +000010101010 +101101111010 +111111100111 +010101000000 +011010011110 +011110100100 +100000110000 +011111011100 +011000001110 +000010000010 +101011010010 +010101110000 +110001000000 +011111111100 +101110110010 +111111011001 +100000110110 +111010100111 +000001100101 +101010010111 +010000110110 +001000010111 +101000100000 +100101000011 +111100011011 +010110001101 +101010100110 +101111111101 +100000111001 +011100001000 +110111011000 +100011101101 +101101110011 +000010101100 +000011000001 +011110110110 +001100011110 +010100111111 +011111101011 +000011110100 +001000100111 +010000000101 +111001111000 +111001010001 +001100000001 +110110111010 +101000011010 +010100111001 +000100111100 +110000100011 +100000101011 +001001001110 +101110111101 +110101001110 +101110110100 +001111110101 +100000010101 +110000011010 +111101100011 +101001100100 +100010100001 +011001010000 +111001110000 +101000100111 +100111011110 +000000101111 +101000110000 +110100001111 +001101101010 +010011001101 +000110011101 +101011110000 +100010011110 +101010100011 +000110111011 +000101110110 +001000000011 +011011111010 +101011101111 +000011010101 +010001011101 +001010011100 +011111111000 +111011100111 +010111010001 +010111101001 +101000110100 +000001010000 +010001000101 +000010111101 +010101101111 +010100001010 +100010011101 +011111011001 +111010001001 +000110011011 +000001001000 +100011011111 +110001011000 +001101011000 +000010001101 +100100101111 +110101111011 +000010010110 +001110011010 +100110101000 +100101101100 +110011101101 +000011011011 +110110010110 +001111011110 +100111010100 +011001000000 +011011100001 +101100111000 +010001000011 +010110010110 +101010110100 +101011100100 +110001110101 +110110001100 +000100011011 +110100010000 +101010110001 +110010111000 +110011100101 +010000100100 +101100000011 +111101111101 +000100001100 +000000101011 +101101100000 +000111000110 +010100001000 +011110100001 +101101110010 +110010001101 +011100001001 +001100111111 +000011011010 +001110011110 +000010011000 +111001100010 +110100010001 +100001000100 +000110100000 +111011110111 +001011110000 +000001100010 +001000110001 +110001000010 +010100000011 +010110001111 +100111001001 +011100011011 +011101101111 +110000101100 +101111011111 +101111000110 +111001101011 +011011101111 +010110010101 +100001001100 +011101110011 +000001100001 +001000110111 +011000110001 +111000000111 +000100101001 +101100101101 +000100010110 +110010101001 +100110011100 +000111010011 +110100000100 +101011001110 +010011110001 +010110110100 +111111001000 +010100101111 +101111101000 +011110101000 +001011111000 +111110010111 +101101010000 +111111010100 +100111010011 +011101010011 +100000111110 +100010111111 +011011100010 +111000011101 +010100001101 +010100001011 +001111101001 +011001111100 +111101000111 +000100000000 +110101111001 +111010011111 +010010011101 +001101101011 +110111101111 +001000111001 +100010110000 +000000000101 +101001000001 +001110001101 +110111001101 +111010101110 +101001000110 +000011100011 +010101001101 +000111000001 +001011011101 +111100011101 +111101000110 +101101001011 +101110010101 +110100111000 +000010101101 +000110000110 +100001110001 +011010010000 +110000011111 +101011011110 +000010001111 +100001100101 +111010000001 +010010001011 +011111110100 +000001010010 +110010010111 +011000001000 +011101010100 +111110111101 +111100010100 +001101111000 +011110000001 +111011111001 +111011011011 +001010010011 +011011001110 +101101111111 +001101011001 +010111001000 +101110001011 +111101100111 +001101110010 +100001100110 +010100010100 +110010111011 +110011110110 +010110011101 +101101011001 +001111110011 +100000001100 +110010000000 +001011001100 +001111111100 +110010100101 +100000101100 +011000101101 +000101000010 +100100110001 +010111111110 +101111110100 +100001101011 +111010100001 +100111101010 +100110110000 +000101011000 +100011110011 +110100101101 +010011011011 +011010000001 +010000100001 +001101111110 +110000000010 +011010000000 +100110111001 +101011000011 +100101010101 +001100110111 +001111011001 +110000110100 +111101000000 +110101010100 +011100110111 +001100100000 +111110010110 +101010111010 +110100011010 +110010010010 +101000101101 +111110010010 +100111001000 +110000101110 +100001101110 +100011010110 +000101000001 +000010110111 +000110000100 +011101110101 +111100011010 +000000010100 +111100011000 +110110101011 +001100010101 +000010010010 +010100110001 +001001010110 +100110000011 +110100100001 +000111110010 +011000011011 +111101001000 +001101110101 +001101110110 +010101101010 +110111000011 +011110000010 +011010011011 +111100110001 +010001001000 +000101100110 +010001110111 +010000101000 +000000100000 +100011001011 +100001111110 +100011111101 +101101001110 +101110110011 +100000011111 +001101010111 +111101100000 +011010001111 +101001010010 +100010100000 +011000100111 +101100100000 +011011000011 +001101001011 +001010001011 +110100000001 +111110001000 +101000010101 +100011000010 +010110101000 +011101011111 +000110001000 +101100000111 +110100101001 +101001101001 +010111000011 +011101000001 +101011001000 +110101001101 +010010100110 +111001110011 +010111010010 +010011101100 +001110111100 +010111011110 +000010001100 +111000001001 +001100101110 +111001100011 +010000011001 +111010111111 +010011111111 +011100100110 +001001101111 +001000111110 +010101111000 +011011001011 +101110001100 +010100010010 +000001011011 +000001100100 +000000010011 +000001110011 +010101001000 +110110100001 +001101101101 +011010001110 +101011100110 +110001100101 +110100100110 +101010110000 +110100110101 +011101000100 +101110001010 +001100110101 +000100011110 +101110111001 +011111101010 +010110001010 +110111110010 +001000101110 +100011001100 +010011010101 +100101001001 +111011001110 +101100000100 +000010111100 +111000101111 +010001001100 +010011110100 +010010110000 +001111101110 +111110110111 +101010000010 +010001101101 +111001000000 +100011001010 +100000111111 +110000001101 +000000111110 +010011100111 +010110110010 +010110010000 +011010001001 +101000110101 +111110001010 +100101001010 +011000001001 +011100010111 +111010111000 +011011001100 +001010000100 +011100001110 +001001110010 +110001000110 +100100010111 +101110001101 +000100001001 +001001011111 +100111100100 +100001100011 +000011011110 +101011111110 +111000011000 +000100001010 +011111010111 +011001010100 +011101110111 +001100000110 +100011011101 +011010111111 +010110100111 +011000111001 +000100111010 +011001001110 +111010001000 +110011000101 +110001101010 +001101100111 +101011101010 +000001001010 +110110010100 +100000000001 +000011011101 +010011101110 +101001100110 +111110011001 +110010100000 +100011000100 +111111000001 +010000100011 +000100010010 +010111000010 +011111101001 +101101100100 +011011000101 +111110010000 +001000000000 +011000001011 +111111110110 +011010110110 +000001111110 +011101001000 +110101010000 +110001010000 +101000100001 +111100001001 +000000000110 +100000011101 +101001011011 +000001001100 +110000010110 +110000001011 +000101101101 +001011000111 +100110011111 +011111011101 +110010101111 +000000000001 +000101110001 +100011000001 +100101010011 +100011010111 +001101100000 +001100111110 +100101000111 +100011110111 +100000110011 +111010000101 +010101110110 +101010001011 +011001100100 +111101110011 +110011000001 +111011101100 +110010011010 +111100010011 +001011011001 +000000000000 +001000001101 +001110010001 +000011010100 +100001010101 +101010001000 +110100011011 +011100111000 +111111111001 +100101001110 +100011100011 +101000101000 +010101110101 +011100011100 diff --git a/input/day_04 b/input/day_04 index fe91c33..26358a9 100644 --- a/input/day_04 +++ b/input/day_04 @@ -1,140 +1,601 @@ -SSSMMSAMXSSSSSSMSSSSMAMSMMSMSMXSASMMMMAMXAXMAXXSSMSSSMSMMSXMAXXMAXSAMXMXMAXXMAAMMMMMAASXMSAMXMASMMSMSMSXXMSMSXAXMSMMSXASXSMMSMMXMMMMXMXAMMSX -XAAAASMSAAAASAAASAAXSAAAMMXAAAASAMXAMMSSSSSMXSAXSAAAASMAAXASMSMAMXAMASXMMSMSMMXSMAASAMXAXXXMAMXSXMSMSASMXAAAMMMAMXAASMXSAAMASASAMSAMAMXMSAMS -MSMMMSAMMMMMMSMMMMMMSMSMSAASMXMMAMSXSAAAXAAAAMAMMMMSMMXMMSXMAAAAXMXSAAAMAXXAAAASXSMXMASMMMSSSMAXAXSAMAMAMSMSMAMSMMMMMAXMMMMXSAMAMSASMSAAMXMA -XAAMXMAMXXAAMASXXXXAXMXXAAMXSAXMAMAAMMMXMSMMMMMMXMXMASXMMXMMSMSMSMAXMAMMASMSMMXSAMMSMAAXAAAAAMSSSMMAMMMAMXAMMXMAAAAAXSMMSXMMMXMXMSAMAMMMMAXM -MXMAXMAMMMSXSASMMAMMSMSAMMMASXMSXMMSMAMSXAXXAAAAASXAXAAAASAAXXXAXMASXSXAXXAAXXAMASAAMSMSXMMSXMAMASMMMAMAMMSMMXSSMMXMXMAXSASAAAMAMMSMMMSASXSX -AAMASMSSMAMMMAMMMASAAAMAXXMAMSASAMMMMMSAMXMSSSSSSSMMMSSMMAMXMMMMMSXSAMASMMSMMMXSAMMSMXMAXXMMMMASAMXMSXSASXMAMXXAXSASMSSMXASAMASXSAAXAASAXAAX -SASAXXMAMAXAMXMXSASMSMSXMXMAMAXSAMMSSMAXXMMAAMAMXMAMMAMXMMMMSMAMAXSMAMAXXAXAXXMMASXMXMAMMMMAXSASAXXMAASAMMSAMXMMMMAXASMAMMMMSXMAMXMSMXSASAMM -XXMASMMSMASMMSMAMASAMXXMSMMSXMXMAMXAAMAMXXMXMSMMASAXXXMAMAAAASMMXMXSXMASMXMASXXSXMAMXMMSSMSAMMASMSSMAXMAMASAMMSMSMAMSMMMXMAMXAAAXAMXMASASAMX -MAMAMAAXMXSAAAMASMMAAMSAXMAXAXXSMMMSSMAMMMMAMAAXAXXSSSSMSSSSMMXXMAMMXMASAXMASAAAMMAMMSAAAMXMSMMMMAAMMMMAMXSAMAAAMXXXMASMSMMMSMMXXASXMMMXMASX -AMMAXMMMSMSMMMSASXSXMAASMMMXAMXAAAMAMXAMMASASXSMXSSMMAAXMAAAXMMSMMXAAMMXMMXAXMXMAXXAAMMSMMAXMMAAMMXMAMSSSXMASXMSMMXMSSMXAAAXSMAXSSMMMASASXMX -SMXAMSMMXAXAXXMXSASXMXMAMASMASMAXSMASMMXSASASAXAAMAAMSMMMMMMAAAMAAMMMSAMSSSSSXSXMXXMSSMMMSSSSSSSSSSMMMAMXXXXMAXAMXAMMXASXSMXMMMXMAAMSASXXAAM -MMMSMMAMMSMMMSMXMXMASMXMSAMMAMAXSMXXMAAAMAMXMMMMMMSMMXSSXMASMMXSMMSAAXMAXAAAXASASMXXMXMAAXAAAAXAAAAASMMSXSSMMSSSSSMSAMXXAXMASAMASXMMXMSXXMMM -MXAXASAMXAAAAAAXMAMMMMXXMAXMSSSXSAASMMMSSSMMSXMASXMAXAMMXMASMMMSXAXMMMSSMMMMMMMXAXSXMASMMMMMMMMMMMMXMASAMSAXSAAXXAMMMSMMMMSASASASAMSAMXMASAS -MMMSMSAMSSSMSMMSSSXSASXMMMSAMAXAMXMSMMAXAMXAXMSAAMSSMMMSASXSMSAMMMSAMXAAAXMAXXMSMMMASAMAAXSXXSXXSXXSXXMAMSAMMMXMSMMAAAXASAMXMMMXSMMXAMXAMSAS -XSASXXAMXXMXMXMMAMASXSAMAAMAMMMXMXMSAMXMAMMSSMXSMMAMAAXSASAMAMASMAMMMMSXMMSXMSAMXASXMMSSMMMMMMAMXMAMXMSMMMAMAXSAAASMSSSMSXMMSMXMMASXMMSSXMAM -AMAXAMSMMAMXMAMMAMAMXMAMMSSSSXSMSXASAMXXASAMAMMMXMAXMMMMAMXMAXMMMASMSAMAXXXMXMAXSMSSXAXMAMAAAXSXAMAMAXAXAXAAXMASMXMAAAXASMMAAXAXSAMASAMXAMMM -SMAMSMMASXMASAXSXMXSMSMMMMAAXASAAMXMAXXSMAXSAMASMMMMASAMXMASXXSASMSXMASMMMMAXSXMXXSXMSMSMSSMSAMXXSASMSASMSSMSAMAMMSMXXMSMAMMSSSXMXXAMAXSMMMS -XMAXXASAMXSXXAMSXSAAMAMAAMSMMMMMMXXSXMMXAMXSASMSAASXMMXSAMXXMASASMXAMAMAMSASMXXAXMXXAAXAAMAAAMSAMSAXXMAMAAAAXXXAXASASMSXSXMSMMMAMXMMSXMMXAAA -SMSMSMMAXMXSMSXSAMXMMAXSXXAMMMAMXSAMMSXXSXASXMXSMMMAAAMSAMXMXMMAMAMSMMXAMXXXAAXSXASXSSSMSMMSMXMAMMXMSSMMMMMMMSSSMMSAMSAAMSMAASXXMASAAMSSSMSM -AAAXAXSMMSAMXXAMXMAMXMMMXSASMSMXMMXSASAMXMASXMASMMSSMMASXSAXSAMXMAMXAMSSSMXSXMAMXSMAAXAAXMAMXXSSMMXMAAAXSAMAXMAMAMMAMXMXMASXSMAXMAMMXMMAMAAX -MSMSXMSXAMAMAMMXAMASAMAMXXAMMAMXMMMMASASXMAMAMASAMXMASXMASAMXAMXMXXXAMAMAMASMSAAMXMMMMMMMMMSMXAAXAXMAXMMSASMMAMSSMMXMAMASXSMXXMMMSXSAAAMMMMS -XMXMXMXMXMMMXSMSXXASMXAMSMSMSXSAAAXMMMAMXAASXMMSMMAMMSAXAMMMXSMMXSMSSMMSAMMSASASASXXXXAXAAMAMSSMMSXMMSSXSAMXAAMMAXAXSXSMXASAXXXXMXAMXSMXMSAM -XAAMAMAASMSSMAMASMAMXSSSMAXAXAXXXMXMSMXMXSMSXSAMASXMASAMXXMSMXAMAMXMXAXXXXXMXMXMXMMMSSMMSSSMMXAXAMASAAXMMMMMSMSSMMMXSASXMAMMMSSMSMSMAXAXXMAS -SSXMASXSAMXAXMMAXMASMMMAMXMMMMMSMMXSAMMSAXAMMMAMASMMASAMXSMXASAMASMSMSMSASXSAMAMXSAAAAAMAAMXXSXMASAMMSMMSSMMAMAAMAMAMXMXMXXAAAAAAAAMMSAMXSAM -XAXSAMXXXSSSMXMSSMSAASMSMXMMASASAAMSASAXASAMXSXMASASMMAAAAXMMMASAXXAAAXSAMXSASMSMSMSSSMMMSMMXMASMMXSXXAAAAASAMMSMMMASMMXMXSMMSSMMSMSXSAMAMAS -MAMMSAMXAAAAMXAXXMXMMMXMXAMSMSASMMMSAMMSASXMASXMAMAMXSMMASAMXMMXAXXMMMXMXMMSMMAAMXMXMAMXAAAAAMMMAAAMAMMMMXMMASXMAXSAMXSASXXSAMAAAXXXASAMXSAM -MMMMMXXMAXXAMSAMXXXXASAMMXXAAMAMAXAMXAMMMMAMASMMSMMAMMASAAMMASXMSMXXASAMAMXXMASXMASAMAMSXSMSMSAMMMSSMXSXSXMMMMAMAMAAAMXAMMXMSSMMSXSMMMXSMMAS -SASASMXMASMSMXMXMMMSMXASAMSMMMSSSMXSMXSAMXMMXXAAMXSMASAMXMXSASAAAAAXMSASXXAAMAXMSXSMSAXSAXAMXSXSXAMAMSMASAMSSMMMMMSXMXMSMMSMASXAMMMAMXAXAXXM -MAMASAAMAXAAXAXAMXXXSMSMXXAXAXMAMAXXAMSMMSXSMSMMSXXAMMMSASXMMSMSMXSAMXXMAXSMMASAMXMAMXSMAMAMAXAXMXSAMAXAMAMAAAXSAMXXMMMMAAXMASMXMASAMMSSMSSS -MAMAMMXMSSSMMMSMSMAAMXXSXSASXSMMMSSMSMMAXXAAAAMAXMMSMAMMMAMXAXMMXAAAMMAMXAXASASMSAMAMXSMAMXMMMXMMXXAXMAXSXMXSMMXAXXXXAASMMSMASAMSAXAXAMXXAAA -SMMSAMXSAAAXSXAAMXMXMAMAXMAAAMMXAXMAAMSSMMSMSMMMMAAASXMASMAMMSASMSSMMMMMMASAMXSASXSASAMXAXSAMXMASMSXMXSXSASXAASMMMSMXXMXXAXMAXMMMMMSMMXSMMSM -AAAMAMSMMXMAAXMXMAMAMASMSXSMSMAMXSSSXMAAAAAAAMASMMSMSXSXXXSMXAAMXMXMAMSAMXMXSMMMMASAMMSSMSMMSMSASXSAMXXAMAXSAMXAAAAMMSSMMSXMASXMASAXAXSAAXMM -MMMSSMSASXSAMXSASASASASXAAMXXMAMXMAAMMSSSMMSMMASAAXMXMMSMSMSSMXMXXAMMSSXXMSAMXAAMMMAMXXXMAMAAAMASAMAMASAMAMXXSSSMSXSAAAMAAXMXAXSAXMSSMMSMMSX -MXMXAAXAMAXSXXSASASMSXSMMSMAMMSMXMASMXXMMAMXXMMSMMMMSAAAMSXAMMMSXSMSXMXSAAMASMSSMMSAMXMXSASMMMMMMMSXMASXMASMMAMAAXAMMSSMMSAMXSMMSXMAAAAXXASM -SAMSMMMSSMSAMAMMMASASAMXAXXXXAAAXASMMXMAMSAMXSAMXMAXMMMSSMMXSXAMAXMAMMAXMXMAMMAXAXAAXSAMSASAMXSXAXAXMXMXMAAMMASMMMXMMAXMXXAMAAAAAXMASMMMMSSM -SAMXMXAAAXMAMSXSXXSAMMMMXSASMSMSSMMMMAMXAMMSMMASMSMSAAXMAMASXMAMSASMMMAMXMMXMMAMXMSAMASAMMMXXAXAXMMXSAMMMMMXSASAAXSAMXSMASAMSSMMSSSMMAXSXAXA -SMMAAMMSSMSAMXAAXMMAMMAMAMAMAXXAAMAAXAXMASAMASXMAXMAXMXMAMXXSAAAMXMAMXAXXSMMXMXXAMXSMSMMMASAMSSMMMXMSMMAXASXXAXXMMXMASXMXSAMMAMAXMXAMMMAMMSM -XASMMMAXAMSASMMMMXSSMSASAMAMAMMSSMSXSAASAMXSMXAMSAMXASXSASXMASMXXXMAMXSSMXAMSMMSASAXXXAXSMSMXXAMMXAXMXSXSASAMSSMMSMMMMMSMSAMMAMSSMSSMMMMSMAM -SMXAAMMSMASXMXMASMMMAXASASMMASXXMAXAAMMMASAAXXMMAAMAMAMSAXASXXMSSXSASXMAMMAMMAMXAXXMSMMMAMSXXMAMXSMSSXAAMXMAMAAMSAMXAAMSASXMXXMXAAAAXXAXMASX -AXSSMSMAXAMASMMAXAASXMXMMMXSAMXXMAMMMMXSAMASXMXSMXMMSMMMSMAXAAXAAASAMXXAMMAXMAMMXMAMSAASAMSASMMMMXAAMMMMMAMAMMXMSAMXXXXMXMASXMMSMMMXMSMMSAMX -MMXAAXMMMASAMAMSSSMSAMXAXAXMASXXMAMXAXMAMXMMMAAXXAXXMXSAMMAMXSMMSMMASXSXMXMSSXXAAMAMMSMXMSMAMMXSMXMAMXAAXMSSMXSASAMSXSAAMMAMASMMXSXAASAMSAMS -MMAMMMMXSAMAMSAMAMXSMMSXMMMSAMXMASXSASMAMSXAAMSMSMSSXAMSMMMSMAXMAXMAXMAXSAMXMMMSMSAMMAMSXAMAMSMSMASXMSMSXMAXAAAMMAMAASXMMMAXSMAMASXMSMAMMAMM -SMSMAXMAMASXMMAMXMASMASXXAAMASAMXXMASMMAMAMXXSAMXAAXMXMAXMAAXSMSASXSSXSASASXXAXAASAMSAMASXSASXAMSASAAXAAXMASMXMXXSMMMMMXSSSSXSSMAMXMAMAMSMMX -AAAXXXMXSMMMSSXMAXMXMASXSMSSXMASMXXXAXMXXAAMXXMASMSMSASXSMSSXMAMMSAAAAXXSMMXSMSMMMAMSASMSXXXMMSMMXMMMMXMSMASXMXSAMASXMMAAXMAMAMMMXAMSSMMAMMX -MSMXMSMXSAASMMMXXXXXMMSAMAMXMXMAMMSMSMSSSMSAMXXAMXXASASXAAAMAMAMAMMXMMMMMXAMXAAAASAMXAMXMMMMSAMAMSSSMMAXAMMSMAMMMXAMAAMMMSMMMSMAAXSMMAXSAXSA -MAAASAMXSMMSAMMMSAMXMAMAMXMASASAXMAAAAAAAXXMAXMMSAMMMMXXAMXSMSAMXSXSMMAAAMXXXMMSMSMMMXMAXXXAAXSAMMAAXSXSXSXMASXAMMASMMMMSMASAMMASAXASAMSMMAX -MMSMSASAXXXSAMAAAASXMASAMAMAXAXAMSMSMSMMMMSXSMSAMMSXSXMSMSXSXSAMXAAXASMSSSSXASAMXMMSMSMSSXMASMSMMMMMMAAMAXAMSASAMAASXMAMASAMXSXXMAMAMMXXXAMX -MXAXSAMXMAMXAMMMMXMMSMSASXSSSSMSAMAMAXXMSASXXAMASXXAXMAAAXAXXXAMSSSMAMAAAAXSAMXMAMAAAAAMMAMAXXXAMMAAMMXMASXMMMXSMSXMMSMSAMXXAMMAMAMXMXMAMSXM -XSAMMXMASXXSAMXXMMSAXASMMMAXAXAXMMAXXXAXMASAMMMMXMMSMASMSMXMMMAMXAAMAMMMMMMSXMSXSXSXSMSMSMMMSMSSMSSSSXMMAMAAAXXXXMAAMAMXXMASAAAASAMASAMAMAAS -MSXMAXXXXMAMAMXSAAXMMMMMAMXMMMSMXSSSSMSMMXMXMMAMAMAXAMXAAASMSAMSMMMXMXAAAXXMAASAXAMXAAXAAXMXAXMAAAAAMMAMXSSSMSSMASXMMASXMAXASXSMSASASXMAXSAM -ASAMXMSAMAXMSMASMSMXAAAMXSMSXAAMXMAAXAXXSAMXXXAXSMMSSSMXMXAAXXSAAAAASMSMSASXMMMAMAMSMMMSMSXSXSSMMMSMAMSMMAAAXXASXMMMSAMAAMSMMMAXSXMXSAXMXXAX -SMAMAMSASXSAXMXMMXMXSSSSXXAXMXSMAMMMMXMAXASXXSSSXAXAAAAASAMXMSMMSMSXSAAXMASXAAXAMAMASMAAAMAXAMAMXAXAMXAAAMXMMSMMMMAMMMSSMMXAASAMXXMMXMASMSXM -ASMMXMSAMAMASXMXSMSXAAXAMMXMAAAMSMXMASMSSMMXXMMAMSMMMMSASAXAXSAAMMMMMMMMMXSMSMSXSXSASMSMMMAMMMAAMMSAMSMSXSAAAXXMASASAMXMMAXXMMXMAXSAAXXMASXM -MAXXSAMXMXMAMMAXXAMMMMMAXXMASMSMMAXSSXXAAAMMMMMXMXAAXXAAMAMXMMMMSXAAAAAXXXSAXXMXXMMXMMASAMMXSAMXSAMAMSAAAMXMMSMSASMSASAMXMSSMSASAMXSMSAMAMAM -XXMXMAXSAMMSSXSXMSMSMSSXXSMXMAMAXSMMXSMSMMMAAXSSMXSMSMSSSMSXMAMASXSSSMSASXMMMAXMMMMSMSASMSASMMMXMASXMMMMSMSMAAMMMSMMXSXMXXAAASXMAAAMXSAMSSXM -XMXAXSMMSAMXMAAMAAAAAMAMMASAMXMMMMAXXMXXASXSMSAXMAXXXAAXAAAASMSMSAMAMXMMSAAASAAASAAAXMASAMMMAAXAMXAMAASXMMSMSSSMASAMASMSMSMMMMASAMXMAMXMAAAM -ASMMMAXXAMMAMXMSSMSMSMAMMAMXMXAXASMMSSMSMMAAXMMMMMSMMMMSMMMAMAAASXMAAXMASMMMSMMMMMMXMMXMXMXXSMSXSXMXSMSXMASAAMAMAXAMAMXAAAXSAMXSMMAMASAMXXXM -XMAMSMMMMMSXSXXXAAAXAMXMASXMMSMSMSMAAAAAAMMMMSXSXAAAASAXXXSXMSMMMASXSAXASASASMSASMSSMMMMAMAXMAMASMXMMSXXMMMMMSSMMXSMSSSMSMSSXMASASMSMSASMSMS -MMMMAAAAXASASAAXMASXXXASXMAAMAAAASMMSMXAMAMXAAAXMSSSMSMSSXMAAXAAXXMAXAMASMMASASXSAAXAAAMMMMXMAMXMASASAMXSAMXAAMASMAAAXAAAXMXAMASXMASASASXAAA -AAASMSMSMASAMMSXXXMAMMAMAXMMSMSMSMAMMMMMSAXSAMXMXMAMAXMAXAMSMSXMSXMXMASASXMMMAMAMMMMSSSXASXMSAMXXXMXSAMSAMXMMMMAMMMMMSSSMSMSSMMSAXAMXMAMMMSM -MSXSAXMXXAMAMXMAMMSXMASMXMXAXAXMAMAMXSAMMMMAMXMMASAMXMMSSMMAAAMXXMASMMMASXAAMAMAMAAMAXXXAMAASASMSMMXSAMXMASMAAMMMMASXAAAXXAAAAASMMXSXMMMAMAM -MXAMXMSMMXMXMAMAMAAAAAXAXXMSMMMSXSXSAMMSSXSAMXMXASASMXMMAXSMMMMSAXAAMXMAMMSASXSMSXSMASMMSMMMMASAAAXMXXMAXXXMMMSAASASMMSMASMXSMMMXSASAMXXXSAM -XMAMAMXAXMSASAMAMXXSMMMASXAMAXXAMXXMAMXXAXSXSMXMASMMAAXMMMXAAAASXMMXMAXXXMMXMXXAXXMAMMAAXMAXMAXMSSMASMMXSMXXMAXXMMASXAMXMXAXMMSMAMAMAMAAXMXS -SSMMAAXSAAAXMAASMSMXASXAAMXMAMMASXMMSXXMAAMMSMXAXXASXMSAASXSMMMSAXAASXSSMXMASAMXMMSASXMMSSSXMASMMMXSXAAMMMSASMSXXMAMMMSSXMSMSAAMXMAMXMMSXAAX -XAASMSMXASMSMXMAAAAMAMMXMSAMXMSAMAMAMMXMSMMASAMMMSAMAAXXASAMMXXSAMMXMAAXAAXXMAMXAAXXXAMXXAMMMMXMAMXXSMMSAXXAMAAMSMSAMXAXXAXAMSMMAMAXAAMAMXMX -XSMMSAMXXXXAAAMMSMMMAMASXSASXXMAMXMAXAAXAAMXSAMAXMMMMMMMMMXMSMMSAMXSMMMMSXSAAAMMSSMSSXMMMMMMAMASMSAMASMMMSMSMMMSAAAMMMAXSMMSMMMSMSASXSMSAMXM -MAMXMMSMMMSMSXXMAMXSXSAMMMMMXMASMMSSSMMXSXMAXAMXMAAXASMXSAAMAAASAMAMAXSXAXMMMMMAMAXMAMXAXSASASMSXMASAMSAMXAAMMMXMSMSMMSXAMAMASAAXMASAAAAMXAA -AMMSSMAAAAAXMXXSMXXAMMASMMAXXXAMXMAXXASAXASMMMMXSSMSASAAMSSSMMMSSMAMAMSMMSSMASMMSSMXMMMSMAASASAMXMMMXSMMMMSMSSXMAXAXXAMSSMASXMMSSMMMXMMMSSSS -XAAXASXMMSASMXMMSMMMMSMMASASXMSSSMSSMMMAMAAXAAXXMAAXAMMMMAMXXMAMAMSSSXXAMAAMASXMAXMAAAAMAMAMAMMMXSAMXMASXAAASASAAXMXMAXMMXAMMXAAAAXAAXMAMAXA -MMSXMMMXMMMMMAMAAXAMAMASMMXXAAAAAAAAXSMSMSMSSMSMSMMMMXMSMSSSSMMSMMMAMMSSMMXMMSAMASXSSMSSSMXMXMAAXXASASMMMSSMMAMMMMMASXSASMXSAMMXSMMSMXMAMSMM -MAXAXSMMAAAASXMSXSMSASMXAXXXMMMXMMMXMAAMAMMXMXAMAMMSMAAAAMAMXAMXMXMAMXMASAMXMSMMAXXAXAXAXXMASXMSMSAMAXSAAAAAMAMASASASMSAMAAAMXXMAMXMAMSAMXSX -MASMMAAAMSXMMAMXASASASXSSSSXSASASASXAMXMASXAXMASMSAAMXXMXMAMSMMMMMXSMASAMXSAAXMASXMMMMMMMXMMXASAAMMMXXSMMSMMSSMXSASASAMMMMMSMMSAMXAMAMMASXMS -MASMSSSMXMMSSXMMXMAMAMMAAAAASASMSAMSSXXSSMMMSAXSAMXSXMMSASAMAAAMASMMMAMASASMSMSMXMASASAMAMSASMMMXMSMSASMAXMMMXSXMAMMMMMAMAMXAMMMMMMSMMSMMASX -MAMXAAXMAXAXMMMXXMAMMMMMMMMMMMXXMXMSXMAMAXASAMSMAMMMXXASAMASMSXSASAAMMSXMAXAAAAXAAXXAXASAAMASXAXSMAAMAMMAMAAMMASMXMAMASASASXSMAAXAMAMMAXSXMX -ASAMMSMMMSMSAAAAXXXXXXMASAXXXXAMAAXMAXSSSMMSAMXMAMAAMMAMMSMMMAXMASXMSXMMMAMSMSMMMXSXMSAMXMMAMMAMAMMSMAMMAMSMSSMXMASASASASASAMSSSSMSASXMMSXSX -MMAMXXMAMAASMMSSMMSMSSSXSASMMMMASMMMAMMAMMAMMMXSSSMAXXXAMAXAMXMMMMAXSAMXMAXAAXAMSAAAMXXMMSMAXXXXXXXMXXXMSMXAAMXMAMSMXXMXMXMAMAMAMASXMASMSASM -XXMMXXSASMXMXMAMAAAAAXXXSAXAXAAXMXSMMXMAMMAMAMAMXAMAMSXXSMSXSSSSXSXMXAMSXSMMMMAAXAMSMAAMASMSSMSSXMSSMMSMMAMMMXAMAMXMMMSXMXMSMSMSMMMSMXMAMAMA -AASAMXSASXMSXMASMMMMMXMAMAMSSMSMSASASXMMXSMSSXAASMMSMMAMAXAASXXSAAXMSSMMAMXMXSMMXSXXMXMMASMAAAASAMXAAAAAMSMSMSXSASXSAAAMSAXMAMXMAMASXAMAMMMS -SMSAMXMAMXXASMAMAXMASXSAMSMXAMAAMASAMAXMMXMAAMSMMXAMASXMAMMXMAAMMMSXSXAMAMAMAXAXAXXSMSSMASMSXMASXSSSMMSAMXMAAAMSAMXSMSSXSASMAMMSAMAXAASASAAM -XXXAMXMAMAMMXXXXXMMAXMXAXMMXMAMMMAMASAMXAXMXMAXSMMMSMMAASMMAMMMMAXSXXSMMMXAMSSMMMSASAASAMXXMAMAMMXAXMMMXMASMXMXMMMMMMMMMSXMMASXSAMXSMXSASMSS -SSSSMAMASMAXASAXSAMASMMXMAXMXXXXSSSMMMSMMSSMXAXAXMAAAXXMXAMAXAASMSSMXXSASMMAXMXSAAAMMMSXSSMSSMAXAMMMMAMAMAMAASASASMSMSAAXMASXMASMMMSXAMMMMAM -AAAXSXSAMXXMAXAASAMXSXAXSXMXAMXXXAAAXAAAXAAAMSSMXMSSXMXXXSSMSSMXSAXAMMSXSAMSXXASXMAMXAMAMAXAXXMMSMSAMAMMMSMXMXAXAMAAAXMMSXAAASMMAMAMMXMAAMAS -MMMMXXMASMXSMMXMSAMXXMXMXAAMMASMSSMMMSSSMXSSMMAXXMAMXASXAXAAAMASMSMSAASXSXMXSMMXXXAMAAMAMMMMSAMXAASMSMSMXXAASMSMSMMMMMMAMMMSMMASMMAMASASXMAS -AXAMMXMAMMASASMXSAAXXMSASMSXSASAAXAAXXAAXAMXASXMSMAMMMAMXXMMMSSMAAMAMMSMMMSMAMAMMSMSSXSASXAAAXMMMXMAAAAXAMMMMAXAXAXSASMASAXAASAMXXAMMXMMSMAS -XSMSMAMSXMMSAMAAMSXXXXAXSAAAMAMMMSSMSMSMMSSSMMSAAMSSSMSAASMXAXAMAMXAXMSAMAAAAMASMAMAXXSAXAMXSMSASAMSMSMMSXSAMAMMMMMMAXMMMXSSXMMMXSMMMAMAMMXM -XSAAAMXAAMAMXMMMMXMMMSMSMXMXMXMXAXAAXXXAAXAAMAXXMSXAMAMSMAAMSSMMMXXXSMXAMSSSXSAAXAMMMXMMMSMMXMMAXXXAMXXAAAXMAMAMAAAMXMAAMXMXMASAAAAXSSMSXMAM -SMSMSXMSXSAXMAMMMMMAAMMAMAXMAMXMASMMMXXMAMMMMMSMXMMMMXMAMMXMAAASXXSAMXSMMAMMXXMXSMSXSAMXAXASXSMAMSSSSXMAMSSMSXSXSSSXMXXASXMASXMMMSSMAXSXASMS -AMAMXAMAAXMMMSMMAASMSSSXSASAXAMXAXAAXMAMXSXAXAAMAMXSAAMMMXMMMSMMAAMAMAAAMAXXAXMASAAAMAMMMXXMAASAMXAMMMMSMAAAMAMAAMAASMSMMXSXMMMXXAAMAMMSAMXM -AMAMMAMMSMAXMAASMMSXXAMASASMSSMMSMSMSXXXMAXMMSMSMSMSSSSMMAMXMAMMXMAXMMSSMSMMMSMAMMMMMASAXAAMMMXSAMXMMAAAMMMMMAMMMMSMMAAAXASMSAMAMMMSAMXMMMAS -SSSSSSMAMMMSMSMMASMMSAMXMAMXMAAXMAXAMXSXMAXSAMXSAAAMAMXAXMSMMMSMMSMXSXAMAXMAXXMXSSXSSXSAXSSMXMAXSAMXSMSXSAMXMXMASXMMXSSSMASASMSAAXXAMAAMASAX -AAAAAASXMAAAXXAMMMMAXAMXMXMSSSMMMXMAMAMAMAMSASAMMMSMMMSSMSAXAXXAAAMAXMMMAMSSSMSMXMAMMXMAMXAAXMAXAMMAMXMAMAMAMXMAMAAMMMAXMAMXMAXXMMAAXSMSASXS -MMMMSMMXSMXMSXXXAAMMSXMAMAMXAMMAXSSXMXMAMXMMAMMMAAXXAAMAXSASXSMMXSMSXSXMMMAMAMXMAMAMSXSAAMMMMMSSMSMASAMAMASMSAMMMXMMAMMMMXSXMAMMSMXSAXAMMMMA -XAAMXMMXMASXMMMSMSSMAASASMXMAMXSAXAAMSMMSXXAAMAMMSSSMMSMMMAMAMXSMMAXASXMXMXMXXASMSXMXASXSXSAMXXAAAMXMASXSXMASMSMASMSSSMAAXXMMMSAAAAMASMMMMAM -SSSMAASAMAMAAAAXAAAMAMSAMAASAMAMMAMSMSAXAMXSSSXSXAXXAAAAAMAMXXAXAMAMXMAMSMSMSSXSMAMSMXMAMXSMSAMMXMSXXXMAMXMAMAXMAMAAAMXMSMMAAAMMMMMMAMXAAXSA -AMAMSMSASMSXMMSMASMMMXMAMSMXAMXASMXAASMMASMAMXMAXASMMSSSXSXSXSXSAMXSXMAMAAAAMAMXMSXAAXSAMXXAAXAXAXMMSAMAMXMXSMSMMSMXMAAMAAAMMXSAMAMMMMMXMAAX -MSAMMXSXMXSAXXXAXXMASMSAMASMSMSAMAXMMSXAAMMAMAXMXXXAAMXXMMAMAAAXMMAAMMXMMXMMMMAXSAXXSAMXMMMXMAMSXSAASASXSAMMAXXAXSXSXMASMMSASASXSASAMMSMXMXM -XMXMAXMAMAMAMASMSASMMXSASAXXAASASMXXAXAMXSXMSXSASMSSSSSMSMAMMMMMMMXSXASMMMXXAXXMAMASMMMAAAXMXSAAMMMMSAMMSASAMSMAMXAMXMASXAXAMASMSASMSAAAAMAM -SMSSMMSSMMSMMXAAMAMAAASXMXSSMMMAAXSMMSXMAXAMAMXAAAAAMXAAXMAMAAXAASAXMAXAASMSSSMMMXXXAASXSSMSAXMMMAMXMAAXSMMMAAAAXMXMAMSMMSMXMAMAMAMAMXMXXXAM -AAAAAMAMXMAAXXMAMSMXMASXSSMAASMMMXMAMXAMSXMMAAMXMSMXMXMMMMSXSSMXAMXSXAMXMMAAAMAAXXMSMMSXXXAMXXMXMASXSSMMSAMXSXSMSMMXAXAAXAASMSSXMAMXMSSMSSSS -MMMXSMSSSSMSSSXAAAMXSXMASAMAMMXMSMSXMXSXAASASXSXXXMASMXSXAMXMXMMAXXAMXMMAMMMXMSMSMAMMASMMMMMXASAMMSMMAXAMAMMMXMMXMASXSMAMMSMAAMMSSSMXAAXMAXA -XASAMMXMAAAMXMASMMSAAAMXSAMSXSXMAASMMMXMSMMAMASMXAXAMAAMMMSASAXMMMMMSAAXXMSSMXAAAMAMMASMSAAMMMSASASASMMXMMMAXAAAASMXMAXMXXAMXMAAAAAAMSSXMMMX -MSMASAXMSMMMAMAXSXMASXMMMXMXASMSMSMAAAXAAXMAMMMAXMMSMMAMAXSAMSMMAAXXAAMSAMAAXXXSMSMSMMSASXSSSXSAMXSAMXSXASMMSMMSMSAXSMMASMMMAXMMMSMMMAMXMXMX -SAMXMMMMAMMSMMSMAMSXMMXMASMMAMAXXAMSXSSSMSMXXMASXMAMASAMXMMXMAMXSMSAASMAMMSMMMMAAAMMAMMAMAMAXAMXMXMAXAMSXMAXAAAXMMXMAAAAXAASXSMSAMMXASXMASMS -SXSASAAMASAXXAXAMAXASAXMAMXMAMSMSMAXMAMAXSAXXSAMXMASXXAMXXXAMASXMASMMMMXMXMAAAAMMMMSAMMMMMMAMMMAMXSAMMXMSSXMSMMXSAMMSMMMSSMSAAXMAXAMXMAXAAXA -SASASXSSXSAMMMMSXSMXMASMSSMMAXMAMXAMASXMMMMSMMASMAAXAMASXMSXSASAMMMXAXXMMASXMMSXAAXMSMXMAMSXSAXAMMASMXASAMSAMAMAMASXMAAAMAAMMMMMAMMSAXXMXMAM -MAMAMMMAXMXXAASXXXAAXAMXMAMSSSMXAMXSXXAXMAAAXSAMXAMXMXAMAMAMMMSMMAAMSSMASASAMXXMMSMMXXXMAMXASASXMMAXMXXMAXXMSAMXSAMASMMSSMMMXMAMSSMAMAMSSSMX -MXMXMAMMMMASMXXSAXSMSAMMMAMMMAMSMSASMSXMSMSXXAMXAXSXSMMXAMASAMMMSMSMAAXAMASXXXMASAAMMMMSMSMMMMMMAMSMMXSSSMMMSXMXMAMXMAAAAASXMAMAMAXMAXMAAAXM -MSSSXXXXAXAXXXMMSMAXSAASMSSSMAMAAMAMXSAAXXAMSSMMSXMASXSSXSXSMSAMMAMMMMSXSMMXSAMXMSSMAAAAAXAAASMMSMAASXMAXAMAMXMAXAXSMMMMSMMMSSMSSSMXMXSMSMMA -MMAAASMSXSMSMSMAMSMMMAMXAAXMXMMMMMAMMMMSSMXXAAAAXAMAMAAMAMAMMSASMAMXXAMXXAXMMMSXMAMXSMSMSMSMMMAAMSSSMAMAMXMAXAAMXMXMAAAXMMAAAXAAAMAAMAMXAMXS -MMMMMMAAASXAAAMAMAMAMAMMMMXSASXSAMASAAAAMAMMSSMMSXMSMSMXAMAMXMXMXXSXMASMSSMSAAXXMAXXMMXAMAMMSSMMMXMAXSMMSASAMSXSASXSAMSSSSSSMMSMXMSAMMSXMSAM -SSSSSMXMMMAMSMSMMASASMSXMAMSAXASAXAXMMMXMAXXAXAXAAXXAAASXSMSXMASMXMASXAAAXASMSSMSMSMSMMXMAMXAAMAMMSSMXMASAMAXMASMXAASXMAAAAMXAXMAXMAMASAMXAM -AAAAXSSMMAXMXMAXMASMSMSAMAXMXMXMMMSSMXSASXSSMSMMSSMMMMXMXAXAXSASMAAAXMASMMXMAXMAAXAAAMSMSSSSMSMAMMAMXXMASAMMMMAMXMMMMMMMMMMMMASXXSSXMASAMMSS -MMMMMMSAASMMXMAMXAMXSXSASMSSMMSASXAAMASASXAAMXMAMMMSAMAMSSMSMMXSXXSAMAMXXMMMMXMSMSMSMSAAXMAXAXXXXMASXMMAMXMXSMMMSMXAXAMMSXMMMSSMXXXAMAXAMXAX -XSXSASMSMXAXMMASMAMXSASMMAAXAXSAMMXSMASMMMSMMXMMXAASMSMXAXAXSMAMAXMXASXMXXAAMMMAASAMXMMSMMSMMMAMSMMSAMXMSAMAMAAAMAMXMASAMAMXMAMXMXSSMASMMMMS -XAASMSAXXMXMMMASXSMMMXMAMMMMMMMMMMXMMXXAMXMAMSSSSMMSMAMMMMMMAMXSXSASXXASMSSXSAXMSMAMXSAMAAAASMSMXAASAMAMSXMAXSMSMSSSMAMMSMMAMMSASMAAAAXAAAAX -XMMMMMAMMSMMXMAXAMMXXASMSAAXAAXAAMXMASXSMASAAMAAXSAXMAMAXAMSMXMAMMAMMXAXAAXMXXMXXXXMMMASMXSMMXMASMMSMMSMMMSXMXMXAMAXMAMXAASASXSASMSMMMMXMMMX -MXAAAMAMAAASXSSMAMMSSMMXSXSSSSXSSSMXMAAXSXSMXMMMMMSSSSSSXMXMXSXXXMAMASMMSMXXXASMASMAXMMMMAMAMXMMMAAMMAXAXAAMSMSMAMMMMASMSXSASXMXMXXXXMAMSSSM -ASMSMSSMXMMMAAASXMSAXAAMXAMMAAAXAMMASMMMSMXMSAAMMAXMMXXAASMMASAMMXMMXXXAAAMSMMAMAMXAMXMAMAXMMXSSSXMSMMSSMMXMAAASAMXAMMAMXAMXMASASMAMSMMSAAMA -MSAMAXMASXXMMMMSMMMASMMSMSMAMMMMAMSASXMAXMASMSSSMSSMSMMSMMAMASAMAASMSXMMMXMAASXMASXXAMSAMXSXMAMXMMXXAMXAMXASMSMSMMMXSMAAMXMASAMMAMAAMAMMMMMX -MMAMMMMMMMAAAMXXAMMMMXAXAMAAMXXMXMMASAMMSSXSXAXXXMAAXXAAMSAMMMMMSASAMXMASASMXMMMXSAMAXMXMXAXMXSAMSMSXMXXMSXSAMXSAMXAMMMMMSSMMASMSSMSMMMAXXXX -XSAMXSXSASXSMSXSAMXSSMMMMMMMSXAMMXMASAMAMMMMMMMSMSMMMMSMXAASMMXAMXXAAXAXSASMSAMSAMXSMSMMMSMXXAMXSAAMMSAMXSXMASASASMXSAMAXAAXSAMMMAMMAMMSSMAS -XSAXAXMMASMAAXASXXMASMXAXAAXXXAMXXSXSMMMSAAAAAAAAXAMXXAMAMXAAXMXSAMXSSMMMMMMSAMAAXAXAAAAAAXMMXMMSMSMAAXAXSAXAMASAMXAMASXXMSMMMSMXAMSAMMXAMXA -ASAMSSMMMMMMMMMXMXMAMXSXSSSSMSSMMASAMXSASMSMXMXMMMMSMSMSMXMSXMMASAMAAAAMSXMXSAMSSMSSSSSMMSASXMSAXAMMMMXSXSXMASAMXMAMSMMXSXXMXXMAXSMSMSXMAMXX -MMAMMAXSSXMXSXMAMAMASMSAAAAAXAAASAMAMAMASMMMSSMSMMMAMXMAMAXXAMMASAMSSSMMSAMXMAMXXMMAMXAXXMAMAAMAMXMSAAMXMXMAXMASXSXMAAXAAAMAMMMAMXAMAAXSSMMS -XSAMSMMMAASAMAMSSMSXSAMMMMMMMSSMMMSAMASXMASAMXAAASXSMMSASXMSAMAMMXMAAAXASAMXMXMSXSMAMSMMXMAMMMMASXASMMAMMSXMASXMMMASMSMXMAMAAAMSSMAMMMMAAMAM -MSAXAXAMSMMASAMMAXXMMXXMASXXAXXXXMSMMXSMMXMAMMMMSMAMMASXSAAXMMSSMMMMSMMXMAMSMSAMAASAMAAAASXSMMAAAMAMAMSAAMMSAMMMMSAMAMMMMXSXSSXMAMXMMMMMSMMS -XSXSSSXMMMSMMXMSAMXXAAXMSMSMXSAMXMMMSMMASAXAMXXSXMAMMASXSMMMSAAAMXSMAMSMSMMAAMXMAMSMSSSSMSMSAAMASMASXMXMXXAAMAAAAMASAMSAMXAAXMASMMMXSXSAAASX -AMAMAXMASAXAAAXAAMMMMXMXAAXMASAMMXAAAMXMSXMMXAXMAXSXMASXSASAMMSMMAXSAXXAAXMMMMMXMMXMAMXMASASMMMXXXASXMSASMSMSSSSXMAMAXSSSXMAXAXASAAASAMXSXMX -MMAMMMXXMXSMMMSSMMAAXXSMMSMMXSXMMXMSSSSXSMASMXMASXMAMXSAMAMSSMXAMXXMMSMSMSMSSXXXMASMMSSMAMXMASXXMMMSAXMAMMXXXMAMXMSSMMXAXXXMASMMSMMSMAMAMMMM -AXASXXMMMASXAXMAASXMSMSAAXXMMSMSSMMXAAAAXAXMASAXMASAMSMXMSMMSAXAMXXAASXMASAAMSMXMAXMAAXMAXMSMMMMMAMMMMMMMASMSXSASMAAASMMSMMMAXAAMMMXMAMXXAAA -MSMSMSAAXAMMMMMSMMAAXAMXMXAMAMAXMASXMMMSMMSAMMSMXMMAMXAMMMAMXMSSMASMMSAMAMMMMAMAXMXMMSSSMXMXXAAAXSMMXSAAXMMAAAXASMMSMMAAAAAMMSMMMAXMSSSMSSMS -XAAMAMMXMMSASMXMXSMMMSMSSSSMSSSMSAMAASAMXAXAXMAMASMMMMXMASAMXAAAMMXMASAMAXAAXAMMMMASXMMAAASMSMSXXAASASMMMAMSMMMMMAAXXSMMSMXMMXMASMSMAAAAAXAM -SMSMSMSXXXMAMAAMAXAXXMAMAAXAXAMAMMMSMMMSMSSMMSASXSAMASASASAXXMSMMXAAMMXXMXSXSMSMASASAMXMSMSAAAAXMMMMASAMSMMMAMAAMXMXAXXMXXSMSAMXAMMMASMMMMMM -AAAXAXAXXMASMSMMMSMMMMAMMMMXMAMSMMAXAMASXMAXASASMSAMMSASASMMSXMASMMSMMAASAXASAAXAMASMMAXAAMMMSASMSMMMMXMAXASASXSMAXXXMMXMAXXXXMAMMMMAXXMSSSM -MSMSSSMMXAMXAAAXXAMAXSXSXMAXSAAXAMXXAMXSASAMMSXMASMMMMAMAMAASASAMAXMAMXSMASAMSMMSXMMAMXMMMMXMMAAAAXSMSMSMSMSASAMXXSXMAXMMSSMMSMXSAMSMSSXAAAM -XMAXAAXAMSMSSSMMSMMSMSXXMAXXMMSSSMSSXMSSMMMSAMAMAMAAMMMMXMMXSMMMSMMSAMXXMXMXMXXAAAXSXMAXAASAXMAMXMMMAAMAAMXMMMAMXMAXAMXXAAAAXSAAMMXAAAAMMSMM -SMMMXXMMXAAAXAMXAAXMXSXMASXSXXAAXAAAAMAMAAAMAMAMXXSMSSXSMSXMXXAAAAXSAXMSMSAMXXMASMMAASXSSSSXMMSXMSAMSMSMXMAXASAMAAXXMXSMMSSMMMMMSXSMSMMXMAMS -AAAMSSMMSMSMSMMSSMMMASAMAXMMMMMSMMSSMMASMMSSSMSMSMASXMAMSAXMASMSSSMSAMSAMAMMSMMMAASMMSAMXAMAXSXMASAXAAAMMSMSXSASXSMMSMMAXAAAXSAXSMSMXXXXSASM -SSMSAAAAXAMXXMXAMASMAMAMAXAAAAAAAMMAMXASAAAAAAAAAXMASMAMAMXMAMMAAAMMAMSASXSAAAXXMMMAAXAXMAMSMMAMAXMSMSMSAAMSASAMAAXAAASXMASXMASMSAMXSMSAMXAM -AAMMXSMASAMXMXMASXMASMXMMSSSSMSSSMSXMMASMMMSMMMSMSAMXMASMXSASMMMSMMSMMSXMAMMSSMAXXSMMMMXSASAASXMXSASAMXMMSSMAMAMSXMSSMMMSAMXMAMXMXMASAMXMSMX +26,38,2,15,36,8,12,46,88,72,32,35,64,19,5,66,20,52,74,3,59,94,45,56,0,6,67,24,97,50,92,93,84,65,71,90,96,21,87,75,58,82,14,53,95,27,49,69,16,89,37,13,1,81,60,79,51,18,48,33,42,63,39,34,62,55,47,54,23,83,77,9,70,68,85,86,91,41,4,61,78,31,22,76,40,17,30,98,44,25,80,73,11,28,7,99,29,57,43,10 + +57 12 60 96 93 +73 87 63 70 91 +74 32 43 67 46 +59 34 5 35 82 +53 40 55 29 1 + +48 71 59 45 63 +13 42 23 95 39 +84 82 10 29 4 +16 91 32 92 62 +99 33 20 21 3 + +51 20 32 30 90 +86 88 89 1 73 + 5 64 78 81 22 +95 50 7 27 17 +39 82 46 35 92 + + 2 65 21 77 97 +50 46 38 99 82 +22 1 24 63 70 + 8 32 80 98 35 +57 67 25 81 18 + +64 7 26 44 14 +42 71 19 22 0 + 4 36 51 25 6 +69 59 90 15 88 +85 65 32 76 70 + + 8 69 75 42 44 +64 25 72 71 34 + 2 94 81 14 38 +97 89 59 23 88 +57 70 13 1 51 + +93 94 26 11 35 +63 57 84 10 92 +12 29 78 65 64 +54 75 61 50 81 +13 90 2 66 99 + +10 21 39 24 56 +90 49 25 80 59 +41 72 47 74 79 + 9 89 42 92 31 +20 1 32 58 83 + +81 11 58 2 69 +79 23 60 8 63 +94 9 0 45 34 +36 31 61 71 74 +51 48 59 99 70 + +66 47 88 16 18 +35 75 54 26 77 +23 55 33 3 19 +82 71 57 80 45 +22 8 40 76 20 + + 8 5 95 86 76 +49 21 82 78 77 +12 38 61 85 4 +14 54 42 40 39 +69 66 1 0 7 + +85 66 96 45 64 +25 55 36 76 37 +82 61 29 47 54 +73 94 3 59 24 +71 62 31 98 79 + +84 10 60 61 97 +75 90 95 6 8 +93 89 65 70 80 +35 15 46 55 77 +52 3 74 39 36 + +80 24 59 71 52 +17 43 45 8 6 +58 22 32 46 98 +48 3 56 31 77 +97 28 55 0 76 + +51 98 12 49 19 +28 94 9 97 85 + 5 78 47 93 24 +67 0 37 81 76 +77 48 15 69 50 + +34 45 5 80 14 +82 42 63 2 86 + 3 95 54 74 69 +46 27 49 92 66 + 0 85 98 83 17 + +41 99 93 62 96 +90 30 10 5 94 +98 32 83 78 25 +76 27 29 19 35 +58 91 34 31 3 + +31 1 24 96 36 +58 12 59 57 92 +84 5 55 49 41 +54 72 70 95 88 +66 50 22 35 15 + +35 57 69 13 93 +34 62 28 26 36 + 6 64 47 74 45 + 0 32 19 33 44 +65 25 90 91 1 + +57 96 70 15 89 + 7 65 29 12 34 +40 25 36 81 86 +58 39 27 79 59 +19 91 47 6 11 + +60 74 67 87 68 +80 53 42 91 89 +11 19 8 78 31 + 4 6 30 10 90 +64 41 27 59 12 + +45 0 86 81 34 + 8 29 53 12 32 +89 74 64 26 96 +60 13 87 35 73 +52 69 23 46 40 + +43 35 1 59 40 +63 74 7 53 94 +39 42 8 84 27 +66 65 46 82 80 +61 76 13 31 45 + +38 4 51 76 5 +36 57 3 86 84 +83 37 60 67 52 + 0 70 7 19 72 +62 99 9 75 58 + +95 47 78 27 14 +50 82 17 15 22 + 1 76 64 73 71 +24 26 42 79 55 +36 40 43 81 59 + +13 7 60 49 87 +30 31 99 19 82 +91 88 53 96 97 +37 11 47 32 81 +86 94 45 71 38 + +64 42 19 6 69 +33 2 61 98 55 +20 48 5 82 56 +78 11 65 59 74 +85 72 1 54 29 + +76 56 84 34 83 +16 26 33 50 3 +85 20 87 31 51 +62 7 28 96 8 +81 57 89 44 58 + +92 49 58 8 45 +47 89 48 91 71 +53 67 37 59 88 +24 69 96 61 16 + 2 6 68 95 60 + +99 60 39 96 0 +62 14 77 70 47 +72 98 66 42 58 +85 19 12 23 44 +68 28 51 94 82 + +59 32 45 99 92 +96 36 30 87 9 +61 54 71 94 22 +76 4 62 20 2 +40 18 43 70 44 + +22 54 77 12 3 + 5 11 41 19 58 +49 51 75 24 63 +42 20 43 92 69 +62 36 15 25 80 + +93 40 48 21 10 + 0 83 86 31 65 +52 7 17 67 72 +95 28 63 99 47 +51 22 85 55 44 + +43 26 86 80 94 +93 66 84 90 61 +91 58 71 73 89 + 9 72 81 48 54 +11 60 36 25 70 + +33 42 73 20 69 +15 12 27 72 14 +93 30 89 86 22 +77 25 80 85 74 +66 78 0 49 82 + +37 84 46 86 39 +55 31 96 17 43 +12 33 45 97 9 +44 57 25 77 78 + 5 73 81 35 58 + +19 41 87 94 59 +97 84 78 52 77 +70 15 91 53 1 +71 47 82 35 99 +25 55 58 39 29 + +29 74 31 73 72 +23 10 83 63 25 +18 26 79 35 65 +59 44 98 45 20 +67 7 87 28 11 + +83 89 92 55 72 +32 6 78 93 49 +66 77 5 60 61 +85 57 29 97 65 +86 84 48 20 75 + +85 82 83 66 86 +64 61 77 38 84 + 1 68 4 18 72 +56 97 37 98 74 +44 14 78 52 93 + +30 73 72 24 51 +78 3 97 39 5 +90 42 58 96 17 +33 95 44 27 1 +80 16 84 54 99 + +92 88 79 14 10 +24 52 80 46 51 +11 31 35 53 25 +44 54 63 33 93 +87 38 15 64 4 + +14 25 61 40 95 +34 17 97 38 26 +64 90 45 91 65 + 8 50 23 11 74 +32 33 22 88 28 + + 8 32 94 72 74 +27 29 22 2 76 +58 54 80 5 35 +36 24 83 59 25 +21 31 48 39 4 + +56 13 22 53 72 +61 60 81 87 86 + 7 74 98 28 11 +67 38 91 23 0 +42 84 24 3 47 + +29 98 43 45 30 +86 50 15 60 11 +18 34 8 67 24 +36 97 69 27 79 +35 87 52 55 61 + +40 50 30 75 72 + 1 62 85 21 11 +80 10 91 7 2 +27 31 73 25 29 +63 65 55 87 23 + +12 68 47 77 76 +98 30 6 51 80 +22 85 88 99 24 +35 90 82 18 37 +17 27 34 54 43 + +85 46 35 16 45 + 4 6 96 9 61 +44 90 64 29 50 +76 38 69 80 28 +27 23 51 8 7 + +72 8 62 61 83 + 0 30 92 29 7 +86 28 54 52 5 +32 97 82 68 31 +76 69 22 12 13 + +66 67 1 36 94 +80 99 49 47 38 +76 95 30 13 19 +83 21 45 44 43 +29 91 14 20 98 + + 8 80 3 82 99 +62 41 47 6 27 +12 72 76 81 36 +30 7 67 90 5 +85 31 83 49 19 + +25 91 86 47 27 +69 74 20 17 97 +59 45 87 28 75 +49 94 63 33 9 + 8 66 2 30 32 + +69 58 41 84 5 +27 2 22 65 88 +63 96 90 17 85 +26 52 86 20 8 + 3 9 59 50 57 + +80 85 90 5 56 +66 57 76 65 62 +81 74 15 38 32 + 0 75 61 16 79 +96 50 8 86 1 + +52 21 98 54 94 +73 90 87 58 50 +38 39 30 69 82 +55 12 81 48 29 +93 23 91 47 28 + +92 14 3 1 19 +18 27 91 62 86 +61 80 49 53 97 +77 98 52 0 8 +17 54 85 59 51 + +49 45 38 70 33 +96 18 63 5 99 +65 58 29 91 19 +78 7 98 39 17 +31 15 13 35 75 + +55 50 58 96 94 +67 72 4 40 90 +59 31 15 78 81 + 1 80 56 34 20 +27 52 88 75 53 + + 0 5 91 65 72 +53 42 4 50 25 +13 52 81 79 92 +46 89 55 58 95 +19 77 30 36 18 + +38 97 86 69 44 +70 52 14 19 29 + 9 36 96 24 80 +84 22 32 72 48 +28 3 46 42 87 + +94 93 31 33 38 +21 30 34 69 35 + 1 10 55 79 57 +54 28 44 78 73 + 8 20 45 41 23 + +32 13 49 80 68 +41 95 84 74 57 +15 61 5 77 67 +53 54 29 51 75 +24 66 36 88 90 + +74 49 19 2 66 +94 45 30 84 37 + 7 24 22 87 60 +13 40 57 9 1 +56 42 92 67 27 + +29 7 97 22 36 +80 77 92 3 67 +48 54 73 51 41 +28 8 55 24 4 +13 11 66 5 86 + +76 16 8 71 92 +23 61 53 27 43 +25 6 17 32 64 +40 69 21 84 93 +89 30 55 90 41 + +86 22 81 13 33 +35 87 82 77 71 +96 65 37 62 51 +16 72 36 93 23 +84 44 26 66 27 + + 4 73 52 35 43 +39 9 96 34 70 +19 67 38 10 54 +21 7 36 13 90 +84 28 59 57 75 + +55 7 32 68 97 +10 56 46 28 66 +74 81 18 73 26 +44 76 13 35 61 +90 36 45 64 58 + +96 62 97 87 95 +45 78 38 84 41 +91 19 88 25 22 +12 27 31 92 5 +15 83 7 53 71 + +31 17 96 6 47 + 3 90 27 89 75 +53 39 62 82 13 +52 34 23 83 87 +19 67 50 98 84 + +96 3 70 17 42 +50 74 65 53 31 +52 80 18 26 77 +29 57 95 25 81 +88 92 55 13 28 + +63 34 56 1 4 +40 97 10 5 50 +96 55 15 68 37 +43 33 89 72 3 +11 88 44 86 2 + +65 44 24 34 41 + 1 68 67 6 26 +27 88 73 25 9 +55 56 16 48 29 +33 18 77 3 94 + +91 75 35 33 56 +96 19 69 81 53 +25 14 32 74 22 +24 6 89 42 90 + 9 2 77 67 20 + +19 97 36 78 71 +16 26 99 23 92 +10 68 74 90 88 +30 60 96 11 34 + 8 76 35 53 22 + +84 15 76 31 63 + 1 34 96 70 35 +66 57 71 26 61 +83 41 74 85 60 +16 28 30 23 49 + +72 88 56 92 86 +12 44 71 47 30 +39 53 4 46 45 +38 5 9 35 25 + 8 61 13 50 82 + +62 92 49 21 95 +70 47 73 74 56 +17 89 0 39 60 +42 99 13 63 67 +43 16 11 20 84 + +13 30 59 84 12 +52 88 79 62 29 +99 39 95 55 70 +80 46 31 89 69 +74 71 65 3 38 + +47 86 21 24 22 + 0 62 69 38 59 +27 10 41 81 92 +14 51 35 13 17 +30 15 7 71 70 + +25 26 29 66 32 +68 46 77 45 86 +14 15 90 40 22 + 6 36 17 76 1 +80 55 83 98 79 + +98 76 58 27 39 +45 90 56 46 69 +10 41 54 82 25 +94 86 89 33 79 +16 30 87 24 83 + +66 28 93 91 68 +71 51 22 10 42 +29 20 77 17 8 +55 39 89 72 12 +98 78 65 48 41 + +49 25 80 64 99 +90 9 40 76 63 +60 93 46 4 27 +17 0 42 33 28 +59 26 18 69 75 + +35 0 76 58 31 +87 17 42 13 33 +70 67 61 52 12 +59 85 64 80 1 + 4 73 99 55 48 + +40 73 94 80 90 + 9 93 17 51 62 +96 0 57 82 47 +86 27 64 95 84 +16 99 37 41 44 + + 8 96 31 26 50 +20 69 75 82 89 +94 42 38 78 35 +83 13 45 62 43 +97 14 34 17 47 + +35 88 38 7 97 + 8 79 51 74 26 +60 22 53 5 33 +63 23 69 0 83 +21 44 91 95 18 + +64 77 4 0 15 +80 66 9 16 5 +75 8 18 40 91 +72 1 49 60 97 +14 24 34 65 92 + +84 75 31 56 55 +17 92 48 45 89 +88 52 10 90 47 +91 97 6 39 79 +99 65 11 42 93 + + 7 82 10 88 49 +11 66 54 3 53 + 4 73 71 42 92 +22 75 84 16 48 + 5 94 79 96 45 + +20 87 16 25 9 +15 70 19 72 56 +71 37 69 2 62 +76 97 41 8 92 +40 65 86 0 32 + +81 48 14 75 4 +70 30 6 74 62 +15 28 55 22 63 +36 32 35 86 71 +29 47 59 18 78 + +10 35 27 14 64 +43 19 86 71 36 +32 79 9 51 91 +17 67 26 41 56 +15 1 95 13 65 + +74 79 22 30 46 +80 55 57 14 37 +59 88 40 83 56 +63 10 97 64 7 +77 61 53 91 20 + +53 81 13 72 67 +79 10 71 11 8 + 0 99 60 20 4 + 7 45 89 66 98 +50 36 80 57 5 + + 5 7 35 4 29 +28 65 31 86 33 +66 98 75 13 92 +38 67 80 46 11 + 9 15 57 71 32 + +21 33 22 77 5 + 0 6 59 37 69 +50 45 32 60 96 + 9 39 28 56 57 +34 46 43 52 25 + +67 11 21 53 60 +52 58 54 94 47 +84 46 72 81 16 +31 51 23 36 97 +80 43 75 99 79 diff --git a/input/day_05 b/input/day_05 deleted file mode 100644 index 876517b..0000000 --- a/input/day_05 +++ /dev/null @@ -1,1388 +0,0 @@ -91|89 -46|43 -46|19 -98|64 -98|18 -98|66 -67|54 -67|86 -67|57 -67|42 -65|61 -65|27 -65|37 -65|79 -65|28 -78|33 -78|75 -78|65 -78|32 -78|24 -78|39 -53|89 -53|65 -53|34 -53|15 -53|47 -53|44 -53|86 -33|13 -33|24 -33|91 -33|92 -33|79 -33|46 -33|32 -33|97 -35|48 -35|18 -35|98 -35|39 -35|53 -35|86 -35|81 -35|47 -35|73 -93|44 -93|95 -93|92 -93|28 -93|26 -93|94 -93|19 -93|67 -93|89 -93|73 -48|55 -48|46 -48|86 -48|41 -48|54 -48|32 -48|24 -48|16 -48|79 -48|65 -48|13 -34|54 -34|78 -34|42 -34|95 -34|73 -34|26 -34|64 -34|12 -34|67 -34|44 -34|75 -34|18 -24|34 -24|57 -24|82 -24|86 -24|79 -24|41 -24|31 -24|65 -24|15 -24|97 -24|71 -24|27 -24|44 -15|92 -15|44 -15|47 -15|46 -15|93 -15|26 -15|97 -15|55 -15|27 -15|28 -15|12 -15|89 -15|19 -15|13 -61|81 -61|16 -61|94 -61|42 -61|19 -61|53 -61|64 -61|82 -61|78 -61|33 -61|48 -61|57 -61|67 -61|24 -61|98 -73|64 -73|66 -73|78 -73|57 -73|47 -73|39 -73|55 -73|18 -73|33 -73|15 -73|86 -73|16 -73|42 -73|75 -73|54 -73|53 -94|42 -94|54 -94|86 -94|48 -94|53 -94|82 -94|18 -94|47 -94|24 -94|33 -94|78 -94|57 -94|75 -94|66 -94|64 -94|16 -94|73 -54|92 -54|66 -54|91 -54|65 -54|93 -54|27 -54|39 -54|15 -54|28 -54|47 -54|79 -54|57 -54|55 -54|33 -54|13 -54|86 -54|82 -54|46 -47|37 -47|31 -47|46 -47|95 -47|19 -47|28 -47|44 -47|92 -47|43 -47|91 -47|26 -47|97 -47|89 -47|13 -47|61 -47|65 -47|71 -47|55 -47|79 -57|86 -57|66 -57|47 -57|13 -57|34 -57|31 -57|46 -57|65 -57|79 -57|97 -57|27 -57|26 -57|15 -57|28 -57|92 -57|89 -57|43 -57|71 -57|44 -57|93 -75|42 -75|79 -75|93 -75|57 -75|81 -75|41 -75|53 -75|55 -75|32 -75|66 -75|39 -75|64 -75|47 -75|54 -75|48 -75|15 -75|24 -75|82 -75|33 -75|16 -75|97 -37|12 -37|75 -37|43 -37|95 -37|42 -37|98 -37|61 -37|67 -37|94 -37|39 -37|18 -37|32 -37|16 -37|33 -37|64 -37|78 -37|19 -37|54 -37|48 -37|81 -37|35 -37|73 -81|46 -81|57 -81|16 -81|53 -81|82 -81|24 -81|39 -81|92 -81|48 -81|41 -81|86 -81|47 -81|13 -81|66 -81|15 -81|32 -81|54 -81|93 -81|65 -81|55 -81|91 -81|33 -81|97 -89|64 -89|33 -89|98 -89|43 -89|24 -89|67 -89|39 -89|75 -89|32 -89|78 -89|16 -89|61 -89|35 -89|94 -89|95 -89|12 -89|48 -89|54 -89|42 -89|82 -89|18 -89|81 -89|19 -89|73 -66|28 -66|26 -66|93 -66|91 -66|34 -66|37 -66|15 -66|43 -66|27 -66|97 -66|55 -66|92 -66|61 -66|79 -66|89 -66|12 -66|31 -66|13 -66|47 -66|46 -66|65 -66|71 -66|95 -66|44 -39|28 -39|15 -39|65 -39|24 -39|34 -39|86 -39|47 -39|91 -39|79 -39|44 -39|46 -39|92 -39|32 -39|41 -39|57 -39|82 -39|97 -39|66 -39|27 -39|71 -39|13 -39|93 -39|55 -39|53 -71|95 -71|61 -71|35 -71|37 -71|34 -71|19 -71|98 -71|81 -71|26 -71|31 -71|12 -71|78 -71|89 -71|73 -71|67 -71|43 -71|42 -71|64 -71|75 -71|48 -71|18 -71|94 -71|27 -71|44 -86|34 -86|28 -86|15 -86|47 -86|26 -86|71 -86|91 -86|61 -86|89 -86|66 -86|65 -86|97 -86|55 -86|93 -86|27 -86|79 -86|92 -86|46 -86|95 -86|43 -86|37 -86|44 -86|31 -86|13 -13|26 -13|89 -13|71 -13|12 -13|55 -13|34 -13|46 -13|61 -13|31 -13|28 -13|19 -13|93 -13|67 -13|79 -13|37 -13|43 -13|65 -13|91 -13|94 -13|27 -13|92 -13|97 -13|95 -13|44 -16|66 -16|13 -16|15 -16|24 -16|97 -16|33 -16|92 -16|86 -16|82 -16|53 -16|91 -16|39 -16|28 -16|57 -16|55 -16|32 -16|65 -16|41 -16|71 -16|79 -16|54 -16|93 -16|47 -16|46 -31|35 -31|37 -31|81 -31|43 -31|26 -31|48 -31|33 -31|18 -31|64 -31|75 -31|42 -31|95 -31|39 -31|16 -31|67 -31|78 -31|89 -31|19 -31|61 -31|94 -31|98 -31|12 -31|73 -31|54 -92|35 -92|12 -92|19 -92|89 -92|73 -92|44 -92|43 -92|37 -92|46 -92|98 -92|18 -92|67 -92|75 -92|28 -92|27 -92|94 -92|91 -92|31 -92|26 -92|78 -92|34 -92|95 -92|61 -92|71 -19|54 -19|41 -19|82 -19|86 -19|57 -19|32 -19|94 -19|39 -19|53 -19|78 -19|75 -19|67 -19|35 -19|24 -19|48 -19|81 -19|16 -19|73 -19|33 -19|64 -19|18 -19|42 -19|66 -19|98 -18|42 -18|86 -18|75 -18|24 -18|93 -18|41 -18|65 -18|64 -18|33 -18|57 -18|55 -18|54 -18|32 -18|13 -18|79 -18|39 -18|82 -18|48 -18|15 -18|16 -18|81 -18|66 -18|47 -18|53 -95|18 -95|81 -95|35 -95|73 -95|42 -95|67 -95|54 -95|82 -95|78 -95|32 -95|98 -95|61 -95|24 -95|16 -95|48 -95|53 -95|12 -95|64 -95|75 -95|33 -95|19 -95|39 -95|41 -95|94 -43|82 -43|54 -43|18 -43|73 -43|42 -43|33 -43|94 -43|67 -43|12 -43|35 -43|16 -43|24 -43|78 -43|19 -43|64 -43|48 -43|75 -43|81 -43|98 -43|61 -43|39 -43|41 -43|32 -43|95 -28|95 -28|98 -28|73 -28|27 -28|26 -28|89 -28|78 -28|34 -28|18 -28|43 -28|42 -28|12 -28|94 -28|64 -28|67 -28|44 -28|61 -28|71 -28|31 -28|75 -28|37 -28|81 -28|19 -28|35 -42|54 -42|86 -42|82 -42|55 -42|47 -42|57 -42|93 -42|92 -42|81 -42|41 -42|97 -42|48 -42|32 -42|91 -42|16 -42|65 -42|13 -42|15 -42|53 -42|66 -42|24 -42|79 -42|39 -42|33 -55|31 -55|89 -55|46 -55|26 -55|12 -55|91 -55|71 -55|94 -55|92 -55|37 -55|67 -55|43 -55|65 -55|28 -55|34 -55|44 -55|79 -55|19 -55|93 -55|35 -55|61 -55|95 -55|27 -55|97 -27|16 -27|35 -27|94 -27|12 -27|37 -27|26 -27|61 -27|44 -27|48 -27|31 -27|98 -27|89 -27|42 -27|95 -27|43 -27|81 -27|75 -27|18 -27|34 -27|67 -27|19 -27|64 -27|73 -27|78 -97|43 -97|92 -97|78 -97|46 -97|89 -97|26 -97|37 -97|91 -97|73 -97|95 -97|94 -97|98 -97|35 -97|34 -97|12 -97|28 -97|61 -97|27 -97|71 -97|67 -97|31 -97|44 -97|18 -97|19 -79|95 -79|12 -79|61 -79|73 -79|37 -79|92 -79|19 -79|94 -79|28 -79|46 -79|67 -79|43 -79|89 -79|71 -79|27 -79|34 -79|97 -79|91 -79|35 -79|98 -79|93 -79|31 -79|26 -79|44 -82|34 -82|26 -82|55 -82|66 -82|44 -82|86 -82|47 -82|92 -82|41 -82|27 -82|13 -82|97 -82|57 -82|79 -82|15 -82|71 -82|46 -82|53 -82|91 -82|65 -82|37 -82|28 -82|93 -82|31 -26|24 -26|39 -26|19 -26|35 -26|73 -26|16 -26|67 -26|95 -26|42 -26|54 -26|78 -26|48 -26|94 -26|64 -26|89 -26|75 -26|81 -26|98 -26|37 -26|12 -26|43 -26|61 -26|18 -26|33 -44|48 -44|61 -44|33 -44|12 -44|54 -44|75 -44|42 -44|43 -44|95 -44|26 -44|35 -44|98 -44|16 -44|78 -44|89 -44|94 -44|73 -44|37 -44|67 -44|31 -44|81 -44|19 -44|18 -44|64 -32|65 -32|34 -32|97 -32|92 -32|66 -32|44 -32|71 -32|26 -32|57 -32|27 -32|13 -32|41 -32|31 -32|91 -32|47 -32|93 -32|79 -32|46 -32|82 -32|53 -32|55 -32|28 -32|86 -32|15 -41|93 -41|46 -41|27 -41|66 -41|37 -41|89 -41|57 -41|31 -41|97 -41|26 -41|71 -41|53 -41|47 -41|44 -41|92 -41|91 -41|79 -41|86 -41|28 -41|65 -41|15 -41|34 -41|55 -41|13 -12|73 -12|64 -12|19 -12|82 -12|78 -12|41 -12|18 -12|86 -12|98 -12|39 -12|42 -12|67 -12|94 -12|24 -12|54 -12|81 -12|33 -12|57 -12|48 -12|16 -12|32 -12|75 -12|35 -12|53 -64|54 -64|33 -64|39 -64|48 -64|13 -64|42 -64|65 -64|82 -64|79 -64|97 -64|92 -64|47 -64|41 -64|55 -64|15 -64|24 -64|53 -64|86 -64|16 -64|81 -64|93 -64|57 -64|32 -64|66 -91|67 -91|61 -91|35 -91|27 -91|12 -91|44 -91|28 -91|98 -91|71 -91|73 -91|34 -91|75 -91|95 -91|26 -91|64 -91|94 -91|78 -91|31 -91|46 -91|37 -91|43 -91|19 -91|18 -46|34 -46|89 -46|75 -46|67 -46|94 -46|35 -46|71 -46|28 -46|61 -46|12 -46|42 -46|98 -46|27 -46|73 -46|64 -46|26 -46|31 -46|37 -46|78 -46|44 -46|95 -46|18 -98|82 -98|53 -98|15 -98|48 -98|32 -98|86 -98|81 -98|47 -98|16 -98|57 -98|54 -98|41 -98|33 -98|78 -98|13 -98|75 -98|42 -98|39 -98|55 -98|73 -98|24 -67|78 -67|94 -67|41 -67|73 -67|64 -67|75 -67|48 -67|81 -67|66 -67|24 -67|35 -67|39 -67|16 -67|18 -67|32 -67|53 -67|82 -67|98 -67|15 -67|33 -65|89 -65|12 -65|93 -65|43 -65|35 -65|91 -65|92 -65|26 -65|31 -65|46 -65|97 -65|71 -65|44 -65|19 -65|95 -65|67 -65|34 -65|94 -65|98 -78|54 -78|47 -78|42 -78|53 -78|82 -78|57 -78|16 -78|13 -78|79 -78|55 -78|48 -78|18 -78|86 -78|41 -78|81 -78|64 -78|15 -78|66 -53|71 -53|97 -53|92 -53|46 -53|66 -53|27 -53|57 -53|28 -53|91 -53|31 -53|13 -53|79 -53|26 -53|55 -53|37 -53|93 -53|43 -33|34 -33|66 -33|27 -33|71 -33|86 -33|28 -33|47 -33|55 -33|93 -33|82 -33|65 -33|57 -33|41 -33|39 -33|53 -33|15 -35|66 -35|16 -35|13 -35|57 -35|42 -35|24 -35|78 -35|15 -35|33 -35|82 -35|75 -35|64 -35|41 -35|54 -35|32 -93|46 -93|27 -93|37 -93|97 -93|35 -93|78 -93|71 -93|61 -93|98 -93|31 -93|91 -93|12 -93|34 -93|43 -48|66 -48|97 -48|15 -48|91 -48|82 -48|33 -48|39 -48|93 -48|47 -48|28 -48|57 -48|53 -48|92 -34|35 -34|37 -34|94 -34|48 -34|98 -34|16 -34|81 -34|43 -34|61 -34|19 -34|89 -34|31 -24|91 -24|32 -24|46 -24|28 -24|93 -24|53 -24|92 -24|66 -24|55 -24|13 -24|47 -15|43 -15|65 -15|91 -15|37 -15|79 -15|71 -15|34 -15|61 -15|31 -15|95 -61|35 -61|32 -61|54 -61|18 -61|41 -61|73 -61|12 -61|39 -61|75 -73|65 -73|32 -73|41 -73|24 -73|82 -73|81 -73|13 -73|48 -94|15 -94|81 -94|35 -94|32 -94|41 -94|39 -94|98 -54|53 -54|32 -54|41 -54|24 -54|97 -54|71 -47|27 -47|34 -47|67 -47|93 -47|12 -57|91 -57|55 -57|95 -57|37 -75|86 -75|13 -75|65 -37|89 -37|24 -81|79 - -28,27,31,89,43,95,61,67,35,98,42 -57,15,47,13,55,97,92,27,44,31,37,89,43 -35,73,64,81,82,86,47 -12,98,95,54,94,24,37,39,43 -48,33,39,32,66,15,47,13,93,91,46 -32,53,15,47,13,55,46,71,31 -39,24,32,82,41,53,86,66,15,47,13,79,93,97,92,91,71,27,34 -81,48,16,54,33,39,24,32,82,41,57,86,66,15,47,13,55,65,79,93,97,92,91 -16,94,78,53,98,41,66,33,15,24,73,35,86,75,64,57,42,54,18,82,48 -93,97,44,94,35,98,73 -95,61,12,19,67,94,98,73,78,18,75,64,42,81,48,16,54,33,39,24,32,82,41 -71,32,53,46,41,93,28,47,13,65,55,34,92,66,97,79,39,86,15 -43,54,78,16,82,39,98,48,75,33,12,95,61,35,64,81,94,32,18,67,73,42,19 -33,39,32,82,41,53,86,47,55,65,79,97,92,91,46,28,27 -13,79,93,97,91,28,71,44,31,26,37,89,43,12,67 -81,78,24,32,53,13,66,98,15,57,75,82,41,33,54 -93,97,92,91,34,31,26,37,95,61,12,19,94,35,73 -28,92,97,16,55,66,86,53,57,79,39,32,91,65,47,93,33,41,24,46,15 -13,79,92,46,28,34,31,26,89,43,12 -31,61,95,35,94,46,75,37,71,64,26,67,34,19,44,18,12 -97,82,32,65,47 -66,15,13,44,79,27,71,86,32,57,53,28,82,91,41,46,24,65,34 -65,79,93,46,71,95,67,94,35 -94,35,98,73,78,18,75,64,81,48,16,54,24,32,82,41,86,66,15 -93,97,92,91,71,27,34,44,31,26,37,89,43,95,61,35,98 -15,47,13,55,65,79,93,97,92,46,28,71,27,44,31,26,89,43,95,61,12 -28,71,27,34,44,31,37,19,67,98,78,18,75,64,42 -81,48,16,54,33,39,32,82,41,57,86,66,47,13,55,65,79,93,97,92,91 -78,18,75,64,42,81,48,16,33,39,24,32,82,41,53,57,86,66,15,47,13,55,65 -44,73,46,12,19,43,93,94,34,35,27 -67,94,48,33,82,41,57,86,66 -94,35,16,61,24,42,12,73,19,95,37,18,43,33,89,39,78,98,54,64,81,67,48 -15,13,55,65,79,93,91,46,28,71,27,34,44,31,26,89,43 -66,55,92,28,34,31,89 -24,32,41,53,66,15,47,55,79,93,97,91,46,28,71,27,34 -15,47,13,55,65,79,97,92,46,28,71,34,31,26,37,89,43,61,12 -89,43,95,61,12,19,67,94,35,98,73,78,18,75,64,42,81,16,54,33,39,24,32 -33,39,24,32,82,41,53,57,86,66,15,47,13,55,79,93,97,92,91,46,28,71,27 -24,32,82,41,53,57,86,66,15,13,55,65,79,93,97,92,91,46,28,71,27,34,44 -18,75,64,48,16,24,15,47,79 -44,31,26,37,43,95,61,12,67,35,73,78,18,75,64,42,48,16,54 -43,95,61,12,67,98,18,75,64,42,81,54,33,39,82 -97,79,32,91,65,92,13,33,57,15,24,93,41,71,46,27,53 -54,39,24,32,82,53,66,47,13,55,97,92,46,28,71 -47,13,55,65,79,93,97,92,91,46,28,71,27,34,44,31,89,43,95,12,19 -35,18,86,98,53,57,64,32,66,42,81,16,67 -95,27,13,26,34,89,55,79,61,47,31,12,93,43,15 -27,92,71,28,31,82,53,32,47 -47,65,79,93,97,91,46,28,71,27,34,44,31,26,37,89,43,95,61,12,19 -89,19,48,33,64,67,98,94,73 -13,41,78,55,82,39,48,16,24,54,15,73,66,75,32 -34,44,89,43,95,61,12,19,67,94,35,98,73,78,18,75,64,42,81,48,16 -12,67,94,35,73,78,18,75,64,42,81,48,16,54,24,41,57 -97,92,91,46,28,71,27,34,44,26,37,89,43,95,61,12,19,67,94,35,98,73,78 -27,34,98,78,75,81,48 -27,89,43,95,94,73,78,64,42,81,48 -65,92,91,46,34,95,12,19,67,94,35 -75,65,93,15,54,32,79 -57,78,32,33,65,24,75,81,15,41,47,53,42,66,86,64,39 -19,73,78,18,64,81,54,24,82,57,86 -66,91,79,47,82,34,65,86,28,44,13,53,46,27,57 -34,44,31,26,37,89,43,61,94,35,78,18,64,42,16 -26,37,67,98,73,78,18,75,48,54,39 -75,64,42,48,16,54,33,39,24,32,82,41,53,57,86,66,15,47,13,55,65,79,93 -92,34,31,37,89,43,95,12,67,98,18 -65,97,46,28,37,95,19,94,35 -66,13,55,79,92,34,44,37,61 -82,86,13,91,46,71,26 -37,89,43,61,12,19,67,35,78,75,64,81,48,16,54,33,24 -57,86,66,15,13,55,65,79,93,97,91,46,71,27,34,44,31,26,37,89,43 -54,65,41,48,86,16,57,55,39,79,93,42,24,13,33,53,66,32,64 -98,73,18,75,42,81,54,33,39,32,41,57,66 -48,98,78,18,57,16,54,86,35,42,75 -39,24,66,13,65,79,93 -18,75,42,81,48,16,54,33,39,24,32,82,41,53,57,86,47,13,55,65,79 -79,93,97,92,28,27,34,44,31,37,43,61,12,67,98 -42,81,48,16,54,82,41,53,86,79,92 -54,33,57,47,55,97,71 -89,35,73,78,75,16,54,33,24 -54,39,66,71,47,57,32,91,28,53,97,79,86,24,46,65,92,41,15 -92,91,46,28,71,27,34,44,31,37,89,43,95,61,12,19,67,94,35,98,73,78,18 -71,26,35,89,64,44,75,98,67 -98,64,42,32,57,47,13 -35,28,61,34,65,71,89,92,97,12,31 -19,42,48,67,18,98,32,53,12,16,33 -93,24,79,97,65,33,47,64,81,16,86,41,32,57,15 -81,16,24,86,13,55,65,79,93,92,91 -46,71,27,34,44,26,37,89,61,19,67,94,35,98,73,78,18,75,64 -86,66,13,55,65,93,97,92,91,46,27,44,31,26,37,89,95 -46,89,71,34,67,61,91,28,12,27,94,26,18,44,43,31,73,98,78 -24,73,43,18,54,82,16,64,81,33,61,12,39 -31,26,37,89,43,95,61,12,19,67,94,35,98,73,78,18,75,64,42,81,48,54,33 -33,64,24,61,95,35,41 -54,39,24,82,41,86,15,55,93,92,46,28,71 -93,97,91,46,71,27,34,44,31,26,43,95,61,19,35,98,73 -65,79,93,91,28,71,27,34,44,31,26,37,89,19,67,94,35 -47,55,65,79,28,27,34,31,43,12,19 -39,24,32,82,41,53,86,15,47,13,55,65,79,93,97,92,91,46,34 -12,81,26,19,37,75,61,18,73,39,89,94,98,16,54,95,48,67,33,64,78,42,35 -55,92,47,86,48,82,24,66,79,57,46 -16,42,81,32,35,57,48,94,18,12,98,75,39,24,53 -47,15,64,33,81,13,57,16,41,75,18 -16,13,73,78,24,48,75,33,82,81,57,15,32,98,42,53,18 -98,18,16,54,39,82,41,53,57,86,66,47,13 -33,35,98,39,48,24,94,73,81,61,54,41,64,12,78 -78,18,12,26,16,34,31,81,43,64,19,98,44,89,67,37,75,73,94,48,35,42,95 -55,86,47,54,32,75,48,53,24,65,78 -94,35,73,78,18,75,64,42,81,48,16,54,33,39,24,32,82,41,53,57,86,66,15 -57,86,93,92,46,34,31 -19,94,98,78,42,81,48,39,82,41,53 -24,32,82,41,53,57,86,66,15,47,55,65,79,93,91,46,28,71,27,34,44 -28,27,34,31,43,19,94,35,98,75,42 -47,13,46,27,43,95,12 -34,89,61,67,94,98,78,75,64,81,48 -73,89,44,91,28,18,78,75,31 -61,71,55,28,97 -31,43,95,19,94,98,73,64,48,54,33 -27,44,26,37,89,95,12,19,67,35,98,18,75,64,42,81,48 -39,16,48,92,46,24,53 -71,27,34,44,31,26,89,43,95,61,12,19,67,94,35,98,78,75,64,42,81 -37,91,67,89,18,73,92 -26,44,79,86,15,93,41,55,27,47,91,57,97,66,37 -86,66,13,55,79,93,97,92,46,28,27,34,44,31,26,37,89,43,95 -66,47,13,55,79,93,46,28,71,27,44,31,26,89,61 -61,12,19,67,94,35,98,73,78,18,75,64,81,48,16,54,39,32,82,41,53 -39,82,86,15,79,97,71,27,34 -67,97,46,73,61,78,27 -37,97,92,71,12,44,26,34,78,43,94 -66,53,57,33,46,47,71,54,41,86,55 -75,64,81,54,39,24,82,86,93 -92,46,28,71,89,19,35,73,78 -86,47,55,27,26,37,95 -27,44,31,26,95,12,19,67,94,73,18,75,42,81,48 -75,67,64,19,12,42,37,28,35,98,34,61,27,94,89 -31,92,97,93,65,47,19,44,71,46,27,91,61,26,37,34,12,13,89 -97,28,61,26,91,37,34,95,71,19,46,67,92,94,27,89,43,73,93,44,12 -46,28,71,34,31,26,61,12,19,67,94,98,73,78,64 -97,92,91,28,71,27,34,31,26,37,89,43,95,94,35,73,78 -18,75,64,48,16,54,33,39,24,32,82,41,53,57,86,66,15,47,13,65,79 -73,75,18,95,48,61,78,94,54,16,81,19,42,41,67,98,82,39,64 -44,28,65,79,93,97,66,26,55,82,34,27,71,13,31 -41,86,66,15,47,13,55,79,92,91,46,28,27,34,44,26,37 -66,15,47,13,65,79,93,46,71,27,44,31,26,89,43 -28,39,32,54,82,47,93,16,41,33,79 -91,82,79,28,26,65,57,86,66,46,41,31,93,15,27,13,47 -13,55,65,92,28,71,44,89,43 -28,91,65,67,19,89,93,43,55,92,34,12,31,71,37 -24,75,18,67,35,53,16,82,39,73,54,57,86,94,64,98,66 -86,91,13,65,43,66,15,34,46,92,55,37,79,44,31 -93,79,71,12,91,31,92,27,19,44,89,97,37,67,55,94,95,28,43,61,46 -16,39,24,41,53,86,47,55,65,97,28 -34,26,43,94,35,73,42,81,16 -89,43,94,73,18 -79,97,92,91,46,28,71,27,34,44,26,37,89,61,94,35,98 -13,54,42,79,32,47,15,93,48,24,55,41,66,33,16,64,97 -42,81,48,32,82,57,66,79,93,97,92 -78,18,75,64,48,16,82,41,86,15,13,55,65 -97,15,41,53,66,47,33,46,57,86,65,91,39,82,24,13,32,16,55 -55,65,46,44,31,37,95,61,94 -32,92,81,54,24,41,86,91,55,97,39 -61,98,18,73,75,48,19,42,94,64,43,12,81,24,78,35,95 -61,12,94,98,73,78,18,75,64,16,54,33,24,41,53 -73,78,18,75,64,42,81,48,16,54,33,39,24,32,82,41,53,86,66,15,47,13,55 -81,66,33,16,53,57,18,79,15,42,54,65,86,48,13,82,47,24,41,75,55 -64,42,95,54,16,43,24 -81,98,94,33,18,95,75,35,12,48,19,42,43,16,73 -48,16,54,33,24,32,82,41,53,57,47,55,65,79,97,92,91 -48,16,41,32,82 -86,71,89,34,37,92,65,26,43,15,95,47,97,55,93,31,13 -18,41,67,35,61,64,54,73,81,33,24,19,12,78,39,16,98,75,82,94,42,53,32 -33,54,57,66,65,75,55,24,39,81,32,41,42,82,47,48,86,13,16,79,53,18,15 -35,71,44,37,46,27,12,67,19,34,89,91,94,43,97,95,26,93,92 -97,13,81,48,66,47,55,32,39,53,82,33,65,57,64,16,42 -89,19,67,73,92,37,27,44,43 -32,47,13,79,92,27,31 -42,33,31,98,35,43,81 -28,39,34,24,66,46,91,79,47 -89,43,61,12,19,94,35,98,73,18,75,64,42,48,16,54,33,39,32 -67,78,39,24,82,53,66 -79,19,12,91,43,95,92,55,28,61,65,34,46,94,71,97,93,44,31,37,26 -16,33,57,86,79,97,91 -19,67,94,35,98,73,78,18,75,64,42,48,16,54,39,24,82,41,53,57,86 -71,27,67,46,94,43,44,34,55,28,26,92,61 -93,57,91,41,37,53,31 -98,12,16,39,35,61,48,54,78,94,73,81,42,32,64,89,24 -95,61,12,19,67,94,35,73,78,18,75,64,42,81,48,16,54,33,32,82,41 -34,94,26,46,97,19,35,98,44,91,43,92,79,27,67,28,71 -32,13,39,66,78,65,33,24,48,75,82,57,54,81,47,53,41 -54,33,24,82,41,57,47,13,55,65,79,97,92,46,71 -91,28,71,44,43,95,94,78,75 -33,39,86,66,15,91,27 -35,98,73,78,18,75,81,16,24,32,82,41,53,15,47 -75,57,32,15,81,86,82,66,54,18,41,13,79,39,24 -31,37,43,61,12,94,98,73,18,64,42,81,16 -13,55,65,79,93,92,91,46,28,71,27,34,44,31,26,37,89,43,95,61,12,19,67 -32,82,78,24,64,48,94,42,75,41,12,18,81,95,16 -41,82,53,46,13,93,79,47,92,71,55,65,91,27,24,39,33 -41,53,57,86,66,15,47,13,55,65,79,93,97,92,91,46,28,71,27,34,44,31,37 -12,89,71,95,67,81,19,61,18,34,44,75,78,98,31 -53,57,86,15,13,55,97,92,91,46,28,71,34,44,26,37,89 -35,98,73,78,18,75,42,81,48,16,54,33,39,24,32,82,53,57,86,66,15 -75,33,39,32,82,66,93 -61,31,26,95,97,92,34,37,66,71,91,79,43,46,27,28,93 -26,89,61,94,81 -73,19,27,44,71,89,28,37,97,67,91,46,92,61,78,34,43,95,98 -43,95,61,12,19,67,94,35,78,18,75,64,81,48,16,54,33,39,24,32,82 -46,28,71,34,44,31,26,37,89,43,95,12,19,67,94,35,98,73,64 -39,42,75,54,13,65,86,93,16,48,66,55,47 -91,28,89,95,19,78,67,75,94,27,31,98,44,12,71,37,46,26,35,18,61 -95,65,79,89,46,31,19,97,47,55,34,43,12,44,13,93,61,27,37 -42,98,24,32,75,12,67,39,89 diff --git a/input/day_05_example b/input/day_05_example deleted file mode 100644 index 9d146d6..0000000 --- a/input/day_05_example +++ /dev/null @@ -1,28 +0,0 @@ -47|53 -97|13 -97|61 -97|47 -75|29 -61|13 -75|53 -29|13 -97|29 -53|29 -61|53 -97|53 -61|29 -47|13 -75|47 -97|75 -47|61 -75|61 -47|29 -75|13 -53|13 - -75,47,61,53,29 -97,61,53,29,13 -75,29,13 -75,97,47,61,53 -61,13,29 -97,13,75,29,47 diff --git a/input/day_06 b/input/day_06 deleted file mode 100644 index e8f8b82..0000000 --- a/input/day_06 +++ /dev/null @@ -1,130 +0,0 @@ -..........#.....................#...................#.......................................................................#....# -.........#................................................................#....##......#........##.............#.................. -............#..............#..#.................................................................#................................. -..............#.....#................................................................................#...........................# -............................................................................................................#.............#....... -.........#..........##......................................#......................................#......#...#.......#...#.....#. -..#...................................................#.................#....#........#.....#.................#................... -.....#............#.#..#..................#.......................#................................#......#..............#........ -#.................................................................#..........#.......................................#.#.......... -..##...................#..................................#..#.................................#...#..#.#.#.........#...##........ -..#..........................#...............#...............#..........................#.................................#....... -................##......#......#......................##.............#........#................................#.#..#............. -.............................................................#.#.......................................................#.......... -.....##.............................................#.......................#...............#...............#..#...#....#......... -.#.........................#..................................#..........#....#...............................................#... -.......................#..#.............#......#.....#..#................................................#....#........#.......... -...............#.....................#................#...................................#......#........................#....... -.......................#....#..............#.......#...........................#....................................#.#........... -..#..................#...........#........................#............#...................#......................#.............#. -..............................................#........................................#..............#...........#.........#..... -............#.................#...#..........#.#.....................##.........#................##...........##............#..... -..................#.......#..................................................................#....#..................#.......#.... -..........##......#...............................................#.................................#.......#.............#....... -................................................................................#.......................................#......... -.....#........................#.............##......................#.......#.......#...............................#............. -..#.......................................##........#.............#...............................................#............... -.............#.....#..........................................#...................#.................................#..........#.. -.........#............#..#....................#............##.............#..................................#.................... -........................................................#..........#.............................#................................ -......................#..............................................................................................#............ -.......#............#..#........................#...............#.......#.............................#......................#.... -...................................................................................#........................#........#..#.....#.#. -..#.......#......#...................................................................................#..#.....#................#.. -.....#...#......................................................#...................#.#..............................#.#.......... -..#.#.....................#....................#...........#.................#........#..#.........#........#..................#.. -....#......#.......#.....................................................##...........#........................................... -........................#......#......................#......#.....................................................#.......#...... -............................................................#..........................#...#.#..................................#. -.#..........#..............................#.....#.............................................#.................................. -#..........................................#......#.............#...........................................#.........#........... -......#...............................#..#......................#.....#.......#.....#..#......................#.......#........... -........................................#..#.................................#......#.......................#..................... -.#................#...........#.........#.............................................................#........................... -.....#.......................#.................................................................................................... -.............#................#............................................#...........#......................#..................# -#........................#....#.....................#................#..##.............#......................#...#............... -....#....................#....#.#..................#...........................................................#......##.......... -#............#..........##............................................................#........................................... -...........#..................................#..##................#.............................................................. -..........................#..............................................................................#...............#........ -.......................................................................#...........#...#...........#..#.....#..................#.. -.........................#....#.......#......................#....................................#............................... -..#..................#...................................................#......................................#................. -..............#....##........................................#..................#................................................. -..........................#............................................#...................#............................#......... -......#...............................#..........................#.............................#.................................. -...................................#.............................................................#..............#................. -.................#...#.......#..............#.#...........................................#.......#.....#......................... -........................#.......................................#..#.........................#...##...#........................... -....#..#.............#........#.............#..........#......#.........................................#....#..#................. -.......................................................................#...........#......#.....................#...........#..... -#.#..............................#................................................................................................ -.#.................................................#...................#.......................................................... -..............................#.............#.............................#.....#............#.................................... -.#...............................#.......#...##.#.................#............................................#.................. -.............#....#.................#.........#..............#....#............................................................... -......................#.#..........................................................................#................#............. -.#....................#.....#................#.....................#..................#......................#.................... -.............#.#............#......................................#.......................#......................#............... -.#..#...#...................#..................................................................................................... -...........................................................................#.....................#................................ -...........#.............................#......#................................................................................. -..............#.................................................#.##........#..........................#.........................# -..................#...#........................................................................................................... -........#.....#......................#..#....#...#.#......................................#.#............#........................ -.....#..#.........................................................#......#.....#...........#..................#...#..........#.... -......#.........................................#......................#........#...................................#............. -..........................................#........................#........#.............#........#..#........................... -.......#..............#...................#...........................................#.............#............................. -..............#....#....#......#...........................................................#..........................#........... -..................................................................................#.......#...................#...#....#.......... -.................#........................#........#...#.....................................................#........#........... -...........................#......^.#..............#.#.....................#.#...........#....##.......#.......................... -.............#.....#.........................................................................#..........#......#..#.#............. -...................................................................#.......#.......#...........................................#.. -.......#.........#.......................#...................................................................#..........#.....#..# -.....................#...............#...#..#.....................................................#.....##.##..........#.......... -.......................#.......#..................................#.................#.....................................#....... -................................................#........#....................#........................#.......................... -......#....#..#....#.......................#....#...#.............................#............................#......#........... -...................................................................................................##.#.....#.................#... -.................#...#....................#........................#...............##.....#...........#........#.............#.... -.....#............#......................................................................#................#....#.................. -........#.............#..................................................................#....#.......#........................... -.#.......................................#.......................................#....#.............................#............. -...#.............................#..................#............................#.....................#.....#...........#........ -....#......#.................................................................................................................#.... -.....................................#..........#.............#......................................#............................ -..#...#....#............#.....................................................#..#................................................ -.....#.......................................................#............#..........................#...........#................ -#.....................#..............#................................................#..........................#......#........# -........#.........................#........................#................#.......................#............................. -...........................#........#............................#.......#..............#......................................... -......###.........................................................................#.........#........#................#...#....... -............#........................#................#.................#........................#.............#.......#.......... -........#.#................................#.....................................................#................................ -.#...#............#........#........#..#...............................................#............................#............# -...#.............#.........#....................................#..............#.......................................##......... -...#...........#.....................................#.........#................#......................#............#............. -..................#....................................................##.......##..........#...............................##.... -........................#.........#...........#............................................................###.................... -....................#.......#....................................................#...#..............................#............# -............................#..................................................................................................... -......#........#........................#..........#..........#.......#..........................#................................ -....................................#..............#...#.#......................................................................#. -.....#.....#...#..............................................###......#..............#.........##......#...............#......... -........................#.........................#...............#...............#.#........#.....................#.#............ -...............#..............#........#........................................#..........#........#......#...................... -.....................#..........................#...............................#........#.......#.....#...................#...... -.........#...........................................#.............................#....#.......#......#..#....#.................. -.........#...#........#....................#.......#..#...#..............................................................#........ -..................#......................................#........................................................................ -........#.....................................................#..#...........#........#......................#...#....#.....#..... -...........................#........#....#.........................................................#.............#................ -.....#.#.........#................................................................................#............................... -...#............................................#......................#.......#.#...............#............#................... -.........#................................#.....#...........#.#....................#...#.....................................#.#.. -..........#.#....#......#.........#....#.....#........#...........................#............................................... -............#...............#............#..........#.............................#............................................... -#.#............#.....................##................................................#....#.................##.................. diff --git a/input/day_06_example b/input/day_06_example deleted file mode 100644 index a4eb402..0000000 --- a/input/day_06_example +++ /dev/null @@ -1,10 +0,0 @@ -....#..... -.........# -.......... -..#....... -.......#.. -.......... -.#..^..... -........#. -#......... -......#... diff --git a/input/day_07 b/input/day_07 deleted file mode 100644 index ccef8a7..0000000 --- a/input/day_07 +++ /dev/null @@ -1,850 +0,0 @@ -644197722674: 5 9 46 99 1 5 9 2 22 6 74 -3424919: 67 51 7 561 358 -7160145: 9 9 7 4 8 3 91 2 3 3 5 731 -1133404163: 231 3 49 2 32 128 36 -198444: 9 77 90 347 308 46 3 -258135: 7 61 68 6 249 6 -10677865: 864 7 4 1 9 4 7 7 1 5 367 -1134: 54 7 3 -28760910: 1 6 627 9 752 831 -6740: 82 236 356 10 -983873830: 977 6 267 606 830 -101904: 5 71 29 2 264 -8536122: 5 3 7 388 120 -818217: 8 27 21 484 92 5 214 -9221: 219 23 270 18 5 -216699547: 2 24 46 9 1 55 6 61 9 88 -19040: 434 4 5 2 41 713 28 54 -113740483608: 52 951 38 417 23 17 -1837300: 627 46 5 1 91 6 6 4 -21564: 6 143 330 9 5 9 -100992468: 4 4 2 9 7 69 3 24 92 8 6 8 -522672: 5 226 7 5 -72660535: 181 857 70 5 2 4 1 11 -1553455: 57 842 4 650 374 79 -177565304: 177 5 6 530 7 -123464883: 65 67 315 7 2 45 -162378: 47 799 75 702 74 3 -75882558: 4 4 9 3 8 7 5 29 5 4 57 5 -15486: 5 771 6 1 2 2 8 8 8 8 2 4 -195018949: 237 9 76 61 19 95 4 9 9 -120067914: 12 7 1 282 9 17 7 2 7 79 -10625355: 6 16 906 3 533 -714034: 2 3 60 7 7 90 325 9 -147283595568: 3 311 33 3 57 822 8 93 -2316922: 8 26 41 831 2 94 -182954295: 438 22 56 5 993 4 -17143497694679: 73 169 33 1 4 71 6 79 -758512003463: 3 2 790 700 4 2 2 34 63 -4146569285: 280 8 9 5 6 7 68 4 9 1 2 5 -31770235539495: 589 8 9 1 1 95 3 63 492 -2140548: 7 6 1 4 3 4 8 929 1 3 8 12 -12113461: 291 3 50 772 17 5 2 2 -9197820380208: 1 58 583 110 58 207 -1539915: 88 340 19 5 689 -198635345304: 19 711 980 6 44 341 -43172: 426 8 4 318 1 1 439 3 5 -53202: 5 3 7 1 4 79 62 6 6 -999074: 1 4 221 5 9 71 -107010: 2 1 29 410 3 -1207: 8 600 5 9 567 17 1 -963: 56 902 7 -3661: 87 42 4 3 -55680: 8 7 2 58 8 4 -1443280: 1 33 16 68 39 592 -11791444132: 954 3 412 412 9 -40408: 8 8 513 70 19 -895: 45 9 784 52 8 -3630590257: 5 787 5 98 113 94 57 -1219939: 9 5 183 9 3 -7243377: 1 231 8 2 1 36 6 5 795 3 -10281688290: 728 359 69 874 8 45 -52129140: 78 1 7 407 547 5 2 4 5 -844925: 778 18 78 6 8 -1517768001: 56 213 629 27 17 -1586: 26 1 18 35 9 -897822305: 10 89 7 8 222 55 52 -307677984: 38 946 58 79 2 -11629377: 7 10 83 82 37 548 6 79 -5706366: 203 30 937 6 1 26 -545930: 1 8 696 5 770 -21436: 57 94 4 4 1 -601219587: 2 5 1 2 1 1 4 1 1 912 327 -1210568: 5 3 9 86 1 1 98 2 8 97 6 8 -163672: 311 939 4 1 130 522 -816: 3 9 7 9 5 25 84 186 56 -413330: 71 9 181 504 50 -275151204: 5 8 9 8 4 3 433 1 5 6 7 3 -5565: 47 19 8 7 1 276 -5528836: 1 552 789 9 936 -30771: 42 81 5 12 9 -113510: 99 58 723 -2552925934889: 802 8 795 54 8 372 4 6 -13201: 45 124 77 31 159 -720468: 17 6 92 4 7 -22380384159: 7 8 166 29 159 1 3 2 8 2 -45770: 4 41 765 2 3 -32957: 4 28 886 71 -5110126: 6 173 214 66 8 -1762745: 982 227 3 3 27 3 6 5 -130796643: 131 32 1 5 5 624 -78364255: 8 9 694 57 7 253 -844276: 8 42 224 792 1 -362023: 9 25 594 5 5 40 87 103 -1291399844: 5 6 1 9 39 1 73 9 6 44 -228417920: 25 37 71 9 26 794 8 4 -40050828: 3 27 763 6 9 9 5 1 9 12 -116627652: 7 4 7 1 446 8 4 5 2 4 75 6 -2516095717: 7 385 8 43 59 8 5 46 -655270872: 9 2 8 159 89 2 9 3 89 95 -35298709: 6 41 170 3 2 422 97 -558606: 4 6 5 74 6 53 7 7 100 1 5 -96911: 5 9 75 6 9 665 2 7 9 2 7 8 -429735: 7 72 58 6 9 -9402: 3 453 9 86 920 1 7 88 6 -2948456: 69 251 9 68 456 -254061: 603 70 2 6 789 -27948: 485 575 322 262 17 -90873: 58 49 8 27 31 31 725 -6444009: 5 6 195 7 6 33 13 -17255343: 78 867 42 3 85 -144630242: 490 2 39 11 7 4 39 86 1 -444869: 4 7 8 878 5 479 -253242155: 42 203 6 7 234 57 -1823338: 2 414 9 487 4 6 -25234118: 91 683 58 7 1 -642484013: 917 822 4 6 1 7 9 1 2 -10018629: 99 944 235 99 628 -52518012: 663 80 8 5 99 -52968775714: 217 3 8 2 3 2 9 6 9 9 94 6 -7014: 1 666 9 933 8 70 -1210591: 39 8 40 97 31 -61925382: 366 648 1 1 9 837 29 -1392623100: 92 3 6 6 8 18 8 815 990 -146952: 66 53 92 6 677 43 -16148106: 41 31 9 5 4 39 -972134: 4 36 905 3 28 9 75 54 3 -1699: 9 7 94 2 -38915712: 66 83 4 3 296 2 1 -24871732: 71 178 3 656 148 -1016303031: 229 634 7 499 532 -553520: 7 3 7 22 69 -588423590: 2 1 9 143 8 3 6 923 1 3 4 -8360806312: 1 3 9 850 24 7 857 5 7 5 -462718: 4 6 26 93 26 -21935424: 280 60 96 2 4 2 84 -885836: 8 850 4 5 2 27 704 58 9 -797703006: 1 3 1 8 9 4 9 495 3 7 60 6 -7714822: 2 4 757 959 3 25 -233319196: 881 27 45 10 4 979 -451620568437: 170 6 57 4 9 5 56 8 439 -2836062720: 7 88 111 9 6 6 2 4 3 8 3 2 -81217110: 827 98 9 501 2 -21081: 6 3 41 6 3 1 6 324 8 5 8 -861: 7 7 2 44 801 -88: 4 4 73 5 2 -1570446660: 9 198 6 7 4 39 9 9 1 6 5 1 -14270753: 5 934 7 5 6 6 2 3 2 6 99 -56568223: 845 8 523 34 16 1 -650438051: 8 3 17 8 3 7 4 743 3 7 2 4 -3543: 7 57 24 125 61 80 1 -41612: 26 7 70 18 24 8 -198303162: 82 81 8 142 7 3 5 6 6 6 -4195337168: 8 3 17 948 5 3 3 3 4 7 68 -2593123: 40 76 853 -5764808331: 1 18 3 4 9 7 573 4 7 9 6 -109985400: 7 6 2 848 1 97 4 7 3 35 -386253: 81 7 5 5 603 551 -70791407: 2 2 5 2 22 96 2 8 3 52 2 2 -10455350486: 758 2 33 965 8 54 86 -412382916057: 1 9 39 6 45 627 184 58 -205995206: 6 112 4 7 77 933 9 -138335075997: 1 6 3 7 9 3 2 550 990 8 -360062993: 3 4 85 4 8 896 4 966 8 9 -8288395: 89 45 4 273 1 22 1 90 -75413380: 63 748 9 3 2 2 1 4 21 4 -2737489: 5 9 53 9 48 6 -5050164: 1 7 297 55 4 613 -372470: 1 4 15 230 9 3 85 -43071377128: 4 307 1 3 7 25 9 7 365 5 -1388: 6 99 32 59 554 149 -727612: 4 478 380 6 1 838 228 -6994892: 37 50 5 378 1 -5686664574: 5 68 62 3 6 9 3 2 9 569 7 -1143128724150: 92 287 6 8 5 525 859 2 -41306: 910 82 19 76 38 -1986: 84 65 9 540 74 31 -10921388868: 61 74 113 61 66 351 -1617983: 38 91 67 459 8 -7273: 79 82 764 2 23 6 -1681: 8 1 788 379 506 -1733837: 3 9 443 61 37 -426492: 78 9 57 1 2 315 9 22 1 2 -21672129332: 86 252 1 293 31 -131979: 936 47 3 1 2 -21284859377: 3 7 161 854 5 7 75 625 -194833581: 5 954 6 88 5 5 9 198 8 -1358996: 1 71 567 5 8 66 5 4 960 -213170975: 88 821 24 24 -1753764808: 41 7 4 6 8 7 4 1 5 7 5 810 -15881128: 28 544 24 2 6 9 1 4 578 -1911: 46 809 68 38 7 938 1 5 -4907534410: 1 6 1 9 5 6 409 2 9 7 43 6 -8189947079: 5 4 8 8 9 3 808 1 7 77 6 5 -507174405: 3 675 561 82 784 3 2 -470600798: 1 9 6 5 5 359 5 3 69 90 7 -77885: 784 33 27 55 3 22 -26494743: 95 90 62 549 5 -886638: 54 4 8 8 8 5 4 2 1 5 4 1 -81696: 822 2 2 56 48 -199643920: 509 6 3 20 67 2 952 -24054306505: 67 534 955 59 704 9 -36855: 5 9 39 21 -70289942: 370 7 91 1 91 4 1 6 6 7 2 -72733596: 12 9 619 335 99 -6222893: 620 2 260 9 20 3 -19516095: 30 3 6 7 7 59 42 8 94 2 -891796: 84 807 794 -49196: 182 1 3 6 9 -2717456088: 4 3 53 5 647 9 2 89 59 6 -4767272: 88 1 878 9 1 61 -881931: 74 7 68 5 301 -358318816: 9 95 33 36 15 -15261700: 4 75 137 4 48 8 46 4 -7480: 430 408 4 9 249 2 260 -55931515717: 7 18 819 9 83 5 5 7 3 1 7 -188671: 762 2 6 7 35 21 -120025246: 56 893 6 8 48 3 948 4 -123188: 2 74 58 598 -36478821: 725 4 57 5 2 8 8 1 3 1 27 -89822860: 6 9 20 5 3 9 9 9 5 5 1 13 -3333672: 9 76 9 6 8 9 1 1 8 8 1 9 -334667916: 2 9 681 219 204 -37897612: 4 8 6 3 9 6 7 8 74 7 31 1 -3585801: 78 9 5 2 406 6 8 2 7 -225846: 4 93 994 207 9 -97481836858: 974 736 82 3 68 59 -8798000: 74 494 262 106 2 50 1 -987: 9 606 19 349 4 -35956582523: 420 855 465 82 526 -19426789: 66 1 545 4 6 6 9 1 775 -455625: 4 5 1 4 89 15 55 2 1 2 5 9 -1140143: 705 49 33 132 26 -30028: 50 6 22 1 5 -100704802450: 5 91 96 1 2 6 4 3 577 7 -11364984: 163 163 58 1 58 6 -1337700: 3 66 5 86 9 510 5 -2110176: 58 4 2 2 237 1 2 4 431 8 -28139: 540 97 44 8 1 33 1 68 -2747718494: 392 53 7 77 7 7 8 15 -2660397: 2 8 49 613 1 2 9 8 5 5 1 6 -54157: 902 200 7 7 159 -35995590749608: 891 8 8 8 9 7 6 87 4 5 8 8 -9459: 3 3 3 15 9 -802075: 751 89 12 6 1 -2187785: 937 6 334 708 7 1 3 5 -83880596467: 931 1 9 5 33 134 3 6 1 3 -3960: 944 4 89 95 -3201184: 531 855 5 14 461 -44968268: 58 7 89 292 266 -297099078: 79 5 885 45 35 1 -1888: 83 96 9 10 8 -4185068: 616 8 122 85 66 8 -461760: 94 296 4 74 4 -4655: 19 6 19 5 7 -4668693144946: 59 38 4 91 40 453 9 6 9 -69615016: 974 1 1 714 14 -114617661: 992 917 126 -971801: 7 5 3 3 3 51 47 965 5 4 -795940491: 355 3 3 1 2 28 3 2 5 8 9 -13321847987: 6 9 3 84 81 8 7 8 72 7 87 -18738947047: 1 4 92 5 6 2 1 19 3 52 2 7 -25010: 28 6 5 637 77 90 -1088100: 5 98 899 1 14 775 -32567: 9 88 2 20 887 -1821252960: 7 871 6 430 804 -137875: 684 6 46 4 5 35 -56572801202: 2 4 15 421 458 36 2 -87958367: 6 808 6 62 23 997 36 -13422: 497 27 1 3 -11257638: 3 784 6 40 6 1 276 119 -453647563: 2 935 6 2 8 79 6 1 3 3 6 -181924028: 91 7 3 5 25 6 2 9 3 7 44 -48196638: 89 7 80 10 43 966 -379859368: 219 8 3 9 54 6 4 9 1 6 6 4 -218625: 364 28 6 3 53 -545: 14 6 2 333 66 -12800868: 48 6 342 33 77 -14669424: 8 2 1 8 2 7 3 2 378 7 4 42 -124997919: 74 5 9 2 49 89 6 2 987 6 -20750680: 3 2 91 9 6 4 4 5 6 3 955 2 -66450: 949 3 7 -13632: 15 91 4 2 32 -54210949: 9 8 3 2 85 8 8 54 1 9 7 7 -18118147545: 731 4 3 66 12 41 3 5 46 -5480584325: 782 9 406 7 48 4 8 68 -21390324251: 21 18 602 641 94 -1986513: 662 1 67 3 9 -19984807398: 757 4 660 73 99 -25152285068: 2 4 3 776 5 49 1 1 7 6 3 9 -26473: 3 8 2 47 3 -6177: 1 8 30 8 7 51 4 52 4 1 -769278135: 7 687 3 9 45 4 4 128 2 6 -923145787440: 782 3 2 538 77 590 8 -1631: 1 6 4 51 3 19 1 1 3 8 403 -40729: 93 2 2 796 2 8 2 3 236 -2654: 4 40 2 30 3 8 -51429247: 2 2 853 153 6 2 24 7 33 -132157: 1 241 53 8 297 2 -1449808: 3 39 6 875 52 890 -4332: 5 34 513 4 5 47 7 12 64 -21620085167613: 1 3 90 251 8 51 67 616 -22498560: 37 5 31 80 8 27 -13943884: 6 28 5 7 5 177 1 38 8 2 2 -35728046482: 2 49 852 2 14 94 4 8 3 -45088: 20 83 27 191 77 -561675243: 4 4 5 7 2 8 2 3 1 629 63 3 -46480040: 50 798 3 2 332 5 2 29 2 -606184069431: 1 86 59 7 7 242 7 22 4 6 -2425653532803: 2 320 658 405 30 3 64 -424844740: 643 11 7 677 1 67 7 6 -398668004514: 52 15 43 7 78 98 23 4 -2137402: 533 88 47 4 3 -6048720: 19 97 426 93 120 -5351978974: 94 295 461 193 1 -8222557572: 8 33 17 1 501 12 981 -323197: 1 619 5 4 73 19 5 2 -1243: 3 274 421 -4105039: 5 3 3 386 50 40 -363325010: 9 7 99 588 52 949 58 -111187760: 4 75 482 5 2 292 -11212420: 2 5 16 11 686 732 -2830619: 763 75 2 639 3 191 1 -2043461: 3 64 662 8 4 3 7 -18472960510: 67 9 6 91 45 3 231 68 -1882444276631: 9 64 5 9 90 4 4 276 631 -2130224: 91 660 2 4 3 938 26 -325749: 7 989 47 368 -45497: 3 4 7 5 6 1 5 933 6 6 5 60 -38655649296: 2 44 642 97 2 5 8 9 968 -46001759909: 5 351 55 5 274 5 6 215 -78513754: 4 128 4 210 7 86 19 -1471036396: 2 87 92 79 8 7 398 -4803: 7 5 2 9 79 42 2 2 515 -156208548: 5 8 31 97 37 6 4 9 88 3 -1055599537: 65 974 971 2 8 1 -5025498431: 502 549 843 1 1 -102599297: 43 71 95 33 1 89 91 4 -83434050: 9 315 5 654 9 -9566: 3 44 96 269 2 2 -276596: 10 60 26 99 6 -735428921940: 90 50 319 956 85 -1197162258: 2 98 8 8 6 89 245 25 2 9 -2315466299: 54 992 775 79 28 -13330803666: 5 576 823 360 36 3 3 8 -15657: 25 4 98 37 908 8 3 4 -262990: 4 8 3 26 289 -79663: 56 9 28 5 3 -1076093: 80 160 1 84 28 1 2 779 -503308: 53 419 966 35 8 -1052110: 923 128 390 720 1 -3281758304: 5 1 3 258 79 156 5 64 5 -33098493: 64 852 47 17 3 4 -5141121: 722 30 4 501 8 8 8 3 -472447488: 21 3 93 4 9 702 618 84 -76752518: 4 3 1 848 6 3 9 30 8 13 9 -36746210: 2 9 3 1 2 8 59 4 86 148 9 -57519732: 390 5 5 5 866 164 5 7 -337213: 98 6 539 146 6 1 -38484: 27 249 70 3 9 19 3 9 4 -140760: 95 4 821 51 3 -37597: 625 60 2 96 -1834717746: 3 61 4 717 746 -6159947: 7 510 28 99 235 992 7 -37702450: 700 43 7 87 317 9 5 1 -77382285: 1 773 82 1 287 -50794203: 8 419 4 11 3 8 517 5 36 -1926604832: 75 25 8 256 30 2 -84094: 1 7 3 4 1 2 298 4 2 3 8 26 -1585371522800: 5 53 3 18 42 87 8 8 850 -10736695: 201 8 7 760 935 -102989717: 258 677 91 398 56 -4989012: 56 30 1 886 832 -126070960: 9 3 2 31 4 65 875 8 4 80 -12281236052: 2 6 9 19 54 6 1 69 95 -348194845864: 6 215 6 279 967 65 -34950330354: 1 1 89 357 303 12 39 -15988: 5 2 4 3 884 8 785 1 1 2 -33325110: 9 7 338 313 5 -93162624: 7 8 5 2 7 9 5 8 6 8 8 912 -234504147: 830 663 910 2 47 3 2 -27489: 1 74 2 389 96 49 -11389842: 2 619 1 1 115 3 2 40 3 -3432004223: 901 9 6 96 905 44 4 4 6 -1973: 95 398 4 1 -21238: 2 5 426 6 5 8 2 54 356 2 -67284504: 670 754 71 2 9 4 6 5 5 -365693742: 63 8 9 8 2 1 3 5 1 99 3 6 -2825: 66 3 194 3 5 52 196 1 -131124: 36 6 204 312 76 5 -1565071058656: 687 70 411 7 8 8 707 2 -21424808448: 617 5 3 3 7 9 9 4 6 976 6 -46699: 56 136 3 81 36 1 4 -71483342503: 7 1 219 15 6 4 1 8 5 34 2 -274006: 301 3 4 90 47 -12744: 4 805 784 8 -2562: 1 5 505 37 -441997: 95 91 563 48 13 -2065280098: 16 99 569 250 81 3 3 5 -8238200993478: 1 2 98 8 8 584 9 7 2 7 7 9 -9968200682: 996 8 19 3 6 5 6 5 6 5 8 8 -21757761: 60 438 2 9 4 5 3 78 -7380: 72 1 79 -142146046: 62 5 5 7 7 7 2 2 3 602 -288475489801: 26 7 4 427 7 400 9 3 -1302: 3 7 62 -2920860: 26 4 601 1 162 -10662680: 3 1 80 952 8 7 5 -1944870: 8 1 15 7 4 1 5 7 1 338 3 6 -21107774: 5 97 386 8 536 94 -5958425: 7 744 9 5 7 1 56 4 2 4 2 1 -1451281979: 1 9 656 88 1 419 5 6 29 -487083093562: 3 6 4 4 5 7 4 23 55 5 952 -7048222: 84 3 452 8 222 -23400979: 812 4 4 9 2 8 6 8 326 1 9 -97944: 9 8 54 2 7 8 17 8 8 88 -18499581: 9 4 1 32 2 8 32 -184237: 8 6 4 5 4 4 1 1 836 4 53 9 -6859352895: 836 2 9 99 4 8 8 8 3 41 5 -531090: 7 542 13 9 105 -4744582: 176 6 478 6 26 -269093732: 1 4 268 9 2 1 722 662 -120462839: 6 856 7 7 5 5 134 186 -14976272: 23 4 16 4 22 4 49 -1875735: 14 253 848 81 7 1 230 -22760: 3 19 171 8 5 6 4 5 86 6 9 -11193: 9 3 843 6 13 -248540: 9 32 27 22 2 3 2 5 990 5 -24387814947: 382 5 2 7 1 698 255 5 -2381794505735: 8 1 416 235 283 73 5 -152131950: 35 4 8 92 53 40 711 -22865878: 94 20 2 65 877 -189075841: 2 99 1 3 5 8 2 7 2 31 6 40 -81091: 937 66 80 5 3 842 -557721414: 92 640 1 74 1 2 7 64 4 2 -113171295757: 9 3 9 3 9 27 4 1 3 957 5 6 -43780442: 3 4 65 40 561 -1362932167: 170 1 3 57 1 6 78 8 4 8 5 -193046119: 3 93 355 2 6 59 48 6 1 -6596126878: 8 10 9 349 205 63 78 -145305: 9 682 5 15 1 -172032954: 19 1 8 652 1 2 57 72 54 -2836938: 76 1 70 402 3 8 47 6 -787578: 93 89 978 85 868 35 -208608701: 5 729 26 6 46 2 43 7 -4667: 23 95 39 63 2 -136093592: 848 987 815 1 9 91 -124671: 27 2 5 7 9 64 -328235241523: 694 23 2 74 91 514 7 4 -294810390: 9 8 6 7 9 2 9 8 298 8 26 7 -24048413505: 674 4 892 9 34 9 1 8 -53013993575: 78 3 401 729 167 775 -8984: 937 81 99 6 8 -21995734134: 32 64 895 4 71 3 78 3 -264862905: 87 516 5 118 7 3 5 -255776495: 9 257 2 307 9 47 7 2 -1908918: 7 81 34 4 99 -973680: 32 72 3 39 3 10 8 -410673999: 76 8 85 88 550 -166255766537: 9 8 7 2 1 6 8 673 2 6 1 9 -128304: 81 6 4 66 -27879153: 640 74 1 2 3 7 44 65 5 -44232: 7 5 191 2 194 -18187369: 42 296 5 1 86 -47785: 9 747 36 7 472 -301356: 27 1 9 1 80 1 4 99 -380883: 94 6 6 4 85 -8858507: 8 1 858 495 7 2 -10086: 8 986 5 9 6 -5472230949: 73 1 9 7 7 8 24 9 7 9 6 7 -242207: 202 109 11 9 -6507402: 3 357 98 62 6 -257308250: 82 63 74 982 485 50 -46347841: 3 4 44 2 38 6 1 33 4 -4063680: 196 70 2 3 2 2 4 9 415 -902880: 316 6 934 6 7 199 3 -97144: 501 838 8 9 5 2 8 2 722 -66767570413: 7 6 5 69 5 56 7 10 6 4 1 6 -1121988: 16 73 240 4 708 -2048596: 560 8 8 64 3 9 2 2 5 41 2 -25139200: 51 6 23 982 320 -136552: 57 3 6 9 367 993 93 43 -890: 84 1 6 1 382 -667845017: 8 73 5 75 3 340 2 3 17 -210544: 36 299 9 6 51 4 4 2 -307152: 575 57 27 2 9 -174196113: 28 7 801 640 1 21 13 -488160: 55 6 71 971 7 20 -19025410: 5 1 7 734 6 4 5 18 130 -2556797688: 5 6 958 6 4 7 6 9 7 22 1 -401: 276 1 95 27 5 -2606: 21 79 901 28 18 -1008: 8 2 5 2 8 -30280923107283: 7 3 7 8 3 87 5 57 6 95 9 8 -1112133: 2 19 88 6 8 8 134 -1156070: 58 619 767 36 73 8 -8595258: 58 18 686 4 350 3 -27176091: 8 60 316 9 4 -1396445753: 9 932 185 2 76 502 1 2 -3152523: 386 58 71 45 78 -46561: 75 3 1 4 3 1 96 905 2 8 7 -74455179: 7 2 3 9 1 4 5 3 753 657 -378892728: 3 78 892 7 28 -30660568493: 51 3 4 915 74 62 8 -174848: 74 604 16 80 16 -3369813: 26 37 78 967 573 -6425: 227 4 7 70 -74081532: 681 681 34 57 931 -269511317: 3 88 83 608 6 66 62 5 5 -10740: 7 88 30 54 30 2 -32487007: 49 390 50 34 7 -31801728: 555 57 166 73 1 -1251384: 102 73 4 6 1 64 7 -6167863296: 130 2 3 484 5 6 5 6 666 -1750505577603: 33 68 237 920 780 -692005: 80 865 5 -404677: 24 8 13 162 325 -445704481829: 6 913 334 5 6 9 406 9 2 -51026: 160 15 60 7 1 31 -4395396697: 7 1 865 1 4 7 7 18 9 3 4 -3597445173: 73 8 560 47 11 3 -238958: 4 68 4 3 335 1 77 6 1 9 8 -4845972440: 3 7 741 1 505 35 18 -1047: 451 3 94 473 26 -3366: 8 437 1 676 3 -2310950: 9 51 3 1 6 228 272 38 -1204001: 43 28 4 5 50 -1770832476: 4 3 9 885 1 88 8 9 3 574 -89: 7 2 76 -3962488418: 2 27 5 381 9 16 349 4 -49284: 5 240 5 2 288 2 9 -78660218288: 65 550 18 5 6 5 7 4 8 -37209: 3 6 179 4 62 6 961 -138: 2 7 7 69 6 -16171846: 485 521 64 3 -28710: 9 78 3 22 5 -6511835: 7 6 2 5 39 18 7 8 6 152 2 -1530367213: 1 6 6 5 183 1 5 6 2 8 8 6 -14945092032747: 28 5 21 168 524 73 1 6 -99320779809: 408 93 620 1 33 6 10 -6606342065: 6 738 4 4 6 817 3 -16207982550: 193 715 3 2 3 6 675 29 -580720115: 82 6 522 952 115 -101346: 87 8 7 6 1 6 353 2 8 7 2 7 -43782921: 8 935 29 7 7 -350811824: 907 58 36 79 46 -51161294: 15 297 348 33 59 15 1 -56283832271: 556 6 83 832 271 -11999796: 5 9 1 4 3 9 1 25 2 4 9 7 -151528089: 8 947 2 7 60 9 357 123 -10552401805: 5 711 3 7 4 5 74 904 2 1 -6975525183444: 75 8 2 4 3 694 9 628 23 -221946: 212 29 389 576 3 -32164662625: 47 3 68 608 7 539 18 7 -193348: 9 54 6 973 51 -147818390: 803 752 98 3 95 3 -13461188087: 11 6 372 4 3 2 676 1 85 -1595250: 4 4 2 4 5 57 583 5 5 90 -163120921251: 8 33 4 29 1 599 534 81 -627115008: 4 6 3 70 9 4 6 36 2 8 24 8 -262845099: 11 25 59 162 99 -158070817: 576 214 35 2 816 -27810: 67 826 7 27 30 -108334487: 5 299 3 21 345 -377712: 6 88 7 9 46 77 3 122 -4403487698: 1 123 32 7 6 6 7 7 6 8 9 9 -18000: 243 7 1 9 8 -1133048448: 9 5 64 7 4 7 4 82 46 7 2 9 -22753166439: 3 2 7 9 6 2 8 78 3 9 462 2 -401539425944: 7 7 4 9 5 721 6 3 5 3 944 -151632037: 6 8 975 8 405 1 18 7 12 -2061467: 9 8 4 1 1 5 303 7 458 9 -469247481: 184 9 6 83 569 9 -804: 48 2 5 79 475 -25426: 9 556 1 9 5 -530948520: 233 179 8 37 344 -1597575488350: 2 1 921 70 7 532 5 59 2 -60636199518: 60 7 373 533 4 9 9 9 18 -421157880: 701 92 5 6 42 60 -174249: 54 4 6 2 4 1 22 9 3 90 2 4 -118727669: 76 8 3 6 50 9 18 94 6 3 3 -23125500: 5 3 9 300 571 -1128838032: 59 74 54 1 57 84 -6227: 6 2 1 2 8 1 -13634: 85 2 79 188 7 9 -2594: 9 7 8 131 4 -3244398: 1 52 602 3 534 97 -18391275: 64 79 473 645 6 -197178930620: 293 41 4 4 410 6 6 5 4 7 -1635252: 10 6 81 96 87 -38430183166560: 84 2 91 53 810 8 774 -541205145: 853 6 7 39 9 48 -260245: 4 962 95 66 7 -5585256181: 6 958 54 991 5 3 -2134740037: 3 21 91 6 42 29 6 2 7 7 -2342051: 8 731 7 4 48 -241588625520: 301 686 39 173 5 6 3 2 -5651246579: 253 124 712 79 11 23 -10416: 8 182 608 5 96 -2406: 62 94 16 12 342 1 -1330567: 873 7 18 84 7 -211152912: 47 57 98 86 804 -128953684: 295 23 2 17 41 95 19 -3037977: 5 6 379 36 40 -9013235: 8 3 1 65 2 1 50 9 1 3 35 -2857052260: 3 8 444 7 4 9 1 4 12 62 4 -174249422: 7 15 5 6 24 94 23 -17628: 545 5 4 8 22 6 -856437: 1 874 3 8 513 896 260 -1226796924297: 63 59 205 66 7 23 6 7 6 -581803349533: 2 8 4 29 66 7 8 39 12 7 7 -254021342023: 396 7 2 9 7 6 308 6 5 7 7 -31922147: 316 3 221 4 6 -160080860160: 5 6 7 7 9 5 7 7 85 23 52 3 -350150744: 7 34 9 7 1 4 6 7 9 2 393 6 -513992157: 2 787 3 8 2 55 74 -388382: 8 5 5 23 80 2 9 59 7 2 30 -114598776: 3 3 4 6 7 743 6 608 17 8 -852: 5 6 2 2 818 -51991107: 62 930 107 90 9 -19471914893: 1 432 8 54 63 7 891 1 -14769263: 135 547 60 73 2 -264950665: 98 8 1 4 69 457 970 9 7 -65665642: 67 97 77 52 44 -7086506: 808 4 1 7 102 9 854 14 -2373244: 5 9 315 4 7 1 51 6 47 -2222101: 7 34 148 2 54 -196383915008: 91 65 558 35 20 85 4 7 -1882566840: 77 276 482 68 20 79 7 -3192380: 1 95 1 62 542 -1780325358305: 73 96 5 514 52 70 9 7 -31652: 3 8 6 14 2 23 1 883 4 8 4 -2039767: 4 23 86 942 4 -16443: 1 203 71 508 21 -1525639: 4 39 70 675 4 5 97 -1244447: 85 42 51 2 590 9 9 7 1 -79891266: 23 777 292 57 6 66 -133899684: 1 9 858 51 6 34 -158472: 44 7 118 4 93 -577827: 655 882 8 99 2 8 -26524897: 5 2 2 4 8 2 74 9 4 6 92 5 -619029948: 7 332 718 6 98 6 83 6 2 -21865593: 2 2 315 48 7 68 18 1 3 -59317495: 38 8 195 784 52 -651741664: 49 9 821 2 3 8 3 8 9 2 9 7 -99185020: 495 9 251 4 5 -107005920: 26 3 8 7 7 2 1 4 91 1 672 -2516184: 23 414 9 44 6 -127258624821: 2 9 1 3 209 77 6 482 1 -591136864: 812 728 851 1 11 -7150171: 5 18 6 5 3 5 2 14 1 1 161 -45473775683: 21 7 3 745 23 296 205 -267884545235: 9 8 3 930 6 6 4 98 3 7 9 7 -15888479044: 85 8 5 9 6 932 8 6 1 3 5 -156: 49 5 99 -2274323159: 4 2 8 7 39 50 7 951 2 -75744398: 37 864 8 2 397 -38121863061: 679 185 555 29 795 6 -708: 7 2 685 1 9 -2010678: 268 2 17 7 1 681 -7009005: 48 1 5 8 32 5 9 808 57 -3851784101224: 402 8 7 3 1 98 974 2 1 -70133821172: 273 734 3 35 13 3 172 -2334045177: 3 2 6 3 3 8 4 938 5 3 6 57 -11318244: 16 714 2 120 3 7 5 8 4 7 -1135489: 71 53 978 1 9 239 -97872: 9 35 7 36 70 2 1 -3565690187: 7 9 5 936 853 91 48 59 -27911345: 906 2 4 5 77 -20117244: 425 966 7 7 35 7 -5226102: 4 4 8 9 12 6 2 5 5 3 21 1 -20284677: 22 91 9 75 2 7 2 32 3 63 -59192019234: 8 6 755 56 186 2 2 59 6 -414: 1 48 266 -202496805: 836 193 5 18 251 547 -1756291: 1 76 2 7 7 6 4 2 1 2 3 521 -58130586: 58 1 2 998 9 47 4 42 -185377333373: 9 128 10 51 579 687 -92208192556: 243 937 9 1 39 6 7 718 -70202: 83 845 67 -632631: 79 8 627 1 4 -2308446: 8 62 1 5 3 49 670 2 1 31 -7652167: 7 6 520 79 91 -268204881: 9 3 56 7 976 20 4 -27714632: 6 63 88 6 7 9 467 50 -1199676: 159 26 29 4 629 184 -1168: 53 807 308 -1359889181: 8 5 9 57 62 41 5 1 6 97 9 -43: 5 7 2 4 1 -450410: 33 91 5 77 146 -225806336: 9 5 20 5 7 2 2 2 2 8 4 56 -930622: 92 638 423 2 13 -86493858: 2 158 1 5 90 205 9 2 6 6 -49753745289: 5 5 27 5 7 62 38 2 9 1 9 6 -60371025: 5 95 4 837 46 591 5 75 -3562461: 17 617 609 321 2 1 -145184643: 7 9 3 985 4 757 32 60 -732323: 435 3 7 133 8 4 9 7 2 6 5 -1032885: 679 4 56 7 3 9 -945945: 1 13 86 49 195 -6692478: 97 621 239 39 -12437644755: 238 84 455 5 9 4 551 7 -2886: 703 714 2 8 42 -571: 8 7 9 -1198792: 341 87 14 4 7 -83064502: 281 549 1 64 502 -78565542681: 78 565 542 68 2 -216603: 319 679 4 -337030: 90 1 6 4 93 -225178398: 9 7 6 494 6 25 8 6 5 6 5 3 -359260441: 8 8 4 5 71 11 4 40 3 -7684870400: 68 37 736 166 25 -4836753: 89 6 57 11 124 6 1 9 -448559: 2 3 897 59 -178599251: 5 8 60 5 9 6 2 2 9 38 6 2 -178868: 9 2 75 7 94 922 -28968: 18 8 219 1 71 -13362405963: 7 95 4 76 227 74 17 98 -262350: 795 55 6 -65696728: 6 145 82 397 751 -389312: 81 6 7 7 632 -707357: 4 1 63 30 6 3 50 96 5 7 -19717: 1 42 55 1 7 -20394032681: 5 122 79 5 1 2 1 9 1 28 2 -4784: 2 8 9 6 12 41 8 2 6 516 4 -1609910: 1 37 614 69 -523221: 962 4 70 7 1 5 64 6 99 6 -6181619: 77 9 892 6 53 -213398378: 26 7 872 63 47 77 -1283136751: 1 26 32 6 1 41 6 750 7 -437556672: 518 2 36 14 838 -2050513997: 50 41 51 399 7 -669844: 66 89 86 1 858 -163612855: 78 64 75 437 5 50 -1153638940155: 282 8 671 5 63 3 9 965 -147012685: 639 23 4 264 7 18 18 -41376667393: 628 94 77 524 83 7 4 8 -48762054: 5 11 9 58 9 6 1 7 6 618 9 -31668453: 9 951 37 59 94 -2668647: 347 93 262 82 940 1 -75501141: 5 807 72 6 130 -3054130: 3 31 821 4 1 9 -118264252: 722 25 819 59 8 180 -212285289: 60 5 35 6 64 2 9 9 3 3 -102104550993: 29 5 8 6 2 5 9 850 7 4 9 1 -1640167: 16 39 24 92 4 5 -454855747068: 827 55 574 625 81 8 -101649: 607 164 868 62 31 -586: 8 27 4 6 4 -1995211: 1 82 117 5 210 -6293: 86 870 91 6 10 -173274931255: 773 5 476 3 9 56 13 4 3 -979213568: 450 64 2 2 2 54 144 17 -228477312: 4 977 87 672 -1958906346: 6 529 6 811 65 1 1 3 6 1 -3982693130574: 66 93 60 19 595 74 -113280: 385 8 7 81 8 5 1 1 -176418: 9 1 27 121 6 -483888323: 2 3 8 3 8 8 741 90 8 1 6 -125276: 4 5 533 231 73 -2031843: 502 9 994 27 4 -181636303883: 920 3 3 1 6 7 94 1 4 7 8 2 -11711860: 2 8 89 8 70 3 2 36 862 -42810645671: 828 70 861 6 6 70 -32393: 3 18 14 5 11 -142818114700932: 6 98 46 885 3 6 88 2 2 6 -80412: 5 23 291 787 9 -5756790: 8 3 4 21 31 919 6 5 89 -30328450223: 3 9 12 2 8 4 9 8 5 5 1 226 -1152: 60 4 3 2 3 -926: 1 456 7 2 -2560803: 3 77 8 4 803 -259920: 5 5 192 6 543 50 4 9 1 4 -40430292: 2 139 6 6 416 75 2 21 -3058611251: 942 2 20 3 54 51 252 -371442757: 54 8 901 78 278 875 8 -1976: 24 2 76 -17440633: 253 173 8 2 5 8 634 -10894: 7 996 4 855 5 -1026899793: 3 2 9 2 2 3 91 4 249 49 4 -9527619: 9 943 710 2 2 8 510 -16018794: 4 86 597 78 90 -220925803882: 517 2 7 60 828 5 6 26 7 -2781157936: 235 74 9 153 4 23 70 6 -5345188071954: 962 923 45 61 6 5 91 -2498015: 356 859 7 -499591377: 42 3 19 539 3 9 699 1 -1090215: 5 3 57 45 7 -15519652344: 23 10 4 24 84 90 9 7 72 -907143: 3 6 90 97 1 4 6 -117077387: 9 5 2 3 1 9 9 9 550 346 4 -18354138559: 32 20 57 7 6 8 55 1 2 4 -275237: 9 23 114 77 2 687 437 -214176: 8 335 9 36 138 4 -2089632912: 74 51 7 83 8 4 813 97 -19904427: 8 7 196 8 1 53 9 5 2 7 -308810886: 222 21 69 96 3 -132301: 6 14 1 47 294 7 -25284884: 43 84 7 8 79 3 -1155: 552 50 73 430 50 -250971: 1 296 55 715 6 -5544: 84 3 22 -36731: 47 20 71 59 3 62 89 -801108: 153 77 68 -1846900: 95 2 970 10 2 -2041: 5 73 1 2 4 6 8 6 2 9 3 52 -29295248: 4 6 62 34 1 4 51 6 5 3 4 6 -6911470: 15 23 57 2 68 -17332770: 92 8 8 9 6 1 16 7 14 39 -12908392: 4 7 75 7 474 9 6 4 8 9 9 2 -732368: 653 8 3 1 7 9 5 4 90 5 3 4 -107000: 377 19 25 799 5 5 -609810: 7 2 44 7 9 713 92 5 -34492227: 9 7 993 77 7 3 -1351: 2 597 1 78 78 1 -32345: 9 908 7 50 5 -17411670783: 80 147 90 139 1 6 764 -477603: 55 24 397 4 623 7 27 -3177414: 317 7 395 8 9 -1464027960: 7 742 4 3 3 3 20 9 7 3 3 1 -338846: 33 270 2 5 38 -1289680998: 515 872 4 250 -206989: 3 70 5 81 4 7 6 -410915: 8 8 5 63 50 949 -16407452695: 95 95 57 3 185 84 4 4 -241574: 22 4 8 3 2 55 36 3 3 53 -5815: 8 7 949 8 4 6 899 856 -132336722: 292 9 513 91 148 421 -33640: 7 50 6 499 40 -487790318: 97 5 3 6 8 615 31 3 9 6 2 -1191828: 116 3 177 1 57 -1419906212: 3 99 7 6 41 86 1 94 7 7 8 -1096940: 11 78 150 1 826 12 -12634809: 126 33 110 868 828 -13938175: 9 15 13 425 17 2 -26174932: 749 399 5 4 3 5 1 6 1 76 -24376672: 4 90 8 4 46 6 1 46 69 7 -636: 59 1 91 9 4 -3318871: 713 8 30 207 9 5 2 2 8 3 -787624929631: 984 531 161 8 8 31 -1632805574: 5 6 5 5 1 8 7 6 461 2 94 5 -10582: 4 343 4 9 731 5 -1181968602: 555 31 2 47 2 9 7 860 1 -521044974: 3 17 973 123 9 474 -4540536945: 100 84 858 6 5 44 3 3 7 -2303: 3 93 9 8 -549077983: 6 908 60 52 997 6 -349510: 3 587 66 1 126 3 451 -48428832716: 751 89 363 641 713 -10481558632: 3 7 481 55 8 630 -581225299324: 81 75 1 2 91 876 6 1 24 diff --git a/input/day_07_example b/input/day_07_example deleted file mode 100644 index fc6e099..0000000 --- a/input/day_07_example +++ /dev/null @@ -1,9 +0,0 @@ -190: 10 19 -3267: 81 40 27 -83: 17 5 -156: 15 6 -7290: 6 8 6 15 -161011: 16 10 13 -192: 17 8 14 -21037: 9 7 18 13 -292: 11 6 16 20 pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy