├── day5 ├── src │ ├── empty.txt │ ├── input-test.txt │ ├── main.hk │ └── input.txt ├── .gitignore ├── husk.toml ├── package.json └── README.md ├── .gitignore ├── day3 ├── .gitignore ├── src │ ├── input-test.txt │ ├── main.hk │ └── input.txt ├── husk.toml ├── package.json ├── package-lock.json └── README.md ├── day4 ├── .gitignore ├── husk.toml ├── src │ ├── input-test.txt │ ├── main.hk │ └── input.txt ├── package.json ├── package-lock.json └── README.md ├── day1 ├── src │ ├── mine.txt │ ├── input-test.txt │ ├── main.rs │ └── input.txt ├── Cargo.toml └── Cargo.lock ├── .gitattributes └── day2 ├── Cargo.toml ├── ranges-test.txt ├── Cargo.lock ├── src ├── ranges-test.txt ├── ranges.txt ├── main_part1.rs └── main.rs ├── husk.toml ├── ranges.txt └── main.hk /day5/src/empty.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | */target 2 | dist 3 | -------------------------------------------------------------------------------- /day3/.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ 3 | -------------------------------------------------------------------------------- /day4/.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ 3 | -------------------------------------------------------------------------------- /day5/.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ 3 | -------------------------------------------------------------------------------- /day1/src/mine.txt: -------------------------------------------------------------------------------- 1 | L39 2 | R8 3 | L19 4 | R5 5 | L10 6 | R5 7 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.hk linguist-language=Rust 2 | *.husk linguist-language=Rust 3 | -------------------------------------------------------------------------------- /day3/src/input-test.txt: -------------------------------------------------------------------------------- 1 | 987654321111111 2 | 811111111111119 3 | 234234234234278 4 | 818181911112111 5 | -------------------------------------------------------------------------------- /day1/src/input-test.txt: -------------------------------------------------------------------------------- 1 | L68 2 | L30 3 | R48 4 | L5 5 | R60 6 | L55 7 | L1 8 | L99 9 | R14 10 | L82 11 | -------------------------------------------------------------------------------- /day1/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "day1" 3 | version = "0.1.0" 4 | edition = "2024" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /day2/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "day2" 3 | version = "0.1.0" 4 | edition = "2024" 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /day5/src/input-test.txt: -------------------------------------------------------------------------------- 1 | 3-5 2 | 10-14 3 | 16-20 4 | 12-18 5 | 6 | 1 7 | 5 8 | 8 9 | 11 10 | 17 11 | 32 12 | -------------------------------------------------------------------------------- /day2/ranges-test.txt: -------------------------------------------------------------------------------- 1 | 11-22,95-115,998-1012,1188511880-1188511890,222220-222224,1698522-1698528,446443-446449,38593856-38593862,565653-565659,824824821-824824827,2121212118-2121212124 2 | -------------------------------------------------------------------------------- /day3/husk.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "day3" 3 | version = "0.1.0" 4 | 5 | [build] 6 | entry = "src/main.hk" 7 | output = "dist" 8 | target = "auto" 9 | source_maps = true 10 | -------------------------------------------------------------------------------- /day4/husk.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "day4" 3 | version = "0.1.0" 4 | 5 | [build] 6 | entry = "src/main.hk" 7 | output = "dist" 8 | target = "auto" 9 | source_maps = true 10 | -------------------------------------------------------------------------------- /day4/src/input-test.txt: -------------------------------------------------------------------------------- 1 | ..@@.@@@@. 2 | @@@.@.@.@@ 3 | @@@@@.@.@@ 4 | @.@@@@..@. 5 | @@.@@@@.@@ 6 | .@@@@@@@.@ 7 | .@.@.@.@@@ 8 | @.@@@.@@@@ 9 | .@@@@@@@@. 10 | @.@.@@@.@. 11 | -------------------------------------------------------------------------------- /day5/husk.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "day5" 3 | version = "0.1.0" 4 | 5 | [build] 6 | entry = "src/main.hk" 7 | output = "dist" 8 | target = "auto" 9 | source_maps = true 10 | -------------------------------------------------------------------------------- /day1/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 4 4 | 5 | [[package]] 6 | name = "day1" 7 | version = "0.1.0" 8 | -------------------------------------------------------------------------------- /day2/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 4 4 | 5 | [[package]] 6 | name = "day2" 7 | version = "0.1.0" 8 | -------------------------------------------------------------------------------- /day2/src/ranges-test.txt: -------------------------------------------------------------------------------- 1 | 11-22,95-115,998-1012,1188511880-1188511890,222220-222224,1698522-1698528,446443-446449,38593856-38593862,565653-565659,824824821-824824827,2121212118-2121212124 2 | -------------------------------------------------------------------------------- /day3/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "day3", 3 | "version": "0.1.0", 4 | "type": "module", 5 | "scripts": { 6 | "build": "huskc build", 7 | "start": "huskc run" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /day4/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "day4", 3 | "version": "0.1.0", 4 | "type": "module", 5 | "scripts": { 6 | "build": "huskc build", 7 | "start": "huskc run" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /day5/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "day5", 3 | "version": "0.1.0", 4 | "type": "module", 5 | "scripts": { 6 | "build": "huskc build", 7 | "start": "huskc run" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /day2/husk.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "advent2025-day2" 3 | version = "0.0.1" 4 | description = "Advent of Code 2025 - Day 2 Solution in Husk" 5 | 6 | [build] 7 | entry = "main.hk" 8 | output = "dist" 9 | target = "cjs" 10 | source_maps = true 11 | -------------------------------------------------------------------------------- /day3/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "day3", 3 | "version": "0.1.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "day3", 9 | "version": "0.1.0" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /day4/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "day4", 3 | "version": "0.1.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "day4", 9 | "version": "0.1.0" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /day3/README.md: -------------------------------------------------------------------------------- 1 | # day3 2 | 3 | A Husk project. 4 | 5 | ## Getting Started 6 | 7 | ```bash 8 | # Build the project 9 | npm run build 10 | 11 | # Run the project 12 | npm start 13 | ``` 14 | 15 | ## Project Structure 16 | 17 | ``` 18 | day3/ 19 | ├── src/ 20 | │ └── main.hk # Entry point 21 | ├── husk.toml # Project configuration 22 | ├── package.json 23 | └── README.md 24 | ``` 25 | -------------------------------------------------------------------------------- /day4/README.md: -------------------------------------------------------------------------------- 1 | # day4 2 | 3 | A Husk project. 4 | 5 | ## Getting Started 6 | 7 | ```bash 8 | # Build the project 9 | npm run build 10 | 11 | # Run the project 12 | npm start 13 | ``` 14 | 15 | ## Project Structure 16 | 17 | ``` 18 | day4/ 19 | ├── src/ 20 | │ └── main.hk # Entry point 21 | ├── husk.toml # Project configuration 22 | ├── package.json 23 | └── README.md 24 | ``` 25 | -------------------------------------------------------------------------------- /day5/README.md: -------------------------------------------------------------------------------- 1 | # day5 2 | 3 | A Husk project. 4 | 5 | ## Getting Started 6 | 7 | ```bash 8 | # Build the project 9 | npm run build 10 | 11 | # Run the project 12 | npm start 13 | ``` 14 | 15 | ## Project Structure 16 | 17 | ``` 18 | day5/ 19 | ├── src/ 20 | │ └── main.hk # Entry point 21 | ├── husk.toml # Project configuration 22 | ├── package.json 23 | └── README.md 24 | ``` 25 | -------------------------------------------------------------------------------- /day2/ranges.txt: -------------------------------------------------------------------------------- 1 | 1061119-1154492,3-23,5180469-5306947,21571-38630,1054-2693,141-277,2818561476-2818661701,21177468-21246892,40-114,782642-950030,376322779-376410708,9936250-10074071,761705028-761825622,77648376-77727819,2954-10213,49589608-49781516,9797966713-9797988709,4353854-4515174,3794829-3861584,7709002-7854055,7877419320-7877566799,953065-1022091,104188-122245,25-39,125490-144195,931903328-931946237,341512-578341,262197-334859,39518-96428,653264-676258,304-842,167882-252124,11748-19561 2 | -------------------------------------------------------------------------------- /day2/src/ranges.txt: -------------------------------------------------------------------------------- 1 | 1061119-1154492,3-23,5180469-5306947,21571-38630,1054-2693,141-277,2818561476-2818661701,21177468-21246892,40-114,782642-950030,376322779-376410708,9936250-10074071,761705028-761825622,77648376-77727819,2954-10213,49589608-49781516,9797966713-9797988709,4353854-4515174,3794829-3861584,7709002-7854055,7877419320-7877566799,953065-1022091,104188-122245,25-39,125490-144195,931903328-931946237,341512-578341,262197-334859,39518-96428,653264-676258,304-842,167882-252124,11748-19561 2 | -------------------------------------------------------------------------------- /day3/src/main.hk: -------------------------------------------------------------------------------- 1 | extern "js" { 2 | mod global Math { 3 | fn max(x: i32, y: i32) -> i32; 4 | fn min(x: i32, y: i32) -> i32; 5 | } 6 | } 7 | 8 | fn main() { 9 | let banks = include_str("input.txt").trim().split("\n"); 10 | 11 | let total = 0 as i64; 12 | for bank in banks { 13 | let largest = find_largest_from_bank(bank); 14 | total += largest; 15 | } 16 | 17 | println("{total}"); 18 | } 19 | 20 | // Greedy algorithm: O(n * k) instead of O(C(n,k)) 21 | // At each step, pick the largest digit that leaves enough remaining 22 | fn find_largest_from_bank(s: String) -> i64 { 23 | let result = ""; 24 | let start = 0; 25 | let digits_to_pick = 12; 26 | 27 | for i in 0..digits_to_pick { 28 | // How many more digits we need after this one 29 | let remaining_needed = digits_to_pick - i - 1; 30 | // Last valid position to pick from (must leave enough for remaining) 31 | let end = s.length - remaining_needed; 32 | 33 | // Find the largest digit in range [start, end) 34 | let best_pos = start; 35 | let best_digit = s.charAt(start); 36 | for pos in start + 1..end { 37 | let digit = s.charAt(pos); 38 | if digit > best_digit { 39 | best_digit = digit; 40 | best_pos = pos; 41 | } 42 | } 43 | 44 | // Add this digit to result and move start past it 45 | result += best_digit; 46 | start = best_pos + 1; 47 | } 48 | 49 | parseLong(result) 50 | } 51 | 52 | #[cfg(test)] 53 | #[test] 54 | fn test_find_largest_from_bank() { 55 | let res = find_largest_from_bank("987654321111111"); 56 | assert_eq(res, 987654321111 as i64); 57 | let res = find_largest_from_bank("811111111111119"); 58 | assert_eq(res, 811111111119 as i64); 59 | let res = find_largest_from_bank("234234234234278"); 60 | assert_eq(res, 434234234278 as i64); 61 | let res = find_largest_from_bank("818181911112111"); 62 | assert_eq(res, 888911112111 as i64); 63 | } 64 | 65 | -------------------------------------------------------------------------------- /day2/src/main_part1.rs: -------------------------------------------------------------------------------- 1 | use std::collections::HashSet; 2 | 3 | fn main() { 4 | // 11-22,95-115,998-1012,1188511880-1188511890,222220-222224,1698522-1698528,446443-446449,38593856-38593862,565653-565659,824824821-824824827,2121212118-2121212124 5 | 6 | let mut invalid_ids = HashSet::new(); 7 | 8 | let ranges = include_str!("ranges.txt").split(',').collect::>(); 9 | // for each range in the file 10 | for range_str in ranges { 11 | let range_str = range_str.trim(); 12 | // finds start and end of the range 13 | let Some((starts, ends)) = range_str.split_once('-') else { 14 | panic!("Invalid range string: {range_str}"); 15 | }; 16 | 17 | println!("Range [{starts}]-[{ends}]"); 18 | let start: usize = starts.parse().unwrap(); 19 | let end: usize = ends.parse().unwrap(); 20 | 21 | // for len = 2, it can be 1 22 | // for len = 3, there's no way it can have any 23 | // for len = 4, it can only be 2 24 | // for len = 5, it can't work 25 | // for len = 6, it can only be 3 26 | // for len = 7, it can't work 27 | // for len = 8, it can only be 4 28 | 29 | // iterate through each item on the range 30 | for item in start..=end { 31 | let item_str = format!("{item}"); 32 | if item_str.len() % 2 != 0 { 33 | continue; 34 | } 35 | if is_invalid(&item_str) { 36 | println!("{item_str}"); 37 | invalid_ids.insert(item); 38 | } 39 | } 40 | } 41 | 42 | let sum: usize = invalid_ids.iter().sum(); 43 | println!("{sum}"); 44 | } 45 | 46 | fn is_invalid(id: &str) -> bool { 47 | let parts = id.chars().collect::>(); 48 | let parts = parts.chunks(id.len() / 2).collect::>(); 49 | 50 | let mut repeats = true; 51 | for part in &parts[1..] { 52 | if *part != parts[0] { 53 | repeats = false; 54 | } 55 | } 56 | 57 | repeats 58 | } 59 | 60 | #[cfg(test)] 61 | mod tests { 62 | use super::*; 63 | } 64 | -------------------------------------------------------------------------------- /day1/src/main.rs: -------------------------------------------------------------------------------- 1 | use std::env; 2 | 3 | fn main() { 4 | // the number of times the dial is left pointing at 0 after any rotation in the sequence. 5 | let args: Vec<_> = env::args().collect(); 6 | let arg = args.iter().skip(1).next(); 7 | 8 | let input = if let Some(arg) = arg 9 | && arg == "test" 10 | { 11 | include_str!("./input-test.txt") 12 | } else { 13 | include_str!("./input.txt") 14 | }; 15 | 16 | let lines: Vec<&str> = input.split('\n').collect(); 17 | println!("{}", count_zero_rotations(&lines)); 18 | } 19 | 20 | static MAX_DIAL: i32 = 99; 21 | static MIN_DIAL: i32 = 0; 22 | 23 | fn count_zero_rotations(movements: &[&str]) -> usize { 24 | let mut dial = 50; 25 | let mut zeros = 0; 26 | for mov in movements { 27 | if mov.is_empty() { 28 | continue; 29 | } 30 | 31 | print!("The dial is rotated {mov} "); 32 | let mut chars = mov.chars().into_iter(); 33 | let Some(dir) = chars.next() else { 34 | panic!("Invalid entry: {mov}"); 35 | }; 36 | 37 | let clicks = chars.collect::(); 38 | let clicks: i32 = clicks.parse().unwrap(); 39 | 40 | let mut passed_zero_times = 0; 41 | print!(" [ start at {dial} ] "); 42 | let mut at_zero = false; 43 | (0..clicks).for_each(|_| { 44 | match dir { 45 | 'R' => dial += 1, 46 | 'L' => dial -= 1, 47 | _ => panic!("Invalid entry: {mov}"), 48 | } 49 | 50 | if dial > MAX_DIAL { 51 | dial = MIN_DIAL; 52 | } 53 | 54 | if dial < MIN_DIAL { 55 | dial = MAX_DIAL; 56 | } 57 | 58 | if at_zero { 59 | at_zero = false; 60 | } 61 | 62 | if dial == 0 { 63 | assert!(!at_zero); 64 | at_zero = true; 65 | zeros += 1; 66 | } 67 | }); 68 | 69 | assert!(dial >= MIN_DIAL, "{dial} NOT >= {MIN_DIAL}"); 70 | assert!(dial <= MAX_DIAL, "{dial} NOT <= {MAX_DIAL}"); 71 | 72 | print!("to point at {dial}"); 73 | 74 | if passed_zero_times > 0 { 75 | print!("; during this rotation, it points at 0 for {passed_zero_times} times"); 76 | zeros += passed_zero_times; 77 | } 78 | 79 | print!("."); 80 | 81 | println!(); 82 | } 83 | 84 | zeros 85 | } 86 | -------------------------------------------------------------------------------- /day2/main.hk: -------------------------------------------------------------------------------- 1 | extern "js" { 2 | mod fs { 3 | fn readFileSync(path: String, encoding: String) -> String; 4 | } 5 | 6 | mod global Array { 7 | fn from(arrayLike: ArrayFromArgs, mapFn: JsValue) -> [[String]]; 8 | } 9 | 10 | mod global Math { 11 | fn ceil(x: i32) -> i32; 12 | } 13 | 14 | static __dirname: String; 15 | } 16 | 17 | fn main() { 18 | let ranges = include_str("ranges.txt").split(","); 19 | println("{}", sum_invalid_ids(ranges)); 20 | } 21 | 22 | fn sum_invalid_ids(ranges: [String]) -> Result { 23 | let invalid_ids = []; 24 | for r in ranges { 25 | let range_str = r.trim(); 26 | print("- {}", range_str); 27 | let parts = range_str.split("-"); 28 | if parts.length != 2 { 29 | return Result::Err(format("range '{}' is invalid", range_str)); 30 | } 31 | 32 | let start = parse_int(parts[0], 10); 33 | let end = parse_int(parts[1], 10); 34 | 35 | let this_invalid_ids = find_invalid_ids(start, end); 36 | println(": {}", this_invalid_ids); 37 | for invalid_id in this_invalid_ids { 38 | invalid_ids.push(invalid_id); 39 | } 40 | } 41 | 42 | invalid_ids.reduce(|acc: i32, val: i32| acc += val, 0) 43 | } 44 | 45 | fn find_invalid_ids(start: i32, end: i32) -> [i32] { 46 | let invalid_ids = []; 47 | for item in start..=end { 48 | let item_str = format("{}", item); 49 | if is_invalid(item_str) { 50 | invalid_ids.push(item); 51 | } 52 | } 53 | 54 | invalid_ids 55 | } 56 | 57 | fn is_invalid(id: String) -> bool { 58 | let len = id.length; 59 | for chunk_size in 1..id.length { 60 | let is_divisible = len % chunk_size == 0; 61 | if is_divisible { 62 | continue; 63 | } 64 | 65 | let all_parts = string_chars(id); 66 | let parts = chunks(all_parts, chunk_size); 67 | 68 | let valid = parts[1..].some(|p: String| p != parts[0]); 69 | if !valid { 70 | return true; 71 | } 72 | } 73 | 74 | false 75 | } 76 | 77 | fn string_chars(s: String) -> [String] { 78 | let chars = []; 79 | for i in 0..s.length { 80 | chars.push(s.charAt(i)); 81 | } 82 | chars 83 | } 84 | 85 | struct ArrayFromArgs { 86 | length: i32, 87 | } 88 | 89 | impl ArrayFromArgs { 90 | fn new(length: i32) -> ArrayFromArgs { 91 | ArrayFrom { length: length } 92 | } 93 | } 94 | 95 | fn chunks(arr: [String], size: i32) -> [String] { 96 | Array.from(ArrayFromArgs { length: Math.ceil(arr.length / size) }, |_: (), i: i32| arr.slice(i * size, i * size + size)) 97 | } 98 | 99 | #[cfg(test)] 100 | #[test] 101 | fn test_sum_for_range() { 102 | let ranges = include_str("ranges-test.txt").split(","); 103 | assert(4174379265 == sum_invalid_ids(ranges).unwrap()); 104 | } 105 | 106 | #[cfg(test)] 107 | #[test] 108 | fn test_find_invalid_ids() { 109 | assert(find_invalid_ids(11, 22) == [11, 22]); 110 | assert(find_invalid_ids(99, 111) == [99, 111]); 111 | assert(find_invalid_ids(999, 1010) == [999, 1010]); 112 | assert(find_invalid_ids(1188511880, 1188511890) == [1188511885]); 113 | assert(find_invalid_ids(222220, 222224) == [222222]); 114 | assert(find_invalid_ids(1698522, 1698528) == []); 115 | assert(find_invalid_ids(446443, 446449) == [446446]); 116 | assert(find_invalid_ids(38593856, 38593862) == [38593859]); 117 | assert(find_invalid_ids(565653, 565659) == [565656]); 118 | assert(find_invalid_ids(824824821, 824824827) == [824824824]); 119 | assert(find_invalid_ids(2121212118, 2121212124) == [2121212121]); 120 | } 121 | 122 | #[cfg(test)] 123 | #[test] 124 | fn test_invalid() { 125 | assert(is_invalid("11")); 126 | assert(!is_invalid("12")); 127 | assert(is_invalid("22")); 128 | assert(is_invalid("99")); 129 | assert(is_invalid("111")); 130 | assert(!is_invalid("115")); 131 | assert(is_invalid("999")); 132 | assert(is_invalid("1010")); 133 | assert(is_invalid("222222")); 134 | assert(is_invalid("123123123")); 135 | assert(is_invalid("1188511885")); 136 | } 137 | -------------------------------------------------------------------------------- /day4/src/main.hk: -------------------------------------------------------------------------------- 1 | /// Count accessible "@" cells in a grid based on surrounding cells 2 | /// The grid is represented as a 2D array of strings 3 | /// An "@" cell is considered accessible if fewer than 4 of its 8 surrounding cells are also "@" 4 | 5 | extern "js" { 6 | mod global Math { 7 | fn floor(x: f64) -> i32; 8 | } 9 | } 10 | 11 | fn main() { 12 | let grid = include_str("input.txt").trim().split("\n").map(|row: String| row.split("")); 13 | if false { 14 | println("{}", count_accessible(grid)); 15 | } else { 16 | println("{}", count_removable(grid)); 17 | } 18 | } 19 | 20 | /// Print a representation of the grid 21 | fn print_grid(grid: [[String]]) { 22 | for row in 0..grid.length { 23 | for col in 0..grid[row].length { 24 | print("{}", grid[row][col]); 25 | } 26 | println(""); 27 | } 28 | } 29 | 30 | /// Count the number of accessible "@" cells in the grid 31 | fn count_accessible(grid: [[String]]) -> i32 { 32 | let total = 0; 33 | for row in 0..grid.length { 34 | for col in 0..grid[row].length { 35 | if grid[row][col] == "@" { 36 | if is_accessible(grid, row, col) { 37 | // print("@"); 38 | total += 1; 39 | } else { 40 | // print("x"); 41 | } 42 | } else { 43 | // print("."); 44 | } 45 | } 46 | // println(""); 47 | } 48 | 49 | total 50 | } 51 | 52 | /// Check if a cell is accessible based on its surroundings 53 | fn is_accessible(grid: [[String]], cell_row: i32, cell_col: i32) -> bool { 54 | let row_size = grid[0].length; 55 | 56 | // we need to check -1, -1 (up left); -1, 0 (up); -1, 1 (up right) etc 57 | let surroundings = [[-1, -1], [-1, 0], [-1, 1], [0, -1], [0, 1], [1, -1], [1, 0], [1, 1]]; 58 | let occupied = 0; 59 | for s in surroundings { 60 | let row = cell_row + s[0]; 61 | let col = cell_col + s[1]; 62 | if row >= 0 && row < grid.length && col >= 0 && col < row_size { 63 | let cell_value = grid[row][col]; 64 | if cell_value == "@" { 65 | occupied += 1; 66 | } 67 | } 68 | } 69 | 70 | occupied < 4 71 | } 72 | 73 | /// Removes all rolls that are accessible from the grid, returns the new grid 74 | fn resolve_grid(grid: [[String]]) -> (i32, [[String]]) { 75 | let result = []; 76 | let removed = 0; 77 | // TODO: we need iterators! 78 | for i in 0..grid.length { 79 | let row = grid[i]; 80 | result.push([]); 81 | for j in 0..row.length { 82 | let cell = grid[i][j]; 83 | if cell == "x" { 84 | result[i].push("."); 85 | } else { 86 | if cell == "@" && is_accessible(grid, i, j) { 87 | result[i].push("x"); 88 | removed += 1; 89 | } else { 90 | result[i].push(cell); 91 | } 92 | } 93 | } 94 | } 95 | 96 | (removed, result) 97 | } 98 | 99 | /// Count how many paper rolls can be removed from the grid 100 | fn count_removable(grid: [[String]]) -> i32 { 101 | let count = 0; 102 | loop { 103 | let result = resolve_grid(grid); 104 | let removed = result.0; 105 | count += removed; 106 | grid = result.1; 107 | 108 | if removed == 0 { 109 | break; 110 | } 111 | } 112 | 113 | count 114 | } 115 | 116 | #[cfg(test)] 117 | #[test] 118 | fn test_count_removable() { 119 | let grid = include_str("input-test.txt").split("\n").map(|row: String| row.split("")); 120 | assert_eq(43, count_removable(grid)); 121 | } 122 | 123 | #[cfg(test)] 124 | #[test] 125 | fn test_resolve_grid_debug() { 126 | let grid = include_str("input-test.txt").split("\n").map(|row: String| row.split("")); 127 | let (removed, new_grid) = resolve_grid(grid); 128 | assert_eq(removed, 13); 129 | 130 | let (removed, new_grid) = resolve_grid(new_grid); 131 | assert_eq(removed, 12); 132 | 133 | let (removed, new_grid) = resolve_grid(new_grid); 134 | assert_eq(removed, 7); 135 | 136 | let (removed, new_grid) = resolve_grid(new_grid); 137 | assert_eq(removed, 5); 138 | 139 | let (removed, new_grid) = resolve_grid(new_grid); 140 | assert_eq(removed, 2); 141 | 142 | let (removed, new_grid) = resolve_grid(new_grid); 143 | assert_eq(removed, 1); 144 | 145 | let (removed, new_grid) = resolve_grid(new_grid); 146 | assert_eq(removed, 1); 147 | 148 | let (removed, new_grid) = resolve_grid(new_grid); 149 | assert_eq(removed, 1); 150 | 151 | let (removed, new_grid) = resolve_grid(new_grid); 152 | assert_eq(removed, 1); 153 | } 154 | 155 | #[cfg(test)] 156 | #[test] 157 | fn test_count_accessible() { 158 | let grid = include_str("input-test.txt").split("\n").map(|row: String| row.split("")); 159 | assert_eq(13, count_accessible(grid)); 160 | } 161 | 162 | #[cfg(test)] 163 | #[test] 164 | fn test_is_accessible() { 165 | let grid = [[".", ".", "@", "@", "."], [".", ".", "@", "@", "."], [".", ".", "@", "@", "."], [".", ".", "@", "@", "."]]; 166 | assert(is_accessible(grid, 0, 2)); 167 | } 168 | 169 | -------------------------------------------------------------------------------- /day2/src/main.rs: -------------------------------------------------------------------------------- 1 | use std::collections::HashSet; 2 | 3 | fn main() { 4 | let ranges = include_str!("ranges.txt").split(',').collect::>(); 5 | println!("{}", sum_part2_invalid_ids(ranges)); 6 | } 7 | 8 | #[allow(dead_code)] 9 | fn sum_part2_invalid_ids(ranges: Vec<&str>) -> usize { 10 | let mut invalid_ids = HashSet::new(); 11 | for range_str in ranges { 12 | print!("- {range_str}"); 13 | let range_str = range_str.trim(); 14 | // finds start and end of the range 15 | let Some((starts, ends)) = range_str.split_once('-') else { 16 | panic!("Invalid range string: {range_str}"); 17 | }; 18 | 19 | let start: usize = starts.parse().unwrap(); 20 | let end: usize = ends.parse().unwrap(); 21 | 22 | let this_invalid_ids = find_part2_invalid_ids(start, end); 23 | println!(": {this_invalid_ids:?}"); 24 | invalid_ids.extend(this_invalid_ids); 25 | } 26 | 27 | invalid_ids.iter().sum() 28 | } 29 | 30 | fn find_part2_invalid_ids(start: usize, end: usize) -> Vec { 31 | let mut invalid_ids = vec![]; 32 | for item in start..=end { 33 | let item_str = format!("{item}"); 34 | if is_part2_invalid(&item_str) { 35 | invalid_ids.push(item); 36 | } 37 | } 38 | invalid_ids 39 | } 40 | 41 | fn is_part2_invalid(id: &str) -> bool { 42 | // we need to identify that 123123123 is also invalid 43 | // because now we allow the sequences to repeat any 44 | // number of times 45 | 46 | // so I think first we need to figure out which numbers 47 | // the id is divisible by, starting with 2 and ending with 48 | // the len? 49 | 50 | // so in our case 123123123 length is 9, so we'd test with 51 | // 2 (no), 3 (yes), 4 (no), 5 (no), 6 (no), 7 (no) 52 | 53 | let len = id.len(); 54 | for chunk_size in 1..id.len() { 55 | // println!("id: {id} testing with: {chunk_size}"); 56 | let is_divisible = len % chunk_size == 0; 57 | if !is_divisible { 58 | continue; 59 | } 60 | 61 | let parts = id.chars().collect::>(); 62 | let parts = parts.chunks(chunk_size).collect::>(); 63 | // println!(" id: {id} - parts: {parts:?}"); 64 | 65 | // it is valid if no parts are equal the first at this 66 | // chunk size 67 | let valid = parts[1..].iter().any(|&p| p != parts[0]); 68 | 69 | if !valid { 70 | return true; 71 | } 72 | } 73 | 74 | false 75 | } 76 | 77 | fn sum_invalid_ids(ranges: Vec<&str>) -> usize { 78 | // 11-22,95-115,998-1012,1188511880-1188511890,222220-222224,1698522-1698528,446443-446449,38593856-38593862,565653-565659,824824821-824824827,2121212118-2121212124 79 | 80 | let mut invalid_ids = HashSet::new(); 81 | for range_str in ranges { 82 | let range_str = range_str.trim(); 83 | // finds start and end of the range 84 | let Some((starts, ends)) = range_str.split_once('-') else { 85 | panic!("Invalid range string: {range_str}"); 86 | }; 87 | 88 | println!("Range [{starts}]-[{ends}]"); 89 | let start: usize = starts.parse().unwrap(); 90 | let end: usize = ends.parse().unwrap(); 91 | 92 | // for len = 2, it can be 1 93 | // for len = 3, there's no way it can have any 94 | // for len = 4, it can only be 2 95 | // for len = 5, it can't work 96 | // for len = 6, it can only be 3 97 | // for len = 7, it can't work 98 | // for len = 8, it can only be 4 99 | 100 | invalid_ids.extend(find_invalid_ids(start, end)); 101 | } 102 | 103 | invalid_ids.iter().sum() 104 | } 105 | 106 | fn find_invalid_ids(start: usize, end: usize) -> Vec { 107 | let mut invalid_ids = vec![]; 108 | for item in start..=end { 109 | let item_str = format!("{item}"); 110 | if item_str.len() % 2 != 0 { 111 | continue; 112 | } 113 | if is_invalid(&item_str) { 114 | println!("{item_str}"); 115 | invalid_ids.push(item); 116 | } 117 | } 118 | invalid_ids 119 | } 120 | 121 | fn is_invalid(id: &str) -> bool { 122 | let parts = id.chars().collect::>(); 123 | let parts = parts.chunks(id.len() / 2).collect::>(); 124 | 125 | let mut repeats = true; 126 | for part in &parts[1..] { 127 | if *part != parts[0] { 128 | repeats = false; 129 | } 130 | } 131 | 132 | repeats 133 | } 134 | 135 | #[cfg(test)] 136 | mod tests { 137 | use super::*; 138 | 139 | #[test] 140 | fn test_part2_sum_for_range() { 141 | let ranges = include_str!("ranges-test.txt") 142 | .split(',') 143 | .collect::>(); 144 | assert_eq!(4174379265, sum_part2_invalid_ids(ranges)); 145 | } 146 | 147 | #[test] 148 | fn test_find_part2_invalid_ids() { 149 | assert_eq!(vec![11, 22], find_part2_invalid_ids(11, 22)); 150 | assert_eq!(vec![99, 111], find_part2_invalid_ids(99, 111)); 151 | assert_eq!(vec![999, 1010], find_part2_invalid_ids(999, 1010)); 152 | assert_eq!( 153 | find_part2_invalid_ids(1188511880, 1188511890), 154 | vec![1188511885] 155 | ); 156 | assert_eq!(find_part2_invalid_ids(222220, 222224), vec![222222]); 157 | assert_eq!(find_part2_invalid_ids(1698522, 1698528), vec![]); 158 | assert_eq!(find_part2_invalid_ids(446443, 446449), vec![446446]); 159 | assert_eq!(find_part2_invalid_ids(38593856, 38593862), vec![38593859]); 160 | assert_eq!(find_part2_invalid_ids(565653, 565659), vec![565656]); 161 | assert_eq!( 162 | find_part2_invalid_ids(824824821, 824824827), 163 | vec![824824824] 164 | ); 165 | assert_eq!( 166 | find_part2_invalid_ids(2121212118, 2121212124), 167 | vec![2121212121] 168 | ); 169 | } 170 | 171 | #[test] 172 | fn test_part2_invalid() { 173 | assert!(is_part2_invalid("11")); 174 | assert!(!is_part2_invalid("12")); 175 | assert!(is_part2_invalid("22")); 176 | assert!(is_part2_invalid("99")); 177 | assert!(is_part2_invalid("111")); 178 | assert!(!is_part2_invalid("115")); 179 | assert!(is_part2_invalid("999")); 180 | assert!(is_part2_invalid("1010")); 181 | assert!(is_part2_invalid("222222")); 182 | assert!(is_part2_invalid("123123123")); 183 | assert!(is_part2_invalid("1188511885")); 184 | } 185 | 186 | #[test] 187 | fn test_sum_for_range() { 188 | let ranges = include_str!("ranges.txt").split(',').collect::>(); 189 | assert_eq!(12850231731, sum_invalid_ids(ranges)); 190 | } 191 | 192 | #[test] 193 | fn test_sum_for_test_range() { 194 | let ranges = include_str!("ranges-test.txt") 195 | .split(',') 196 | .collect::>(); 197 | assert_eq!(1227775554, sum_invalid_ids(ranges)); 198 | } 199 | 200 | #[test] 201 | fn test_invalid() { 202 | assert!(is_invalid("11")); 203 | assert!(is_invalid("22")); 204 | assert!(is_invalid("99")); 205 | assert!(is_invalid("111")); 206 | assert!(is_invalid("999")); 207 | assert!(is_invalid("1010")); 208 | assert!(is_invalid("222222")); 209 | assert!(is_invalid("123123123")); 210 | assert!(is_invalid("1188511885")); 211 | } 212 | } 213 | -------------------------------------------------------------------------------- /day5/src/main.hk: -------------------------------------------------------------------------------- 1 | // Helper functions for i64 min/max (Math.min/max don't work with BigInt) 2 | fn min_i64(x: i64, y: i64) -> i64 { 3 | if x < y { 4 | x 5 | } else { 6 | y 7 | } 8 | } 9 | 10 | fn max_i64(x: i64, y: i64) -> i64 { 11 | if x > y { 12 | x 13 | } else { 14 | y 15 | } 16 | } 17 | 18 | fn main() { 19 | part_two() 20 | } 21 | 22 | fn part_two() { 23 | let data = include_str("input.txt").trim(); 24 | let parts = data.split_once("\n\n").expect("valid input").to_array().expect("valid input").map(|d: String| d.split("\n")); 25 | 26 | let fresh = parts[0]; 27 | let ingredients = parts[1]; 28 | 29 | let ranges: [Range] = []; 30 | for range in fresh { 31 | let parts = range.split("-").map(|p: String| parse_long(p)); 32 | ranges.push(parts[0]..=parts[1]); 33 | } 34 | 35 | let new_ranges = combine_ranges(ranges); 36 | new_ranges.sort(|a, b| if a.start < b.start { 37 | -1 38 | } else { 39 | if a.start > b.start { 40 | 1 41 | } else { 42 | 0 43 | } 44 | }); 45 | for r in new_ranges { 46 | println("{}-{} = {}", r.start, r.end, range_len(r)); 47 | } 48 | 49 | let total_numbers = 0; 50 | for range in new_ranges { 51 | total_numbers += range_len(range); 52 | } 53 | 54 | println("total: {total_numbers}"); 55 | } 56 | 57 | fn combine_ranges(ranges: [Range]) -> [Range] { 58 | let current_ranges = ranges; 59 | 60 | loop { 61 | // contains the list of combined ranges 62 | // combined ranges after merging overlaps 63 | let new_ranges: [Range] = []; 64 | let handled_list = Set::new(); 65 | let merges = 0; 66 | 67 | // println("Starting new combine iteration with ranges: {current_ranges:?}"); 68 | 69 | for range in current_ranges { 70 | if handled_list.has(range) { 71 | continue; 72 | } 73 | 74 | let handled = false; 75 | for cmp_range in current_ranges { 76 | // println("- Comparing {range:?} to {cmp_range:?}"); 77 | 78 | if handled_list.has(range) { 79 | // println(" Skipping already handled range {range:?}"); 80 | continue; 81 | } 82 | if range == cmp_range { 83 | // println(" Skipping same range comparison {range:?}"); 84 | continue; 85 | } 86 | 87 | if overlap(range, cmp_range) { 88 | // println(" Overlap detected between {range:?} and {cmp_range:?}"); 89 | let new_range = combine(range, cmp_range); 90 | // println(" Combining {range:?} and {cmp_range:?} => {new_range:?}"); 91 | 92 | new_ranges.push(new_range); 93 | handled_list.add(cmp_range); 94 | 95 | merges += 1; 96 | handled = true; 97 | 98 | // println(" Marking {range:?} as handled"); 99 | } else { 100 | // println(" No overlap between {range:?} and {cmp_range:?}"); 101 | } 102 | 103 | // println(" The end"); 104 | } 105 | 106 | if !handled { 107 | // println(" Adding unmodified range {range:?}"); 108 | new_ranges.push(range); 109 | } 110 | 111 | // println(" Marking {range:?} as handled"); 112 | handled_list.add(range); 113 | } 114 | 115 | // println(" New ranges {new_ranges:?}"); 116 | // println(" Merges: {merges}"); 117 | // println(""); 118 | 119 | if merges == 0 { 120 | break; 121 | } 122 | 123 | current_ranges = new_ranges; 124 | } 125 | 126 | current_ranges 127 | } 128 | 129 | fn draw(r: Range) -> String { 130 | let prefix = " ".repeat(r.start); 131 | let size = " ".repeat(range_len(r)); 132 | format("{prefix}[{size}]") 133 | } 134 | 135 | fn end_exclusive(r: Range) -> i64 { 136 | if r.inclusive { 137 | r.end + 1 as i64 138 | } else { 139 | r.end 140 | } 141 | } 142 | 143 | fn range_len(r: Range) -> i64 { 144 | end_exclusive(r) - r.start 145 | } 146 | 147 | fn combine(a: Range, b: Range) -> Range { 148 | let start = min_i64(a.start, b.start); 149 | 150 | let a_end_excl = end_exclusive(a); 151 | let b_end_excl = end_exclusive(b); 152 | 153 | // Pick the boundary that extends farthest to the right and preserve its 154 | // inclusivity 155 | let mut end = a.end; 156 | let mut inclusive = a.inclusive; 157 | if b_end_excl > a_end_excl { 158 | end = b.end; 159 | inclusive = b.inclusive; 160 | } 161 | 162 | if inclusive { 163 | start..=end 164 | } else { 165 | start..end 166 | } 167 | } 168 | 169 | #[cfg(test)] 170 | #[test] 171 | fn test_combine_same_range() { 172 | let ranges = [68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781, 68170613195522..=69237165933781]; 173 | let combined = combine_ranges(ranges); 174 | println("Combined ranges: {combined:#?}"); 175 | } 176 | 177 | #[cfg(test)] 178 | #[test] 179 | fn test_combine() { 180 | let range1 = 506608717526455..=506608717526455; 181 | let range2 = 506608717526455..=509191390818865; 182 | assert_msg(overlap(range1, range2), "Ranges should overlap"); 183 | 184 | assert_eq(68170613195522..=69237165933781, 68170613195522..=69237165933781); 185 | 186 | let ranges = [494222414498672..=500428274283871, 506608717526455..=506608717526455, 506608717526455..=509191390818865]; 187 | let ranges = combine_ranges(ranges); 188 | println("Combined ranges: {ranges:?}"); 189 | assert_msg(ranges.len() == 2, "Should have combined overlapping ranges"); 190 | } 191 | 192 | fn overlap(a: Range, b: Range) -> bool { 193 | let a_end = end_exclusive(a); 194 | let b_end = end_exclusive(b); 195 | 196 | // Half-open interval overlap test: [a.start, a_end) intersects [b.start, b_end) 197 | a.start < b_end && b.start < a_end 198 | } 199 | 200 | #[cfg(test)] 201 | #[test] 202 | fn test_overlap() { 203 | // ....|....1....|....2....|....3....|....4....|....5 204 | // 1: [ ] 205 | // 2: [ ] 206 | // 3: [ ] 207 | // 4: [ ] 208 | // 5: [ ] 209 | // 6: [ ] 210 | // 7: [ ] 211 | // 8: [ ] 212 | // 213 | let range1 = 3 as i64..=5 as i64; 214 | let range2 = 10 as i64..=14 as i64; 215 | let range3 = 16 as i64..=20 as i64; 216 | let range4 = 12 as i64..=18 as i64; 217 | let range5 = 21 as i64..=27 as i64; 218 | let range6 = 22 as i64..=27 as i64; 219 | let range7 = 10 as i64..=16 as i64; 220 | let range8 = 10 as i64..=15 as i64; 221 | 222 | assert_msg(!overlap(range1, range2), "1 before 2"); 223 | assert_msg(!overlap(range2, range3), "2 before 3"); 224 | assert_msg(overlap(range3, range4), "start of 3 < end of 4"); 225 | assert_msg(overlap(range2, range4), "start of 5 < end of 2"); 226 | assert_msg(!overlap(range3, range5), "end of 3 = start of 5, 3 left of 5"); 227 | assert_msg(overlap(range6, range5), "5 contains 6"); 228 | assert_msg(overlap(range7, range3), "end of 7 = start of 3, 7 left of 3"); 229 | assert_msg(overlap(range8, range7), "7 contains 8"); 230 | assert_msg(!overlap(range6, range3), "before"); 231 | assert_msg(!overlap(range8, range3), "after"); 232 | } 233 | 234 | // ------------------------------------------------- 235 | // Commented out part_one because it uses i32 ranges 236 | // fn part_one() { 237 | // let data = include_str("input.txt").trim(); 238 | // let parts = data.split_once("\n\n").expect("valid input").to_array().expect("valid input").map(|d: String| d.split("\n")); 239 | // 240 | // let fresh = parts[0]; 241 | // let ingredients = parts[1]; 242 | // 243 | // let ranges: [Range] = []; 244 | // for range in fresh { 245 | // let parts = range.split("-").map(|p: String| parse_int(p, 10)); 246 | // ranges.push(parts[0]..=parts[1]); 247 | // } 248 | // 249 | // let count = 0; 250 | // for id in ingredients { 251 | // let fresh = ranges.some(|r| r.contains(id)); 252 | // println("Ingredient {id} is fresh: {fresh}"); 253 | // if fresh { 254 | // count += 1; 255 | // } 256 | // } 257 | // 258 | // println("{count}"); 259 | // } 260 | -------------------------------------------------------------------------------- /day4/src/input.txt: -------------------------------------------------------------------------------- 1 | .@@@.@@@@@.@@.@@@@.@@@@.@@@@..@@@@.@@@...@@@@.@.@@.@@@.@@@@@@@@@...@.@@@@@@..@..@@@.@@@.@@.@@@@@@.@@@@.@..@@@@@.@@@....@@@@@@..@.@@.@.@@@ 2 | @@.@@@@.@.@@.@@...@.@..@@.@.@.@....@.@@@.@@.@.......@@..@.@..@@@@@.@@.@..@@....@@@.@@@.@@@@...@.@.@@.@@@.@@@@@@@@@@..@.@@.@@.@.@@..@@@... 3 | @..@..@@@@@@@.@@@@.@.@@.@@..@@.@@@@@@@@@@@@@@@@@@@.@.@@...@.@..@@@@.@@.@..@@@@@.@@@@..@@.@@@@@@@..@.@@@@@@@@@@@..@@@@.@@@.@@.@@@...@@.@@@ 4 | @@@.@@@@@@..@@@@.@@@@@@...@..@@@@.@..@.@@..@@@@..@@@.@@@..@.@@@@....@.@@@..@@.@.@.@@..@@@@@@.@@...@..@@@@@@@@@@.@@@@@...@..@@@.@@..@@@.@. 5 | .@@@@@@.@@.@..@.@@.@@@@@@@@@@@@@@@@@@@@@.@@@@@@@.@@.@..@@@@@...@@@.@@@@.@..@@@...@..@@.@@@@@@..@@@@@.@...@@.@.@@......@..@@@@.@..@.@@@.@. 6 | @@@@.@@@@.@@@.@@..@.@.@@..@@.@@@@....@.@@.@@.@@@@@.@@@.@@@@@@@.@.@..@@@@@@@@@.@@@@@@@@..@.@@@@@..@.@@.@.@.@...@@@.@@@@@..@....@@@@.@.@@@@ 7 | @@@@@@@@..@@@..@@@@@@@.@@@@..@@@.@..@@@.@...@..@..@@.@.@@@.@.@@...@@...@.@.@..@@@@...@@..@@.@@.@...@@@..@@@@.@@.@..@@@.@@@.@..@..@@.@...@ 8 | .@@.@@@@@@@@..@@@@@@.@@.@..@.@.@@@.@@@@.@@.@@...@@@.@@.@@..@@..@.@.@@@..@@.@@@@....@.@..@@@@.@@@@@.@@@..@@..@..@.@.@@.@@@@..@@...@@@.@@@@ 9 | @@@@@@.@.@@@@@@@...@@@@@@.@@.@@@@@.@..@@@@..@@@@@@.@@@@..@@.@@.@@@..@@@.@@@@@@@...@@@@@.@.@.@.@@@@@@.@@@@@@@@@.@..@@@@@@@@.@.@@.@@.@.@@@. 10 | @...@@@@@@@@@@@@.@@@......@@@.@.@.@.@@.@@..@@@@@.@@@@@.@@.@....@@@.@.@@@@@@@@@...@@@@.@@@..@@@.@@..@@@@...@.@..@@@...@.@@..@..@.@@@@@..@. 11 | @@.@@@....@@@.@@@@@.@@@.@@@@.@@@@.@@@@@.@@@.@@.@..@.@@@@..@...@.@@@@@...@@.@@..@..@@.@.@@.@@@@.@@.@.@.@@.@@@.@@@@@@@@@@@@@@..@..@@@..@@@. 12 | @..@.@@.@@@@.@@.@@@@..@@@@..@@.@@.@..@.@@@@@.@..@.@..@@@.@@.@@@..@@.@.@@@@@@@@.@@@.@@@.@@@.@@@@.@@...@@@.@.@@.@@..@@..@.@.@@.@@@...@@@@@@ 13 | @@@.@@@@.@@.@@@.@@@@.@@@.@@@.@@@@.@@@@@@....@@@...@@.@.@.@.@@@.@.@@@....@.@@@@@..@@@@@@@.@..@@@.@..@@@@.@@@.@@@@@@.@.@..@@@@@@@@@@..@@@@. 14 | .@@.@..@.@.@@@.@@@@.@@@@@.@@@.@@@@@@...@@@@..@@@.@@@.@@.@@.@@..@.@@..@@@@.@@@@.@@@@@@.@..@.@.@@@....@@..@@@@@.....@@@.@.@@.@@@.@.@@..@@.. 15 | .@@@@.@@@@....@.@@.@@..@@@.@@..@.@..@@.@@@.@.@@@..@...@.@..@@.@@@@.@.@.@@@..@@@.@@@@.@@@@.@.@@@@@@@@.@.@@..@.@@@@.@.@@.@.@.@...@.@@@@@... 16 | @@@@..@@.@@@..@...@@..@@@@.@@.@.@..@.@.@@@@@.@.@@.@@@@..@@@..@.@@@@@@...@.@.@@@@..@@...@..@@@.@..@@@@@@@.@@@@.@@@@..@...@@@.....@@....@.@ 17 | @@.@@.@@@@@@@.@.@.@.@..@@@@.@@@@...@...@@.@..@..@@.@.@.@.@.@@@@@@@@..@@.@@@@@@@@..@@@@.@@@...@.....@@.@.@.@.@@@@.@@@@..@..@.....@@@@.@@@@ 18 | @@@@@@@@.@@@@..@@@@@@@@@.@@@..@@.@@@@@@.@@@.@@.@@@@@@@@..@@.@@.@.@@.@@@.@@.@@....@@.@.@.@@@.@@.@..@@@@.@.@@@@@..@@@.@@@@@@@@@@@...@@...@@ 19 | .@@..@@@@@.@@@@@.@@.@..@@@..@@@@@@@@..@@....@@.@.@@@@@.@@@.@@@@..@..@@...@.@@@.@@@.@@..@@@@.@.@@@@...@.@.@@.@@..@@@@@@@@@.@@..@.@@@.@@@@@ 20 | @.@@.@@.@..@.@@@@.@@@@.@@..@@.@.@...@@@@@@@@@..@@@@.@@@@@.@@.@@@@.@@@@@.@@.@.@@@.@...@@.@..@@@...@@@...@@@@@.@.@@@.@@@@..@@@@..@@@.@@@@@. 21 | @@@..@@.@@@@@@@@@.@@@.@@@@@.@.@@@@.@.@.@@@@.@.@.@@.@.@@..@@@..@@@..@.@@.@@..@.@.@@@@..@..@.@@@@@@@@@@@...@.@@....@.@..@@..@@.@..@.@@@@@.. 22 | @.@.@@@@@@@.@.@.@@@.@@.@@@@@@@@@@@.@@@@@.@..@@@@@@@..@@@@@.@.@@@..@@@@@.@..@@..@.@@@@@@@.@@@..@.@@@.@@@@.@@.@@.@@@@@@..@@@.@@.@..@@@@.@@. 23 | .@.@@@@@@...@@@.@@@@.@@@@@@@@@@@.@@@@.@@@@.@@.@@...@@...@@@@.@..@@@@.@@...@.@..@@@@@@.@@@@.@.@@...@@@.@.@..@.@.@@@@.@@@....@@@@.@@.@.@@.. 24 | @..@@@...@....@@@@@@@.@@.@@@@@@@.@@@@@@.@@@.@@@.@..@@.@@@.@.@@.@.@@@@@@@@@@.@@@@.@@@@@.@@.@..@@@@.@@..@..@...@@@..@.@...@..@@@@.@@@.@@@@@ 25 | .@@..@..@...@@@@..@.@.@@...@.@@@@@.@@@@@.@@@...@.@..@@@..@.@..@....@@.@@.@@@@@@@.@.@@@.@@@@@.@@@.@@@.@.@@@@.@@@@@@@.@@@@@@@..@...@@.@.@@@ 26 | @@@@@@.@@@@...@.@@@...@@@.@@.@@@..@@@.@.@@...@@@.....@@@.@@@@.@@@@.@.@@@.@@@@@...@@.@@.@@@.@@@@@@.@@@@.@@.@@@@@@@@@@@..@.@@.@@@@@.@@.@@@@ 27 | .@.@@@@.@@@@@@@.@@..@@@@@@@@....@@@...@@..@.@@@.@@.@.@.@@@@..@@...@.@@@@.@...@..@@..@@@.@@@@.@.@@@....@..@@.@@@@@@...@@@@@@@..@@@..@.@@.@ 28 | @@.@.@@@@@...@@@@@.@.@@@@@@.@@@@.@@..@@......@.@@@..@..@@@@@@.@@@@@@@.@..@@@@@@@@@@.@@@@@..@@@@...@.@@@.@@@@@.@..@@@@.@@@@@@.@@@@.@@@@... 29 | @@.@.@..@.@@@@@@@.@.@@.@..@@@@@@...@@@@.@@@@@@@@.@@@@@@@.@@.@@@@@.@@@@.@@.@@@@...@.@.@@.@.@..@@@@@.@.@@.@@@@@@@.@..@@..@@.@@..@..@.@@@.@. 30 | @@.@@@@@@...@@@@@@@..@.@@@.@..@...@@@.@@..@@@.@.@@.@@@@@........@@.@@.@.@.@.@@@@@@@@@@@.@.@@.@@@@@@@.@.@@@.@@@.@@@@@.@@.@@..@@..@@.@@@@.@ 31 | ..@.@@.@@..@.@@..@@@@@.@@.@@@@..@.@.@@@@@@.@@@.@@@@@@..@.@@@@@@.@.@@@@@@.@.@.@@@@@@.@@..@.@.@@@@.@.@@@.@..@@@.@@@@.@@.....@.@.@.....@@@@. 32 | .@@@@.@@@@@.@@.@@@@@@.@@@.@@@...@@.@.@@.@@@@@@....@@@@.@@.@@.@@.@@@@.@@.@@@@@...@@@@@.@@@@@..@..@@@@....@@@@..@.@@@@@.@.@@..@..@..@@@@@@. 33 | @@@@@@.@.@@@..@..@@@.@@@.@..@.@@@@@@@@@@@.@.@@@@@..@@@.@..@@.@@....@@@.@@.@....@@@@@@@.@@.@@@@.@.@.@@..@.@@@@@...@.@@@@@@...@@..@.@@@@@.. 34 | @.@@@@@@.@.@.@.@@@..@@@@@.@@@.@@@@@..@.@.@@.@@.@@@.@@@@@@@@.@.@@@@@@.@@@@.@@.@@.@@.@.@@@@@@@@.@@.@@.@@.@@@@@@@@..@@@@..@@@......@@..@.@@@ 35 | .@@@@@.@@@@.@@@@@@.@@.@@@@.@@.@@@@.@.@@.@.@@@@@...@.@.@@@.@@@@@@.@@..@@@@@@@@@@@.@@@@.@@@..@@@@@@..@.@@@@.@@@.@.@@.@@.@@@@@@..@.@..@.@... 36 | .@@....@.@.@.@@@.@@.@@@@@@@..@..@@..@@@....@....@@....@.@@.@.@@.@@@@@@@@@@@@..@.@@@@@.@.@@@@..@.@.@@.@@@@@..@@@@@@@@@.@.@@..@@@@..@@@..@@ 37 | @..@@@@@@.@@@@.@@@.@..@.@@@@.@@.@@@@@.@@.@.@@@@@@@..@..@.@@.@.@@..@@..@@@@@.@@@.@@@..@@@@@@@.@@@@@.@@.@@@@@@@@@@.@@@.@.@@@@@.@@@@@.@@..@@ 38 | @@.@..@.@@@@@.....@@.@@@@@@.@@@.@..@@@.@@@@.@@@..@.@@..@.@...@@@@@@@@.@@.@@..@@@@@.@@@@.@@.@..@@@.@@@@@@@@@...@@@@.@@@@@@@@@@.@@@@..@@@.@ 39 | @..@@@@.@.@@...@@@@..@@@.@@@@.@..@.@...@@@@@..@@@.@@@.@..@@..@@@@@@@.@@...@@.@@@@@.@.....@@@..@@...@.@....@@....@@@@@@@@@@@..@@@@@.@@@.@@ 40 | ..@.....@@.@@@@@.@.@@@@@@.@@..@..@@..@@.@@@.@@.@.@@.@@@@@@.@@.@@@.@@@@...@.@.@.@@.@.@@..@@.@@@@..@@@@@.@.@.@@@@@.@@@@@@@.@@@@@@.@@@@.@@.. 41 | .@..@@@@@@@@@@.@.@.@.@@@.@@.@@@@@@@@@@.@@@.@.@...@.@@.@@@.@...@@.@@@@@@@.@@@.@@@...@@@.@@.@@@.@@@@@@@..@@....@.@.@@.@@@@.@.@.@@@.@@@@..@@ 42 | @.@....@@@@.@@.@.@@@@..@@@.@@.@@@@..@@@@@@..@@.@...@...@@@@@.@@@@@.@.@.@.@.@@.@@.@.@.@@..@.@@@.@@@.@...@@@.@.@@..@@@..@@...@@@@@@@@@@@.@. 43 | @@@@.@.@@..@@.@..@@@@@@..@@....@..@@@@@@.@@...@@@@.@@@@.....@.@@.@.@@@@@@..@@.@...@..@@.@@@@@@.@@.@@@..@@@@@.@@@@@..@@.@@@.@@@@@@@..@@@@@ 44 | ..@.@@@@@@.@.@.@@@.@@.@@@@@@..@.@.@.@@.@@@.@@@@...@@.@@.@.@@@..@@.@.@.@@@.@@@..@@@@@@@@@@@@.@@@@@@@@@@..@.@.@.@@@@@@@@@@@@.@@.@@.@.@.@@@@ 45 | .@..@@@@@.@..@@@.@@@@@@@..@@.@@...@@.@@@@@@@@@@..@.@@.@@.@@@@@@@...@@@.@.@@@.@@@@.@@@@@.@.@@.@.@@@@..@@@..@..@@@.@@@.@@.@.@@@@@@.@@@@@.@. 46 | ...@@.@@@..@@@@.@@@.@..@@@@@.@@@.@.@@.@@.@.@@@@....@@.@@..@@@.@@@..@.@@....@@.@@@@@@@@@@.@@@@.@@..@..@@@..@.....@..@..@@@@@@@.@@@@@@@.@@@ 47 | @@@@.@..@@@.@..@.@.@...@@@..@@@.@.@..@@.@@@..@@@@@@..@.@.....@.@@@@@.@@.@@@@.@@@@@@@@.@@@@@@@@@@...@.@@@.@.@@@@.@..@@.@@.@@@@.@@@@..@@.@. 48 | @..@....@@@..@@@@@@@@@..@@@@@@@@.@.@@@@@@@@@@.@.@@@@...@@.@@@@@@...@.@.@@@....@@...@@@@@.@..@@.@.@@.@@.@.@.@@@.@@@@@@@.@@.@@@.@@@.@.@@@@. 49 | @.@.@@@@.@...@@.@@@@.@@@..@@@.@@.@.@.@@.@@@.@@.@@....@@@@.@@@@.@.@.@.@@@@..@@.@@....@@@@@.@@@@@.@..@@@@.@.@@..@.@@@@.....@.@.@@@@@@.@@@@@ 50 | .@.@@@@.@...@@@.@@@.@@.@..@@@@.@@.@@@..@@@@..@.@@@@.@@..@@@@.@.@@.@@@.@@@..@@@@@.@@@@@@@@@.@@@.@@@..@.@.@.@@@.@..@@@..@...@..@...@.@...@@ 51 | @@@@@@@.@@.@.@.@@@.@@.@@@.@....@@.@@.@.@@@.@.@@.@.@@.@@@.@@@@@@@@@...@@.@.@@.@@..@.@@@..@..@.@..@@@@@@..@.@.@@@@@@.@@@...@@@@.@@.@@@@.@@. 52 | @.@@@@..@.@.@.@.@@.@.@@@.@@@@..@@.@.@@@.@@@.@@@@@@@@.@.@@@@..@....@@..@@.@@..@@@@.@@.@@@@..@@@@...@@.@@@@@.@.@@@@.@@..@@@@@.@@@..@@@@.@@@ 53 | @@..@@.@@@.@..@..@@@.@@...@@@@@@@@@@.@..@.@.@@@@@.@@@@.@@@@@@.@@...@.....@@@@.@@@@@@@@@.......@@@.@@.@@..@@@@.@@@@..@@@@@@..@@..@@@@@@.@@ 54 | ..@@@@@.@.@@@@@@@@@....@@.@.@.@.@@@....@@.....@.@@@@@@@@.@.@.@@@..@@@.@@.@@.@@@...@@@..@@..@@@.@@@@@@@.@@@@.@@....@@@@@..@..@@@.@.@...@@@ 55 | @@@@@@..@...@.@..@@@....@.@@@@@@@@.@.@@@.@@@@@@@@@.@@@.@@.@@..@.@@.@...@.@@@@.@@@@@@.@@@@@.@.@@.@@.@@@.@.@@@@.@@@@.@@.@@.@.@@.@..@@.@@@@@ 56 | @..@@.@.@@@@@.@....@@..@@@@@@@@.@@@@@@..@@@..@...@.@@@..@.@.@@.@@.....@.@...@@@@.@@.@.@@.@.@@@@.@@.@@.@@@.@@.@..@@@.@.@@@@..@@..@@.@@.... 57 | .@@.@.@@@@@@@@@..@.@@@.@@@@@.@@@.@.@@@@@..@@@@.@@@@@.@@@@@@@@@@.@.@@@@.@@.@.@@@@.@@@@@@@@..@@@..@@.@@.@@@.@.@.@@..@@@.@.@@@@.@@@.@@@.@@@. 58 | @@@..@.@@.@@@..@@...@..@@@@@@@@@@@.....@.@@..@@.@.@..@@@@.@@.@...@@@.@@@@..@@@@..@.@@@.@@@@@@@.@.@@..@@@@@@@@@@@@.@.@@...@@@@@.@@@......@ 59 | @@@@.@@@@@@.@@.@...@@@...@@@@...@.@.@@.@.@@..@@..@@@.@@.@@.@@@.....@@@@@.@..@@@...@.....@@@@@.@@.@@.@@.@.@.@@@@@@@@.@.@.@.@@@@@@@.@@..@@. 60 | @@.@@@..@@..@@..@@@@@@@@@@@..@.@@...@..@@@@@.@@.@...@@@@..@@@.@@@@.@@@..@@.@@....@@..@@@@.@@@@.@@..@@@@.@@@.@..@@@@..@....@@...@@@@@@@@.. 61 | .@.@.@@@..@..@@.@.@@@@@@..@@@@.@@@@....@@@@@@.@@.@@@.@.@@....@.@@.@@@.@.@@.@@.@@.@..@@@.@@@.@.@.@@@.@@@@@@.@..@@@..@.@..@@@@@@@@@@@@@@@@@ 62 | ..@@.@.@@.@@@@@.@@@@@@..@@@@@@.@.@.@@@..@@@@@@.@@@@@@@@...@@..@@@@@@@@@@..@@.@.@@.@@@@@..@.@@@@.@@@.@@@@@@@@.@@.@@@@.@..@@..@.@@..@@@@@@. 63 | @..@.@@@@@@.@@@..@@..@@..@@..@@@@.@.@@.@@@@@.@..@@@@..@..@@.@@@@.@@@...@...@.@.@@.@@..@@.@@@@.@.@.@@@@.@.@..@@@.@@.@.@@.@@..@@@@@@@..@@@@ 64 | @@.@@@@@.@@@.@@@..@@.@@..@.@@..@@@@.@@@..@..@@@@@@.@@@@.@.@@@@@@@.@..@@.@...@@...@@@@@...@@@@@@@.@@@@.@@.@@@@@@.@@@@@@@.@@.@..@@.@@@@@.@@ 65 | @@@@@.@@....@@@.@@@.@.@.@.@@@@@@@@@@@@@.@@@@@@.@..@@@@@.@.@@.@.@@@@..@@@@.@@..@@..@.@@...@@.@.@@.@@@@@.@@.@@@@@@.@@.@.@...@..@..@@@@@@@@. 66 | .@@@..@.@..@@@@@@.@@..@.@@@.@@@..@.@.@.@@@.@.@..@@@@@@.@@@@@.@@@.@@@@..@.@@.@@@@@@@...@@@.@@....@@.@@@..@.@.@@@@.@@@..@@@.@.@@..@..@@.@@@ 67 | @@@.@@@@@@.@@@.@@@.@.@@@@.@@.@.@...@@.@.@.@@@...@@@.@..@@@@@@.@.@.@@@@@@@@@@@@..@@@@@.@@.@.@.@@@@..@@@@.@@..@..@....@.@@@.@..@@@@@..@@@@@ 68 | @@.@..@@@..@@.@@@@@@@.@@.@..@@@.....@@@@.@@@.@.@@.@@..@@.@@@.@@.@@..@@@.@@@@.@@@@..@.@@.@.@@@@@@@.@@@..@.@.@@@@..@@..@@@@@@.@@.@@@@.@@@@. 69 | @..@@@.@..@@.@@.@@.@.@.@@@.@..@@@@@.@@.@@......@@@.@@.@...@@@.......@@..@@...@@@@@.@@@@@@@...@@@@..@@..@.@@.@@@@@.@.@..@@@@@.@@@@@.@..@.@ 70 | @@@.@.@.@@@@@.@.@@...@@@.@.@@@.@@@@@@.@@.@@.@@.@@@.@.@@.@@...@@@@@@@@@....@@@.@.@@.@..@@.@@@.@.@.@.@@@@@..@@@..@.@@.@.@@@@@.@.@@..@.@.@@@ 71 | @.@@@@.@.@@@@@@.@.@.@@@@@@...@@@@..@@@.@..@.@@@@@@.@@@....@@@@.@.@@@@@.@@@.@@@@.@@@@@..@.@..@..@.@@@..@@..@..@.@@..@@..@..@@.@@@@......@@ 72 | @.@@.@@@.@@@@@.@@@@@@.@@@@.@@@@@.@.@@.@.@@@.@.@....@.@@..@@@@@@.@.@..@..@@.@@@.@@@@....@@@.@@.@...@.@@@@.@@@@..@@@.@.@@@..@.@....@.@@@..@ 73 | @...@..@..@@.@.@@@....@@@.@@@@@@@@@.@@.@@@@..@@.@.@@..@@..@@@@@...@@...@@@.@..@@.@@@@.@.....@.@.@@.@@@@@@.@.@@@@@@..@@.@.@@@..@.@...@@@@@ 74 | .@@@@@...@.@@..@..@.@@@@@@....@@@@@@@@@@@@@@@@.@@@...@..@@.@..@@@@...@.@.@@@@..@.@@.@@.@.@@.@.@@.@.@.@@@@@@.@@@.@@..@.@@@@@..@@@@..@@@@.. 75 | .@@@@@@@@.@.@@@@@@.@.@.@@@@.@@.@@.@.@@@.@@@..@.@@..@....@..@.@@...@@@@@@@@@@.@.@.@@@..@@@@@@.@@@@@.@@....@@@@@@@@@@.@.@..@@....@@@@@@@@.@ 76 | @.@@@..@@@@.@.@@.@...@.@@..@.@@@@@@@.@@@.@@.@@.@..@@.@@@.@....@@@@..@.@.@..@@@@@@..@@@@@@@.@.@@@@@.@.@.@.@@.@....@@@..@@..@@@@.@@@.@@.... 77 | .@.@.@@@.@@@@@@@@.@@@.@@.@@@.@@@@@@.@@..@.@@@@@@@@@@.....@@.@@@.@@@@@..@@@@.@@.@@.@@@@@@@.@@.....@..@@@@@@@@@@@@.@.@@@@@@.@@.@.@@@.@.@@.@ 78 | @....@..@.@..@....@@.@@@.@@..@@.@@@@@.@@@@@@..@@@..@@.@...@....@.@..@.@@@@@@@...@@@@.@@@@@@@@@.@.@@..@@@@@@@@@.@..@.@@.@@@@@@@.@@@@..@@@. 79 | @@@@@@.@.@@@@@@.@@..@@..@.@.@@.@.@.@@..@.@@..@@@.@@@@@@@@...@....@.@.@@@.@..@.@.@.@@.@...@@..@....@@.@.@@@@.@..@..@.@@.@@@@@@...@@@@@@@@. 80 | @@..@@@.@@@@@@.@@@@.@@@@@...@@...@@..@@@@@..@@@.@@@.@.@@..@@..@@@@.@.@.@@@.@@@@.@@.@..@@...@.@@..@@.@.@@@@...@.@@@@@@@@..@@@@.@.@@@...@.@ 81 | .@@@@..@.@@...@.@.@@@@@@@@..@@@.@@@@.@@..@..@..@.@@@.@.@.@@.@....@@.@..@@.@.@@..@.@@.@@@@.@@@@..@...@@@@.@@@@@.@@@.@@..@@@.@@@.@@@@@@@@@. 82 | @@@@@@..@.@.@@@@@.@@@@@@..@@@@@.@@@@.@..@@@.@@@..@@....@.@@.@@@@@..@@.@.@@@@@.@.....@@@.@@@@.@..@@@.@@@@.@.@@.@@@@.@@@@..@@.@@.@@..@@@@@@ 83 | @@@..@@.@....@@.@@....@@...@.@..@..@@@@@.@...@@...@.@@@@.@@..@@.@@@@@@@.@@@@@@.@@@@@..@@@@@@..@..@....@...@.@.@...@@@.@@@@.@@....@@..@@.. 84 | @.@..@@.@@.@@@..@@@.@..@@..@..@@.@.@@@.@@@@@@@@.@..@.@@@...@@@@.@@@@@@...@.@@@@@@.@@@@@.@@@@@@@..@@@.@.@@@@@@@@@.@@@@...@.@@@@@.@@@@.@@.@ 85 | @@.@@@..@.@@@@@@@@.@..@.@.@.@@@.@@.@@.@@@@...@@.@@@@@.@@@...@..@@..@@@.@@..@@@@@.@..@@@@@@@...@@.@.@@@@@@.@@@@@.@@@@.@.@@@@@@.@.@@@.@..@@ 86 | .@.@.@@@..@.@.@.@@..@@@@@.@@@@@@@...@@@.@@@@@@.@@.@@.@@@@@.@.@@@.@...@.@@.@.@...@......@@@@@@@@@..@@...@@@@@.@@.@@@@..@@@@@@.@..@@@@@@@@@ 87 | .@@@.@.@..@@@@.@@@@@.@@@.@@...@@@@..@@@@@.@@.@@@.@@@..@@@.@@@@..@.@.@@@@@@.@@@.@.@@@@@@.@@@.@@@.@@@.@@@..@..@.@@@@@@@@@..@@.@@@@.@@.@@@.. 88 | .@..@..@.@@.@@.@@@@@@.@.@@@@.@..@.@..@.@..@@.@@..@@@.@.@.@.@..@..@.@@....@.@.@@@.@@@@@..@@@.@@.@@@@@@@@@@@@.@@@.@.@.@..@@@@@.@@@@@@@@@@@. 89 | .@@.@@@@@@@.@...@@.@@@@....@....@@@.@.@.@@..@@....@.@@@.@...@.@@...@@..@@@.@..@@..@.@@.@@.@@.@@.@..@@@..@@.@.@@@@.@.@@@@@@.@@@@@@@@@@@.@@ 90 | @@@.@@.@@@.@.@@@@@@@..@@@@@@@@..@@@.@@@@@.@@@@.@@@.@@@...@.@.@@@.@.@.@@@@@.@.@@.@@..@@@@.@@@@@@.@@..@@@@@@@@@@.@@@.@..@.@@@@@@@.@@@@@@@@. 91 | @.@.@@@.@@@@@......@@@.@@.@.@@@@@.@@.@@..@.@@.@@....@@@@@@.@.@@.@...@@.@@@@.@@@@@@@@@@@@@@@@@.@...@@@@.@@@@@@@.@.@@@.@@.@@@...@.@@..@.@@@ 92 | @..@@@@@@@@.@.@.@@@..@@@@@.@@..@.@@.@@@@@@@@@@.@@..@.@@..@.@@@@.@@.@@@.@@.@@@@@@.@@@..@.@@@@@@@@@..@.@@@.@@..@@@@@@@@.@@@@.@@@@@@.@..@@@@ 93 | .@@@@.....@.@..@@@..@@.@@@@...@.@@@@@.@....@@@@@.@...@.@..@....@.@@@@.@@@@@@@..@@..@.@@@@@@.@.@@@@@..@.....@.@.@@@@@@@@@.@..@@.@..@..@.@@ 94 | @@@.@@@.@..@@@@.@@..@@@@@.@@..@...@.@...@@@@....@@@.@@.@@@@..@@@@@.@@@@@@..@@@.@@@.@.@@@@@@@@.@@.@@.@.@.@@@.@.@@..@@@@..@@@@.@@.@@@.@@.@@ 95 | ..@@.@.@.@@@@@.@@@@.@.@.@....@@.@@.@@@.@@.@@.@@.@.@..@@@@...@..@.@@@.@.@..@@.@@@@.@@@.@@.@@@.@@.@@..@...@@..@..@@@..@.@@.@...@@@@@.@.@@.. 96 | @@@@@.@@@@@@@@@@..@@.@@@....@@.@@@.@..@..@.@...@@@@@.@@.@@@.@.@.@@.@@.@..@@..@@@@@@@@.@..@@@.@.@@..@@@@@@@@.....@@.@@@.@@@@@..@......@@@@ 97 | @@.....@....@@@@.@..@@@@.@@@.@@@@@@@@@...@@.@@..@..@.@.@@..@@@..@@@@@@@.@.@@@.@.@@@@.@.@.@@@.@@@@@.@@@.@..@..@@.@@@@@@@@@...@@@@.@.@.@@@@ 98 | .@@@@..@.@@@.@.@.@@@@.@.@..@@.@@@@.@@@@@@@@@@@@@@@@.@.@@..@....@..@@@.@@@@@@@@.@@@@@.@@@@@.@.@@....@..@@@.@@..@....@@@@@@.@@@@....@@..@@@ 99 | @@@.@.@@@@......@@...@.@.@@.@@@..@@@.@.@.@.@@@@@@.@@@.@@..@@@.@@@@....@@@@.@@@@..@@.@@@.@@@@.@@@@@@@.@@@..@@.@.@@.@.@@@@@..@@..@@..@.@@.@ 100 | @..@@@@..@..@.@@@.@@@..@@@@@..@@.@@@.@.@..@..@@.@.@@@@@@@@@@.@@.@@..@..@@@.@@@.@@@@@....@@@..@@.@.@@@.@@.@@@.@@...@@..@.......@.@@@@@@.@. 101 | @@.@@@@.@..@..@.@@@..@.@@@@@@.@.@..@..@.....@@@..@@@..@..@.@@.@@@.@.@@.@.@@.@....@@..@@@@@@@@@@@@...@@.@@@..@@.@@@@.@.@@..@@@@@@@.@@@.@@@ 102 | @@@@@..@.@@@@@@...@.@@@@@.@@@.@@.@.@@@.@.@@.@@@@.@...@@@.@..@@.@@.@..@@@@.@.@@.@@@@..@@@@@@@.@@@@.@.@@@@...@.@@@@@@...@..@.@@@.@@....@.@@ 103 | .@@.....@@@@@.@.....@@.@.@.@..@@.@..@@.@..@@.@.@.@@@@.@.@@@@@.@@@@@@.@..@.@.@@@@@@@@...@@@@.@@.@@@@@@@@@@@@.@@...@...@@.@@...@@.@.@@.@@@. 104 | @....@@@@@.@..@..@..@@.....@@@@..@@.@..@@@@@@.@.@@@@@.@@@.@@..@@@.@...@@..@.@@@.@.@@..@....@.@@@..@@@@.@@@..@@..@@@@...@@@@.@...@@@.@@@@@ 105 | @@.@..@..@.@..@@@..@@@@.@@@@..@@......@@@.@.@@@...@@.@@@@@@@@@@.@.@@..@@..@@..@@@@@@@@@@@@@.@...@.@.@@@@.@@.@.@@...@..@.@.@...@@@@@.@@@@@ 106 | @@@@...@@@@..@@@..@...@@.@@@.@@@@@..@@@@.@..@.@@@@@......@@.@@...@@.@@@@.@@.@..@.@@@.@@@@@.@@@.@@..@@@..@@@@..@.@.@@.@@@@@...@.@...@...@. 107 | @.@@@..@@.@.@@@@@..@..@.@@.@@@@.@@.@.@@..@@@@@@@@..@.@@..@..@.@@..@..@@..@@..@@@@.@.@.@.@.@@.@@@..@.@@@.@....@.@@@@@...@.@@.@...@@...@@.. 108 | .@@.@@@...@@@..@@.@@..@@.@.@@..@@@......@@.@@@....@@@@@.@@@@..@@.@....@@@..@@@@@.@@@...@@@.@@.@@@.@.@@@@@.@.@.@@@@@@.@.@@@@@..@@..@@...@@ 109 | @@@@@@@@...@@...@@@@@@@.@.@@.@@@.@.@.@@..@.@@..@.@.@.@@@@@@..@@@@.@@@@@...@@....@@@@.@@.@@.@..@.@@.@@..@@@@.@@@@.@@.@.@@...@@@.@@@..@@@.. 110 | @...@..@@@@@..@@...@.@@@@.@.@.@@@@@@.@@.@.@@...@.@..@@@@@.@.@.@@.@.@.@@@.@@.@@@@@@@@.@@@.@..@.@@@.@@@@@@.@@.@@.@@..@@.@@.@@@..@.@@.@@@@@. 111 | .@@@.@@....@@@@@@.@@@@@@@@@@@.@.@.@@@.@@@@@@@@..@@@@@.@@@@@.@@.@@@.@@@.@..@.@@...@@...@@.....@.@@@@.@@.@@.@@@.@.@..@.@@@..@..@@@.@.@@.@.@ 112 | @.@@.@@@@.@.@.@@..@..@@@@..@@.@@@@@.@@@..@..@@@@.@@.@@@...@@@@@@@@@.@@@@@@...@@@.@..@@@@.....@.@@@@@..@.@..@@@..@.@@@.@@@.@@@@@..@.@@@... 113 | .@.@@@.@.@...@.@@@.@.@@@@@@@@@@.@@...@..@@@.@.@@@.@.@@@@@..@@@@@@@@@@@.@@@@..@.@@@@@@@@..@@..@@@@@@@@..@@...@@@@@@@@.@.@@@@@..@@@.@.@@@@@ 114 | ..@@.@..@@.@@@.@@@@.@.@.@@..@@.@@...@.@.@@@@@.@...@@@@...@@@..@...@@@....@@@@@.@@@@.@@@@@@.@.@@@@.@.@@@.@@@.@@.@.@@.@@.....@@@...@.@@@@@@ 115 | @@@@.@@@@@.@@.@.@.@@@@@@@@@..@@@@@@@@@..@.@@@.@@@.@@@@@.@@@@@.@.@@@@.....@.@.@@@@@@.....@@.@.@@.@..@@@@@.@..@.@..@...@@@.@..@.@@@@.@.@@@@ 116 | @@@@.@@@..@@@.@@@@@@@@@.@@@@@@@..@.@@.@@@@.@@@..@.@..@@.@@...@@@@@.@.@@...@..@@@..@@.@.@@@@.@@@@@@@@@@@....@@.@@.@@@...@.@.@@@@.@@@.@@@.@ 117 | @@@.@..@@@@@.@@.@@..@.@@@..@@@@@@@.@@@.@@@@@@.@@.@...@@@.@@..@@@@@.@@..@@@@@@@@.@@....@@....@@@@@@@@.@.@.@@@.@@.@.@@@@@.@.@@.@@@.@@@@.@.@ 118 | .@@.@@@@..@@@.@.@.@@@@@@@@@@@..@..@@@@@@@@@@@..@@@.....@@@@.@@@@@@@..@@..@@@..@@@@@@..@@.@@@@@..@@@@.@.@@@@..@@@@@...@.@@@.@@@@@@.@@@.@@@ 119 | @@..@.@.@@@@@.@@@.@@@@@@.@...@.@@.@@@..@..@.@@@@.@@.@@@@@@@..@.@@@@@@@@.@..@.@@@...@@@.@@.@@@@@@.@@@@@@..@...@@@@.@@.@@.@.@.@@.@@.@@.@.@@ 120 | @.@@..@@...@@@@@.@@.@..@@@@@@.@@@.@.@@.@@@@@@@..@@@@@@.@@@@.....@@.@@@@..@@@...@@..@..@@@@.@@@@@@@@@..@.@@@@@..@@@.@@.@@@.@..@@@@@@.@@@@@ 121 | @@@@@@@@@@..@.@.@@@@@..@@@@..@@.@@@@@..@@@@.@.@@@@@@@.@@@@@.@@@@.@.@@@@@@@@@@@@@@@..@@@@@@.@@@@@.@@@@@....@.@@.@@.@...@@@@@@@@.@.@@.@..@@ 122 | ..@..@@@@@.@@@@@.@@@@@@@.@@..@.@@.@@@@.@@@@@..@.@.@.@@.@@...@@@@@@@@...@..@..@..@.@@@...@@...@@.@@..@@@@.@....@@@@@.@@@@.@@@@@.@@.@@@@@.@ 123 | @@@.@.@@...@@......@.@..@@@.@@@.@.@@.@@@..@@@@.@.@@@@.@@.@.@.@@@@.@@@@@@.@@@@@@.@@@..@@......@@@@@@@.@@@@@@@@.@@@@@@@..@.@@@..@.@..@@@.@@ 124 | @@@@.@@...@@..@@@@@@@.@@@...@.@@.@.@@@@@@@@@@@@@@@.@@.@@.@@@..@..@..@@.@.@.@@@@@@@....@@.@@@@.@.@@@.@@@@@@..@.@@.@@@...@.@@@.@@@..@@@@..@ 125 | .@@.@.@@@.@....@@.@@@@..@@@@..@@@.@@@...@@..@@@@..@.@.@@@@@@@.@@@@.@.@@.@@....@@.@@@@.@@@@.@.@.@@....@.@@@...@.@...@...@..@.@@@@@..@@@.@. 126 | ..@@@@@@@.@@.@..@@@..@.@....@@..@@@@@.@@@..@@@.@@@..@@.@@@.@@@@@@@.@.@@..@@@@.@.@@@......@@..@@@.@@@@...@@..@@@@@.@.@@@@@..@.@@..@..@@@@@ 127 | .@@@.@.@.@.@.@@@@.@.@.@@..@@.@@@.@.@@@@@.@.@..@@@@@.@.@@.@@@@@@@@..@@..@@@@@@.@.@@@@.@@...@@@.@@...@@@@@@@@@.@@.@@@.@@.@@.@@...@@.@@.@.@. 128 | @.@@@@.@@@.@@@..@..@..@@@@@.@.@.@@@@@@@.@..@@@.@.@.@@.@@@@...@@@.@.@@@@..@.@@....@@@@.@@@@.@.@.@@@@@@@.@@.@@@@..@.@@@.@@@@@@.@@@@@@@@.@.@ 129 | .@@@@@.@@@@..@@.@.@@@.@.@@@@@@@..@@.@@.@@.@.@.@.@@@@@@@@@...@.@@@@@@@..@@@.@.@.@.@@@@.@@@.@.@@@@@@@@@@@@@@@@.@@.@@@@@.@.@..@@..@@.@@@@.@. 130 | .@@.@@@@@@..@@.@.@@@......@@@@..@@@.@@@.@@..@@@@@.@@..@.@@@.@@.@@@@@..@@@@.@.@@..@.@.@@.@@@.@@@@@@@..@@.@.@...@@@.@..@.@@.@@@@.@..@@@@@.. 131 | @.@@@@..@.@.@@@@@@@@@...@@@@..@.@@@..@@@@@..@..@.@@.@@.@@.@@@@.@@.@.@@@@@.@@@...@.@@..@.@@.@@@@@@@@@@@@@.@@@@@.@@.@@@..@@@@.@@@@..@@@@@@@ 132 | @@@@@@...@..@.@@@..@@.@@@@.@@..@@@.@.@@@.@@@@@@@.@@@@..@@@@@.@.@.@@@@@@.@@.@@@..@.@.@.@...@@@..@@@@@....@@@@@@@@@@...@@@.@.@.@@@.@.@@@..@ 133 | @.@.@@@.@@@.@.@.@@@@.@..@.@....@@..@@@@.@..@..@@@@@@@.@@@@@.@@@@@..@@.@...@@..@@.@@@@@@@@@.@.@@@@@@@.....@@@@@@@.@@@.@..@@.@@.@.@@.@@.@.. 134 | ..@@..@.@@@.@@@@.@@.@@..@@.@.@@.@....@@@@@@...@.@..@@@@@@@...@...@..@....@@@.@..@@@@@@.....@@@@@.@@@..@.@@@@@@.@@@@.@@@.@@.@@@..@@@@@..@@ 135 | @..@.@@.@@@.@@@..@@@...@..@.@@@@@@.@.@@...@.@@..@..@@.@@....@....@@@.@@@@@.@.@@@.@.@.@@@@.@.@.@...@@@@@@@@...@@@@@@..@@@@@@@.@@@.@.@@@.@. 136 | @@.@.@.@.@@.@.@@@@..@@@@@@@.@@..@@.@@@@@@@@.@.@@.@.@.@...@@.@.@@.@.@@@@@@@@@@@@@@.@..@.@.@@.@.@@@@.@@@@@@@@..@..@...@.@@@..@@@@.@.@@@@@@. 137 | .@.@@@@@@.@..@@...@@@.@@@.@@@@@@.@@@.@@@@@..@@.@.@.@@@..@@@.@@..@.@.@@@@@.@..@@.@@..@@@@@@@.@..@@@@@@.@@.@@@@@.@.@@.@.@.@.@@@@@@@...@.@@. 138 | -------------------------------------------------------------------------------- /day3/src/input.txt: -------------------------------------------------------------------------------- 1 | 2232546378857275787561723292343835435343333776427842773354273372424413455462238746648634437374254318 2 | 2232323232236223322223321222232212221212222222222332111132223222222222322133213322323133322222332224 3 | 5345633566354453355546874555676462558526423364443535432344223165523377525665661379556365535642545245 4 | 3312322113352322342133434233342422313224135342333232234332332232313223352233232336232233533323364322 5 | 7437646373353235155735343435554333431433443536224555522543536551333362632825253343285513535558325854 6 | 3222123322227233223132632222232453272112312222122223422132223116232333212237823142211222237524323222 7 | 4465534231252534253434245275245235354423242313443332433122622233225354322454422331144344533452137366 8 | 2323665242312255512231224363222522323532325833542132254227637325255425546234462234351151232235565134 9 | 3841633743442435539376435546345144622662632435438441326124643125552636233355343252946323134562424275 10 | 6366444549652575355445536343444645583555575545757527445455453555277545577535433555256652456563544246 11 | 2423533634333333553445123533353533345333453223453535324426423355322453422256354232331343342534444341 12 | 4946592935254276689436766459556899636625878655235854768367475546626356688245585485661657646464625236 13 | 9434282833331453836263923826353351884335338347737534313323424342633632478326586357144566247232465363 14 | 2373324333432344332543234354323344542443435446243212424434523334339332333234444243344333345443444334 15 | 2333234372342933523342254644313314223241324245383233442323233452252283122384224443532444112333112333 16 | 2212221222222222122212222621321331221214121222224212322221222322224223322121312212222212221222323231 17 | 3132324444267393237422565135422267235266468113271572334531836131343625522324163344423252232221313123 18 | 6266663312623443323375763467243424421533542464763533535555432243434566354662552576543536625466574555 19 | 6221344332373321225152565451336282235127355325533442153248353233225335145422265556235294532422221242 20 | 3354334294767344295338353345363374456345334535646354444534443454456335433565346346445446254435444465 21 | 3232542419242446231422215431223222233242125722233223225422424243435352414232213312824422122233243217 22 | 8454533254454444244344564355444244644133224434334744445424443744444542455434434924433443143655442423 23 | 3774343839354434475947334446845743977742343227397547345345344561444545477354635774446334464446483458 24 | 5534555233535323433243335334333364335232263333333443442356453325252342256332432634434522534233451633 25 | 3381222241573442334324422543231232321426222534232232722262432452524253324312252268225353223223221431 26 | 2222612472113233121222225225222212222222122262233224222322222272221212324426242523223522421225212222 27 | 4123221123221332244311623221222333362123121222212217211122222325312222322322222642222283222222225222 28 | 3224225225224223242323523222425322222242152227122432325227422225226212246222295331232712233236222223 29 | 3454554523324434455336524554433556163345324344465453724376363464434568565464546532353333555426352167 30 | 3234522463336433523432733452474234364323444434784422834433646244443433547438484333758542534468353242 31 | 4595557857436576546666638638648595463654964564988866256967636564466636646664664365568664854558459635 32 | 3242322462321324234233232242321335233842221333532232272323331262322132242292263232233125232234314233 33 | 2365343442315225414144335634523353323432353443345433433511215525252135533423434343235641334255233233 34 | 2244233324324252431243222242122233312223542222322242345112221224332222221322522143342222231414123123 35 | 3223322252222342235122262112261222322222253522221342212241322253252723222222131332252323125217522322 36 | 2326315233364333221233523333533736333343333342333333473413433354625235333234634732525272342332434233 37 | 3873356423454634934652643465538556579937587737744639456898866434436448674664653582432483344684338875 38 | 2232223323322332243323233322324122323722222421332212333132213223332123533222323222244233423323133223 39 | 2222335422622332321323232222321222512215222328222124222312222331222352122222553411223212222223421431 40 | 3331334236322422223233325233371223632242321135221223433622215233333242322222354223224241243122335323 41 | 4451648241633314662382443457444835486614466894335332946874735335474632444644433386466679426637385618 42 | 3334333353465363363456373223692333963333353358333353333312423231743332853339763338336333232633233443 43 | 3313713333332333333192383313732332343333322442333433333243333335333213333323233223339121273332333333 44 | 5834433876646495243333446644635534484444264754584865444864476434447554474634757454643445346554545645 45 | 2221222442422333234423144153233141942112441235242124241221332332232112213212524221214214423244221231 46 | 2323222554153271232222123223122214252221163323222212324221222533332322212431322344314233242223222223 47 | 1225256234342253412143421223222225222313522223223162233422625222264342131333132242562353732432472452 48 | 2212342222215334222361212115341262222222252252222552222251422246322222224224522244325222235523542212 49 | 5522145243233435342393244343422432423243454244642364333223333523634424222333424732354532352543324324 50 | 2221212232332232224223422112322122222322422322224223222242422222132312221222322332252123222221222222 51 | 1522244222252112236222324124212122344222322126115237162223234232323212252262213226222325311213423127 52 | 6422324644142522548343234533433265443622434646443423354633761482274424434365643423634463533644456348 53 | 2232225221121222232222171232232223222213222222222322321152511212212261322121562224312325212571211322 54 | 2424121232123343312548221222432523233612335112122272742225213662223242248322322114225121138222852573 55 | 3722342232222322222132232223323221332222122222132252833232223242233222213233222332433342222323322313 56 | 6956757885688587773788287865897897649896757563733757693688637744777958757617875674738284316577878325 57 | 3123222194339344221228322313443922264322333221232533212312423529323332156233424331423113925324922125 58 | 7214655761537617515115777146416414713322647421226721556422457235252766241227417754111227134667446789 59 | 4332223232712243422533333211333223245443535363324363233442644353436231212522423243345232453423313233 60 | 5543556445954734344443544483746463443459334434366468754449472454546863766375484793474345346432444685 61 | 3328242222512222422123215212222441215242543222111222314221223222122242232252182124432522222223121122 62 | 5636556747566866666576462663765666664566666666468618793665456757466466635555566346275556785786666656 63 | 3212332622212212222222223322232713322133532232222253424232323222732353312442226332252326133322627234 64 | 4522252542152235245321214453262254123393722222262224632348232613656453272623333425712652632457263423 65 | 3433633234727343443334243433555433336122343446172223443333444322324316246444444463446432636323245231 66 | 2132421314323212333312222332222323323224322113212212222232221223222322223322223222222321334423252122 67 | 2312332243531222232212322333211312323123322222332332412222322346212232222321224214223222224223322252 68 | 2223222224222222212211222422222122222111122222212223122222523222522422222242222222261122222222222322 69 | 4832377663476459765787689789345477552665236655762984463967495853979547594336483587447448739484446435 70 | 5354224554245235333123512325224145525241434134334153325153223115532221113135134253551551354411156789 71 | 5231152226246234627228323423222333721662232321521676235736912371253322234335512312223372632222526343 72 | 2331322243238235344241233332223442435322432322723333352234333332225443532322335733445322331335343336 73 | 2222355524223123223222135222455174228412222525222122283413712132232211274352223235225225222425242242 74 | 2221222123142222222222222222212223712221232211212212222222222112222212222222251322121132321221222122 75 | 4545558254635166456545443554546544454454475555425554544345459835584553425554557556543435555644542435 76 | 4515322131614242323253324222333122228841512252155222522312119325624232222262352731125122537223245132 77 | 2123433222213333223131422312622333222416123332212223222223262522323123251113322233133221222323222222 78 | 4272323333223223232313311333333253362432623724123513213314222313332332321252325322224323431212223163 79 | 7227344564255423354344742578266556564456364552344535426477474555465365952342255672255453523234624442 80 | 3232332221327222743335523351313141233125243243213222422322337333213222324223213833321222332363379323 81 | 5233354134433414233342153232332442322333425243435232431423422432431235332334133433443233342333334373 82 | 2252233522222223221272262112252211222322222227121222212223221323222325222111223232322322311126323122 83 | 3333323433222324343343433333333324422332313343334333352333133323343334434444431331323332333322332322 84 | 6132433255213341315251442251236433312551466341454112525122334161623331226516454514251314444643154789 85 | 2446154463444333924432432132333392232373442332423434324423735733232637812324433444542241334444353643 86 | 9332252532554254511572412846292372256343436325522816772451831264542925464225968674272382533284423942 87 | 1342241222424232244221341223344142322414131144243413323241213244342242212311421233141232244333156789 88 | 2433112222322243223154222323222532323233622525221252323255242122212322122411422234312222522315232322 89 | 3511353322259322324533352233335333816333533332312125323755912323822584423213436223426232279633353623 90 | 2122213251964216221222226225222242515223422221212512612422525572227423232253322756232141222664462126 91 | 2312143221122222232362122321221222421232221215422144213312122222342312221282322215322222623322222222 92 | 4454533248523537474483433446576434447593443363744443875645223442578353986845893444733323454534344266 93 | 3331333733723543353325327342253254333325345354233525354343343433332325231433545432338332427532633535 94 | 5241224285284324221222244425423222214517212323547658522123122184732141314445222144642322823213222222 95 | 2222242523232511221342132428213422129225222222222233822621224411242121312219312222142112221232272222 96 | 3326334314424322442344343224463432453454244634333462433344454442245342254422346932433642433429444463 97 | 3223322222454261532211221254314343223233223414222252742422272123122122222321222312421216362253272213 98 | 2216436222426222222222223231115222111262222122152114122222622222213292244232522131222422222412821222 99 | 5532345434437445445344554547433444257494584834457383448458455434544548975455448445446654751469457465 100 | 6565457655146753678467766776376678787458786687557589292664577435653662675766777674454568595575637776 101 | 4323282544522422222256222228245444923259113253841486422346787251892333246973232464234382227284254592 102 | 4653235333312425333151333633334323623333336233334323332523333533432133423533545353233332253512523332 103 | 2534333436333353432323353531634445742433633242563243543333234441634273535343343333263346524275234433 104 | 3424346622345642743345722243343354123413244822154124332322634423443639574784434732443433441345223434 105 | 4642724434922365264162265247172445324362563234326326163226832262442424647124462654362346752433568267 106 | 4222122343313333333233725411334532333232433222232133123333331222252352243225273225233363613624511332 107 | 2222222232222222323122523321222223532122241212512363134322252232522222246411432232125323232224232226 108 | 8144245436521242544422392333312422222513421221311222223224264222211342424242221351232522244434723128 109 | 3343333352333333333463333231332242321334323333333363132333333334333333333122314333333334232243233232 110 | 4443353353535435645316335434341445534535545434415535531864345414335575546335238235524554554635394346 111 | 1422411233222233241332512832583322332224232233322221232362213373373221132244522822233345722144414352 112 | 2228725468425881244194227676395747313256452825725243924966342532452272445644347655923448244995328565 113 | 2222122224282262212422232123121339124241231212333123222111222222522252322123232142241322223412222332 114 | 3122213233633323212232121222322122322222241222211322212323242212222231222223231212212222222222221132 115 | 3477476658455117426525842815127442286675525213885361527788244332132117141575723828685838477348381229 116 | 3447472233343444424433333523552534343343145354325234122432545474344534736352235413573193543723222534 117 | 3122122313323212143252234232433334322323222123322163312242222222222323233325342334224332332321233223 118 | 6423246415635866667848656652577168565446845656466256456653365646342665775566766555265446664568563538 119 | 5634918445821232333463346225252252483333725334621363644526772223637323553744245535442653253327335242 120 | 2222122211325253322172241152232232414224223244242222222131222222224221212223228323222294213222122212 121 | 1241223623123322335321224123422332334222333743133522332222332342224224223523343312332342121232232422 122 | 3332344444355343453433434744444355553473344434555334434244333235444333244233323571365532442433544533 123 | 4672544345632472754453165948342553744857695255754532258236741354464945421587234473428724622982123442 124 | 8325554444123238297422223233821912354322296237764452914221225521358273166222433532415211328752242472 125 | 7223424232533133223226332213146222122332221532313333223322253321213732633542524314333222334332722222 126 | 2261222142522124421112132522221212331252324221122222222212163212423246413242222221162221262212262221 127 | 9977578465783695469797687696854868555685775645475848657787386549679777665469287767747789676899657775 128 | 7634742762152335335232537437247636722272554232217132324732223325535421252751556444525557936354356543 129 | 5724377434236555332454234454342444525359632324436254734345633453224594422526473243532771341134513525 130 | 5423212222324232222113242112223112222242222222234322131341422323322132222411322224221441323122222312 131 | 6476426656728424545553565854426646272255444565556463587896662637656366663822633565484655752545865322 132 | 3333331433453433432236242333483322233323344445233333342332332366323331334334232523333123334331332624 133 | 3675774573347752346457786444446766464543261788837557653435367673535354557134335635547466636363367657 134 | 2373532143143444627522226412233482422635241345244381281222222452343223334122224653323635354233545142 135 | 2133326322242235216142222256697267343362332322232248612122262263115367322233322123133322243254346512 136 | 4125333244442432354433441134231442452232231244445215222433243444444344424345466235341331233325424353 137 | 3934252342332442414223822292362322223167327125622224422793135542227422121252324332912656575722216231 138 | 4643336321243443535548443632332245474721536322315453334322333334333434233233533527333113133314333533 139 | 2232322432164314232242224322232322445232322243224334233223344244122112234223122444422281322244322225 140 | 6456638756516666578466668646456344167456586866666565691558576446676445675555768665668465563449465545 141 | 3945454443544283444335324313345444134333511454535254423424424446464132432434443325443433355442323335 142 | 3332333333334332233343343333424334344343433432243333343723334343234324213333223432333323433335233432 143 | 9222222221133222622222332237222222224312221325214121212222221232115222222122249362352323232221312222 144 | 3542364232364142558543224614363634536336434164636333152242462544135445335653544344433643434646444244 145 | 4564449766554355554715445575244457465974565354535585863675437284246656547868453449543545543564744813 146 | 1322422212122233132212231222234222213213522232222313232122322243222521233221115222311112222222222223 147 | 7233333932323231625234623333253353322432223253384353622225632137338352222233333223233323131132328219 148 | 6716526626642571882669453468257468255664624242252345241928346174265522272523129333815277439542551373 149 | 4346329323321253123324321334233133333323225644323422524333422444253432122232681344433333431233324431 150 | 7222655442453453446745546563543463655436447555355433443445746344364254543468532342722433646543364625 151 | 5564376336635576654674656566569653566654552653825664856346666555465346864573465655637552323564855498 152 | 2463364382373263356245348147247326446572757496435662792225322221823264633236552496432734323258523964 153 | 1322435222112132242135552141415154223241453212322223252224223224242322545223434542353233324224312244 154 | 3252232232621221223242132322232222222211222222223243212522523222222221231232157221352227222414232521 155 | 4622124123222222122125224322241122221225353262211232124422221222132251272222261322424212722222262212 156 | 2123631212321132322212232122122122231312122122222322321221211322331222222125211222222222222122221425 157 | 4643866334556464764214645572665544634446644118683589544536555578476262253466834325316333534653467567 158 | 2332344222422116333223222123222234424456323311513423211433122462233423373254322274224215234132222564 159 | 2333425424144223343223443424224425223346222443422244324423242544232322336233222342331332332223427342 160 | 6433444533945623633384133334223352531734733335394533353424392266415983422435724563423456353337475353 161 | 4223243223212435313322422312211221112124312233422323212422433422241222224523333114235222142222223212 162 | 2627622545424352433465426882443355538345659334722522444332514634432333243854433811484333434443444663 163 | 2233212524122232465252732325232232122331322321322321522343256526422222353233552523426132322232543532 164 | 3444542431433423626344343333454456532553458352855432335275342344332333353244353243395322463345438436 165 | 4434243424534412344692243729444444223244224245362523424574248325644444225446173425254523344218443333 166 | 2234117121222323321212212112221442227122223222615122327223124222232223421122212241222122242234422224 167 | 5322324522212522222223223232322232125252242452221343543112221342532622233152325222422262121234225442 168 | 4384446445374324453374435644556542432526266541364142524556642465343464549512356542224226637461564661 169 | 2253556433244145214424342242343441423222243415231243133654444144423454242342244424224544332234342314 170 | 3334321352232222321235232332532121213332371412282325223233223292223119233232322722234313316222112222 171 | 3294454447333545436433585453321464563366436428314654419456544243655255462632242442662262383546563633 172 | 3432524545442346424333341563344355445234454465355534555445433325445364594434445442465551444354364456 173 | 2282242111222641262252322232732426762227252273675111122222222232236512224312452862372233232232332224 174 | 2223132122233222222222221222122233124122212312222332212222212122312221221222121213222322122222322222 175 | 1222374422212252242622722221122226261226132275222223221262135125222225222555222116322212242212372624 176 | 5477465677686727246635574646857575743667334764567877744774457166465447425677477675674746265776579746 177 | 4231533324322214226631222464222337244123437324842272719714337247633424334225322322528232335337242243 178 | 2143344333352339332325433233294332333492143315183743333433434378782353344443633377333421331933543343 179 | 3544544334451546433334676356446336446452445423656144645476554334554644656444354646654343446664534557 180 | 3442252582552445473452361543198233356542434351535452245452545554531445514454564144238455446833424442 181 | 4232222442242233242332123425431211124212332224624343243223323522131433242222223232114223214223141232 182 | 2321222222224222216422311222333322212432322222122232222223322222233321431622224212221625222213212323 183 | 2534452233454344433242545535354543433324432633361535226254634562334344333324333333323642334346434333 184 | 2113522225214222212222212322343251331212355121625151433222342242211425222222512125212232125254225322 185 | 4224743144233222433222225222322122522342321332472323144223141324227422434274134531333123733521243414 186 | 4383243344256136234365331664442255427523333234332359352633145725433444452339352333532263353539543443 187 | 3311234233235249312243211354452271342342722232243322216326512342322333432233236333242253233422255232 188 | 2322522234461732223142212342222363222252126262122223322321151222322323132214121222342324233223343111 189 | 3432441424933232124232133133333236121342224322243312432131313213243442121221423254432222323334343221 190 | 2231221332232122242212112222222212221212122523222232232322222222421223222222222222212432242255122342 191 | 3737762116736662261766749423746728642232425822342524718341445757843224752363834771564267865687743253 192 | 3114432333543323433114443433223333323334234334223424344331343434434363273242432233333233342174332243 193 | 4313356714526233425622234222452532175342215333323233224262135653334536339951234157635481233543365265 194 | 5244632645553445352453153564132435756372455423514254124524525245342233436414425162262523545644453652 195 | 4142749245293223471212641142432544328928241252549356447214259481322584133222463432443354274492344312 196 | 9774888556655727767488557887967426925276536885567969837358867588286967565323377746523786587756827775 197 | 2433733322122313275322425557825226339325552533247133133749552235546742511874255634664556254127332373 198 | 3522942223322645227152924923662823415542242241332558832344533212792344324625537266163552229423444284 199 | 2231522222122331262221211664522262242625232222221332224222254432223362222322222911252222551222553442 200 | 2473223324383134323333232322536353138286353628313413243292544234432314332342341424434427632531423226 201 | -------------------------------------------------------------------------------- /day5/src/input.txt: -------------------------------------------------------------------------------- 1 | 273755558074677-273755558074677 2 | 473129501945828-473593331787329 3 | 479189870831184-479808015665254 4 | 25170668551825-28139651159810 5 | 175049557548991-175300778624455 6 | 123064815356564-128678878450880 7 | 91072478273907-99350548183009 8 | 306500120408701-306961916696477 9 | 36850793926920-36850793926920 10 | 248116815838733-250068543894110 11 | 106844195303960-109071995976487 12 | 473794782024827-474342982528223 13 | 494222414498672-499635391745852 14 | 113586476470816-119749061364358 15 | 166859339402927-169242051786255 16 | 68524903982264-68916593026345 17 | 293294829395433-296062220932724 18 | 112031242283664-117313135215556 19 | 53285136626529-58700750118764 20 | 66387563937484-67182008775577 21 | 527468442053374-528744603137901 22 | 480325138821843-480991685721289 23 | 298729116833935-301046707513583 24 | 423549359807780-428316632495040 25 | 178045865893536-178309140183307 26 | 526790381878899-527847721743560 27 | 475531996991929-476046404066419 28 | 245963236839800-247842647929423 29 | 241521120675023-243124067508354 30 | 413126289314438-420108578733786 31 | 477869815142138-478195166316547 32 | 173882739158667-173948900297838 33 | 74868244969101-79224010798888 34 | 61908730611049-62442728462456 35 | 46515367286533-48250012142819 36 | 327251367037275-331231373911685 37 | 67048737673666-67480358985416 38 | 478813504995579-479189870831184 39 | 506608717526455-506608717526455 40 | 94341562613924-97403433384085 41 | 323230776963289-331231373911685 42 | 68768364414783-68916593026345 43 | 82525214163767-82525214163767 44 | 155015607370573-159949919860843 45 | 474047330934257-474641270031113 46 | 211737112040071-218161175843889 47 | 397988498786885-399809738354172 48 | 62917276645155-63121739780175 49 | 476554091330210-477082728781465 50 | 475810599694778-476046404066419 51 | 495850823931008-500428274283871 52 | 310088621143888-310172713441697 53 | 175560672359395-176135065700540 54 | 473427620780697-473794782024827 55 | 1212358099654-7823635593175 56 | 172808311643422-173215412622570 57 | 480991685721289-481336586808243 58 | 181877333734141-187884876475306 59 | 68524903982264-69237165933781 60 | 535969101795440-540922644580828 61 | 479360092147402-480062098314307 62 | 557270341908874-560027793657365 63 | 273755558074678-280121156602064 64 | 346452532845360-350220219674490 65 | 304766870231133-305383177137335 66 | 60685934339124-61294378536143 67 | 227351413945705-230854486356145 68 | 142669208837431-145745612268961 69 | 303948396165969-304766870231133 70 | 64125472978868-64417914280176 71 | 133815896860348-137147250289561 72 | 384301090989751-388700431197929 73 | 247130954501464-249017821139790 74 | 312985731418004-320538723772711 75 | 490474675446499-490474675446499 76 | 456730460083274-460453293733034 77 | 224073628798087-227351413945704 78 | 40301633585173-42820256439206 79 | 506608717526455-509191390818865 80 | 524901058148389-526042680599647 81 | 334780532788714-339821346406424 82 | 373662666711447-380247758773745 83 | 183902082060971-190615641238440 84 | 306192022322758-306500120408701 85 | 174455503763538-175300778624455 86 | 479360092147402-479633228404054 87 | 513732877906662-518465037013652 88 | 68170613195522-68768364414783 89 | 142669208837431-147880669111235 90 | 176135065700540-176784244006582 91 | 179142901105935-179218164934685 92 | 171114321342912-171870000045794 93 | 531140413640919-532619605872579 94 | 61294378536143-61383738237047 95 | 172616646528816-173215412622570 96 | 483999237660702-490474675446498 97 | 58700750118765-58700750118765 98 | 68524903982264-69237165933781 99 | 540922644580828-540922644580828 100 | 428316632495041-431501944361772 101 | 384301090989751-388700431197929 102 | 254116419345916-256850830509937 103 | 524061134730808-525306130780103 104 | 528416912666495-529849511949109 105 | 452739472973081-460453293733034 106 | 44835999772617-46810849760993 107 | 475810599694778-476046404066419 108 | 445219608400995-446367875081572 109 | 65429584580463-65944824320096 110 | 244991828186315-246762825757879 111 | 354165809925320-360139005290265 112 | 445219608400995-449422166406871 113 | 310472273443259-311068357331100 114 | 172191204460720-172808311643422 115 | 82525214163768-89282804716127 116 | 194091235306472-198062001221647 117 | 204843701118391-210724324404582 118 | 102566739570794-106844195303958 119 | 62265084449898-62917276645155 120 | 295322219310860-297895637251399 121 | 402883831811075-410905057761279 122 | 162739369777185-169242051786255 123 | 432873384186824-438921192616611 124 | 265787127400149-265787127400149 125 | 285464323305095-288367977011897 126 | 242787960971644-244198492280636 127 | 249553588776475-251055611805956 128 | 479189870831184-479633228404054 129 | 175849857992108-176135065700540 130 | 265787127400149-268470085318189 131 | 332359235940934-338042326352073 132 | 133815896860348-137147250289561 133 | 159949919860844-159949919860844 134 | 179142901105935-179716941971957 135 | 303948396165969-304766870231133 136 | 22650941852844-28139651159810 137 | 513732877906662-518465037013652 138 | 373662666711446-373662666711446 139 | 177356155932940-177627417368605 140 | 48031769920269-50076959622970 141 | 243843849516096-245396796613461 142 | 525795618785748-527248346370401 143 | 530159498626387-531567872237466 144 | 392675896888578-397988498786884 145 | 288367977011897-288367977011897 146 | 546004987601051-548427675245280 147 | 12693815481656-17468032426994 148 | 175049557548991-175849857992108 149 | 177740546646302-178612586382184 150 | 342400234637809-346452532845358 151 | 235327080241447-238506035628183 152 | 42127612548740-44295794888001 153 | 529409352541582-530770812152440 154 | 176135065700540-176784244006582 155 | 481617316312685-482143217467785 156 | 297083786543566-299746508029580 157 | 363890409937225-368068393315411 158 | 202639488415686-204843701118389 159 | 543650389026992-551099881873920 160 | 557270341908873-557270341908873 161 | 32941708071663-36850793926920 162 | 176346016850302-177139541018324 163 | 123064815356564-126964902984044 164 | 305188189030903-305976390813586 165 | 302868462641770-303687954699812 166 | 43652755877783-45437818136696 167 | 12693815481656-12693815481656 168 | 462884083227658-467519556947936 169 | 291713739052680-294209614534222 170 | 420108578733787-420108578733787 171 | 363890409937225-363890409937225 172 | 481617316312685-481954103558777 173 | 315726718047061-317353210842264 174 | 402883831811075-406105970412250 175 | 305701925625577-306500120408701 176 | 252230747002702-259187315247507 177 | 180168698878148-180396394203368 178 | 467519556947938-469802531058241 179 | 72505100773672-74868244969100 180 | 523024738052364-524465014086398 181 | 235327080241447-238506035628183 182 | 198062001221647-198062001221647 183 | 68524903982264-68916593026345 184 | 63980485818747-64785856879113 185 | 186 | 77639398381958 187 | 328192160474576 188 | 238451796467887 189 | 406341688156336 190 | 3025618697986 191 | 346004738745670 192 | 78910502562606 193 | 7576173082508 194 | 85554897277647 195 | 522438189367437 196 | 285040904733465 197 | 559998612758525 198 | 293765507860542 199 | 252331120659481 200 | 213890436736056 201 | 31335394408633 202 | 435034263406279 203 | 455381805735585 204 | 206653359352104 205 | 496224615574967 206 | 172745818176732 207 | 156944166021964 208 | 409610737640461 209 | 211757021920657 210 | 144313470609638 211 | 228964017785933 212 | 33887909729202 213 | 286643841194204 214 | 157546183910852 215 | 431538191378390 216 | 241752608546827 217 | 337316230051017 218 | 324544669027605 219 | 286803737431297 220 | 73730802415629 221 | 40794723919507 222 | 423388736232655 223 | 518118708878540 224 | 220384202055703 225 | 56518132818894 226 | 243200877167967 227 | 426575221738850 228 | 246491984618987 229 | 230727868310282 230 | 221455535736119 231 | 190558935789679 232 | 254381289056223 233 | 344647030579202 234 | 346128451532109 235 | 166035392147000 236 | 555828086699993 237 | 489731237083890 238 | 186664537884393 239 | 537169422482048 240 | 375316153767399 241 | 487735573657998 242 | 135566280645034 243 | 447115092373226 244 | 12897941979321 245 | 459447209206137 246 | 364996527164450 247 | 31643172716230 248 | 236622883140301 249 | 429171112889565 250 | 229867440178181 251 | 338987942830416 252 | 4798714940703 253 | 428778587585923 254 | 259542393497728 255 | 47623121508276 256 | 546970646961885 257 | 330157455088779 258 | 89601974863763 259 | 236193802873640 260 | 407623875653890 261 | 3071470638327 262 | 186861791867073 263 | 435513587202050 264 | 84689430310872 265 | 527439819248753 266 | 263023533057058 267 | 146062329675168 268 | 1538146215330 269 | 256406881649774 270 | 520823495420145 271 | 526872206654475 272 | 385397435525472 273 | 496760971962858 274 | 213156776665811 275 | 357618024422459 276 | 258167227899613 277 | 96878073331865 278 | 23632553802377 279 | 186611205796551 280 | 302901288897144 281 | 299399208432493 282 | 216691608858729 283 | 306413349720113 284 | 102078000070933 285 | 77866696392414 286 | 295007906961462 287 | 537030170656374 288 | 426187938307244 289 | 244565158086579 290 | 26390198589223 291 | 34546002707647 292 | 207123438435799 293 | 329571343459341 294 | 27083520303936 295 | 324958465452103 296 | 103818739268587 297 | 101073141442002 298 | 92873073305137 299 | 40621751768151 300 | 41198926270940 301 | 319030725844974 302 | 330719457203886 303 | 15071291347017 304 | 14986093920926 305 | 287570563548090 306 | 485219051331776 307 | 496030763887402 308 | 507858087062842 309 | 453602369401452 310 | 135029388221401 311 | 56449774748422 312 | 275480251157213 313 | 209392659027567 314 | 296232055624003 315 | 73510229955953 316 | 226215131799288 317 | 530437936423492 318 | 17999018525453 319 | 388478725874280 320 | 347982506692005 321 | 265161021986604 322 | 498598357052821 323 | 16770303140480 324 | 397273613505822 325 | 190490118578262 326 | 281477279193292 327 | 196841713664340 328 | 303317726059454 329 | 113753078326024 330 | 79011144472394 331 | 385667488907852 332 | 86222010998918 333 | 478616297350493 334 | 226059008776687 335 | 431716651559604 336 | 484433191960622 337 | 363988736389789 338 | 272982314066135 339 | 225795601784971 340 | 429138307888934 341 | 165300984928697 342 | 542377438262365 343 | 256804189740833 344 | 210425751678282 345 | 330782915528511 346 | 537789715037344 347 | 527080130090399 348 | 164978142490950 349 | 435701388455545 350 | 347481690514837 351 | 445345769547688 352 | 25880807020514 353 | 137000773325485 354 | 371934006719819 355 | 347669154788364 356 | 348744162532724 357 | 95638145518205 358 | 134120266629883 359 | 425836031173192 360 | 207303972745540 361 | 429933937337189 362 | 104698926587107 363 | 230659994142885 364 | 238143440710537 365 | 326838133174983 366 | 357459344305940 367 | 274212986559970 368 | 203810003571353 369 | 453940771464013 370 | 482203726061574 371 | 216158192939862 372 | 547760908813883 373 | 528420850901050 374 | 477753969720655 375 | 497803822276100 376 | 550422801859669 377 | 532578148539555 378 | 488921597855911 379 | 433067932118098 380 | 479839259913238 381 | 317516344549318 382 | 377475139834097 383 | 92479649342928 384 | 72282663023531 385 | 559550455659693 386 | 5394009284486 387 | 266828514328123 388 | 257087297603864 389 | 16592966558037 390 | 22843383514692 391 | 56309859380039 392 | 133863444442193 393 | 243962875209482 394 | 286230364976621 395 | 127081672693599 396 | 237178994509107 397 | 147089142875484 398 | 166512364274937 399 | 275754302192208 400 | 543814400560706 401 | 499278281960756 402 | 104720188730795 403 | 114155917648003 404 | 75663933119925 405 | 278022602864255 406 | 103227626693881 407 | 474085157902784 408 | 100125011464960 409 | 35265963086784 410 | 529318026951816 411 | 92692279353543 412 | 45386656695132 413 | 396451760418235 414 | 376345950362105 415 | 310138658079484 416 | 18668650297975 417 | 465910415227430 418 | 143660628827074 419 | 316705231787813 420 | 401517881874887 421 | 514298302489231 422 | 287284336971120 423 | 161378712569814 424 | 287044568290840 425 | 114921562024965 426 | 77645890020896 427 | 319712352549470 428 | 469775939975464 429 | 273444526809832 430 | 40420727049051 431 | 329405071812904 432 | 52562540199340 433 | 112903945487382 434 | 496462494344731 435 | 86651284541985 436 | 227947107387259 437 | 297224586714683 438 | 386064955908858 439 | 22860447340798 440 | 540277255835720 441 | 500088754477686 442 | 523340120184132 443 | 146988661240103 444 | 166753790246562 445 | 426805806045452 446 | 512108310163490 447 | 521576269046902 448 | 244946692043912 449 | 112745616277933 450 | 94242875596822 451 | 204238357855523 452 | 371414867123069 453 | 144496964566533 454 | 467155894107856 455 | 241810008544040 456 | 452618121210861 457 | 196030488052444 458 | 407741230157897 459 | 404439565573672 460 | 499021006911162 461 | 384342718221671 462 | 24602432418812 463 | 435251766889229 464 | 367424484001607 465 | 300371390587679 466 | 485371219721317 467 | 224485180574116 468 | 123659724950515 469 | 150171725079792 470 | 398398768962034 471 | 417151098643751 472 | 156115663677409 473 | 334520871040455 474 | 294899853278682 475 | 92369659613012 476 | 406089487928449 477 | 74308496847902 478 | 429221759925233 479 | 55360538488989 480 | 112621463348755 481 | 108633187570879 482 | 468745821214028 483 | 28120933964633 484 | 316234126421307 485 | 495061677213423 486 | 25582527924351 487 | 267224117317623 488 | 545994707049434 489 | 66568121267707 490 | 357971746448183 491 | 386701916837973 492 | 457428561974127 493 | 320011640704264 494 | 268201667933508 495 | 396866052994152 496 | 247751861176781 497 | 213569753306882 498 | 508542369930557 499 | 410386874340860 500 | 343544766391720 501 | 119735265656391 502 | 174543943025375 503 | 230049018257743 504 | 539431349033070 505 | 406141612676323 506 | 482098992774679 507 | 268518083229604 508 | 548368763332434 509 | 97267362479455 510 | 163146101099407 511 | 190531695658081 512 | 447617076432272 513 | 105288003799251 514 | 127028820624390 515 | 232451302751982 516 | 245225697539119 517 | 254803877729129 518 | 105482887218259 519 | 157407984929139 520 | 517366362142785 521 | 460383000761984 522 | 557756130501645 523 | 449268296473166 524 | 527247727986142 525 | 377752839416550 526 | 215102412050179 527 | 114741978069525 528 | 3424422804238 529 | 34728899898530 530 | 386640379465209 531 | 147423074091212 532 | 423601141550259 533 | 118547760102930 534 | 557411314832841 535 | 203966825454105 536 | 23388800897469 537 | 155633024997879 538 | 526085076577055 539 | 348171237367421 540 | 501239375449739 541 | 48347456172970 542 | 326104405235670 543 | 176303868354623 544 | 133834879982648 545 | 157397138206374 546 | 107017753194753 547 | 364941347249125 548 | 486462022378908 549 | 365580192593932 550 | 484626187196259 551 | 364164690680317 552 | 243140490415131 553 | 342431928355140 554 | 404891675023120 555 | 242613163279415 556 | 1501320738345 557 | 213989931733121 558 | 212687349472771 559 | 144859617949017 560 | 230584265680792 561 | 255689461758988 562 | 415021870207595 563 | 489325549063105 564 | 167979328518508 565 | 79221501987639 566 | 24818445894195 567 | 249672932488695 568 | 144272799407156 569 | 178112532944355 570 | 547770829002426 571 | 289830968601312 572 | 531520735229928 573 | 474434057654144 574 | 518270897299256 575 | 557809822433470 576 | 530866546061195 577 | 1802474387304 578 | 46592942591624 579 | 310892552845238 580 | 88699058239054 581 | 374732486835824 582 | 324287800246385 583 | 168768541630688 584 | 526856250531433 585 | 299406109173969 586 | 19574742812327 587 | 155480751307399 588 | 294831541842916 589 | 83235337344220 590 | 553756389374752 591 | 276972791882146 592 | 209548257115549 593 | 123739226480344 594 | 498015483993426 595 | 522925127529889 596 | 166034580193436 597 | 445930355920778 598 | 279993829320446 599 | 425813518643263 600 | 123196953823765 601 | 296655750635850 602 | 58561429319369 603 | 523379997450183 604 | 203012324087625 605 | 216759181165827 606 | 74738016798822 607 | 458807702611217 608 | 329546606248096 609 | 546279778027790 610 | 458650194652053 611 | 538048803193845 612 | 544026503338195 613 | 486438153811124 614 | 110282401913416 615 | 2803191631178 616 | 537362799800943 617 | 83848249283080 618 | 488639609885703 619 | 282732694015381 620 | 26500681502650 621 | 54488077935909 622 | 56505587750894 623 | 57719656438716 624 | 73192997587657 625 | 300570755672060 626 | 183028669957877 627 | 304029305503583 628 | 357676647713826 629 | 187123568760875 630 | 429974890856788 631 | 56273786820177 632 | 248361816934147 633 | 468570104879323 634 | 342441720751168 635 | 197623019543597 636 | 478135432232192 637 | 447079972250061 638 | 2373915242512 639 | 374113226887905 640 | 478077159893463 641 | 158491631910867 642 | 125963165421309 643 | 467575342146717 644 | 34627261080933 645 | 95282124587583 646 | 331146946167020 647 | 471509577886964 648 | 268354774501887 649 | 13138923017524 650 | 256204653262593 651 | 313789037440086 652 | 151227240535383 653 | 356011801300426 654 | 306113306830311 655 | 464255188015754 656 | 165748039586328 657 | 379533565853023 658 | 456547706719542 659 | 225739210581063 660 | 342545807141840 661 | 4440809048562 662 | 518052870567310 663 | 204473686881863 664 | 126248886870056 665 | 277009959305990 666 | 342194444297781 667 | 437569658302362 668 | 116807326438983 669 | 475840315390178 670 | 334541513732336 671 | 523119014767857 672 | 438893520182434 673 | 156909077206475 674 | 71213869767033 675 | 118007068092423 676 | 132234874571404 677 | 393973721286681 678 | 426185375466464 679 | 434732571921836 680 | 93526361173779 681 | 416507053713239 682 | 547290621699951 683 | 515940427915984 684 | 550579144046931 685 | 417265005675708 686 | 266328749066621 687 | 133484975425292 688 | 391410352843081 689 | 549612507299557 690 | 5858694945013 691 | 526871350777771 692 | 295602560951161 693 | 453602325785302 694 | 227472298116951 695 | 40429213351936 696 | 106850297529847 697 | 236147985747044 698 | 254693097631764 699 | 277703418262771 700 | 55395373239381 701 | 93831769443193 702 | 284168328499802 703 | 336389710354308 704 | 306262327593408 705 | 316709063520581 706 | 149697528458122 707 | 89222150548063 708 | 426285755352789 709 | 94691270481644 710 | 114487184495976 711 | 375875923957455 712 | 16336055157604 713 | 486982150025471 714 | 446358390755688 715 | 225678070929104 716 | 306457189100522 717 | 389889713437047 718 | 225092853447316 719 | 183579751136947 720 | 188915772212051 721 | 16057454726085 722 | 14907880545353 723 | 455847683257673 724 | 91224312341950 725 | 13040567443607 726 | 176208046183933 727 | 533840294770108 728 | 144954241536423 729 | 88895159950810 730 | 7012292681247 731 | 468544299528354 732 | 460178675351127 733 | 249100279763703 734 | 23604928277278 735 | 526101696381318 736 | 471695489575389 737 | 273838465859938 738 | 274480358275484 739 | 417389432499342 740 | 549502827177526 741 | 334909776908489 742 | 558552563736633 743 | 151002134068274 744 | 428402391112360 745 | 45560750283710 746 | 118745585795008 747 | 288298438506975 748 | 154424357266002 749 | 248205342467535 750 | 505758713081472 751 | 402752579425066 752 | 76149387210847 753 | 494124205816622 754 | 425872416318907 755 | 146916443475259 756 | 122517011499003 757 | 395767853606185 758 | 446741999379725 759 | 42609010484835 760 | 137342565788837 761 | 14676882939307 762 | 405319908387258 763 | 458782819478475 764 | 337911648777606 765 | 88180831703405 766 | 347925130032223 767 | 546888494584271 768 | 204398410540047 769 | 136884954921403 770 | 99106809213429 771 | 293113006416646 772 | 126218513781447 773 | 236256950400756 774 | 299086133816879 775 | 172858437556805 776 | 224477415302004 777 | 453529743918891 778 | 104095463668600 779 | 273818975552413 780 | 47727283074494 781 | 536022676426260 782 | 318159983677246 783 | 172551087080099 784 | 54229919506357 785 | 532393395534075 786 | 323955884912603 787 | 415749339170083 788 | 214459627127305 789 | 429830461898236 790 | 249149210764445 791 | 82670702973579 792 | 42729903175218 793 | 5265936989855 794 | 47270454899107 795 | 468760585352600 796 | 475765715120495 797 | 418989638855238 798 | 24226108173870 799 | 307236093303169 800 | 324148966498896 801 | 98166497466520 802 | 455955191978805 803 | 113038974414366 804 | 4422806290184 805 | 545610955204723 806 | 68960773606533 807 | 131834091787268 808 | 332970081130637 809 | 244341096512744 810 | 229525705605483 811 | 155027914018120 812 | 97271898619870 813 | 424868197686333 814 | 354839602615238 815 | 347741963829202 816 | 6330290885155 817 | 313158579818655 818 | 466324247024233 819 | 172308139667341 820 | 208062063956409 821 | 380063964136604 822 | 279625864535426 823 | 45736942575133 824 | 471136265132458 825 | 108641072055758 826 | 421724217762479 827 | 67116408589337 828 | 86679740896721 829 | 546612600611944 830 | 87263811162264 831 | 313604140496391 832 | 388204227303087 833 | 190423459702657 834 | 166044977250858 835 | 166404649296855 836 | 190234365311022 837 | 298226236968330 838 | 364260138159378 839 | 395736214453190 840 | 33467287717083 841 | 376140279428322 842 | 394375792961216 843 | 544088500263900 844 | 364461006477034 845 | 431037152761050 846 | 275508802524480 847 | 250900596783984 848 | 507471565592699 849 | 399146215372420 850 | 313329054575227 851 | 2490480023602 852 | 85591967082961 853 | 172554878063592 854 | 499773843655431 855 | 224407906051769 856 | 324202562994067 857 | 410433321160794 858 | 144449693205886 859 | 405594139243965 860 | 435566190535376 861 | 486980673981505 862 | 53537898076252 863 | 227285338247387 864 | 117281972237329 865 | 125226150254176 866 | 256718700382417 867 | 471663208064729 868 | 167788457876410 869 | 500126911213145 870 | 83259216439224 871 | 540673290886997 872 | 58737448039864 873 | 300723757913520 874 | 337538442221439 875 | 136059993427394 876 | 377124965657317 877 | 381301026473750 878 | 361198282971931 879 | 277773642078973 880 | 73437698155484 881 | 276271843995294 882 | 347266400537615 883 | 486351255526892 884 | 416165608270455 885 | 213953666535608 886 | 317493478061931 887 | 43828443813165 888 | 166625754540682 889 | 67045636122668 890 | 433879784213403 891 | 525278884949346 892 | 291904851836820 893 | 62493157842753 894 | 266806548841489 895 | 159775642539517 896 | 333069618567824 897 | 430855298183860 898 | 274070209999642 899 | 203737628611578 900 | 300597640850642 901 | 115684885761196 902 | 412779391462230 903 | 93190802167204 904 | 267300262863830 905 | 306661221541528 906 | 197740530094909 907 | 344292799099367 908 | 157391262195267 909 | 154109247636825 910 | 108010597583935 911 | 168933878371274 912 | 266195949686671 913 | 526532214284998 914 | 275135753043368 915 | 517142621242087 916 | 559541425005003 917 | 165367392679528 918 | 374198530736631 919 | 88510690902508 920 | 387101317066926 921 | 88488598046044 922 | 270701577501413 923 | 186278762159306 924 | 557467630124114 925 | 113703613164622 926 | 316367929542143 927 | 434428930146523 928 | 6333990663746 929 | 466043730271461 930 | 474892162012215 931 | 48882226918210 932 | 46445010883493 933 | 76866811617195 934 | 163582929501697 935 | 99038445823468 936 | 133959523756807 937 | 36474826029310 938 | 271810447453658 939 | 36522682688911 940 | 13448912532473 941 | 135664379855837 942 | 195827529303803 943 | 348483118741824 944 | 324728108216887 945 | 266929817717096 946 | 186943119645859 947 | 103045675845786 948 | 189596572550952 949 | 145583529229021 950 | 388540126700206 951 | 73859342181352 952 | 495002178980322 953 | 387250519508498 954 | 317738155154853 955 | 297683878021271 956 | 428744901133507 957 | 547542295524337 958 | 224812579839435 959 | 395443976136078 960 | 207533282091578 961 | 377171804279125 962 | 404834857978063 963 | 332660243286331 964 | 334859465684985 965 | 135881019412144 966 | 405633529930075 967 | 308023288180025 968 | 7446844745629 969 | 367856397925567 970 | 424724294484184 971 | 406969649558506 972 | 47468054602760 973 | 514125487152297 974 | 279407317531429 975 | 232644615298768 976 | 430752086233292 977 | 95151698862678 978 | 298390347142229 979 | 359574519553063 980 | 304000688113786 981 | 216658880080646 982 | 532184842038060 983 | 215161150782506 984 | 316487544380354 985 | 167720632853054 986 | 497109656230654 987 | 305794519697191 988 | 531924093137619 989 | 228527534579979 990 | 141918070020804 991 | 294402607806169 992 | 266667635673087 993 | 456260404384927 994 | 6366243352503 995 | 303579147528485 996 | 453355797531249 997 | 184464523120375 998 | 457400541933450 999 | 372420740059605 1000 | 485579432985284 1001 | 213543447492186 1002 | 529054793220047 1003 | 484391008425065 1004 | 345808033220550 1005 | 179372009186236 1006 | 487760253190732 1007 | 254488553897468 1008 | 119625919671814 1009 | 292355782311833 1010 | 377803863548916 1011 | 209579589641560 1012 | 86490070804581 1013 | 352547883445201 1014 | 137856759766985 1015 | 371742546121443 1016 | 364062992920362 1017 | 546745542110524 1018 | 228706759324696 1019 | 243483647405094 1020 | 486476788662670 1021 | 83444650163012 1022 | 543870132224601 1023 | 171545041235948 1024 | 58211150651187 1025 | 48645632220063 1026 | 176194080701929 1027 | 258039723279935 1028 | 147138644145315 1029 | 203327843751554 1030 | 197409683298685 1031 | 333183625125171 1032 | 316039821981696 1033 | 136044188829375 1034 | 287238165653172 1035 | 332553820107108 1036 | 338491035651707 1037 | 156724091864912 1038 | 344952415763787 1039 | 126328827732980 1040 | 230800028675811 1041 | 335619614396458 1042 | 72905578449643 1043 | 544237619606078 1044 | 236154132481267 1045 | 166251036400499 1046 | 4713887358249 1047 | 280093584411539 1048 | 183666378957974 1049 | 112254231237421 1050 | 133817881661472 1051 | 465323928363949 1052 | 127468309890504 1053 | 99524133146990 1054 | 459375130768381 1055 | 538771389153686 1056 | 277313499662736 1057 | 115584894153170 1058 | 527433419724942 1059 | 65643568669651 1060 | 257885557299646 1061 | 317617131670508 1062 | 427033701906146 1063 | 14618231241529 1064 | 41732059831468 1065 | 456770461184856 1066 | 446334571775802 1067 | 267178591293906 1068 | 439155902056189 1069 | 239029321444319 1070 | 422476119909907 1071 | 23882688767462 1072 | 413174744702029 1073 | 47098462132478 1074 | 292157701436384 1075 | 94264773647607 1076 | 106046094330730 1077 | 561494498980796 1078 | 62722535970171 1079 | 449706960972647 1080 | 182485622980975 1081 | 238071452416334 1082 | 545730838723114 1083 | 197760517006200 1084 | 83369449152773 1085 | 160038566233345 1086 | 112928425637251 1087 | 204584882046546 1088 | 198484292628383 1089 | 489779797711651 1090 | 547479669426883 1091 | 507503889976992 1092 | 395921454457138 1093 | 2997641954157 1094 | 242418760727252 1095 | 103187150686487 1096 | 126800639175497 1097 | 115635816458514 1098 | 245441369919723 1099 | 97950268085765 1100 | 419916939494178 1101 | 20268292808138 1102 | 68602634300660 1103 | 206720591897300 1104 | 78509198272574 1105 | 350042194956298 1106 | 424191609503417 1107 | 147492175714121 1108 | 488636696036216 1109 | 344988298148434 1110 | 464354914423908 1111 | 49418689825672 1112 | 359241760135088 1113 | 435482048820484 1114 | 93218087973601 1115 | 294356390308532 1116 | 355241383052816 1117 | 169149011488265 1118 | 499448310596509 1119 | 419692147976518 1120 | 136368140042563 1121 | 62709451378965 1122 | 515150404484446 1123 | 67247277835759 1124 | 418361618895937 1125 | 235410549854627 1126 | 317898449126014 1127 | 46278845914201 1128 | 166459875658803 1129 | 423760358070868 1130 | 444293365093298 1131 | 323864201030045 1132 | 485244060877221 1133 | 208123164389625 1134 | 139498389077638 1135 | 275163635270901 1136 | 414087401703578 1137 | 364979615821432 1138 | 329142582001919 1139 | 165381763768196 1140 | 145241874184769 1141 | 282727202523363 1142 | 425180147447187 1143 | 295969931171949 1144 | 497147856121960 1145 | 530955033714687 1146 | 78027499158313 1147 | 305601950815792 1148 | 398853064687687 1149 | 236535790465100 1150 | 411817434656424 1151 | 356845681585232 1152 | 94330873828381 1153 | 126376642626387 1154 | 176590139694534 1155 | 155796409700199 1156 | 246673331705836 1157 | 467884706278922 1158 | 202877776091405 1159 | 557976196287140 1160 | 364643755318658 1161 | 550606484532281 1162 | 11317993051812 1163 | 407988846150643 1164 | 118408397402887 1165 | 66570024491813 1166 | 490120766472647 1167 | 142146569670730 1168 | 119494505266032 1169 | 531668270629355 1170 | 338732497533569 1171 | 338001448416498 1172 | 87825421268283 1173 | 359386866318403 1174 | 96260443131229 1175 | 271496706981618 1176 | 493990419564545 1177 | 168669404536368 1178 | 419485208266569 1179 | 548756761956141 1180 | 422359908630334 1181 | 129643169081249 1182 | 277613345756428 1183 | 44716505260626 1184 | 27810634565345 1185 | 524852121996852 1186 | -------------------------------------------------------------------------------- /day1/src/input.txt: -------------------------------------------------------------------------------- 1 | R17 2 | L19 3 | R24 4 | R37 5 | R29 6 | R37 7 | R35 8 | R40 9 | L7 10 | L37 11 | L45 12 | R44 13 | R2 14 | R12 15 | L44 16 | R31 17 | L29 18 | R34 19 | R9 20 | R22 21 | R44 22 | R30 23 | L22 24 | R13 25 | L3 26 | R5 27 | L43 28 | R31 29 | R47 30 | R43 31 | R11 32 | R47 33 | L34 34 | L43 35 | R40 36 | R29 37 | L4 38 | L6 39 | L25 40 | R16 41 | L12 42 | R38 43 | L41 44 | R17 45 | R45 46 | L21 47 | L8 48 | L24 49 | R6 50 | L45 51 | L33 52 | L29 53 | L67 54 | L44 55 | R62 56 | R38 57 | L86 58 | L14 59 | L69 60 | R69 61 | R26 62 | R74 63 | L33 64 | R24 65 | L80 66 | L48 67 | L96 68 | L67 69 | L93 70 | R72 71 | L79 72 | L58 73 | L66 74 | R53 75 | R56 76 | R55 77 | L40 78 | R70 79 | R91 80 | R53 81 | R69 82 | R17 83 | L61 84 | R66 85 | R91 86 | L96 87 | R47 88 | L47 89 | R41 90 | L67 91 | L93 92 | R19 93 | L88 94 | R88 95 | R33 96 | L33 97 | L71 98 | R96 99 | R75 100 | L56 101 | R69 102 | L63 103 | L50 104 | L89 105 | R85 106 | L96 107 | R95 108 | R8 109 | L88 110 | R25 111 | L17 112 | R42 113 | L10 114 | L7 115 | L48 116 | R2 117 | L574 118 | L97 119 | L93 120 | R62 121 | R19 122 | R981 123 | R6 124 | L88 125 | L118 126 | L994 127 | L57 128 | L55 129 | L68 130 | L26 131 | L105 132 | R67 133 | R81 134 | L23 135 | R80 136 | R61 137 | R47 138 | L44 139 | R56 140 | L13 141 | L67 142 | L640 143 | L63 144 | L309 145 | R44 146 | R28 147 | R795 148 | L95 149 | R83 150 | L32 151 | R49 152 | R143 153 | R919 154 | L27 155 | R801 156 | L611 157 | R66 158 | R49 159 | R854 160 | R18 161 | R88 162 | L121 163 | L80 164 | R1 165 | R84 166 | R16 167 | L64 168 | R55 169 | R909 170 | L37 171 | L338 172 | R954 173 | L79 174 | R6 175 | R16 176 | L44 177 | L78 178 | R72 179 | R28 180 | R32 181 | R968 182 | L53 183 | L74 184 | R45 185 | L370 186 | L448 187 | R858 188 | L60 189 | L5 190 | L15 191 | L478 192 | L50 193 | R550 194 | R80 195 | L30 196 | R79 197 | L29 198 | L451 199 | L99 200 | L21 201 | L29 202 | R14 203 | L214 204 | L40 205 | R39 206 | L99 207 | L8 208 | R8 209 | L90 210 | R90 211 | L57 212 | L77 213 | R34 214 | L61 215 | L55 216 | R16 217 | R80 218 | L97 219 | R69 220 | L52 221 | R40 222 | L140 223 | R75 224 | L28 225 | R53 226 | L31 227 | L56 228 | L423 229 | L590 230 | R44 231 | R86 232 | R70 233 | R30 234 | L41 235 | L7 236 | R318 237 | R27 238 | L27 239 | R99 240 | L97 241 | L31 242 | R29 243 | L864 244 | R64 245 | R39 246 | L39 247 | L77 248 | R809 249 | R68 250 | L8 251 | L92 252 | L88 253 | L912 254 | L99 255 | L55 256 | R341 257 | L953 258 | L34 259 | L16 260 | L7 261 | R123 262 | L58 263 | L42 264 | R45 265 | R77 266 | L62 267 | L572 268 | R12 269 | L823 270 | R23 271 | R23 272 | L92 273 | L31 274 | L74 275 | L226 276 | L6 277 | L190 278 | R70 279 | R63 280 | L37 281 | L468 282 | R91 283 | R152 284 | R35 285 | R49 286 | R954 287 | R15 288 | L28 289 | L60 290 | L40 291 | R15 292 | L15 293 | R4 294 | R15 295 | L3 296 | L16 297 | L868 298 | L61 299 | R949 300 | R80 301 | R95 302 | R292 303 | L521 304 | L436 305 | R88 306 | R82 307 | R42 308 | L415 309 | L14 310 | L13 311 | R46 312 | L46 313 | R973 314 | R27 315 | L73 316 | L27 317 | L22 318 | R22 319 | R74 320 | L188 321 | L30 322 | R11 323 | L32 324 | R61 325 | L63 326 | R95 327 | R48 328 | R32 329 | R92 330 | R51 331 | R305 332 | L56 333 | R12 334 | R78 335 | L90 336 | R47 337 | L47 338 | R165 339 | R35 340 | R65 341 | L65 342 | R642 343 | L91 344 | L51 345 | R5 346 | R38 347 | L126 348 | L72 349 | L48 350 | R4 351 | L12 352 | R58 353 | R53 354 | L12 355 | R12 356 | L2 357 | R34 358 | R55 359 | R79 360 | R49 361 | L26 362 | L24 363 | R35 364 | L28 365 | L98 366 | R58 367 | L57 368 | R89 369 | L64 370 | R80 371 | R65 372 | L88 373 | L99 374 | L58 375 | R80 376 | L80 377 | R92 378 | L10 379 | L71 380 | R89 381 | R36 382 | R64 383 | L54 384 | L68 385 | L66 386 | L12 387 | R63 388 | L963 389 | L98 390 | R98 391 | L10 392 | L66 393 | R78 394 | L4 395 | R18 396 | L94 397 | R38 398 | R140 399 | R7 400 | L7 401 | R591 402 | L84 403 | R93 404 | L363 405 | R63 406 | R47 407 | L47 408 | L767 409 | L33 410 | R42 411 | L74 412 | L73 413 | R5 414 | R7 415 | L55 416 | R48 417 | L924 418 | R30 419 | L6 420 | R47 421 | R53 422 | L94 423 | R174 424 | L680 425 | R8 426 | R6 427 | L90 428 | L69 429 | L82 430 | R759 431 | R57 432 | R81 433 | L72 434 | R82 435 | L69 436 | L11 437 | R32 438 | R1 439 | R67 440 | L71 441 | L70 442 | R841 443 | R66 444 | L732 445 | L34 446 | L71 447 | R35 448 | R72 449 | R64 450 | R30 451 | R81 452 | R89 453 | L59 454 | R60 455 | L1 456 | R18 457 | L74 458 | L544 459 | L344 460 | L85 461 | R14 462 | L55 463 | L730 464 | L84 465 | L48 466 | R53 467 | L21 468 | L1 469 | R86 470 | R29 471 | L14 472 | L27 473 | R589 474 | R80 475 | R21 476 | R33 477 | R54 478 | L338 479 | L912 480 | R33 481 | R67 482 | L65 483 | R19 484 | R83 485 | R41 486 | L51 487 | R79 488 | R33 489 | L75 490 | R336 491 | R91 492 | R39 493 | R24 494 | L34 495 | R64 496 | R271 497 | L69 498 | L586 499 | R43 500 | R77 501 | L57 502 | R24 503 | R13 504 | R93 505 | L53 506 | L502 507 | R82 508 | L20 509 | L90 510 | R19 511 | R16 512 | R55 513 | L19 514 | R15 515 | R7 516 | L503 517 | L33 518 | L8 519 | L29 520 | L60 521 | L699 522 | R90 523 | L61 524 | R18 525 | R66 526 | L387 527 | L20 528 | L377 529 | L66 530 | R66 531 | L336 532 | R36 533 | L86 534 | R15 535 | R71 536 | L31 537 | L17 538 | L29 539 | L63 540 | L67 541 | R7 542 | R692 543 | L92 544 | L38 545 | R238 546 | L8 547 | L51 548 | L376 549 | R25 550 | L90 551 | L64 552 | R48 553 | L622 554 | R64 555 | L26 556 | R36 557 | L936 558 | R95 559 | R505 560 | R21 561 | L21 562 | R810 563 | L48 564 | L62 565 | L98 566 | L58 567 | R56 568 | L69 569 | R169 570 | R41 571 | L41 572 | L42 573 | R8 574 | R34 575 | R594 576 | R16 577 | L29 578 | L15 579 | R34 580 | L25 581 | L68 582 | L18 583 | R5 584 | R61 585 | R55 586 | R16 587 | R561 588 | R13 589 | R51 590 | L37 591 | R40 592 | R46 593 | R25 594 | R75 595 | R13 596 | L13 597 | R82 598 | L93 599 | L30 600 | R261 601 | L20 602 | R2 603 | R49 604 | L31 605 | R38 606 | R91 607 | R561 608 | R971 609 | R19 610 | R71 611 | R29 612 | L25 613 | R10 614 | R17 615 | L987 616 | R85 617 | R96 618 | R282 619 | L70 620 | L69 621 | R61 622 | R88 623 | R68 624 | L54 625 | R87 626 | L24 627 | R8 628 | L73 629 | R233 630 | R657 631 | R52 632 | L53 633 | L49 634 | L340 635 | R37 636 | L78 637 | L72 638 | R813 639 | L88 640 | R88 641 | R65 642 | L34 643 | R353 644 | R79 645 | L40 646 | R77 647 | L45 648 | R108 649 | R29 650 | L14 651 | L13 652 | L77 653 | L7 654 | L11 655 | R39 656 | L9 657 | L4 658 | L96 659 | R48 660 | R29 661 | L60 662 | R883 663 | L3 664 | L186 665 | R87 666 | L67 667 | R24 668 | R47 669 | R20 670 | R32 671 | L54 672 | R18 673 | L18 674 | L49 675 | R49 676 | L27 677 | L35 678 | R85 679 | L445 680 | L47 681 | R44 682 | L908 683 | R42 684 | R19 685 | L32 686 | R22 687 | R25 688 | L43 689 | L47 690 | R63 691 | L64 692 | R145 693 | L97 694 | R80 695 | R720 696 | R11 697 | R51 698 | R96 699 | R353 700 | R832 701 | L26 702 | R83 703 | R87 704 | R32 705 | R81 706 | R88 707 | L668 708 | L54 709 | R434 710 | R490 711 | R31 712 | R69 713 | L372 714 | L84 715 | R34 716 | L468 717 | R33 718 | L33 719 | L79 720 | L421 721 | R73 722 | R45 723 | L87 724 | L183 725 | L580 726 | L17 727 | R49 728 | R91 729 | L91 730 | R40 731 | R22 732 | R99 733 | R717 734 | L78 735 | R111 736 | R17 737 | L28 738 | R2 739 | L528 740 | R613 741 | L8 742 | L79 743 | L86 744 | R2 745 | L34 746 | R26 747 | R92 748 | L904 749 | R2 750 | L69 751 | R15 752 | L727 753 | R961 754 | R890 755 | R7 756 | R318 757 | L93 758 | L8 759 | L19 760 | L343 761 | R37 762 | R64 763 | R37 764 | L968 765 | R424 766 | L24 767 | L51 768 | R59 769 | L31 770 | R23 771 | R94 772 | L88 773 | L55 774 | R949 775 | R33 776 | R15 777 | L78 778 | R30 779 | L12 780 | R712 781 | L64 782 | L36 783 | L13 784 | L87 785 | L28 786 | L85 787 | L854 788 | L63 789 | L33 790 | R25 791 | R181 792 | R57 793 | L1 794 | R1 795 | R155 796 | L55 797 | L99 798 | L33 799 | L109 800 | L65 801 | L94 802 | L99 803 | R99 804 | R10 805 | R28 806 | R63 807 | R99 808 | L7 809 | L93 810 | L43 811 | R43 812 | R31 813 | L58 814 | L673 815 | L183 816 | L17 817 | R43 818 | R47 819 | R10 820 | R20 821 | R2 822 | L22 823 | L55 824 | L445 825 | L13 826 | L887 827 | R4 828 | R26 829 | L825 830 | R45 831 | R68 832 | R40 833 | R227 834 | R11 835 | R116 836 | L79 837 | R85 838 | R682 839 | R66 840 | L14 841 | R14 842 | L66 843 | L86 844 | R886 845 | L72 846 | R80 847 | L96 848 | L6 849 | R72 850 | L27 851 | L8 852 | L43 853 | R97 854 | L78 855 | L19 856 | L21 857 | L26 858 | L17 859 | R64 860 | R62 861 | R72 862 | L34 863 | L85 864 | L19 865 | R13 866 | R91 867 | L15 868 | L5 869 | R53 870 | R210 871 | R362 872 | L197 873 | R47 874 | R28 875 | L47 876 | L46 877 | R10 878 | L37 879 | R757 880 | R70 881 | L459 882 | L155 883 | L53 884 | L73 885 | L50 886 | L5 887 | L58 888 | R24 889 | R966 890 | L27 891 | R104 892 | R77 893 | L29 894 | L52 895 | R36 896 | R64 897 | L628 898 | L72 899 | R74 900 | L52 901 | L58 902 | R336 903 | R495 904 | R83 905 | L36 906 | R87 907 | L58 908 | L29 909 | L42 910 | R55 911 | R48 912 | R97 913 | R126 914 | L71 915 | L70 916 | L12 917 | L36 918 | L972 919 | L65 920 | R28 921 | R2 922 | L30 923 | L76 924 | R67 925 | R56 926 | L69 927 | R22 928 | L15 929 | R12 930 | L25 931 | R34 932 | R56 933 | L70 934 | R8 935 | L44 936 | R44 937 | L89 938 | L14 939 | L98 940 | L499 941 | R61 942 | L40 943 | R10 944 | L384 945 | L83 946 | R36 947 | L6 948 | R42 949 | R323 950 | R63 951 | R78 952 | L99 953 | L98 954 | R958 955 | L69 956 | L92 957 | R93 958 | R55 959 | R58 960 | R94 961 | L564 962 | R843 963 | R28 964 | R97 965 | R84 966 | R207 967 | L42 968 | L977 969 | L76 970 | L63 971 | L91 972 | L646 973 | L949 974 | R49 975 | L46 976 | R89 977 | R57 978 | R44 979 | L978 980 | L3 981 | L10 982 | L53 983 | R30 984 | L30 985 | L69 986 | R769 987 | R80 988 | L87 989 | L6 990 | L47 991 | L70 992 | R96 993 | R87 994 | R47 995 | L56 996 | L55 997 | R11 998 | R16 999 | R84 1000 | L8 1001 | L74 1002 | L18 1003 | L55 1004 | L54 1005 | R9 1006 | L42 1007 | R42 1008 | L86 1009 | R8 1010 | L22 1011 | R853 1012 | R27 1013 | L780 1014 | R9 1015 | R91 1016 | R54 1017 | L315 1018 | R46 1019 | R8 1020 | L44 1021 | L456 1022 | L93 1023 | R87 1024 | R43 1025 | R14 1026 | R956 1027 | L29 1028 | L971 1029 | L658 1030 | R16 1031 | L74 1032 | R86 1033 | R262 1034 | R29 1035 | L56 1036 | L19 1037 | R43 1038 | R41 1039 | L70 1040 | L69 1041 | R69 1042 | R71 1043 | R29 1044 | L63 1045 | L37 1046 | L50 1047 | R944 1048 | R6 1049 | L41 1050 | R74 1051 | L133 1052 | L13 1053 | L25 1054 | R938 1055 | L4 1056 | R555 1057 | R463 1058 | L80 1059 | R679 1060 | L48 1061 | L165 1062 | L702 1063 | L94 1064 | R96 1065 | R53 1066 | R495 1067 | R52 1068 | R22 1069 | R78 1070 | R719 1071 | L19 1072 | R96 1073 | R224 1074 | R80 1075 | L20 1076 | L74 1077 | R614 1078 | R98 1079 | R82 1080 | L833 1081 | L67 1082 | R43 1083 | R30 1084 | L4 1085 | R9 1086 | R22 1087 | L95 1088 | R62 1089 | L555 1090 | L357 1091 | R80 1092 | L53 1093 | R82 1094 | L86 1095 | L83 1096 | L18 1097 | R623 1098 | L24 1099 | L676 1100 | L84 1101 | R88 1102 | L22 1103 | R43 1104 | R75 1105 | L43 1106 | L768 1107 | L66 1108 | L95 1109 | L28 1110 | R77 1111 | L90 1112 | L506 1113 | R19 1114 | R440 1115 | R59 1116 | R93 1117 | L3 1118 | R11 1119 | L58 1120 | L740 1121 | R7 1122 | L63 1123 | L58 1124 | R12 1125 | R624 1126 | L24 1127 | R333 1128 | L40 1129 | L93 1130 | R10 1131 | R90 1132 | L37 1133 | R48 1134 | R89 1135 | L56 1136 | L920 1137 | L24 1138 | R81 1139 | R19 1140 | L3 1141 | R3 1142 | L94 1143 | R94 1144 | R7 1145 | L2 1146 | R95 1147 | L28 1148 | R8 1149 | R648 1150 | L28 1151 | R89 1152 | R25 1153 | L822 1154 | R52 1155 | L854 1156 | R46 1157 | R2 1158 | R40 1159 | L40 1160 | R62 1161 | L16 1162 | L84 1163 | L33 1164 | R60 1165 | L605 1166 | R97 1167 | L45 1168 | R59 1169 | L733 1170 | R13 1171 | R87 1172 | R56 1173 | R31 1174 | L38 1175 | R51 1176 | L81 1177 | R81 1178 | R84 1179 | L138 1180 | L46 1181 | R24 1182 | R260 1183 | R95 1184 | L29 1185 | R50 1186 | R813 1187 | R37 1188 | R50 1189 | L70 1190 | L30 1191 | R6 1192 | L96 1193 | L710 1194 | R94 1195 | R99 1196 | L52 1197 | L41 1198 | R93 1199 | R7 1200 | L18 1201 | L54 1202 | L628 1203 | L80 1204 | L16 1205 | L97 1206 | L7 1207 | L178 1208 | R436 1209 | L58 1210 | R37 1211 | L73 1212 | R25 1213 | R11 1214 | L55 1215 | R36 1216 | R92 1217 | R8 1218 | R2 1219 | L83 1220 | R29 1221 | R49 1222 | L10 1223 | L860 1224 | L8 1225 | L52 1226 | L53 1227 | R5 1228 | L99 1229 | R20 1230 | R27 1231 | L95 1232 | R89 1233 | R79 1234 | L21 1235 | R1 1236 | R56 1237 | R43 1238 | R78 1239 | R22 1240 | L43 1241 | R5 1242 | R11 1243 | R99 1244 | L43 1245 | L55 1246 | R41 1247 | R30 1248 | L55 1249 | R285 1250 | R84 1251 | R86 1252 | R21 1253 | R816 1254 | R71 1255 | L53 1256 | L84 1257 | L16 1258 | R71 1259 | R50 1260 | R79 1261 | R90 1262 | R310 1263 | L70 1264 | L175 1265 | R42 1266 | L45 1267 | L871 1268 | L51 1269 | R70 1270 | R8 1271 | L2 1272 | R60 1273 | R34 1274 | L29 1275 | R80 1276 | L94 1277 | L675 1278 | L45 1279 | R63 1280 | R25 1281 | R75 1282 | L61 1283 | L48 1284 | R75 1285 | R97 1286 | R47 1287 | R90 1288 | L99 1289 | L1 1290 | R769 1291 | L15 1292 | R34 1293 | R99 1294 | L387 1295 | R23 1296 | R96 1297 | R81 1298 | R16 1299 | L11 1300 | R396 1301 | R13 1302 | L14 1303 | R63 1304 | R38 1305 | R99 1306 | R18 1307 | R611 1308 | R140 1309 | L62 1310 | L82 1311 | R621 1312 | R79 1313 | R48 1314 | R27 1315 | R43 1316 | L20 1317 | L32 1318 | R9 1319 | R16 1320 | R84 1321 | R52 1322 | L63 1323 | R11 1324 | L26 1325 | L12 1326 | L62 1327 | L88 1328 | R73 1329 | R955 1330 | R60 1331 | L72 1332 | R353 1333 | R819 1334 | L70 1335 | R27 1336 | L57 1337 | L66 1338 | L50 1339 | L90 1340 | R6 1341 | L15 1342 | L785 1343 | L89 1344 | R89 1345 | L88 1346 | L198 1347 | R95 1348 | L98 1349 | R53 1350 | L664 1351 | L11 1352 | L89 1353 | R20 1354 | R80 1355 | L17 1356 | L81 1357 | L187 1358 | L83 1359 | R62 1360 | R88 1361 | R477 1362 | L259 1363 | L80 1364 | R80 1365 | L63 1366 | R363 1367 | L362 1368 | L38 1369 | L4 1370 | R73 1371 | R31 1372 | L90 1373 | L86 1374 | R776 1375 | L43 1376 | R13 1377 | R25 1378 | L65 1379 | L91 1380 | L857 1381 | L38 1382 | R47 1383 | R909 1384 | R56 1385 | R156 1386 | R72 1387 | L90 1388 | R84 1389 | R22 1390 | L40 1391 | R44 1392 | L544 1393 | L79 1394 | R57 1395 | L176 1396 | L49 1397 | L842 1398 | R29 1399 | R816 1400 | L16 1401 | R14 1402 | L63 1403 | L21 1404 | R25 1405 | R45 1406 | R30 1407 | L30 1408 | R78 1409 | R22 1410 | L11 1411 | L89 1412 | R46 1413 | L35 1414 | R89 1415 | L93 1416 | L23 1417 | R69 1418 | R33 1419 | R12 1420 | L286 1421 | R88 1422 | L93 1423 | R85 1424 | R9 1425 | R87 1426 | R12 1427 | R92 1428 | R64 1429 | R454 1430 | R17 1431 | R2 1432 | R71 1433 | R78 1434 | R41 1435 | R581 1436 | L525 1437 | R25 1438 | R94 1439 | L94 1440 | L21 1441 | L79 1442 | L22 1443 | R94 1444 | L59 1445 | L813 1446 | L70 1447 | L63 1448 | R933 1449 | R43 1450 | L43 1451 | L75 1452 | L25 1453 | L363 1454 | R63 1455 | L88 1456 | L612 1457 | R62 1458 | L3 1459 | L59 1460 | L609 1461 | L791 1462 | R46 1463 | R65 1464 | L8 1465 | L9 1466 | L45 1467 | R11 1468 | R57 1469 | R245 1470 | L784 1471 | R72 1472 | R47 1473 | R13 1474 | L910 1475 | R97 1476 | L97 1477 | R96 1478 | L87 1479 | L97 1480 | L12 1481 | L81 1482 | L974 1483 | R55 1484 | R51 1485 | R40 1486 | R23 1487 | R180 1488 | L97 1489 | L91 1490 | R21 1491 | R967 1492 | L315 1493 | R51 1494 | L30 1495 | R70 1496 | L93 1497 | L49 1498 | L71 1499 | R491 1500 | L7 1501 | R59 1502 | R67 1503 | L56 1504 | L56 1505 | L761 1506 | L3 1507 | L491 1508 | L41 1509 | R47 1510 | L6 1511 | R95 1512 | L6 1513 | R15 1514 | R96 1515 | L79 1516 | R991 1517 | R94 1518 | R605 1519 | R9 1520 | R80 1521 | R79 1522 | R17 1523 | R869 1524 | R35 1525 | L62 1526 | R762 1527 | L238 1528 | L504 1529 | R42 1530 | R921 1531 | L86 1532 | R340 1533 | L975 1534 | L13 1535 | R13 1536 | R829 1537 | R10 1538 | L7 1539 | R68 1540 | R975 1541 | L32 1542 | R35 1543 | L86 1544 | R71 1545 | R37 1546 | L82 1547 | L85 1548 | L40 1549 | L6 1550 | L187 1551 | L51 1552 | L23 1553 | L626 1554 | R88 1555 | R69 1556 | L91 1557 | L6 1558 | L9 1559 | L34 1560 | R28 1561 | L734 1562 | R71 1563 | R18 1564 | L10 1565 | L876 1566 | R24 1567 | L38 1568 | L843 1569 | L39 1570 | L384 1571 | L34 1572 | R599 1573 | L99 1574 | L31 1575 | R31 1576 | R67 1577 | R33 1578 | L375 1579 | R32 1580 | R89 1581 | L46 1582 | L23 1583 | R476 1584 | R88 1585 | R94 1586 | L93 1587 | R75 1588 | R96 1589 | R99 1590 | L12 1591 | L8 1592 | R808 1593 | L31 1594 | R91 1595 | L460 1596 | L89 1597 | L61 1598 | L324 1599 | L88 1600 | L636 1601 | L6 1602 | L4 1603 | R8 1604 | R95 1605 | L30 1606 | L65 1607 | R870 1608 | L39 1609 | L81 1610 | R47 1611 | L97 1612 | L30 1613 | L349 1614 | R410 1615 | R16 1616 | R181 1617 | R40 1618 | R710 1619 | L68 1620 | L10 1621 | L47 1622 | L70 1623 | L183 1624 | L18 1625 | R18 1626 | R57 1627 | L64 1628 | L55 1629 | L6 1630 | L32 1631 | L50 1632 | R57 1633 | R79 1634 | R4 1635 | L390 1636 | R94 1637 | L372 1638 | R855 1639 | L63 1640 | L7 1641 | R491 1642 | R88 1643 | L6 1644 | L704 1645 | R20 1646 | L96 1647 | R33 1648 | L27 1649 | R261 1650 | L129 1651 | L87 1652 | L58 1653 | R2 1654 | R32 1655 | L319 1656 | R72 1657 | L22 1658 | R172 1659 | R75 1660 | L22 1661 | R88 1662 | L71 1663 | L19 1664 | L81 1665 | L19 1666 | L81 1667 | L30 1668 | L70 1669 | R37 1670 | R63 1671 | L25 1672 | L75 1673 | R70 1674 | R125 1675 | R353 1676 | R954 1677 | R38 1678 | L38 1679 | L58 1680 | R38 1681 | R90 1682 | L872 1683 | L317 1684 | L39 1685 | R477 1686 | R79 1687 | R43 1688 | L338 1689 | L79 1690 | R474 1691 | L45 1692 | L98 1693 | R43 1694 | L95 1695 | L5 1696 | L56 1697 | L644 1698 | R1 1699 | R61 1700 | L55 1701 | L29 1702 | L29 1703 | R56 1704 | R692 1705 | R58 1706 | L73 1707 | R86 1708 | L30 1709 | L54 1710 | R85 1711 | L69 1712 | L606 1713 | R6 1714 | L60 1715 | L77 1716 | L14 1717 | R51 1718 | R16 1719 | R5 1720 | L35 1721 | R14 1722 | L866 1723 | R66 1724 | L3 1725 | L57 1726 | R99 1727 | L39 1728 | L50 1729 | L42 1730 | R697 1731 | L4 1732 | R70 1733 | R31 1734 | L88 1735 | L35 1736 | R58 1737 | L796 1738 | R44 1739 | L22 1740 | L63 1741 | R1 1742 | L598 1743 | L66 1744 | L37 1745 | L617 1746 | R17 1747 | R92 1748 | R426 1749 | L98 1750 | L45 1751 | R816 1752 | L91 1753 | L49 1754 | L697 1755 | L57 1756 | L93 1757 | R206 1758 | R90 1759 | R891 1760 | R9 1761 | R97 1762 | L19 1763 | R122 1764 | L34 1765 | R852 1766 | R76 1767 | R960 1768 | R24 1769 | R31 1770 | R84 1771 | L93 1772 | L51 1773 | R551 1774 | R422 1775 | L83 1776 | R83 1777 | R25 1778 | R192 1779 | R161 1780 | L8 1781 | L7 1782 | R59 1783 | R56 1784 | L384 1785 | L16 1786 | L20 1787 | L405 1788 | L75 1789 | L90 1790 | R390 1791 | L46 1792 | L65 1793 | R94 1794 | L56 1795 | R24 1796 | R49 1797 | L582 1798 | L18 1799 | L656 1800 | R43 1801 | R199 1802 | L60 1803 | R99 1804 | L93 1805 | L568 1806 | L64 1807 | R76 1808 | R85 1809 | R34 1810 | L95 1811 | L450 1812 | L850 1813 | L44 1814 | R62 1815 | R57 1816 | L63 1817 | R63 1818 | L22 1819 | L18 1820 | L935 1821 | L167 1822 | R67 1823 | L6 1824 | L894 1825 | R39 1826 | R57 1827 | R55 1828 | R44 1829 | R51 1830 | L348 1831 | L52 1832 | R22 1833 | L31 1834 | L14 1835 | L16 1836 | R43 1837 | R9 1838 | L43 1839 | L81 1840 | R73 1841 | R47 1842 | L555 1843 | L51 1844 | R139 1845 | L88 1846 | R891 1847 | L392 1848 | R43 1849 | R45 1850 | R19 1851 | R988 1852 | R86 1853 | R20 1854 | L49 1855 | L51 1856 | R10 1857 | L67 1858 | R76 1859 | R81 1860 | R797 1861 | L97 1862 | R204 1863 | L4 1864 | L178 1865 | R13 1866 | L635 1867 | R26 1868 | L8 1869 | R82 1870 | L10 1871 | L290 1872 | R75 1873 | L75 1874 | L70 1875 | R792 1876 | R78 1877 | R28 1878 | L377 1879 | L51 1880 | R9 1881 | R73 1882 | R664 1883 | R83 1884 | L41 1885 | L22 1886 | R34 1887 | L644 1888 | R14 1889 | R37 1890 | L796 1891 | R89 1892 | L14 1893 | R14 1894 | R99 1895 | L2 1896 | R3 1897 | R75 1898 | R731 1899 | R8 1900 | L14 1901 | R15 1902 | R85 1903 | L587 1904 | R87 1905 | L58 1906 | L11 1907 | R89 1908 | R680 1909 | L101 1910 | R6 1911 | L79 1912 | R82 1913 | R24 1914 | R68 1915 | R36 1916 | R99 1917 | R84 1918 | L19 1919 | R18 1920 | L13 1921 | R13 1922 | R90 1923 | L8 1924 | L53 1925 | R730 1926 | R90 1927 | L41 1928 | L26 1929 | R87 1930 | L29 1931 | R42 1932 | R928 1933 | L9 1934 | R68 1935 | R89 1936 | L76 1937 | L261 1938 | R61 1939 | R40 1940 | L80 1941 | L25 1942 | R6 1943 | L91 1944 | R51 1945 | L29 1946 | R28 1947 | R83 1948 | R557 1949 | R53 1950 | R64 1951 | L57 1952 | R95 1953 | R19 1954 | L60 1955 | R46 1956 | L94 1957 | R63 1958 | R10 1959 | L79 1960 | L3 1961 | L97 1962 | R17 1963 | R94 1964 | R489 1965 | L27 1966 | R481 1967 | L45 1968 | L842 1969 | R631 1970 | R45 1971 | R23 1972 | L66 1973 | R76 1974 | L970 1975 | L6 1976 | R67 1977 | L67 1978 | R39 1979 | L63 1980 | L76 1981 | R7 1982 | L511 1983 | L96 1984 | R23 1985 | R669 1986 | R75 1987 | L67 1988 | R962 1989 | L64 1990 | L176 1991 | L93 1992 | R76 1993 | L417 1994 | L56 1995 | L301 1996 | L531 1997 | R81 1998 | R88 1999 | L48 2000 | R379 2001 | L39 2002 | R39 2003 | L532 2004 | L17 2005 | L32 2006 | R81 2007 | R46 2008 | L84 2009 | L62 2010 | L13 2011 | R129 2012 | R5 2013 | L717 2014 | L304 2015 | R44 2016 | R56 2017 | L35 2018 | L27 2019 | L20 2020 | R35 2021 | R85 2022 | L438 2023 | L93 2024 | R359 2025 | L266 2026 | L87 2027 | R82 2028 | L88 2029 | R41 2030 | R52 2031 | L611 2032 | L389 2033 | R233 2034 | L33 2035 | R46 2036 | R54 2037 | R6 2038 | L46 2039 | L775 2040 | L33 2041 | R836 2042 | L88 2043 | L47 2044 | R38 2045 | L4 2046 | L387 2047 | L833 2048 | R326 2049 | L93 2050 | R98 2051 | L354 2052 | R56 2053 | R26 2054 | R74 2055 | R527 2056 | R487 2057 | R119 2058 | L21 2059 | L790 2060 | R34 2061 | R644 2062 | R3 2063 | R41 2064 | R643 2065 | L87 2066 | R872 2067 | R28 2068 | L343 2069 | R766 2070 | L123 2071 | R91 2072 | R59 2073 | L82 2074 | L186 2075 | R45 2076 | R71 2077 | R52 2078 | L272 2079 | R870 2080 | L61 2081 | R2 2082 | L97 2083 | L92 2084 | L79 2085 | L52 2086 | R31 2087 | R53 2088 | L53 2089 | L46 2090 | R90 2091 | L44 2092 | L774 2093 | R74 2094 | L59 2095 | L15 2096 | L812 2097 | L14 2098 | R67 2099 | R23 2100 | R610 2101 | L4 2102 | R4 2103 | L30 2104 | R91 2105 | R99 2106 | L60 2107 | L36 2108 | R13 2109 | L4 2110 | L73 2111 | R422 2112 | R533 2113 | L61 2114 | R6 2115 | L894 2116 | R39 2117 | L45 2118 | L45 2119 | R73 2120 | L28 2121 | L18 2122 | L82 2123 | R72 2124 | R28 2125 | R22 2126 | R59 2127 | L52 2128 | R43 2129 | L83 2130 | R63 2131 | L52 2132 | L10 2133 | R78 2134 | L68 2135 | L24 2136 | R24 2137 | R53 2138 | L53 2139 | L6 2140 | L41 2141 | R47 2142 | L57 2143 | L11 2144 | R68 2145 | L247 2146 | R93 2147 | R43 2148 | R43 2149 | L5 2150 | R51 2151 | R66 2152 | L444 2153 | L63 2154 | R75 2155 | R14 2156 | L79 2157 | R1 2158 | L838 2159 | R90 2160 | R12 2161 | L173 2162 | R27 2163 | L78 2164 | L97 2165 | L5 2166 | R14 2167 | L98 2168 | L73 2169 | L51 2170 | L78 2171 | L78 2172 | R62 2173 | R58 2174 | R90 2175 | R7 2176 | R9 2177 | R94 2178 | R25 2179 | R57 2180 | R96 2181 | L91 2182 | L81 2183 | L79 2184 | R99 2185 | L68 2186 | R33 2187 | R80 2188 | L50 2189 | R88 2190 | L1 2191 | L93 2192 | R343 2193 | R85 2194 | R7 2195 | L92 2196 | L42 2197 | L75 2198 | R79 2199 | L26 2200 | R264 2201 | L63 2202 | R37 2203 | L630 2204 | R77 2205 | R14 2206 | L39 2207 | R555 2208 | R36 2209 | L87 2210 | R1 2211 | R83 2212 | L240 2213 | R99 2214 | L27 2215 | R987 2216 | R97 2217 | L3 2218 | L13 2219 | L84 2220 | R75 2221 | R50 2222 | R449 2223 | L585 2224 | L33 2225 | R64 2226 | R12 2227 | L32 2228 | L321 2229 | R53 2230 | R10 2231 | R58 2232 | L88 2233 | L12 2234 | L199 2235 | R99 2236 | R99 2237 | L31 2238 | R632 2239 | L49 2240 | R70 2241 | R82 2242 | L703 2243 | L187 2244 | L86 2245 | R44 2246 | L10 2247 | R339 2248 | R841 2249 | L81 2250 | L60 2251 | R891 2252 | R39 2253 | R5 2254 | L3 2255 | L283 2256 | R51 2257 | L456 2258 | L6 2259 | L87 2260 | R165 2261 | L97 2262 | R15 2263 | R86 2264 | R80 2265 | R12 2266 | R88 2267 | R65 2268 | R17 2269 | L725 2270 | R43 2271 | R332 2272 | L20 2273 | R816 2274 | R145 2275 | L73 2276 | R125 2277 | L80 2278 | R29 2279 | R26 2280 | L42 2281 | L58 2282 | L620 2283 | L76 2284 | R33 2285 | L17 2286 | L42 2287 | L378 2288 | L20 2289 | R33 2290 | L13 2291 | L86 2292 | L834 2293 | L91 2294 | L55 2295 | L59 2296 | R21 2297 | R966 2298 | L73 2299 | R11 2300 | R725 2301 | R75 2302 | L2 2303 | R2 2304 | R99 2305 | R18 2306 | R80 2307 | L97 2308 | R42 2309 | L42 2310 | L66 2311 | R43 2312 | R51 2313 | R2 2314 | L30 2315 | L55 2316 | L868 2317 | L15 2318 | R38 2319 | R324 2320 | L33 2321 | L65 2322 | R74 2323 | L78 2324 | L22 2325 | L882 2326 | R82 2327 | L61 2328 | R293 2329 | L40 2330 | R8 2331 | L51 2332 | L49 2333 | L96 2334 | L4 2335 | L55 2336 | R74 2337 | L657 2338 | R27 2339 | R92 2340 | R5 2341 | L86 2342 | R50 2343 | R8 2344 | R42 2345 | R93 2346 | L483 2347 | L10 2348 | R82 2349 | L247 2350 | L93 2351 | R58 2352 | L502 2353 | R37 2354 | R65 2355 | L138 2356 | R988 2357 | L50 2358 | R32 2359 | R94 2360 | R74 2361 | L28 2362 | L44 2363 | L876 2364 | L1 2365 | L51 2366 | L15 2367 | R84 2368 | L69 2369 | L17 2370 | R76 2371 | R21 2372 | L80 2373 | L19 2374 | R87 2375 | L22 2376 | R74 2377 | R80 2378 | R33 2379 | R87 2380 | R770 2381 | L70 2382 | L20 2383 | L92 2384 | L26 2385 | L98 2386 | L84 2387 | R98 2388 | L34 2389 | R27 2390 | R9 2391 | L79 2392 | L21 2393 | L90 2394 | L190 2395 | L62 2396 | L67 2397 | R538 2398 | R58 2399 | R2 2400 | L89 2401 | L973 2402 | L27 2403 | R44 2404 | L44 2405 | R558 2406 | L362 2407 | R97 2408 | L67 2409 | R71 2410 | R3 2411 | L23 2412 | R748 2413 | L625 2414 | L50 2415 | R50 2416 | L69 2417 | R69 2418 | R15 2419 | L996 2420 | L19 2421 | L979 2422 | L122 2423 | R1 2424 | R656 2425 | R330 2426 | L29 2427 | L94 2428 | R37 2429 | L26 2430 | L74 2431 | L93 2432 | R20 2433 | R58 2434 | L42 2435 | R21 2436 | L264 2437 | L3 2438 | L963 2439 | R25 2440 | L758 2441 | L57 2442 | L44 2443 | R30 2444 | R6 2445 | L19 2446 | R64 2447 | R2 2448 | L83 2449 | L84 2450 | L96 2451 | L75 2452 | R55 2453 | R44 2454 | L92 2455 | L76 2456 | R435 2457 | R289 2458 | R99 2459 | R1 2460 | L178 2461 | R78 2462 | L231 2463 | L69 2464 | L35 2465 | R232 2466 | R8 2467 | R7 2468 | L84 2469 | L22 2470 | L6 2471 | R90 2472 | R10 2473 | L968 2474 | R368 2475 | L87 2476 | R76 2477 | L32 2478 | L157 2479 | R373 2480 | R572 2481 | R90 2482 | R5 2483 | L46 2484 | R24 2485 | R72 2486 | L90 2487 | L63 2488 | L63 2489 | R26 2490 | R727 2491 | R52 2492 | R221 2493 | L22 2494 | L18 2495 | L67 2496 | R824 2497 | L17 2498 | L78 2499 | L89 2500 | R17 2501 | R50 2502 | L355 2503 | L94 2504 | L51 2505 | L68 2506 | R663 2507 | L76 2508 | L88 2509 | L83 2510 | R52 2511 | R48 2512 | L48 2513 | R40 2514 | R27 2515 | L67 2516 | R433 2517 | L83 2518 | L37 2519 | R87 2520 | L28 2521 | L77 2522 | L18 2523 | R73 2524 | L8 2525 | R44 2526 | R22 2527 | L91 2528 | R83 2529 | L63 2530 | L37 2531 | L4 2532 | L32 2533 | L64 2534 | L137 2535 | R37 2536 | R25 2537 | R81 2538 | R94 2539 | R54 2540 | L76 2541 | R11 2542 | L189 2543 | L78 2544 | L22 2545 | L10 2546 | L345 2547 | R28 2548 | L32 2549 | R65 2550 | R25 2551 | R14 2552 | L45 2553 | L145 2554 | R20 2555 | L62 2556 | R19 2557 | L72 2558 | R64 2559 | L24 2560 | L9 2561 | R9 2562 | R5 2563 | R149 2564 | R512 2565 | L90 2566 | R524 2567 | R815 2568 | R885 2569 | R87 2570 | L44 2571 | R38 2572 | R19 2573 | L81 2574 | R19 2575 | R62 2576 | R83 2577 | R17 2578 | L921 2579 | R62 2580 | L63 2581 | L78 2582 | R41 2583 | L41 2584 | L544 2585 | L22 2586 | L34 2587 | R97 2588 | R91 2589 | R20 2590 | R92 2591 | L88 2592 | L50 2593 | R38 2594 | R98 2595 | L98 2596 | R10 2597 | L310 2598 | L67 2599 | L33 2600 | R81 2601 | R89 2602 | R7 2603 | R70 2604 | L71 2605 | R99 2606 | R25 2607 | L55 2608 | R255 2609 | L20 2610 | R28 2611 | L66 2612 | L88 2613 | R7 2614 | L279 2615 | R818 2616 | R9 2617 | L82 2618 | L76 2619 | L78 2620 | L73 2621 | R8 2622 | L8 2623 | R787 2624 | R20 2625 | L92 2626 | R62 2627 | R623 2628 | L40 2629 | L60 2630 | L34 2631 | R34 2632 | L61 2633 | L139 2634 | R76 2635 | R390 2636 | R24 2637 | L90 2638 | R542 2639 | L53 2640 | R74 2641 | R1 2642 | R84 2643 | L48 2644 | L41 2645 | L45 2646 | L14 2647 | L32 2648 | R32 2649 | R59 2650 | L21 2651 | L38 2652 | L301 2653 | L399 2654 | L404 2655 | L92 2656 | L4 2657 | R70 2658 | R73 2659 | R56 2660 | R901 2661 | R346 2662 | R71 2663 | L17 2664 | R33 2665 | R67 2666 | L81 2667 | L19 2668 | R36 2669 | R18 2670 | L54 2671 | R981 2672 | L3 2673 | R840 2674 | L91 2675 | L27 2676 | R54 2677 | L87 2678 | R33 2679 | R88 2680 | R19 2681 | L22 2682 | R38 2683 | L90 2684 | R11 2685 | L44 2686 | L73 2687 | R737 2688 | L64 2689 | L92 2690 | L8 2691 | R7 2692 | L322 2693 | R948 2694 | R67 2695 | R45 2696 | R5 2697 | R63 2698 | R3 2699 | L416 2700 | L9 2701 | L91 2702 | R41 2703 | L341 2704 | L35 2705 | R35 2706 | L390 2707 | R90 2708 | R20 2709 | L20 2710 | L78 2711 | R35 2712 | R96 2713 | L48 2714 | L59 2715 | R169 2716 | L22 2717 | R607 2718 | R82 2719 | L73 2720 | R91 2721 | L881 2722 | L19 2723 | R55 2724 | R68 2725 | L23 2726 | L844 2727 | L579 2728 | R131 2729 | R59 2730 | L63 2731 | L6 2732 | L58 2733 | L75 2734 | R17 2735 | R5 2736 | L5 2737 | L579 2738 | R20 2739 | L658 2740 | R14 2741 | L659 2742 | L432 2743 | L80 2744 | R47 2745 | R9 2746 | L53 2747 | R503 2748 | L89 2749 | L25 2750 | R6 2751 | L61 2752 | L68 2753 | R23 2754 | R12 2755 | L12 2756 | R53 2757 | L94 2758 | L64 2759 | R5 2760 | R17 2761 | R83 2762 | L33 2763 | R71 2764 | L38 2765 | L60 2766 | L40 2767 | R171 2768 | L28 2769 | R45 2770 | L441 2771 | R83 2772 | L68 2773 | L151 2774 | R89 2775 | L183 2776 | L217 2777 | R157 2778 | R88 2779 | R33 2780 | L4 2781 | R38 2782 | R888 2783 | R45 2784 | R51 2785 | R77 2786 | L64 2787 | L9 2788 | R81 2789 | R419 2790 | R93 2791 | R7 2792 | R76 2793 | R24 2794 | L83 2795 | L17 2796 | R39 2797 | R81 2798 | L33 2799 | L87 2800 | R34 2801 | R59 2802 | L20 2803 | R27 2804 | L87 2805 | L33 2806 | L60 2807 | L21 2808 | L93 2809 | L271 2810 | R44 2811 | R73 2812 | R39 2813 | L991 2814 | R13 2815 | R87 2816 | L33 2817 | L82 2818 | R480 2819 | L3 2820 | L578 2821 | L84 2822 | L26 2823 | R79 2824 | R653 2825 | R94 2826 | R80 2827 | L80 2828 | R23 2829 | L423 2830 | L30 2831 | L87 2832 | L97 2833 | L86 2834 | R29 2835 | R61 2836 | R94 2837 | R16 2838 | L4 2839 | L96 2840 | L32 2841 | L9 2842 | R541 2843 | R2 2844 | R98 2845 | R5 2846 | R508 2847 | L22 2848 | L95 2849 | R4 2850 | L21 2851 | L79 2852 | R68 2853 | L468 2854 | L684 2855 | R84 2856 | L73 2857 | L48 2858 | R59 2859 | L77 2860 | L364 2861 | L97 2862 | L60 2863 | L740 2864 | R512 2865 | L248 2866 | L45 2867 | R81 2868 | L20 2869 | L48 2870 | R968 2871 | R880 2872 | L22 2873 | R42 2874 | R17 2875 | R750 2876 | L967 2877 | R1 2878 | R99 2879 | R15 2880 | R58 2881 | R27 2882 | R18 2883 | L70 2884 | L348 2885 | R68 2886 | L70 2887 | R921 2888 | R543 2889 | L62 2890 | R987 2891 | L87 2892 | L91 2893 | L31 2894 | R22 2895 | R88 2896 | L88 2897 | L13 2898 | R12 2899 | R40 2900 | L64 2901 | R64 2902 | L97 2903 | R80 2904 | L76 2905 | L746 2906 | R82 2907 | R18 2908 | L77 2909 | R782 2910 | L5 2911 | L111 2912 | L89 2913 | L634 2914 | L66 2915 | L73 2916 | R91 2917 | R82 2918 | L628 2919 | R95 2920 | R75 2921 | R58 2922 | R69 2923 | R27 2924 | L12 2925 | R16 2926 | R98 2927 | R53 2928 | R849 2929 | L65 2930 | L75 2931 | R58 2932 | R82 2933 | R65 2934 | L65 2935 | R82 2936 | R64 2937 | R13 2938 | L59 2939 | L297 2940 | R97 2941 | R21 2942 | L21 2943 | R787 2944 | L87 2945 | L811 2946 | R11 2947 | L45 2948 | L192 2949 | R8 2950 | L95 2951 | R21 2952 | R24 2953 | R56 2954 | R13 2955 | L590 2956 | R94 2957 | R6 2958 | R32 2959 | R68 2960 | R14 2961 | L44 2962 | L115 2963 | R840 2964 | R80 2965 | R557 2966 | R68 2967 | R52 2968 | R40 2969 | L92 2970 | R44 2971 | L116 2972 | R29 2973 | L70 2974 | L37 2975 | R42 2976 | R37 2977 | R24 2978 | L52 2979 | R29 2980 | L30 2981 | L9 2982 | R90 2983 | L1 2984 | R50 2985 | R61 2986 | R17 2987 | R31 2988 | R31 2989 | R30 2990 | R257 2991 | L57 2992 | R74 2993 | L674 2994 | R27 2995 | R973 2996 | R48 2997 | R77 2998 | L325 2999 | L68 3000 | R44 3001 | L76 3002 | R6 3003 | L11 3004 | L84 3005 | L11 3006 | R16 3007 | R61 3008 | R823 3009 | R37 3010 | L347 3011 | L33 3012 | L2 3013 | L55 3014 | L335 3015 | R86 3016 | R76 3017 | L27 3018 | R233 3019 | L10 3020 | R12 3021 | L178 3022 | L26 3023 | L44 3024 | R30 3025 | R483 3026 | L676 3027 | L32 3028 | R8 3029 | L65 3030 | L12 3031 | R77 3032 | R594 3033 | L75 3034 | L87 3035 | L32 3036 | R50 3037 | L59 3038 | R29 3039 | R80 3040 | R17 3041 | R52 3042 | R42 3043 | R598 3044 | L3 3045 | L75 3046 | L68 3047 | L93 3048 | R47 3049 | L27 3050 | R10 3051 | L16 3052 | L73 3053 | R89 3054 | L11 3055 | R11 3056 | R38 3057 | L38 3058 | R42 3059 | L42 3060 | L67 3061 | R267 3062 | R597 3063 | R3 3064 | L615 3065 | R12 3066 | L5 3067 | R424 3068 | R67 3069 | R17 3070 | L72 3071 | L63 3072 | L1 3073 | L41 3074 | R7 3075 | L67 3076 | L19 3077 | L14 3078 | R47 3079 | L77 3080 | L62 3081 | L25 3082 | R64 3083 | L96 3084 | L104 3085 | R5 3086 | R576 3087 | R76 3088 | L934 3089 | R91 3090 | L83 3091 | L35 3092 | L74 3093 | L48 3094 | L151 3095 | L310 3096 | L265 3097 | R72 3098 | L97 3099 | L9 3100 | R95 3101 | L680 3102 | L632 3103 | R92 3104 | R122 3105 | L60 3106 | R572 3107 | R59 3108 | R441 3109 | R61 3110 | R739 3111 | R73 3112 | L173 3113 | R4 3114 | R96 3115 | L24 3116 | R38 3117 | R87 3118 | R99 3119 | L80 3120 | L34 3121 | L86 3122 | R73 3123 | R91 3124 | R907 3125 | L20 3126 | L768 3127 | R785 3128 | R32 3129 | L301 3130 | R1 3131 | R174 3132 | L41 3133 | L192 3134 | R59 3135 | L29 3136 | R56 3137 | L27 3138 | L69 3139 | R785 3140 | R484 3141 | L26 3142 | L674 3143 | R48 3144 | R79 3145 | L77 3146 | R50 3147 | R85 3148 | L94 3149 | L91 3150 | R81 3151 | L81 3152 | L72 3153 | R3 3154 | R467 3155 | R46 3156 | L24 3157 | L20 3158 | R36 3159 | L957 3160 | L56 3161 | L47 3162 | R695 3163 | R789 3164 | R423 3165 | R598 3166 | R257 3167 | R27 3168 | L52 3169 | L75 3170 | L53 3171 | R888 3172 | R18 3173 | R54 3174 | R25 3175 | L95 3176 | R25 3177 | R7 3178 | R855 3179 | R86 3180 | L50 3181 | L98 3182 | L86 3183 | R86 3184 | R53 3185 | L53 3186 | L14 3187 | L94 3188 | L68 3189 | L424 3190 | R2 3191 | L2 3192 | R22 3193 | R72 3194 | R23 3195 | L30 3196 | L87 3197 | R87 3198 | L87 3199 | L46 3200 | R717 3201 | R80 3202 | R49 3203 | R78 3204 | L78 3205 | L710 3206 | L193 3207 | R3 3208 | R947 3209 | R268 3210 | R250 3211 | R19 3212 | R930 3213 | R50 3214 | R215 3215 | R18 3216 | R3 3217 | R34 3218 | R66 3219 | L66 3220 | R674 3221 | L8 3222 | L53 3223 | L989 3224 | R776 3225 | L34 3226 | L84 3227 | L40 3228 | R724 3229 | L29 3230 | L75 3231 | R594 3232 | L890 3233 | R51 3234 | L74 3235 | L554 3236 | L75 3237 | L48 3238 | R99 3239 | R77 3240 | R90 3241 | R638 3242 | L88 3243 | R34 3244 | L607 3245 | L43 3246 | L5 3247 | R16 3248 | R20 3249 | R869 3250 | L38 3251 | R50 3252 | L12 3253 | R52 3254 | L82 3255 | L29 3256 | L710 3257 | R69 3258 | L11 3259 | L993 3260 | R496 3261 | L92 3262 | L91 3263 | R591 3264 | R31 3265 | R69 3266 | R68 3267 | R2 3268 | L81 3269 | R165 3270 | L381 3271 | R27 3272 | L28 3273 | L72 3274 | R52 3275 | L47 3276 | L135 3277 | L70 3278 | L15 3279 | R15 3280 | R98 3281 | L88 3282 | L93 3283 | R431 3284 | R918 3285 | R62 3286 | R78 3287 | L6 3288 | L34 3289 | L32 3290 | R1 3291 | R34 3292 | R82 3293 | R49 3294 | R11 3295 | R3 3296 | R34 3297 | R19 3298 | L21 3299 | L46 3300 | R68 3301 | R487 3302 | R45 3303 | L364 3304 | R60 3305 | L96 3306 | R18 3307 | L51 3308 | R821 3309 | R840 3310 | R72 3311 | R79 3312 | L8 3313 | L8 3314 | R338 3315 | R99 3316 | R67 3317 | L67 3318 | L57 3319 | L343 3320 | L88 3321 | L12 3322 | L29 3323 | R46 3324 | R27 3325 | L551 3326 | R73 3327 | R34 3328 | L80 3329 | R80 3330 | R95 3331 | R75 3332 | L86 3333 | R85 3334 | R78 3335 | R74 3336 | R50 3337 | R534 3338 | L1 3339 | R96 3340 | L49 3341 | R49 3342 | L34 3343 | L66 3344 | R85 3345 | R80 3346 | L621 3347 | R56 3348 | L82 3349 | L90 3350 | R86 3351 | R36 3352 | R177 3353 | R773 3354 | L41 3355 | L59 3356 | L73 3357 | R73 3358 | L952 3359 | L24 3360 | R66 3361 | L51 3362 | R18 3363 | R43 3364 | L10 3365 | L707 3366 | L83 3367 | R49 3368 | L40 3369 | L74 3370 | L35 3371 | R62 3372 | L62 3373 | R936 3374 | R64 3375 | L61 3376 | L39 3377 | L26 3378 | L45 3379 | L53 3380 | L20 3381 | R79 3382 | L2 3383 | L5 3384 | L13 3385 | R85 3386 | L62 3387 | L45 3388 | R29 3389 | R50 3390 | L72 3391 | L24 3392 | L76 3393 | L27 3394 | L79 3395 | R6 3396 | R428 3397 | R418 3398 | L485 3399 | R39 3400 | L162 3401 | R30 3402 | R32 3403 | R75 3404 | R25 3405 | L57 3406 | L143 3407 | L13 3408 | R48 3409 | L35 3410 | L615 3411 | R715 3412 | L923 3413 | L66 3414 | L968 3415 | L43 3416 | L760 3417 | R91 3418 | L94 3419 | R563 3420 | R60 3421 | R40 3422 | R17 3423 | L17 3424 | R90 3425 | R218 3426 | L60 3427 | R92 3428 | L40 3429 | R14 3430 | R68 3431 | R96 3432 | L323 3433 | L155 3434 | R76 3435 | R24 3436 | L87 3437 | L59 3438 | L41 3439 | L47 3440 | L66 3441 | L57 3442 | L43 3443 | L70 3444 | R949 3445 | L79 3446 | L64 3447 | L91 3448 | R55 3449 | L534 3450 | R8 3451 | L1 3452 | R57 3453 | R476 3454 | L806 3455 | R19 3456 | R581 3457 | R38 3458 | L4 3459 | R486 3460 | L395 3461 | L17 3462 | L47 3463 | R69 3464 | L754 3465 | R771 3466 | L47 3467 | R56 3468 | L718 3469 | R5 3470 | L43 3471 | L43 3472 | L57 3473 | L539 3474 | L417 3475 | L69 3476 | L75 3477 | L12 3478 | L42 3479 | R54 3480 | L5 3481 | L93 3482 | L22 3483 | L80 3484 | R6 3485 | L6 3486 | R73 3487 | L65 3488 | L8 3489 | R744 3490 | L444 3491 | R54 3492 | L863 3493 | R726 3494 | L17 3495 | R52 3496 | L506 3497 | R33 3498 | L15 3499 | L43 3500 | L446 3501 | R79 3502 | L511 3503 | L50 3504 | L93 3505 | R48 3506 | L48 3507 | L630 3508 | R76 3509 | L90 3510 | R856 3511 | L12 3512 | L62 3513 | R59 3514 | R3 3515 | R59 3516 | R906 3517 | L21 3518 | R56 3519 | L88 3520 | L14 3521 | L98 3522 | L61 3523 | R61 3524 | L951 3525 | L26 3526 | R43 3527 | L66 3528 | L79 3529 | R937 3530 | R77 3531 | R165 3532 | L194 3533 | L934 3534 | R258 3535 | R41 3536 | R148 3537 | L19 3538 | R362 3539 | R21 3540 | L398 3541 | L85 3542 | R10 3543 | L29 3544 | L93 3545 | R8 3546 | R22 3547 | R383 3548 | L23 3549 | R22 3550 | L987 3551 | R68 3552 | L31 3553 | R24 3554 | L2 3555 | R66 3556 | R23 3557 | R39 3558 | R45 3559 | R77 3560 | R292 3561 | R86 3562 | L4 3563 | L72 3564 | L53 3565 | R29 3566 | L688 3567 | R33 3568 | R55 3569 | L71 3570 | R71 3571 | L692 3572 | L42 3573 | R34 3574 | R64 3575 | L26 3576 | R909 3577 | L823 3578 | R76 3579 | L830 3580 | R34 3581 | L4 3582 | L363 3583 | R69 3584 | L6 3585 | L17 3586 | L83 3587 | R9 3588 | L82 3589 | R61 3590 | R93 3591 | L19 3592 | R12 3593 | R26 3594 | L55 3595 | L645 3596 | L67 3597 | R48 3598 | L29 3599 | L52 3600 | L40 3601 | R40 3602 | R897 3603 | R34 3604 | R20 3605 | L451 3606 | R47 3607 | R653 3608 | L65 3609 | R96 3610 | R15 3611 | R86 3612 | L96 3613 | R85 3614 | L21 3615 | R98 3616 | R86 3617 | R54 3618 | R662 3619 | L754 3620 | R54 3621 | R59 3622 | R51 3623 | L11 3624 | R56 3625 | R442 3626 | R6 3627 | R97 3628 | R79 3629 | L927 3630 | L52 3631 | L96 3632 | L63 3633 | R61 3634 | L60 3635 | R614 3636 | L19 3637 | L30 3638 | L88 3639 | L93 3640 | R640 3641 | L89 3642 | R23 3643 | R64 3644 | R41 3645 | R53 3646 | L31 3647 | L27 3648 | R309 3649 | L9 3650 | L27 3651 | R2 3652 | L75 3653 | R15 3654 | R86 3655 | L29 3656 | L52 3657 | R80 3658 | L290 3659 | L76 3660 | L12 3661 | R78 3662 | L158 3663 | L64 3664 | L78 3665 | L26 3666 | L74 3667 | R41 3668 | R59 3669 | L630 3670 | L99 3671 | R29 3672 | L65 3673 | R50 3674 | R5 3675 | R58 3676 | R7 3677 | L98 3678 | R3 3679 | L51 3680 | R65 3681 | L74 3682 | R668 3683 | R18 3684 | R80 3685 | L14 3686 | R424 3687 | R76 3688 | L352 3689 | R38 3690 | L50 3691 | R412 3692 | R93 3693 | R7 3694 | L27 3695 | L8 3696 | R433 3697 | L12 3698 | L86 3699 | L13 3700 | R13 3701 | L74 3702 | R74 3703 | L55 3704 | R55 3705 | R222 3706 | R378 3707 | R4 3708 | L48 3709 | L56 3710 | R25 3711 | L25 3712 | R57 3713 | L90 3714 | R54 3715 | R687 3716 | L85 3717 | L55 3718 | L68 3719 | R19 3720 | R62 3721 | R519 3722 | L45 3723 | L55 3724 | R946 3725 | L56 3726 | R82 3727 | R923 3728 | R5 3729 | R25 3730 | R72 3731 | L33 3732 | L64 3733 | L90 3734 | R6 3735 | R3 3736 | R81 3737 | R1 3738 | R99 3739 | R1 3740 | L820 3741 | R30 3742 | L11 3743 | L38 3744 | R671 3745 | L88 3746 | R87 3747 | L37 3748 | L95 3749 | L58 3750 | L46 3751 | R4 3752 | L84 3753 | L16 3754 | L64 3755 | R59 3756 | R5 3757 | R30 3758 | L30 3759 | R33 3760 | L96 3761 | R61 3762 | L98 3763 | R775 3764 | R25 3765 | L69 3766 | L767 3767 | L64 3768 | R89 3769 | L89 3770 | R58 3771 | R87 3772 | L80 3773 | R65 3774 | L47 3775 | L74 3776 | R65 3777 | L31 3778 | R79 3779 | L27 3780 | L95 3781 | L40 3782 | R40 3783 | R71 3784 | L59 3785 | R66 3786 | R22 3787 | R69 3788 | R49 3789 | R32 3790 | L50 3791 | R54 3792 | R546 3793 | R280 3794 | R75 3795 | R994 3796 | R6 3797 | L687 3798 | R92 3799 | R240 3800 | L461 3801 | L39 3802 | L540 3803 | R25 3804 | L33 3805 | R77 3806 | L34 3807 | R86 3808 | L33 3809 | L48 3810 | R83 3811 | R156 3812 | R11 3813 | L50 3814 | L13 3815 | L87 3816 | L59 3817 | R6 3818 | L214 3819 | L56 3820 | L42 3821 | R28 3822 | L40 3823 | L23 3824 | L32 3825 | L27 3826 | R19 3827 | L69 3828 | L91 3829 | R76 3830 | L58 3831 | R82 3832 | L86 3833 | R967 3834 | L738 3835 | R23 3836 | R90 3837 | R672 3838 | L76 3839 | L75 3840 | L352 3841 | L622 3842 | L85 3843 | L18 3844 | L9 3845 | L91 3846 | L86 3847 | R54 3848 | L68 3849 | R79 3850 | L838 3851 | R59 3852 | L61 3853 | L84 3854 | R81 3855 | R564 3856 | R485 3857 | L51 3858 | R4 3859 | L21 3860 | L94 3861 | L11 3862 | L63 3863 | L49 3864 | R35 3865 | L14 3866 | L21 3867 | L145 3868 | L165 3869 | L54 3870 | L54 3871 | R318 3872 | L284 3873 | L74 3874 | R58 3875 | R63 3876 | R782 3877 | R655 3878 | L89 3879 | R89 3880 | L39 3881 | L898 3882 | L49 3883 | R986 3884 | R117 3885 | R82 3886 | R1 3887 | R872 3888 | R165 3889 | L19 3890 | R75 3891 | R39 3892 | L82 3893 | R640 3894 | R74 3895 | L964 3896 | L16 3897 | L784 3898 | L67 3899 | R67 3900 | R10 3901 | R90 3902 | R6 3903 | L6 3904 | R95 3905 | R5 3906 | L38 3907 | R63 3908 | L15 3909 | R90 3910 | R93 3911 | R1 3912 | R85 3913 | L79 3914 | L869 3915 | R69 3916 | L15 3917 | R815 3918 | L9 3919 | L8 3920 | L83 3921 | L174 3922 | L26 3923 | L82 3924 | R63 3925 | L81 3926 | L794 3927 | L33 3928 | R23 3929 | L10 3930 | R14 3931 | L76 3932 | R14 3933 | L52 3934 | R68 3935 | R46 3936 | L77 3937 | R10 3938 | R61 3939 | R56 3940 | L50 3941 | R50 3942 | L99 3943 | L51 3944 | L18 3945 | R11 3946 | L4 3947 | R157 3948 | R58 3949 | L25 3950 | R75 3951 | R46 3952 | R22 3953 | R49 3954 | R88 3955 | L82 3956 | L28 3957 | L6 3958 | R57 3959 | L92 3960 | L37 3961 | L71 3962 | R3 3963 | R18 3964 | R99 3965 | L20 3966 | L21 3967 | R62 3968 | L9 3969 | L9 3970 | R24 3971 | L47 3972 | L22 3973 | R40 3974 | R82 3975 | R82 3976 | L1 3977 | R7 3978 | R12 3979 | L76 3980 | R80 3981 | R96 3982 | L71 3983 | R90 3984 | R55 3985 | L14 3986 | L60 3987 | R84 3988 | L2 3989 | R29 3990 | L90 3991 | R87 3992 | L91 3993 | L77 3994 | R71 3995 | L38 3996 | L66 3997 | R64 3998 | R15 3999 | R90 4000 | R88 4001 | R42 4002 | L6 4003 | R45 4004 | R53 4005 | L54 4006 | R56 4007 | R69 4008 | R22 4009 | R97 4010 | R38 4011 | R47 4012 | L47 4013 | R18 4014 | L13 4015 | L13 4016 | R19 4017 | L11 4018 | R36 4019 | R25 4020 | L21 4021 | L43 4022 | R2 4023 | R19 4024 | R2 4025 | L15 4026 | L38 4027 | L35 4028 | L22 4029 | L36 4030 | L10 4031 | L38 4032 | R31 4033 | L20 4034 | L2 4035 | L17 4036 | R1 4037 | R34 4038 | L10 4039 | R26 4040 | R34 4041 | R1 4042 | R7 4043 | R46 4044 | L39 4045 | R44 4046 | L19 4047 | R50 4048 | R7 4049 | R17 4050 | L50 4051 | L4 4052 | R16 4053 | R5 4054 | R8 4055 | L14 4056 | R44 4057 | L19 4058 | R13 4059 | L31 4060 | --------------------------------------------------------------------------------