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..0b73446 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,22 @@ -# Advent of Code 2024 +# Advent of Code 2020 ## 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 8](#) -- [Day 9](#) -- [Day 10](#) -- [Day 11](#) -- [Day 12](#) -- [Day 13](#) -- [Day 14](#) -- [Day 15](#) +- [Day 1](https://github.com/ankjevel/adventofcode/tree/2020/day_01) 🌟 🌟 +- [Day 2](https://github.com/ankjevel/adventofcode/tree/2020/day_02) 🌟 🌟 +- [Day 3](https://github.com/ankjevel/adventofcode/tree/2020/day_03) 🌟 🌟 +- [Day 4](https://github.com/ankjevel/adventofcode/tree/2020/day_04) 🌟 🌟 +- [Day 5](https://github.com/ankjevel/adventofcode/tree/2020/day_05) 🌟 🌟 +- [Day 6](https://github.com/ankjevel/adventofcode/tree/2020/day_06) 🌟 🌟 +- [Day 7](https://github.com/ankjevel/adventofcode/tree/2020/day_07) 🌟 🌟 +- [Day 8](https://github.com/ankjevel/adventofcode/tree/2020/day_08) 🌟 🌟 +- [Day 9](https://github.com/ankjevel/adventofcode/tree/2020/day_09) 🌟 🌟 +- [Day 10](https://github.com/ankjevel/adventofcode/tree/2020/day_10) 🌟 🌟 +- [Day 11](https://github.com/ankjevel/adventofcode/tree/2020/day_11) 🌟 🌟 +- [Day 12](https://github.com/ankjevel/adventofcode/tree/2020/day_12) 🌟 🌟 +- [Day 13](https://github.com/ankjevel/adventofcode/tree/2020/day_13) 🌟 🌟 +- [Day 14](https://github.com/ankjevel/adventofcode/tree/2020/day_14) 🌟 🌟 +- [Day 15](https://github.com/ankjevel/adventofcode/tree/2020/day_15) 🌟 🌟 - [Day 16](#) - [Day 17](#) - [Day 18](#) diff --git a/day_01/Cargo.toml b/day_01/Cargo.toml index e628253..2ffe44e 100644 --- a/day_01/Cargo.toml +++ b/day_01/Cargo.toml @@ -1,8 +1,9 @@ [package] name = "day_01" version = "0.1.0" -edition = "2021" -authors = ["Dennis Pettersson "] +authors = ["Dennis Pettersson "] +edition = "2018" +autobins = false [lib] doctest = false diff --git a/day_01/src/lib.rs b/day_01/src/lib.rs index ee71f73..3591e4d 100644 --- a/day_01/src/lib.rs +++ b/day_01/src/lib.rs @@ -1,44 +1,14 @@ pub mod part_01; pub mod part_02; -pub type Number = i128; -pub type Input = (Vec, 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 - }, - ) -} - -#[cfg(test)] -mod tests { - use super::*; - - const EXAMPLE_DATA: &str = " - 3 4 - 4 3 - 2 5 - 1 3 - 3 9 - 3 3 - "; - - #[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],) - ); - } +pub type Input = Vec; + +pub fn parse_input(string: &str) -> Input { + string + .lines() + .map(str::trim) + .filter(|string| !string.is_empty()) + .into_iter() + .map(|string| string.parse::().unwrap()) + .collect() } diff --git a/day_01/src/part_01.rs b/day_01/src/part_01.rs index 10f177a..e703d3c 100644 --- a/day_01/src/part_01.rs +++ b/day_01/src/part_01.rs @@ -1,16 +1,19 @@ 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(); +use crate::Input; + +pub fn main(input: &Input) -> Result { + let mut entries = (0, 0); + 'outer: for a in input { + for b in input.into_iter() { + if a + b == 2020 { + entries = (a.to_owned(), b.to_owned()); + break 'outer; + } + } + } - Ok(left.iter().enumerate().fold(0, |sum, (index, left_value)| { - sum + (left_value - right.get(index).unwrap()).abs() - })) + Ok(entries.0 * entries.1) } #[cfg(test)] @@ -19,18 +22,18 @@ 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 = " + 1721 + 979 + 366 + 299 + 675 + 1456 "; #[test] fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 11); + assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 514579); Ok(()) } } diff --git a/day_01/src/part_02.rs b/day_01/src/part_02.rs index 35a6ae3..5f3f2d5 100644 --- a/day_01/src/part_02.rs +++ b/day_01/src/part_02.rs @@ -1,16 +1,21 @@ 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 entries = (0, 0, 0); + 'outer: for a in input { + for b in input.into_iter() { + for c in input.into_iter() { + if a + b + c == 2020 { + entries = (a.to_owned(), b.to_owned(), c.to_owned()); + break 'outer; + } + } + } + } + + Ok(entries.0 * entries.1 * entries.2) } #[cfg(test)] @@ -19,18 +24,18 @@ 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 = " + 1721 + 979 + 366 + 299 + 675 + 1456 "; #[test] fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 31); + assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 241861950); Ok(()) } } diff --git a/day_02/Cargo.toml b/day_02/Cargo.toml index b9b0001..36ce412 100644 --- a/day_02/Cargo.toml +++ b/day_02/Cargo.toml @@ -1,8 +1,9 @@ [package] name = "day_02" version = "0.1.0" -edition = "2021" authors = ["Dennis Pettersson "] +edition = "2018" +autobins = false [lib] doctest = false diff --git a/day_02/src/lib.rs b/day_02/src/lib.rs index a3437e1..6b2142d 100644 --- a/day_02/src/lib.rs +++ b/day_02/src/lib.rs @@ -1,112 +1,45 @@ pub mod part_01; pub mod part_02; -type Number = i32; - -pub type Input = Vec>; +pub type Input = Vec<(u16, u16, char, String)>; pub fn parse_input(input: &str) -> Input { input .lines() .map(str::trim) .filter(|string| !string.is_empty()) - .map(str::to_owned) - .map(|line| { - line.split_whitespace() - .map(|string| string.parse().unwrap()) - .collect() - }) - .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; + .map(|part| { + let mut iter = part.split(" ").map(str::trim); + let mut range = iter.next().unwrap().split("-"); - if is_unsafe_value(change_left) || is_unsafe_value(change_right) { - return false; - } + let min = range.next().unwrap().parse::().unwrap(); + let max = range.next().unwrap().parse::().unwrap(); - if is_unsafe_change(change_left, change_right) { - return false; - } - } - } - true -} - -fn is_unsafe_value(change: Number) -> bool { - change == 0 || change.abs() > 3 -} + let character = iter.next().unwrap().to_string().chars().next().unwrap(); + let password = iter.next().unwrap().trim().to_owned(); -fn is_unsafe_change(left: Number, right: Number) -> bool { - let increase_left = left > 0; - let increase_right = right > 0; - - increase_left != increase_right + (min, max, character, password) + }) + .collect() } #[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 = " + 2-6 c: fcpwjqhcgtffzlbj + 6-9 x: xxxtwlxxx "; #[test] - fn it_parses_example() { + fn it_can_parse_input_as_expected() { 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![ + (2, 6, 'c', "fcpwjqhcgtffzlbj".to_string()), + (6, 9, 'x', "xxxtwlxxx".to_string()) + ] ); } } diff --git a/day_02/src/part_01.rs b/day_02/src/part_01.rs index 83a4363..f405b4a 100644 --- a/day_02/src/part_01.rs +++ b/day_02/src/part_01.rs @@ -1,9 +1,19 @@ use std::io::Result; -use crate::{is_safe, Input}; +use crate::Input; pub fn main(input: &Input) -> Result { - Ok(input.iter().filter(is_safe).collect::>().len()) + Ok(input + .into_iter() + .filter(|(min, max, char_to_match, password_string)| { + let matches = password_string + .chars() + .into_iter() + .filter(|c| c == char_to_match) + .count() as u16; + &matches >= min && &matches <= max + }) + .count()) } #[cfg(test)] @@ -12,13 +22,10 @@ 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 = " + 1-3 a: abcde + 1-3 b: cdefg + 2-9 c: ccccccccc "; #[test] diff --git a/day_02/src/part_02.rs b/day_02/src/part_02.rs index b3fa8e1..1fac2d2 100644 --- a/day_02/src/part_02.rs +++ b/day_02/src/part_02.rs @@ -1,43 +1,41 @@ use std::io::Result; -use crate::{is_safe, Input}; +use crate::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; - } - } - false - }) - .collect::>() - .len()) + .into_iter() + .filter( + |(first_index, second_index, char_to_match, password_string)| { + let chars: Vec = password_string.chars().collect(); + let match_count = vec![first_index, second_index] + .into_iter() + .map(|index| index.to_owned() as usize - 1) + .filter(|index| match chars.get(index.to_owned()) { + Some(char) if char == char_to_match => true, + _ => false, + }) + .count(); + match_count == 1 + }, + ) + .count()) } #[cfg(test)] mod tests { - use crate::parse_input; - use super::*; + use crate::parse_input; - 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 = " + 1-3 a: abcde + 1-3 b: cdefg + 2-9 c: ccccccccc "; #[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))?, 1); Ok(()) } } diff --git a/day_03/Cargo.toml b/day_03/Cargo.toml index 480fee2..4e40d99 100644 --- a/day_03/Cargo.toml +++ b/day_03/Cargo.toml @@ -1,8 +1,9 @@ [package] name = "day_03" version = "0.1.0" -edition = "2021" authors = ["Dennis Pettersson "] +edition = "2018" +autobins = false [lib] doctest = false @@ -13,5 +14,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..6655fb7 100644 --- a/day_03/src/lib.rs +++ b/day_03/src/lib.rs @@ -1,103 +1,51 @@ -#[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, +#[derive(Clone, Copy, Eq, PartialEq, Hash, Debug)] +pub enum Square { + Open, + Tree, } -impl Instruction { - pub fn mul(left: Number, right: Number) -> Self { - Self { - mul: Some((left, right)), - skip: None, - } - } +use Square::{Open, Tree}; - 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 .lines() .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 + .into_iter() + .map(|string| { + string + .chars() + .into_iter() + .map(|square| if square == '.' { Open } else { Tree }) + .collect() }) + .collect() } #[cfg(test)] mod tests { - use super::*; + use crate::{ + parse_input, + Square::{Open, Tree}, + }; + + const EXAMPLE_DATA: &'static str = " + ..##....... + #...#...#.. + "; #[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) - ] - ); + fn it_can_parse_input() { 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))" - ), + parse_input(&EXAMPLE_DATA), vec![ - Instruction::mul(2, 4), - Instruction::skip(true), - Instruction::mul(5, 5), - Instruction::mul(11, 8), - Instruction::skip(false), - Instruction::mul(8, 5) + vec![Open, Open, Tree, Tree, Open, Open, Open, Open, Open, Open, Open], + vec![Tree, Open, Open, Open, Tree, Open, Open, Open, Tree, Open, Open] ] ) } diff --git a/day_03/src/part_01.rs b/day_03/src/part_01.rs index e6a026a..73c1651 100644 --- a/day_03/src/part_01.rs +++ b/day_03/src/part_01.rs @@ -1,9 +1,21 @@ use std::io::Result; -use crate::{Input, Instruction, Number}; +use crate::{Input, Square::Tree}; -pub fn main(input: &Input) -> Result { - Ok(input.iter().map(Instruction::sum).sum()) +pub fn main(input: &Input) -> Result { + let max = input.get(0).unwrap().len(); + let mut index = 0; + Ok(input + .into_iter() + .map(|row| { + let square = row.get(index).unwrap(); + + index = (index + 3) % max; + + square.to_owned() + }) + .filter(|square| square == &Tree) + .count()) } #[cfg(test)] @@ -12,13 +24,23 @@ 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 = " + ..##....... + #...#...#.. + .#....#..#. + ..#.#...#.# + .#...##..#. + ..#.##..... + .#.#.#....# + .#........# + #.##...#... + #...##....# + .#..#...#.# "; #[test] fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 161); + assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 7); Ok(()) } } diff --git a/day_03/src/part_02.rs b/day_03/src/part_02.rs index d422c4f..ba5dc14 100644 --- a/day_03/src/part_02.rs +++ b/day_03/src/part_02.rs @@ -1,27 +1,24 @@ use std::io::Result; -use crate::{Input, Instruction, Number}; +use crate::{Input, Square::Tree}; -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; - } - should_skip = false; - } else if row.skip.is_some() { - should_skip = row.skip.unwrap(); - return false; - } - - row.mul.is_some() - }) - .map(Instruction::sum) - .sum()) +pub fn main(input: &Input) -> Result { + let max = input.get(0).unwrap().len(); + Ok(vec![(1, 1), (3, 1), (5, 1), (7, 1), (1, 2)] + .into_iter() + .fold(1, |count, (right, down)| { + let mut index = right.to_owned(); + let trees = (down..input.len()) + .step_by(down) + .map(|i| { + let square = input.get(i).unwrap().get(index).unwrap(); + index = (index + right) % max; + square.to_owned() + }) + .filter(|square| square == &Tree) + .count(); + count * trees + })) } #[cfg(test)] @@ -30,13 +27,23 @@ 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 = " + ..##....... + #...#...#.. + .#....#..#. + ..#.#...#.# + .#...##..#. + ..#.##..... + .#.#.#....# + .#........# + #.##...#... + #...##....# + .#..#...#.# "; #[test] fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 48); + assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 336); Ok(()) } } diff --git a/day_04/Cargo.toml b/day_04/Cargo.toml index 2666cfa..1173efd 100644 --- a/day_04/Cargo.toml +++ b/day_04/Cargo.toml @@ -1,8 +1,9 @@ [package] name = "day_04" version = "0.1.0" -edition = "2021" authors = ["Dennis Pettersson "] +edition = "2018" +autobins = false [lib] doctest = false @@ -13,3 +14,5 @@ name = "day_04" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +regex = "1.4.2" +lazy_static = "1.4.0" diff --git a/day_04/src/lib.rs b/day_04/src/lib.rs index 390c049..54d9fa2 100644 --- a/day_04/src/lib.rs +++ b/day_04/src/lib.rs @@ -1,50 +1,67 @@ +#[macro_use(lazy_static)] +extern crate lazy_static; +extern crate regex; + pub mod part_01; pub mod part_02; +pub mod passport; -pub type Input = Vec; +pub type Input = Vec>; pub fn parse_input(input: &str) -> Input { input .lines() - .map(str::trim) - .filter(|string| !string.is_empty()) - .map(str::to_owned) + .map(|string| string.trim()) + .into_iter() + .fold(vec![vec![]], |mut list, string| { + if string.is_empty() { + list.push(vec![]); + } else { + let last = list.last_mut().unwrap(); + last.push(string.to_string()); + } + list + }) + .into_iter() + .filter(|list| list.len() > 0) + .map(|passport| { + passport + .join(" ") + .split(" ") + .map(|part| { + let mut split = part.split(":").into_iter(); + ( + split.next().unwrap().to_owned(), + split.next().unwrap().to_owned(), + ) + }) + .collect() + }) .collect() } #[cfg(test)] mod tests { - use super::*; + use crate::parse_input; - const EXAMPLE_DATA: &str = " - MMMSXXMASM - MSAMXMSMSA - AMXSXMAAMM - MSAMASMSMX - XMASAMXAMM - XXAMMXXAMA - SMSMSASXSS - SAXAMASAAA - MAMMMXMMMM - MXMXAXMASX + const EXAMPLE_DATA: &'static str = " + ecl:gry pid:860033327 eyr:2020 hcl:#fffffd + byr:1937 iyr:2017 cid:147 hgt:183cm + + iyr:2013 ecl:amb cid:350 eyr:2023 pid:028048884 + hcl:#cfa07d byr:1929 + + hcl:#ae17e1 iyr:2013 + eyr:2024 + ecl:brn pid:760753108 byr:1931 + hgt:179cm + + hcl:#cfa07d eyr:2025 pid:166559648 + iyr:2011 ecl:brn hgt:59in "; #[test] - fn it_parses_example() { - assert_eq!( - parse_input(EXAMPLE_DATA), - vec![ - "MMMSXXMASM", - "MSAMXMSMSA", - "AMXSXMAAMM", - "MSAMASMSMX", - "XMASAMXAMM", - "XXAMMXXAMA", - "SMSMSASXSS", - "SAXAMASAAA", - "MAMMMXMMMM", - "MXMXAXMASX", - ] - ); + fn it_parses_the_example_input() { + assert_eq!(parse_input(&EXAMPLE_DATA).len(), 4); } } diff --git a/day_04/src/part_01.rs b/day_04/src/part_01.rs index cf9c476..4a746db 100644 --- a/day_04/src/part_01.rs +++ b/day_04/src/part_01.rs @@ -1,61 +1,26 @@ -use std::{ - collections::{HashMap, HashSet}, - io::Result, -}; +use std::{collections::HashMap, io::Result}; -use crate::Input; +use crate::{passport::Passport, Input}; pub fn main(input: &Input) -> Result { - let mut x_es: 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 == 'X' { - x_es.push(pos.to_owned()) - } - - (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 - } - }; - - let found = x_es + Ok(input .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::>() + .map(|row| { + let mut passport = HashMap::new(); + for (key, value) in row { + passport.insert(key.to_string(), value.to_string()); + } + passport.to_owned() }) - .collect::>(); - - Ok(found.len()) + .filter(|passport| { + if passport.keys().len() == 8 { + true + } else { + passport.keys().len() == 7 && passport.contains_key("cid") == false + } + }) + .collect::>() + .len()) } #[cfg(test)] @@ -64,22 +29,25 @@ mod tests { use super::*; - const EXAMPLE_DATA: &str = " - MMMSXXMASM - MSAMXMSMSA - AMXSXMAAMM - MSAMASMSMX - XMASAMXAMM - XXAMMXXAMA - SMSMSASXSS - SAXAMASAAA - MAMMMXMMMM - MXMXAXMASX + const EXAMPLE_DATA: &'static str = " + ecl:gry pid:860033327 eyr:2020 hcl:#fffffd + byr:1937 iyr:2017 cid:147 hgt:183cm + + iyr:2013 ecl:amb cid:350 eyr:2023 pid:028048884 + hcl:#cfa07d byr:1929 + + hcl:#ae17e1 iyr:2013 + eyr:2024 + ecl:brn pid:760753108 byr:1931 + hgt:179cm + + hcl:#cfa07d eyr:2025 pid:166559648 + iyr:2011 ecl:brn hgt:59in "; #[test] - fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 18); + fn should_get_the_same_amount_of_valid_passports_as_example() -> Result<()> { + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 2); Ok(()) } } diff --git a/day_04/src/part_02.rs b/day_04/src/part_02.rs index 0f2accf..0c646f9 100644 --- a/day_04/src/part_02.rs +++ b/day_04/src/part_02.rs @@ -1,75 +1,23 @@ use std::{collections::HashMap, io::Result}; -use crate::Input; +use crate::{ + passport::{valid, Passport}, + 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()) - } - - (pos, char) - }) - .collect::>() - })); - - let is_ok = - |a: &char, b: &char| -> bool { (*a == 'M' && *b == 'S') || (*a == 'S' && *b == 'M') }; - - let xmas = every_a + Ok(input .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 + .map(|row| { + let mut passport = HashMap::new(); + for (key, value) in row { + passport.insert(key.to_string(), value.to_string()); } + passport.to_owned() }) - .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()) + .filter(|passport| valid(passport)) + .collect::>() + .len()) } #[cfg(test)] @@ -78,22 +26,27 @@ mod tests { use super::*; - const EXAMPLE_DATA: &str = " - MMMSXXMASM - MSAMXMSMSA - AMXSXMAAMM - MSAMASMSMX - XMASAMXAMM - XXAMMXXAMA - SMSMSASXSS - SAXAMASAAA - MAMMMXMMMM - MXMXAXMASX + const EXAMPLE_DATA: &'static str = " + eyr:1972 cid:100 hcl:#18171d ecl:amb hgt:170 pid:186cm iyr:2018 byr:1926 + + iyr:2019 hcl:#602927 eyr:1967 hgt:170cm ecl:grn pid:012533040 byr:1946 + + hcl:dab227 iyr:2012 ecl:brn hgt:182cm pid:021572410 eyr:2020 byr:1992 cid:277 + + hgt:59cm ecl:zzz eyr:2038 hcl:74454a iyr:2023 pid:3556412378 byr:2007 + + pid:087499704 hgt:74in ecl:grn iyr:2012 eyr:2030 byr:1980 hcl:#623a2f + + eyr:2029 ecl:blu cid:129 byr:1989 iyr:2014 pid:896056539 hcl:#a97842 hgt:165cm + + hcl:#888785 hgt:164cm byr:2001 iyr:2015 cid:88 pid:545766238 ecl:hzl eyr:2022 + + iyr:2010 hgt:158cm hcl:#b6652a ecl:blu byr:1944 eyr:2021 pid:093154719 "; #[test] - fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 9); + fn should_get_the_same_amount_of_valid_passports_as_example() -> Result<()> { + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 4); Ok(()) } } diff --git a/day_04/src/passport.rs b/day_04/src/passport.rs new file mode 100644 index 0000000..a5dc694 --- /dev/null +++ b/day_04/src/passport.rs @@ -0,0 +1,93 @@ +use std::collections::HashMap; + +use regex::Regex; + +lazy_static! { + static ref VALID_HEIGHT: Regex = Regex::new(r"(\d+)+((cm)|(in)){1}").unwrap(); + static ref VALID_HEX: Regex = Regex::new(r"#([a-f0-9]){6}").unwrap(); + static ref VALID_EYE_COLOR: Vec = vec!["amb", "blu", "brn", "gry", "grn", "hzl", "oth"] + .iter() + .map(|string| string.to_string()) + .collect(); + static ref VALID_PIN: Regex = Regex::new(r"^\d{9}$").unwrap(); +} + +pub type Passport = HashMap; + +fn valid_birth_year(passport: &Passport) -> bool { + match passport.get("byr") { + Some(string) => (1920..=2002).contains(&string.parse::().unwrap_or(0)), + _ => false, + } +} + +fn valid_issue_year(passport: &Passport) -> bool { + match passport.get("iyr") { + Some(string) => (2010..=2020).contains(&string.parse::().unwrap_or(0)), + _ => false, + } +} + +fn valid_expiration_year(passport: &Passport) -> bool { + match passport.get("eyr") { + Some(string) => (2020..=2030).contains(&string.parse::().unwrap_or(0)), + _ => false, + } +} + +fn valid_height(passport: &Passport) -> bool { + let string = passport.get("hgt"); + if string.is_none() { + return false; + } + + let string = string.unwrap().to_owned(); + if !VALID_HEIGHT.is_match(&string) { + return false; + } + + let caps = VALID_HEIGHT.captures(&string).unwrap(); + let height = &caps.get(1).unwrap().as_str().parse::().unwrap_or(0); + if let Some(_) = caps.get(3) { + (150..=193).contains(height) + } else { + (59..=76).contains(height) + } +} + +fn valid_hair_color(passport: &Passport) -> bool { + match passport.get("hcl") { + None => false, + Some(string) => VALID_HEX.is_match(&string), + } +} + +fn valid_eye_color(passport: &Passport) -> bool { + match passport.get("ecl") { + None => false, + Some(string) => VALID_EYE_COLOR.contains(&string), + } +} + +fn valid_passport_id(passport: &Passport) -> bool { + match passport.get("pid") { + None => false, + Some(string) => VALID_PIN.is_match(&string), + } +} + +pub fn valid(passport: &Passport) -> bool { + vec![ + valid_birth_year(&passport), + valid_issue_year(&passport), + valid_expiration_year(&passport), + valid_height(&passport), + valid_hair_color(&passport), + valid_eye_color(&passport), + valid_passport_id(&passport), + ] + .into_iter() + .filter(|valid| valid.to_owned()) + .count() + == 7 +} diff --git a/day_05/Cargo.toml b/day_05/Cargo.toml index 3cf42ef..73bf6c2 100644 --- a/day_05/Cargo.toml +++ b/day_05/Cargo.toml @@ -1,8 +1,9 @@ [package] name = "day_05" version = "0.1.0" -edition = "2021" authors = ["Dennis Pettersson "] +edition = "2018" +autobins = false [lib] doctest = false diff --git a/day_05/src/lib.rs b/day_05/src/lib.rs index 8e4fceb..6835ea3 100644 --- a/day_05/src/lib.rs +++ b/day_05/src/lib.rs @@ -1,62 +1,32 @@ pub mod part_01; pub mod part_02; -pub type Number = u8; -pub type Input = (Vec<(Number, Number)>, Vec>); +pub type Input = Vec; pub fn parse_input(input: &str) -> Input { - let input = input - .trim() + input .lines() .map(str::trim) + .filter(|string| !string.is_empty()) .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) + .collect() } #[cfg(test)] mod tests { use super::*; - const EXAMPLE_DATA: &str = " - 47|29 - 75|13 - 53|13 - - 75,47,61,53,29 - 53,29,13 + const EXAMPLE_DATA: &'static str = " + BFFFBBFRRR + FFFBBBFRRR + BBFFBBFRLL "; #[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]] - ) + parse_input(&EXAMPLE_DATA), + vec!["BFFFBBFRRR", "FFFBBBFRRR", "BBFFBBFRLL"] ); } } diff --git a/day_05/src/part_01.rs b/day_05/src/part_01.rs index 7633fe2..549fc7d 100644 --- a/day_05/src/part_01.rs +++ b/day_05/src/part_01.rs @@ -1,37 +1,46 @@ -use std::{cmp::Ordering, io::Result}; +use std::io::Result; use crate::Input; -pub fn main((order, pages): &Input) -> Result { - Ok(pages +pub fn main(input: &Input) -> Result { + Ok(input .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 + .map(|string| { + let chars = string.chars().collect::>(); + let row = &chars[0..7] + .into_iter() + .fold(0..=127, |range, letter| { + let min = range.to_owned().min().unwrap(); + let max = range.to_owned().max().unwrap(); + let range = (max - min) / 2; + match letter.to_owned() { + 'F' => min..=min + range, + 'B' => max - range..=max, + _ => min..=max, } - } else { - Ordering::Equal - } - }); - - ordered.eq(*pages) + }) + .min() + .unwrap() + .to_owned(); + let column = &chars[7..] + .into_iter() + .fold(0..=7, |range, letter| { + let min = range.to_owned().min().unwrap(); + let max = range.to_owned().max().unwrap(); + let range = (max - min) / 2; + match letter.to_owned() { + 'L' => min..=min + range, + 'R' => max - range..=max, + _ => min..=max, + } + }) + .min() + .unwrap() + .to_owned(); + (row * 8) + column }) - .fold(0, |sum, pages| { - let middle = (pages.len() as i8 / 2).abs(); - sum + *pages.get(middle as usize).unwrap() as usize - })) + .max() + .unwrap()) } #[cfg(test)] @@ -40,11 +49,21 @@ mod tests { use super::*; - const EXAMPLE_DATA: &str = include_str!("../../input/day_05_example"); + const EXAMPLE_DATA: &'static str = " + BFFFBBFRRR + FFFBBBFRRR + BBFFBBFRLL + "; + + #[test] + fn it_gets_the_first_example_correct() -> Result<()> { + assert_eq!(main(&vec!["FBFBBFFRLR".to_string()])?, 357); + Ok(()) + } #[test] fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 143); + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 820); Ok(()) } } diff --git a/day_05/src/part_02.rs b/day_05/src/part_02.rs index 7182ec7..b0b568b 100644 --- a/day_05/src/part_02.rs +++ b/day_05/src/part_02.rs @@ -1,54 +1,83 @@ -use std::{cmp::Ordering, io::Result}; +use std::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 - })) +#[derive(Debug, Eq, PartialEq)] +enum Seat { + Empty, + Taken, } -#[cfg(test)] -mod tests { - use crate::parse_input; +use Seat::*; - use super::*; +fn get_seats(input: &Input) -> Vec> { + let mut seats: Vec> = (0..=127) + .map(|_| (0..=7).map(|_| Empty).collect()) + .collect(); - const EXAMPLE_DATA: &str = include_str!("../../input/day_05_example"); + input.iter().for_each(|string| { + let chars = string.chars().collect::>(); + let row = &chars[0..7] + .into_iter() + .fold(0..=127, |range, letter| { + let min = range.to_owned().min().unwrap(); + let max = range.to_owned().max().unwrap(); + let range = (max - min) / 2; + match letter.to_owned() { + 'F' => min..=min + range, + 'B' => max - range..=max, + _ => min..=max, + } + }) + .min() + .unwrap() + .to_owned(); + let column = &chars[7..] + .into_iter() + .fold(0..=7, |range, letter| { + let min = range.to_owned().min().unwrap(); + let max = range.to_owned().max().unwrap(); + let range = (max - min) / 2; + match letter.to_owned() { + 'L' => min..=min + range, + 'R' => max - range..=max, + _ => min..=max, + } + }) + .min() + .unwrap() + .to_owned(); + match seats.get_mut(row.to_owned()) { + Some(row) => match row.get_mut(column.to_owned()) { + Some(seat) => *seat = Taken, + _ => {} + }, + _ => {} + } + }); - #[test] - fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 123); - Ok(()) + seats +} + +pub fn main(input: &Input) -> Result { + let seats = get_seats(input); + let mut result = 0; + let mut rows = seats.iter().to_owned().enumerate(); + 'main: while let Some((i, row)) = rows.next() { + let mut iter = row.iter().to_owned().enumerate(); + while let Some((j, seat)) = iter.next() { + if seat != &Empty || (1..6).contains(&j) == false { + continue; + } + let prev = row.get(j - 1).unwrap(); + let next = row.get(j + 1).unwrap(); + + if prev == &Taken && next == &Taken { + result = (i * 8) + j; + break 'main; + } + } } + + Ok(result) } diff --git a/day_06/Cargo.toml b/day_06/Cargo.toml index a22aa97..15c62dc 100644 --- a/day_06/Cargo.toml +++ b/day_06/Cargo.toml @@ -1,8 +1,9 @@ [package] name = "day_06" version = "0.1.0" -edition = "2021" authors = ["Dennis Pettersson "] +edition = "2018" +autobins = false [lib] doctest = false @@ -10,6 +11,4 @@ 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 index eb3fff3..e9205ba 100644 --- a/day_06/src/lib.rs +++ b/day_06/src/lib.rs @@ -1,76 +1,45 @@ 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 type Input = Vec>; pub fn parse_input(input: &str) -> Input { - let mut current_position = (0, 0); - let map = input + 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::>() + .into_iter() + .fold(vec![vec![]], |mut list, string| { + if string.is_empty() { + list.push(vec![]); + } else { + let last = list.last_mut().unwrap(); + last.push(string.to_string()); + } + list }) - .collect(); - - (Guard::new(current_position), map) + .into_iter() + .filter(|list| list.len() > 0) + .collect() } #[cfg(test)] mod tests { - use square::Guard; - use super::*; - const EXAMPLE_DATA: &str = " - .^ - #. - "; + const EXAMPLE_DATA: &'static str = " + abc + + a + b + + + "; #[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), + vec![vec!["abc"], vec!["a", "b"]] ); - - assert_eq!(parse_input(EXAMPLE_DATA), expected); } } diff --git a/day_06/src/part_01.rs b/day_06/src/part_01.rs index 7120c27..fc1a932 100644 --- a/day_06/src/part_01.rs +++ b/day_06/src/part_01.rs @@ -1,26 +1,22 @@ -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()) +use std::io::Result; + +use crate::Input; + +pub fn main(input: &Input) -> Result { + Ok(input.iter().fold(0, |sum, group| { + sum + ('a'..='z') + .map(char::from) + .filter(|c| { + group + .iter() + .filter(|p| p.contains(&c.to_string())) + .collect::>() + .len() + > 0 + }) + .collect::>() + .len() + })) } #[cfg(test)] @@ -29,11 +25,27 @@ mod tests { use super::*; - const EXAMPLE_DATA: &str = include_str!("../../input/day_06_example"); + const EXAMPLE_DATA: &'static str = " + abc + + a + b + c + + ab + ac + + a + a + a + a + + b + "; #[test] fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 41); + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 11); Ok(()) } } diff --git a/day_06/src/part_02.rs b/day_06/src/part_02.rs index aff2846..8ab979c 100644 --- a/day_06/src/part_02.rs +++ b/day_06/src/part_02.rs @@ -1,49 +1,22 @@ -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; - } +use std::io::Result; + +use crate::Input; + +pub fn main(input: &Input) -> Result { + Ok(input.iter().fold(0, |sum, group| { + sum + ('a'..='z') + .map(char::from) + .filter(|c| { + group + .iter() + .filter(|p| p.contains(&c.to_string())) + .collect::>() + .len() + == group.len() }) - }) - .map(|handle| handle.join().unwrap()) - .filter(|loop_encountered| *loop_encountered) - .collect::>() - .len()) + .collect::>() + .len() + })) } #[cfg(test)] @@ -52,11 +25,27 @@ mod tests { use super::*; - const EXAMPLE_DATA: &str = include_str!("../../input/day_06_example"); + const EXAMPLE_DATA: &'static str = " + abc + + a + b + c + + ab + ac + + a + a + a + a + + b + "; #[test] fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 6); + 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 index 8dbc02a..ec19f0b 100644 --- a/day_07/Cargo.toml +++ b/day_07/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "day_07" version = "0.1.0" -edition = "2021" +edition = "2018" authors = ["Dennis Pettersson "] [lib] @@ -13,3 +13,5 @@ name = "day_07" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +regex = "1.4.2" +lazy_static = "1.4.0" diff --git a/day_07/src/lib.rs b/day_07/src/lib.rs index 8c476ab..3a0e379 100644 --- a/day_07/src/lib.rs +++ b/day_07/src/lib.rs @@ -1,43 +1,77 @@ +#[macro_use(lazy_static)] +extern crate lazy_static; +extern crate regex; + pub mod part_01; pub mod part_02; -pub type Number = i64; -pub type Input = Vec<(Number, Vec)>; +use std::collections::HashMap; + +use regex::Regex; + +lazy_static! { + static ref RE: Regex = + Regex::new(r"(\w+ \w+) bags contain(?: (\d) (\w+ \w+) bags?[\.,]){0,}").unwrap(); + static ref ITER: Regex = Regex::new(r"(?: (\d) (\w+ \w+) bags?[\.,])").unwrap(); +} + +pub type Input = HashMap>; 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(": "); + .filter(|string| RE.is_match(&string)) + .map(|string| { + let caps = RE.captures(&string).unwrap(); + let name = &caps.get(1).unwrap().as_str(); ( - line.next().unwrap().parse().unwrap(), - line.next() - .unwrap() - .split(' ') - .map(|part| part.parse().unwrap()) - .collect(), + name.to_string(), + ITER.captures_iter(string) + .filter(|group| group.get(1).is_some()) + .map(|group| { + ( + group.get(1).unwrap().as_str().parse::().unwrap_or(0), + group.get(2).unwrap().as_str().to_owned(), + ) + }) + .collect::>(), ) }) - .collect() + .collect::() } #[cfg(test)] mod tests { use super::*; - const EXAMPLE_DATA: &str = " - 190: 10 19 - 3267: 81 40 27 + const EXAMPLE_DATA: &'static str = " + bright white bags contain 1 shiny gold bag. + dim fuchsia bags contain 5 dark red bags, 1 muted green bag, 4 clear indigo bags. + dotted black bags contain no other bags. "; #[test] fn it_parses_example() { - assert_eq!( - parse_input(EXAMPLE_DATA), - vec![(190, vec![10, 19]), (3267, vec![81, 40, 27]),] + let mut expected = HashMap::new(); + + expected.insert( + "bright white".to_string(), + vec![(1, "shiny gold".to_string())], + ); + + expected.insert( + "dim fuchsia".to_string(), + vec![ + (5, "dark red".to_string()), + (1, "muted green".to_string()), + (4, "clear indigo".to_string()), + ], ); + + expected.insert("dotted black".to_string(), vec![]); + + assert_eq!(parse_input(&EXAMPLE_DATA), expected); } } diff --git a/day_07/src/main.rs b/day_07/src/main.rs index 6530793..fdc552f 100644 --- a/day_07/src/main.rs +++ b/day_07/src/main.rs @@ -10,3 +10,5 @@ fn main() -> Result<()> { Ok(()) } + + diff --git a/day_07/src/part_01.rs b/day_07/src/part_01.rs index 5433e25..305e89b 100644 --- a/day_07/src/part_01.rs +++ b/day_07/src/part_01.rs @@ -1,33 +1,49 @@ -use std::{io::Result, mem}; +use std::{collections::HashMap, io::Result}; -use crate::{Input, Number}; +use crate::Input; -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); - } +type Bags = HashMap>; - let calibrations = calibrations - .iter() - .filter(|result| test_value == *result) - .collect::>(); +fn look_inside(name: &str, bags: &Bags) -> bool { + if name == "shiny gold" { + return true; + } - if calibrations.is_empty() { - None - } else { - Some(test_value) + match &bags.get(name) { + Some(inside) => { + if inside.contains(&"shiny gold".to_string()) { + return true; } + inside.iter().filter(|name| look_inside(name, bags)).count() > 0 + } + _ => false, + } +} + +pub fn main(input: &Input) -> Result { + let bags: Bags = input + .iter() + .filter(|(_, inside)| !inside.is_empty()) + .map(|(name, inside)| { + ( + name.to_string(), + inside.iter().map(|(_, name)| name.to_string()).collect(), + ) + }) + .collect(); + + Ok(bags + .clone() + .into_iter() + .filter(|(name, _)| name != &"shiny gold") + .filter(|(_, inside)| { + inside + .iter() + .filter(|name| look_inside(&name, &bags)) + .count() + > 0 }) - .sum()) + .count()) } #[cfg(test)] @@ -36,11 +52,21 @@ mod tests { use super::*; - const EXAMPLE_DATA: &str = include_str!("../../input/day_07_example"); + const EXAMPLE_DATA: &'static str = " + light red bags contain 1 bright white bag, 2 muted yellow bags. + dark orange bags contain 3 bright white bags, 4 muted yellow bags. + bright white bags contain 1 shiny gold bag. + muted yellow bags contain 2 shiny gold bags, 9 faded blue bags. + shiny gold bags contain 1 dark olive bag, 2 vibrant plum bags. + dark olive bags contain 3 faded blue bags, 4 dotted black bags. + vibrant plum bags contain 5 faded blue bags, 6 dotted black bags. + faded blue bags contain no other bags. + dotted black bags contain no other bags. + "; #[test] fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 3749); + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 4); Ok(()) } } diff --git a/day_07/src/part_02.rs b/day_07/src/part_02.rs index 2cbd42f..4aa9411 100644 --- a/day_07/src/part_02.rs +++ b/day_07/src/part_02.rs @@ -1,38 +1,22 @@ -use std::{io::Result, mem}; +use std::io::Result; -use crate::{Input, Number}; +use crate::Input; -pub fn main(input: &Input) -> Result { +fn lookup((size, name): &(u8, String), input: &Input) -> usize { + let size = size.to_owned() as usize; + size + size * look_inside(input.get(name).unwrap(), input) +} + +fn look_inside(inside: &Vec<(u8, String)>, input: &Input) -> usize { + inside.iter().map(|item| lookup(item, input)).sum() +} + +pub fn main(input: &Input) -> Result { Ok(input + .get("shiny gold") + .unwrap() .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) - } - }) + .map(|item| lookup(item, input)) .sum()) } @@ -42,11 +26,39 @@ mod tests { use super::*; - const EXAMPLE_DATA: &str = include_str!("../../input/day_07_example"); + #[test] + fn it_gets_first_example_correct() -> Result<()> { + assert_eq!( + main(&parse_input( + &" light red bags contain 1 bright white bag, 2 muted yellow bags. + dark orange bags contain 3 bright white bags, 4 muted yellow bags. + bright white bags contain 1 shiny gold bag. + muted yellow bags contain 2 shiny gold bags, 9 faded blue bags. + shiny gold bags contain 1 dark olive bag, 2 vibrant plum bags. + dark olive bags contain 3 faded blue bags, 4 dotted black bags. + vibrant plum bags contain 5 faded blue bags, 6 dotted black bags. + faded blue bags contain no other bags. + dotted black bags contain no other bags." + ))?, + 32 + ); + Ok(()) + } #[test] - fn it_gets_the_example_correct() -> Result<()> { - assert_eq!(main(&parse_input(EXAMPLE_DATA))?, 11387); + fn it_gets_second_example_correct() -> Result<()> { + assert_eq!( + main(&parse_input( + &" shiny gold bags contain 2 dark red bags. + dark red bags contain 2 dark orange bags. + dark orange bags contain 2 dark yellow bags. + dark yellow bags contain 2 dark green bags. + dark green bags contain 2 dark blue bags. + dark blue bags contain 2 dark violet bags. + dark violet bags contain no other bags." + ))?, + 126 + ); Ok(()) } } diff --git a/day_08/Cargo.toml b/day_08/Cargo.toml new file mode 100644 index 0000000..3f1054d --- /dev/null +++ b/day_08/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "day_08" +version = "0.1.0" +edition = "2018" +authors = ["Dennis Pettersson "] + +[lib] +doctest = false + +[[bin]] +name = "day_08" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/day_08/src/instruction.rs b/day_08/src/instruction.rs new file mode 100644 index 0000000..f0d15d4 --- /dev/null +++ b/day_08/src/instruction.rs @@ -0,0 +1,27 @@ +#[derive(Debug, Eq, PartialEq, Clone, Copy)] +pub enum Operation { + NOP, + JMP, + ACC, +} + +use Operation::*; + +#[derive(Debug, Eq, PartialEq, Clone, Copy)] +pub struct Instruction { + pub operation: Operation, + pub argument: i64, +} + +impl Instruction { + pub fn new(operation: &str, argument: i64) -> Self { + Self { + operation: match operation { + "jmp" => JMP, + "acc" => ACC, + _ => NOP, + }, + argument, + } + } +} diff --git a/day_08/src/lib.rs b/day_08/src/lib.rs new file mode 100644 index 0000000..8fe1f93 --- /dev/null +++ b/day_08/src/lib.rs @@ -0,0 +1,45 @@ +#![feature(iter_advance_by)] +use instruction::Instruction; + +pub mod instruction; +pub mod part_01; +pub mod part_02; + +pub type Input = Vec; + +pub fn parse_input(input: &str) -> Input { + input + .lines() + .map(str::trim) + .filter(|string| !string.is_empty()) + .map(|string| { + let mut split = string.split(" "); + let operation = split.next().unwrap_or("nop"); + let argument = split.next().unwrap_or("0").parse::<_>().unwrap_or(0); + Instruction::new(operation, argument) + }) + .collect() +} + +#[cfg(test)] +mod tests { + use super::*; + + const EXAMPLE_DATA: &'static str = " + nop +0 + acc +1 + jmp +4 + "; + + #[test] + fn it_parses_example() { + assert_eq!( + parse_input(&EXAMPLE_DATA), + vec![ + Instruction::new("nop", 0), + Instruction::new("acc", 1), + Instruction::new("jmp", 4) + ] + ); + } +} diff --git a/day_08/src/main.rs b/day_08/src/main.rs new file mode 100644 index 0000000..e8403e0 --- /dev/null +++ b/day_08/src/main.rs @@ -0,0 +1,14 @@ +use std::io::Result; + +use day_08::{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_08")); + + println!("part_01: {:?}", part_01(&input)?); + println!("part_02: {:?}", part_02(&input)?); + + Ok(()) +} + + diff --git a/day_08/src/part_01.rs b/day_08/src/part_01.rs new file mode 100644 index 0000000..5fe6492 --- /dev/null +++ b/day_08/src/part_01.rs @@ -0,0 +1,82 @@ +use std::io::Result; + +use crate::{instruction::Instruction, instruction::Operation::*, Input}; + +#[derive(Default, Debug, Eq, PartialEq, Clone)] +struct Program { + instructions: Vec<(bool, Instruction)>, + accumulator: i64, + index: usize, +} + +impl Program { + fn new(input: &Input) -> Self { + Self { + instructions: input + .iter() + .map(|input| (false, input.to_owned())) + .collect(), + ..Program::default() + } + } + + fn run(mut self) -> i64 { + let len = self.instructions.len() as i64; + let next = |curr: usize, next: &i64| -> usize { + let next_index = curr as i64 + next; + (if next_index > len { + len - next_index + } else { + next_index + } % len) as usize + }; + + loop { + let (visited, instruction) = self.instructions.get_mut(self.index).unwrap(); + if *visited { + break; + } + + let argument = &instruction.argument; + let operation = instruction.operation; + + if operation == ACC { + self.accumulator += argument + } + + *visited = true; + self.index = next(self.index, if operation == JMP { argument } else { &1 }); + } + + self.accumulator + } +} + +pub fn main(input: &Input) -> Result { + Ok(Program::new(input).run()) +} + +#[cfg(test)] +mod tests { + use crate::parse_input; + + use super::*; + + const EXAMPLE_DATA: &'static str = " + nop +0 + acc +1 + jmp +4 + acc +3 + jmp -3 + acc -99 + acc +1 + jmp -4 + acc +6 + "; + + #[test] + fn it_gets_the_example_correct() -> Result<()> { + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 5); + Ok(()) + } +} diff --git a/day_08/src/part_02.rs b/day_08/src/part_02.rs new file mode 100644 index 0000000..12067c0 --- /dev/null +++ b/day_08/src/part_02.rs @@ -0,0 +1,135 @@ +use std::io::Result; + +use crate::{instruction::Instruction, instruction::Operation::*, Input}; + +#[derive(Default, Debug, Eq, PartialEq, Clone)] +struct Program { + instructions: Vec<(bool, Instruction)>, + original: Vec, + accumulator: i64, + index: usize, + change: usize, +} + +impl Program { + fn new(input: &Input) -> Self { + Self { + original: input.to_owned(), + ..Program::default() + } + } + + fn fix(&mut self) { + let mut to_change = self.change.to_owned(); + let len = self.original.len(); + + self.accumulator = 0; + self.index = 0; + + self.instructions = self + .original + .iter() + .enumerate() + .map(|(index, instruction)| { + if to_change != index { + return (false, instruction.to_owned()); + } + + let operation = instruction.operation; + let argument = instruction.argument; + + match operation { + ACC => { + to_change += 1; + (false, instruction.to_owned()) + } + NOP => ( + false, + Instruction { + operation: JMP, + argument, + }, + ), + JMP => ( + false, + Instruction { + operation: NOP, + argument, + }, + ), + } + }) + .collect::>(); + + self.change = to_change + 1 % len; + } + + fn run(mut self) -> i64 { + let len = self.original.len() as i64; + let next = |curr: usize, next: &i64| -> usize { + let next_index = curr as i64 + next; + (if next_index > len { + len - next_index + } else { + next_index + } % len) as usize + }; + + 'main: loop { + self.fix(); + + 'test: loop { + let (visited, instruction) = self.instructions.get_mut(self.index).unwrap(); + if *visited { + break 'test; + } + + let argument = &instruction.argument; + let operation = instruction.operation; + let next = next(self.index, if operation == JMP { argument } else { &1 }); + + if operation == ACC { + self.accumulator += argument; + } + + if self.index != 0 && next == 0 { + break 'main; + } + + *visited = true; + self.index = next; + } + } + + self.accumulator + } +} + +pub fn main(input: &Input) -> Result { + Ok(Program::new(input).run()) +} + +#[cfg(test)] +mod tests { + use crate::parse_input; + + use super::*; + + const EXAMPLE_DATA: &'static str = " + nop +0 + acc +1 + jmp +4 + acc +3 + jmp -3 + acc -99 + acc +1 + jmp -4 + acc +6 + "; + + #[test] + fn it_gets_the_example_correct() -> Result<()> { + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 8); + Ok(()) + } +} diff --git a/day_09/Cargo.toml b/day_09/Cargo.toml new file mode 100644 index 0000000..e362413 --- /dev/null +++ b/day_09/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "day_09" +version = "0.1.0" +edition = "2018" +authors = ["Dennis Pettersson "] + +[lib] +doctest = false + +[[bin]] +name = "day_09" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/day_09/src/lib.rs b/day_09/src/lib.rs new file mode 100644 index 0000000..6fd2c9d --- /dev/null +++ b/day_09/src/lib.rs @@ -0,0 +1,29 @@ +pub mod part_01; +pub mod part_02; + +pub type Input = Vec; + +pub fn parse_input(input: &str) -> Input { + input + .lines() + .map(str::trim) + .filter(|string| !string.is_empty()) + .map(|string| string.parse::<_>().unwrap()) + .collect() +} + +#[cfg(test)] +mod tests { + use super::*; + + const EXAMPLE_DATA: &'static str = " + 35 + 20 + 15 + "; + + #[test] + fn it_parses_example() { + assert_eq!(parse_input(&EXAMPLE_DATA), vec![35, 20, 15]); + } +} diff --git a/day_09/src/main.rs b/day_09/src/main.rs new file mode 100644 index 0000000..3c3f00c --- /dev/null +++ b/day_09/src/main.rs @@ -0,0 +1,12 @@ +use std::io::Result; + +use day_09::{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_09")); + + println!("part_01: {:?}", part_01(&input, 25)?); + println!("part_02: {:?}", part_02(&input, 25)?); + + Ok(()) +} diff --git a/day_09/src/part_01.rs b/day_09/src/part_01.rs new file mode 100644 index 0000000..5fdb890 --- /dev/null +++ b/day_09/src/part_01.rs @@ -0,0 +1,73 @@ +use std::io::Result; + +use crate::Input; + +pub fn get_invalid(input: &Input, preamble_length: usize) -> u64 { + let preamble_length = preamble_length + 1; + let len = input.len(); + let mut skip_index = 0; + + 'check: while skip_index + preamble_length < len { + let mut preamble = input + .into_iter() + .skip(skip_index) + .take(preamble_length) + .map(u64::to_owned) + .collect::>(); + let last = preamble.pop().unwrap(); + for a in &preamble { + for b in &preamble { + if a == b { + continue; + } + if a + b == last { + skip_index += 1; + continue 'check; + } + } + } + return last.to_owned(); + } + + 0 +} + +pub fn main(input: &Input, preamble_length: usize) -> Result { + Ok(get_invalid(input, preamble_length)) +} + +#[cfg(test)] +mod tests { + use crate::parse_input; + + use super::*; + + const EXAMPLE_DATA: &'static str = " + 35 + 20 + 15 + 25 + 47 + 40 + 62 + 55 + 65 + 95 + 102 + 117 + 150 + 182 + 127 + 219 + 299 + 277 + 309 + 576 + "; + + #[test] + fn it_gets_the_example_correct() -> Result<()> { + assert_eq!(main(&parse_input(&EXAMPLE_DATA), 5)?, 127); + Ok(()) + } +} diff --git a/day_09/src/part_02.rs b/day_09/src/part_02.rs new file mode 100644 index 0000000..7843100 --- /dev/null +++ b/day_09/src/part_02.rs @@ -0,0 +1,75 @@ +use std::io::Result; + +use crate::{part_01::get_invalid, Input}; + +pub fn min_max(input: &Input, invalid: u64) -> u64 { + let input = input.clone().iter().map(u64::to_owned).collect::>(); + let len = input.len(); + let mut index = 0; + while index < len { + let n = &input + .iter() + .skip(index) + .map(u64::to_owned) + .filter(|n| n != &invalid) + .collect::>(); + let nn = n.len(); + let mut i = 0; + while i < nn { + let sample = n.into_iter().take(i).map(u64::to_owned).collect::>(); + let sum = sample.iter().sum::(); + + if sum != invalid { + i += 1; + continue; + } + + let min = sample.iter().min().unwrap().to_owned(); + let max = sample.iter().max().unwrap().to_owned(); + + return min + max; + } + index += 1; + } + 0 +} + +pub fn main(input: &Input, preamble_length: usize) -> Result { + Ok(min_max(input, get_invalid(input, preamble_length))) +} + +#[cfg(test)] +mod tests { + use crate::parse_input; + + use super::*; + + const EXAMPLE_DATA: &'static str = " + 35 + 20 + 15 + 25 + 47 + 40 + 62 + 55 + 65 + 95 + 102 + 117 + 150 + 182 + 127 + 219 + 299 + 277 + 309 + 576 + "; + + #[test] + fn it_gets_the_example_correct() -> Result<()> { + assert_eq!(main(&parse_input(&EXAMPLE_DATA), 5)?, 62); + Ok(()) + } +} diff --git a/day_10/Cargo.toml b/day_10/Cargo.toml new file mode 100644 index 0000000..0fa4432 --- /dev/null +++ b/day_10/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "day_10" +version = "0.1.0" +edition = "2018" +authors = ["Dennis Pettersson "] + +[lib] +doctest = false + +[[bin]] +name = "day_10" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/day_10/src/lib.rs b/day_10/src/lib.rs new file mode 100644 index 0000000..5a744d1 --- /dev/null +++ b/day_10/src/lib.rs @@ -0,0 +1,29 @@ +pub mod part_01; +pub mod part_02; + +pub type Input = Vec; + +pub fn parse_input(input: &str) -> Input { + input + .lines() + .map(str::trim) + .filter(|string| !string.is_empty()) + .map(|string| string.parse::<_>().unwrap_or(0)) + .collect() +} + +#[cfg(test)] +mod tests { + use super::*; + + const EXAMPLE_DATA: &'static str = " + 16 + 10 + 15 + "; + + #[test] + fn it_parses_example() { + assert_eq!(parse_input(&EXAMPLE_DATA), vec![16, 10, 15]); + } +} diff --git a/day_10/src/main.rs b/day_10/src/main.rs new file mode 100644 index 0000000..f8b4f6a --- /dev/null +++ b/day_10/src/main.rs @@ -0,0 +1,14 @@ +use std::io::Result; + +use day_10::{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_10")); + + println!("part_01: {:?}", part_01(&input)?); + println!("part_02: {:?}", part_02(&input)?); + + Ok(()) +} + + diff --git a/day_10/src/part_01.rs b/day_10/src/part_01.rs new file mode 100644 index 0000000..7109f7f --- /dev/null +++ b/day_10/src/part_01.rs @@ -0,0 +1,56 @@ +use std::io::Result; + +use crate::Input; + +pub fn main(input: &Input) -> Result { + let mut input = input.clone().to_owned(); + input.sort(); + input.push(*input.iter().max().unwrap() + 3); + + let mut iter = input.iter_mut().peekable(); + let mut jolt = 0; + let mut diff = (0, 0); + while iter.len() > 0 { + if let Some(next) = iter.peek() { + if !(jolt + 1..=jolt + 3).contains(*next) { + break; + } + } + let adapter = iter.next().unwrap(); + match *adapter - jolt { + 1 => diff.0 += 1, + 3 => diff.1 += 1, + _ => (), + } + jolt = *adapter; + } + let (one_jolt, three_jolt) = diff; + Ok(one_jolt * three_jolt) +} + +#[cfg(test)] +mod tests { + use crate::parse_input; + + use super::*; + + const EXAMPLE_DATA: &'static str = " + 16 + 10 + 15 + 5 + 1 + 11 + 7 + 19 + 6 + 12 + 4 + "; + + #[test] + fn it_gets_the_example_correct() -> Result<()> { + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 35); + Ok(()) + } +} diff --git a/day_10/src/part_02.rs b/day_10/src/part_02.rs new file mode 100644 index 0000000..4902913 --- /dev/null +++ b/day_10/src/part_02.rs @@ -0,0 +1,105 @@ +use std::{collections::HashMap, io::Result}; + +use crate::Input; + +fn naive_recursion( + jolt: u64, + index: usize, + adapters: &Vec, + memo: &mut HashMap, +) -> u64 { + let len = adapters.len(); + if len == index { + return 1; + } + + if let Some(c) = memo.get(&jolt) { + return *c; + } + + let combinations = (index..=index + 3) + .filter(|i| i < &len) + .map(|i| (i, *adapters.get(i).unwrap())) + .filter(|(_, adapter)| *adapter <= jolt + 3) + .map(|(i, adapter)| naive_recursion(adapter, i + 1, adapters, memo)) + .sum(); + memo.insert(jolt, combinations); + combinations +} + +pub fn main(input: &Input) -> Result { + let mut adapters: Vec<_> = input.iter().map(|adapter| *adapter as u64).collect(); + + adapters.sort(); + adapters.push(*adapters.last().unwrap() + 3); + + let mut memo = HashMap::new(); + Ok(naive_recursion(0, 0, &adapters, &mut memo)) +} + +#[cfg(test)] +mod tests { + use crate::parse_input; + + use super::*; + + const SHORT_EXAMPLE_DATA: &'static str = " + 16 + 10 + 15 + 5 + 1 + 11 + 7 + 19 + 6 + 12 + 4 + "; + + #[test] + fn it_gets_the_first_example_correct() -> Result<()> { + assert_eq!(main(&parse_input(&SHORT_EXAMPLE_DATA))?, 8); + Ok(()) + } + + const LONGER_EXAMPLE_DATA: &'static str = " + 28 + 33 + 18 + 42 + 31 + 14 + 46 + 20 + 48 + 47 + 24 + 23 + 49 + 45 + 19 + 38 + 39 + 11 + 1 + 32 + 25 + 35 + 8 + 17 + 7 + 9 + 4 + 2 + 34 + 10 + 3 + "; + + #[test] + fn it_gets_the_longer_example_correct() -> Result<()> { + assert_eq!(main(&parse_input(&LONGER_EXAMPLE_DATA))?, 19208); + Ok(()) + } +} diff --git a/day_11/Cargo.toml b/day_11/Cargo.toml new file mode 100644 index 0000000..de08216 --- /dev/null +++ b/day_11/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "day_11" +version = "0.1.0" +edition = "2018" +authors = ["Dennis Pettersson "] + +[lib] +doctest = false + +[[bin]] +name = "day_11" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/day_11/src/lib.rs b/day_11/src/lib.rs new file mode 100644 index 0000000..8b75847 --- /dev/null +++ b/day_11/src/lib.rs @@ -0,0 +1,54 @@ +use std::collections::BTreeMap; + +pub mod part_01; +pub mod part_02; +pub mod tile; +pub mod x_y; + +use tile::Tile; + +pub type Input = BTreeMap<(usize, usize), Tile>; + +pub fn parse_input(input: &str) -> Input { + input + .lines() + .map(str::trim) + .filter(|string| !string.is_empty()) + .enumerate() + .map(|(y, string)| { + string + .chars() + .enumerate() + .map(|(x, position)| ((x, y), Tile::new(&position))) + .collect::>() + }) + .flatten() + .collect() +} + +#[cfg(test)] +mod tests { + use super::*; + + use tile::Tile::*; + + const EXAMPLE_DATA: &'static str = " + L.L + #.L + "; + + #[test] + fn it_parses_example() { + let expected: Input = vec![ + ((0, 0), Empty), + ((1, 0), Floor), + ((2, 0), Empty), + ((0, 1), Occupied), + ((1, 1), Floor), + ((2, 1), Empty), + ] + .into_iter() + .collect(); + assert_eq!(parse_input(&EXAMPLE_DATA), expected); + } +} diff --git a/day_11/src/main.rs b/day_11/src/main.rs new file mode 100644 index 0000000..539bdf7 --- /dev/null +++ b/day_11/src/main.rs @@ -0,0 +1,12 @@ +use std::io::Result; + +use day_11::{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_11")); + + println!("part_01: {:?}", part_01(&input)?); + println!("part_02: {:?}", part_02(&input)?); + + Ok(()) +} diff --git a/day_11/src/part_01.rs b/day_11/src/part_01.rs new file mode 100644 index 0000000..09522dd --- /dev/null +++ b/day_11/src/part_01.rs @@ -0,0 +1,78 @@ +use std::{io::Result, mem::replace}; + +use crate::{ + tile::Tile::*, + x_y::{iterate_x_y, max_x_y, DIRECTIONS}, + Input, +}; + +fn occupied_adjacent_seats(tiles: &Input, x: usize, y: usize) -> usize { + DIRECTIONS + .iter() + .filter(|(dx, dy)| { + let x = (x as isize) + dx; + let y = (y as isize) + dy; + match tiles.get(&(x as usize, y as usize)) { + Some(Occupied) => true, + _ => false, + } + }) + .count() +} + +pub fn main(input: &Input) -> Result { + let mut tiles = input.clone(); + let (max_x, max_y) = max_x_y(&input); + + loop { + let mut modified_tiles = tiles.clone(); + + iterate_x_y(max_x, max_y, |x, y| { + let current_tile = tiles.get(&(x, y)).unwrap(); + if current_tile == &Floor { + return; + } + + let occupied_seats = occupied_adjacent_seats(&tiles, x, y); + if current_tile == &Occupied && occupied_seats >= 4 { + modified_tiles.insert((x, y), Empty); + } else if current_tile == &Empty && occupied_seats == 0 { + modified_tiles.insert((x, y), Occupied); + } + }); + + if modified_tiles == tiles { + break; + } + + let _ = replace(&mut tiles, modified_tiles); + } + + Ok(tiles.iter().filter(|(_, tile)| tile == &&Occupied).count()) +} + +#[cfg(test)] +mod tests { + use crate::parse_input; + + use super::*; + + const EXAMPLE_DATA: &'static str = " + L.LL.LL.LL + LLLLLLL.LL + L.L.L..L.. + LLLL.LL.LL + L.LL.LL.LL + L.LLLLL.LL + ..L.L..... + LLLLLLLLLL + L.LLLLLL.L + L.LLLLL.LL + "; + + #[test] + fn it_gets_the_example_correct() -> Result<()> { + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 37); + Ok(()) + } +} diff --git a/day_11/src/part_02.rs b/day_11/src/part_02.rs new file mode 100644 index 0000000..1d38bde --- /dev/null +++ b/day_11/src/part_02.rs @@ -0,0 +1,89 @@ +use std::{io::Result, mem::replace}; + +use crate::{ + tile::Tile::*, + x_y::{iterate_x_y, max_x_y, DIRECTIONS}, + Input, +}; + +fn occupied_adjacent_seats(tiles: &Input, x: usize, y: usize) -> usize { + let (x, y) = (x as isize, y as isize); + let as_usize = |x, y| (x as usize, y as usize); + let is_floor = |x, y| match tiles.get(&as_usize(x, y)) { + Some(Floor) => true, + _ => false, + }; + let is_occupied = |x, y| match tiles.get(&as_usize(x, y)) { + Some(Occupied) => true, + _ => false, + }; + DIRECTIONS + .iter() + .filter(|(dx, dy)| { + let mut nx = x + dx; + let mut ny = y + dy; + while is_floor(nx, ny) { + nx += dx; + ny += dy; + } + is_occupied(nx, ny) + }) + .count() +} + +pub fn main(input: &Input) -> Result { + let mut tiles = input.clone(); + let (max_x, max_y) = max_x_y(&tiles); + + loop { + let mut modified_tiles = tiles.clone(); + + iterate_x_y(max_x, max_y, |x, y| { + let current_tile = tiles.get(&(x, y)).unwrap(); + if current_tile == &Floor { + return; + } + + let occupied_seats = occupied_adjacent_seats(&tiles, x, y); + if current_tile == &Occupied && occupied_seats >= 5 { + modified_tiles.insert((x, y), Empty); + } else if current_tile == &Empty && occupied_seats == 0 { + modified_tiles.insert((x, y), Occupied); + } + }); + + if modified_tiles == tiles { + break; + } + + let _ = replace(&mut tiles, modified_tiles); + } + + Ok(tiles.iter().filter(|(_, tile)| tile == &&Occupied).count()) +} + +#[cfg(test)] +mod tests { + use crate::parse_input; + + use super::*; + + const EXAMPLE_DATA: &'static str = " + L.LL.LL.LL + LLLLLLL.LL + L.L.L..L.. + LLLL.LL.LL + L.LL.LL.LL + L.LLLLL.LL + ..L.L..... + LLLLLLLLLL + L.LLLLLL.L + L.LLLLL.LL + "; + + #[test] + fn it_gets_the_example_correct() -> Result<()> { + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 26); + Ok(()) + } +} diff --git a/day_11/src/tile.rs b/day_11/src/tile.rs new file mode 100644 index 0000000..6931ee4 --- /dev/null +++ b/day_11/src/tile.rs @@ -0,0 +1,18 @@ +#[derive(Debug, Copy, Clone, Eq, PartialEq)] +pub enum Tile { + Floor, + Empty, + Occupied, +} + +use Tile::*; + +impl Tile { + pub fn new(input: &char) -> Self { + match input { + '#' => Occupied, + 'L' => Empty, + _ => Floor, + } + } +} diff --git a/day_11/src/x_y.rs b/day_11/src/x_y.rs new file mode 100644 index 0000000..42d1cc4 --- /dev/null +++ b/day_11/src/x_y.rs @@ -0,0 +1,30 @@ +use crate::Input; + +pub const DIRECTIONS: [(isize, isize); 8] = [ + (-1, -1), + (0, -1), + (1, -1), + (-1, 0), + (1, 0), + (-1, 1), + (0, 1), + (1, 1), +]; + +pub fn max_x_y(input: &Input) -> (usize, usize) { + let max_x = *input.iter().map(|((x, _), _)| x).max().unwrap() + 1; + let max_y = *input.iter().map(|((_, y), _)| y).max().unwrap() + 1; + + (max_x, max_y) +} + +pub fn iterate_x_y(max_x: usize, max_y: usize, mut call: F) +where + F: FnMut(usize, usize) -> (), +{ + for y in 0..max_y { + for x in 0..max_x { + call(x, y) + } + } +} diff --git a/day_12/Cargo.toml b/day_12/Cargo.toml new file mode 100644 index 0000000..8bc6bbc --- /dev/null +++ b/day_12/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "day_12" +version = "0.1.0" +edition = "2018" +authors = ["Dennis Pettersson "] + +[lib] +doctest = false + +[[bin]] +name = "day_12" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/day_12/src/action.rs b/day_12/src/action.rs new file mode 100644 index 0000000..9c78ada --- /dev/null +++ b/day_12/src/action.rs @@ -0,0 +1,26 @@ +#[derive(Debug, Eq, PartialEq)] +pub enum Action { + North, + South, + East, + West, + Left, + Right, + Forward, +} + +use Action::*; + +impl Action { + pub fn new(input: char) -> Self { + match input { + 'N' => North, + 'S' => South, + 'E' => East, + 'W' => West, + 'L' => Left, + 'R' => Right, + 'F' | _ => Forward, + } + } +} diff --git a/day_12/src/direction.rs b/day_12/src/direction.rs new file mode 100644 index 0000000..3bcc4bf --- /dev/null +++ b/day_12/src/direction.rs @@ -0,0 +1,39 @@ +use crate::action::Action; + +#[derive(Clone, Copy, Eq, PartialEq, Hash, Debug)] +pub enum Direction { + Up, + Down, + Left, + Right, +} + +use Direction::*; + +impl Direction { + pub fn turn(&mut self, action: &Action, turns: u16) -> Direction { + for _ in 0..turns { + *self = match action { + Action::Left => match self { + Up => Left, + Left => Down, + Down => Right, + Right => Up, + }, + Action::Right | _ => match self { + Up => Right, + Right => Down, + Down => Left, + Left => Up, + }, + }; + } + self.clone() + } +} + +impl Default for Direction { + fn default() -> Self { + Direction::Right + } +} diff --git a/day_12/src/facing.rs b/day_12/src/facing.rs new file mode 100644 index 0000000..fc15f26 --- /dev/null +++ b/day_12/src/facing.rs @@ -0,0 +1,20 @@ +use crate::action::Action::{self, *}; + +#[derive(Clone, Copy, Eq, PartialEq, Hash, Debug)] +pub enum Facing { + East, + West, + North, + South, +} + +impl Facing { + pub fn from(action: Action) -> Self { + match action { + North => Self::North, + West => Self::West, + South => Self::South, + East | _ => Self::East, + } + } +} diff --git a/day_12/src/lib.rs b/day_12/src/lib.rs new file mode 100644 index 0000000..92686e8 --- /dev/null +++ b/day_12/src/lib.rs @@ -0,0 +1,44 @@ +pub mod action; +pub mod direction; +pub mod facing; +pub mod manhattan; +pub mod point; +pub mod ship; + +pub mod part_01; +pub mod part_02; + +use action::Action; + +pub type Input = Vec<(Action, u16)>; + +pub fn parse_input(input: &str) -> Input { + input + .lines() + .map(str::trim) + .filter(|string| !string.is_empty()) + .map(|string| string.chars().collect::>()) + .map(|chars| { + let action = Action::new(chars[0]); + let values: String = chars[1..].into_iter().collect(); + (action, values.parse::<_>().unwrap_or(0)) + }) + .collect() +} + +#[cfg(test)] +mod tests { + use super::*; + + use crate::Action::*; + + const EXAMPLE_DATA: &'static str = " + F10 + N3 + "; + + #[test] + fn it_parses_example() { + assert_eq!(parse_input(&EXAMPLE_DATA), vec![(Forward, 10), (North, 3)]); + } +} diff --git a/day_12/src/main.rs b/day_12/src/main.rs new file mode 100644 index 0000000..d085f1e --- /dev/null +++ b/day_12/src/main.rs @@ -0,0 +1,12 @@ +use std::io::Result; + +use day_12::{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_12")); + + println!("part_01: {:?}", part_01(&input)?); + println!("part_02: {:?}", part_02(&input)?); + + Ok(()) +} diff --git a/day_12/src/manhattan.rs b/day_12/src/manhattan.rs new file mode 100644 index 0000000..0e14757 --- /dev/null +++ b/day_12/src/manhattan.rs @@ -0,0 +1,5 @@ +use crate::point::Point; + +pub fn manhattan(point: Point, current: Point) -> u64 { + ((point.x as i64 - current.x as i64).abs() + (point.y as i64 - current.y as i64).abs()) as u64 +} diff --git a/day_12/src/part_01.rs b/day_12/src/part_01.rs new file mode 100644 index 0000000..c994329 --- /dev/null +++ b/day_12/src/part_01.rs @@ -0,0 +1,29 @@ +use std::io::Result; + +use crate::{manhattan::manhattan, point::Point, ship::Ship, Input}; + +pub fn main(input: &Input) -> Result { + let point = Ship::default().follow_instructions(&input); + Ok(manhattan(Point { x: 0, y: 0 }, point)) +} + +#[cfg(test)] +mod tests { + use crate::parse_input; + + use super::*; + + const EXAMPLE_DATA: &'static str = " + F10 + N3 + F7 + R90 + F11 + "; + + #[test] + fn it_gets_the_example_correct() -> Result<()> { + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 25); + Ok(()) + } +} diff --git a/day_12/src/part_02.rs b/day_12/src/part_02.rs new file mode 100644 index 0000000..f71862b --- /dev/null +++ b/day_12/src/part_02.rs @@ -0,0 +1,29 @@ +use std::io::Result; + +use crate::{manhattan::manhattan, point::Point, ship::Ship, Input}; + +pub fn main(input: &Input) -> Result { + let point = Ship::default().follow_waypoint(&input); + Ok(manhattan(Point { x: 0, y: 0 }, point)) +} + +#[cfg(test)] +mod tests { + use crate::parse_input; + + use super::*; + + const EXAMPLE_DATA: &'static str = " + F10 + N3 + F7 + R90 + F11 + "; + + #[test] + fn it_gets_the_example_correct() -> Result<()> { + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 286); + Ok(()) + } +} diff --git a/day_12/src/point.rs b/day_12/src/point.rs new file mode 100644 index 0000000..e75713d --- /dev/null +++ b/day_12/src/point.rs @@ -0,0 +1,11 @@ +#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, Default)] +pub struct Point { + pub x: isize, + pub y: isize, +} + +impl Point { + pub fn new() -> Self { + Self { ..Point::default() } + } +} diff --git a/day_12/src/ship.rs b/day_12/src/ship.rs new file mode 100644 index 0000000..d5fea0d --- /dev/null +++ b/day_12/src/ship.rs @@ -0,0 +1,114 @@ +use crate::{ + action::Action::{self, *}, + direction::Direction, + point::Point, + Input, +}; + +#[derive(Clone, Copy, Eq, PartialEq, Hash, Debug)] +pub struct Ship { + facing: Direction, + x: isize, + y: isize, + waypoint: Point, +} + +impl Default for Ship { + fn default() -> Self { + Self { + facing: Direction::Right, + x: 0, + y: 0, + waypoint: Point { x: 10, y: -1 }, + } + } +} + +impl Ship { + pub fn follow_instructions(mut self, input: &Input) -> Point { + for (action, value) in input { + match action { + North | South | East | West => self.directional_move(action, value), + Left | Right => self.turn(action, value), + Forward => self.forward(value), + } + } + self.point() + } + + pub fn follow_waypoint(mut self, input: &Input) -> Point { + for (action, value) in input { + match action { + North | South | East | West => self.move_waypoint(action, value), + Left | Right => self.rotate_waypoint(action, value), + Forward => self.move_towards_waypoint(value), + } + } + self.point() + } + + fn point(self) -> Point { + Point { + x: self.x, + y: self.y, + } + } + + fn directional_move(&mut self, action: &Action, value: &u16) { + let value = value.to_owned() as isize; + match action { + North => self.y -= value, + East => self.x += value, + South => self.y += value, + West | _ => self.x -= value, + } + } + + fn move_waypoint(&mut self, action: &Action, value: &u16) { + let value = value.to_owned() as isize; + match action { + North => self.waypoint.y -= value, + South => self.waypoint.y += value, + East => self.waypoint.x += value, + West | _ => self.waypoint.x -= value, + }; + } + + fn turn(&mut self, action: &Action, value: &u16) { + let turns = ((*value as f32) / 90.0).floor() as u16; + self.facing.turn(action, turns); + } + + fn rotate_waypoint(&mut self, action: &Action, value: &u16) { + let degrees = *value; + let (x, y) = (self.waypoint.x, self.waypoint.y); + + let clockwise = action == &Action::Right; + let degrees = if clockwise { 360 - degrees } else { degrees }; + + self.waypoint = match degrees { + 270 => Point { x: -y, y: x }, + 180 => Point { x: -x, y: -y }, + 90 => Point { x: y, y: -x }, + 0 | _ => Point { x, y }, + } + } + + fn forward(&mut self, value: &u16) { + let value = value.to_owned() as isize; + match self.facing { + Direction::Up => self.y -= value, + Direction::Left => self.x -= value, + Direction::Down => self.y += value, + Direction::Right => self.x += value, + } + } + + fn move_towards_waypoint(&mut self, value: &u16) { + let value = value.to_owned() as isize; + let (x, y) = (self.waypoint.x, self.waypoint.y); + let (nx, ny) = (x * value, y * value); + self.x += nx; + self.y += ny; + } +} diff --git a/day_13/Cargo.toml b/day_13/Cargo.toml new file mode 100644 index 0000000..8dcdba1 --- /dev/null +++ b/day_13/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "day_13" +version = "0.1.0" +edition = "2018" +authors = ["Dennis Pettersson "] + +[lib] +doctest = false + +[[bin]] +name = "day_13" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/day_13/src/chinese_remainder.rs b/day_13/src/chinese_remainder.rs new file mode 100644 index 0000000..557b76d --- /dev/null +++ b/day_13/src/chinese_remainder.rs @@ -0,0 +1,29 @@ +// https://rosettacode.org/wiki/Chinese_remainder_theorem#Rust + +fn egcd(a: i64, b: i64) -> (i64, i64, i64) { + if a == 0 { + (b, 0, 1) + } else { + let (g, x, y) = egcd(b % a, a); + (g, y - (b / a) * x, x) + } +} + +fn mod_inv(x: i64, n: i64) -> Option { + let (g, x, _) = egcd(x, n); + if g == 1 { + Some((x % n + n) % n) + } else { + None + } +} + +pub fn chinese_remainder(residues: &[i64], modulii: &[i64]) -> Option { + let prod = modulii.iter().product::(); + let mut sum = 0; + for (&residue, &modulus) in residues.iter().zip(modulii) { + let p = prod / modulus; + sum += residue * mod_inv(p, modulus)? * p + } + Some(sum % prod) +} diff --git a/day_13/src/lib.rs b/day_13/src/lib.rs new file mode 100644 index 0000000..bd32167 --- /dev/null +++ b/day_13/src/lib.rs @@ -0,0 +1,65 @@ +pub mod chinese_remainder; +pub mod part_01; +pub mod part_02; + +pub type Input = (u64, Vec>); + +pub fn parse_input(input: &str) -> Input { + let mut input = input + .lines() + .map(str::trim) + .filter(|string| !string.is_empty()) + .map(str::to_owned) + .into_iter(); + + let earliest = input + .next() + .unwrap_or("".to_string()) + .parse::<_>() + .unwrap_or(0); + + let busses = input.next().unwrap_or("".to_string()); + let busses = busses + .split(",") + .into_iter() + .map(|string| { + if string == "x" { + None + } else { + Some(string.parse::<_>().unwrap_or(0)) + } + }) + .collect::>(); + + (earliest, busses) +} + +#[cfg(test)] +mod tests { + use super::*; + + const EXAMPLE_DATA: &'static str = " + 939 + 7,13,x,x,59,x,31,19 + "; + + #[test] + fn it_parses_example() { + assert_eq!( + parse_input(&EXAMPLE_DATA), + ( + 939, + vec![ + Some(7), + Some(13), + None, + None, + Some(59), + None, + Some(31), + Some(19) + ] + ) + ); + } +} diff --git a/day_13/src/main.rs b/day_13/src/main.rs new file mode 100644 index 0000000..ca59b5e --- /dev/null +++ b/day_13/src/main.rs @@ -0,0 +1,12 @@ +use std::io::Result; + +use day_13::{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_13")); + + println!("part_01: {:?}", part_01(&input)?); + println!("part_02: {:?}", part_02(&input)?); + + Ok(()) +} diff --git a/day_13/src/part_01.rs b/day_13/src/part_01.rs new file mode 100644 index 0000000..67cc1ce --- /dev/null +++ b/day_13/src/part_01.rs @@ -0,0 +1,39 @@ +use std::io::Result; + +use crate::Input; + +pub fn main((earliest, busses): &Input) -> Result { + let earliest = *earliest; + let busses = busses + .iter() + .filter(|bus| bus.is_some()) + .map(|bus| bus.unwrap()) + .collect::>(); + + let mut result = 0; + for timestamp in earliest.. { + if let Some(bus_id) = busses.iter().find(|bus_id| timestamp % **bus_id == 0) { + result = *bus_id * (timestamp - earliest); + break; + } + } + Ok(result) +} + +#[cfg(test)] +mod tests { + use crate::parse_input; + + use super::*; + + const EXAMPLE_DATA: &'static str = " + 939 + 7,13,x,x,59,x,31,19 + "; + + #[test] + fn it_gets_the_example_correct() -> Result<()> { + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 295); + Ok(()) + } +} diff --git a/day_13/src/part_02.rs b/day_13/src/part_02.rs new file mode 100644 index 0000000..77aa8e3 --- /dev/null +++ b/day_13/src/part_02.rs @@ -0,0 +1,33 @@ +use std::io::Result; + +use crate::{chinese_remainder::chinese_remainder, Input}; + +pub fn main((_, busses): &Input) -> Result { + let busses = busses + .iter() + .enumerate() + .filter(|(_, bus)| bus.is_some()) + .map(|(i, bus)| (i as i64, bus.unwrap_or(0) as i64)) + .collect::>(); + let mods = busses.iter().map(|&(_, b)| b).collect::>(); + let res = busses.iter().map(|&(i, b)| b - i).collect::>(); + Ok(chinese_remainder(&res, &mods).unwrap()) +} + +#[cfg(test)] +mod tests { + use crate::parse_input; + + use super::*; + + #[test] + fn it_gets_the_example_correct() -> Result<()> { + assert_eq!(main(&parse_input("0\n7,13,x,x,59,x,31,19"))?, 1068781); + assert_eq!(main(&parse_input("0\n17,x,13,19"))?, 3417); + assert_eq!(main(&parse_input("0\n67,7,59,61"))?, 754018); + assert_eq!(main(&parse_input("0\n67,x,7,59,61"))?, 779210); + assert_eq!(main(&parse_input("0\n67,7,x,59,61"))?, 1261476); + assert_eq!(main(&parse_input("0\n1789,37,47,1889"))?, 1202161486); + Ok(()) + } +} diff --git a/day_14/Cargo.toml b/day_14/Cargo.toml new file mode 100644 index 0000000..fbf397b --- /dev/null +++ b/day_14/Cargo.toml @@ -0,0 +1,16 @@ +[package] +name = "day_14" +version = "0.1.0" +edition = "2018" +authors = ["Dennis Pettersson "] + +[lib] +doctest = false + +[[bin]] +name = "day_14" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +itertools = "0.9.0" diff --git a/day_14/src/lib.rs b/day_14/src/lib.rs new file mode 100644 index 0000000..8eb1028 --- /dev/null +++ b/day_14/src/lib.rs @@ -0,0 +1,57 @@ +extern crate itertools; + +pub mod part_01; +pub mod part_02; +pub mod program; + +use program::Key::{self, *}; + +pub type Input = Vec<(Key, String)>; + +pub fn parse_input(input: &str) -> Input { + input + .lines() + .map(str::trim) + .filter(|string| !string.is_empty()) + .map(|string| { + let mut split = string.split(&" = "); + let key = split.next().unwrap_or(""); + let value = split.next().unwrap_or("").to_string(); + ( + if key.starts_with(&"mem") { + let key = key.replace("]", ""); + let (_, key) = key.split_at(4); + Mem(key.parse::().unwrap()) + } else { + Mask + }, + value, + ) + }) + .collect() +} + +#[cfg(test)] +mod tests { + use super::*; + + const EXAMPLE_DATA: &'static str = " + mask = XXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXX0X + mem[8] = 11 + mem[7] = 101 + mem[8] = 0 + "; + + #[test] + fn it_parses_example() { + assert_eq!( + parse_input(&EXAMPLE_DATA), + vec![ + (Mask, "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXX0X".to_string()), + (Mem(8), "11".to_string()), + (Mem(7), "101".to_string()), + (Mem(8), "0".to_string()) + ] + ); + } +} diff --git a/day_14/src/main.rs b/day_14/src/main.rs new file mode 100644 index 0000000..243bd0b --- /dev/null +++ b/day_14/src/main.rs @@ -0,0 +1,12 @@ +use std::io::Result; + +use day_14::{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_14")); + + println!("part_01: {:?}", part_01(&input)?); + println!("part_02: {:?}", part_02(&input)?); + + Ok(()) +} diff --git a/day_14/src/part_01.rs b/day_14/src/part_01.rs new file mode 100644 index 0000000..6f25b56 --- /dev/null +++ b/day_14/src/part_01.rs @@ -0,0 +1,27 @@ +use std::io::Result; + +use crate::{program::Program, Input}; + +pub fn main(input: &Input) -> Result { + Ok(Program::new().part_01(input)) +} + +#[cfg(test)] +mod tests { + use crate::parse_input; + + use super::*; + + const EXAMPLE_DATA: &'static str = " + mask = XXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXX0X + mem[8] = 11 + mem[7] = 101 + mem[8] = 0 + "; + + #[test] + fn it_gets_the_example_correct() -> Result<()> { + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 165); + Ok(()) + } +} diff --git a/day_14/src/part_02.rs b/day_14/src/part_02.rs new file mode 100644 index 0000000..60cd45c --- /dev/null +++ b/day_14/src/part_02.rs @@ -0,0 +1,27 @@ +use std::io::Result; + +use crate::{program::Program, Input}; + +pub fn main(input: &Input) -> Result { + Ok(Program::new().part_02(input)) +} + +#[cfg(test)] +mod tests { + use crate::parse_input; + + use super::*; + + const EXAMPLE_DATA: &'static str = " + mask = 000000000000000000000000000000X1001X + mem[42] = 100 + mask = 00000000000000000000000000000000X0XX + mem[26] = 1 + "; + + #[test] + fn it_gets_the_example_correct() -> Result<()> { + assert_eq!(main(&parse_input(&EXAMPLE_DATA))?, 208); + Ok(()) + } +} diff --git a/day_14/src/program.rs b/day_14/src/program.rs new file mode 100644 index 0000000..2780d33 --- /dev/null +++ b/day_14/src/program.rs @@ -0,0 +1,102 @@ +use itertools::Itertools; + +use std::collections::HashMap; + +use crate::Input; + +#[derive(Debug, Hash, Eq, PartialEq, Clone, Copy)] +pub enum Key { + Mask, + Mem(usize), +} + +use Key::*; + +#[derive(Debug, Eq, PartialEq, Clone, Default)] +pub struct Program { + memory: HashMap, + mask: String, +} + +impl Program { + fn sum(&self) -> u64 { + self.memory.values().sum() + } + + pub fn new() -> Self { + Self { + ..Program::default() + } + } + + fn get_value(&self, value: &str) -> u64 { + let value = value.parse::().unwrap_or(0); + let bin_idx = format!("{:0>36b}", value) + .chars() + .zip(self.mask.chars()) + .map(|(b, mask)| { + let b = if b == '0' { 0 } else { 1 }; + let n = match mask { + '0' => b & 0, + '1' => b | 1, + _ => b, + }; + n.to_string() + }) + .collect::(); + u64::from_str_radix(&bin_idx, 2).unwrap() + } + + pub fn part_01(&mut self, input: &Input) -> u64 { + for (key, value) in input { + match key { + &Mask => { + self.mask = value.to_string(); + } + &Mem(index) => { + *self.memory.entry(index).or_insert(0) = self.get_value(value); + } + } + } + + self.sum() + } + + fn get_combinations<'a>(&self, index: &usize) -> Vec { + format!("{:0>36b}", index) + .chars() + .zip(self.mask.chars()) + .map(|(b, mask)| { + let b = if b == '0' { 0 } else { 1 }; + match mask { + '0' => vec![b], + '1' => vec![1], + _ => vec![0, 1], + } + }) + .map(IntoIterator::into_iter) + .multi_cartesian_product() + .map(|vec| { + let string = vec.iter().map(|i| i.to_string()).collect::(); + usize::from_str_radix(&string, 2).unwrap() + }) + .collect::>() + } + + pub fn part_02(&mut self, input: &Input) -> u64 { + for (key, value) in input { + match key { + &Mask => { + self.mask = value.to_string(); + } + &Mem(index) => { + let value = value.parse::().unwrap_or(0); + for index in self.get_combinations(&index) { + *self.memory.entry(index).or_insert(0) = value; + } + } + } + } + self.sum() + } +} diff --git a/day_15/Cargo.toml b/day_15/Cargo.toml new file mode 100644 index 0000000..07a8a5c --- /dev/null +++ b/day_15/Cargo.toml @@ -0,0 +1,15 @@ +[package] +name = "day_15" +version = "0.1.0" +edition = "2018" +authors = ["Dennis Pettersson "] + +[lib] +doctest = false + +[[bin]] +name = "day_15" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/day_15/src/lib.rs b/day_15/src/lib.rs new file mode 100644 index 0000000..65d5bd4 --- /dev/null +++ b/day_15/src/lib.rs @@ -0,0 +1,34 @@ +pub mod memory_game; +pub mod part_01; +pub mod part_02; + +pub type Input = Vec; + +pub fn parse_input(input: &str) -> Input { + input + .lines() + .map(str::trim) + .filter(|string| !string.is_empty()) + .map(|string| { + string + .split(",") + .map(|n| n.parse::<_>().unwrap_or(0)) + .collect::>() + }) + .flatten() + .collect() +} + +#[cfg(test)] +mod tests { + use super::*; + + const EXAMPLE_DATA: &'static str = " + 0,3,6 + "; + + #[test] + fn it_parses_example() { + assert_eq!(parse_input(&EXAMPLE_DATA), vec![0, 3, 6]); + } +} diff --git a/day_15/src/main.rs b/day_15/src/main.rs new file mode 100644 index 0000000..df8b7f8 --- /dev/null +++ b/day_15/src/main.rs @@ -0,0 +1,12 @@ +use std::io::Result; + +use day_15::{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_15")); + + println!("part_01: {:?}", part_01(&input)?); + println!("part_02: {:?}", part_02(&input)?); + + Ok(()) +} diff --git a/day_15/src/memory_game.rs b/day_15/src/memory_game.rs new file mode 100644 index 0000000..2d80067 --- /dev/null +++ b/day_15/src/memory_game.rs @@ -0,0 +1,53 @@ +use std::collections::HashMap; + +use crate::Input; + +pub fn play(input: &Input, iterations: usize) -> u64 { + let mut spoken: HashMap, Option)> = HashMap::new(); + + for (index, number) in input.iter().enumerate() { + spoken.insert(*number, (Some(index), None)); + } + + let mut last_number_spoken = input.iter().last().unwrap_or(&0).to_owned(); + for index in input.len()..iterations { + let (last_time_spoken, previous_time_before) = spoken + .get(&last_number_spoken) + .unwrap_or(&(None, None)) + .to_owned(); + + if last_time_spoken.is_none() || previous_time_before.is_none() { + last_number_spoken = 0; + } else { + let last_time_spoken = last_time_spoken.unwrap(); + let previous_time_before = previous_time_before.unwrap(); + last_number_spoken = (last_time_spoken - previous_time_before) as u64; + } + + match spoken.entry(last_number_spoken).or_insert((None, None)) { + entry => { + entry.1 = entry.0; + entry.0 = Some(index); + } + }; + } + + last_number_spoken +} + +#[cfg(test)] +mod tests { + use crate::parse_input; + + use super::*; + + #[test] + fn it_gets_the_examples_correct() { + assert_eq!(play(&parse_input("1,3,2"), 2020), 1); + assert_eq!(play(&parse_input("2,1,3"), 2020), 10); + assert_eq!(play(&parse_input("1,2,3"), 2020), 27); + assert_eq!(play(&parse_input("2,3,1"), 2020), 78); + assert_eq!(play(&parse_input("3,2,1"), 2020), 438); + assert_eq!(play(&parse_input("3,1,2"), 2020), 1836); + } +} diff --git a/day_15/src/part_01.rs b/day_15/src/part_01.rs new file mode 100644 index 0000000..ecb73e8 --- /dev/null +++ b/day_15/src/part_01.rs @@ -0,0 +1,20 @@ +use std::io::Result; + +use crate::{memory_game::play, Input}; + +pub fn main(input: &Input) -> Result { + Ok(play(input, 2020)) +} + +#[cfg(test)] +mod tests { + use crate::parse_input; + + use super::*; + + #[test] + fn it_gets_the_example_correct() -> Result<()> { + assert_eq!(main(&parse_input("0,3,6"))?, 436); + Ok(()) + } +} diff --git a/day_15/src/part_02.rs b/day_15/src/part_02.rs new file mode 100644 index 0000000..68a9d4f --- /dev/null +++ b/day_15/src/part_02.rs @@ -0,0 +1,31 @@ +use std::io::Result; + +use crate::{memory_game::play, Input}; + +pub fn main(input: &Input) -> Result { + Ok(play(input, 30000000)) +} + +#[cfg(test)] +mod tests { + use crate::parse_input; + + use super::*; + + #[test] + fn it_gets_the_first_example_correct() -> Result<()> { + assert_eq!(main(&parse_input("0,3,6"))?, 175594); + Ok(()) + } + + #[test] + fn it_gets_the_rest_correct() -> Result<()> { + assert_eq!(main(&parse_input("1,3,2"))?, 2578); + assert_eq!(main(&parse_input("2,1,3"))?, 3544142); + assert_eq!(main(&parse_input("1,2,3"))?, 261214); + assert_eq!(main(&parse_input("2,3,1"))?, 6895259); + assert_eq!(main(&parse_input("3,2,1"))?, 18); + assert_eq!(main(&parse_input("3,1,2"))?, 362); + Ok(()) + } +} diff --git a/input/day_01 b/input/day_01 index fe669c4..2462e3a 100644 --- a/input/day_01 +++ b/input/day_01 @@ -1,1000 +1,200 @@ -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 +1789 +1818 +1729 +1578 +1927 +751 +1772 +1521 +1850 +1438 +1855 +1334 +1878 +1290 +1678 +1847 +1495 +1538 +1403 +1797 +1906 +1770 +1963 +1370 +1684 +1328 +1544 +1528 +1871 +2010 +1999 +1347 +1760 +1903 +1860 +1468 +1511 +1477 +1668 +1979 +1358 +1298 +1493 +1459 +1382 +2001 +1394 +1681 +1515 +1948 +1991 +1775 +1661 +1786 +1966 +1506 +1853 +1373 +1454 +1462 +1830 +1964 +1442 +1455 +2008 +1854 +1763 +1758 +1751 +1460 +1630 +1487 +1360 +1793 +1590 +1940 +1388 +1313 +1408 +1429 +1725 +1397 +1941 +1974 +1788 +1473 +1913 +664 +1989 +1490 +1778 +1726 +1366 +2005 +1449 +1924 +1926 +1769 +1314 +1636 +1780 +1546 +1647 +1856 +320 +396 +1595 +1867 +1602 +1699 +1367 +1876 +1662 +1686 +1581 +1697 +1938 +1400 +720 +1808 +1625 +1439 +1734 +2003 +1718 +1879 +1864 +1811 +1309 +721 +1607 +1814 +1484 +1869 +1736 +1507 +1437 +1894 +1561 +2004 +269 +1942 +1915 +1767 +1562 +1364 +1783 +1863 +1601 +1323 +182 +1985 +1722 +1545 +1774 +1552 +1742 +1790 +1874 +1583 +1308 +1441 +1463 +1503 +1447 +1540 +1953 +1371 +1331 +1688 +1905 +1815 +1799 +811 +1446 +1374 +1936 +1665 +1433 +1551 +1806 +1674 +1784 +1596 +1704 +1393 +1691 +1567 +1335 +593 +1509 +1986 +1297 +1419 +1418 +1339 +1745 +1930 +1514 +1706 diff --git a/input/day_02 b/input/day_02 index 7370319..2da5b54 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 +2-6 c: fcpwjqhcgtffzlbj +6-9 x: xxxtwlxxx +5-6 w: wwwwlwwwh +7-10 q: nfbrgwqlvljgq +2-3 g: gjggg +9-11 q: qqqqqqnqgqq +14-20 b: bbbbbbbbbbbbzwbbbbbb +2-6 s: sjsssss +4-13 b: mdbctbzgcpdjbhsdctrd +5-6 t: tttttt +7-9 h: zbhhfmwhhpxh +3-4 t: ttmt +4-6 j: jjjjjj +12-13 w: wwwwwwwwwwwwkw +3-4 f: sgbmjfftf +11-12 p: pdppppppppcppp +5-9 q: qqqqqvsqdjq +5-8 j: qsljqmxwk +1-7 w: gwvktwwwkwwww +2-3 w: gvwcvrggjbk +1-4 d: kddd +13-14 k: zkkpkkkkkksskp +2-5 w: wwwwfw +4-5 n: bnrnlnnkdvhbnnj +7-17 s: kswscfssbssztsgwmdr +9-14 h: hhhhhhhvhhhhhbhhhhh +1-2 s: sgvmzrpssss +1-4 x: xxvgbxwxqx +5-9 b: bbbbbbqbdbbzbxb +6-10 d: ndddkqdddd +8-9 z: zzqvkhpzzhx +10-11 k: jrktpgkvkqk +2-4 l: lklf +14-16 c: cxqccccccccccctccc +1-2 g: bsmmpkmd +4-16 q: vmqdqktlqqnhzqqx +6-12 k: kqkwkktfbklkjnkqrtmb +15-16 v: vvvvvvvvvvvvvvxt +12-13 r: rrrrrrsrrrrrx +5-7 p: ppbqlppppp +5-8 s: dxmsqssk +3-4 m: mxmlmm +6-7 c: kcfcbhcc +4-6 z: zzzxzxz +12-14 r: rrrrmrrrrrrrrkkltr +4-6 j: zhbtgg +5-7 r: rrdrrrzrr +1-3 x: rxcxxxxxxxxxxxxx +5-7 g: ggggggvgmcg +12-15 n: nnnnnnnnnnnnnnhn +4-6 p: qppppppp +9-12 j: pjjsmbjjjjjj +3-16 b: bhgbtjhqvkpgcbgbpbz +2-7 q: mqfhknwswqjxjncxjt +6-16 c: wclpphqjcmbzdwccp +13-15 k: dkkdkkkkkkkknkkcn +7-9 b: blfbbbhvz +14-18 w: wwwwwwwvwvwwwwwwwc +11-18 w: xstwwbwwwwwwtrbwww +3-14 z: zdgxzpvzjztfzzrpjz +7-10 j: mjrxjstdnj +10-13 f: ffrfqflffftjkf +1-4 j: jnjtjfj +8-9 g: wtbqjjggjfcvgs +2-7 z: qpwvvjcpzf +3-4 k: kfgk +6-12 l: lllllllllllw +14-15 n: nnnnnnnnnnnnnpr +10-11 p: prcpwdzmcqp +12-14 v: vvvrvvvqvvvschvvzvv +1-11 q: jqqqkfqqqqqqqqwqq +11-12 j: jjjjjjjjjjtj +2-6 x: nqxxxx +7-17 s: blbvqsssssssnslgswz +9-10 s: ssssssssbsss +1-2 t: ttvqtt +3-8 w: bsddhgwb +1-2 r: jrxdfg +8-9 j: ljjjjjjljfmj +1-3 j: jjjjjjjjjdkjj +4-13 f: jfffmsffmfxrmhnf +1-4 s: sswvjx +4-8 b: btfgtwkvdfqkwv +2-3 p: tptddqdkgdfcbxxrpv +1-4 p: dspz +14-16 d: ddddhdvdddddtddh +6-9 l: hnvrpllsl +4-5 h: hjhzhnh +3-10 b: zsvjzttjnbbgdt +12-15 c: ccjscwcccdcccccl +1-9 j: xjjjkjjlj +1-9 m: gngmvxqmmmmhmmml +9-10 k: kkkkkkkkpc +13-14 q: qrsxtpgpnhcrkq +3-6 k: pkjcks +1-3 t: ttjtt +10-15 f: sjwnfftrffptbqltg +3-4 b: nwbtnz +5-7 k: kkkkkkdk +14-18 l: lglllllllllllllllrpl +1-14 q: fqqqqqqdqqqqvd +16-18 p: pppppppppppppppppn +3-7 l: lllllgvx +2-5 b: pbbkcbbbbbg +7-9 c: bcnjkzxccl +4-5 x: cwxxfxtmqtxxp +10-11 d: dddddwcxdvddbdddd +3-5 v: vvvvlvv +4-7 m: mmmmmltldmmmbk +13-14 s: sssssssssssssks +4-6 s: ssslszs +15-16 z: dzbzfxmpzhrrszzf +5-12 x: xrzxxxgxtcxxxxxx +17-19 g: ggggggggggggggxwjgq +12-13 n: nnnnnnhnnnnjn +8-10 l: llllllltllldlll +9-14 t: fttftqttmtkstdf +4-11 l: nnlljlhllllx +5-7 q: qhpzqjl +2-6 v: fglnsvvwlpx +2-3 b: mbvbb +4-9 w: wwqwwwjwmz +1-4 j: jjxpmsk +6-8 c: pckczdcccncr +3-6 x: xbslxxzhqn +11-17 j: jdkjkjjjjbjxjjjjsj +4-8 h: hphbzhjh +12-14 x: xxxxxrxxxxxxxrx +2-4 q: kqgm +1-14 r: lrtrzrrrsrrzrr +5-15 w: tpwwwbdlbxczwcgwnvbw +1-4 p: qppsppp +1-9 z: zzzzzzzzzzzzzz +8-12 t: tttttttbttst +2-3 n: bkfn +5-8 w: xwwwwwwdw +9-10 c: csdccccqcgcbxcn +3-5 v: mvfvvqvvm +2-5 r: rrstrnzfrdwrvbpfqz +1-4 m: mmmmmmmmmmmmmmmmm +8-9 m: mmmmmmmmg +3-6 l: llllll +3-5 j: jjgjft +10-11 b: xtlppqfbnkq +15-17 p: pppxpppfppppppppb +7-8 f: ffbmfffd +6-11 t: htgvbttnjzpkt +5-6 t: tvttwt +8-10 b: bbqbrtbrbb +6-10 x: xxspxkxmpxxxvrcxx +3-6 f: lgrxkfrfkfj +1-7 f: fffffftf +5-6 t: rcjtqtwvgsttc +12-13 k: kkmgwdjmgpkkgrkk +1-13 w: dwdwzlwxrtvhwwhmwj +3-13 n: nnwnnnnnnnfnnnnn +9-10 j: kbjjcsjtjn +17-18 v: vvvvvvvvvvvvvvvvvh +11-17 z: zzqkzzzzdzhzgzzzvzz +7-11 f: nrdftjqffff +3-8 t: tttttttctt +4-5 r: rrcrwrf +5-7 c: ccqccccccc +13-14 r: rrdrrrfrrrrrhrr +9-12 s: xjddslskrjpd +8-9 n: nnnpgnnbnnnn +6-10 j: wjjdjjjjjpjjjj +1-7 z: hzzzzzzzz +4-7 b: bbbzbbbxlb +4-13 t: tttqnttttkxtt +6-9 h: vhphhzhhshh +2-10 p: bpfwnncsmtppppsq +3-19 n: dnklnrnnnnfnnnngndn +5-15 n: nnnnknnnnnnnnnsnnnn +6-8 t: trttttwv +8-12 m: mtmmbkmxmjdjmmmtm +2-8 k: kjkkkkkkkk +6-8 n: xrnmndqn +13-16 n: nnnnnnnnnnnndnnnnnn +14-15 c: cswjctfcccrccxc +2-9 k: knkkkkkkj +5-12 r: rxrfwrdrcmdr +6-11 v: vxwsnvnxvgs +12-13 n: nnnnnnnnprnnmn +1-3 l: blbz +4-7 h: hhhbhhh +8-12 m: mqhrnmzmmmmmm +6-15 n: nnnnnpnnnbnnnnzn +3-6 q: lzjcxqpmjqsbqgxjql +6-7 q: qqqnqrq +5-7 q: qtlhqct +3-5 q: qlxmq +2-3 n: knnn +4-5 z: zzzzh +4-9 r: rrrwlprfrlrnpzrrmwt +14-15 j: fchdfjzmdrjxrxj +1-4 m: dmmm +2-4 x: wxkmpxn +5-11 r: rvblrrjkvrsbr +1-2 c: ntcmkz +14-16 h: hhhhhhhhhhfhhhhhhh +1-3 h: cnsvhm +4-5 w: wwwww +7-10 j: jjjjjjjjjsjjj +9-14 j: zjjjjjjjkjjjjwj +12-13 k: nqwkrcpkkkkkkk +3-5 k: vxkkj +6-7 j: pjjjtjpjjjw +2-3 j: jjsg +4-5 g: ggggcg +3-5 b: wbbnvxw +2-4 h: gwjhqj +3-4 l: ltlm +8-10 j: bjpdpvtjdj +1-7 v: vbfvvsvcvv +11-16 j: jbjhjjjjjjjjjjjc +6-13 b: bmswrnbdhbrfbmbb +1-4 x: xxxh +4-10 c: wjgcwbrkxk +11-13 v: sfbcphvzttvmzv +6-16 q: pqqqqqqqqqqqqqqq +10-12 w: wwwwwwwwwswww +2-9 b: fbwwwbrdp +3-4 v: vvnvvvvv +8-14 x: drwxxvqdgmpxmxfcxr +8-10 k: kkkkklkkkc +4-7 j: jcwrjjjfc +3-4 c: cczcgc +3-12 l: smllklclprdvlsl +1-2 j: fjqd +10-19 g: gggggggggqggggggggxg +3-5 m: fpmmmvb +2-3 c: ccmc +3-7 v: pvqktqh +1-3 c: ccfv +4-5 x: khxxj +3-4 g: ggbgf +1-9 x: xxhxxxxxx +5-6 f: zfffmfff +5-8 l: gmlqlkrl +7-10 c: ccccckcscsb +1-3 p: spppp +1-3 v: qmvvv +15-16 z: czhzzzzzpzzzzzzkzz +2-4 r: rrrr +3-13 k: kktkkgkkkkkkgkk +10-13 p: bpqpxpqqtprjn +6-7 j: jwnjjjxj +2-8 w: wmgwdwww +12-14 g: gggggggcgggggg +4-8 f: mdffklwtcj +2-7 j: jmjxjdxjrbrjjdjjrjwj +3-4 m: mmml +5-7 l: wllkqll +6-10 s: ssqcpssddslxncsbs +6-11 n: nnnvnznnnnwn +9-10 w: cbbqgrqglwgqskw +1-8 v: nvvzlhcvvvslv +1-3 t: tttttt +3-6 f: mftpff +1-11 t: pmjtttttttl +8-11 h: hhkmfhvhnwwhhhhhhh +4-6 k: kkkrkkkb +2-17 x: zzxxzvrsbmjxnxxxx +5-6 d: zdhxdldm +1-4 c: nmcc +2-4 j: njjjj +7-13 s: jjsbqrsddsclpvs +10-15 f: mbffrlpjtptgfff +10-13 d: dddddvddddddv +8-9 g: gxhgkggrgc +2-4 b: tbbcnkvp +9-11 g: ggggghgldgpggvg +4-5 m: mmmvm +2-5 d: ddfdp +8-11 r: rrrsrlcmltgrrbr +9-11 r: rrgrrrrxwrrr +3-11 g: zgggvgdggdsj +13-15 x: xxxxxxxvkxxxrxlbxx +13-16 b: bbbrbbpbbfcbqbbxbbb +7-10 x: jxlhxxxxxbx +1-12 p: plkprppjpppb +9-10 t: ttttttttft +1-5 q: qqqsqqjsqp +6-9 m: mzmmmlqmmgm +6-7 j: pbjjkjcj +8-9 b: bbbbbbbbxb +1-2 c: cflj +12-15 c: xskhcckcttmtmfc +5-6 p: pppppb +10-18 v: vjrplvzjxmjvvrvvfvd +3-5 x: hvfqxxqzqz +1-10 t: sttttttbttftttttttt +4-7 f: nrxknwf +3-9 l: fllltcllltlsjlc +10-16 x: cxxxxhxjrxxqjxxkxcx +10-14 m: mdmmmcmmmmmmmmmm +2-17 n: nmnnnnnnnnnnnnnnnn +7-11 s: dtpqdssfbbsrl +1-4 h: hhqh +2-7 j: jjrbbmjps +3-4 d: dhsddvflkqdvgd +6-7 m: gmmmpmr +2-9 j: jjjjjjjtpjjjjjjjjj +12-13 g: gggggggtggggz +16-17 p: ppppppppppppppppspp +6-8 w: wntlwwwhnwtgwhwjj +2-4 s: tntsjn +4-6 t: tgtgtt +6-7 f: qpffwwfv +3-5 k: zltkkgsvjhrbxwvkg +8-10 l: ljlwlgpllkklllflrb +3-5 q: qqbqqqs +4-5 f: zfffb +2-5 b: bbzhbbbb +4-5 q: sfhqpqtqbrbgdqgqw +13-14 k: kkkkdkkkkkgtkzpqkkk +4-9 p: bnpwptvkps +10-11 n: nnnnnnnnnnsnnn +12-14 d: ntpzdcqdpsrmddkcwgc +4-10 g: wgxxgsgggkchgggkg +2-7 q: qwbqccqlqmqqqsqcw +3-5 d: ddddddd +2-4 v: vwsvv +4-13 p: pppppppprppql +6-8 s: zcxssstnfr +8-9 f: zfffcqfff +10-11 m: qmbmmmmmpmx +1-3 j: qvjjkn +14-16 d: zfdmddxdrddvdcdc +5-10 w: rwwwwwwwwww +1-4 p: cmpp +2-3 f: dffff +4-8 n: nnnznznnn +1-4 t: bvrntkt +5-6 v: xjgvnvmgfwxvvv +2-4 w: tvwgtc +1-7 f: ffffffdfc +15-18 w: wwwwwwwwwwwwvwwwwww +1-2 t: jtct +2-3 k: cskdkkkl +3-19 q: qpfqqmqqqqqqqqqqqtqq +2-9 n: wnnjcngnkdnbnlrcbvns +1-14 d: vddfpndddfddddjhddd +1-2 m: bmmbwtwml +3-4 p: ppgrprpgrqb +2-3 m: mrmmm +5-6 l: zllllz +8-13 k: xkzptdzzkggkv +5-6 j: jjjjcj +4-5 b: bbcdfb +1-2 b: vbmbrbsf +8-9 q: lqhmjvdqgnxmb +2-4 n: snmrcnntn +11-15 r: rrsjrfrmqrlrqrz +2-3 l: dlblr +2-3 h: cthlxj +8-15 l: lllwlllllclfllbl +6-7 q: hqqqqqjq +13-14 f: ffffffffffffhf +2-4 v: dtxvztgnvffxlxfcdwf +5-11 h: hxhkhpfnhlchh +3-5 n: nnwcj +12-15 s: sssssssssmssssrcl +1-6 d: rdddddddd +14-15 b: bzbfnbbbbbbbbpxbb +4-8 w: jkxpzcnwhzsgmbkw +7-13 t: ttmlfbttdttgtpvktt +8-11 z: jdqfmwgltdztpzc +13-17 s: sssshsssssskslsxnss +9-10 t: tttttttttf +3-4 l: sllzl +1-2 s: ksxsxbwjn +12-17 l: dlvflhjmlgtldlllr +1-5 f: hfffffhf +5-12 f: gmklffbffztjfwswdg +18-19 z: zzzzzzzzzzzzzzzzzqz +1-5 c: cwccgcc +3-4 p: pspp +5-9 n: tknnnnsjwnsntng +6-7 x: xxxxxxm +6-10 g: szrpggtlwr +9-11 s: xgwsbcssxcs +8-9 t: dtttdtzrt +5-11 d: snddldcdhdd +11-13 m: fbkmsdvklzmtmkmmbjq +10-13 s: nqnsssmsvwrrs +3-4 w: hwnwk +5-11 h: ztkpgzhpfhh +6-7 w: wwwwwwww +3-4 z: zvzzczzlglv +13-14 l: llllllllllllll +12-13 x: xxxwxxxxxxxgx +3-4 p: mxkppr +2-3 d: ddbdt +3-5 l: zlplllphl +3-7 p: spmrbvp +4-5 b: bbbvn +16-17 l: zzxvmvxsgrprbclvl +4-7 h: hphwfshhrpgdmktsphhl +1-5 l: nllllll +4-5 r: rrrnr +5-9 k: bbkwgkklqkqhkk +4-5 t: sttnt +15-16 f: fffjffffffsdffwfsff +5-8 z: bzzzzjzzzv +5-7 f: qqzzffmfvb +3-10 m: zmmpmfcwdmfmvc +3-4 z: zlzzz +2-3 c: cjcsl +5-15 r: mrdznrsrctlrrqrflzm +8-11 g: ggggggggggdg +5-10 s: bnshsbvrthssmq +7-10 m: mmhmmmmmmmm +14-17 h: hhhhhhhhhhhnmkhhhhh +1-5 n: nnsnx +4-17 j: jmxjdkgbhjxflrmqjjdj +6-8 m: mmmmmmmb +3-5 p: ppppxrpp +3-8 t: jtjtttqttt +17-18 k: xklkkkkkgkfmrkkhkbhh +1-3 k: kkhk +13-14 j: jjjjjjjjbjjjgj +9-12 q: cmwwkzrkqsqqqmqhqb +3-8 s: sssfclpwhssfss +3-6 s: mshsfss +10-16 p: plftpppkpqppppppp +4-5 d: dddgdq +4-5 s: slsss +1-7 z: zzgxkzf +6-7 w: wwwwlwz +11-12 w: mqwwwwwwwwbzw +13-14 t: ttttttttttttlt +9-10 c: ccccccccvc +9-13 q: qmqqqqqqhqqqqq +1-7 z: rzzzzzmzzzzz +7-16 w: wwwwwwwwwwwwwwwcw +4-5 m: nkmrmxz +8-9 q: qqmqqcmqlqqqqw +10-15 x: ltnxqwwxxztmzhxxmnt +3-6 r: pkvpfprgwm +10-11 k: kkkkkkkkkkkk +3-4 c: ccfjs +1-6 n: nqvkzjn +9-12 k: qkhxrknkkzpk +8-10 x: xxxxxxxxddx +4-14 t: tttttttttttttbttq +12-13 h: hhhnhhhhhhhhd +2-6 x: bdwljxqxhkxjwpvdxk +3-4 w: kwfw +5-13 w: skrwgwwdwmcwv +1-3 m: mtmvsmc +5-7 v: gvbvvdt +7-8 s: ssshssspss +4-14 m: mmbmdbtmvhvmlc +4-9 g: ggsgnhhmgg +1-6 g: gsmfgjgzmkglzbgfjw +1-12 z: zzzzzzzzzzzdz +4-6 q: dbqjwnd +9-15 c: ccccccchccjcccc +1-7 l: fkllkmp +2-17 g: dggmgzhvphggcjgmtx +9-10 f: fffffffpfs +1-4 n: nnnw +11-12 l: llllllllllrl +9-10 p: ppppppppppp +5-6 p: pskgtx +7-8 q: qqqqqqjr +7-8 d: ddrdddkgddd +2-5 l: llllhl +4-6 h: hhbhlbhh +9-12 m: mmmmmmqmtmqgcx +10-13 f: fbfffjffffffjff +5-14 c: cvvrcmkhztsctfpf +1-2 k: fkkk +8-11 j: kjzchnjlrxjjljjljj +5-6 x: xxxxxq +6-11 r: zrkrrrznrfm +2-5 r: rdrrrr +12-16 c: cccccccccccccccvcccc +14-16 w: pwwfwwntkwwrjwcww +1-16 z: zzzpzmzmdzjzzzzvzzgs +6-8 j: mttjfgswgjwjjdjx +1-8 w: hwswwlwwxtgxbgkwp +7-8 h: hhhhbhnhb +3-4 n: cnzn +8-9 r: ltnkhrdsr +4-5 t: tttmtltptttttttltt +7-8 s: sssslsscszws +16-18 j: jjjljjxjjnvjjjjjjnj +3-4 s: psjpswct +5-7 b: kslrgbhcxmhbv +7-9 x: gxxxdxxxbxxx +1-5 d: lddddd +12-16 x: gsbzzgxnwsrmqxvx +10-12 m: mmrmmmmmmmmbmmmmmr +4-7 f: lfsfcnczbfh +9-11 r: rrrrrrrrrfzr +3-6 c: jfhnvcc +8-19 f: ffffffgfffffffffffj +2-6 x: lpfxdqws +1-4 q: xcvqnqvh +2-11 r: rrrrrrrrrrrcr +1-5 z: pvdczgkznqpxpnzrz +2-3 j: rzcjvmjb +5-6 w: wcwwwlblgplfwft +3-13 j: djjrjmwzrkzzn +10-11 p: hlsbzcpdqppww +9-10 f: fffffffffb +2-7 m: tvmjknlkdqlqmh +6-19 x: cqkrszrxppxxzrclxkx +1-11 m: zfmmjmmmlmmmmmdmm +3-4 t: fstwjtqqsdzbwrt +8-9 x: xxxxxxxxg +4-5 n: xnnnfnnnl +1-4 n: xxnngpfxl +5-6 m: tgsmmqm +10-11 l: lpvhlllrhcn +11-12 k: kkkkkkkkkfdkk +14-16 c: cccccccccccccbcc +13-14 f: ffffffffffffjff +10-11 w: hwhwqngbwmw +16-18 m: mmmmmmmmmmmmmmmrmm +8-12 d: bddddddrddddd +14-16 z: zzzzzzzzvzkvzzznzz +9-10 z: fzzzzzzzzbf +14-15 j: jjjjjjjjjjjjjqjj +8-11 b: qtfjvqgbpwb +6-9 d: ddddddddzddddd +5-7 c: rlqqctcr +5-6 m: mmkmmfmdwjd +6-7 n: nnnnnnz +11-12 s: sssssssssswpsss +12-15 r: rrrrrrrrvrgrrrk +2-3 b: bqbbb +7-9 c: ccccccdcc +15-17 s: sssssssspsdsssqsssss +2-7 g: bgggwrbggfc +4-5 n: ncdnb +11-12 x: xxxxvxxsxxrxxvx +4-17 c: crscfpdcrngngctxc +1-3 s: xsrsss +14-18 w: wzwwwwpxwwfwwlkwbl +2-8 w: tbjctwlwml +1-10 h: xhhfhhgjhhhhhwhz +13-15 c: cccccccccccclccq +1-14 j: hjfjjjzsjpjjjjjj +6-10 c: jccxcccbcc +5-6 n: nznnnxcnn +4-10 w: wwwbwwvfwwmwwws +9-10 s: krsgskgtvl +2-11 p: pppppcppppspp +12-14 c: ccccccccccccvcc +3-13 c: blcvjwrwzzwlmttsncg +3-9 w: wqwlqwqpdwc +12-15 v: gtwlqvxjkvvgvft +14-19 k: kkkkkkkkkkkkkkkkkknk +4-5 g: gggnx +3-4 r: rxxrr +13-14 h: hhhhhhphhhhhch +11-15 w: wwwwwwwwwwdwwwdw +16-17 l: jmphnlvdgmltcflxlm +1-4 q: qmqw +5-10 f: ffmbxfqffffbfff +2-14 b: bbbqjbxvdbbvbdx +18-19 p: ppppppppppppptpppnn +5-6 m: mmbmmkmm +3-8 d: ldkddkddmbcdwdrbx +11-12 s: shjssssssspgssssssss +2-4 d: fddqdd +6-11 f: ffffffffcszsrff +5-10 r: mrrrhrrrrr +2-17 n: nhtnxnnnnfnnnnnnnn +3-4 s: ssvs +5-6 t: ktgbft +7-10 m: mwmmmlmmmhp +10-11 c: cccccccccbc +1-3 t: rnttg +13-14 f: kjqrkfstrfngqf +12-15 g: gdgknggggqghgpd +1-13 t: ttttttgttttttjrttt +1-5 r: brrgrrrrr +4-7 c: cccnccccccp +11-12 n: nnnnnnnnnndl +9-11 j: jwjjjkjjjjfj +3-10 w: wdwgswwwwx +10-12 r: zzrrctnvrxfrrqrrjrrr +4-5 x: xxxhx +5-9 j: fqgwpjtjnt +7-9 l: lxllllllqllwllll +11-17 p: ptbzpvppswpppplpr +7-13 g: ggggggzgggggfgg +2-8 j: pbftjswjqzcp +5-6 z: zzzzzczzzzzzzzzzzzz +2-6 n: ntvnnnnnn +12-13 n: nndntnhknsnnnnnnqfnn +1-6 x: wtnxdw +2-4 f: fxxf +5-12 k: xcxrwkpfkkfkdk +3-4 z: lzzz +12-15 n: knnnnnnncnnnnnpnnnn +3-11 h: jdhfhhfmthh +9-10 k: kkkkkkhkskk +2-6 g: hhngvjgbkg +3-4 k: zkkz +12-19 r: rrrrrrrrrrpmrrrprrvr +2-9 d: dkddddddjdddd +1-4 c: zccc +7-12 d: dqbxtdxdgztddc +4-5 x: kxxxd +1-3 x: xjfkxvhvbq +5-9 w: dpqcpwcrwpwcqhlj +1-7 q: dkbtgkqxjhjzsqccn +4-10 c: cncccccccccc +7-13 b: bbmbqwbbbbbbbpnbb +9-10 b: bbbbbwbbbgx +7-14 b: bbbqjbcpbbjbvbbbqrxb +5-13 s: fspsqsshvhssssmrqss +11-15 v: vvvvvvvvvvvvvsjvhvdp +5-9 d: brwdshwddzvg +2-7 w: wwkfgkwtbvwx +6-9 l: llllwnlllll +4-7 h: hchhhtpr +1-4 n: npgnn +3-4 k: kvkkkkjkkxkgkk +1-13 m: xmkkhmwddbtkm +6-7 x: xxxxxxr +15-19 m: mmmmnmmmmmmmkmbmmmd +14-15 z: zzzzzzzzznzzzhzz +11-13 h: sfhxhlhtnnkvdkhm +9-10 z: dzzzvzzzztmhczbzx +5-7 v: vvvvwvv +5-7 z: zrgzxzzfdz +1-3 n: nvlm +4-7 x: xkvxxjt +4-10 m: mfwzzmnqfsdkxzmmmm +1-15 x: xxxxxxxxxxxxxxt +5-7 n: nnnnnnm +11-12 z: xknzzzwddzxxzzzzzzhc +3-4 f: fzflfjf +4-6 g: ggkgrxg +1-2 n: sncpt +4-18 z: xvrsrxzzzzlzzznzzz +5-7 j: jbhfjcrpkgjhp +6-7 g: gggggsh +8-9 n: nnnzntnqpfnnpc +8-9 k: kkkkkkkxsk +6-11 n: nnhntnmhnnms +3-5 q: qzqqqqhlcbfdqq +6-9 r: rrrrrrrrvdjrrrr +3-7 r: rrrrqhm +6-9 t: xmdtvstttjtt +3-5 l: gnsnlp +2-6 x: hxjxjd +2-6 t: tttttp +7-8 l: vdtrllllrmlwllcplgb +10-11 t: ttttttztmwtt +3-4 d: ddgd +9-11 j: jjjjtnjjqjcjj +6-7 n: nnnnlcwbn +4-6 g: ngdsggg +7-9 q: hnxrvqjqqr +3-5 l: fltllw +3-11 g: gghggggggggg +7-17 w: wwwwwwwvwpwwwmwtgw +2-19 n: nhnnnnnnnnnnnnnnnnn +1-2 n: xnmr +4-6 x: xtxxxpxxxx +10-13 z: zbzzzpjrwzdzxszzzz +9-19 b: bbbbbbbbbbbbbbbbbvbb +9-10 w: wwlwzwwwvr +5-9 p: pnkpdppppppkpwzpp +15-17 j: jjvjjvjjjjjjjjljwcj +3-4 t: tttkt +1-5 j: jvjtq +2-11 r: rrrrrrrrrrwr +1-4 x: xqpzxwcslbj +3-4 b: bpbp +11-13 w: wwwwhwwwwwnwl +2-4 f: nfnjtfkbsxvm +6-7 v: vvvvvvs +1-4 t: xwtxxmgfwpkqd +5-6 h: hgjhrhhhh +2-4 p: psppp +10-14 j: pqjjjsjjjbcbjjjjj +3-7 d: ddbjddgzdd +6-7 l: llsllbl +1-13 p: pppppmpppppppppppcpp +1-3 r: rbdzrjsrd +11-14 x: xxxxxcxxqxxxxs +11-12 c: ccccwccczccccc +2-12 g: spwsxfgdrqngkqgdb +1-3 h: dhrhh +1-7 f: tfffffff +15-16 s: sssssssssssssvssz +12-13 q: qqzqqqqqqqqvq +4-5 g: cgxgk +3-8 n: nnnnnnnnnnnnn +1-3 r: rrkr +14-15 g: sgtgggggggggggxgr +2-5 s: vhcts +2-4 x: xdbvvrnxxhnzsl +8-11 p: ppwpppclpvlp +7-11 b: bblbbkbbbbmxfqgxgk +5-6 d: dddldffx +5-6 z: zzzzzwz +11-15 q: hqrqbzbhnhdqjfqdvg +3-16 b: btgbbbbhzbbbbbjb +4-5 f: ffvkf +6-10 q: qqqqxqqdvlqq +12-15 g: gggxsgsnwqxldmg +8-12 d: ddddddjpdddh +1-2 p: pphgjjm +9-11 d: ddddddmdfddd +18-19 z: zzzzzzzzzzzzzzzzzmz +8-14 r: rrrrrrrtrkrrrq +4-5 t: jhtrt +3-6 h: bjhwkpdjqbnng +4-5 m: mmmmbm +2-4 t: dqttgszbrwpcdr +5-7 q: dfxmqxxqtdfqxqq +3-5 k: kkkcmk +7-10 t: tttttttttn +7-14 m: mmhmbmkmmvrtmxgxwmm +10-11 v: vvvvvzvvcxvvv +5-6 s: lssssbrssl +8-15 h: hhbhhhhhwhrhhhqh +18-19 q: qqqqkqqqqqqqqqqqqtq +10-12 p: xpprjzzlpqspsnpb +5-6 t: ttttgt +4-12 s: csvwsslsshgkbsrds +12-17 z: zzzzzjfzzzzzzzzzzzz +4-5 f: fnktwj +3-6 h: hphdhvh +16-19 m: mmmmmmmmmmmmmmmnmmmm +5-8 m: msmjtplmmtqbm +6-9 q: gqqcqqqrq +1-10 g: gvgfsqggph +10-11 l: nlllpllljql +1-4 q: qqqx +2-4 q: qbwqwpqq +3-5 s: scsmjtszkscsds +2-5 t: txttfttt +1-2 s: swsqspmz +2-4 f: vffw +11-16 r: rrrrrrrrrrjrrrrq +2-13 r: rlxpzrftnrkhrvlzrp +4-7 g: lggfgsggggggggggg +4-5 w: wwblw +2-5 t: tbgtg +6-7 n: jvzmhnmnphhx +1-8 m: cmmhmlmmm +10-14 x: wtxtkxxjpxxxxr +3-5 h: hmchhfhk +5-8 h: qgfkhktmhhhmbw +10-11 k: kkkkkkkkkkh +5-6 g: ghzggxgsgpksg +3-4 w: mwwv +3-7 p: zppsxpnbj +1-2 d: qtdd +9-10 h: rhdhlhhhwhhtdhzxhp +1-6 v: lvtpvvnb +2-6 q: qqqlqm +4-8 j: jjfjjvjjxjj +13-14 x: xhvqxxxxxxhxxq +10-13 k: kclwxblmncnbkkdhrhr +1-3 j: jjpj +3-4 b: sbmxhbbt +2-3 d: mjscddjrh +2-6 x: xxxgxqxxxxzxrxx +19-20 h: hhshhhhhmshhhhhhhhhq +12-15 s: scbssrsslnsskfbs +3-4 p: jpmp +11-19 p: pppptpppcthpppppppp +1-5 w: lwwvw +3-4 d: xzfddddpdddzdjxcdd +3-8 f: fspmqqkfjtfrz +9-12 c: cccccccccccr +15-16 w: wwwwwwwwwwwwpwlg +2-3 v: vzvb +10-18 t: txttttmtmtrtntttfktt +3-12 h: mwbdpslghxxhhh +2-9 l: lcllllllxllllllll +9-10 r: rrrrrrjrtrrr +2-9 m: mmmbmmmmmmmm +7-13 t: ttttttttttwtz +7-13 b: bzbbbbqdxbqbb +5-7 d: ddhdddmd +4-5 b: bqbdkbbb +1-3 k: wkkkk +4-6 d: dddddf +2-7 j: tmnjptjtrvx +5-7 z: qzlzzzvzm +4-5 h: hhhhhf +3-14 s: zsrkrsssmsssshsssss +7-8 k: bkkkgkkxk +8-9 x: xxxxxxxtxm +7-9 j: jmjjjjljjjjb +10-11 n: xnnkrqnfnjnnnpncnn +3-6 c: cxcdlhv +1-2 q: qdlmfhgtgrnqhmvqmkhm +6-7 t: tttttttt +2-4 j: xjvzcjcftgvfqg +5-7 n: srnxnjjgdnnnnqrwt +2-3 z: vhzzvk +6-13 d: nlbwzrpsrfvwddcz +1-3 s: ssfs +10-13 n: nnnnnnnnnmnnnnnnn +6-8 g: lggggnggx +7-10 j: jjjjjjqjjjj +2-10 c: fccbgjccvzwqczcvcc +3-4 p: wqws +1-6 w: wqbjbnrp +5-9 v: vvvvvvvvhvvv +13-16 n: nnnnnnnnnnnntnnn +5-7 h: qzjhhhp +14-15 c: ccccccccccccclcc +11-13 g: tkthwlwggncggxmjfk +2-11 v: vndvvvvvvvvv +10-11 p: ppppppppppt +1-11 c: ccccccccccdc +9-10 b: bbbfbpbbtbb +5-10 r: rrsrrrckhp +2-16 v: vvbktgjvhvvkmfbvccwc +6-10 v: nrvxrvcvvvktrvvvl +10-17 d: ddddddqdhdddddddvd +5-7 f: fqkxhfffghfc +1-13 z: zkzwcggpsppzzxwcbbp +2-4 d: hkvdzhlpbqdnvrjsc +9-11 x: zxxxxxxxsxx +14-17 q: qqqqqqlqqqvqqgtqq +5-12 q: qqqqqqqqqqqrqqqqq +10-13 w: wxwbnbkwgwxwhwwwln +5-16 c: xzvscccccjcccchhc +2-3 v: vgmvvvvvvvvv +7-9 j: mjjjjpjjdjjjb +6-9 q: gqqqqqqqq +10-12 p: pcpxppppprpppp +1-6 s: zsssss +1-3 g: mhggg +2-7 g: gsggsgnvggggqggvlgrc +1-6 d: rddddddd +1-3 n: nntnknnr +8-9 t: tttltttttt +5-6 f: jfzqfljhkwdn +12-14 j: jljjjjvjjjjjjcj +9-10 q: qqqqqqqqqwqq +2-11 h: hhhhhhmhhhqhphhh +4-9 z: cldzzfxzblb +3-4 l: lvlm +3-4 m: mmrmm +15-18 m: mmmmmmvdmmmmmdmmmsmm +4-5 f: wffzff +10-16 b: bbbtmbblpbbbbbmmbv +13-14 d: dpdmjrgdqrdwwd +6-7 m: mmmmmjm +12-19 g: gggggzxggggrgggglgvv +10-15 p: ppppspbpvpkpcpqppp +4-10 m: mmmmzmnmpct +11-12 c: chcccpcccccdcccpd +3-5 f: ffnzqjzh +1-6 p: cpjpppp +7-14 p: ppppnpqpwnrtmbjjppm +7-8 w: wwwwwwtw +3-4 d: ddds +3-4 r: vrxdtlt +2-7 w: wcwvwwqw +5-12 b: bbbbbbbbbbbhb +1-5 t: tlvktt +6-7 p: mprngps +8-12 x: xxrbnxxjhxxxxlx +1-3 x: xvqx +5-7 v: vvvvqjvvvvsg +2-6 w: fwwjwz +16-20 q: qrqqbqnqqfqjhqfqqqqh +3-6 j: jhjjjfjsjk +4-9 k: rkgpgskkz +2-4 z: gzdz +6-8 t: tttttsttdtttt +11-12 p: ppppppppppppp +4-6 x: mzqcfxct +16-19 d: qjdlfdccdbxngddnkgn +2-3 f: rrcvqfs +13-16 z: zzqzzjzzfnttznxzzzz +16-17 w: rbngvbwpgwgzkwswp +1-9 k: klkkkkpkp +3-4 f: fffxffffff +1-2 l: lhpl +1-4 w: vznmj +2-3 j: jdjmpjd +17-20 v: vvvvvvvvvvfvvvvvvrvx +3-7 w: wnzwwswwwwj +3-8 m: mmnmmmmmmm +3-4 l: llmll +9-11 r: rrrfrrrdqrwrr +9-10 w: wwwwwzwwhw +6-10 t: pttwtbxqgttttntktjt +1-3 j: jpngpm +1-9 g: gggggggggg +4-5 b: gbbtb +2-6 q: qqblqdrnmcnhqvvpvkq +6-7 w: zwwwwjw +2-8 w: rpbbwwwlqzhl +11-13 b: bbqbbbbbbbbbb +7-10 v: vvvvfvvvvv +6-17 t: ttttttttttttttttwt +2-3 f: fbff +8-13 l: qlllzllmllgllmlcl +3-4 n: nnnfnqd +9-12 z: lzzzlzzzzffb +3-11 p: bhlpnccgcfp +1-3 s: stccsf +10-18 p: pdgpphscppdlpppvsh +3-6 j: jjjjjq +2-3 s: dslwlsvljc +3-7 g: sgggtdgwkdhspgnxkglv +12-13 h: vrgnfshfssvhh +12-13 m: mmmmmmmmmmmbgm +12-16 d: djddvdqpdddddjlt +3-4 k: kfkmkpk +6-13 s: ksphskxpdswsssbbnwwt +6-18 x: xxsvxndxxxxfvkxxbxs +7-8 d: dxbdddddddd +6-7 q: qqkqdcqjfdqqbbqp +4-5 k: vkkbkzqpk +4-9 l: llbhllllldl +14-17 d: ddddhdhddddddxdddd +3-5 r: htlfbsgmvz +2-4 h: hthhh +4-7 l: xlzllbqkdwqsllfsw +17-18 n: wnnrnnnnngnnnnnnqnfn +1-3 j: vlwkv +1-2 g: bggz +10-11 x: ddsxjxxtnxjpcxxxxxv +4-5 g: hggkg +5-7 t: khtnzct +10-15 g: ggkggsggcgggggqggwgg +9-11 s: ssssbwjhssj +1-8 b: gxvbllbjqk +2-3 w: jgwqhrw +7-8 j: wxtqdvjpbcfzxsjlpmsj +9-16 b: bcpbcbbbbbjmbpwbbj +2-5 t: tpttttt +2-3 z: pzzz +3-10 j: jjpjjrjjjjjjw +5-8 t: tttttttxt +5-15 r: rrnrrrrrrrrrrrkr +8-9 j: hdjwgbjmj +3-14 c: jcccwcccccrckccch +11-12 n: jvzktxgpcmnjglwljrn +9-13 k: vqsgdcksxtxhks +3-5 c: zdccczpwlxt +3-5 r: wxgkrqrsgl +7-8 s: kspsssksswssj +3-7 j: djjjhbrkhtncxjvf +11-12 x: xxxxxxxxxxxz +11-12 t: ttttttttttht +8-11 v: ptvvvsvtvrvvwvxvtfg +9-13 d: nhjddddvlbkdcdntdf +3-6 w: gnwwjqwzqwm +3-5 s: tsssc +3-7 k: kkkzkpmmll +13-15 k: kgkkkkkkhkkktkf +5-8 t: ktttrttnt +1-4 z: nzzzzzz +2-4 k: lkkc +2-3 z: szjh +19-20 d: dddpcddkddckdddbmdld +3-9 q: xqqqpqqqwlqqqqq +14-17 s: ssspkssssssssssslss +17-19 c: ccccccccjcczccccxccc +4-13 h: qtrhflbfmkfchjmfzph +10-18 m: nmmmmmmmmmmmmmmmxd +5-11 n: dnnnfsnnkznbgnjn +6-11 c: cccccvccccc +7-9 d: dddddrxdzldv +2-4 z: zbzz +1-6 j: njjjjjjpjj +3-5 p: prpww +3-16 c: tqjdhbgxvxcxwbvcn +4-5 c: vclfc +3-18 x: xxrxxxtxxxxxxxxxxtxx +2-4 g: gvgggg +6-12 j: cjjpjjjjlhpt +3-4 w: pfwq +5-14 v: vsqqvlrmqbbrlp +2-12 l: rlblqwmphxzpsp +2-8 h: hhqqvhhphhhqddhh +7-9 f: dnfvhwwffk +4-5 p: ppppcd +8-14 t: ttttdtqhttttftttt +13-14 f: fffffffffffffff +1-6 s: jrtwjslzwgkt +4-6 c: jcwzhcscc +10-14 x: llxxxxxxvnxsmx +1-2 h: hhhhv +2-4 d: mvdclzddj +16-17 t: tttttttttttttttmt +2-3 l: jklzlmzrppdpzt +5-6 g: rvfgnggjgk diff --git a/input/day_03 b/input/day_03 index a1d15f0..f090b71 100644 --- a/input/day_03 +++ b/input/day_03 @@ -1,6 +1,323 @@ -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()-/ +.#.....#..#..#....##.........#. +...#...#.........#..#.#..#..... +#.#...#.#....#.....#..#..##..## +..#..#.#.#.....#..#..#..##..... +.#..........#....####..##.#..#. +....##.......#.#.....#......... +....#......#....####.#.##...... +........##..........##......#.. +.........#........##..#.#.....# +.#..##..........#..#...#..##.#. +........#........#.....#....#.# +..#.......#.###...#.......##... +.##..##.#...#........#......... +...#....#..#..#..##.......#..#. +.#.#.##.##..##..#.#.....#.....# +....#.........#........#....##. +........#........#....###.#..#. +........#....#......##......... +.###.##.#.............##....... +....#.........#...#.#.##..#.... +#.............#.#.#.#..#..#..## +###...###.###..#........#...... +##..#.....#....##..##.......... +.......#...#....#...#...#.....# +...#......###...##.###...#...#. +#.......#...##..#.......#..#... +.....##....#....#..#..#.#.##..# +.........#....##.#.#..##.#..... +.....#......#.#.#.....#.....#.. +..#..#...#.#...#.........##.#.. +.....#..#.................#.#.. +##.#....##........#......#..... +#..#...##...#.#.#..#........... +.#..####.....#......#.###...... +.#.......##............#....#.. +.#.........##..#.##...#.....### +....##.........#.#...####...##. +..#.......#......##.....#.#..#. +...##....#..#..##....##...#.#.# +.................#............. +...#.##..#.##..............#... +...#......#.........##........# +..#.#..##...#.......#.#........ +.###.#.....#.##.##.#...#...#... +.....#.##.....#..#......#..#... +.....#.#...#........#..#..#..#. +#...#.##.#....#................ +..#...#.#..#.....#.#.#......... +#.#.###...#.....##........##... +#..##.##....#..........##.#...# +...#..#.#.###...##......#.#.... +.#..#........##...#......#.#.#. +##........###....#.#....#...... +....#...........#.........#.... +#.#....#..#.....#.#....#.....#. +........###.......#..#.#.#.#.#. +..#....#.....#...............## +.....#..##....#.#...####....... +.#..#.....#..#.....#....#....#. +..##....#...........#.#....#... +..#.#......#..#.#..#.....###.#. +...........................##.. +##.....#....#......###.#...#..# +...#...#.........#..#..#....#.. +....#####.#.#.#....#..#........ +.##.#..#.#............###...... +##.#...##...##....#...#...##... +..#.#.....#.......#..##..###.## +#..##...........#.##.....#.##.. +#...#....#...#..##...#.#...#.#. +.#..#...........###...#.#...#.. +.#.....#......#.#......#...#..# +.#...##.##...............#....# +..#.........#....#............. +.#..##..#.#................#... +..#.#.#.#.................#.#.# +...#..#.#..#.#......#........#. +##....#......###.#......#...... +..#....##.....#..#........#.... +.#.#....#...#.#.....###..#...#. +.#..#...##.....#.#...#.....#.#. +...#....#....##....##.....#.... +.......#...#...##..#.#.......#. +.###..#..###.#.#.#.#.#.....##.. +....#.#......###.#....#....#..# +##.....#.....##.#.....#....#... +......#...##...#..#.#.....#.... +...#.........###.....#..##..... +....#...#..#....#..#.........## +.#........#..#.....#.##.#....#. +.......#......#.##...##.#..#... +#......#.......##..##..#.#..... +..#.##..........#.#..#......#.. +#.....#.......#......#......... +...##......##...........#.#.... +.#....#........#...#.#..#.....# +.#...#...##......##...##...##.# +.#.#.##.....##....#.#.#..#..... +...#..#........#.....#.#.#####. +#..#..#......#....##....##..... +.#.............#....###.##.#... +.#....#.......#.#.....#......## +#..#.#.#........#...#..#...#... +#.#.#.....#.......#.##..#.....# +..#....#.....#...##.#...##..... +......#..#.............###...#. +..#...#.#....###...#........... +.........#..#..#....#..#....... +#....#.....#..#....#.#..##..... +.#..#.#.....#...##.....##...... +.....####..#..#......#....##..# +#.#....#....#.##.......#.#..... +....#.#.............##..#.#...# +....#.#.#.....##.....##..#...#. +.#..#...#....#...#.#....#...#.. +.#..#.#.#.......#...#.......... +...##..#..#...##.....#.......#. +..##...##.#..#.......#......... +.##.#.......##...#...#......#.# +##.#.#..#...#............#..... +..#.##...##..#....##..#......#. +...#..........#.....#.#........ +...#..#..#.......#.#.....##.... +##.............#.....#.##...#.. +#.#......#........#...#.##..#.# +...#..#...##.#.#........#.#.... +#.....##...........#....#...... +...##....#..#.#...#........#... +..##..####..#..#............... +.#.#..#......#.##.........##.#. +.##....#...##.#...#..##..#..... +........#........#.###.#.#....# +......##...#......#..#..#...... +..#.......#...#..##........#..# +.#....###..###....###...##.#.## +#.#....#..#.#...#.#...##...#... +..#..##......#..#......####.... +.#....###.......#...##...#..... +...#....#..#.....#..#...####.#. +............#.####..##...#..##. +.#..#.......#....#...#......#.# +.......#.......#..#.#.......... +...#.#............#..#......#.. +..#...........#...##......#...# +...##......#.........#.#...#.## +.#..#..#..#......#...........#. +....#.....#.###........#....... +..##.#.#........#.#...##....#.. +.#.#........##....#...#......#. +.......#.##..###............... +#..#...##.....##........##....# +...####........#...#.........## +...#..............##..#........ +......#.....#....#.......#....# +..###......#..##.....##....##.. +##...#.....#..#.#.#...#.....#.. +...#....#............#......... +..#..##...#..#.........#....... +.#.#.#...##..........#..###.... +.......##.#.#.#...#.#...#.....# +..#..#..#..#...###.....#.##.... +.#.#.....#.....##.#..#...###..# +.........#..##......##...##.#.# +#.........##..#......#..#.#.#.. +.#..##.#.##......##........#... +..#...#.....##..#......#.....## +.#..#...#......#..#...#.....##. +..#..##...#.....#.....#........ +....##..#....#.#....#......#.#. +..#.......##..#..#.##.#..#...## +...#..........#...#..##........ +..#............#.#......#...... +.#...##.......#...#.#........#. +.#...#....#..#....#....#.#...#. +......#..#.#..#..............#. +.....#.##.#...............##.## +.#...............#.....#..#...# +.#..##.......#.#...#..#..#....# +..#..###.##........##.......... +.#....#..##...#.#.........#.... +.......#.....#....###...##.#.#. +##..#.#...##.##.##....##.#.###. +#.#...........#..#.#........... +....#..#..#..#...#....#.......# +........##....#..#......##.#... +.#.#..##...##...#....#..#.###.. +#..##....#..#...#.......##..... +..###..#.###......#..####....#. +.....#..#........##.#..#....... +.#......##..............#.#.#.. +..#.#.......##...#....#.#.###.. +#..#..#...###..#............... +......#..#.....#..#..#...#..... +.#...#..........###..#..#.#.... +.#......##..#......#.....###..# +.......#...#..#....###.....#... +#....#.......###.##.....##....# +..#.....#..##..#.........##.... +.....##....#.#......#.......... +....#...#...#......##.....##.#. +........#.#.#......#........... +.#....#...#...#....#.....#...#. +..............#..##.#.....###.# +.#......##.....##...#....#..... +.............#.##......#.....#. +.#....#.#............#.#..##... +.#...##.......#..#...##....#... +.#.....#..........#............ +#.#.#........#.....#..#....##.. +#....#.##......#...#........... +........#.##.....#...##.....#.. +..#.##....#.##.#...#.#.#....#.. +......#.......####......#.#...# +#...#.##.####......#.....##.... +.#..#....#.......#...##.....#.. +................#......#.##.... +###...##..#.#..........#....#.# +#.#..#.....#..##.##.##...#...## +..#.......#.......#..##..#..##. +......#.##.......#..#.....#...# +.##..##..#.#.......#..#......#. +....##.#....#...##.#..#.....#.# +..#..#.........###.#........... +....#.......#....##......#....# +..........#...#......#....#...# +..#.#....###.....#..#.#.#..#... +.....#...##..#.##........####.. +##.............#....##........# +..#..........#..##.#........... +##.#.......#.#....#......#.#... +........####.....##.#.........# +.....#...#.#.....#.##..##.#.... +........#...#.#.#.#...#......#. +.#..#.#....#.#...##.....#..#... +.....#.#............#.#.#...... +....##.#...#...#.##...##....... +.........#.##.....#.......#...# +...........###....#.#....#...#. +.#..#.###......#..#............ +#...#..#......#.#...#......#... +..##.#.#........#........##..## +..#.#.##..##....#........#.#.#. +...#........###......#.#.....#. +#.#.#.##........#.#...#..#..... +#..#...............#...#.#...#. +.....##......#...#.....#..#.... +............#...#...#.##.#....# +...#..#..#...##.#....#.#..#.#.. +##.#..#..............##........ +.#.#..#.#..#....##..#.#.##.##.. +......######....##.....#....... +.#.......#..........#.#..#.#..# +..........#.#......#...##...... +#..........#.#..#.............# +...#...#..#.................... +....#...#.....#.....##.....#... +..#....##.....#..#......#...... +.#.#.....#..##.##..........###. +.#.##....#....#....#....#...#.. +..##.....................##.#.. +.....#..##....#.#.....##..#.... +.####...#...##..#.##...#..#.... +.........#.#...#.......###..... +...#..#........#..#..##.....#.. +..#....#....#....###.....#..... +......#....#..#.........#...... +#.#...#..#..#.#...#..#.#......# +..........#..........#.#.##.... +.#..###..##..#....#.#.....#..#. +.##......#..#.##...#.........#. +...##...#....#.........#..#.... +....#..##........#.........#... +.........##....#...#.#.....#..# +.#..........##...#..#.#..##.... +#.......#...#...#............#. +.....##.#.##.......#.......#... +...........#...#.....###.....#. +#..................#.##..##...# +.........##.............#...#.# +#.#.....##...#........###....## +...##..#.##.....###.....#...... +..#...#.#..#......##.#.......#. +.........##.#...........###..#. +..#...#.....#...#.#.....#..#... +.....##..#...#.#.#....#.....### +..#.#....#..#..#..#....#.#...#. +........##....#......#....#..#. +.##..#.....#.#....#..#.###..... +..............##.........#.#.#. +.##....#.#..#..#...#..........# +.....##.......#....#..#......#. +...#.#....................#..## +#.##..#.#...#...#....#.#....##. +...#.#..#.###................#. +.....##..#.##.#.#.........#.#.. +.................##..........#. +..#......#........#.#....#..... +#......##......#......###....#. +....##....#..#..####......#...# +.##.##.........#...#..#....#.#. +.#..#....##...##..#...........# +#...#......#...#...........#... +...#...####.............##..#.. +.....#....##............##....# +......##.#...##...........#.#.. +..#......##.....###.......#.### +...#...#......#...##.#........# +.#.........##.##......##....... +....................#....#....# +.#.#.#........##.#....#.....#.. +#.#.....####..#.........#.#.#.. +...####..#..............#.#.... +....#.#....#..........#....#... +.#..#..#.#...#..#.#............ +.#.#.......##........##.....#.. +#.#.##..#.....##......##....#.# +......#...#...#...#......#..... +.........##..#.....#.####.#.#.. +.....#....#.###...#.###.#..#..# +..#.#..#..#.......#.......##... +.....#.........#......##.#....# +..#.#.##....#.#...............# +.....#..#....##......##..###... diff --git a/input/day_04 b/input/day_04 index fe91c33..8becd55 100644 --- a/input/day_04 +++ b/input/day_04 @@ -1,140 +1,1146 @@ -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 +byr:1983 iyr:2017 +pid:796082981 cid:129 eyr:2030 +ecl:oth hgt:182cm + +iyr:2019 +cid:314 +eyr:2039 hcl:#cfa07d hgt:171cm ecl:#0180ce byr:2006 pid:8204115568 + +byr:1991 eyr:2022 hcl:#341e13 iyr:2016 pid:729933757 hgt:167cm ecl:gry + +hcl:231d64 cid:124 ecl:gmt eyr:2039 +hgt:189in +pid:#9c3ea1 + +ecl:#1f58f9 +pid:#758e59 +iyr:2022 +hcl:z +byr:2016 hgt:68 eyr:1933 + +hcl:#fffffd ecl:gry eyr:2022 +hgt:172cm pid:781914826 byr:1930 iyr:2018 + +hcl:#08df7e ecl:grn byr:1942 +eyr:2028 iyr:2011 cid:141 pid:319110455 +hgt:186cm + +pid:991343040 hgt:179cm +hcl:#a97842 iyr:2020 +eyr:2024 +byr:1984 cid:181 + +pid:188cm byr:2005 +hgt:170cm cid:163 ecl:#a08502 hcl:2964fb eyr:1994 +iyr:2005 + +ecl:grn hcl:#fffffd iyr:2013 +pid:705547886 +byr:1928 hgt:168cm eyr:2030 + +cid:219 +pid:016251942 hcl:#602927 hgt:163cm +byr:1943 eyr:2029 ecl:oth iyr:2019 + +ecl:gry hgt:184cm eyr:2026 +iyr:2010 +pid:117647952 hcl:#efcc98 +byr:1942 + +cid:243 hcl:#888785 ecl:blu eyr:2027 pid:362697676 +iyr:2011 byr:1962 hgt:154cm + +hgt:154cm byr:1965 ecl:blu eyr:2030 +pid:779104554 iyr:2016 hcl:#435634 + +hcl:z eyr:1996 iyr:1993 +pid:#50f768 +ecl:zzz hgt:62cm byr:2017 + +ecl:grn byr:1988 iyr:2016 +hgt:167cm +hcl:#cfa07d +eyr:2030 pid:951967790 + +pid:320348494 iyr:2018 cid:281 +byr:2004 +hcl:#06a58b +eyr:2033 +ecl:zzz +hgt:76cm + +cid:83 ecl:brn eyr:2028 +byr:1941 iyr:2016 +hcl:#341e13 pid:806979833 +hgt:179cm + +ecl:brn +byr:1982 iyr:2010 eyr:2029 pid:535752324 hcl:#efcc98 + +ecl:oth +hgt:70in hcl:#866857 eyr:2025 pid:203320330 iyr:2018 byr:2000 + +hgt:70cm byr:2015 pid:#218eb5 hcl:#0ec4fe iyr:2014 cid:228 ecl:#c8533a +eyr:2035 + +hcl:#6b5442 +eyr:2020 ecl:hzl iyr:2017 hgt:173cm +cid:330 byr:1988 pid:173148327 + +iyr:2011 byr:1964 hgt:83 ecl:grn hcl:#c0946f pid:931162400 eyr:2028 + +cid:239 +byr:1960 ecl:hzl +hgt:164cm +hcl:#51040b iyr:2018 eyr:2025 + +cid:163 hgt:154cm +iyr:2015 eyr:2027 pid:838964596 +byr:1972 ecl:oth hcl:#efcc98 + +hgt:181cm +eyr:2028 ecl:blu +pid:853714682 hcl:#623a2f byr:1976 iyr:2020 + +cid:225 byr:1957 +hcl:#a97842 iyr:2013 eyr:2025 +pid:511588647 hgt:173cm ecl:blu + +hcl:#efcc98 +byr:1993 +ecl:oth +pid:871652492 eyr:2028 hgt:177cm iyr:2016 +cid:220 + +ecl:hzl +hgt:165cm +hcl:#733820 eyr:2028 cid:57 byr:1973 iyr:2018 pid:018982018 + +pid:491710153 iyr:2012 ecl:#c85046 hcl:#b6652a +eyr:2040 hgt:175cm byr:1981 + +pid:917105765 eyr:2021 hgt:181cm iyr:2019 cid:159 byr:1995 +ecl:gry + +hcl:#9d2ec4 iyr:2011 +eyr:2028 pid:149288934 hgt:63in ecl:blu byr:1960 + +byr:1923 pid:705818464 eyr:2024 cid:221 ecl:oth hcl:#7d3b0c hgt:193cm iyr:2014 + +pid:117111015 eyr:2030 +byr:1967 hcl:#ceb3a1 ecl:blu +hgt:157cm +iyr:2011 + +iyr:2019 ecl:oth +hcl:#fffffd hgt:172cm pid:215010680 +eyr:2025 + +pid:157cm cid:277 +iyr:1976 hgt:159in hcl:#341e13 ecl:#6c7644 eyr:2029 byr:1965 + +pid:787186482 ecl:brn +byr:1980 hcl:#f5dfb9 eyr:2020 +iyr:2018 hgt:188cm + +cid:168 +eyr:2023 hcl:#07c809 +iyr:2013 +hgt:169cm pid:250679100 byr:1945 ecl:gry + +hcl:#6b5442 pid:683134187 iyr:2013 eyr:2023 byr:1965 hgt:171cm ecl:hzl + +eyr:2028 hgt:180cm ecl:blu byr:1952 cid:314 iyr:2016 +pid:720794393 hcl:#602927 + +byr:1982 iyr:2016 +ecl:brn eyr:2027 +hgt:156cm pid:185583837 hcl:#ddbf30 + +hcl:#ceb3a1 pid:987624973 +eyr:2026 +iyr:2013 byr:1988 hgt:175cm ecl:grn + +eyr:2028 byr:1974 pid:350988773 hcl:#a97842 iyr:2015 +ecl:oth +hgt:160cm + +hcl:#b6652a +eyr:2028 +pid:717504683 byr:1970 +iyr:2013 +ecl:gry +hgt:156cm + +pid:453874703 iyr:2015 hcl:#a97842 ecl:hzl byr:1986 hgt:175cm cid:132 eyr:2025 + +hcl:#7d3b0c +eyr:2026 +ecl:brn hgt:154cm +byr:1959 pid:580659686 iyr:2015 + +ecl:amb hgt:191cm iyr:2018 +pid:681417707 byr:1994 eyr:2023 hcl:#c0946f + +eyr:2022 pid:302326561 iyr:2018 ecl:blu byr:1987 cid:89 hcl:#a97842 hgt:184cm + +eyr:2020 pid:457081226 +ecl:blu hcl:#866857 iyr:2011 +hgt:159cm byr:1959 + +eyr:2024 cid:322 byr:1991 pid:210415503 +hgt:69in ecl:grn +hcl:#623a2f + +ecl:blu iyr:2012 pid:524745721 hcl:#c0946f eyr:2026 hgt:176cm byr:1964 + +hgt:189cm iyr:2014 pid:679155617 hcl:#efcc98 eyr:2027 +cid:88 byr:1974 +ecl:blu + +byr:1935 eyr:2029 +iyr:2020 +hcl:#733820 ecl:blu hgt:190cm pid:509009432 + +hcl:#fffffd pid:446558583 byr:1931 ecl:brn iyr:2019 +hgt:159cm cid:146 +eyr:2024 + +eyr:2028 hcl:#efcc98 pid:330588516 hgt:65cm +byr:1972 iyr:2014 ecl:oth + +ecl:blu hgt:175cm cid:197 pid:068138358 eyr:2023 iyr:2017 hcl:#0441c6 byr:1999 + +byr:1992 hgt:193cm +ecl:brn iyr:2018 hcl:#866857 pid:905992465 +eyr:2022 + +hgt:95 byr:1965 +pid:810311252 eyr:2034 hcl:z iyr:1985 cid:254 + +hcl:#c0946f byr:1985 eyr:2030 hgt:161cm iyr:2010 ecl:gry pid:616639221 + +iyr:2011 eyr:2023 hgt:172cm cid:260 ecl:hzl +pid:594747312 +hcl:#a97842 byr:1937 + +eyr:2028 pid:134536806 cid:83 +ecl:brn byr:1928 +iyr:2015 +hcl:#fffffd hgt:157cm + +iyr:2016 +pid:035433923 hgt:180cm ecl:amb eyr:2027 byr:1934 +cid:195 hcl:#583d02 + +eyr:1936 cid:130 byr:1969 hgt:74cm hcl:50e1a7 ecl:gmt iyr:2010 pid:82008848 + +hcl:#733820 +eyr:2020 +hgt:174cm iyr:2018 ecl:hzl byr:1983 pid:087167304 + +byr:1972 hcl:#888785 eyr:2020 pid:593301831 iyr:2013 ecl:hzl hgt:188cm + +cid:282 hcl:#888785 hgt:170cm ecl:oth eyr:2029 +byr:1942 pid:014356555 iyr:2020 + +byr:1966 hcl:#623a2f ecl:oth hgt:165cm +eyr:2028 iyr:2012 pid:558908746 + +pid:#4f5b92 +hcl:#6b5442 hgt:188cm +byr:1994 iyr:2014 cid:127 eyr:2020 +ecl:oth + +hgt:153cm +ecl:brn iyr:2020 +eyr:2026 hcl:#18171d +pid:101990935 +byr:1932 + +iyr:2011 byr:1981 hgt:157cm hcl:#c0946f +eyr:2029 pid:545992967 +ecl:utc + +byr:1929 hcl:#602927 iyr:2018 ecl:grn +eyr:2027 +pid:256056759 +hgt:178cm + +iyr:2016 pid:813526512 eyr:2027 hcl:#20799c +ecl:blu +byr:1971 hgt:185cm + +iyr:2021 eyr:2040 +pid:5135078781 byr:2013 hcl:#7d3b0c hgt:62cm ecl:#dedf53 + +iyr:2013 +byr:1979 cid:269 hgt:179cm pid:871628606 eyr:2026 hcl:#53b66c +ecl:grn + +eyr:2020 +hcl:#ceb3a1 byr:1988 ecl:oth iyr:2012 +pid:558371571 + +pid:908462345 byr:1972 hgt:183cm ecl:gry cid:51 hcl:#af82df eyr:2023 iyr:2019 + +pid:106942710 ecl:hzl +hgt:157cm hcl:z eyr:2025 iyr:2016 +byr:1998 cid:271 + +iyr:2011 ecl:oth pid:191542220 +byr:1951 eyr:2027 hcl:#c0946f hgt:190cm + +eyr:2028 hgt:193cm pid:235913726 iyr:2012 hcl:#325350 +ecl:amb + +iyr:2018 hcl:#a97842 ecl:hzl byr:1988 pid:481250123 +cid:328 hgt:165cm eyr:2028 + +ecl:#a51d9c hcl:91236c pid:2538922220 byr:2017 eyr:2004 +iyr:2026 hgt:174 + +pid:959660262 eyr:2022 cid:339 hgt:170cm iyr:2012 +hcl:#cfa07d ecl:brn + +hcl:#866857 +ecl:dne hgt:70cm eyr:2013 iyr:1980 pid:780067045 +byr:1950 + +iyr:2011 +byr:1981 +pid:902964474 ecl:gry eyr:2021 +hgt:154cm +hcl:#602927 cid:156 + +iyr:2016 +hgt:156cm ecl:brn cid:315 eyr:2023 byr:1997 +hcl:#623a2f pid:339892714 + +ecl:brn hgt:73in cid:184 byr:1960 eyr:2024 iyr:2014 hcl:#888785 +pid:561655785 + +pid:579663338 +eyr:1977 +hcl:#ceb3a1 ecl:grt hgt:188cm +byr:2017 +iyr:2018 + +byr:1941 eyr:2029 pid:252436521 +hgt:170cm ecl:hzl + +hcl:#888785 +pid:378073052 +hgt:185cm +cid:343 byr:2001 +ecl:oth iyr:1988 eyr:2029 + +pid:286459107 byr:1973 eyr:2023 ecl:oth cid:273 +hgt:184cm + +pid:406853460 eyr:2028 hcl:#b6652a +hgt:179cm +iyr:2020 cid:346 +ecl:brn byr:1973 + +hcl:#ceb3a1 eyr:2026 pid:001798001 ecl:gry hgt:157cm +cid:235 +byr:1968 +iyr:2013 + +hcl:#b6652a hgt:151cm pid:504383643 iyr:2018 +ecl:brn byr:1990 +eyr:2021 + +hgt:164cm iyr:2015 hcl:#888785 byr:1998 pid:045813631 cid:237 +ecl:grn +eyr:2026 + +hcl:#733820 hgt:172cm +eyr:2030 iyr:2015 ecl:gry pid:507769390 byr:1979 cid:212 + +cid:138 hgt:176cm hcl:#efcc98 +eyr:2024 byr:1984 +ecl:brn iyr:2015 pid:968062470 + +hcl:#733820 iyr:2015 ecl:oth +eyr:2028 pid:431922630 hgt:160cm byr:1941 + +iyr:2017 +eyr:2023 ecl:grn cid:294 byr:1969 +hcl:#602927 pid:720065302 +hgt:67in + +ecl:gry byr:2002 eyr:2024 hcl:#7d3b0c +hgt:174cm +iyr:2012 pid:296913847 + +pid:42057861 hcl:bb7ace eyr:2023 byr:2013 hgt:188 ecl:#312118 iyr:2024 + +eyr:2021 +byr:1958 +hgt:170cm ecl:brn iyr:2012 +pid:064919306 cid:349 hcl:#602927 + +eyr:2022 +pid:248168906 +iyr:2013 byr:1996 hcl:#cfa07d +hgt:151cm ecl:hzl + +cid:301 ecl:brn hcl:#fffffd +hgt:183cm +pid:806659387 +eyr:2021 +byr:1970 iyr:2013 + +cid:192 +iyr:2013 +ecl:#5ad460 hgt:64cm +pid:001255475 byr:1984 eyr:2027 hcl:#cfa07d + +iyr:2012 pid:194936105 eyr:2028 byr:2000 ecl:oth hcl:#733820 hgt:158cm + +cid:323 +hcl:#a97842 eyr:2027 pid:625573908 +iyr:2019 byr:1987 ecl:grn +hgt:191cm + +pid:997956152 hgt:193cm ecl:hzl eyr:2024 byr:1983 +cid:113 hcl:#888785 +iyr:2013 + +iyr:2017 hgt:153cm hcl:#733820 byr:1984 eyr:2025 pid:138608494 ecl:blu + +ecl:brn +byr:1987 hgt:174cm +iyr:2013 pid:459148475 eyr:2023 hcl:#623a2f cid:266 + +byr:2000 iyr:2017 ecl:brn pid:469155516 hcl:#b6652a +eyr:2027 hgt:193cm + +byr:1967 eyr:2028 pid:064940030 +iyr:2016 +ecl:gry hcl:#18171d hgt:74in + +iyr:2020 hcl:#efcc98 +byr:1968 hgt:164cm ecl:hzl pid:834180009 eyr:2022 + +pid:021397352 +iyr:2018 hcl:#341e13 byr:1978 eyr:2022 ecl:oth hgt:67in + +hgt:160cm cid:213 ecl:#a46ef7 pid:157cm eyr:2020 iyr:2020 byr:1923 + +iyr:2016 +cid:235 pid:454188395 eyr:2022 hgt:73in ecl:hzl +hcl:#7d3b0c byr:1964 + +iyr:1930 eyr:2033 hgt:76cm pid:41117341 byr:2028 ecl:utc +hcl:#6b5442 + +pid:41316572 +hcl:#cfa07d byr:1965 eyr:2027 hgt:179cm iyr:2010 +ecl:grn + +hgt:152cm pid:886168412 iyr:2027 +eyr:1989 hcl:9993d6 byr:2005 ecl:zzz + +pid:661569613 hgt:166cm +hcl:#18171d iyr:2010 byr:1922 eyr:2030 ecl:brn + +byr:1958 +ecl:blu pid:978855125 +eyr:2020 iyr:2019 +hgt:190cm hcl:#18171d + +hgt:68in iyr:2012 hcl:#ceb3a1 eyr:2028 ecl:oth pid:067088299 +byr:1975 + +eyr:2020 +pid:507464869 hcl:#fffffd hgt:156cm iyr:2016 +byr:1957 ecl:blu + +cid:259 eyr:2025 byr:1954 +ecl:gry hgt:167cm pid:832017347 iyr:2020 hcl:#623a2f + +hgt:69in hcl:#a97842 +pid:426496916 byr:1947 eyr:2021 iyr:2015 ecl:oth + +eyr:2025 ecl:blu pid:543125976 cid:192 iyr:2017 +byr:1920 hgt:154cm hcl:#a7ecdc + +hgt:69in iyr:2017 +byr:1932 hcl:#6b5442 +ecl:hzl cid:349 pid:494399909 eyr:2029 + +eyr:2030 ecl:gry hcl:#6b5442 +iyr:2010 byr:1938 cid:100 pid:477259022 hgt:67in + +hgt:145 byr:2009 hcl:#b6652a iyr:2015 +pid:180cm ecl:dne cid:315 eyr:1920 + +byr:1930 hgt:65in +eyr:2022 ecl:blu +pid:671271699 +iyr:2010 +hcl:#b6652a + +byr:1989 eyr:2020 +ecl:hzl +hcl:#341e13 +pid:625435489 +hgt:189cm cid:72 +iyr:2013 + +hgt:184 +byr:2025 ecl:#a1368a eyr:2038 cid:111 +iyr:2025 hcl:z pid:7952164402 + +pid:165478949 +hcl:453b30 ecl:amb hgt:75cm eyr:1987 iyr:2015 +byr:1960 + +eyr:2022 ecl:blu +cid:100 +hcl:ead803 iyr:2025 byr:2018 + +eyr:2024 +ecl:gry hgt:167cm +hcl:#623a2f cid:259 +byr:1932 iyr:2014 pid:360279704 + +hgt:191cm +ecl:oth pid:070592110 cid:275 eyr:2027 +iyr:2011 hcl:#4a4252 byr:1937 + +ecl:blu cid:256 iyr:2017 eyr:2027 hcl:#341e13 hgt:150cm +pid:152140902 byr:1923 + +eyr:1972 iyr:2020 ecl:gry hcl:#888098 byr:1974 hgt:188cm +pid:586853292 + +iyr:2014 +ecl:brn hcl:#866857 eyr:2020 +hgt:184cm pid:422142863 byr:1999 + +iyr:2025 ecl:amb eyr:1928 hcl:#18171d byr:2008 hgt:62cm pid:42120034 + +byr:1923 cid:85 iyr:2017 +hcl:#602927 eyr:2026 pid:922322363 +hgt:68in ecl:amb + +cid:97 hcl:#602927 +pid:436567964 +eyr:2028 iyr:2016 +byr:1994 + +hcl:#9c166d +eyr:2025 pid:834335216 iyr:2011 ecl:blu byr:1946 hgt:174cm + +byr:2018 iyr:2027 hgt:187in +cid:118 eyr:2038 +ecl:lzr hcl:z + +ecl:blu +byr:1998 pid:186cm eyr:2026 hcl:z iyr:2027 hgt:70in + +hcl:#623a2f eyr:2020 ecl:amb iyr:2010 pid:743059641 cid:240 hgt:169cm byr:1957 + +ecl:oth pid:089778639 cid:305 eyr:2027 iyr:2012 byr:1935 +hcl:#efcc98 + +hgt:151cm hcl:#602927 cid:97 byr:1968 iyr:2014 pid:447599233 +ecl:oth +eyr:2030 + +pid:621084188 byr:1941 ecl:gry cid:188 iyr:2012 hgt:75in eyr:2028 hcl:#6b5442 + +hcl:#c0946f +ecl:amb +hgt:66cm +pid:185cm byr:2022 eyr:2039 iyr:2024 +cid:321 + +hgt:177cm byr:1954 ecl:amb pid:445374119 cid:137 hcl:#341e13 iyr:2010 +eyr:2020 + +hgt:160cm +byr:1923 +ecl:grn +eyr:2021 iyr:2012 +pid:286304911 +hcl:#18171d + +hgt:153cm byr:1933 +iyr:2015 +ecl:gry +pid:365430749 eyr:2029 + +cid:294 pid:817081355 byr:1969 +eyr:2030 ecl:oth iyr:2014 hgt:181cm hcl:#623a2f + +iyr:2011 +ecl:gry hgt:177cm eyr:2025 pid:446342686 hcl:#b6652a byr:1991 +cid:241 + +byr:1999 +iyr:2018 +cid:306 hcl:#18171d eyr:2021 +hgt:188cm ecl:gry pid:473752814 + +byr:2002 hcl:#733820 +pid:867697169 +ecl:gry hgt:165cm eyr:2020 +cid:316 + +eyr:2026 cid:59 hgt:175cm byr:1993 pid:531385722 +ecl:hzl hcl:#733820 + +eyr:2027 +cid:50 pid:433963708 +byr:1969 +iyr:2011 ecl:hzl hgt:164cm +hcl:#b6652a + +eyr:2020 ecl:gry hgt:186cm pid:917147781 hcl:#341e13 +iyr:2016 cid:68 + +pid:857547233 hgt:64in +cid:274 +eyr:2020 ecl:hzl iyr:2019 hcl:#866857 byr:1948 + +eyr:2022 hgt:183cm pid:557280094 +byr:1936 hcl:#602927 iyr:2019 ecl:oth + +byr:1933 eyr:2023 +iyr:2020 +ecl:blu hgt:72in + +pid:682285472 +ecl:blu hgt:166cm eyr:2021 +byr:1993 +hcl:#ceb3a1 iyr:2011 cid:266 + +iyr:2012 cid:172 ecl:#04ce29 eyr:2021 hgt:160cm byr:1926 pid:2235389773 + +eyr:2029 hcl:#cfa07d pid:387564370 cid:276 hgt:74in +ecl:amb +byr:1926 iyr:2019 + +eyr:2026 +hcl:#733820 +pid:230583200 byr:1997 +ecl:brn +iyr:2010 +hgt:179cm + +byr:1946 hcl:#866857 ecl:#87b6f4 hgt:150cm pid:298537901 +eyr:2024 iyr:2011 + +hcl:#cfa07d +byr:1961 +eyr:2022 +hgt:167cm +pid:230816154 ecl:oth iyr:2018 +cid:164 + +pid:167899852 hcl:#18171d eyr:2023 hgt:173cm ecl:amb byr:1960 iyr:2010 + +hcl:#866857 +hgt:165cm +ecl:hzl pid:325078465 byr:2002 +cid:61 eyr:2025 iyr:2020 + +cid:268 +hcl:#a97842 iyr:2011 byr:1966 pid:450468785 +eyr:2030 hgt:173cm +ecl:gry + +hgt:181cm +eyr:2026 cid:77 pid:229016136 ecl:grn byr:1929 + +ecl:#ad9ae9 hcl:z iyr:2012 +byr:2029 +cid:77 pid:#b1f685 eyr:2015 + +ecl:amb byr:1920 +eyr:2026 hcl:#92e796 iyr:2011 pid:503853254 hgt:186cm +cid:101 + +hcl:#7d3b0c eyr:2022 ecl:amb pid:536474715 hgt:64in +iyr:2026 byr:1924 + +hgt:72in ecl:hzl hcl:#888785 eyr:2030 pid:048654766 byr:1977 iyr:2016 + +hgt:171cm ecl:brn byr:1976 pid:844553043 +eyr:2024 +cid:241 + +cid:243 eyr:2023 pid:998276626 iyr:2011 hcl:#623a2f ecl:oth hgt:183cm byr:1920 + +eyr:2030 +ecl:amb pid:896953299 +hgt:157cm byr:1934 hcl:#9c12d8 iyr:2015 + +hcl:#cfa07d iyr:2011 byr:1974 pid:451819357 hgt:168cm ecl:grn eyr:2024 + +iyr:2018 +pid:908304519 hcl:#fffffd byr:1936 cid:203 +ecl:amb hgt:76in +eyr:2029 + +byr:1967 +hgt:186cm +eyr:2026 +hcl:#ceb3a1 ecl:grn +pid:594830518 iyr:2017 + +pid:20921789 iyr:2024 hcl:z byr:2026 ecl:zzz hgt:153cm eyr:2037 + +hcl:#888785 iyr:2016 cid:323 byr:1958 ecl:gry pid:118638859 eyr:2029 +hgt:163cm + +hgt:167cm ecl:brn eyr:2020 +pid:557999801 +byr:1988 +cid:273 iyr:2011 +hcl:#fffffd + +ecl:gry pid:206008517 eyr:2022 +hcl:#ceb3a1 +byr:1983 hgt:187cm + +eyr:2020 +byr:1931 cid:78 +hcl:#6b5442 ecl:oth hgt:170cm pid:039713280 iyr:2015 + +eyr:2024 ecl:amb +byr:2002 hgt:162cm hcl:#866857 +iyr:2012 pid:696390563 cid:184 + +hgt:189cm byr:1992 pid:712592503 iyr:2012 ecl:oth hcl:#602927 +eyr:2029 + +ecl:hzl +byr:1965 hgt:182cm eyr:2023 +iyr:2014 hcl:#a97842 + +byr:1927 ecl:gry +hcl:#d91aa0 pid:082227536 eyr:2021 +iyr:2011 + +eyr:2003 iyr:1953 byr:1954 +cid:327 hgt:62in ecl:utc +hcl:z pid:#97c11a + +cid:252 pid:98689392 +iyr:2020 hgt:103 +hcl:298df8 byr:1934 +ecl:oth eyr:2012 + +hcl:#fffffd eyr:2020 +byr:1993 ecl:brn +pid:338398225 iyr:2015 hgt:159cm + +iyr:2017 pid:624798709 hgt:151cm eyr:2029 +ecl:gry cid:111 +hcl:#866857 + +byr:2010 +ecl:hzl eyr:1975 hgt:150cm iyr:1930 hcl:159a9a + +iyr:2010 +hcl:#7d3b0c eyr:2024 cid:224 hgt:163cm byr:1971 pid:631469024 ecl:grn + +ecl:hzl iyr:2017 hgt:167cm +hcl:#623a2f pid:417970460 byr:1949 eyr:2020 + +eyr:2030 +hgt:84 byr:2007 ecl:xry cid:153 pid:9655548750 iyr:1957 + +ecl:oth hcl:#733820 cid:336 byr:1996 iyr:2014 pid:736143470 eyr:2025 hgt:182cm + +hgt:69in hcl:#623a2f +cid:126 iyr:2019 pid:638479310 eyr:2022 ecl:grn byr:1935 + +cid:240 +pid:804066884 byr:1987 hcl:#049f0e +eyr:2023 +hgt:174cm +ecl:brn +iyr:2020 + +ecl:amb iyr:2010 +pid:200411701 +cid:70 eyr:2023 +hcl:#341e13 byr:1974 hgt:61in + +eyr:2022 hgt:186cm hcl:#18171d ecl:hzl pid:613033358 +iyr:2014 + +hgt:189cm +iyr:2020 pid:874302209 byr:1928 ecl:blu +hcl:#1c52f4 +eyr:2029 + +byr:2026 +eyr:2007 pid:166cm iyr:2030 ecl:utc +hgt:137 hcl:8e8916 + +pid:781251989 +eyr:2029 hgt:178cm iyr:2010 byr:1942 hcl:#cfa07d + +pid:671017167 eyr:2030 ecl:amb byr:2002 hgt:166cm +iyr:2011 hcl:#7d3b0c + +pid:369327568 byr:1955 ecl:hzl iyr:2013 hcl:#341e13 eyr:2020 cid:90 hgt:154cm + +pid:169149205 iyr:1947 ecl:amb eyr:1977 +byr:2003 +hcl:z +hgt:75cm + +hcl:#cfa07d iyr:2016 +eyr:2022 pid:941218673 byr:1999 cid:186 +ecl:brn hgt:173cm + +hgt:159cm eyr:2021 byr:1962 hcl:#efcc98 +pid:792538993 iyr:2011 ecl:blu +cid:222 + +pid:#994231 byr:2024 iyr:1977 hcl:b98ff6 eyr:2010 hgt:71 +ecl:#875a67 + +byr:2007 +iyr:2023 hgt:141 +eyr:2021 ecl:grt pid:22002588 + +hgt:190cm +pid:524515058 +cid:217 +ecl:grn byr:1999 +eyr:2027 +iyr:2019 + +ecl:dne byr:2019 eyr:1942 hgt:62cm pid:5866040917 +iyr:2018 hcl:z + +pid:754032301 byr:1985 eyr:2029 hgt:185cm iyr:2016 +ecl:oth + +ecl:amb byr:1948 iyr:2010 hgt:157cm pid:153547581 eyr:2027 hcl:#cfa07d + +eyr:2026 byr:1942 pid:368975422 +hcl:#733820 +cid:322 hgt:188cm +iyr:2019 +ecl:blu + +ecl:brn +pid:535822939 byr:1994 +eyr:2027 iyr:2020 hcl:#18171d hgt:193cm + +pid:706755664 +hcl:#7d3b0c +ecl:grn cid:304 +hgt:152cm byr:1972 iyr:2013 eyr:2021 + +hgt:163cm +byr:1922 iyr:2014 eyr:2028 pid:852815945 cid:324 +ecl:brn hcl:53b08b + +hcl:#888785 +eyr:2023 +iyr:2020 byr:1962 ecl:blu +pid:407158186 +cid:269 + +ecl:blu +eyr:2027 pid:567155642 hcl:#a97842 hgt:74in byr:1995 +iyr:2016 + +iyr:2017 eyr:2020 +pid:782403650 +byr:1952 ecl:gry hgt:193cm cid:273 hcl:#efcc98 + +byr:1963 eyr:2021 +pid:639445576 hcl:#c0946f iyr:2013 +cid:306 ecl:blu hgt:154cm + +hgt:68in cid:191 +hcl:#7d3b0c +iyr:2017 byr:1935 ecl:gry + +ecl:brn iyr:2019 +eyr:2021 +hcl:#733820 +byr:2017 +pid:714110829 hgt:155cm cid:178 + +cid:203 pid:455383907 +ecl:grn byr:1965 +hcl:#866857 eyr:2024 hgt:172cm iyr:2012 + +iyr:2018 eyr:2033 +pid:462538213 byr:1974 hcl:#c0946f +ecl:amb hgt:160cm + +hcl:#623a2f +pid:116799148 cid:336 +ecl:grn eyr:2027 +iyr:2020 +byr:1976 + +pid:654088396 +ecl:utc eyr:2021 +byr:2016 +hcl:#866857 +iyr:2030 hgt:191cm + +byr:1939 +eyr:2023 +iyr:2011 hgt:168cm +cid:141 ecl:brn +hcl:#6b5442 + +eyr:2025 hgt:61in +byr:1977 +ecl:brn iyr:2016 cid:198 pid:401742648 + +ecl:brn +iyr:2012 eyr:2027 +byr:1990 hcl:#6b5442 +pid:476691172 +hgt:72in + +cid:176 ecl:oth iyr:2011 hcl:#c0946f +eyr:2028 +byr:1957 pid:959615191 + +byr:2027 +iyr:2021 hcl:#733820 hgt:165cm pid:6155507056 + +iyr:2012 ecl:blu +pid:397461435 eyr:2022 byr:1993 hgt:170cm +hcl:#b59662 cid:185 + +ecl:hzl byr:2015 +hcl:z hgt:185cm eyr:2036 iyr:2017 +pid:172cm + +ecl:oth +hgt:181cm iyr:2019 +cid:113 byr:2000 +hcl:#866857 pid:045077916 eyr:2029 + +iyr:2013 ecl:grn +pid:717028913 byr:1953 eyr:2025 +hgt:191cm hcl:#6b5442 + +pid:825834003 eyr:2027 byr:1941 +hgt:163cm iyr:2010 hcl:#6b5442 ecl:amb + +eyr:2026 hgt:59in +hcl:#e9ebf8 byr:1966 +iyr:2018 pid:677886127 ecl:grn + +hcl:#888785 pid:771218458 ecl:hzl eyr:2029 +cid:153 byr:1991 iyr:2011 +hgt:76in + +hgt:161cm hcl:#888785 +ecl:brn byr:1928 pid:913959218 eyr:2020 iyr:2013 + +hgt:188cm eyr:2026 +byr:1964 ecl:blu hcl:#733820 iyr:2017 pid:874400552 + +ecl:hzl iyr:2017 +cid:59 pid:130750853 byr:1964 eyr:2028 hgt:177cm hcl:#602927 + +pid:200888672 ecl:oth iyr:2016 eyr:2020 hcl:#efcc98 hgt:163cm + +eyr:2026 +ecl:gry +hgt:189cm +hcl:#c0946f iyr:2019 pid:741121671 byr:1971 + +ecl:amb eyr:2028 hcl:#888785 iyr:2017 pid:060053163 byr:1952 hgt:191cm + +hcl:#55c45a +eyr:2022 ecl:blu +iyr:2019 pid:326991534 +hgt:158cm +cid:149 + +hcl:#a97842 iyr:2013 ecl:hzl byr:1941 hgt:179cm + +hgt:68in hcl:#18171d +eyr:2021 byr:1938 ecl:oth iyr:2015 +pid:888616887 + +eyr:2026 iyr:2018 ecl:oth byr:1990 +hcl:#efcc98 +pid:472330538 +hgt:192cm + +byr:1933 ecl:grn hcl:#7d3b0c hgt:74in iyr:2011 +eyr:2028 cid:55 + +iyr:2014 hgt:165cm ecl:blu hcl:#18171d byr:1998 pid:601177268 cid:64 eyr:2027 + +iyr:2011 ecl:grn cid:188 pid:440822084 eyr:2028 +hcl:#c0946f byr:1987 hgt:154cm + +hcl:#f29c57 +cid:114 iyr:2010 +byr:1989 eyr:2023 hgt:61in +pid:166071094 + +hgt:71cm +iyr:2022 byr:1965 +ecl:#bb3dce pid:88829820 eyr:2040 hcl:z + +hgt:62in hcl:#7d3b0c pid:585528668 +eyr:2028 ecl:oth +byr:1941 + +ecl:oth eyr:2030 +byr:1952 +iyr:2018 pid:422437243 hgt:185cm + +pid:054717793 byr:1989 hcl:#18171d +iyr:2014 +ecl:grn +eyr:2025 hgt:151cm + +eyr:2027 +hcl:#cfa07d pid:071196833 +cid:297 byr:1932 hgt:173in +ecl:grn iyr:2016 + +hcl:#6b1c3d eyr:2026 pid:963034490 iyr:2011 +hgt:175cm byr:1961 ecl:oth + +hgt:69in +hcl:#b6652a ecl:oth +pid:771661551 iyr:2016 eyr:2023 byr:1960 + +cid:63 +pid:190cm byr:2021 ecl:#252d02 eyr:1931 +iyr:1966 hgt:101 hcl:dc9531 + +byr:1976 eyr:1925 +ecl:grt cid:203 +iyr:2019 +pid:170cm hgt:181in + +iyr:2014 ecl:amb +hgt:182cm cid:283 byr:1983 +pid:307867769 eyr:2024 hcl:#cfa07d + +hgt:157cm hcl:#ceb3a1 eyr:2026 pid:109243500 +byr:1926 +iyr:2015 ecl:oth cid:330 + +hcl:#602927 byr:1940 pid:389818848 +iyr:2016 ecl:brn +hgt:68in eyr:2023 + +ecl:brn pid:340990019 +eyr:2020 iyr:2011 +hcl:#fffffd hgt:175cm byr:2001 + +cid:264 +hgt:154cm pid:128094068 +hcl:#888785 iyr:2013 eyr:2027 +byr:1929 ecl:amb + +cid:270 hcl:#602927 hgt:156cm iyr:2018 +byr:1983 +eyr:2020 pid:621875145 +ecl:gry + +cid:345 pid:68093057 ecl:grt +iyr:2019 byr:1992 hgt:109 hcl:35d6e4 eyr:1976 + +pid:714839913 ecl:grn hcl:#733820 iyr:2020 hgt:153cm +byr:1996 eyr:2027 + +pid:820650878 eyr:2027 +hcl:#866857 byr:1957 +iyr:2015 ecl:grn hgt:167cm + +pid:600488426 +hcl:#ceb3a1 hgt:151cm +ecl:amb eyr:2021 byr:1936 iyr:2015 cid:326 + +cid:256 hgt:169cm +iyr:2014 +pid:261369952 eyr:2028 byr:1982 +ecl:brn +hcl:#733820 + +eyr:2021 iyr:2011 +pid:745066100 hcl:#3bbbd5 byr:1998 ecl:amb hgt:166cm +cid:257 + +ecl:#a38be3 cid:256 hgt:154 eyr:2033 +byr:2006 pid:5154675209 hcl:z + +hgt:160cm cid:103 ecl:gry byr:2000 hcl:#a97842 eyr:2026 pid:528503931 +iyr:2010 + +eyr:2025 cid:131 iyr:2011 +byr:2001 +pid:346722892 +hcl:#cc0362 +hgt:168cm +ecl:brn + +hcl:#ceb3a1 iyr:2012 +hgt:188cm pid:760916817 byr:1985 +eyr:2020 ecl:oth + +hgt:179cm +cid:317 +ecl:amb pid:411265118 iyr:2018 +byr:1982 hcl:#733820 eyr:2028 + +byr:1927 hcl:#7d3b0c iyr:2020 ecl:gry +hgt:155cm pid:937138356 eyr:2021 + +hcl:#efcc98 pid:793804751 eyr:2022 byr:1961 hgt:193cm iyr:2016 cid:222 + +pid:715207875 hcl:#18171d eyr:2030 byr:1974 hgt:157cm ecl:blu +iyr:2019 + +eyr:2022 pid:134624402 hgt:159cm cid:154 +byr:1938 hcl:#cfa07d +iyr:2018 ecl:gry + +ecl:oth eyr:2021 +cid:259 pid:0484880795 hcl:#cfa07d hgt:189cm iyr:2019 byr:1958 + +byr:1960 +pid:752967111 iyr:2010 hcl:#52a9af +hgt:151cm ecl:amb eyr:2025 + +eyr:2028 byr:1974 ecl:oth cid:348 +hcl:#b6652a hgt:164cm iyr:2018 + +eyr:2029 +byr:1942 cid:232 iyr:2016 hgt:193cm +hcl:#733820 pid:175cm ecl:oth + +byr:1990 hcl:#b6652a eyr:2028 iyr:2011 pid:054326137 hgt:153cm ecl:blu + +byr:1933 +pid:659875882 hgt:181cm +eyr:2023 iyr:2012 +ecl:grn hcl:#18171d + +ecl:grn iyr:2019 hcl:#866857 byr:1946 +eyr:2023 hgt:193cm pid:494553757 + +cid:331 +ecl:blu eyr:2021 hcl:#733820 hgt:174cm +iyr:2010 byr:1950 pid:405416908 diff --git a/input/day_05 b/input/day_05 index 876517b..30f47a7 100644 --- a/input/day_05 +++ b/input/day_05 @@ -1,1388 +1,837 @@ -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 +BFBFFFBLRL +FFBFFBFRLR +BBBFFBBRLL +FBFFBBFLRL +BFBBFFFLRR +BFBBFBFRRL +BFFBBBFRRL +BFBBFFBRRL +FFFBFBBLRR +FBBBBBBLRL +FFBBFFBRLR +FFBBFBBRLL +FBFFBFFLRL +FBFBFFBRRR +FBFBBFBRLR +FFBBFBFLRR +BFBBBBFLRL +BFFFFFFLRR +BBFFFBBRLR +BFBFBFBLRR +FFBBFFBRRR +BBFBBFBRLR +FBBFFBFRLR +FBFFFBFLRL +BFFFBFBLRR +BFFFFBFRLR +FBBFFFFRRL +BFFBBBBRRR +FBFBFFFLLR +BBBFFBFRRR +FBFBFBBLRL +FBFBBBFRLL +FBBFBFFLRL +BBBFFBFRLR +FFBBBBFLLR +BFFFBBFRLR +FFBBBFFRRR +BFFFBFFLRL +BFFBBFFRRL +FBFBFFFRLR +BBFBFBBRRL +FFBBBBFRRR +FBBBBFFRRL +FBFFFBFRRR +FBFFFBFLLR +FFBBFBBLLR +BFBFBFFLRR +FBBFBFBRRR +BBFBFFFRRL +BFFBFFBLLR +FBFBFBFRLR +BFFBBBFRRR +FBBFFFBLRL +BBFBFFBRLR +BFBBFBBRRR +FBFBFBBLRR +BBFFFBFRLR +FFBFBBFRLL +BBFFBFBRLR +FBFBFFBRRL +BFFBFBFLLR +BBBFFFBLRR +BFBBBFBRLR +BBFFFFFRRR +BFFBFFFRLL +FBBFBFBLRL +BBFFBBFLRR +BFBBFFBLRL +FFFBBFBLLR +FFBFBFBLLR +FFFBBFFRLR +BFFFFBFLLL +FFBBBBBLLR +BFFFBBFRLL +FBFBBFBRLL +BFFBBFBLRL +FBBBBFFRLL +BFBBBFFLRR +BBFBBFFRLL +FFFBBFFRRR +BBFBBFBRRR +BBFFFBFRLL +BFFBFBFLRL +FBBFBFFLRR +BBFFBBBRLR +FFFBBFBRLL +BFFBFFFLLR +FFBBBBFRLL +FFBBFFBLLR +BFFFFBBLLR +BBFBBBBRRL +BBFFBFBLRL +FFBBFBBLLL +BBFFBFFRLR +BFFFBFBRLR +BFFBBBBLLL +BFFBFFFRRR +BBFFFBBRLL +FBBBFFBLRR +FFBFFBBRLL +BFFFFFBLRL +FBFBFBFRRR +BBFFBBBLLL +BFBFBFBRRR +FBBBFFBLRL +BBBFFBFLRR +BBFFBBBRRR +FBFFFFBRLL +FBFBFBFRRL +BFBBBFFRLR +FBFFFFBRRL +BBBFBFFLLL +FFBFBFBRLL +BFBBFFFLLL +BBBFFFFLLL +BBFFFBFRRR +FFBBBBFLRL +FBFFBBFLRR +BBFBFBBRLL +BFBFBBBLRL +FFBFBBFLLR +BFFFFFBRRL +BFFBFBBRLR +BFBFFFFRLL +BFBBFFFRRL +FBBFFFFRLL +BBFBFBBLLR +FFBBBFBLRL +FBBFFFBRRL +FFBBFBBLRL +BFBFFBBLLR +BBFBFFFLLR +BBBFFFFRLR +BFBBFBFRLR +BFBBFFBRRR +BBFFBBFRRL +BBFBFFBRRL +BFFBFBFRLR +BBFBFBBRLR +FFBFBFFRRL +BFBBFBFLLL +BBFBFFFLRL +BFBBBBFLLR +BFFFFBBRRL +BBFFFFBRRL +BFFBBFBRRR +BFFBBFBLLR +BBFBBBBRLL +FBBFBFFRRR +FBFFFFBLLR +BFBFFBFRLL +FFBFFBBRRR +BFFFBFBRRR +BBBFFFBLLL +BBFFFBBRRR +FBBFFBBLLL +FBFFBBBRLL +BBFBFFFRLR +FBFFFBBRLR +FFBBBFBLLL +BFFFFBFLRR +FFFBBFBRLR +BBFFFFBLRR +FBFFBFBRRR +FBBFBBFLRL +BFBBFFBLLR +BBBFFBFLLR +BFBFFBBRRL +BFFBFBFRRL +BFFFFBFRRR +BBBFFBBRRL +FBBFFFBRRR +BFBFBFFLLL +FFBBFBFLLR +FFBFFBFLRL +BFBFFBFRRR +FBFBBBFLRL +FFFBFBBRLL +BBFBFFBRRR +FBBFBFFRRL +BBFFBFFLRR +BFBFFBBLRL +BBFFBFFLLL +BFFFBBBRRR +BBFBBBBLLL +FBBFBBBRRL +BBFBBBFLLL +BFFBFFFRRL +BFBFFFBRLR +FFBBBBFLLL +BFBFFFFRRR +FFBFBFBLRR +FBFFBFBLRL +BBFFFFBLLL +BFBBFFFLLR +FBBBBFFLLL +BFFBFBFRLL +BBBFFFBLRL +BBFBBFFLLL +FBFBFBBRRR +BBFBFFFRRR +BFBBBFBRRR +FBFFBFFRRL +FBFBBFFRRR +BFFFBBFLLR +FBFFBFBLLL +BFFFFBBLRL +FBFFFFFRRR +BFFFBFFRLR +BBFFBFFLRL +FBFFBBBLRR +FBFBFFFLRR +FFBFBFBRLR +FBFBFFFRRR +FFBFFFFLLR +BFBFFBFLRR +BFBBFBBLLL +BFFBBBFLRL +BFFBFBBLRL +BBFFBBBRLL +BFBFFFBLLL +FFFBBBBLRL +FFBFFBBLLR +BFBBBBBLRL +BFFBBFFRRR +BBFFBBFRLL +FBBBBBFLLL +BFFFBFFLRR +BFBBFFBLRR +FBFBBFFRLR +FFFBFBBRLR +BBFBFFBLRL +FFFBBBBLLR +FBBFFFBRLR +BBFBBFFLLR +FBFBFBFLLL +BFBBFFBRLL +BFBFFBFLRL +BBBFFFFRRL +BFBFFBFRRL +BBFBBBFLRL +BBFBBBBLLR +FFBFFBFRLL +FBBBFBFLLL +BBBFFFBRLR +BBFFBFFRRL +BBFBBBBRLR +BBBFFBBRRR +FBBFBFFLLR +BFBBFBFLRL +FBFBBBFRRL +BFFFBBBLRL +BBFBFBBLLL +FFFBBBBRRR +FBBBFFBRLR +FBBBFBBRLL +FBBBFFFLRL +BFFFBBBLLR +FFFBBFFLRR +BFBFBFBLLL +FFBFFBBLLL +FBBFFBFRLL +FFFBBFFRRL +BFFFBBFLRR +FBFBBBBLRL +FFBBBFFRLR +BBFBFFFLRR +BFBFBBFLLL +BFFFFFBLRR +BFBBFBFRLL +BBFFFFFLRR +BBFBBBFLRR +BFBBBBBRLL +FBBFBFFRLR +FBFBBBBLRR +FFBFBBFRLR +BFFFBBBRRL +BBFBBBBRRR +BFBBBBBRRR +BFFBFFBLRL +FFBFBFBRRL +FBBBBBBRLR +FFBFBFFRLL +FFBFFFBLRR +FFBBFFFRRR +FFBBBFBRRL +BFFFBFFRRL +BFBBFBBRLL +FFBFFBFLLL +FBBBBFBLLR +FBBBFBBLLR +FFFBFBBRRR +FBBBBFBLLL +FFBFBBFRRR +BFBBBFFRRR +FBBFBFBRLR +BFFFFBBRLR +FFBBBFBRLL +BFBFFFFLRL +BFBBFBBLLR +BFFFFFFRLL +FFFBBBBLLL +FBFFBFFLRR +FFBBFFFRRL +FFFBBBFRLL +BFBFFBFLLL +BBFBBFFLRL +BFFBBBBRLR +BBFBBFFLRR +BFFFBBBRLR +FFBBFFBLRR +BBFBBFBLLL +BFFBBFBRLL +FBFBBFFLLL +FBFBBFBLRR +BBFFBFFLLR +BFBBBBFRLL +FFBBFFBLRL +BBFBFBBLRR +BFBFFBBLRR +BFBFBBFRRL +BFFBBBBRRL +BFFBFFBRLR +BFFBFFFRLR +FBFBFFBRLL +FFBFFFBLRL +BFFFBBFLRL +FBBBFFBLLR +BFFBFFFLRR +BBBFFBBLLR +BBFBBFBLRR +FBBFFBFLLL +FFBBBBFRLR +BFFFBFBRLL +BFFBBBBLRL +FBBBBBBLLR +FFBBFBFLLL +FBBFBFBRLL +BFFFFBBLLL +FBFBFFFLLL +FBBBBFFLRR +FBFBBFBRRL +BFFBFFFLLL +BBFFFFBLLR +BFFBFBBRRR +BFBBBBBLLL +FBBBBBFRLR +FFFBBFFLLL +BBBFFFFLRR +FBBFFBBRRL +FFFBBFBRRR +FBFBBFFRRL +FBBFFBFRRR +FBBBBBBRRR +FBFBBBBRLL +FBBFBFBLLR +FBBBFFFLLR +FFBFFFFRLL +FBBBBFBRRL +BFFFFBFLRL +BBFFBBBLRR +BFBFFFBRRR +BFBFFBBRRR +FFBFFBBRRL +FBBBFBBRLR +FBBBBBBLLL +BFBBBBFRLR +BFBBFFFRLR +FBBBFBFRRL +BFFFBFBLRL +BFFFBFBLLR +FBFBFFBLLL +FBBFBFBRRL +BFBFFFFLLR +BBFBBBFRRL +BBFBFBFRRL +BFBFBBFRLL +FBBFBBBLRL +FBBBFBBRRL +FBBBFFBRLL +BFBFBBBRRR +BFBFBFFRLL +FBFBBBFLLR +FBFFBBBRRL +BFFBBBBRLL +BBFFBFFRLL +FFBFBFBRRR +BFBFBFFLLR +FBFFBBBRRR +FBBFBBFRRL +BFBFFFBLRR +BFFBFBBLRR +BBFBBBBLRR +FBFFFBFLRR +BFBBBFFRLL +BFFFFFFLLL +BBFFBFBLLR +FBBFBBFLLL +FBFBFBFLLR +FBFFFBFLLL +BBFFBFBLLL +BFFBFFBLRR +BFFFFBBRLL +BBFFBBFRLR +BBBFFBBLLL +BBFBBBFLLR +BBFBBBBLRL +BFFBBFFLLL +BFFFFBBLRR +BFBFBBFLLR +FFBFBFBLRL +FFBBFFFLRL +FFBBFBBRRL +FBBFFFFRRR +BFBFFFFLLL +BBFFFFFRLL +BBFFBBFLLL +FBFBBBFLLL +FFFBBBFRRR +BFBFBBFRRR +FFBBBBBRRL +FFBFBBFLLL +BFBFBFBRLL +BBFBFFBRLL +BFFFFFFRRL +FBFFBBFRRR +FFBFFFFLRR +FBFFFFBLRR +FBBFBBBLRR +BFBBFBFLRR +BBFBBFFRLR +FBFFFFBRRR +FFBBBFFRLL +BFBFBBFLRR +BFFBBFFRLR +BBFFFFBRLL +FBFBBBFRLR +FBFBFFBRLR +FFBBBFFLLR +BFBBFFBRLR +BFBFBFFRRR +FFBBFFBRLL +FFBFFBFLLR +BBFFBBFLRL +FBBBFBBLRR +FBBFBBFRLL +FFBBBFBRRR +BBBFFFFLLR +FBFFBBBLRL +FBFBFBFLRR +BBFFFFFLLR +FBFFFFFRLR +FBBFFFFLRL +FBBFFFFLRR +BBFFBFBRLL +BBBFFBFLRL +BBFFBFBLRR +FBBBFBFLRL +BFBBBBFRRR +FBBBFFFRRR +FBFFFBBLLL +BFBFBBBLLR +BFFFFFBRLL +FFBBBFBLLR +BFFFBFFRLL +FBFFFBBRLL +BFBFBFFRLR +FFBBFBBLRR +BFBFBFFLRL +BFFFFFBRLR +BFBFBBFLRL +BFFFFBFRLL +FBBBFBFLLR +BFFBBFFLLR +FBBFFBFRRL +FBBBFFFRLR +FFBFFBBLRR +FFBBBBFLRR +FFBBBBFRRL +BBBFFFBRLL +BFFFBBFRRR +BBFBBFFRRR +BFFBBBBLLR +FFFBBFFLRL +BFBBFFBLLL +FBBBBFBRLL +FBBFBBFRRR +BBFFFFFLLL +FFBFFFBRLR +BFFBFBBLLR +BFBBFFFRRR +BFBBBBBLLR +FFBBBBBRRR +BFBBBBFLLL +BFFBBBFLRR +BFFBFBFLLL +FBBFFBBRRR +FFBBFBFRLL +BBFFFFBRRR +FFBFFFFRLR +FFFBBBFLLR +FFBBFFFRLR +BFFBBFFLRR +FFBBFFFLLR +BFBBBFFLLL +FBBBBFBRLR +FBFBBFFLLR +FFBFBFFLLR +BFBFFFBLLR +BFBFFFFLRR +BFFFFFBRRR +FFBFBFFLRL +BFFBFFFLRL +BFFBFBBRRL +BFBBFFFRLL +BFBBBFBLLL +FBBFBFFRLL +FFBBFFFRLL +BFFBFFBRRL +BFBBFBBRLR +FBFFFFBLLL +BBFBFBFLLL +FBBBFBBLRL +BFBBBFBLLR +FFBFBFFRLR +BFBBFBBLRL +BFBFBFBLLR +FBBBFFFLRR +FBFFBBFRLR +FBFFBBFRRL +FFFBBFFLLR +FFBBBFBRLR +FBFBFFBLLR +BFBFBBBRRL +BFFBBBFLLL +FBBFFBFLRL +FBFBFFBLRR +FFBFFBBRLR +BFFFBFFRRR +BBFFFBBLLR +FBBFFBFLRR +FFFBBBFLRL +FBFFBBBRLR +FFFBBBBRLL +FBFFFFBLRL +BFFFFFFRLR +FFBBBBBRLR +FFBBFBFRRR +FBFFBFFRLR +FBFFBFBRRL +FFBFBBBRRR +FFBBBFFLLL +FBFFFBBRRR +FFFBBBFLLL +BFFFFFBLLL +BFBBBBBLRR +BFFFBBBRLL +BFBFFBBLLL +FBFBFBFLRL +BBFFFFFLRL +FFBBFFFLRR +FBFBBBFLRR +FBBFFBBRLL +FBBBFFFRRL +BFFFBBBLLL +FFBFFFBRLL +FBBBBBBRLL +BFBBBBFLRR +FFFBBBBLRR +FFBFFFBLLL +BFFBFBBRLL +BBFFFFBRLR +FBBFBBFRLR +BFFBBBBLRR +FBFFBBFRLL +FBFFFFFRRL +FBBBBFFRLR +BFBFBFFRRL +FBFFFFFRLL +FFBFFFFRRR +FBBBBBFRLL +FFBFFFBRRR +FFBFFBFRRR +BFFFBFBRRL +FBBBBFBRRR +BFFFFBFRRL +FBBFBFBLRR +BFFBBFBRLR +FBBBBBFLRR +BBFBBFBLRL +BFBBBBFRRL +BBFFBBFRRR +FBFBFFBLRL +BBBFFBBLRL +BFBBFBBLRR +FFBFBBBLRR +BBBFFBBLRR +FFBFBFFLLL +FBFBFBBLLR +BFFFBBFLLL +BBFBFBFLRL +BBFFFFFRRL +FFBFFFBLLR +BFFFFFFLRL +BBBFFFBRRR +FBFFBFFLLL +FFBBBBBLLL +BBFBBBFRLR +FFFBBFBLRL +BFFBFBBLLL +BFBFBBBLLL +FBFBBFBLLL +FFBFBBFLRL +FBBFFFBLLR +BFFBBBFRLL +FBFBBFBLLR +FFBFFFFLLL +FBBBBFBLRL +FFBFBBBRRL +FBFFFBFRRL +FBFFBBFLLL +BFBBFBBRRL +FFFBBBFRRL +BBFFFBFLRL +BFFBFFBLLL +BFBBFBFLLR +FBBFBBFLRR +BFBBBFFLRL +FBBFFFFLLL +BFBFBBFRLR +FBFBBBBLLR +FBBBFFFRLL +FFBFBFBLLL +FBBBBBFLLR +FFBBBFBLRR +FFBBFFBRRL +FBBBBBBLRR +FFBBBBBLRL +FFFBFBBRRL +FFBBBFFRRL +FBFBFBBRLR +FFBBFFFLLL +BBFBFBFRRR +BBFBFFBLRR +FBFBFBFRLL +FBFFBFBLRR +BBFBFFBLLL +FBBBFBBRRR +FBFBBFBLRL +FFBBFBFRLR +FBBBFBFRLL +BFFBFBFRRR +FBBBFFBRRR +BBFBBFBRLL +BBBFFBFRLL +FFBFFBBLRL +BFFFBBBLRR +BBFBBBFRLL +FBFFFBBLRR +FBFFFBBLRL +FBBBBBFLRL +BBFBFBBLRL +BBFFBBBLRL +BFFFFBBRRR +BFFBBBFRLR +FBBBFBBLLL +FBFBFBBRLL +BFBFBBBLRR +FFBFBFFLRR +FFBFFBFRRL +BFFBBFBLLL +BFFFBFFLLR +BFBBFFFLRL +FBBFFBBLRR +FBBBBBFRRR +FBBFBBBRLR +BFBFBBBRLL +FBFFFBBRRL +FBBBFFBRRL +BFBFFBFLLR +BBBFFFFRLL +FBFFFFFLRR +FBFFFFBRLR +BBFFBBFLLR +FBFBFFFRLL +BFBBFBFRRR +FBBBFFBLLL +BFBFFBFRLR +BFFBBFFRLL +FBFFBFFLLR +FBBFFBBLLR +BFBBBFFLLR +FBBBBBBRRL +BBFFBBBRRL +BBFBFFFRLL +FBBBFBFLRR +BFBBBBBRLR +BFFBFFBRLL +BFFFFBFLLR +FFBFFFFRRL +BFBFFFFRRL +FBBFBBBRRR +BFFBBFBRRL +FBFBBBBRRL +FBBBFBFRLR +FFFBBFBLRR +BFFFBFBLLL +BBFBBBFRRR +BFFBBFBLRR +FBFFBBFLLR +BBFFFBBLRR +BFBFFFFRLR +FBFFFBFRLL +FBFBFFFRRL +FFBBBBBLRR +FBBBBFBLRR +FFBBFBFRRL +BBBFFFBLLR +FFBFBBBRLR +FFFBBBFRLR +BFFFFFBLLR +FBBFBFBLLL +BBFFFBBLRL +FBFFBFBRLL +BFBFBFBRLR +BBFFFBFRRL +FFBFBBFLRR +FBBFFFBRLL +FBBBFBFRRR +FFBBBFFLRL +FBBFBBBLLR +FBBFBBBRLL +BBBFFBBRLR +FBBFFFFLLR +FBFBBBFRRR +FBFFFFFLLR +FBFBFFFLRL +BBBFFFBRRL +BFBBBFBRLL +FFBFBBFRRL +FFBBBBBRLL +BBFFBBBLLR +BBFBFBFLRR +FBBFFBBRLR +FFBFBBBLLR +FBFBBFFLRL +BFFFFFFRRR +FBFBBFFRLL +FFBFBBBLRL +BBFFFFBLRL +FBFFBFFRRR +FFFBBFBLLL +BBBFFBFRRL +FBFFBFFRLL +FBBBBBFRRL +BBFFFBFLLL +FFBFFBFLRR +BBFFFBBLLL +FBBFFBBLRL +FBBFFFBLLL +BBFBBFBLLR +FFBBFBBRLR +FBBFFBFLLR +BBFBFBFRLR +BFFFFFFLLR +FBFFFBFRLR +BFBFFFBRRL +FFBFBBBLLL +FBFBBBBRLR +BFFBFBFLRR +BBFBBFBRRL +FFBBFFBLLL +BFBFBFBLRL +FFFBBFFRLL +FBFBFBBRRL +FFBBBFFLRR +BFBBBFBRRL +FBFBBBBRRR +BFBBBFFRRL +FBFFFFFLRL +BBFBFBFRLL +FFBFFFFLRL +FFFBBBBRLR +FFBFBBBRLL +FBFBFBBLLL +BFBBBFBLRR +FBFFBBBLLR +FFFBBBBRRL +FBBBBFFLLR +FBBBFFFLLL +BBFFFBBRRL +BFBBBFBLRL +FBBFFFBLRR +FBFFFFFLLL +BFBBBBBRRL +BBBFFBFLLL +FBBBBFFRRR +FBBFFFFRLR +FBFFFBBLLR +FBBFBBFLLR +FBFBBFFLRR +FBBFBFFLLL +BBFBBFFRRL +BBFBFBBRRR +BFFBBBFLLR +BFBFFFBRLL +BBBFFFFRRR +FFBFFFBRRL +FFBBFBBRRR +BBFFFFFRLR +BFFFBBFRRL +BBFFBFBRRL +BBBFFFFLRL +BBFFFBFLRR +FBFFBFBRLR +BBFFBFFRRR +BFBFBFBRRL +BFFBFFBRRR +FBBFBBBLLL +FBFFBFBLLR +BBFBFFFLLL +FFBFBFFRRR +BFBFFBBRLL +BBFFFBFLLR +FFBBFBFLRL +BFBFBBBRLR +FBFBBFBRRR +FBFBBBBLLL +BBFBFBFLLR +BFBFFBBRLR +BFFFBFFLLL +FBFFBBBLLL +FBBBBFFLRL +FFFBBBFLRR +BBFFBFBRRR +BBFBFFBLLR +FFFBBFBRRL 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 index e8f8b82..1784e14 100644 --- a/input/day_06 +++ b/input/day_06 @@ -1,130 +1,2199 @@ -..........#.....................#...................#.......................................................................#....# -.........#................................................................#....##......#........##.............#.................. -............#..............#..#.................................................................#................................. -..............#.....#................................................................................#...........................# -............................................................................................................#.............#....... -.........#..........##......................................#......................................#......#...#.......#...#.....#. -..#...................................................#.................#....#........#.....#.................#................... -.....#............#.#..#..................#.......................#................................#......#..............#........ -#.................................................................#..........#.......................................#.#.......... -..##...................#..................................#..#.................................#...#..#.#.#.........#...##........ -..#..........................#...............#...............#..........................#.................................#....... -................##......#......#......................##.............#........#................................#.#..#............. -.............................................................#.#.......................................................#.......... -.....##.............................................#.......................#...............#...............#..#...#....#......... -.#.........................#..................................#..........#....#...............................................#... -.......................#..#.............#......#.....#..#................................................#....#........#.......... -...............#.....................#................#...................................#......#........................#....... -.......................#....#..............#.......#...........................#....................................#.#........... -..#..................#...........#........................#............#...................#......................#.............#. -..............................................#........................................#..............#...........#.........#..... -............#.................#...#..........#.#.....................##.........#................##...........##............#..... -..................#.......#..................................................................#....#..................#.......#.... -..........##......#...............................................#.................................#.......#.............#....... -................................................................................#.......................................#......... -.....#........................#.............##......................#.......#.......#...............................#............. -..#.......................................##........#.............#...............................................#............... -.............#.....#..........................................#...................#.................................#..........#.. -.........#............#..#....................#............##.............#..................................#.................... -........................................................#..........#.............................#................................ -......................#..............................................................................................#............ -.......#............#..#........................#...............#.......#.............................#......................#.... -...................................................................................#........................#........#..#.....#.#. -..#.......#......#...................................................................................#..#.....#................#.. -.....#...#......................................................#...................#.#..............................#.#.......... -..#.#.....................#....................#...........#.................#........#..#.........#........#..................#.. -....#......#.......#.....................................................##...........#........................................... -........................#......#......................#......#.....................................................#.......#...... -............................................................#..........................#...#.#..................................#. -.#..........#..............................#.....#.............................................#.................................. -#..........................................#......#.............#...........................................#.........#........... -......#...............................#..#......................#.....#.......#.....#..#......................#.......#........... -........................................#..#.................................#......#.......................#..................... -.#................#...........#.........#.............................................................#........................... -.....#.......................#.................................................................................................... -.............#................#............................................#...........#......................#..................# -#........................#....#.....................#................#..##.............#......................#...#............... -....#....................#....#.#..................#...........................................................#......##.......... -#............#..........##............................................................#........................................... -...........#..................................#..##................#.............................................................. -..........................#..............................................................................#...............#........ -.......................................................................#...........#...#...........#..#.....#..................#.. -.........................#....#.......#......................#....................................#............................... -..#..................#...................................................#......................................#................. -..............#....##........................................#..................#................................................. -..........................#............................................#...................#............................#......... -......#...............................#..........................#.............................#.................................. -...................................#.............................................................#..............#................. -.................#...#.......#..............#.#...........................................#.......#.....#......................... -........................#.......................................#..#.........................#...##...#........................... -....#..#.............#........#.............#..........#......#.........................................#....#..#................. -.......................................................................#...........#......#.....................#...........#..... -#.#..............................#................................................................................................ -.#.................................................#...................#.......................................................... -..............................#.............#.............................#.....#............#.................................... -.#...............................#.......#...##.#.................#............................................#.................. -.............#....#.................#.........#..............#....#............................................................... -......................#.#..........................................................................#................#............. -.#....................#.....#................#.....................#..................#......................#.................... -.............#.#............#......................................#.......................#......................#............... -.#..#...#...................#..................................................................................................... -...........................................................................#.....................#................................ -...........#.............................#......#................................................................................. -..............#.................................................#.##........#..........................#.........................# -..................#...#........................................................................................................... -........#.....#......................#..#....#...#.#......................................#.#............#........................ -.....#..#.........................................................#......#.....#...........#..................#...#..........#.... -......#.........................................#......................#........#...................................#............. -..........................................#........................#........#.............#........#..#........................... -.......#..............#...................#...........................................#.............#............................. -..............#....#....#......#...........................................................#..........................#........... -..................................................................................#.......#...................#...#....#.......... -.................#........................#........#...#.....................................................#........#........... -...........................#......^.#..............#.#.....................#.#...........#....##.......#.......................... -.............#.....#.........................................................................#..........#......#..#.#............. -...................................................................#.......#.......#...........................................#.. -.......#.........#.......................#...................................................................#..........#.....#..# -.....................#...............#...#..#.....................................................#.....##.##..........#.......... -.......................#.......#..................................#.................#.....................................#....... -................................................#........#....................#........................#.......................... -......#....#..#....#.......................#....#...#.............................#............................#......#........... -...................................................................................................##.#.....#.................#... -.................#...#....................#........................#...............##.....#...........#........#.............#.... -.....#............#......................................................................#................#....#.................. -........#.............#..................................................................#....#.......#........................... -.#.......................................#.......................................#....#.............................#............. -...#.............................#..................#............................#.....................#.....#...........#........ -....#......#.................................................................................................................#.... -.....................................#..........#.............#......................................#............................ -..#...#....#............#.....................................................#..#................................................ -.....#.......................................................#............#..........................#...........#................ -#.....................#..............#................................................#..........................#......#........# -........#.........................#........................#................#.......................#............................. -...........................#........#............................#.......#..............#......................................... -......###.........................................................................#.........#........#................#...#....... -............#........................#................#.................#........................#.............#.......#.......... -........#.#................................#.....................................................#................................ -.#...#............#........#........#..#...............................................#............................#............# -...#.............#.........#....................................#..............#.......................................##......... -...#...........#.....................................#.........#................#......................#............#............. -..................#....................................................##.......##..........#...............................##.... -........................#.........#...........#............................................................###.................... -....................#.......#....................................................#...#..............................#............# -............................#..................................................................................................... -......#........#........................#..........#..........#.......#..........................#................................ -....................................#..............#...#.#......................................................................#. -.....#.....#...#..............................................###......#..............#.........##......#...............#......... -........................#.........................#...............#...............#.#........#.....................#.#............ -...............#..............#........#........................................#..........#........#......#...................... -.....................#..........................#...............................#........#.......#.....#...................#...... -.........#...........................................#.............................#....#.......#......#..#....#.................. -.........#...#........#....................#.......#..#...#..............................................................#........ -..................#......................................#........................................................................ -........#.....................................................#..#...........#........#......................#...#....#.....#..... -...........................#........#....#.........................................................#.............#................ -.....#.#.........#................................................................................#............................... -...#............................................#......................#.......#.#...............#............#................... -.........#................................#.....#...........#.#....................#...#.....................................#.#.. -..........#.#....#......#.........#....#.....#........#...........................#............................................... -............#...............#............#..........#.............................#............................................... -#.#............#.....................##................................................#....#.................##.................. +zvxc +dv +vh +xv +jvem + +mxfhdeyikljnz +vwzbjmsrgq + +vbtjnh +vhejnbti +vthnjb +tsbhjnv + +cbjemdvp +jdvuylp +ofpjaqgsrxvdn +dzvpbj +vbktpdj + +knyvdhsemu +sdyumkgvh +muyvdskh +syhkuvmd +dvmykshu + +rmantzovbsuxiljkchfgdqew +vficzosgwlmrdtqkueajbnxh +davqlntibxhojesrkugpzmwfc + +ifdmgrcve +bkqal +gxcwvt + +xeiokblasch +toxjlsbnciha +sovycihlabx +ximhylocabs +hixsolabc + +iyfkvmpolta +thpqodzifxc + +iexunoyhwv +ovweiyuhxn +uhojnvyxeiw + +vbncamhzojtqrlpse +wujapcidzx +zxjiuacwkgfdp + +bygewhzsnqvxaoc +sngqvepohyzdwxcab +yoxwzmgvesbqhcua +cqtbwehiavofzsgylx + +rxanvifdup +xuvpnfria +rfnpvixua +npiuxfarv +vnifuxpra + +ysrktfhc +trfkcysh +ktfycrsh +rhckstyf + +nq +kqin +nq +qn +nq + +yorbujt +evqkmscp + +fitkprweso +fszkmoretwpi +ptyoswrekim +iuwbrsgeockpajt +yewksitpro + +gtyaemflvc +fyvlecgmati +vgfyclemta + +k +tj +uebpy +vyma +ibdy + +p +p +p + +r +r +lya +b +r + +cht +hct +cth +tch +hct + +qdxpas +dpxsha +parlyekqsx +sxuotvpwaz +jqxspymae + +ngycrw +wgnv +sngw + +psb +us +s +s +s + +xnodk +dxok +tkxdo + +n +n +n + +tysg +gtys +syg +eghslqry +gyts + +qliwfgatpbdcy +aqwflpdygtcb +ypdcglqtwabf +dwgcytlbapqf + +nwvlqbusparkf +jhfbvnsqpr +nprqbzfevs +nvrqhboexmspfy + +tgr +rgt +gtr + +jokfqv +jqk +qjk + +fuv +mvuf +vfu + +mfw +mwf +fmw +fmw + +kt +jp + +fklnagsztb +znmtsfalpj + +o +qb + +h +peqyon +az + +n +n + +eagyvpmjqxs +qghjsapny +jayrqsgp +qasygjp + +yctzugn +ytzcgu +cuytgz + +bsfxcygptnlk +xrgocylkifuen + +os +wakdftzgh +losn +pn +yp + +pie +ei + +zpsxeb +tgynfiw +zomvqu +ludk + +s +s + +wuon +ngw +wn +nw +wn + +omrdjkzeb +ncdjuzborkm +zkebrdajmo + +tjwaxm +iztwvod +wqt +txwr +wt + +lpcbfwiksnvdhrqjut +punidbscqtrwjvkfhl +vrcqukphwjsdbtflin +dvkwlgnhutsrcjbqipf + +spzlowvtxdkjinfc +indjlksczxfptvo +czmaxkqnfpbvyshjdliot + +aqspmnkxie +trjhfclyogd +zwavixpbeu + +mozewqhxkduajgy +mogjekqnfuywzhxda +ozhkaxegyumwqdj +ajdzogmehwqrkyux + +qemykxdwipjfa +wdxaplmeyfkiqj +xmqplaekifdwzj +mjixwqzaedkfp +ofpmwxkqjeadi + +gpjydb +jpystgkd +gzjdpy +jpgyd +pgjydxh + +drockgqe +evanghozbi + +kfg +lmfwig +gf +fgsj + +zjfnabowyrtmxcgl +ycrjxazgfowbitlnm +hrlwegxokbqzatcnjfmy +jcobagxflzntymwr +grzotfxcymlwavbunj + +iamdhcgfynqzos +gyszifcnavdolhqm +qmnwziuropsacdgyh + +mwlgcedjtknxsuy +estmwlxuydjkci +hctlyawmxkjseud +jutsxdycwlkmie +mtwqyskbflxjzvcdeuo + +sdfwjm +wdsm +ygmqsxdei + +u +u +u + +dutb +dubt +dutb +tdu +idtu + +sqpfzwlvcjtx +haiv +dveyohgb +kuvhm +vik + +myzxofuacqsgi +kcamifojuybgqs + +mthngfuvykwci +numzktjydcxwio + +aspdgtikq +qpkgdtisa +qsgkdptia +pqtuakzdigxs +pdkqtiasg + +fityomxdwlscjazhkqp +pmzrcjhvntsobfq +shztqgmrjofcp +jmcngqhoputzefs + +whjgxi +wxjoihg +gxjwih + +hirpefgxsa +gahfytkz +qdjlzvwfahg +hbaofwgvc + +dhcnfgy +fyhdgc +gyctdhf + +hbmconewlqgsdzk +jqflbowkdsgc +hwkobvdcsqeilgn +lkcogsaypdwxbq + +enzrdgqyu +gvqrtoihlaj +qrgs +qpeurgzkxn + +grjdenycstpfbihqo +bfkhlgjrpeysomtvidqc + +fxmqujr +wmvghur +dpaeyko + +untpyr +urtpyn +apnutry +uptyrn +nustyrepg + +ofualjwvq +jeyoqru +yuxqioj +ushtogmdpqjcknb + +txeyfwrhl +xrhfytelw + +nu +niu + +rbmuneiz +neibzurm +mnerbizu + +mvtkp +vmpkzt +mpvkt + +vakc +erq +b +ijftomxy +zsg + +yptu +tpayoub + +zsqvdfw +zdswvfq +qzwsfdv +qwzdfsv + +pbwvzadgyturskqoefncxhmjl +thazxruyscfqndvpjklbgomwe + +xnomrqyzpe +ieudmxroqvbnz + +cldqr +ecdqr +ercqd +cdwrq + +kwzqcagfxvhjromti +hfsjcqxibokgravztmw +atkrogwjcxvfmzhiq +gwhztkxacfvrimqoj + +ztbqli +lobdrhgt +rbltoyh + +wfh +fh +hf +fh + +rnxkztpmi +umzigxnh +zyxilqnsm + +iox +oi + +ovugqjpxkshczewmr +smpgxuqzlehkwrvaocj +civspxkmhjwuzegoqr +jergszqvhkxucpomw + +mzsrlcfqpuaex +rtxaqnsjczvf +rxsuiazqcdf + +zvmltjegwxyfihnsaouq +tmwlgxyhoendfiaq +nrgptwaxleoqfihmyk +tlqhiawmnoyfegx +nhlwfcagqyotxmei + +dfoyublxhzajwktrv +olrfzuyphd +fynohuiqemlszr + +nmwedzq +qewzdn +zqnedw +qnzwedp +dqezwn + +lvugjzmsec +mgnlqsjzudvw + +yasmrkxvnpch +yxabnvhpskrdmcl +hvnkarsyxpmc +myhvconkpaxrs + +pfelbgs +a +vriu + +vfy +oj +izagebph +ck +mv + +hn +h +bjhtr +h +h + +saixpwbhqdverzcyfnktluo +kuqtfhewypnrbgvcdliozxs +deiyptgkwrzqlohbvxfucsn +bynqihpjwecotlfvzusdrkx + +yxvfnlwz +ecvwlfbgnz +rfphonqviwlz +nezbwvufl + +i +i +i +i +i + +hvbatqdzu +zvaqtumldb + +hqxbn +hqbn +hqbn + +ymikcgxdph +kmduhyxqenpil +kphygxmid +hidfkzxypm + +gve +eygv + +chds +hsdc +dcsh +hcsd + +pgakuncrze +rpackxegnz + +nhypde +ncepyd +ndpey +ydenp +yecndp + +qgjpeu +dfma +uwnfvsja +ohxcltz + +emgqlacpfvjhux +iudjrhwvfsxplmge + +fmwbpeyxna +wxdnafyeuibkj + +rqhzeaojuigyvp +ovtixs +ixov + +ms +m + +u +v +u +u + +yo +yo +yo + +rhnmlxbvdteckzpsjaw +cwzdraljthpnkxmeibvs +wavdlhjezskmbrnpcxt +pqadwkrmjbecxlnsthzv +zkpbawrdhnclsmtexvj + +djecv +jewcd +dejcb +dvjce +ecdj + +adiotklhj +oakyljdthi +laticokjdh +cialdtykjhfo +kadoequjtlih + +xcrfloupby +lufciypr +hrpcuyxfl + +fwngabh +njfgbwha +hgafbwn +bnhgawf +fbamhngw + +fwqe +qfmvup +fqa +fqe + +us +us +su +su + +lobh +b +bezjmi +iblz +sxbtav + +tjkdlfwm +klwmjfdt +lcwfvjmdktq +wlkfdtjm +kmdwltfj + +ngrzftbhoevylpiscd +rhvsfbliwkndcaxzoejyp +pfizbnldechsryov +csnrdfibyvpolzeh + +bhszfutjkrdxyeic +iscrkhbjwdlyxzefp + +rncodaythzpgelbu +udcnathrbsogelzy +yuhwglzreancitojbd +yhelzuodacnrbtg + +rv +fwla + +cuqsfzalw +caqzwlfus +wvcuflszaq +saqlcuzfw +uwscqaflz + +hnp +pnh + +y +y +ergy +y +y + +bmexpongud +pgktrwhbneqaxov +uiocxdgnebps + +vxtckwno +uenb + +xgomqzsuivnab +xusnvoqimgbza +vqizsuxbnamgo +zumvgxansqboi + +s +tsy +lf +rczxhvaopjew +ltm + +ipvefjzuhs +hiecsvzu +egykiushqbzdmovx +izhvesau +virsuhez + +ld +lg + +xnvszluechwptgm +uczsgowtpvlnmx +zmwglrpscuvtxyn +xmcstnvldzpguaw +miwblxuzgcptjvksnq + +ftwx +zcritxpbo +txsf + +buzcyxlmoknsvqrdpwta +iseplfgmrnjbwyvhtxk + +cmjpkingdflra +pcinrfladmkug +icrmngljadkpf + +saehfjb +dtuheqwbgxyonksjlc +ehvmjsb + +fcty +qopy +hyfv + +djkcm +jklmbd +mhrdkji + +xaropbcylemuh +benjalhducrpy +ecypvsklubhtirwfa +azrynhepulcb + +xe +xe +xe +ex + +os +os +asob +so + +omtnjhdvcw +ujotewxndvkfb + +svqlbwrctd +qfcbltsh + +eof +ebosn +owfe +xmyoe +rvmoew + +lmaus +ulam +auml + +ky +e +f +o +e + +figyhsul +fguyhlsi +lyhfigsu +yuglfshi + +myc +cmyd +myc +mcy + +dpnbhltm +mp +pmua +opxm +kvpgmuf + +hk +prv +rh +ixm + +umlcksxonaqft +bednjkpgirm + +tj +fxjtl +tcmj +tgzbvoprkqwu +ist + +bzats +haosb +abqsk +abgs +wvbfeuxasn + +knwbzryjvde +jdebkvryzcn +djbzykenv +euyfnkavdzbxmj + +srgkpw +apqbxusc +tpmwq +injolypfd + +onxflkzsqwetmdrayupbijv +blkorzdvyxiuawgnqpmstef +fsnpxiueltmzovwrabyqdk +bfxsyekrnvdqzoutwpiagmhl + +jahltpfywcnobux +hcwfadpkyzms +oglqhpifavcwyx + +migjhyvpnf +ufjyqv + +txoci +z +izvugb +rpydhl +xbm + +ajlfb +bfl +jslof +fzrnmlqek +ofdl + +crbuzmjlnsoixgyatf +gkbasourfjcimlxtnv +ndmwxstgfoubrcljia +qmfoxlhnrubetgjsaci + +msr +ir + +ypv +vp +vp +rpv +pv + +jquxr +hngqptklaeuimrw +frbdvoucq +drusqy +xqdzur + +ifnuymdhesgzpjkroqwc +nqshkiwoyfcupmjgrezd +cpqmjwreogdyhuznfkis +pzijugdfykreocnqhswm + +wletxi +twlxe +tjewrlmx +sflciwxet + +cqmtspovlhxzwknijgdbya +jktgvsnfmobiwxplqzyc +oniglefctyxvbzpsqkmjw + +aqbujkmecp +jcakubpeqm + +ms +s +g +d +s + +ymb +bmy +tbym +zmby +zymb + +zmajf +afd + +saqutcgmzpvrx +qzumvpcraxgts +zcmgpquxnrsavt +uxztgakmcqsypvr +xmvqurazcptsg + +xgcnvwikzmh +jualdmfogexcp +vrixcgqmbt +gcxms + +hlf +jzeubrawvgonf +yqxcpkhf + +wpkbqaver +kwenvqrpbd +pswekvrqb +vbepwrqk +rkweqpvb + +r +ef +eqh +e + +nvzfi +znmev +ohnlvzk +vnezjc + +whkjfmbtausedyvqx +tmqxhkfsydevuwba +srvfbdkymwtqxiehcupa +lsatxumedbwfkvyhq + +aligpe +glpaie +aliepg +eilagp + +xvigpscledkfwjbztn +sgejnlvxdtbzfckpiwh +vlcwftebgjsndpzixk +swkzngbdcexifltvjp + +zrethjknvsdwf +qldrsgybijfhz + +tlhogxqens +habqtneudxljgks +xqtsnelhmgo +qlnteghxs + +bhc +ec +ch +jgiyc + +xzfioelc +ozilcexf +zfeoxcli +clefxioz + +uqjkybfsehwxzlptrni +caryzpjnukwlxesgtbhf +jzwkubtlsypqhneforx +xlrwkspjyufnzebht + +tvzuoab +bv +bgv +bv + +ltujriwpmyna +jtrmpw +mwtspjr +tmorwjp + +tyjsqfripxz +rpzxytjqsif +xtyrspijzfq +ctixjyfzrsqp + +ycjihklnd +ezvuqn + +chtgvuilo +uvgticloh + +hmgyx +yghlx + +oejuvpaigsrqh +pijsveugqroha +eviqopasurjgh +iroqaphsuevjg +qauzoirjghsevp + +gumpokcdtinjberaxqfz +xdounkjezmrpfbicqgt +pzfgicekuymqnrxodbjt + +npy +nyp +ypn +ynp +ypn + +xfhucsdlpveoir +mnzobifxtkr + +hy +yh + +iumnsyqgw +wgyismd +rdmgwiyhfs +xzgywmis + +dwfplygjx +vuhewxszq +bxnrmocki +xtyea + +ouyqrtczxwj +xqtyujwocrzb +qjxuyrotkwcz + +qjtcyaoexnvl +nxtaqkjloce +tzcongqajpxle + +olubpxmfdayik +leqomjitfbay + +lygezhjmbi +clvphtkud + +vp +pv +pvkfw +pmv + +rpsclgeuhmkja +mcgypeuswakhio + +ajdpyugzbcswtei +pcadiemunsbgw +ludvapgecqsfbwi +elsugdcfnhbipwa + +vfzoqrbgjycuenwlxdts +fgdnclwtoyxqvuesjrzb +ejatdrohipbxucyvnwzfsqgl +utsloejxznvwybdrfgcq + +vwkaomqupbitzrh +pvawbkoztumqhr + +ijbcxau +cijuoea +cjifuyqa +cubtxaji +jxcaiu + +zsankwocrhb +dchzrbkmaswon + +jdcfne +nfedjc +qeczfjn +fcejqn +jnefvc + +vpzmjnb +zbvjqdys +zbxpdjmial +ktouerbjgwz +jsbzhc + +zbsi +zisb + +txvngrdas +vadsrgtx + +qgnvriol + +a +a +a +f + +mvuywsiaqcl +nqavfwhsicz + +yuomdcgnvwhakel +auwkhgoycmlevn + +icagyksq +crsahngi + +vb +ftlgxroupjyis +cvh + +vcimkpuafwqbryogjxdt +mxyftdriubhawgjcvpkq +rybptdfhaoxkgvmjuciqw +idxrkpygcwvltaefmbqju +trmjbiqpnyhvscwxafukgd + +esbdajqhvl +jdqlszev +foedswyvlunq +ixevsdtblmq +rvetlqsdk + +islfcy +yif +bify +ioymf + +hrcqst +pecr + +gwd +wdg +dgw +dgw + +ksyqndmahzgxejfp +sexhgkfzdapyqmjn +dejzykngpamhfqxs + +fmohepc +pucg +cp + +xvdmorgbsnawjlecztykpif +rsmwdvfplkencbzaotgjix + +wjhkg +gbkh +dklegsrmhy +hukgw + +flwu +lnzckx +vetd +myj +xwcp + +vjhnftpyr +nfhjvyrpt + +lne +nel +nle + +hgqjcse +chfja +jqcus +kozlctmiy + +h +h +h +h +h + +lwco +wloc +tlkuwco +lwoc + +egzxalry +zyxaklpge +zlwergaxy + +nghrpie +nqz +au +ytcdsfw +lbj + +jkcetobxnsyqwfdzuglv +gsnwvmzjxiteryacp +njcshegytvzxw + +qtsf +st +ts +ts +tps + +ckmnriay +sytrcng +ncywrg +ncygr + +rcnyivhla +ebgfdotjuks + +tfjcihobxywuvpezarkg +hckgoruvbxzenjipaywft +fwhtyrvebajgpkcuxoiz +oaruytpwzikbfhjxevgc + +oaxzdr +dopg +opzak +woqg +notveuy + +l +l +l +qn +m + +dvjuhlfmectponaxwyib +yfaltvohpnquirmzjdcxsb + +ib +bil +ib +bi + +sd +lo + +s +wsvef +va +jwvf +rdho + +or +lor +kro + +ze +e +e + +teh +ef +ek +fe + +dfbzgqpsk +pzgfaydsuxq +pgfqdsz +kzrfgqsdwp + +rxqgndcawfb +loyuzbmejivkhs + +jilybertvwkqcma +nuelmho +ledhomnuz +esfml +gxzpelm + +mikrjtbophlqduwsexvcy +mbrqlycjvskdwithuopex +qlwrcduykbmxsovijthep +xevmqplwtjyckbouirhds +bmytdrsxvupciloewqjkh + +wrnkojbmtzvchulxaisepyfdq +xicryqvwkumtozjdhsflegpabn + +yjxpwakhd +klhj +kjih +nshrgujk +skjhm + +fasz +aef +gmqipcfanvt +hsafl + +m +m +m +m + +ksyargzucfq +lyvjrmapbhqwt + +b +b +by +b + +d +dx + +lqdmrovwifbhpkg +dqvofhgzwipkmlsrbn +ihmvkdqbroflgpw +bghqvfipwodlkrm + +qzuabnldjsf +nabfzldjq + +ihkpj +skhj +khj + +pfhzgidaoumyclqwjb +oubaqdmhlzgjfcwyip +maqwihopcbdlzyfujg +aydlupjizwhofcbgmq + +dcifuhzpj +udizhcfj +uzcrijdhmf +uhfdcjize +dxbjhzaifuc + +mijthslvq +vslmjqhi + +yilmjrbsaugeqv +sokhewyczmgufabjv +maxbtsguvyejdlp + +bdysxeouwcn +otszxpnm +wbsxonkr + +btwjys +bjy +jby +bjy + +elobcuyqvps +ubeloqvyspc +elvcypobusq +qbcsuyeplov + +zshbqdmcxntwokevlpjugr +lubzdvwrksnhqcptmgyexjo + +csmyezwqxdpfh +zexmdwhcqsyfp +fdqeysphczxwm + +wx +x +x + +hmudcwtoix +duitheoxcmw +xeomwhtiucd +xmthuoiwdfc + +qgh +xburedysok +izaqc +vac + +c +xd +y + +bcqxzv +czxvb +xcdv + +rstdhfvyupaqnilgkx +thmdrvqkgyxpcewlafu +xkvfgpdtahinlsyquzr + +ionzfdqwacl +aliwfzcnodq +ysdoijcnpqalfwuzr +dialwcqofezn +lqwfncaoeizd + +vjnzhsyokprdwqt +slufncexiadgw + +lmanxbzrvkgju +cotlneyfp + +ehcxwrapivns +nvewjcaspixr +ecpdkqxvastmn + +okgbcwvytiznshexu +kwyszldpbuthoxnj +kotjwysnuzxhb +juzbwshqatknxomy +krzthuxqynfoswb + +rjfbkgapzqiwnecoh +ohjnfzrabwcgqipek +bgmzawokijpnqhfcre +vwherzicopkqbanjufg + +qrwxpijsu +apuwbfirqjs + +rgynxak +uaxpirf + +sf +f +uf +ihxfzdy + +dvcrwsbpziytjqhnuoa +ehgudqsyzkbrnpt +sptdxznyeuhrqb +uqzbhfynsrtdp +srpymhztqbdunl + +rqly +dlaxpwrji +rbljwh + +grascdfzlpxoeqvtyn +xcnfwvryspeukbodzlatg + +oqlucpvdizwh +trakqib +agitjq + +yslaopvredmzcjnighqtfk +ohgqmkatyrledjnifspzc + +xwliz +czvfiqxw +gyswmhb + +fpndrua +aurfp +rpuaf +raufp + +eukjozdbqcxpyl +qyfmkxzboulcpejd +zlquxdybcepjko + +dlgxuchpnmosfr +dxcoshzfguykpvm +awgdpubxiefsohqj + +abop +abvpo +napobc +vapob + +wryqzk +kwqyc +wyzqkr +ykwqzo +ywkqr + +jbk +tkbj +bjkcn +bjk +jkb + +fagxpiolshctke +xtiochpabflsk + +fqdteprviumho +meitwhforpduqv +utfrhempwodviq +nehmyipftrqdlucov + +anqedwylpuv +edoqpufvwzx +tiuqvjhcrpewkmd +psvudgeqw +gdwulbpvqze + +znugjimbptvefqhxr +suxktycoplwe + +qtludyrb +yqrludv +lqdyur +ldqryu +lurkzqyvad + +cwmikuhtgole +tzghimclkue +igtxkcpsmlydhe +khtglcqmuie +imhwecgltk + +pschkw +schnwpultqk +iwzohyej + +dwxbfsq +dswfbqx + +tpby +ptq +qpt +tp + +nqtocmfdjpskriev +agvctwbfxkyj + +kqdewilc +qweluikd + +qbyv +vb + +k +jmp + +lvnqfrdctwzk +xtljgevz +tusihlzv + +vrtojs +rvtzosj +jrcqvsutohwl +zvpsjtgoar + +wkh +wh +hbtl +qh + +jzcdykoafitepbxlqvmns +yqcpzvksoinjlebfdatxm + +rvmjscznedib +smineqdwcjvrz +duejsmrncviz +idrmvcsezlnjf + +qognsitfwkcmvd +qbonaiuktrc +ctkiyqnou +iptrcqjkhzoaxn + +msjqvb +wxfpej + +zgdmaphfuiols +oemgjuxavhcsfzdilp +gopdafmiulshz +zaphsolgumftid +fdgmahupzsoil + +svdmfou +uofmsdv +fuvsodm +uvmodfs +vsoumdf + +pn +gn +np +hsnc +nem + +ondycsxijkhztmb +sdtmkibxjyu + +cfdbyz +dbcfyz +ocfbzyd +bfzdyc +fcbydz + +rycjvanzo +qzecro +zrqoc + +iytqmcheg +gyiectmh + +idcpxfhmwbutsogkazl +iwoydxlchsezubtkgpma +fcwtdoulsphxmibkazg +woshuclmdzibaxpgkt + +lvpfdtgw +jysqnxkozermwc +aywockbuh + +hlgrnxofckptmqvaebsdwi +lhqtonswkdmvrcibfxape +wqimranhsepdotcfbxlvk +ksxwcidfaoqlbrvenhtpm +dncheprotawksmxflvbiq + +mkcyzpfseqg +yqgmkczvt +zbiqoynxkrjd + +qalxdcz +wuchrlszbepm + +tisl +tjoycs + +uixno +zicsuorn +xuqiokn + +qadwnkvfzltpib +ctehovpradslgxujwnmbfiq + +lnbzhdvqucg +udvzgqlcbhn +zcvhlqndgub + +dnkeso +enskdo +sneokd +oknsde +dekson + +aqxyozpubvjgcr +ybpjqrcoagxuzv +yrajbvpogcuqzx +ubarxgvqyjpzoc +xqupgyrovzcjba + +galcpxukjvdfz +jcvgulafdxpzk +gchxzuajvlkpdf + +pds +euwsvd +dsf + +phvzus +rhlztp +phzdla + +rfpbcyd +rbdycpf + +brwpvt +spvtrjb +vytpbr +tbsrvwp +rvtpb + +efmkb +bemkf +bekmf +temfkb + +jyzinpl +efxqapwo +rzup +dpcr + +bawpqhnvmtuxsflizck +avqcthmkpifswzlnxu +slmqcpnxivzahkutwf + +zsakf +skfeza + +neqbzcajpw +onzqsaxhcbwljdm + +do +do +od +od + +rieubqwd +cqrupedvitb +edbqirun + +hvrpjfwud +zpauyi +kbxmeupq +uptwfhgzaj + +vkqf +fhnpyx +gawucsozmdi +tbrpnlekj + +neriadovyhuzkqgc +rqflhpywekobzstjumcn + +bvzumtnorcqhyilgwe +tvnioyzlwmerhgbuq +wylinhomzvetrbuqgdc +ghbltunyeopfrqizmwavx + +jvrieqgfklch +pjndlghruvif + +xbwvzikjtnhfayp +tgcadrqjxuel + +lbxsjvamqwdfutrck +bwrxdaqzuftlmvk +zbtmakqxdfpruwlv + +jrisgax +gries +rigts +girjspe +pasieghr + +reqwbsjzlghkv +gkmvstdcaroqbzjp +qhrvngfjzsblku + +vtilu +i +i + +cmizk +kmcdwi +tokljcmiv + +gcmxdqoysrjhzvunkbtpwfi +rsvhxmjgbdupqotnywkcifz +byczhwkrnmujqoidfpstxgv +romdtyjgwbcpihafslznxqkvu + +kcx +wfsoxa +rcxk +xecl + +xhljmt +lheratmxj +fhmxtcwlb +xhlmaritg +thxmalo + +usfhzlidpmxvonr +luvxhfdcmrpn +xpfldmuhvrn +lumvrnedxfphk +lpvdnfurmxhk + +ukqco +bg +d +x + +wshkqpojltbyexrvfcmaiugd +ptxsveguqfjdimboarwclhky +figabshrwotdqjepmlxkyvcu +imgseacrdxfkyptwhvoblujq +wflyahpcgbrsmvkitejxoqud + +cdfihsmoy +smieho +mhsoi +oenshami +ozlhswmi + +pefjcrt +vdfzpwrtc +ptegcbfr + +uet +uet +eut + +ubyk +ukygtrole +jukzxqhvy +eumldfkyos +knaiuywrm + +ncjzgqof +qafcjnzog +zojngqfc + +uxkryjwflco +psolcaquvwkdnizre + +linoudwypsgbvmx +wugpsidobmnryv +udynmoswgb +kydhcbnozusmegwt +sygbrmudwnafo + +sfkatdxbyqezirv +skvtiarxeybzf +viyzrlampbxtskfe +vyqazixrftsebk + +bjwqhkryuz +zmwkyuqhjrb +qjuwrzhybsk +hyzwujqbkr + +wjahb +jywahb +jbawh +jwhba + +aetucrzpvn +esznbtkoy +eztdn +zonte + +dkpu +mpqcixu +pwu +psu +pudkhyv + +ydtaink +atndubyk +ocytkdain +wnvgzytadkps + +mtne +mten +netm +netm + +l +lz +l +l +l + +wfu +wfu +uwf +uwf + +wcxsiaokerlumjnqyfvhtbgd +abrlxsfzqjuwnotehgmdkcyv + +kate +aekt +akte +teak + +spxqizdhbuokw +pwdxibkuzsqohr +qkszwvaulbpdthoig +ouwqdkzypbhis + +xlskunagot +onxagbulsem +olnsagux + +mhrst +hm +hm +hknuimeg + +pzwtsrfhcmqidnaeybgxkluvoj +keugsjaimzwbxqcvndytfhlpor + +gezfhs +nsyftgje +csifykhegj +fdrgmqvse + +eqagibxdlst +gdisebqlxat +eogtidqaslbx +tdbqslaigxe +eltabiqxsdg + +hopcmlyfka +zleytsfdpcgbn + +iq +qm +ajngr + +jgnh +pdqzyblwuh +tovghj + +jsztoebhflkrncuygi +epzghnfcoljutisryk +ugnysrzftjieholckm +kyeuglztrshjnbfico + +q +q +q +q + +zch +zhc +ch +cdgh +hcw + +nubdmx +xunbd +dxunb +wbxund +udnbex + +dfcauy +afdcuy +dfcuya +uafcdyn +fudyac + +cdgkzushqaevntrop +ndhzqxgksrpotcaev +qetkhzodnsrcgvap +epcvrnokadgzhstq +nozqsrhcegpavdkt + +wbpaec +jmfyir + +wozuxcnegrjikhy +eritoghwxluynkjzc +okrecihjuwxznbgy +nuwirjxkezyghoc + +g +q +r + +jdr +rj +rj + +ogs +szgo +osyugw +sogj +ogs + +ixnlzuvyar +ryznvumlqfexi +icylvxzrnu +lurxhyvzni +nixylzvrut + +xv +xs +x +kfwax +hxu + +dkjohmvtxscaqpyzbie +bdvtjzyhoaecmxpiqks +eyhsxtdoazqvcbpmikj +oevbpqstmxchykizdja +mbvjkyzihcsqepadxot + +vkqgipbhsmczdaery +ckomvhixysdq +cvixystlohmkqd +noyqmhdfuvkcis + +jeqcx +xjqec +jceqx +qcjex + +okncyha +kha +wdqkamrhi + +uajtdcwglpxf +ldxgwjauscp +avciwljdyxupg +lgctupaxwjd +zjblqcxwkrgdanup + +ogpcjvltkizyrubnshf +xrpukdzmcsqlnofejigtvbh +nhvztyfbsuicjlrkopg + +rklv +lnvr +vrsle + +tdoeb +toebz +jbot + +ahntqkrwvxc +htray +tehar + +xbis +q +p + +y +y +y +y + +svpnoi +vsnroip + +rkdetpah +hpdmjrekao +ybzcrhkguew + +ha +qkj +vzcjq + +ubjqtpfxalnv +uftvrxjqpbnla +tbunjpvqfxalh + +izesvwkmyohlqr +jhtqnmyiawpskz + +jdoqhwbftxpavygze +zydthexqgwpkaovnfj +cdsvzfxwtigjamryhqep + +srvdcubotnwkx +dmhpqyzikcslargnj + +tcmoi +ptqeci +buvtic + +kisteoqyjapdrcgfx +sqdxjckrfoytap +ztrdcxsayfkqjop +rjxfkpdaqysozctm +fyctdxsrkaojqpu + +chtzwxr +ozcrsthux + +oqahrvuinct +uavtnforke +ounartv +akunvrot +uonvftmar + +hveqfbrwkdosnay +zofutwkxmpgnljic + +sexkhbfwvagzjq +hryamtnf +phacfo + +yzdbglajf +lybfajgzid +ldjagfbyz +djlyzfbga +lgyjzfabd + +mk +km +mk +mk + +vupse +utvf +veu +noubvi +vslpu + +gxcz +xgcz +zxgc +cgxz + +xsgkotfqldj +ltwmgjofxdsk + +sptmvzkdoxwqrefgn +zwa +ybwjzuchl + +jqdxzbhsctn +ocsat +tokewcs +usktc + +hqctliu +ilchptqu +quchitlj +lcuqtih +ipbqctulh + +wgihvaqrxpczsmflydjuket +mclinzpejdgtsfwqhyxkrvua + +sdgycjfmukezpx +bvwzqrmnti + +xoizphtv +mfzxhitopvag +hzipoxtv +rdtxiopvhz +hnvopxzti + +nluidsozya +sxcqziol + +vf +vf +fv +fv +vf + +x +x +mdtxr + +cspzldibokwq +bnktcpxzwlmeijqvd +pqkcyzhwbild + +zmdrvaxgtiq +jydtqgcm +dqgtxlm +fnxtegsmqrad +gkqmdtv + +zwulxhevg +jtwpxvdczlsh +znxlvhw +laozqhwrvgx +xmlvhfizw + +ixjseyvhfcupkz +jifehpsczxyvu +ixhvyweujozsmpfc +wpfskxljyceiuzhv +gydqfcphztjesirxuv + +bdolgwcua +cogbawu +ugabwco +obtcwagu +wcbuoga + +txjldzfwhbqcspemvgkiyn +kmdswhijztqfyclebvnpgx +szydcbewfnmvpxhijtqklg + +jfxehga +aoxhj +vuaozhjqxi +hxjqvia + +cyknepoazhsml +dhoecksznaylp +uktqnwrhivasbcxlepy +yshcfelankp + +mgbwxcvkrl +tzoauif +qpjntdoysueh + +n +n + +briatspxkzdwue +abdgifsljzuo + +vklpca +lkavpc + +lfxguyd +dzfuex + +zqxod +qxd +qdx +xhqude + +ovigcernldjwzy +idegzjvrwlyn + +cb +bc +rbcxdh +bc + +givtqeysrcjfzumod +isrgtyjavfwcoekdzmuq +zdgtmescqrvyiujfo +ogumbvzcdejyrtsiqf +qdfjsoetuvrymzcig + +fwruktphdzan +zkfpnrthwaud +unrhpzwtdafk + +odlubiyrqzfevnjpakwtgmx +lrsdjkauwbvztfymqginoxpe +omeqnvadjubzwkxritgyplf +fjzywpmkeaotldvguqbnixr + +emayzjxi +axzreyckm + +lduhiqwpjrnkto +ntcrjqdkwphloi +thjdwnklqirpo +tqpdwjilhoknr + +vi +iv +vir + +xoetdfmrbvl +dfebtomilx +fbltmdexo + +hmcuklq +lusqkch +iqjpulckh +suchkql + +gu +gu +gu +ugn +gu + +lvtfiecgrzxhm +tircajhne + +fm +if + +subio +buosi +boisu +busoi + +uwkhxabg +hofrviyqz +wkuhs + +zoswictnpdvjegqymbfura +cmrnqyupavzbfjegidtso +xpycanfhjrulqzvmtdbsegoi +iqdrfstyjgabzenpvckomu + +kzardg +dkzgura +zdagrk +gdrakz 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 index ccef8a7..07b236a 100644 --- a/input/day_07 +++ b/input/day_07 @@ -1,850 +1,594 @@ -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 +dark indigo bags contain 2 clear indigo bags. +mirrored gold bags contain 2 pale blue bags, 1 dark violet bag. +dim aqua bags contain 1 mirrored beige bag. +dim fuchsia bags contain 5 dark red bags, 1 muted green bag, 4 clear indigo bags. +shiny fuchsia bags contain 4 wavy teal bags, 4 dim cyan bags, 4 light green bags, 1 vibrant tomato bag. +posh chartreuse bags contain 2 faded blue bags, 2 pale plum bags, 2 posh coral bags, 4 vibrant bronze bags. +striped red bags contain 3 vibrant red bags. +striped purple bags contain 5 shiny brown bags. +dark silver bags contain 1 dull aqua bag, 4 dim magenta bags. +dark chartreuse bags contain 2 plaid black bags, 4 light bronze bags, 5 dotted cyan bags. +shiny turquoise bags contain 1 shiny brown bag. +shiny crimson bags contain no other bags. +clear purple bags contain 4 bright red bags. +dim white bags contain 4 posh violet bags, 2 light orange bags. +plaid lime bags contain 4 muted silver bags, 2 vibrant tan bags. +clear fuchsia bags contain 3 muted purple bags, 4 striped coral bags. +dim plum bags contain 4 posh purple bags, 2 faded tomato bags, 1 mirrored magenta bag, 3 dull lime bags. +dull white bags contain 4 light silver bags, 5 drab purple bags, 2 wavy orange bags, 1 striped coral bag. +dull tomato bags contain 3 clear cyan bags, 5 dark turquoise bags, 4 light orange bags, 3 vibrant red bags. +plaid tan bags contain 5 faded brown bags, 5 bright bronze bags. +mirrored fuchsia bags contain 5 shiny brown bags, 3 dim magenta bags. +wavy aqua bags contain 2 light beige bags, 3 vibrant white bags, 2 vibrant gold bags, 5 shiny tomato bags. +clear white bags contain 3 dim maroon bags, 4 vibrant brown bags, 1 dim chartreuse bag. +muted yellow bags contain 3 shiny crimson bags, 4 posh purple bags, 2 dim plum bags, 3 shiny tomato bags. +faded cyan bags contain 5 mirrored crimson bags. +posh violet bags contain 3 dim lavender bags, 3 vibrant teal bags. +mirrored magenta bags contain 1 posh brown bag, 4 shiny teal bags, 2 shiny crimson bags. +mirrored purple bags contain 2 clear aqua bags. +wavy salmon bags contain 1 dull aqua bag, 1 dark silver bag. +plaid purple bags contain 2 clear aqua bags, 5 pale brown bags, 3 bright chartreuse bags. +posh teal bags contain 1 pale turquoise bag, 3 drab cyan bags. +pale tomato bags contain 2 dark beige bags. +muted plum bags contain 5 dotted gold bags, 5 shiny plum bags, 4 dull teal bags. +wavy red bags contain 3 clear turquoise bags, 4 shiny chartreuse bags, 4 dotted maroon bags. +wavy tomato bags contain 4 dark magenta bags, 1 faded bronze bag. +shiny green bags contain 3 bright black bags, 2 clear turquoise bags. +plaid turquoise bags contain 4 bright maroon bags. +vibrant silver bags contain 5 bright chartreuse bags, 2 posh white bags, 3 drab tomato bags. +posh olive bags contain 3 vibrant purple bags, 3 shiny crimson bags, 5 faded chartreuse bags. +clear bronze bags contain 5 dark magenta bags. +wavy teal bags contain 1 dim plum bag, 1 pale aqua bag, 2 posh purple bags, 2 pale orange bags. +muted beige bags contain 5 dotted brown bags, 4 mirrored green bags, 2 plaid blue bags. +shiny maroon bags contain 2 pale green bags. +wavy purple bags contain 5 dark bronze bags. +vibrant cyan bags contain 2 drab blue bags, 5 pale brown bags, 1 mirrored magenta bag, 4 pale orange bags. +wavy gray bags contain 5 pale crimson bags, 5 light aqua bags, 4 muted red bags. +clear tomato bags contain 4 dark coral bags. +shiny red bags contain 4 shiny tan bags, 4 pale cyan bags. +muted brown bags contain 5 dull olive bags, 2 pale silver bags, 5 faded plum bags. +shiny violet bags contain 4 wavy teal bags. +posh white bags contain 4 light fuchsia bags, 1 posh purple bag, 4 posh green bags. +dim maroon bags contain 5 dim gold bags, 1 clear black bag. +dull orange bags contain 1 clear teal bag, 3 dull gray bags. +posh fuchsia bags contain 1 faded gold bag, 4 light bronze bags. +dim bronze bags contain 1 bright fuchsia bag. +dull salmon bags contain 5 muted tomato bags, 3 dull olive bags, 4 dark brown bags. +posh yellow bags contain 5 dull indigo bags, 1 dotted green bag, 3 shiny chartreuse bags. +muted bronze bags contain 4 pale brown bags. +wavy plum bags contain 4 shiny teal bags, 4 vibrant crimson bags. +dark maroon bags contain 2 clear maroon bags, 3 light crimson bags. +posh gray bags contain 2 drab maroon bags, 3 dotted aqua bags. +pale maroon bags contain 2 vibrant turquoise bags, 2 wavy tan bags, 5 clear orange bags, 2 clear beige bags. +mirrored crimson bags contain 3 dark cyan bags, 3 dark silver bags. +shiny bronze bags contain 3 drab tomato bags, 3 vibrant tan bags. +pale teal bags contain 4 clear brown bags, 4 vibrant gray bags, 3 bright plum bags, 4 dull olive bags. +plaid maroon bags contain 1 mirrored blue bag, 4 bright chartreuse bags. +plaid blue bags contain 4 light lime bags. +dotted brown bags contain 5 shiny violet bags, 2 shiny lavender bags, 1 striped crimson bag. +pale purple bags contain 2 clear tomato bags, 5 vibrant orange bags, 5 dark green bags, 1 vibrant silver bag. +clear lavender bags contain 1 wavy cyan bag, 5 dotted crimson bags, 5 dark bronze bags, 3 light bronze bags. +light cyan bags contain 5 light lime bags, 1 mirrored teal bag. +dull blue bags contain 3 clear lime bags, 1 light turquoise bag, 1 shiny gray bag. +faded gray bags contain 2 faded crimson bags, 1 pale red bag, 3 striped bronze bags. +drab maroon bags contain 2 bright coral bags. +plaid gold bags contain 2 shiny gold bags, 1 wavy fuchsia bag, 2 dull aqua bags, 4 mirrored indigo bags. +mirrored orange bags contain 3 muted coral bags. +dull yellow bags contain 1 drab maroon bag, 4 posh purple bags, 5 plaid cyan bags, 4 vibrant cyan bags. +plaid aqua bags contain 2 bright silver bags, 2 posh blue bags, 3 drab olive bags, 2 mirrored fuchsia bags. +shiny olive bags contain 3 dim tan bags, 1 dark gray bag, 4 mirrored brown bags, 5 mirrored magenta bags. +wavy bronze bags contain 4 mirrored gray bags, 1 light lavender bag, 4 dull yellow bags. +dotted orange bags contain 1 plaid teal bag, 5 pale silver bags, 1 drab bronze bag. +dull magenta bags contain 1 muted violet bag, 2 muted black bags. +drab indigo bags contain 3 pale blue bags, 1 muted aqua bag, 3 bright fuchsia bags, 1 striped white bag. +faded turquoise bags contain 1 pale lavender bag, 1 shiny indigo bag. +shiny lavender bags contain 2 faded bronze bags, 3 clear green bags, 5 dim turquoise bags, 5 striped olive bags. +faded yellow bags contain 1 faded chartreuse bag. +vibrant gray bags contain 3 clear gold bags, 1 dotted coral bag, 4 light lime bags, 2 light lavender bags. +bright aqua bags contain 2 faded chartreuse bags. +bright yellow bags contain 4 dark blue bags. +mirrored tomato bags contain 2 posh blue bags. +shiny orange bags contain 3 striped black bags. +bright tan bags contain 3 dim gold bags. +light fuchsia bags contain 4 dotted bronze bags, 2 posh purple bags. +striped coral bags contain 2 mirrored fuchsia bags, 4 faded chartreuse bags, 3 dull brown bags. +bright cyan bags contain 3 mirrored lime bags, 2 posh purple bags, 3 light plum bags, 3 striped brown bags. +pale violet bags contain 3 wavy cyan bags. +bright lavender bags contain 2 shiny crimson bags, 1 plaid magenta bag, 4 dark turquoise bags. +wavy maroon bags contain 4 dull lavender bags, 2 dim turquoise bags, 2 light green bags, 1 clear lime bag. +drab tomato bags contain 1 light crimson bag, 5 faded gold bags, 5 drab cyan bags. +dotted magenta bags contain 1 dotted beige bag. +clear green bags contain 4 posh purple bags. +shiny teal bags contain 2 pale turquoise bags. +clear salmon bags contain 3 clear aqua bags. +dark gold bags contain 1 pale tan bag. +mirrored gray bags contain 1 muted purple bag. +vibrant indigo bags contain 3 muted coral bags, 5 shiny gray bags, 1 dark yellow bag. +pale olive bags contain 2 posh white bags, 3 dull white bags, 5 light silver bags. +bright bronze bags contain 3 dull yellow bags. +dark yellow bags contain 1 bright black bag, 1 clear teal bag. +dim cyan bags contain 4 wavy crimson bags, 4 muted green bags. +shiny blue bags contain 1 pale beige bag, 1 plaid magenta bag, 1 dark magenta bag, 3 dim tomato bags. +pale green bags contain 5 dotted crimson bags, 5 posh purple bags, 4 pale aqua bags, 2 faded tomato bags. +faded coral bags contain 1 striped maroon bag, 5 drab salmon bags, 5 muted orange bags, 1 dark blue bag. +light beige bags contain 3 light red bags, 1 mirrored red bag, 3 drab salmon bags, 2 wavy teal bags. +wavy yellow bags contain 2 clear coral bags, 2 pale turquoise bags. +dim lavender bags contain 2 dull silver bags, 3 dull gray bags, 2 wavy crimson bags. +dotted white bags contain 1 posh turquoise bag, 3 faded gold bags, 1 mirrored beige bag. +dotted red bags contain 2 plaid gray bags. +light black bags contain 3 faded chartreuse bags, 4 dark yellow bags, 5 plaid cyan bags. +vibrant black bags contain 2 faded fuchsia bags, 3 vibrant bronze bags, 3 dark brown bags, 5 bright purple bags. +plaid olive bags contain 2 faded gray bags, 1 wavy purple bag. +pale plum bags contain 3 pale tan bags, 1 posh coral bag, 2 dim fuchsia bags. +vibrant violet bags contain 1 clear coral bag. +mirrored indigo bags contain 1 faded violet bag. +posh lime bags contain 3 faded gray bags, 4 dim indigo bags, 1 wavy olive bag, 5 bright violet bags. +pale bronze bags contain 5 plaid gold bags. +shiny purple bags contain 3 dark silver bags, 5 dark aqua bags, 5 mirrored indigo bags, 3 plaid teal bags. +muted turquoise bags contain 4 clear teal bags. +light turquoise bags contain 2 muted coral bags, 2 clear beige bags, 3 clear maroon bags. +vibrant purple bags contain 4 dull aqua bags, 1 light crimson bag. +dotted yellow bags contain 2 wavy yellow bags. +bright salmon bags contain 5 striped coral bags, 4 dim red bags, 3 faded tan bags. +drab tan bags contain 2 clear yellow bags. +plaid violet bags contain 2 pale plum bags, 3 dim lavender bags, 5 clear tan bags. +dull tan bags contain 1 dotted aqua bag. +dotted blue bags contain 4 vibrant maroon bags, 4 drab tomato bags, 5 light bronze bags, 1 posh bronze bag. +light silver bags contain 5 vibrant purple bags. +muted blue bags contain 4 bright coral bags, 3 faded blue bags, 5 dull lime bags, 5 pale brown bags. +dotted lime bags contain 3 light aqua bags, 4 dull brown bags. +dotted aqua bags contain 1 mirrored fuchsia bag, 5 wavy cyan bags, 3 wavy tan bags. +faded lavender bags contain 4 shiny chartreuse bags, 4 faded violet bags, 2 striped tan bags. +bright violet bags contain 1 shiny gold bag, 5 pale beige bags, 2 pale orange bags, 3 wavy crimson bags. +striped turquoise bags contain 3 drab blue bags. +dim black bags contain 2 muted coral bags, 2 pale plum bags, 2 shiny teal bags. +striped violet bags contain 5 mirrored white bags, 2 striped coral bags. +pale gray bags contain 4 faded chartreuse bags, 2 vibrant aqua bags. +drab cyan bags contain 5 bright fuchsia bags. +wavy olive bags contain 3 striped beige bags. +faded aqua bags contain 4 vibrant teal bags, 1 dark olive bag, 1 bright crimson bag, 1 plaid indigo bag. +wavy blue bags contain 4 clear maroon bags, 4 dim cyan bags, 2 mirrored gray bags. +clear magenta bags contain 3 vibrant purple bags, 4 dotted maroon bags, 1 plaid green bag, 5 drab green bags. +faded olive bags contain 5 striped turquoise bags. +vibrant olive bags contain 2 shiny teal bags, 4 shiny maroon bags, 5 clear tomato bags. +muted red bags contain 3 dim magenta bags, 1 shiny teal bag. +bright indigo bags contain 5 muted red bags. +faded lime bags contain 5 posh maroon bags, 2 pale indigo bags, 2 posh turquoise bags, 5 dim indigo bags. +plaid fuchsia bags contain 2 dim fuchsia bags, 3 light aqua bags. +posh bronze bags contain 4 dull aqua bags. +striped green bags contain 1 dotted lime bag. +faded maroon bags contain 3 mirrored turquoise bags, 4 dark orange bags. +dim turquoise bags contain 2 drab cyan bags, 2 clear lime bags, 2 dim salmon bags. +bright gold bags contain 2 mirrored blue bags, 2 vibrant purple bags, 5 drab purple bags. +light red bags contain 1 drab fuchsia bag, 3 drab maroon bags, 5 dim plum bags, 5 pale red bags. +vibrant lime bags contain 3 dull chartreuse bags, 4 pale crimson bags, 5 dark orange bags, 3 vibrant purple bags. +pale magenta bags contain 2 vibrant purple bags, 4 wavy olive bags. +drab turquoise bags contain 5 dotted crimson bags. +posh beige bags contain 5 dark gray bags, 2 striped maroon bags, 3 muted red bags. +wavy gold bags contain 2 dull lavender bags, 1 dotted red bag, 1 drab tomato bag, 4 dark gray bags. +clear tan bags contain 5 dull gray bags, 2 wavy maroon bags, 2 pale red bags. +wavy green bags contain 5 pale magenta bags, 2 vibrant coral bags, 2 bright turquoise bags. +mirrored lavender bags contain 5 dotted beige bags. +clear beige bags contain 2 muted purple bags. +clear gray bags contain 5 shiny green bags, 3 plaid gold bags, 4 vibrant indigo bags, 1 pale brown bag. +mirrored lime bags contain 1 muted gray bag, 1 striped red bag, 5 plaid brown bags, 1 plaid black bag. +clear olive bags contain 1 posh olive bag, 1 striped bronze bag. +wavy lavender bags contain 3 mirrored green bags, 3 bright coral bags. +muted green bags contain 4 pale orange bags. +posh black bags contain 1 wavy bronze bag, 2 dim cyan bags. +posh purple bags contain no other bags. +wavy crimson bags contain 3 dim fuchsia bags, 5 dull chartreuse bags, 1 dark yellow bag. +bright lime bags contain 2 pale crimson bags, 2 drab green bags, 3 dull orange bags. +mirrored black bags contain 5 light beige bags, 1 striped olive bag, 2 plaid purple bags, 3 vibrant tan bags. +dull turquoise bags contain 5 striped violet bags, 3 striped lime bags, 4 pale black bags, 3 drab brown bags. +striped yellow bags contain 2 dark crimson bags, 1 clear fuchsia bag. +drab orange bags contain 3 shiny blue bags, 2 clear green bags, 2 muted plum bags. +light coral bags contain 3 mirrored fuchsia bags, 1 shiny tomato bag, 2 dull aqua bags, 2 muted yellow bags. +posh silver bags contain 1 light coral bag. +light tomato bags contain 1 faded silver bag. +dark turquoise bags contain 3 dull yellow bags, 4 posh turquoise bags. +dotted olive bags contain 2 clear bronze bags. +faded beige bags contain 5 posh teal bags, 2 drab beige bags, 3 plaid lavender bags, 4 drab purple bags. +drab lavender bags contain 4 faded gray bags, 2 pale blue bags, 4 faded gold bags, 3 dark silver bags. +faded salmon bags contain 5 light lavender bags. +drab crimson bags contain 3 drab aqua bags, 4 striped yellow bags, 2 shiny fuchsia bags, 4 dark olive bags. +clear brown bags contain 1 striped coral bag, 2 shiny gold bags. +wavy black bags contain 3 dull orange bags, 3 faded salmon bags, 2 plaid white bags. +faded brown bags contain 2 plaid cyan bags, 5 light lavender bags, 3 bright coral bags, 2 drab maroon bags. +vibrant yellow bags contain 4 striped bronze bags. +posh aqua bags contain 4 light crimson bags, 1 dark red bag, 4 bright lavender bags, 4 striped beige bags. +pale cyan bags contain 1 dark olive bag, 2 pale orange bags, 1 vibrant white bag. +muted white bags contain 1 light brown bag. +bright fuchsia bags contain 2 posh brown bags, 5 clear coral bags, 1 dim plum bag. +mirrored aqua bags contain 3 light fuchsia bags, 3 bright aqua bags, 2 light aqua bags. +wavy coral bags contain 2 muted yellow bags, 3 drab silver bags, 5 dark silver bags. +muted fuchsia bags contain 1 plaid black bag, 5 shiny yellow bags. +dim green bags contain 4 wavy aqua bags, 2 light cyan bags, 1 shiny gray bag. +drab black bags contain 2 dotted maroon bags, 5 clear maroon bags, 3 mirrored coral bags, 1 dim salmon bag. +shiny coral bags contain 4 light plum bags, 4 mirrored chartreuse bags, 3 wavy white bags. +posh indigo bags contain 2 dark cyan bags, 5 pale brown bags, 1 dull blue bag, 3 striped red bags. +pale brown bags contain 4 dull red bags, 4 shiny teal bags, 4 shiny crimson bags, 2 bright fuchsia bags. +plaid coral bags contain 1 dim maroon bag, 4 clear plum bags, 5 dark green bags, 4 shiny purple bags. +shiny gold bags contain 1 pale aqua bag, 3 dark cyan bags, 5 vibrant purple bags, 2 drab blue bags. +plaid brown bags contain 1 wavy crimson bag. +muted teal bags contain 2 drab turquoise bags, 2 clear tan bags, 4 shiny violet bags, 1 vibrant tan bag. +drab blue bags contain 2 bright fuchsia bags, 2 clear coral bags. +light olive bags contain 2 faded purple bags, 4 striped bronze bags. +drab yellow bags contain 5 shiny maroon bags, 4 clear teal bags, 5 wavy white bags. +clear blue bags contain 5 drab maroon bags, 2 shiny gold bags, 3 pale red bags, 3 dotted gold bags. +wavy brown bags contain 2 pale beige bags, 5 light yellow bags, 4 striped aqua bags, 3 wavy yellow bags. +dotted purple bags contain 2 dark teal bags, 5 posh brown bags, 4 plaid fuchsia bags, 2 posh silver bags. +mirrored turquoise bags contain 3 dim tan bags. +dotted cyan bags contain 3 shiny lavender bags, 5 clear aqua bags. +striped olive bags contain 4 dark cyan bags, 3 dim plum bags. +faded fuchsia bags contain 1 shiny indigo bag, 2 dull gold bags, 4 mirrored salmon bags. +pale gold bags contain 4 clear gold bags, 3 bright lime bags. +dull olive bags contain 4 striped chartreuse bags. +shiny tomato bags contain 4 shiny teal bags. +striped salmon bags contain 5 faded lavender bags, 1 dim aqua bag. +pale salmon bags contain 2 dim orange bags. +dim salmon bags contain 3 posh purple bags, 5 mirrored brown bags. +muted coral bags contain 4 light green bags, 3 striped turquoise bags, 2 plaid silver bags, 5 vibrant maroon bags. +dull bronze bags contain 2 dim magenta bags, 1 faded lavender bag. +drab gray bags contain 1 mirrored indigo bag, 1 pale crimson bag, 3 plaid teal bags. +muted chartreuse bags contain 5 light coral bags, 5 vibrant turquoise bags, 3 dark cyan bags, 5 bright orange bags. +mirrored green bags contain 2 bright purple bags, 4 posh bronze bags, 1 shiny violet bag, 5 clear teal bags. +bright orange bags contain 1 dull gray bag. +dim coral bags contain 1 posh salmon bag, 2 striped salmon bags, 3 striped chartreuse bags. +clear turquoise bags contain 3 wavy salmon bags, 1 clear blue bag, 1 drab tan bag. +bright teal bags contain 1 faded tan bag, 5 striped teal bags, 3 light lavender bags, 2 dark olive bags. +shiny chartreuse bags contain 2 dull blue bags, 5 drab turquoise bags, 4 light aqua bags. +faded tan bags contain 4 drab purple bags. +plaid magenta bags contain 5 drab cyan bags, 4 muted aqua bags. +muted purple bags contain no other bags. +vibrant green bags contain 5 striped crimson bags, 5 clear beige bags, 3 drab yellow bags. +vibrant salmon bags contain 4 clear red bags, 5 wavy salmon bags. +vibrant tomato bags contain 3 light plum bags, 1 posh white bag, 2 wavy magenta bags. +wavy turquoise bags contain 5 dotted gold bags, 2 light gray bags, 4 drab tomato bags, 5 wavy aqua bags. +dim olive bags contain 3 light magenta bags, 1 dotted lime bag, 4 dotted crimson bags, 3 light salmon bags. +plaid lavender bags contain 2 dark turquoise bags, 5 striped turquoise bags, 4 wavy olive bags. +dark green bags contain 3 dotted gold bags. +faded purple bags contain 5 clear coral bags, 3 mirrored green bags, 5 drab coral bags, 3 bright purple bags. +dotted crimson bags contain 2 wavy teal bags, 5 light green bags, 5 muted purple bags, 1 plaid silver bag. +mirrored coral bags contain 5 striped turquoise bags, 1 faded purple bag, 1 shiny cyan bag. +mirrored cyan bags contain 1 mirrored chartreuse bag, 5 wavy magenta bags. +shiny black bags contain 2 drab magenta bags, 2 plaid bronze bags. +dark teal bags contain 3 dark white bags, 1 muted chartreuse bag, 3 dotted salmon bags, 4 posh aqua bags. +dull teal bags contain 2 bright chartreuse bags, 3 light black bags. +mirrored red bags contain 2 dotted crimson bags, 2 drab cyan bags. +striped brown bags contain 2 pale red bags, 5 light gray bags. +posh magenta bags contain 4 posh green bags, 4 dotted bronze bags, 5 dim tan bags. +pale lime bags contain 5 shiny blue bags. +plaid indigo bags contain 3 shiny maroon bags, 1 dark yellow bag, 4 dull gold bags. +light green bags contain 2 dull brown bags, 5 bright coral bags. +muted olive bags contain 3 dotted bronze bags, 1 shiny coral bag, 3 dotted aqua bags, 2 faded blue bags. +striped lime bags contain 2 faded salmon bags, 2 pale white bags, 1 plaid salmon bag, 1 dark coral bag. +clear red bags contain 3 dark orange bags, 5 faded magenta bags, 4 dark lime bags. +faded bronze bags contain 4 light lavender bags. +dotted plum bags contain 1 faded tan bag, 3 pale aqua bags, 2 dull gray bags, 4 plaid purple bags. +plaid salmon bags contain 5 light lime bags, 1 posh bronze bag, 5 wavy magenta bags, 1 dark green bag. +dull plum bags contain 4 mirrored purple bags. +light indigo bags contain 3 dark silver bags, 1 bright lime bag. +pale red bags contain 5 posh purple bags. +wavy chartreuse bags contain 1 light coral bag. +dull lavender bags contain 5 plaid purple bags, 4 faded orange bags. +vibrant orange bags contain 2 drab violet bags. +light gold bags contain 3 plaid salmon bags. +faded teal bags contain 1 dotted maroon bag. +light chartreuse bags contain 3 dotted yellow bags, 1 clear yellow bag, 3 shiny teal bags, 4 plaid lime bags. +faded white bags contain 5 drab turquoise bags, 1 dark violet bag. +light lavender bags contain 1 vibrant magenta bag, 1 pale brown bag. +light crimson bags contain 5 dull red bags. +mirrored silver bags contain 2 bright turquoise bags. +faded green bags contain 5 dark lime bags, 5 dim crimson bags, 4 dark silver bags, 1 dotted white bag. +vibrant chartreuse bags contain 5 wavy gray bags, 5 bright silver bags, 1 dull indigo bag. +clear chartreuse bags contain 5 light brown bags, 2 dim violet bags, 4 faded orange bags. +dotted violet bags contain 4 dark white bags, 1 muted brown bag, 4 faded cyan bags, 5 striped gray bags. +dotted green bags contain 5 bright silver bags, 4 drab lime bags. +light bronze bags contain 3 dotted gold bags. +vibrant tan bags contain 2 dull chartreuse bags, 5 clear gold bags, 1 bright orange bag, 2 dotted gold bags. +faded gold bags contain 4 shiny gold bags, 1 dark red bag, 2 dotted bronze bags, 1 muted red bag. +plaid green bags contain 4 light gray bags, 1 striped bronze bag. +clear yellow bags contain 4 drab blue bags. +mirrored yellow bags contain 3 vibrant tan bags, 2 light crimson bags, 1 light lime bag, 5 bright teal bags. +dotted beige bags contain 2 pale beige bags, 3 light lime bags, 3 drab cyan bags, 3 plaid green bags. +pale chartreuse bags contain 1 striped brown bag, 2 faded gold bags. +wavy white bags contain 4 dotted gold bags, 5 striped turquoise bags, 1 mirrored chartreuse bag. +muted tomato bags contain 5 dark magenta bags. +dark lavender bags contain 4 pale indigo bags, 5 shiny cyan bags. +pale black bags contain 3 clear tomato bags, 3 vibrant gray bags. +dim orange bags contain 5 dark olive bags, 1 vibrant silver bag, 3 plaid brown bags, 1 dull red bag. +bright plum bags contain 5 striped tomato bags, 2 dotted beige bags. +posh tomato bags contain 5 faded tomato bags. +vibrant maroon bags contain 5 dark orange bags. +dim tan bags contain 5 muted yellow bags. +dotted tan bags contain 4 dark lime bags. +plaid red bags contain 2 posh beige bags, 3 wavy tan bags, 1 muted silver bag. +faded black bags contain 1 clear lavender bag, 4 dotted lime bags, 3 mirrored crimson bags, 2 faded gray bags. +mirrored tan bags contain 2 vibrant white bags, 5 mirrored beige bags, 4 wavy turquoise bags, 4 striped green bags. +dull violet bags contain 5 bright teal bags. +striped maroon bags contain 2 dull brown bags. +dull green bags contain 4 dim yellow bags, 3 mirrored silver bags, 5 muted chartreuse bags. +dull gray bags contain 3 vibrant purple bags, 3 striped turquoise bags, 5 wavy cyan bags. +posh salmon bags contain 4 light green bags, 4 dull blue bags. +dark tan bags contain 5 muted bronze bags, 5 clear lime bags, 5 vibrant gray bags. +dark purple bags contain 1 clear cyan bag, 3 vibrant tan bags, 5 light magenta bags, 1 dark blue bag. +plaid teal bags contain 1 wavy purple bag, 4 mirrored crimson bags. +posh brown bags contain no other bags. +pale orange bags contain no other bags. +posh plum bags contain 3 light bronze bags, 3 bright coral bags, 3 shiny yellow bags, 3 dark yellow bags. +bright olive bags contain 2 light silver bags. +posh red bags contain 4 dark turquoise bags, 1 plaid cyan bag, 3 dotted aqua bags. +muted violet bags contain 3 pale green bags, 5 dull red bags. +plaid crimson bags contain 3 clear silver bags. +dotted gray bags contain 1 muted white bag. +dull brown bags contain 1 dull aqua bag, 4 bright coral bags, 5 shiny violet bags, 1 light coral bag. +pale silver bags contain 3 mirrored brown bags, 2 dark brown bags, 2 vibrant indigo bags. +vibrant coral bags contain 2 pale red bags, 3 bright teal bags, 5 striped bronze bags, 1 bright silver bag. +dark brown bags contain 1 pale brown bag, 1 drab beige bag, 4 mirrored chartreuse bags, 1 clear teal bag. +dotted turquoise bags contain 4 wavy chartreuse bags, 2 faded violet bags. +bright silver bags contain 3 dark silver bags, 5 clear aqua bags, 1 striped coral bag, 4 vibrant violet bags. +plaid chartreuse bags contain 3 pale red bags, 4 wavy teal bags, 3 dark tomato bags. +bright red bags contain 4 pale red bags. +pale beige bags contain 3 posh purple bags, 2 striped gold bags. +vibrant plum bags contain 3 posh green bags, 5 plaid cyan bags, 4 light silver bags. +bright white bags contain 3 dull gold bags, 5 striped turquoise bags, 2 bright tan bags. +dark magenta bags contain 1 pale aqua bag, 5 faded bronze bags, 3 dark orange bags, 3 dim magenta bags. +bright beige bags contain 4 clear white bags, 2 dotted plum bags, 2 light brown bags, 1 plaid gray bag. +bright black bags contain 2 pale turquoise bags, 5 mirrored brown bags, 1 mirrored magenta bag, 4 dull lime bags. +bright gray bags contain 3 mirrored red bags, 5 clear brown bags, 4 muted violet bags. +muted magenta bags contain 1 posh bronze bag, 5 mirrored brown bags, 1 clear crimson bag, 1 light lavender bag. +light teal bags contain 4 shiny tan bags. +dark gray bags contain 4 dotted bronze bags, 2 pale red bags, 3 pale brown bags, 5 dim magenta bags. +muted black bags contain 5 light beige bags, 1 dark tomato bag, 3 striped coral bags, 3 vibrant maroon bags. +dark red bags contain 5 muted red bags, 3 dull lime bags, 2 shiny tomato bags, 2 pale brown bags. +bright brown bags contain 4 bright teal bags, 3 plaid green bags. +plaid yellow bags contain 4 plaid bronze bags. +dark cyan bags contain 2 dim plum bags, 4 shiny brown bags. +faded blue bags contain 4 faded yellow bags. +dull maroon bags contain 3 mirrored purple bags, 2 faded silver bags, 5 pale silver bags. +posh coral bags contain 5 dim gold bags. +faded chartreuse bags contain 2 clear coral bags, 5 dim gold bags. +striped silver bags contain 4 faded cyan bags, 5 wavy brown bags, 5 bright tan bags, 3 drab chartreuse bags. +plaid gray bags contain 4 faded tomato bags, 4 dim cyan bags, 4 dotted maroon bags, 5 clear indigo bags. +plaid white bags contain 4 dim magenta bags, 4 pale red bags. +dark black bags contain 1 drab tan bag, 4 striped indigo bags. +vibrant white bags contain 1 dull aqua bag, 3 dull red bags. +muted maroon bags contain 3 dim violet bags, 3 faded orange bags, 1 bright purple bag, 2 dull cyan bags. +pale indigo bags contain 3 faded plum bags, 3 clear tomato bags. +clear teal bags contain 1 light coral bag, 5 faded bronze bags, 5 faded chartreuse bags, 2 striped olive bags. +muted tan bags contain 3 bright cyan bags. +light magenta bags contain 5 dark magenta bags, 3 striped brown bags. +dark aqua bags contain 3 posh turquoise bags, 4 pale fuchsia bags, 2 bright orange bags, 4 dim cyan bags. +bright tomato bags contain 5 wavy bronze bags, 4 clear magenta bags, 4 shiny fuchsia bags. +dark salmon bags contain 4 pale indigo bags, 4 wavy magenta bags. +dim blue bags contain 4 pale magenta bags, 2 muted tomato bags. +dark blue bags contain 4 shiny tomato bags. +drab aqua bags contain 5 clear cyan bags, 1 dotted orange bag. +plaid tomato bags contain 2 clear red bags, 2 dark tomato bags, 2 bright gold bags. +vibrant crimson bags contain 3 dull blue bags. +light yellow bags contain 2 striped black bags, 2 shiny brown bags, 5 clear black bags. +pale white bags contain 1 posh plum bag. +dull gold bags contain 5 wavy crimson bags, 5 pale aqua bags, 5 mirrored cyan bags, 2 drab tomato bags. +striped gray bags contain 5 shiny tomato bags, 3 mirrored brown bags, 1 posh brown bag. +drab salmon bags contain 5 vibrant yellow bags. +light purple bags contain 1 shiny turquoise bag. +striped lavender bags contain 4 mirrored gold bags, 3 vibrant brown bags, 3 wavy bronze bags, 2 pale black bags. +vibrant beige bags contain 2 light yellow bags. +striped magenta bags contain 4 light black bags. +clear aqua bags contain 2 dark cyan bags, 1 faded orange bag, 3 mirrored gray bags, 2 dark tomato bags. +dim teal bags contain 2 dark gray bags. +striped tomato bags contain 4 dark coral bags, 1 faded blue bag. +striped gold bags contain 4 bright coral bags, 1 shiny teal bag, 4 dark silver bags. +light maroon bags contain 4 dotted coral bags. +pale blue bags contain 2 striped coral bags, 1 vibrant white bag, 3 drab maroon bags. +clear crimson bags contain 3 plaid chartreuse bags, 1 pale bronze bag. +dim beige bags contain 5 drab tan bags. +pale turquoise bags contain no other bags. +dotted salmon bags contain 2 clear magenta bags, 4 pale silver bags. +posh orange bags contain 3 dull aqua bags, 3 vibrant gray bags, 4 dull olive bags, 1 mirrored magenta bag. +dark tomato bags contain 3 shiny lavender bags, 2 drab beige bags, 3 dark cyan bags. +shiny aqua bags contain 3 light maroon bags, 4 muted turquoise bags, 2 vibrant magenta bags. +bright purple bags contain 3 light silver bags, 3 mirrored magenta bags. +shiny lime bags contain 3 dark olive bags, 1 striped chartreuse bag, 1 muted green bag. +bright crimson bags contain 2 muted indigo bags. +clear silver bags contain 3 mirrored red bags. +bright coral bags contain 1 dim gold bag, 2 clear green bags, 3 dark cyan bags. +pale crimson bags contain 4 shiny teal bags, 5 drab maroon bags, 1 pale brown bag. +wavy silver bags contain 2 dotted cyan bags, 1 vibrant silver bag, 2 light turquoise bags, 3 light salmon bags. +muted salmon bags contain 1 shiny bronze bag, 5 faded salmon bags, 4 muted black bags, 1 muted coral bag. +drab teal bags contain 2 vibrant violet bags, 4 vibrant orange bags. +mirrored blue bags contain 3 mirrored fuchsia bags. +mirrored white bags contain 4 striped brown bags, 5 mirrored cyan bags. +dull coral bags contain 2 bright magenta bags, 5 clear tan bags. +dull aqua bags contain 3 dim magenta bags, 2 light lavender bags. +faded crimson bags contain 4 striped maroon bags, 4 dull lime bags, 5 vibrant magenta bags. +light blue bags contain 1 plaid gold bag, 5 plaid white bags, 1 plaid black bag. +pale tan bags contain 3 posh green bags, 1 dim fuchsia bag, 5 vibrant yellow bags. +vibrant blue bags contain 4 pale gold bags, 1 clear magenta bag. +vibrant red bags contain 1 plaid cyan bag, 2 dim tan bags, 1 muted red bag. +striped cyan bags contain 5 plaid blue bags, 3 faded lavender bags. +dull silver bags contain 2 dark bronze bags, 5 pale orange bags. +striped bronze bags contain 1 shiny tomato bag, 4 muted yellow bags, 4 striped turquoise bags. +light aqua bags contain 5 shiny violet bags. +drab white bags contain 5 faded gold bags, 1 striped tomato bag, 1 plaid salmon bag. +clear lime bags contain 4 mirrored brown bags, 2 light lavender bags, 1 light coral bag. +shiny tan bags contain 4 bright fuchsia bags, 1 dark orange bag, 1 dull lime bag. +bright turquoise bags contain 1 dim salmon bag, 3 light green bags, 3 shiny crimson bags, 2 wavy cyan bags. +posh lavender bags contain 1 bright bronze bag, 2 dull lavender bags, 1 vibrant purple bag, 5 shiny violet bags. +wavy indigo bags contain 2 striped violet bags, 1 mirrored red bag, 1 muted turquoise bag. +dull cyan bags contain 5 vibrant yellow bags, 2 wavy salmon bags, 2 striped olive bags, 5 vibrant turquoise bags. +posh maroon bags contain 2 clear bronze bags, 3 vibrant tan bags. +faded violet bags contain 4 shiny olive bags, 3 posh magenta bags. +striped blue bags contain 4 dull tomato bags, 3 bright plum bags. +mirrored teal bags contain 4 dark crimson bags, 5 dotted coral bags, 2 clear indigo bags, 5 faded salmon bags. +bright magenta bags contain 4 clear turquoise bags, 5 dim turquoise bags. +vibrant magenta bags contain 5 mirrored magenta bags, 2 clear green bags. +clear cyan bags contain 4 pale turquoise bags, 3 wavy maroon bags. +striped beige bags contain 5 mirrored magenta bags, 4 clear fuchsia bags. +light white bags contain 4 pale brown bags, 3 vibrant plum bags. +shiny silver bags contain 5 striped gray bags, 3 drab silver bags, 3 shiny beige bags, 4 wavy salmon bags. +drab magenta bags contain 5 dark brown bags, 4 shiny fuchsia bags. +dark white bags contain 5 posh fuchsia bags, 4 shiny turquoise bags, 1 vibrant cyan bag. +dim red bags contain 1 bright tan bag. +posh crimson bags contain 5 bright gray bags. +plaid silver bags contain 4 muted purple bags, 5 faded gold bags. +dull indigo bags contain 5 dim violet bags, 5 light maroon bags. +dotted fuchsia bags contain 4 pale yellow bags, 5 dim gold bags, 2 bright fuchsia bags. +light lime bags contain 4 striped aqua bags, 4 shiny tan bags, 2 striped bronze bags, 4 dotted lime bags. +dark crimson bags contain 2 dim turquoise bags. +plaid bronze bags contain 3 posh red bags, 4 mirrored silver bags, 2 drab tan bags. +dark plum bags contain 1 pale coral bag, 4 clear cyan bags, 5 dim turquoise bags, 4 striped crimson bags. +mirrored maroon bags contain 5 clear chartreuse bags, 2 pale purple bags, 5 clear fuchsia bags. +drab fuchsia bags contain 2 shiny olive bags, 5 wavy salmon bags, 5 drab lime bags. +bright chartreuse bags contain 5 bright turquoise bags, 3 bright fuchsia bags. +dim indigo bags contain 4 wavy chartreuse bags, 3 light coral bags, 1 clear fuchsia bag, 2 faded violet bags. +vibrant brown bags contain 4 mirrored silver bags, 4 bright bronze bags, 3 plaid purple bags. +striped black bags contain 3 shiny fuchsia bags. +wavy orange bags contain 3 clear maroon bags, 5 drab magenta bags. +striped indigo bags contain 4 striped teal bags, 5 dull lavender bags, 1 muted red bag, 3 wavy blue bags. +dark bronze bags contain 3 clear beige bags, 4 drab cyan bags. +striped crimson bags contain 1 plaid cyan bag. +light salmon bags contain 5 pale yellow bags, 2 plaid purple bags, 4 dark indigo bags, 3 striped white bags. +dotted indigo bags contain 3 mirrored magenta bags, 5 striped gold bags, 3 clear coral bags, 2 wavy olive bags. +muted gold bags contain 3 wavy violet bags, 1 wavy purple bag, 2 dim gold bags. +clear orange bags contain 1 striped turquoise bag, 3 posh turquoise bags, 3 light plum bags, 3 pale crimson bags. +faded magenta bags contain 1 drab blue bag, 2 plaid green bags. +dark orange bags contain 4 drab tomato bags, 4 mirrored brown bags, 1 mirrored fuchsia bag, 1 dim magenta bag. +pale fuchsia bags contain 1 clear lime bag. +dotted teal bags contain 1 dull fuchsia bag. +drab silver bags contain 4 pale red bags, 4 clear chartreuse bags. +clear gold bags contain 4 pale crimson bags. +dotted bronze bags contain 4 mirrored brown bags, 2 dull red bags, 1 shiny tomato bag. +shiny brown bags contain no other bags. +pale yellow bags contain 2 mirrored brown bags, 5 clear fuchsia bags. +dull chartreuse bags contain 4 posh magenta bags, 3 mirrored magenta bags. +dim silver bags contain 3 faded coral bags. +dull purple bags contain 1 light blue bag, 5 dark fuchsia bags, 5 faded lavender bags, 3 posh maroon bags. +light violet bags contain 5 dim olive bags. +wavy fuchsia bags contain 1 shiny olive bag, 4 drab cyan bags. +muted aqua bags contain 1 shiny teal bag, 1 dull lime bag, 5 faded tomato bags, 5 bright fuchsia bags. +striped orange bags contain 5 mirrored beige bags. +faded orange bags contain 2 wavy yellow bags, 2 bright fuchsia bags, 3 posh purple bags. +dotted lavender bags contain 5 dark blue bags, 3 faded black bags, 4 bright indigo bags. +wavy tan bags contain 3 plaid chartreuse bags, 1 clear gold bag. +clear indigo bags contain 4 striped olive bags, 3 mirrored brown bags. +light plum bags contain 3 mirrored indigo bags. +striped tan bags contain 2 vibrant cyan bags, 4 dull lime bags, 2 dim indigo bags. +plaid cyan bags contain 1 dim turquoise bag, 5 clear lime bags, 1 muted yellow bag, 3 shiny brown bags. +drab gold bags contain 1 pale red bag, 4 shiny purple bags. +drab violet bags contain 5 vibrant lime bags, 3 vibrant aqua bags. +dim gold bags contain 5 dull lime bags, 3 bright fuchsia bags, 1 muted yellow bag. +muted cyan bags contain 1 mirrored black bag, 2 clear orange bags, 5 light crimson bags, 2 mirrored teal bags. +dotted tomato bags contain 1 dotted bronze bag, 1 dark orange bag, 4 vibrant maroon bags, 5 drab tomato bags. +striped chartreuse bags contain 4 mirrored fuchsia bags, 5 dim magenta bags. +muted silver bags contain 1 vibrant turquoise bag, 1 clear teal bag, 3 bright black bags. +dim purple bags contain 2 light gray bags, 2 dull aqua bags, 1 pale turquoise bag, 3 dim gold bags. +drab red bags contain 4 drab magenta bags. +muted indigo bags contain 4 light plum bags, 1 striped beige bag. +dark olive bags contain 4 striped gold bags. +clear violet bags contain 5 vibrant white bags, 1 wavy bronze bag, 3 light plum bags, 1 dark yellow bag. +striped aqua bags contain 3 dim salmon bags, 3 light aqua bags. +bright maroon bags contain 4 shiny fuchsia bags, 5 faded tomato bags, 1 clear white bag, 4 wavy yellow bags. +dark beige bags contain 4 faded blue bags, 4 vibrant bronze bags, 2 dark magenta bags. +posh turquoise bags contain 4 pale red bags, 3 mirrored brown bags, 3 mirrored indigo bags, 3 striped gold bags. +drab purple bags contain 5 light green bags, 1 shiny gold bag, 2 striped turquoise bags, 5 mirrored beige bags. +bright blue bags contain 5 dim indigo bags, 2 dotted crimson bags, 1 bright aqua bag, 5 clear silver bags. +posh blue bags contain 2 shiny maroon bags, 3 striped bronze bags. +wavy beige bags contain 1 dotted white bag, 3 striped aqua bags, 3 drab yellow bags. +dotted chartreuse bags contain 5 dotted bronze bags. +shiny gray bags contain 2 dim magenta bags. +mirrored beige bags contain 3 clear coral bags, 3 dim salmon bags. +faded tomato bags contain 2 bright black bags, 5 shiny tomato bags, 3 mirrored brown bags, 5 dull lime bags. +drab brown bags contain 5 clear black bags. +clear black bags contain 4 faded blue bags, 4 posh turquoise bags, 4 pale green bags, 4 faded crimson bags. +vibrant aqua bags contain 2 faded bronze bags, 3 dull aqua bags, 1 clear beige bag, 2 light lavender bags. +drab green bags contain 3 drab blue bags, 2 pale red bags, 2 posh green bags. +wavy cyan bags contain 4 faded blue bags, 2 faded chartreuse bags, 2 pale crimson bags. +plaid orange bags contain 1 muted yellow bag, 5 dull chartreuse bags, 5 dull gray bags, 3 pale crimson bags. +dark lime bags contain 4 clear brown bags, 1 drab fuchsia bag, 1 light aqua bag, 4 wavy tan bags. +dark violet bags contain 3 vibrant lime bags, 3 clear fuchsia bags. +plaid beige bags contain 2 dark teal bags, 2 posh indigo bags, 4 mirrored red bags, 3 vibrant gold bags. +striped fuchsia bags contain 1 dim tan bag, 4 dotted plum bags, 5 plaid olive bags. +pale aqua bags contain 4 shiny tomato bags, 3 bright black bags. +shiny magenta bags contain 5 plaid blue bags, 2 pale maroon bags, 2 dim lavender bags. +dotted black bags contain 2 shiny aqua bags, 2 dim crimson bags, 2 plaid red bags, 5 bright black bags. +clear coral bags contain no other bags. +shiny yellow bags contain 2 clear silver bags, 1 vibrant cyan bag, 3 striped crimson bags, 5 light aqua bags. +dull beige bags contain 3 light green bags. +drab beige bags contain 4 bright black bags, 4 light silver bags, 4 light lavender bags. +shiny salmon bags contain 2 light blue bags, 1 pale yellow bag. +pale lavender bags contain 2 shiny maroon bags, 5 posh tan bags. +muted crimson bags contain 1 clear aqua bag, 2 posh turquoise bags. +dim gray bags contain 4 pale tomato bags, 2 dark chartreuse bags, 4 clear red bags. +faded silver bags contain 2 drab beige bags, 3 faded tomato bags, 4 dull gold bags, 2 mirrored magenta bags. +light gray bags contain 5 dark yellow bags. +dotted gold bags contain 1 light plum bag, 2 faded tomato bags. +drab chartreuse bags contain 4 vibrant indigo bags. +dim tomato bags contain 5 clear gold bags, 4 light gray bags, 4 shiny green bags, 5 faded yellow bags. +dull fuchsia bags contain 3 vibrant cyan bags, 1 dim plum bag, 5 posh bronze bags, 1 shiny crimson bag. +shiny cyan bags contain 5 striped red bags, 5 dim plum bags, 2 striped turquoise bags. +dim yellow bags contain 1 dull chartreuse bag. +wavy magenta bags contain 2 dull lime bags, 2 mirrored chartreuse bags, 2 faded bronze bags. +posh tan bags contain 5 shiny tomato bags, 5 drab maroon bags, 5 vibrant maroon bags. +vibrant gold bags contain 1 dark orange bag, 2 mirrored cyan bags, 1 vibrant cyan bag, 2 posh coral bags. +vibrant fuchsia bags contain 2 vibrant violet bags. +muted orange bags contain 3 striped gold bags, 1 posh green bag, 3 vibrant purple bags. +mirrored violet bags contain 4 clear chartreuse bags, 4 dotted yellow bags, 2 faded orange bags. +drab lime bags contain 1 mirrored magenta bag, 1 striped turquoise bag. +dotted silver bags contain 2 dark cyan bags, 5 drab olive bags. +dull crimson bags contain 3 clear yellow bags, 3 vibrant cyan bags, 1 bright turquoise bag. +light brown bags contain 4 shiny brown bags, 1 plaid fuchsia bag. +vibrant teal bags contain 2 mirrored aqua bags, 5 plaid silver bags. +vibrant turquoise bags contain 2 clear beige bags. +vibrant lavender bags contain 2 shiny teal bags, 5 shiny blue bags, 2 dull gray bags, 1 muted crimson bag. +bright green bags contain 1 dull silver bag, 1 dull red bag, 4 vibrant indigo bags, 2 clear coral bags. +mirrored bronze bags contain 5 dotted lavender bags, 2 muted tomato bags, 4 pale fuchsia bags, 4 dim black bags. +mirrored chartreuse bags contain 4 dark gray bags, 3 bright coral bags. +dull black bags contain 2 dim turquoise bags, 4 drab maroon bags, 4 shiny crimson bags. +shiny white bags contain 4 drab chartreuse bags, 4 plaid salmon bags, 1 dim green bag, 2 muted orange bags. +dim chartreuse bags contain 3 dim bronze bags, 5 posh lavender bags, 4 drab bronze bags. +mirrored olive bags contain 5 striped brown bags, 4 dim indigo bags. +muted lavender bags contain 3 dull teal bags, 4 mirrored lime bags. +striped teal bags contain 3 shiny coral bags. +shiny indigo bags contain 1 dark bronze bag, 2 light lavender bags, 4 faded violet bags, 4 drab green bags. +dim brown bags contain 5 dull aqua bags, 2 plaid indigo bags. +light tan bags contain 1 muted yellow bag. +dim violet bags contain 2 dim magenta bags, 5 shiny olive bags, 1 wavy fuchsia bag, 5 dull aqua bags. +dim crimson bags contain 2 faded bronze bags. +dull lime bags contain no other bags. +plaid black bags contain 2 clear beige bags, 5 faded tomato bags, 1 muted red bag. +clear maroon bags contain 3 muted coral bags. +faded red bags contain 2 posh purple bags, 4 plaid gold bags, 1 bright violet bag, 3 shiny coral bags. +dotted coral bags contain 4 pale tan bags. +dull red bags contain 3 shiny teal bags. +mirrored brown bags contain no other bags. +drab olive bags contain 2 light fuchsia bags, 1 dark brown bag, 2 shiny olive bags. +shiny plum bags contain 3 striped olive bags, 1 mirrored brown bag, 5 faded blue bags, 4 dark bronze bags. +plaid plum bags contain 3 shiny orange bags, 5 dim magenta bags, 2 bright crimson bags. +drab bronze bags contain 4 posh brown bags, 3 dotted maroon bags. +striped white bags contain 1 bright lime bag. +drab coral bags contain 1 mirrored beige bag, 4 plaid green bags, 2 drab turquoise bags, 1 drab bronze bag. +vibrant bronze bags contain 1 muted aqua bag, 3 posh brown bags, 5 light crimson bags. +dotted maroon bags contain 2 shiny tomato bags, 5 dark cyan bags. +striped plum bags contain 4 dark fuchsia bags, 4 dotted indigo bags. +faded indigo bags contain 4 dim orange bags, 2 vibrant crimson bags, 3 bright silver bags. +dim magenta bags contain 1 pale red bag, 1 faded tomato bag, 3 muted aqua bags. +muted lime bags contain 1 wavy magenta bag. +drab plum bags contain 1 striped green bag. +mirrored plum bags contain 1 bright gray bag, 4 shiny tomato bags, 1 mirrored salmon bag, 3 shiny black bags. +dim lime bags contain 3 wavy orange bags, 1 dark orange bag, 5 vibrant indigo bags. +faded plum bags contain 2 shiny yellow bags, 5 dark red bags, 1 plaid bronze bag. +shiny beige bags contain 2 striped beige bags. +clear plum bags contain 5 vibrant violet bags, 2 vibrant silver bags, 5 dark magenta bags, 4 posh lime bags. +pale coral bags contain 1 dotted lime bag, 3 vibrant bronze bags. +dark fuchsia bags contain 2 striped turquoise bags, 2 muted gray bags, 5 dotted turquoise bags, 2 dim black bags. +wavy violet bags contain 5 clear fuchsia bags, 4 shiny fuchsia bags. +wavy lime bags contain 4 plaid yellow bags, 1 striped bronze bag, 3 shiny cyan bags, 5 vibrant teal bags. +dark coral bags contain 5 drab lime bags, 1 light brown bag, 3 pale blue bags. +posh cyan bags contain 3 pale crimson bags, 5 wavy gray bags, 5 mirrored silver bags, 3 wavy violet bags. +posh gold bags contain 4 plaid indigo bags, 2 mirrored fuchsia bags, 1 striped gold bag. +light orange bags contain 4 light coral bags, 4 shiny indigo bags. +mirrored salmon bags contain 5 vibrant violet bags, 1 drab purple bag, 5 dark cyan bags. +posh green bags contain 1 light crimson bag, 3 vibrant cyan bags, 2 shiny brown bags, 2 vibrant magenta bags. +muted gray bags contain 5 plaid chartreuse bags. 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 diff --git a/input/day_08 b/input/day_08 new file mode 100644 index 0000000..7f55b70 --- /dev/null +++ b/input/day_08 @@ -0,0 +1,601 @@ +acc +22 +acc +34 +jmp +167 +acc +46 +acc +25 +acc -10 +acc +11 +jmp +540 +acc +0 +jmp +242 +acc +26 +acc +46 +jmp +242 +jmp +287 +acc -8 +acc +30 +acc +3 +nop +350 +jmp +471 +acc +2 +acc +0 +acc +14 +jmp +207 +jmp +1 +acc -10 +acc +12 +jmp +281 +acc +18 +jmp +515 +acc -18 +acc +33 +jmp +379 +acc +48 +acc +38 +jmp +220 +acc +44 +nop +546 +acc +21 +jmp +537 +acc +33 +nop +224 +nop +379 +jmp +2 +jmp -30 +jmp +246 +acc -14 +acc -3 +jmp +410 +acc +50 +nop +323 +acc +2 +acc +24 +jmp +25 +jmp +372 +acc +29 +acc +15 +nop +34 +jmp +531 +acc +48 +acc -3 +acc -18 +acc -13 +jmp -30 +acc +7 +jmp +444 +acc +47 +jmp -3 +jmp +1 +nop +514 +jmp +39 +jmp +434 +acc +0 +acc +11 +acc +12 +acc -17 +jmp +142 +jmp +367 +acc -18 +nop +69 +acc -12 +jmp +16 +jmp +39 +nop +486 +acc +16 +jmp +1 +jmp -72 +jmp +1 +jmp +1 +nop +355 +jmp -7 +acc +1 +acc -12 +acc +12 +jmp +131 +acc +35 +jmp +74 +acc +9 +acc +26 +acc -14 +jmp -60 +acc +20 +acc +40 +acc +22 +acc +24 +jmp +209 +acc +43 +jmp +347 +jmp +346 +acc +0 +jmp +348 +acc +18 +jmp -79 +acc -11 +acc -16 +acc +7 +jmp +192 +acc +40 +acc +20 +nop -6 +jmp -7 +acc -18 +jmp +395 +nop +219 +acc -18 +jmp -53 +acc +22 +nop -1 +nop +29 +jmp +468 +acc +42 +acc +7 +acc +3 +acc +46 +jmp -8 +acc +29 +acc -18 +acc +17 +acc +41 +jmp +272 +jmp +222 +acc -10 +acc +32 +acc -14 +jmp -38 +acc +49 +acc +40 +jmp +97 +nop +375 +acc +19 +acc +45 +jmp -45 +jmp +195 +acc +19 +jmp +330 +acc +38 +jmp +7 +acc +40 +nop +150 +acc +19 +jmp +406 +acc +9 +jmp -49 +acc -3 +jmp +176 +acc +2 +nop +20 +acc +25 +nop +349 +jmp -129 +acc +27 +nop +301 +acc +37 +jmp +271 +acc +3 +acc +10 +acc +26 +acc +49 +jmp +58 +nop +151 +jmp +72 +acc -1 +acc +32 +acc -11 +acc -7 +jmp +155 +jmp +1 +acc +44 +acc +2 +jmp -140 +acc +13 +acc +46 +acc -3 +jmp -58 +jmp +174 +acc +0 +acc -18 +acc +25 +jmp -178 +acc -19 +acc +37 +acc +0 +acc +49 +jmp +366 +acc +17 +acc +9 +acc +25 +jmp -37 +jmp +328 +acc +50 +jmp +81 +acc +1 +acc +43 +acc +30 +jmp +80 +acc +17 +acc +43 +jmp +234 +acc +43 +nop +271 +acc -11 +jmp +331 +nop +335 +acc +43 +jmp -160 +acc +27 +acc +34 +jmp -74 +nop +73 +jmp -11 +acc -18 +jmp -118 +acc +23 +acc +19 +nop -108 +jmp +73 +acc +25 +acc -19 +acc +23 +acc -7 +jmp -77 +acc +0 +acc +1 +jmp +233 +jmp +1 +jmp +1 +acc +7 +jmp +248 +acc +0 +acc -17 +acc +19 +jmp -15 +acc +10 +jmp +273 +jmp +88 +acc +40 +acc +35 +jmp +1 +acc +38 +jmp +241 +acc -2 +acc +36 +acc -1 +acc +18 +jmp +78 +nop +58 +acc -9 +acc +38 +acc +44 +jmp +307 +acc +10 +acc +30 +jmp -163 +acc -16 +acc +29 +acc -19 +jmp -185 +jmp +167 +nop +52 +jmp -251 +acc +31 +acc -14 +jmp +186 +nop +1 +acc +42 +acc +9 +jmp -160 +acc +10 +acc +43 +acc +14 +jmp -177 +acc -16 +jmp +265 +jmp -158 +acc -15 +jmp +152 +acc +22 +acc +1 +acc +40 +jmp +1 +jmp +252 +acc -19 +acc -1 +jmp -109 +acc +11 +acc -3 +acc +8 +jmp +16 +acc +39 +acc +12 +acc +24 +jmp -154 +acc +6 +jmp -156 +jmp +119 +acc +18 +jmp +1 +jmp -44 +acc -13 +jmp +79 +acc +9 +nop +262 +jmp +56 +nop +50 +acc -4 +acc +36 +acc +12 +jmp -54 +acc -2 +jmp -77 +acc +11 +acc +3 +acc +38 +jmp -185 +acc +28 +jmp -44 +jmp +54 +acc +39 +nop +18 +jmp -84 +jmp +132 +jmp -301 +acc +12 +jmp -334 +acc -19 +acc -10 +jmp -55 +acc +24 +acc +40 +acc -18 +jmp +212 +jmp +70 +acc -4 +nop +173 +jmp +67 +jmp +66 +acc +44 +acc +8 +jmp +236 +acc +47 +acc +29 +jmp -21 +jmp +143 +acc +22 +acc +37 +acc +37 +acc +25 +jmp -339 +jmp +1 +nop +200 +acc +25 +jmp +208 +jmp +93 +acc -1 +acc -13 +acc +30 +jmp -321 +jmp -268 +acc +14 +jmp -311 +acc +1 +acc +20 +acc +41 +jmp -128 +jmp -173 +acc -10 +acc +41 +acc +25 +acc +38 +jmp +137 +nop -99 +acc +47 +acc -3 +acc -9 +jmp -259 +acc +0 +acc +40 +jmp +126 +acc +48 +acc -4 +acc +23 +jmp -136 +nop +103 +acc +27 +jmp -149 +acc +39 +jmp -323 +acc -13 +jmp +1 +nop -79 +jmp -342 +acc +36 +nop +9 +acc -15 +acc -19 +jmp -216 +acc +27 +acc -17 +nop +72 +acc +3 +jmp -142 +jmp -357 +acc +39 +acc -18 +acc -2 +jmp -361 +acc +26 +acc -15 +acc +21 +jmp +1 +jmp +21 +nop +20 +jmp +77 +acc +36 +acc +6 +acc +32 +jmp -295 +jmp +63 +acc -15 +nop -371 +jmp -196 +acc +27 +acc +36 +jmp -152 +acc +43 +jmp +149 +jmp +85 +nop -57 +acc +8 +jmp -241 +jmp -206 +acc +5 +jmp -282 +jmp -344 +acc +24 +acc +12 +jmp -138 +jmp -31 +acc +4 +acc +27 +jmp -224 +acc +16 +acc +42 +acc +24 +jmp -316 +acc +41 +jmp +10 +jmp -403 +jmp -90 +nop -79 +acc +2 +jmp +19 +acc +42 +acc +12 +jmp -9 +jmp +104 +acc -9 +acc -11 +jmp -299 +acc +19 +acc +7 +acc -11 +acc -7 +jmp -335 +acc +24 +jmp -80 +acc +45 +acc +39 +acc +18 +jmp -348 +acc +5 +acc -5 +jmp -94 +acc +35 +jmp -221 +acc -3 +jmp -112 +acc +10 +acc +23 +jmp +18 +nop -53 +jmp -315 +acc +12 +acc +19 +jmp -426 +jmp -175 +acc +40 +acc +25 +jmp +23 +nop -14 +nop +79 +acc +21 +jmp -301 +acc +22 +acc -10 +jmp +1 +jmp +15 +acc +27 +jmp -409 +acc +45 +nop -341 +acc +22 +jmp -89 +jmp +60 +acc +11 +jmp -461 +acc +39 +acc -11 +acc +10 +jmp -173 +jmp -447 +nop +38 +acc +5 +jmp -65 +acc +45 +jmp -217 +acc +1 +acc -7 +nop -460 +acc +45 +jmp -468 +nop -477 +acc +0 +jmp -270 +jmp -230 +acc +36 +acc +21 +jmp -21 +jmp -225 +acc -11 +jmp +1 +jmp -511 +jmp -4 +acc -5 +acc -4 +acc -15 +jmp -204 +jmp -62 +acc +50 +acc +34 +acc +32 +jmp -489 +nop -108 +jmp -125 +acc -2 +jmp -187 +nop +1 +jmp -284 +jmp -285 +acc +43 +acc -1 +jmp -293 +nop -49 +acc -14 +acc +25 +jmp -233 +nop -53 +jmp -456 +jmp -226 +acc +39 +jmp -244 +acc +16 +jmp -82 +acc +17 +acc +47 +acc +16 +jmp -244 +nop -87 +jmp -150 +jmp -99 +jmp +1 +acc -9 +acc +48 +jmp -515 +acc -1 +jmp -546 +jmp -191 +acc -16 +acc +27 +nop -369 +acc -7 +jmp +1 diff --git a/input/day_09 b/input/day_09 new file mode 100644 index 0000000..6f3976e --- /dev/null +++ b/input/day_09 @@ -0,0 +1,1000 @@ +3 +17 +32 +2 +19 +45 +22 +18 +38 +8 +16 +13 +41 +35 +23 +29 +11 +46 +12 +27 +49 +34 +20 +14 +47 +50 +10 +15 +17 +21 +57 +25 +19 +18 +22 +76 +24 +32 +26 +28 +23 +30 +29 +31 +33 +27 +35 +42 +34 +36 +91 +40 +37 +38 +43 +47 +44 +41 +45 +72 +49 +61 +80 +55 +66 +71 +56 +117 +141 +69 +135 +70 +73 +83 +74 +75 +114 +78 +79 +113 +213 +189 +86 +104 +173 +105 +116 +131 +152 +194 +149 +125 +139 +142 +143 +144 +247 +188 +157 +191 +153 +238 +164 +165 +190 +202 +209 +211 +393 +269 +221 +291 +299 +281 +264 +267 +268 +327 +351 +301 +379 +310 +318 +317 +430 +329 +429 +641 +477 +411 +420 +578 +432 +522 +485 +488 +582 +531 +532 +929 +652 +569 +611 +740 +795 +627 +937 +746 +1081 +759 +749 +1063 +888 +1109 +963 +852 +917 +920 +1508 +1677 +1019 +1100 +1142 +1143 +1180 +1196 +1360 +1942 +1376 +1373 +1601 +1495 +1901 +2248 +1611 +1637 +2128 +1740 +1769 +1772 +1936 +2280 +2339 +2515 +4281 +2162 +2296 +2553 +2516 +4451 +2556 +2733 +2749 +2868 +3096 +4334 +3541 +3248 +3988 +6613 +3897 +3509 +3934 +3705 +4098 +4216 +7236 +4458 +4677 +4678 +4715 +4812 +6116 +5249 +5289 +5305 +5482 +12525 +5964 +8612 +6757 +6789 +10510 +7443 +12038 +9490 +8798 +7639 +7803 +9387 +8674 +10117 +9135 +16874 +9393 +9527 +10061 +12078 +10538 +10594 +10787 +11446 +17032 +13407 +13546 +14396 +16850 +15082 +15246 +15442 +22542 +16313 +26559 +16477 +17809 +19673 +26036 +28320 +30257 +18920 +19588 +21325 +21984 +21132 +28489 +22233 +24853 +38461 +26953 +28628 +29478 +30688 +33251 +31559 +44526 +49845 +34286 +35397 +53206 +37397 +38508 +41821 +41572 +40052 +40913 +40720 +42457 +67136 +43365 +49186 +93712 +55581 +61239 +56431 +58106 +63939 +62247 +65845 +66956 +92551 +69683 +71683 +111735 +90603 +75905 +78560 +80772 +80965 +81633 +113125 +160921 +85822 +101471 +174364 +115031 +113687 +112012 +119345 +128114 +143019 +186714 +128092 +132801 +145516 +166594 +195996 +152455 +268347 +167455 +226288 +194652 +161737 +241217 +329733 +187293 +197834 +199509 +213483 +225699 +227043 +556776 +466916 +453331 +256206 +457825 +280547 +278317 +285256 +357733 +386802 +654209 +743081 +329192 +361246 +349030 +478381 +385127 +397343 +424877 +412992 +411317 +693539 +504016 +665674 +483249 +677890 +614448 +534523 +536753 +563573 +558864 +682599 +1042113 +1102767 +678222 +1041954 +690438 +710276 +1071276 +734157 +1103430 +782470 +808660 +1324724 +1186615 +894566 +1151201 +987265 +1241463 +1778216 +1224961 +1093387 +1095617 +1241795 +1122437 +2050455 +1424595 +1936679 +2337412 +1936520 +1885900 +1400714 +2229060 +1516627 +1902047 +2749319 +1795925 +1703226 +2690491 +2796613 +1990183 +3196639 +2944689 +3629774 +3653655 +3085800 +2189004 +2917341 +2825309 +2523151 +2941222 +3402527 +3103940 +3390897 +5392710 +6189740 +5515800 +3219853 +6045162 +4899865 +6282439 +4620567 +3693409 +6320265 +5014313 +5627091 +8416840 +4712155 +10526956 +6779209 +6494837 +11182304 +5742650 +5348460 +6622380 +6161075 +9149102 +12406300 +18596040 +10757317 +6913262 +7840420 +7932008 +9854484 +8313976 +8405564 +9436059 +13662436 +24189392 +9726468 +11788166 +12940284 +10060615 +11091110 +20618363 +18260048 +11509535 +13280468 +16439570 +25875629 +13074337 +14753682 +14845270 +15227238 +18597737 +19162527 +32503368 +37385164 +16719540 +31200332 +46165804 +23723051 +26354805 +24953706 +31709473 +83550968 +21151725 +23341083 +28301575 +50459501 +24583872 +24790003 +30000008 +35905407 +60011048 +32236864 +29598952 +30072508 +42503610 +52624947 +70749676 +41303412 +55026214 +41673246 +44874776 +44492808 +77111640 +45735597 +48131086 +52940035 +82697455 +45941728 +47924955 +59671460 +49373875 +54182824 +104164268 +62236872 +71375920 +61835816 +62309372 +70902364 +83012543 +82976658 +85796220 +86166054 +103982618 +86548022 +89598201 +93660552 +160124183 +144533271 +124315955 +132071330 +93866683 +95315603 +97298830 +264288451 +132386418 +103556699 +147843376 +181481657 +124072688 +124145188 +132738180 +133211736 +153879022 +169560565 +168772878 +171962274 +172714076 +176146223 +180208574 +183258753 +271988564 +189182286 +191165513 +218011871 +192614433 +226604863 +228053783 +316687121 +277951710 +331610482 +227629387 +248217876 +256810868 +257284424 +256883368 +265949916 +429246698 +322651900 +338333443 +340735152 +344676350 +257342611 +356354797 +375873186 +372441039 +410626304 +380347799 +637690410 +419219296 +420243820 +454234250 +455683170 +475847263 +484440255 +484971998 +484512755 +505028744 +513694236 +514167792 +523292527 +579994511 +854902944 +713025781 +595676054 +598077763 +602018961 +752788838 +1208472008 +969484753 +856881294 +829845600 +799567095 +874478070 +875926990 +909917420 +1343539836 +931530433 +960287518 +969412253 +1218054525 +1397770597 +1018722980 +1027862028 +1094162303 +1474004753 +1540282029 +1686726894 +1512592876 +1193753817 +1200096724 +2118389428 +1552355933 +1629412695 +1656448389 +1674045165 +1675494085 +1709484515 +1750405060 +2312216828 +1879329673 +1891817951 +1900942686 +2509694282 +2046585008 +2112885283 +2122024331 +2692768145 +2287916120 +2294259027 +2393850541 +3227008923 +3246681732 +3186638041 +4240413759 +2752452657 +3181768628 +3208804322 +3338897210 +3330493554 +5078455992 +4506735824 +3459889575 +3792760637 +3771147624 +3938402959 +4903544823 +4013827969 +4622579565 +4159470291 +4234909614 +6520665838 +4987027172 +4582175147 +8085313451 +5146303198 +7733744747 +8446916747 +6547701532 +5961256979 +14967582585 +7123254191 +7231037199 +6669390764 +6790383129 +8006057238 +7252650212 +16091370689 +7563908261 +8596003116 +13029091894 +8173298260 +15569965499 +8394379905 +8741645438 +10948284151 +9569202319 +13433943919 +11107560177 +11694004730 +13338084661 +12508958511 +12630647743 +12751640108 +23964345404 +13459773893 +19113617415 +14796440367 +20435650168 +14043033341 +16159911377 +14816558473 +20194556004 +15737206521 +24991317492 +16567678165 +18310847757 +17136025343 +19342664056 +25924118650 +28790559120 +20676762496 +22801564907 +23616518688 +29887665451 +25260598619 +25139606254 +25382287851 +26211414001 +27502807234 +29612998840 +28859591814 +28839473708 +29780239862 +30202944718 +35910342221 +30553764994 +64769934035 +36478689399 +33703703508 +37812787839 +35446873100 +42518313194 +40019426552 +43478327403 +44293281184 +45816368750 +46418083595 +48756124942 +50400204873 +55162527713 +93629525849 +59983184580 +66672379653 +58472590654 +57699065522 +73132754892 +76222016702 +75596608612 +60756709712 +82459828450 +67032454393 +117426036076 +70182392907 +149132208103 +95430057680 +75466299652 +88775551494 +104288959404 +87771608587 +90109649934 +94572493692 +121884383247 +99156329815 +105562732586 +112861593235 +116171656176 +154443988240 +133938890306 +118455775234 +124731519915 +142629063005 +127789164105 +156186767392 +136223009364 +181616158265 +137214847300 +186927938402 +231653067044 +163237908239 +165575949586 +179755259056 +198861453096 +177881258521 +182344102279 +239501622892 +193728823507 +217612105049 +204719062401 +218424325821 +246244939339 +243187295149 +252394665540 +261728054411 +261946367215 +260954529279 +264012173469 +301798958950 +273437856664 +356966731746 +494181579046 +398179584877 +350165846641 +419256881948 +567777951690 +343457208107 +357636517577 +360225360800 +371610082028 +680211411227 +398447885908 +411340928556 +422331167450 +466665429616 +461611620970 +504915349560 +495581960689 +513349194819 +619364571988 +522900896494 +700246844858 +537450030133 +710391207441 +633663217464 +809788814464 +693623054748 +715067290135 +701093725684 +839039168796 +876525431588 +1030705500544 +793941249478 +1071856926886 +782951010584 +820779053358 +860059506878 +833672096006 +883942788420 +962247390305 +974960815789 +1000497310249 +1114946532677 +1535846343493 +1060350926627 +1156564113958 +1237696874991 +1231073084881 +1327286272212 +1527295150754 +1484044736268 +1534765821690 +1659818222154 +1495034975162 +1576892260062 +1603730063942 +1614720302836 +1616623106590 +1643010517462 +1654451149364 +2064745180887 +1693731602884 +1717614884426 +1858903604209 +1937208206094 +2726108060043 +2845793387717 +3221309294845 +2216915040585 +4462416494307 +4459006169836 +3174905081085 +2558359357093 +2811331008480 +3018810557958 +3228497424574 +3831635343421 +3071927235224 +3353938579371 +3191612562898 +3308451905720 +3231343409426 +3310354709474 +3654823090520 +3348182752248 +3411346487310 +3552635207093 +5090247013635 +3796111810303 +5438224335430 +7003005842768 +5906542109341 +4775274397678 +5028246049065 +6193715639043 +6963981694403 +6247307982532 +5369690365573 +5830141566438 +9058638991012 +6624562442317 +6263539798122 +6303270644650 +6765285066681 +6965177799994 +6541698118900 +6579526161674 +12077449548970 +8327909604771 +6759529239558 +9317888596651 +10118493062700 +8571386207981 +16283066396645 +10968990036721 +13762535082326 +9803520446743 +14834926006103 +10397936414638 +25803916042824 +11199831932011 +11949216527247 +13589740242311 +19296899641492 +14631180249421 +17741530050911 +13068555711331 +12844968763550 +19828084950889 +17363114214632 +13121224280574 +34663010956992 +15087438844329 +16878022302258 +15330915447539 +19540376244702 +18374906654724 +18969322622619 +20201456861381 +20772510483464 +23466492125969 +22872076158074 +53037917611716 +23519160695212 +23149048459258 +37942986912292 +24794185290797 +61462147607504 +44334561535499 +25966193044124 +25913524474881 +34300238070158 +35288895705710 +28208663124903 +28452139728113 +29999246582832 +41297108491663 +61092035371550 +39170779484000 +33705822102263 +37344229277343 +54365664202994 +49432685170093 +40973967344845 +67942233495124 +46021124617332 +46391236853286 +51879717519005 +60266431114282 +47943233750055 +114333470348410 +50707709765678 +54122187599784 +54174856169027 +71934649092213 +55912771057713 +56660802853016 +58207909707735 +58451386310945 +77942480332887 +63705068685095 +74679789447108 +87365204198131 +72876601586263 +71050051379606 +97900842136337 +139876882587337 +96728834383010 +91681677110523 +92412361470618 +93964358367387 +94334470603341 +123814366611218 +110087627226740 +98650943515733 +104829897365462 +104882565934705 +108297043768811 diff --git a/input/day_10 b/input/day_10 new file mode 100644 index 0000000..ed60cd8 --- /dev/null +++ b/input/day_10 @@ -0,0 +1,98 @@ +126 +38 +162 +123 +137 +97 +92 +67 +136 +37 +146 +2 +139 +74 +101 +163 +128 +127 +13 +111 +30 +117 +3 +93 +29 +152 +80 +21 +7 +54 +69 +40 +48 +104 +110 +142 +57 +116 +31 +70 +28 +151 +108 +20 +157 +121 +47 +75 +94 +39 +73 +77 +129 +41 +24 +44 +132 +87 +114 +58 +64 +4 +10 +19 +138 +45 +76 +147 +59 +155 +156 +83 +118 +109 +107 +160 +61 +91 +102 +115 +68 +150 +34 +16 +27 +135 +161 +46 +122 +90 +1 +164 +100 +103 +84 +145 +51 +60 diff --git a/input/day_11 b/input/day_11 new file mode 100644 index 0000000..537aa21 --- /dev/null +++ b/input/day_11 @@ -0,0 +1,99 @@ +LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLL.LLLL.LLLL.LLLLLLLLLL.LLLLLL.LLLLL +LLLLL.LLLL.LLLLL.LLLLL.L.LLLLLL.LLLL.LLLLLL.LL....LLLLLLLL.LLLLLLLLL.LLLL.LLLLLLLLLL.LLLLLLL +LLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLL.LLLLLLLL.LLLLL.LLLLL.LL.LLLLLL.L. +LLLLLLLLLL.LLL...LLLLL.LLLLLLLL.L.LLLLLLLLLLLLL.LLLL.LLLLL.LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLL +LLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLL.LLLLL..LLLL.LLLL.LL...LLLLLLLLLL.LLLLLL.LLLLL +LL.LLLLLLLLLLLLL.LLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLL.L.LLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL +LLLLLLLLLL.L.LLLL.LLLLLLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLL +.L...L...LLLL..LLL......L.LLL.L.L.....L...L..L.L................L...L...L.LLLL.......LLL.... +L..LLLLLLL.LLLLL.LLLLL.LLLLLLLLLLL.LLLLLLLLLLL.LLLLL.LLLLL.LLLLLLLL..LLLLL.LLLL.LLLLLL.LLL.L +LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLL.LLLLLL.LLL.L +LLL.LLLLLL.LLLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLLLL.LLL.LLLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLLLL....LL +LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLL.LLLLLLL.LL.LLLL.L.L.LLL +LLLLLL.LLL.L.LL.LL.LLL.LLLLLLLL.LLLL.LLLLL.LLL.LLLLLLLLLLL.LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLL +LLLLLLLLLL.LLLLLLLL.LL.LL.LLLLL.LLLL.LLLLLLLLLLLLLLL..LLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLL +.LL.....LLLL.L..L..L..L...L.L..L..L.L....LL..L...LLL...LL.....L..LL....L...LLL..L...LLL..LLL +LLLLLLLLLL.LLLLL.LLLLL.LLLLLL.L.LLLL.LLLLLLLL..LLLLL.LLLLL.L.LLLL.LLLLLLL.LLLLLLLLLLLL.LLLLL +LLLLLLLLLLLL.LLL.LLL.LL.LLLLLLL.LLLL.LLLLLLLLL..LLLL.LLLLLLLLLLLL.LL.LLLLLLLL.LLLLLLLLLLLLLL +LLLLLLLLLLLLLLLL.LLLLL.LLLLLLLL.LLLL.LLLLLLLL..LLLLLLLLLLLLLLL.LLLLL.LLLL.LLLLL.LLL.LL.LLLLL +LLLLLL.L..LLLLLL.LLLLLLLL.LLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLLLL.LLLLL.LLLLLLLLLL.LLLL.LLLLLLL +LLLLLLLLLL.LLLLLLLLLLL..LLLLLLL.LLLL.LLLLLLLLL.LLLLL.LLLL..LLLLLLLL..LLLL.LLLLL.LLLLLLLLLLLL +LLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLL.LLLLLLLLLLLLLLL.L..LL.LL.LLLLLL.LLLL.LLLLLLLLLLLLLLLLLL +LLLLLLLLLL.LLLLLLLLLLLL.LLL.LLL.LLLLLLLLLLLLLL.LLLLL.LLLLL.LLLLLLLLL.L.LL.LLLLLLLLLLLLLLLLLL +L.LLLLLLLL.LLL.LL.LL.LLLLLLLLLL.LLLLL.LLLLLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLL.LLLLLL.LLLLL.LLLLL +L..LL...L.L..L..L.L..L.L.L..L.LL.L....LL....LL.L...L..LL..LLL....L...LL...L..L.L....L....LLL +LLLLLLLLLL.LLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLL +LLLLLLLLLL.LLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLL.LLLLLLLLL..LLL.L.LLLLLLLLLL.LLLLL +LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLL.LLLLLLLLL.LLLLL.LLLLLLLLLLL.LLLLLLLL.LLLLL.LLLL.LLLLL.L +LLLLLLLLLL.LLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLL.L.LLLLL.LLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLL +LLLLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLL.L.LLLLL.LLLLL.L.LLLL.LLLLLL.LLLLLLLLLLLLLLLLLLL +.LL......LLL....LL.L....LLL.L.L....L.LLL....L....L..L...L.......LL.....L...L.L..L.LLLL...... +LLLLLLLLLL.LLLLL.LLLLL.LLLLLLLL.L.LL.LLLLLLLLLLLLLLL.LLLLLLL.LL.LLLLLLL.L.LL.LL.LLL.LLLLLLLL +LLLLLLLLLL.LLLLL.L.LLL.LLLLLL.L.LLLL.LLLLLLLLLLLLLLL.LLLLL.LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLL +LLLLLLLLLL.LLLLL.LLLLL.LLLLLLLL.LLLL.LLLLLLLLLLLL.L..LLLLLLLLLLLLLLL..LLL.LL.LLLLLLLLL.LLLLL +LLLLLLLLLL.LLLLLLLLLLL.LLLLLLLL..LLL.LLLLLLLLL.LLLLL.LLLLLLLLLL.LLLL.LLLL.LLLLL.LLL.LL.L.LLL +LLLLLLLLLL.LLLLLLLLLL.LLLLLL.LL.LLLL.LLLLLL.LL.LLLLLLL.LLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLL +LLLLLLL.LL.LLLLL.LLLLL.L.LLLL.L.LLLL.LLLLLLLLL.LLLLL.LLLLL.LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLL +LLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLL.LLLL.LLLL.LLLLL.LLLLL.LLLLLLLLL.LLL..LLLLL.LLLLLLLLLLLL +LLLLLLLL.LLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLL.L.LLLLL.L.LLLL.LLLLL +L...L.L...L...L.LL.........LL..........LLL.....LLL.....L...L.L..LL......L.L..LL.LL...L.L.... +.LLLLLLLLL.LLL.L.LLLL..L.LLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLL +LLLLLLLLLL.LL..LLLL.LL.L.LLLLLL.LLLL.LLLLLLLLLLLLLLL.LLLLL.LLLLLLLLL.LLL..LLLLLLLLLLLL.LLLLL +LLLLLLL.LLLLLLLL.LLLLL.LLL.LLLL.LLLL.L.LLLLLLL.LLLLLLLLLLL.LLLLLLLLL.LLLL.LLLLL.LLL.LL..LLLL +LLLLLLLLLLLLLLLL.LL.LLLLLLLLLLL.LLLL.LLLLLLLLL.LLLLL.LLLLLLLLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLL +LLL.LLL.LL.LLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLL..LLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLL +.L.LLLLLLL.LL.LL.LLL.L.LLLLLLLL..LLL..LL.LLLLLLLLLLL.LLLLL.LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLL +.LLLLLLLLL..LLLLL.LLL..LLLLLLLL.LLL..LLLLLLLLLLLLLLLLLLLLL.LLLLLLLL..LLLL.LLLLLLLLLLLL..LLLL +LLLLLLLLLL.LLLLL.LLLLL.LLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLLL..LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLLLL +L...L..L.....LL.L...........L...........LL.....L.L.L..L.........LLLLL...L.L..LL..L..L......L +LLLLLLLLLLLLLLLL.LL.LL.LLLLLLLL.LLLL.LLLLL..LLLLLLLLLLLLLL.LLLLLLLLL.LLLL.LLLLL.LLLLLLLLLLLL +LLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL..LLLL.LL.LL.L.LLLLLLLLLL +LLLLLLLLLL.LLLLL.LLLLL.LLLLLLLL.LLLLLLLLLLL.LL.LLLLL.LLLLL.LLLLLLLLL.LLLL.LLLLL.LLLLLL.LLL.L +LLLLLLLLLL.L.LL.LLLLLLLLLLLLLLL.LLLL..LLLLLLLL.LLLLL.LLLLL.LLLLLLLLL..LLL.LLLLLLLLLLLL.LLL.L +L.LLLLLLLL.LLL.L.LLLLLLLLLLL.LL.LLLLLLLLLLLLLL.LLL.L.LLLLL.L.LLLLLLL.LLLLLLLLLL.LLLLLL.LLLLL +LLLLLLLL.L.LLLLL.LLLLL...LL.LLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLL.LLLLLLLLLL.LLLLLLL.LLLL +LLLLL.LL..LLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLL.LLLLL.L.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLL +LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLL.LLL.LLLLL.L.LLL.LLLLLLLLL.LLLL.LLLLL..L.LLL.LLLLL +LL...L.L..L.L....LL...LLLL..L...............L...........L.L.LL..L..L.LLL...LL......LLL..L..L +LLLLLLLLLL.LLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLL..LLLLL.LLLLL +.LL.LLLLLLLLLLLLLLLLL.L.LLLLLLL.LLL.LLLLLLLLLL.LLLLL.LLLLLLLLLLLLLLL.LLL...LLLL.LLLLLLLLLLLL +.LLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLL.LLLLLL.LLLL.LLL.LLLLLLLLLLLLL.LLLLLLLLLL.LLLLLLLL.LLLLL +LLLLLLLLLL.LLLLL.LLLLL.LLLLLLLL.LLLL.LLLLLLLLLLL.LLL..LLLL.LL.L.LLLLLLLLLLLLLLL.LLLLLLLLL.LL +LLLLLLLLLL.LLLLLL.LLLLLLLLL.LLLLLL.L.LL.LL.LLLLLLLLL.LLLLLLLLLLLLLLL.LLLL.LLLLLLLLLL.LLLLLLL +LLLLLLLLLL.LLLLL.LLLLLLLLLLL.LL.LLLLLLLLLLL.LL.LL.LLLLLLLL..LLLLLLLL.LLLL.LLLLL.LLLLLLLL.LLL +LL.LLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLL.LLL.LLLLLLLLLL.L.LLLLL +...L.L.....L.L..LL.LL..L.L...LLLL.......L.LLL...LL..L.L.L..L...L..L......LLL...L.L...L...L.. +LL.LLLLLL..LLLLL.LLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLL.LLLLLLLLLLLLLL..LLLLLLLLLLL.LLLLL +LLLLLLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLLLLL.LLLLL..LLLLLLLL.LL.L.LLLLLLLLLLLLLLLLLL +LLLLLLLLLLLL.LLLLLLLLL.LLLLLLLL.LL..LLLLLLLLLLLLLLLL.LLLLL.LL.LLLLLL.LLLL.LLL.L.LLLLLL.LLLLL +LLLLLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLL..LLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLL.LLLLL.L.LLLLLLLLLL +L.LLLLLLLLLLLLLL.LLLLLLLLLLLLLL.L..L.LLLLLLLLL.LL.LL.LLLLLLLLL.LLLLLLLLLL.LLLLL.LLLLLL.LLLLL +LLLLLLLLLL.LLLLL.LL.LL.LLLLLLL..LL.L.LLLLLL.LL.LLLLLLLLLLL..LLLLLLLL.LLLLLLLLLL.LLLLL..LLLLL +LLLLLLLLLLLLLLLL.LLLLL.LLLLLLL..LLLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLLLLLL.LLLLLLL +LLLL.LLLLL.LLLLL.LLLLL.LLLLLLLL.LLLL.LL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL.L..LLL.LLLLL +L.LL.....LLLL.LL.LLL..L....LLL.L..LLL.....L.L.L...L.L.L..L.L......L.....LL..LL..L..LL.....L. +LLLLLLLLLL.LLLL.LLLLLL.LLLLLLLL.LLLL.LLLL.LLLLLLLLLL.LLLLL.LLLLL.L.L.LLLLLLLLLLLLLLLLL.LLLLL +LLLLL.LL...LLLLLLLLLLL.LL.LLLLL.L.LLLLLLLLLLLL.LLLLLLLLLL..LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL +LLLLLLLLLL.LLLLLL.LLLL.LLLLLLLL.LLLL.LLLLLLLLLLLLLL..LLLLLLLLLL.LLLL.LLL.L.LLLL.LLLLLLLLLLLL +LLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLL.LLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLL +LLL.LLLLLL.LLLLLLLLLLLLL.LLLLLL.LLL..LL.LLLLLLLLLL.L.LLLLL.LLLLLL.L...LLL.LLLLLLLLLLLLLLLLLL +LLLLLLLLLLL.LLLLLLLLLL.LLLLLLL.L.LLL.LLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLL +LLLLLLLLLLLLLL...LLLLLL.LLLLLLLLLLLL.LLLLLLLLLL.LLLL.LLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLL +L.......LL.L...LL...L......LL.L.....LL..L...L..L.LL........L.L..L.L.LL...L..L...LL..L.LLLL.. +LLLLLLLLLL.LLLLL.L.LLLLLLLLLLLL..LLL.LLLLLLLLL.LLLLL.LLLLL.LLLLL.LLL.LLLL.LLLLL.LLLLLLLL.LLL +LLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLL.LLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLL +LLLLLLLLLL.LLL.LLLLLLL.LLLLLLLL.LL.L.LLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLL +LLLLLLLLLL.LLLLL.LLLLL.LLLLLLLL.LLLL.LLLLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLL +LLLL.LLLL.LLLLLL.LLL.L.LLLLLLL..LLLL.LLLLLLLLLLLLLLL.LLLLL.L.LLLLLLL.LLLLLLLLLL.LLLLLLLLLLLL +LLLLLLLLLL.LLLLL.LLLLL.LLLLLLLL.LLLL.LLLLLL.LL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.L +LLLLLL.LLL.LLLLL.L.LLL.LLLLLLLL.LLLL.LLLLLLLLL.LLLLL.LLLLL.LLLLLLLLLLLLLL.LLLLL.LLLLLL.L.LLL +LLLLLLLLLL.LLLL.LLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLL.LLLLLL.LLLLL +LL.LLLLLLL.LLLLL..LLLL..LLLLLLL.LLLL.LLLLLLLLLLLLL.L.LLLLL.LLLLLLLLL.LLLL.LLLLL.LLLLLLLLLLLL +.L.L.L.LL..L.L.......L.....LLLL.L.....L.L.L...L.L..L.L..L..L.....LL.LL.L.......LL.L.L.....LL +LLLLLLLLLL.LLLLL.LLLLL.LLLLLLLL.LLLL.LLLLLLLLLLLLLLL.LLLLL.LLLLLLLLL.LLLL.LLLLLL.LLLLLLLLLLL +LLLLLLLLLL.LL.LL.LLLLL.LLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLL..LLLLLLLLLLLLLLL.LLLLL +LLLLLLLLLLLL.LLLLLLLLLLLLLLLL.L.LLLL.LL.LLLLLLLLLLLL.LLLLL.LLLLLLLLL.LLLL.LLLLLLLL.LLLLLLLLL +LLLLLLLLLLLL.LLL.LLLLL.LLLL.LLL.LLLL.LLLL.LLLL.LLLLL..L.LLLLL.LLLLLL.LLLL.LLLLL.LLLLLL.LLLLL +L.LLLLLLLL.LLLLL.LLLLL.LLLLLLLL.LLLL..LLLLLLLL.LLLLL.LLLLL.LLLLLLLLL.LLLL.LLLLL..LLLLL.LLLLL +LLLLLLLLLLLLLLLL.LLLLLLLLL.LLLL.LLLLL.LLLLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLL..LLL.L.LLLLL +LLLLLLLLLL.LLLLL.LLLLLLL.LLLLLL.LL.LLLLLLLLLLL.LLLLL.LLLLL.LLLLLLLLL.LLLL.LLLLL.LLL.LLLLLLLL diff --git a/input/day_12 b/input/day_12 new file mode 100644 index 0000000..292642b --- /dev/null +++ b/input/day_12 @@ -0,0 +1,755 @@ +W5 +N3 +W4 +F2 +N3 +R180 +E2 +S4 +E5 +N4 +E2 +L90 +F81 +E5 +R180 +E2 +F88 +L90 +N4 +E1 +F90 +S3 +W3 +R90 +F80 +E4 +F28 +R180 +S1 +F80 +E4 +F18 +S5 +W4 +F13 +R90 +S3 +W5 +N2 +F76 +L90 +N4 +F49 +L180 +E5 +R90 +F51 +E4 +L180 +F86 +S5 +L180 +F3 +E5 +W1 +R90 +F54 +N4 +E5 +R90 +E4 +N3 +W1 +E4 +R180 +W2 +F2 +S5 +W4 +E3 +R90 +F49 +R90 +W5 +N3 +F47 +E1 +L90 +E2 +F86 +E3 +R90 +F100 +F84 +N2 +F12 +L90 +N4 +W5 +F40 +N5 +F68 +W3 +R90 +W4 +N1 +F63 +W5 +S3 +F52 +R180 +W1 +W4 +L90 +N4 +R90 +S4 +L90 +F77 +R90 +E5 +F20 +N3 +W5 +R90 +E5 +R180 +F63 +S1 +W1 +W5 +F12 +E5 +L90 +N4 +F83 +W4 +F92 +W2 +F41 +E3 +S5 +R90 +S5 +W2 +N1 +F4 +N1 +F50 +L180 +F73 +N2 +L90 +E2 +S5 +F19 +L90 +E1 +N4 +L90 +S2 +L90 +F90 +L90 +N3 +E1 +F32 +E1 +F66 +R180 +E1 +S2 +F72 +R90 +S2 +E1 +N3 +F24 +W4 +F32 +W5 +S3 +E2 +F52 +W5 +F54 +E4 +F97 +N1 +R90 +W3 +R180 +E2 +S3 +R90 +N1 +N3 +F76 +R90 +F43 +E3 +N4 +L90 +E4 +F32 +E4 +S3 +F46 +R90 +N4 +E5 +L90 +F33 +W1 +W1 +N1 +E3 +S1 +R90 +W3 +L90 +F59 +W3 +S1 +F7 +W3 +F85 +R90 +F61 +E5 +S5 +F25 +F8 +L90 +N3 +F80 +W4 +F89 +N3 +E5 +N5 +L90 +F50 +F19 +L90 +N2 +R90 +F8 +W5 +S5 +L90 +F63 +S5 +S2 +F44 +N1 +W1 +L90 +R90 +W2 +F24 +W3 +S4 +R90 +F69 +E5 +F77 +W4 +F38 +R180 +W3 +S5 +N2 +F91 +F44 +N2 +W2 +R90 +W5 +F48 +W3 +R90 +F74 +E4 +S3 +R90 +E3 +L90 +F81 +W1 +F69 +W2 +N3 +R90 +E1 +R90 +L90 +E5 +S4 +E2 +S5 +F58 +N3 +F50 +L90 +N1 +L90 +N4 +L180 +W2 +L90 +F61 +L90 +S5 +E1 +S4 +W1 +S3 +E4 +F62 +S2 +L270 +F97 +R90 +S5 +L180 +F66 +E1 +R90 +E3 +L180 +F98 +R90 +F37 +R90 +F18 +N3 +R90 +E2 +S3 +L90 +S4 +F82 +W3 +F72 +N1 +E4 +F67 +L90 +W1 +S2 +F94 +R90 +F62 +N4 +W2 +S5 +R180 +F41 +W5 +F9 +W2 +F34 +L90 +N3 +R90 +F1 +N4 +E4 +R90 +F39 +S5 +W5 +N5 +R180 +F32 +W5 +F97 +R90 +N4 +W3 +R90 +N4 +W2 +N5 +W5 +R90 +S4 +L90 +F99 +N2 +R90 +E4 +N5 +E1 +F67 +R180 +W3 +S2 +E2 +F95 +E1 +S1 +W5 +S3 +E2 +F64 +L90 +F29 +S3 +F33 +F46 +S2 +R90 +N4 +E1 +F11 +F50 +L90 +E2 +F72 +L180 +N2 +E4 +N1 +E3 +S1 +F37 +W1 +R90 +N3 +L90 +W3 +F62 +R90 +F88 +W1 +S4 +E3 +L90 +S4 +R90 +E4 +S2 +F81 +W5 +F82 +L90 +F19 +R90 +R270 +E4 +F27 +R90 +N1 +W3 +R90 +W1 +S4 +L90 +W1 +F24 +L180 +R90 +S1 +E3 +S4 +L90 +E3 +F71 +R180 +S1 +F33 +S1 +F49 +S1 +R180 +E4 +L180 +F44 +R90 +W2 +F26 +R90 +L180 +L180 +F31 +S3 +E4 +R90 +W1 +L90 +W1 +N5 +F25 +N3 +L180 +F4 +N3 +S5 +E4 +R90 +S2 +L90 +F28 +E4 +N3 +L90 +S1 +R90 +N4 +W1 +N2 +R180 +E4 +L90 +S5 +R180 +S5 +F14 +E3 +F38 +S2 +F1 +E1 +F46 +R270 +F69 +L180 +N1 +R90 +W5 +N4 +F22 +R90 +N1 +L180 +F16 +N2 +E1 +N4 +F68 +L90 +E2 +F6 +E2 +F2 +E4 +R90 +W4 +E2 +R90 +S1 +W1 +S5 +F87 +S5 +F9 +W5 +F91 +L90 +S2 +R270 +F73 +L90 +F17 +L90 +E4 +W1 +R90 +F40 +E5 +F7 +R180 +R90 +R180 +E5 +F89 +R180 +W2 +L180 +F31 +E2 +S1 +W2 +F11 +L180 +E1 +F55 +E5 +S4 +L90 +S5 +W4 +R180 +F23 +E3 +R90 +F12 +E3 +F3 +S3 +W3 +L90 +W2 +N5 +E2 +F77 +E4 +S3 +F11 +W4 +F23 +E1 +R90 +F61 +E3 +L90 +S3 +N5 +W2 +R180 +W2 +S2 +N5 +E1 +S2 +L90 +W3 +R90 +F89 +R270 +N3 +L90 +R90 +W4 +S2 +W4 +L90 +S1 +E4 +E4 +S3 +R270 +F47 +L90 +E1 +F10 +L180 +W4 +R90 +N2 +F97 +L180 +F82 +N5 +L90 +S1 +E3 +F14 +R90 +F23 +N2 +F34 +L270 +E2 +F77 +E5 +L90 +S3 +R270 +F12 +N1 +E3 +R90 +E2 +F4 +W3 +E3 +F33 +S4 +R180 +S5 +R90 +E1 +R270 +F53 +N4 +L90 +N1 +W2 +S5 +E2 +R180 +W2 +S3 +L90 +N4 +W3 +N3 +F84 +E5 +N3 +L90 +F48 +W4 +F18 +L90 +W3 +S4 +E2 +S4 +F64 +N1 +F96 +S3 +E5 +N4 +W2 +F22 +W5 +L90 +F23 +E2 +N1 +F92 +F16 +L180 +E4 +N1 +F75 +L90 +W4 +L270 +W3 +S4 +L90 +F29 +W4 +S2 +F47 +R90 +N3 +L90 +S3 +W3 +N1 +F45 +N2 +L90 +E4 +N1 +L90 +E3 +R90 +N3 +F86 +W1 +N5 +W3 +S5 +L90 +S4 +W2 +F44 diff --git a/input/day_13 b/input/day_13 new file mode 100644 index 0000000..ed36847 --- /dev/null +++ b/input/day_13 @@ -0,0 +1,2 @@ +1001287 +13,x,x,x,x,x,x,37,x,x,x,x,x,461,x,x,x,x,x,x,x,x,x,x,x,x,x,17,x,x,x,x,19,x,x,x,x,x,x,x,x,x,29,x,739,x,x,x,x,x,x,x,x,x,41,x,x,x,x,x,x,x,x,x,x,x,x,23 diff --git a/input/day_14 b/input/day_14 new file mode 100644 index 0000000..5693d3b --- /dev/null +++ b/input/day_14 @@ -0,0 +1,572 @@ +mask = 101XX10X1X00001010011011X1XXX1001011 +mem[12898] = 4515455 +mem[39269] = 262864 +mem[15998] = 27 +mem[4565] = 896581 +mem[35263] = 872262 +mask = 110X1111000X000111001XX0110X010111XX +mem[5436] = 29453 +mem[405] = 4591187 +mem[36544] = 119659504 +mem[4590] = 1754617 +mask = 11001111000100XX11000000000XX0X0X001 +mem[18971] = 65392 +mem[12898] = 60445914 +mem[51566] = 8117 +mem[7267] = 99056 +mem[25605] = 978 +mem[33329] = 437436 +mask = 10X0X100X00000101X0X0001111111X101XX +mem[43594] = 7609 +mem[12898] = 126982257 +mem[15065] = 4039 +mask = 11XX11XX000100X10110111001101000X110 +mem[2358] = 139154 +mem[48424] = 361 +mask = X00X0X000101010111111000X11001000111 +mem[60868] = 1012242539 +mem[13504] = 114153 +mem[51015] = 34551413 +mem[43984] = 708156 +mem[58774] = 436301 +mem[15489] = 243282402 +mem[10963] = 81839 +mask = 1001000X1100001001001101XX01000001X0 +mem[63618] = 3428738 +mem[16270] = 289636637 +mem[45847] = 271443 +mem[38518] = 2789 +mask = X0010X000101X00111110010101010X001X1 +mem[56985] = 14253068 +mem[10578] = 869930 +mask = 10000100010100010X11X01X00X011010001 +mem[31893] = 32746 +mem[57677] = 1423 +mem[43667] = 94853349 +mem[7624] = 76941001 +mem[20508] = 1273351 +mask = 10XX00100011X0X0110XX1X10011XX111000 +mem[28963] = 125041 +mem[42777] = 251362 +mem[34873] = 155374451 +mem[29355] = 886081 +mem[16775] = 57795906 +mem[42311] = 10111 +mem[30652] = 4443965 +mask = 10000111XX000001X1X0X001011110X00111 +mem[31369] = 31024146 +mem[23234] = 1046769566 +mask = 00XX1010XX1X001011010111X11X1010011X +mem[20251] = 3138 +mem[23672] = 28276 +mem[48425] = 304 +mem[51384] = 6985 +mask = 110X011X00000001X100111001X010010X0X +mem[44366] = 985 +mem[47430] = 127814906 +mem[34576] = 41033794 +mem[58183] = 11571792 +mask = XX0001X0010100011X11101010000101X011 +mem[47311] = 897443 +mem[47179] = 457654457 +mask = X100X11100010X0XX10X1000X11001001100 +mem[57561] = 38620862 +mem[63945] = 78 +mem[37164] = 2722 +mask = 0000XXXX0011XX0XX1110010X10000111000 +mem[52440] = 14680631 +mem[10040] = 482410861 +mem[31369] = 1312217 +mask = 10X1X0001000X01111X01011100111111001 +mem[33657] = 127832235 +mem[59700] = 232182856 +mem[64183] = 32458630 +mem[13528] = 56706903 +mask = 00XX110X0X0XX00111010101X001110111X0 +mem[34491] = 23031313 +mem[16152] = 2473 +mem[46572] = 58257 +mask = 11X1011X00000001010XXX1010X10000X000 +mem[36932] = 54890 +mem[17249] = 518900642 +mem[58586] = 27068931 +mask = 1100011X0000X00111001000X00011X11001 +mem[4203] = 11690902 +mem[20122] = 399199895 +mem[32417] = 379534 +mem[50520] = 3253466 +mem[23645] = 12184122 +mask = 100000X00001010011X01011100X0010X010 +mem[59410] = 3462 +mem[51849] = 231731736 +mem[31141] = 17505 +mem[2661] = 20669501 +mem[57030] = 225241 +mem[37965] = 4947 +mem[37475] = 120 +mask = 10XX01110001000XX10001X0101111000011 +mem[54239] = 21386681 +mem[25423] = 49927683 +mem[17991] = 24735 +mem[26742] = 66457157 +mask = 10000100100X00100X011X11100X10100100 +mem[42442] = 2898 +mem[33841] = 98213928 +mem[1295] = 436390 +mem[20533] = 26130 +mask = 00X0001X000X000011001X1010000X101101 +mem[12898] = 85396 +mem[17781] = 96765096 +mem[23645] = 156257533 +mem[41542] = 25550 +mem[23694] = 19768 +mask = 00000000X0111101X11101110110X01X0001 +mem[30165] = 9659654 +mem[17417] = 840 +mem[38700] = 20540407 +mem[17514] = 266223622 +mask = 1X0X0X100001000011001000101X11X0XX11 +mem[1187] = 2633 +mem[49568] = 13636 +mem[41073] = 2493 +mem[42442] = 562308 +mask = 10000XXX0001000X1100010X111111000001 +mem[18887] = 22856 +mem[7241] = 580581 +mem[20501] = 15343308 +mem[8329] = 9182 +mem[30265] = 1720165 +mem[55589] = 56956 +mem[56070] = 99398329 +mask = 11X0111100010001X1X0101X0011X01XX1XX +mem[22677] = 289814 +mem[57909] = 24289535 +mem[2053] = 96654349 +mem[12868] = 30681 +mem[28491] = 26428 +mem[52407] = 644 +mem[26000] = 1537 +mask = 100001X11100X00X0110010X111X100X0110 +mem[61720] = 4504409 +mem[18231] = 20747971 +mem[7557] = 40802 +mem[8177] = 1825 +mem[16963] = 831395 +mem[58488] = 32600 +mask = 10000X001000001XX1XX101111X11X100XX1 +mem[23493] = 1676 +mem[14482] = 39198509 +mem[12119] = 277 +mem[34873] = 839193094 +mem[59700] = 213967901 +mem[44792] = 4486 +mask = 11101111XX0X00010X100X101XX100000X00 +mem[21304] = 749 +mem[17415] = 1039713731 +mem[56228] = 1653 +mask = 0000X0X000X1X000X1XXX01000100010100X +mem[54745] = 258440 +mem[9496] = 1382 +mem[677] = 160442786 +mem[18231] = 118264 +mem[3314] = 7774920 +mem[48978] = 58150 +mask = 11010X11000000X1110011100X001001X0X0 +mem[11295] = 1701 +mem[43085] = 35120466 +mem[36184] = 717214 +mem[11085] = 797499853 +mem[50040] = 100884 +mem[12868] = 76327 +mem[1094] = 17127824 +mask = X1X0111100000001X100100111101111X000 +mem[23009] = 56150703 +mem[62945] = 187456 +mem[16270] = 2148 +mem[6558] = 226 +mem[18104] = 116620 +mask = 1100111X000100010X0X1XX0111101X00X1X +mem[20277] = 41195 +mem[55507] = 497048 +mem[65060] = 1392113 +mem[39631] = 729 +mem[20012] = 221 +mem[38700] = 157 +mask = 1011110X1100001010XX01X111X111X01110 +mem[50095] = 329773464 +mem[19363] = 23694 +mem[23187] = 136735746 +mem[41305] = 248581 +mem[60810] = 36613 +mask = 11X1010000000001X00001X0010010111X10 +mem[23234] = 315410359 +mem[61681] = 3806597 +mem[57545] = 205794 +mem[8173] = 743124 +mem[33142] = 2265923 +mem[50325] = 338694 +mask = 11101XX10001X001X100101X0X11101000X0 +mem[10886] = 92 +mem[31621] = 49382572 +mem[40094] = 381691821 +mem[22404] = 25092613 +mem[26046] = 540575313 +mask = 1100X110000X000100X01X0X0X00X0X00001 +mem[6401] = 12044 +mem[51779] = 1254732 +mem[49213] = 14771072 +mask = 11001X1100X10X0111001110X10X0XX00100 +mem[17960] = 1810 +mem[58879] = 14547554 +mask = 10110010X01110X01101000101100X011X01 +mem[6271] = 43039 +mem[42035] = 308023 +mem[61809] = 14965999 +mem[14482] = 22965 +mask = 1000011111000X0X0110X111X1001XX00110 +mem[34865] = 521885574 +mem[32874] = 47758845 +mem[49758] = 486116428 +mem[4620] = 436 +mem[8795] = 37336 +mem[35355] = 1913 +mem[24155] = 5028 +mask = 100X00X100XXX0X011X111000001X00X1001 +mem[12898] = 326718882 +mem[41304] = 2217 +mem[512] = 252187 +mask = 00001X10X0111X0X01100010001010110011 +mem[17133] = 9763003 +mem[53861] = 20374202 +mem[12411] = 11146 +mem[44155] = 70710 +mem[18558] = 1014374 +mem[8244] = 27394 +mask = 1100111100010X0X110X10X1X1110X100100 +mem[6255] = 15673046 +mem[27448] = 617665 +mem[17549] = 1391 +mem[9254] = 1191392 +mask = 1110111X00010001X11XX110X01110100001 +mem[27269] = 915739 +mem[17886] = 2414578 +mem[23234] = 10312308 +mask = 1000111100010X01110X0101XX1010100001 +mem[14210] = 3945538 +mem[53570] = 152079 +mem[42311] = 804 +mem[20501] = 7528 +mem[62486] = 44029 +mask = 1X1X110X1X0X0010100001X111X11X10110X +mem[31020] = 10294 +mem[36367] = 173644419 +mem[3344] = 55087 +mem[22404] = 3768102 +mask = 0X000010000X00X01100XX1000110X001101 +mem[8146] = 32084685 +mem[25356] = 204754 +mem[53100] = 31087 +mem[16162] = 43271515 +mem[7495] = 248175354 +mask = 0X00111X000100000111000011000X11000X +mem[48425] = 16845 +mem[21120] = 5932031 +mem[18984] = 5971079 +mem[22024] = 1139029 +mem[57772] = 8264 +mask = 1000X1X111X00000011001001X01X1000X11 +mem[29416] = 214197264 +mem[23107] = 16163 +mem[35947] = 392 +mem[3969] = 18827505 +mask = 1X001111000XX10X1101110001X111100000 +mem[23664] = 824737 +mem[35051] = 6316 +mem[23107] = 3396 +mem[23133] = 93865 +mask = 101000100011X000110101010110XX01010X +mem[64539] = 503222475 +mem[49280] = 222415 +mem[4908] = 6056 +mask = X11011110001000111X000110X100X111101 +mem[63002] = 227835267 +mem[62736] = 2687 +mem[35355] = 13135677 +mem[30575] = 34622509 +mem[6958] = 8289 +mask = 1100111100X1X00111101011001110XXX011 +mem[38931] = 50025 +mem[5213] = 488636 +mem[16162] = 6370 +mem[49918] = 27948504 +mem[10972] = 32144736 +mem[25810] = 23808695 +mem[59308] = 573239 +mask = 1000001000X10X001100X011X01X11100X01 +mem[8119] = 1356 +mem[18765] = 16001283 +mem[40681] = 81290249 +mem[12898] = 1301 +mem[26361] = 20784743 +mem[27679] = 142542224 +mask = 101X001X001X00001X0X0110001X111X01X1 +mem[35355] = 805383617 +mem[61993] = 4078154 +mem[17549] = 1577966 +mem[5900] = 111957340 +mask = 0000001000010XX01X000000000100X10001 +mem[14482] = 203210 +mem[40789] = 103701945 +mem[60901] = 165096 +mem[9784] = 16634 +mem[58840] = 2959 +mask = 0X0000100001010XX1X0101X001X01X010XX +mem[35677] = 923584 +mem[38170] = 52214160 +mem[59710] = 917580 +mem[28352] = 9711 +mem[24738] = 527299 +mask = 111XX100100100X0XXX0010111011010100X +mem[48324] = 113818619 +mem[46099] = 22968630 +mem[2047] = 7513744 +mem[16084] = 22059 +mem[3484] = 7934120 +mask = 100001X00X01000111XX110010X1X0011X01 +mem[40970] = 582049676 +mem[43326] = 33149 +mem[28352] = 8866951 +mem[8571] = 5223 +mask = X10100100XX1000011001X00100011000010 +mem[57677] = 10736612 +mem[44008] = 27644 +mem[51849] = 54378 +mem[20005] = 5582059 +mem[23107] = 9832268 +mem[57561] = 40400 +mask = 11101111000X0001X10X10X10X1X10X010X0 +mem[29968] = 89927661 +mem[56] = 1989163 +mem[7557] = 17453 +mem[33361] = 9 +mem[43444] = 78638 +mem[12248] = 54497991 +mem[35709] = 2765740 +mask = 110XX1X00000000X0X00110000X0000001X0 +mem[34491] = 13649 +mem[26000] = 980 +mask = 0X0000100X010100X1X0X000010001100101 +mem[7504] = 2704 +mem[41073] = 22655 +mem[28507] = 9278213 +mem[21463] = 1475 +mem[63802] = 11330 +mask = 11001111000X0001X100X1001001101000X0 +mem[45847] = 1029083 +mem[52359] = 87173 +mem[7504] = 205315899 +mem[37731] = 657 +mem[41396] = 1027 +mask = X001X0100XX10X1011X10X010000001111X1 +mem[29618] = 14034335 +mem[7831] = 1455 +mem[28409] = 26087196 +mask = X000001000010X0011001X1XX010XXX011X1 +mem[49280] = 816038 +mem[53410] = 632054 +mem[25605] = 2170 +mem[47742] = 449847 +mem[7056] = 13776253 +mem[12256] = 722 +mask = 110X11X100010001X10010X0X01010100100 +mem[63043] = 7807913 +mem[57885] = 230082055 +mem[50315] = 27089695 +mem[64722] = 54151 +mem[19735] = 978866 +mem[41391] = 9015641 +mem[50548] = 96572794 +mask = 100X00X0XX0000X1110X10111011111000X1 +mem[61760] = 5688555 +mem[18595] = 4630 +mem[41305] = 1670 +mem[25605] = 472094 +mem[50759] = 28261157 +mask = 00XXX1X0010100011XX1011010X0010100XX +mem[16270] = 7874 +mem[63561] = 49551173 +mem[43150] = 11196 +mem[18504] = 18360154 +mask = 1X0101X1000000X111001X100X0011010101 +mem[1825] = 2048695 +mem[26563] = 66443 +mem[22477] = 2539322 +mem[59104] = 1269245 +mem[50554] = 3370 +mem[7797] = 300 +mask = 1000000XX0000X11010X11111X011010X011 +mem[61720] = 700175 +mem[37943] = 41662 +mem[3405] = 441992426 +mask = X0XX0X001X00001001000111110110XX0110 +mem[45473] = 1830 +mem[35940] = 16393 +mem[44793] = 10545068 +mem[23107] = 145304756 +mem[48096] = 480559528 +mem[57539] = 97582237 +mem[64518] = 60543 +mask = 10X00100010100X1X01XX0X000010101011X +mem[14210] = 200447 +mem[26703] = 46292 +mem[42748] = 7946 +mem[11664] = 7633363 +mask = X00X010001010X01XX11X0101X0X01000X01 +mem[40269] = 357709 +mem[36823] = 14385170 +mem[52568] = 522064310 +mem[41363] = 389730 +mem[4127] = 2285054 +mask = 1010110010000010X000XX111011100X01XX +mem[19072] = 49597375 +mem[32473] = 7622 +mem[1916] = 9685106 +mem[10040] = 16339629 +mem[10795] = 25165351 +mem[16634] = 508779 +mem[16084] = 232615 +mask = 11XX1111X001XX0111000010X0110100X111 +mem[44372] = 11010 +mem[58030] = 5106 +mem[15235] = 24371 +mem[41578] = 3641535 +mask = 110000X000000X01X0X0X01X1X0100001011 +mem[64968] = 1528 +mem[21183] = 429276 +mem[51816] = 60726 +mem[12248] = 87748 +mask = X0001111000000011100101X10111100X11X +mem[39612] = 57230 +mem[33329] = 35880 +mem[15681] = 27569 +mem[51326] = 237622439 +mem[36099] = 48369 +mem[58183] = 726 +mem[38471] = 2690 +mask = 11X011110X01000X0100X0X0X000X01X01X0 +mem[41793] = 519002787 +mem[39290] = 5821 +mask = 000X00100001XX00X1000000X1XX10010110 +mem[36367] = 1347261 +mem[52040] = 858329 +mem[60969] = 14183 +mem[49232] = 3014091 +mask = X000X01X000101XX1100X11001X00000100X +mem[61397] = 9063 +mem[63395] = 92917 +mem[47750] = 6587 +mem[13695] = 2038 +mem[52876] = 219355 +mem[50726] = 815351 +mask = 11X0X111000100011100100X0X11X1X011XX +mem[24438] = 360143 +mem[14268] = 233280 +mem[46071] = 14590 +mem[47430] = 195019 +mem[8714] = 5003481 +mem[34758] = 866985 +mask = 10000X00XX010101101X1X111001X0001110 +mem[12826] = 369283 +mem[33546] = 519165 +mem[34578] = 12340 +mem[13504] = 301264250 +mem[4433] = 26315015 +mask = X0X011X000X100X001110100000XX011100X +mem[10779] = 6427 +mem[62591] = 124867728 +mem[4073] = 26086825 +mem[19735] = 14280934 +mem[40681] = 54398576 +mem[44232] = 1164302 +mem[5734] = 677248729 +mask = 1000XX0X11000010X100X01011011X1001X1 +mem[55680] = 6971988 +mem[4565] = 1361280 +mem[35316] = 2209 +mem[40546] = 758 +mem[47381] = 49216 +mask = 000000100XX10101X10X10000XX1X01X0100 +mem[57507] = 477326 +mem[58729] = 256151738 +mem[47689] = 16875625 +mask = 0000001000010X00X100100X0X0X0X00010X +mem[58893] = 531598 +mem[56609] = 1534 +mem[793] = 3558686 +mem[17811] = 31042 +mem[41552] = 73028105 +mem[12657] = 1035597401 +mask = 110011100000000101001XX00101X0000X00 +mem[18971] = 81961737 +mem[58641] = 685839 +mem[58774] = 51830284 +mem[50554] = 190835154 +mask = 1010X100000000101X00100X1110X0001X01 +mem[10630] = 11281616 +mem[30301] = 344 +mem[21809] = 66389352 +mem[15829] = 3924744 +mem[50602] = 546681 +mem[33142] = 153438 +mask = 0X000010000X010X111X01X11110111X10X0 +mem[32309] = 1315 +mem[59481] = 404 +mem[13793] = 2029 +mem[41406] = 2393 +mem[7495] = 24826836 +mem[61576] = 9555003 +mask = 00000100X10X010111111X0010X111010010 +mem[6662] = 15689063 +mem[1130] = 182923358 +mem[6648] = 3538 +mem[8833] = 7984 +mem[7495] = 8285851 +mask = 11000X1X00XX000100X01X0X01X11X000000 +mem[34270] = 180307825 +mem[36097] = 712 +mem[47750] = 843753 +mem[44800] = 247708 +mem[48331] = 31912 +mask = 0001000001010101XX1X1X1X011X1000011X +mem[15235] = 491 +mem[47685] = 775 +mem[52882] = 99948 +mem[32016] = 395727 +mask = 100000010XX0XX00X101X10000X110X01000 +mem[49801] = 230387797 +mem[55855] = 7808 +mem[39291] = 114525 +mem[50759] = 2588 +mem[31793] = 19374 +mask = 10XX11X000010X00X1X1XX010011011110X1 +mem[45068] = 763282 +mem[31165] = 43188 +mem[25684] = 1041033 +mem[52456] = 32196 +mask = 1100X1XXX001X00111X0110X0X101010X101 +mem[59821] = 6610 +mem[57397] = 67932 +mem[15240] = 505977952 +mask = 100X001XX0X1X00011010100X0110000X001 +mem[22585] = 2024050 +mem[30527] = 79580709 +mem[57425] = 7597579 +mem[49280] = 47528262 +mask = 1X00XX1X000X0001110011X010X111000001 +mem[45847] = 207968 +mem[12898] = 69230005 +mem[18887] = 433691609 +mem[7495] = 114085080 +mem[8177] = 105183315 +mem[9561] = 1468259 +mem[38679] = 7998 diff --git a/input/day_15 b/input/day_15 new file mode 100644 index 0000000..134afd4 --- /dev/null +++ b/input/day_15 @@ -0,0 +1 @@ +0,20,7,16,1,18,15