From d04ead63747933d1f29da98c423226e93fb41305 Mon Sep 17 00:00:00 2001 From: Stefan Kanev Date: Sat, 25 Dec 2021 14:01:46 +0200 Subject: [PATCH] aoc; day 2021.25 --- advent-of-code/2021/day25/Cargo.toml | 8 ++ advent-of-code/2021/day25/src/main.rs | 55 +++++++++++ advent-of-code/2021/inputs/25 | 137 ++++++++++++++++++++++++++ 3 files changed, 200 insertions(+) create mode 100644 advent-of-code/2021/day25/Cargo.toml create mode 100644 advent-of-code/2021/day25/src/main.rs create mode 100644 advent-of-code/2021/inputs/25 diff --git a/advent-of-code/2021/day25/Cargo.toml b/advent-of-code/2021/day25/Cargo.toml new file mode 100644 index 0000000..dbb6a46 --- /dev/null +++ b/advent-of-code/2021/day25/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "day25" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/advent-of-code/2021/day25/src/main.rs b/advent-of-code/2021/day25/src/main.rs new file mode 100644 index 0000000..356903f --- /dev/null +++ b/advent-of-code/2021/day25/src/main.rs @@ -0,0 +1,55 @@ +use std::fs; + +fn main() { + let mut map: Vec> = fs::read_to_string("../inputs/25") + .unwrap() + .lines() + .map(|line| line.bytes().collect()) + .collect(); + + let mut steps = 0; + let h = map.len(); + let w = map[0].len(); + + loop { + steps += 1; + + let mut horizontal = vec![]; + + for x in 0..h { + for y in 0..w { + let adjancent = (y + 1) % w; + if map[x][y] == b'>' && map[x][adjancent] == b'.' { + horizontal.push((x, y, adjancent)); + } + } + } + + for &(x, y, a) in &horizontal { + map[x][y] = b'.'; + map[x][a] = b'>'; + } + + let mut vertical = vec![]; + + for x in 0..h { + for y in 0..w { + let adjancent = (x + 1) % h; + if map[x][y] == b'v' && map[adjancent][y] == b'.' { + vertical.push((x, y, adjancent)); + } + } + } + + for &(x, y, a) in &vertical { + map[x][y] = b'.'; + map[a][y] = b'v'; + } + + if vertical.is_empty() && horizontal.is_empty() { + break; + } + } + + println!("final = {}", steps); +} diff --git a/advent-of-code/2021/inputs/25 b/advent-of-code/2021/inputs/25 new file mode 100644 index 0000000..5db1055 --- /dev/null +++ b/advent-of-code/2021/inputs/25 @@ -0,0 +1,137 @@ +..vv.v>vv.>..>..>.>...v>vv..>.vv>..v>.v...v>vv.>.>....v>..v>.>.vvv>...>>vvvvv..v.v.>>..v>v.v>..>..>>v>>..v>.>v..>>>>>v.....v..>v.>v..>..... +.>....>..v.>v>>>.>.v>....>.v.vv>v.>...>....>v..v...v..v>.>.>v.....>.v.v>.>v....v.>..>.v>>>>v.v>vvv>>.>.>v.>..v.v...v.>....>>v..v....v>>>vv> +>v>>.vvv......>vv.>>>..vv>.v....>>.v..>>..v......v>..>>.>..v..>..>>v.v>v.v.v>v>.>>...vv..v.v>v>.>v.>vv..>>v.>.v.>>>v>>..v.>>...>...>v.>v>.v +>.>..>>.v...>v.>v..vv....>..v>.>v.v.v>vv.>v..>.>v.vv.>..v.v.v..v>>..v....v>v>>.>v>...v>.>v>>vv>..v..>>>v>...>.>>>v.v.>.>vvvvv...v>v>v..v... +v>.>>v..v>v>v>>v>v>....v....>>vv>........>.>>v.v>...>.>..v>..v.v>.>.>>v..v.>v>v....>>...v.>v>>>vv....>v>.v.>>>>>.....>vv.>v>.....>.vv.>.vvv +...>>...v..>..v>.>.v..vvv.v>vvv.>.>..v>>.>..v>v..v...>.>.v.v..v>.v.>..v..>vvvv>v>.>...v.v..>....v.>..>.v>.vv.v>..>.v.>.....>.>...v.>..>v.>v +>.v.>>..>.vv.>..v>>v..v.>v..vv>v.vv.>vv.>..vv>.v...>v.>vv.>>..v....>.v...v.>......>v..v>...>>..>>v...v.>...>>v.v...>.>>v...v..>>..v.>>v..>. +v.v.>>v...v....>..>..>.v....vvv.>..>.>...>>v>.>.>v>.>..>>.vv>.vv..v..>v.v.>.v......>..>..>v>v>>..>v>.>.vv.vvv>.v..>v.>>....v>>.v..>.>>>>.>v +.v>.>.v.v>>v>.......>>>v>.>...>vv>>...v....>v>>.v>>v>v..>v.vv.>v>...v.>.vvv>..v.>v....v.v.>.>.v>.v>vv>.>...v..v..>v.>....vv>.>..>.v....v... +vv....>>v.>.v...v......>.>>>.vv>v..v.>.v.>...v.>v>.>.v...>>.>>>.>..vv.v>.>...vv>v.v>vv......>vv..v.v>v.>.>>>v.>.>>.>v>...v>v>...v>v..>v..>v +>.v.>>.v..>>.>v>.>v.v...>.>....vvvv....v..v>v.>.....v>v.v.v>...v>v..>..>>>>v.>.v.>.>v...v.v.>v..>.>.vv>.v.v>>vv>v.>...>v..>..>vv>>.....v... +v>.>..v.>>.......>...>vv..v.v>.>>.v.>>..>>.>>>....>..>...>.>vv>..v>.>...v.>...v..>...>vvv.v.>.v>v..v...v.vvv>v.v.>.>.v.>...v.v.....>v.>.v.v +v.>vv....>...>.>v>.....>......v.vv..>....v>.>>......vvv..v..v.......>....>..v...>.vvv.vv>.....>.v>v..v...v>>....v..>v..>..>>>>.>.vv.>..v>>v +>v.v>>..v..v>.v..v>.v.>>.>.>>>v...>>...vv.v....>v>...vv>>v..>...>.v.>.v>vv>....v.vv..>v>.....>v>vv......>>>>v..>v>>.....>v.v.v>>>..v......> +v>>>>v.>>.>..>.>>.>.>>>...vv.v...vv>...>.v>>>>>v..>..v.>.>....vv..>>v..v..>..>.v>..vvvv...v..>>>>>v.v..vv.>.v>.>vvv...vv.>..v..>v.v.>....v. +v>.v.vvv>.vv>>>.>.v>..>...v....v>v>.v...v.>.v.>v.>.v.>v.v...v>..>vv..>..>>.......v..v>>>>.v....>>.>>...>....v>.v>..vvv..>vv>.>v>>....v...>. +.>...v>...v.>v.....vv.>>>.>.v..vv.vv.vv>.>>v>..v....v.v>v>v>..v>.>v.v>....v...>v.>.v......v...>.>vv>v.v...>.v.>vv>vv.......v..>v.v.vv.>.v>> +.>.>.>>..>..v....>.vvvv>.>.v>.>v.>.v>.v...>...>..>>.>>.>....vv.>>...>v>>v.>v......>.>>vv.v...>v.>.>v.>>..>>.>.....v.vv.......v.>>.>>v>.>v.. +>...v.>..v>..vv>vv..v>vv>...v...>..>v>.>v....vv.>v>v.v..>>v>.v.>...>.v.>.vv>>.v.vv.v>>>v..v.vv.vv....>>.v..>vv......v.v>..vv>v.vv>.>vv.>... +>.>v.vv>>>.>v..v>...>.>..>>.......v.vv.>>>>.>v>>..v.v.>v>....v>v.>.>v..v>.v>>...v>.v.v...vv..v>>vv.vv>...v.vv.v..>v>.>..>>...>>>>>v..>vvv>> +>.vvvv..v>..v....>v.>>>vv>.v..v>....>v>v...vv....>>>v..>v....v...>vv.>>>>.v.>.>v>>vv.>>vv...>>v>v...>>..>>.>>....>.v..v..vvvv>.>>>v.>vv..>> +...v....>.....>.v.v>.>...v>v..v.>.vv..>.....v.v>v..v>>>.v.v.>.>..>>>v...v.>.>..v.v...>.v>v.>..v...>v>.v>v.v..v...vvvv...>.>>.v.>>>..>.vv>.v +....>...v.vv>>..>.>.>v....v.vv.v.v.>>..>..v.>>..>v..vv..v.>.vvv...v..>.vv.v>..v.>>v...v.v.>v>.v.>v>>vv.>.>..v.v>...>.>v..>>v>....v..v.>vv.. +....>>v.vv>vv......vv>..vv>..>......vvv.>v.v...v.>.....>..>>....>..>vv>..v..v>.>v..v...v>v..>....v..v.v.....v>>v.>v...v>.v...>.vv>>..v.>..v +.vv>>v.v..>.>>vv.v...>.v.>.>v.vvv.>.v.>..>...>.>..v.v>.v.v>..vv>>vvv.v.v>>>.>.v..v>.>.>.v.v.v>>...>v..>..>.>>v.v.....v...>...>.vv..>v..vv.. +>v.v.vv....v..v>.v.vvv..v.v.>>>.vv.>..>>.v......>..vv>>.>...v>...v.v>.vv..v>v>.>>..>.>.>>>>>....>..v...>>v>v>...v...v>v..>..v.>>>.......vvv +..vv.v.>vv.>.>vv..v>>>>>.vv.v>>..>......>v.>.v.>...v>vv.>.>.v.>..v..vvv>..>.v..>.>.>....v>>v>v>....>....>>v>>.v....vv>>>..>.>>>vv....v.vv>> +...v.>.vv.v.>>v.v..>v>vv........>..>>.......>>.>v.>v>v.>...>>...>.....v..v>..v>>..v...v...>.v..>>..v>>.>>....v..>..>..v.>v....>.....v>.v>.. +.>.>vv.vvv.>v..v.v.v..v..>.>>..vvv>v>>>..v.v.>v....vvv.v......>>...vv>...v>v>..v.>v>>..v>.>.v....v....vvv.>>.v>..v>>>v>..v...v...>>>.vv.>v. +...vv>.>>>>.v..v.>.v.v.>>>..v.>vvvvvv.v>........>.>.>.vvv>v>v..v>>>>v...v.v>.>..vvv..>..vvv.vvv.v>>>>.v..v.>....v..>>.vv..vv.>..>>.>v....v> +>v>>v>.>..>>.vv>v.vv..vvv.v.v..>.v.>.>v>.>....v.>>..vv>......>>v>v.v.v..>.vv.>..>>.v>....>vv.>v.....>.v>>.>.v...>>....v.>v.>....>.v>..v>... +.v.v.vv.>....>>v....v......>>>>.>.>.>....v>..>>....>.>vv.v>>.>.v.>v..>>>.v.>.>..v>>.....vv.vv.v..v>v>>..>>.>v>...v>>>..>vv>....>...vv.v...> +>..>.vvv..>vv>>..>.>...>..v.>>.....v.v>v.>v.v>.v....v.......>v...vv.vv..>>.v..v>.v.>>v.v..v..v......v>>>>>.....vv.vv..>.v>>>vv.>>>.>.>....> +..v.v>>vv..v>>>...v....>..v.v.>vv.v>>>.....vv..>.>.v.>.vv..>>.>..>>vv....>v.v.....>vv>.v....>.v..>.>v>..v.>v.>>>v.>...>>.>v..>>v.v..>....vv +.>v..vv..>.>>..v>>vv>....>..v..v>>>.....v.v>.>>....vv..>vv...>..>>.vvvv.>>>.....v..>v>>>>.>.>vv>....>...>v.>...vv>......v>vv.>vvvvvv.>>>>.v +>>....>>v>..>.>v.>....v.vv.v>>.>.>.vv...v>.>........v>.>v>v>.....>.vvvv>..vv....v..v..>v.v..>v>....>>.vvv.v.v..v.>.v>vvv>.>>>.>.>.vv.vvv>.> +.>>.>..vv>>>..v>.>vv..>>.vvv>...>...vv>....>.v..>v.>>.v..>.v.v..>.v.v.v>.>...v>.>>v..v>.>>v..vv..>v.>.......v.>..>v.vv.v>..>..vvv.>v>>.>.>> +.>>..>.>.v>v..vv..>>>.vv...v.>.>v..>.v.v...v..>....>.....v..>v.>.v.>..v>..vv..>.>.v>v....>>v..>>.....vv.......vvv>>>>v...>>.v....>.v>..v.v. +.v.v...>.>.>..v>>.>>>v....>v...v.>>.>>>.......>....>....v..v.vvvv>...v..>v...v....>.>v>v.v.v.>>vvv...>...>v.>>vv..v.....v>>>v.>vv>.>>.vv>.v +.>.>v...>.v..>..>.vvv..>...>v.v.>....>>v>..>.v>...>v.>.v.vv..v..v.>v>vvv>>v>.v>vvvv.>>.v>>.>..>>.v>>v>.v...>..vv>v.vv...>v..v.....v>...>v>> +>.v.vv.....>>v.>v..v......v.........vv.v.....v>>.vv>.>v..>.v>.v.>..>..v>.>..v.v.>..>....v.>v...v...>......v>.>.>.....>.vv.v>...>.>>>..>v..v +v>..v..>v>>>>.v....>v>vv>vv......v>>.>>.>vv....>vv>vv.>>...v>>v>v..>>....v>>.v.>..>v>v.>.vv..v..>.v.v.....v.v.>>.v>.....>.....>..>.v>>..v.v +.>.vv>v>.>v>>>v.......v...>v.v>.v>vvv>>v>>v>>.v.>v.v.>v.>v..v....v..v...vv..v>.>.v>..>..v>..v>v>.....>vv..v>.>v>.v>v>...v>>..v.....v>v....v +.>>.>.>>..>....>>v....v...vv>.....v.>vv>v.v.>..v>v.>.v.>>.>..v.v.>v.>..>v..>>..vvv>>>vv>..>.>v>>vv..v....vv>v..vv.>.>v....v.>v>v..>>>>>.>>. +>..v.v.>..>.vv..>>.v....v>..>.v>>...>.>v.v..>>.v>.vv>v..v.>>>...v.>..v..v...>...v.v>>.>.v>>v.v.>.>.v.>.v>.......>.vv.v>>.>>v>.>>v...>>..vv. +v>..v>.....v....>>>.vv..v..>v...v.>>....>>>...>.>.....v>>.>....>..>>>>>...vv.>.>.v.v>.v>......v..v.>>..v........v.v>..>...>....>....>vv.v>> +.>>>..vvv.>v>vvvv.v>...vv.vv>v..vvv>v...>v....v.vv>.v.v...>.......>v>..vv>...>...vv>>>....vvv.>v.v.v.v>>.vvv..>..>.v>.>v.>.v..v>.v..v>v.v.v +..>...v.>v.>>.>v.vv.v...>v>.>..v..v.vv.vvv..>...v>v>v..>>>v>..>>>v>.>.v..>.....>>vvv..v>...>>>>vv.v.>.>......vv>>>vvvv>..v.>vvvvv.>v>v..v>. +>>....v..v.>.>>.v...vv......v....vv...>>..v>>>.v...>>.>..v.v..>....>>v.>vv>vv..v...>.v..vv...>.>v..>..>.v.v....>v.v.>vv.>..v>>v....>..v>v.v +vvv..>>v...>.v.v...>.>v.v....>...v.>.......>.>..>>v..vv.v>....vvv>.vv.>vv.v.vvv..>..v....v.v...>>vvvv.>.>>.v..>v.>.>>>..>>>...v...v...>>... +.>.v>..>..>.....vvv>v..>v..vv.>........v.v>..>..v.v.>v.>v>v.....v.>>>..vvv>>.v..>v>v...>>>>.>v..v..v.>..v>....>..>>v..v.v.>>..>>..vvv>.>v>. +>........v>..>>>..>v..>.v.>....>v.v>v..>.>>v...v>.v>v>.>>vv....>..>..>.>vvv.v>.>vv.v..v.>>>>....v..v.....>>.>v>>v>v..>>>.>..v..>.>...>...v> +>>>.>>>vv>.>>.vv.v.>v>.v>...v.v..>.>vvv>vv>v.>>..>>..>.>vv.>..>...vvvv>..v.>v.v>>......>.vv.v..>....>>.v..v>>.>>v....v.vvv...v>>v.v.>v...v. +>>>>>>..v..v...>vv.>v..>.v..>.>v.>..v.>v.>..v>...>>.>.>.>.>v...v>.v..>>.>>>.v.v>v..v.>>..>...>..v.vv.>....v.>.>>.v..>.>....>.v.v..v>.>v>v.v +v.....>.>..vv...>v..v.>.>vv>.....>vv....>>vvvv.v..>.>.v...>..v>...>..>>vv..v..v>....>v..>.vv...>vvv.>>..v.v>>.v..vv>..v.v>.....>v.v..vv..v> +..v..v.v>..>.vvv>..v..vv>v...>.vv..>>>...vv.>.vv..v.v>.>.v.v>v>....>>v...>.>..>>>.>...>v.>.v>>vv.>.>..>..vvv..>.v>.>vv..>..v.vvv>..>vv.>... +>v.>.>v>>..v>>>v>.>..>>v>v>>...>..v...>.......v..>.>>.v.>>..v...vv..>>.>.>>>v..v...>v...v.v>..v.v...vv>v..>vv>v>..>..v..>..vv.>>v..>....>.v +v..>v..v>vv..>v...>..v.v>vv....>...v>>v>.....>>.v.vv.v>..>...vv>vvv..>vvv.v...>...v.v>.vv.>.>.v..vvvv.>...>vv.v>v.v....>.v...vv.>vv>.vv.... +.>v..v..v>vvv...v.>..v>vvvvv>>....>>.vv...v.>.>v>...v..>.v.v..vv.vvv>>...v.>..v......>v>.>>v>.v...v.>..>.v..>v.>>..>.vv.>>>...>>>>>v>>>.... +v.....>v.>..>...>vvv..>>>>v.vvvvv..>v.>.>.>....v>..>v.v>...>...>..v.v.vvvvv.v>>>...>.>>>..v..>v.v....>..v...v.>..>..v>..>>......v...>>>.>>> +.>.v>>v.vvvvv.v..v.vv.>>v.....>>v>..>.v.v>>>>>vvvv...>>>v..>>...vv.v...>vv....>>.>.v..v.v.>>v.>.......>.v>v.vv....>vv.>.>v.vv......>.>vv.v> +>.....v.>....v.>>vvv.vv.>.vv.>>v..>.v.>vv.>.>v.v.>>..>..>v.v.>>.>>.......vvv>v>>>.>>v>v.vv>..v>v>>>v...>vvvv>.v.....v>...v.>v..vv>v>.v.v>.. +v..v>.>.>......v.v>v...>.>>.>>vv>>>vv.>.v>v>.>v.>>v.v.v..>v.>v..v>>v>>........>.>v..v>...>.v...v..>.v..>....>>.vvv..>>v.v>v..>...v........> +v.v..>>...>>.v.>v>.v.....v..v>>v>v..v.>.>vv..>v>.>.....>..>...>.v..>.>.v>...>>....>.>>v.v.>v..>>>.>..>v>v.>.>..v>....v...vvv..v.v>.>.v...vv +v..v..v.....vv..>v>..v>v.>v.>>.>.>..v>....>v>v.....v..vv..>..>.v>v>v..>>v.>..>>>.>...v.>......vv>..>v>v.vv>>v..>.>>v>.v..v...v....v..>..vv. +...>.>.v.....>>>v.......vvvvv.v>>>v.>>.v>v..v.v..vv>.....>>.>>>v>..v>>>>>..v..>>>.vv....v>v....vv..vv.vvv..>.>.>>>>.vvv....v.>>.>..>>...>.. +.>>.v.vv.v>.>>.v..>..>.v>>..v...>.>>.vv..v>.>>..v..>..>>.>.vv...>v>>>>..>.>>v...v..v.>>v>>....>..>>.v>vv..vvv.>.v..>v..v..v>..vvv.v>..>>.vv +.>..vv>.v>.....v>.>.>....vv>vv.v.>..vv>..v.vv..>vv...v>>>>..>..>.v..v.v>>v.>..v..>>..v>.>v.v...v....vvvv>v..>>>.>.>v..v.>.v>v..>>.>.>>.vv>v +.v...vv..>>v>>.>..v..vv>>>>v..v>>.v.>>.v.>>v>>>..v...>>.v.v>>..vv>....v>..v.>.>.vv.v>..>>...>....>v.v>..v>vv..v..vv.>v..v..vv..>...>.v..... +....>..v>>v.v..vv...v>..v.>>v.........>>..v>.>>>vvv>..>.v..>v>.>.v>..>..v..>vv.v.v>v..vv>.>....>..>....v>>v.>.v..v>>.v.>>....>..v>.v..v>>v. +......>>>..v.>...v>>vvvv...v>v...>v>>>v.>.>...v...>.vvv.>....>.v.v...>.>>..v..v..>....>v>...>.v>v.v...v>.>.v..v.>>.>.>v..>.>.v....>v.>>>vvv +.v.v...vv...v>..v>vv.v..>.v>>...>.vv..v.>v.>.vvv>...>v>>>>.>..v>>>v.>v..v..v>....>.>vv>>.>.v.>..>v.....v..v...>v...>..v......v.v.vv..v>.>>. +..>.v.>>>>...>....>v.>..v...>v.>.v>..>v>.>vv.v......v>v.>.>>......vv..>v...v..vv..v..v.>.....vvv>.>>vv..v.....>v.v.vv>v..>.vvv>..>..>vv>.v> +vv.>v...v>..>>....>.>...vv..vv>.vv>..vv>>.>v...vvv.>..v.v...v...>vv>.>..>.vv>......>.>vv.vv..v>>>vv>>.v>vvvv>vv>>>..>......>.v>>>v.v>.>.vv> +>>>v.>..vv..>v..>>vvv.>...v>.v.>v..v>>v.v..v...>>>>.vvv.v>v.v..v>vv..>.vvv>.v...v.....v>>v....v.>>vv>v..>v>....v.>.>>.....v>>>.v>..v.>v.v>. +.v.vv>>v.>...v>.>v.>.>.>>vv.>..v.vv...>>vv>..>v.>>>.v....v.>>vv.>.vvvv......v.....>>v>...>...>vvv..v.v.v>.>.v..>>v>v.v.vv>v......v>>v.>v>.. +v>..>...>vv..>.v.>.v..vv>v>>>...vvv>..v.>.vvvvv....>..vvv>.>.....vv>v.>>.>v....>>..>.>..vv.>>.....v..>...v...v.>..>>.v>vv>..v..v>.>.vv.>..> +v>....vv>.v>.>>..>.>.>v..v.>>vv..v...>v...>>.v.vv..v>v.>..v.v.v>.>.>>..vvv>.v>......v....>>>>>v>.v...>.v.v..>v.v..>v....>.v.....>..>...v>.v +.....vv>...>.vv..v>.>.v.>.vv.vv>v..>>.v.....vv.>>>>.>.v....vv.v.>..>...vvv....v>v.>vv.>..>....>.>.v>.>>>..>..v>...vv.v>>.>>.v..>>>.>v...>.. +...v>v.v.....vvv..vv>.>.>v.....>>.>vv.>.v.v.......v>vvv.....vv...>>..v.>>.>..>.v...>>>..>..v>.v.vv....>>.>>...>v>v.>>.>v..v..>....>....>v.> +.v>.>.v.v..v>v..v>...v..>>v.>v>vv.v.....v>>..>.......v>.v.>>>>>v>....>>>vv>v.....vv...v.vvv.>...v>v...v>..>.v.v.>..vv....v.vv.....v.>..v>.. +>vv....>.v>>..v..v>vv.>>vv..>.vv...vv.>.........>v.>>..v.>>..>.v>vv.vv.v.>v.v>>.v.v..>>v.v.v..v.>.>..>..vv.vv..vv.v.v..>...>.vv.v.v>..>>>>v +>..v.v>v.>.v>v..>.v..v>vv.>v..v>v....vv>>v..>...v.>>..v....v>....v......v..>..v....>.>.>.vv...>v.v>vv>..>..v.v..>>.v.v..>..>.vv.>...v..>>vv +.>..v..v.v>.vv>.vv>..>.vv>.>.v..>v...v...>.v..v...v..>...v..v>.v.v..>>...v.>v..>..vv...>.>..v..>......v.v..>....>v...>.>v...v>.>>>vvv>.v.>v +v.>>.>..v.>.vv.>..>>>.......v>.v.>....>..vv>v>>v...>>v.>>vvv..>vv>..>v.>>.>>..v..vv...>..vv..vv>.v....>v.>.>.>....v...>>...>>..>..>.>...v>v +...v...>.v>..>..vv..vv.v>>....v..v.v>.v..>.>v>v.v.v>.v.>>v>>v>.v..>....v.vvv.v.>.>>..>>..>.>.....>>.v.>.v..>>>vvvv>.>....>vvvv>>>.vv....... +v.v...>>..>.>>>>.>...>..>.vv..v..>>>...>v>..>>>....>..v..v.>....>v>v..v>v.>>..>vv>vv>...>>..v.v.vv>>..v..>.....v..vv>>.v>>>>v>>>.>.vv>...>> +>.v>v..>.>v..v.v.....>....vv>.v>>..>v.>>v>.>..>....vv.vv..>vv..>..>>.v.v.>.>>......v.v>.>>....v>v..vv>>>v>..v.>..>v..v.vv.v>v>>v>.>>.>v.>.v +...>>v..>....>......vvv.>v..>>vv....>v..>v>>v>.v..>.>>...v>>vv.>>.>...v>>v...>.v..vvv..>....vv....vvv..>v>..v.v>v.v.>vv>..>..>..v.v.>.>>vv. +v.v..vv.>>v>v.v>.vv..>v>v.>...>.>.v..>v.>>>>..>..vv.v>..v.v.>.>vv>v.>..>....v...>..>>.>>v....v...>.vv..>vv.>>>..>....>>v>v...vvv.v.>..>.... +v>...v...v...v>.v...>>.v>v...>......>v...>..v..>>..vv.vv.....>.>vv....v.v.v>vvv>..v..v...v...v>vvv>>v>..>.v>.>......>v....v.>v>>>....>vv.v> +.v>.v...v.v.>>.>vv>...v>>..>.vvv.....>..vv.....v.>v.v>.....>.>....v>...>v.v.v.v>>.>>.>........>.vvvvv>.>.>vvv..>..v..>>v.v.vv>>>.v>.v...v.v +.vv.>.v....>.>>>.>.>.v>.>>>v..vvv....>v.>.v.>.>>vv>.vv.>v.....v.>>.v>v....vv.......v>.>.>v>....v..>.>.>vv>>..vv.v..>..vvv>v..>..>>>v..v..v. +.>>.>.>v.vv....>..>v>....v..>.v.>..v....>...>..>v>>>>vv....vvvvv.>v....v>.>>.v..>..>..>.....>.vvv>>.v.v>.v....>>>>..v...v>vv>.....v..>.v.vv +.vvv>v...>....vv>.>>..>v.v.....v.v.....v>.>>.>v>>.v>v.v.v>vv.vvv>.>....v..v>>v.v.v.>>..v.>v.>.>........v.vv.>.v..v...v>.v.v.v.v>....>>vv.v. +vv.>>>...>..>>.....>...>....>..>.>>.>>>.v.v...vvv.....v>..vv..>...v.>.>v....>v.vvv....>...vv.>v...>>>..>>.v...>..>.>..>..vv...vv..>>.v.v>v. +.v.>..vv..v.v.>>....>>..vv>...v.vv..v.vv.>vvv...>vv...v..v.>...v....>>.....v>.v..>.>>>...vv>.v..vv>>.v>>>.>v>....vvvv>>.v.vv>....>v..vv.v>> +>>>>>...v.......>.vv>>..>.v.>.vv>.v>vv>v.....vv....>>.>.>......>.>.>>>.v.....>.v>v..v.....vv.>.....v...vvvv>..v.v>.v>.v..>>vv.......>vvv... +>..vv>..v...v...>>.>v>>vv.>...>>>..vv.>v......v.vv>>>>>.vvvv.........vvv>.>.....vv.v...v......vv......v..v.....>v.....v>..vv.>..>vv.>>v>v>. +v>v..>v.v.v....>vv>>>>v..vvv.vvv.v.....vv.v>..vv..v>v..v>..vvv>>.>..v.vv>.>v.>v...vv..>v>.vv..v..>>v.v..vv>>.>>>vvvvv>.vv>.>.vv..>...>.v>.> +.v......>v.......v...v...v..v>>vv.>v.vv.vv.>v.v...>v.>v.>vv>..>v>v.>.v.>.>>..vv.vv>.>>v...>v..>v.v>v>>..v.v.v>..>.>>........>>vv......vv>v> +>..v..>v.>>....>v>.>...>......>.>...v.>.>.>.v..>.v>.>>...>..v.v...v..v...>.vv>v...v>>.>..v....>>...>>>.>..v>v.v>v....v>>.....v>..>>>...>v>. +v.>vv>.>.v>v>v.v..>>>v>.v>.....v.....v>..vvv.>>v>..v..>.>.>..>.v>...>>>>...>>vv>...>......>..>..>vv.>v>>>...>>.>..v>>>...vv>...vv..>v.v..v> +.....>v.v>v.v>>>.v..>>..>>>....>..vvv..v..vvvv....vvv.....>>v.>>>....vvv..>v....>v...>v..>.>v>v.vv...>v.vvv.....>v.v.>.v.v.v...v......>v..> +>v...>.vv>v>...v.>.v.>v>v.v>..v>v>v.>v..>vvv.>...>>>.>..v.>.....>v>.v.vv>.v.>v>>..>>v.>...v...>>>.....>...vv>vv>.v>>....>>...v>vv...v...... +.>..>vv.>.>>.v>.>v..v>v.....>>....vv.>..>>>.v.v..vv>.>>.....v..>>v...>vv..>.v>>>.....>>.>..>.....>..v.>>v.v>.v....>.v......v>..vvv>>>>v>v>. +vvv.>v...>..>.v...>.v>v....>>...>>.>..>>...>v.v..v.v..>..>..>.>.v.>..>.v...>..>v...>v.vv..v....>..>...v>>v>vv.>>.>>v.v..vv...>>>v>.v.>v...v +.>.v..v.>>...vv>>.>>v>.vv.vv......>..v.v.>....v.v.>v..v.v...v....v.v..>.>v...>v>.>..>>>v>>v>v.>v>>.v....v...>v..vv.v....>>.>>v>>.....>.>>.. +.>.>....v>.>>......vv...>.>.>..>.vv.>....>.v>>>.v.vv..>.vv.....v>.vv>>>..>>.>v.vv..>v>..v>.>....>>..>.v..>v>.>v..v.....>.>>.v.>.>..v.vv.... +..>.>v......>.vv>....v..vv.v.v.v...>>.>vv..v..>v.>.>.v.v.....>>>.v.>.vv.v......>vv>..v>>.v..>.v...v..>.....v..>>..>....>.......v.>..>.v...v +.>.v>>v.v...>.v>>..v...vv.>>.>v..v..v.>>vv>.v>vv..>....vv>.v.>v>vv>.vvvv>vvv..>.>.>vv..vv>v>>.v.vv.>>...>vv....vvv>v.>.>>>>.v..vvv.>....v.> +...v.>..>..>.>.>..vv....>>v.v..vv.>.v>..>v..vv...>>>v.>>.>.v>v>v..v>v....v.>vv.....v>v...........>v...>.>vv>..v>>v>vv.v>v..>>vv...>v.>..>.. +...v...v..>..>.v.>.v.v>..v....v..vv>.>..v..>...>v>>>..>.>...v..v>>>>>vv..v>...v>v.....vv.>.v......>.....>.v>........vvv>v>.v..v......v.>vv. +..>v>.>.v.v.v..vv....>>v..>......>.vvv>>.v...v>.....v>>v.v>>..vv....vvv>>.>vv....v.>....v....v..vvvv..v..v>..>>.......v.v.>..v.>vv.....v... +..>vv........>...vvv..v.>...v...v....>>>.v.>.>v..v.>v........v..v>...>>..>...>v.v..>..v>...>>>...>v.>>>v>.>.>....v...v.v...v......>.v..v>.v +v>>v>..vv.v>.>..>..>>v...>>..vv.vv........>>.>..v.v....vvv>.v..v.>....>>>..vv>.>v..>.>.v.v.>.>v.....>....>.>>.v.v>..>vv.>.>vv......v.>.v>v> +v>v>>v>...v>.>.......v.v.vv.vvv....vv..vv.v.v>>...v.v>.v...>vv>.>.>.>..>..>v....vvv.v.......>>..>>.v...>.>.v.v.vv.>vv...v.v.vv...>...>>..>v +>.>...>..v>v.v.>.>.v>>v>>>..>>>..>..>.>>......>.v.>.v>>>>>.v>.v.vv>v>.v>.v....>.....vv.>vv>v.v>.v>....vv.....vv>>>...vvvv......v>>.......v> +v>.v.>>..vv..>........>>vvv..>>.v>>>>..>>v>.v.v.vvvv>..v>>.>v.>....>vv.v....>.vv.>.vv..v>>..>.>.>..v.>.v>vvv..>>>..vvv.>v....>......>.v...> +..>>.v...vv>....>.v.>v>v>...>.........v.>vv.>.>v.>>.v....>>.>...v>v>>v>vv>.v>....vv..v......vv>.v.>>vv.vvv>..>....>.>v.>>..>v..v>.>....>.v. +.>>v..>..>.v..v...>v.>v.>>....vv..>v>vv>>v>v....v...>v...>.v.>>>...v.v....>v..>..v.v....>.>>..>>>..v.vv.v.>..>......>.>v.vvv..v......v>.v.. +..>>v>vvvvv.vv..v..v>v.>..>v>..>..>.vvv>.v>.vv.>.>v>v.>.....vvv.vv.v..v.v...>>>v.vv>..>v.>>.v.vvv.v.>vv......>.v.v..v>.>>vv..>....vv...v..> +.>.>.>.v..v.>...>.>..v..>v.>>v.>..>..v>.>.>..>v>......v.>..>...>....>.>.v>>>.>v.v>..>v>>..>>>..>.vv>.>v...v.>..>..>.>>.v.v>>.......>.vv>vv. +....>>.>..>.>.>..vv>.v>v.>vv....>....v...vvv.>v.>..>....>...vvv>v..>v.....vv..v.>vv>.>>..>..>>.v..>.v>>v>.vv>.>vv..v...>..>vv>v>>>>v.>.v.v> +vv....>.....>.v...v>.........>.>.>.v>>vv>v..vv>v.v>v.vv>..>....>>.>v..v...>.v.>..vv>.>.v...>vv>.vv>vv>>>.v......>..>.>.v>..v..>.v...>.>.v.. +v>.>...v.vv..v..>vv>>v..v.vv.vv...v.>.vv...v>.>.v>>..v...>...>...>v.>....vv>.v>..vv>..vv.>.vvv.>>v..v...vv.v.v>.v>....>..>vv..>.v..>>...>.. +.>.>v>v>..v>>...>.>.>v......v>.>.v..v.>v.vv.>v..>v>v.v>>v..v.vv..>>>>>...vv......>v.>>>.>>...v.v>.v.>>.>vvv>>..>>vv.>.>vvv.>.>v>v.....>.>.. +..>>...v.>.>>>v.vvvvvv>vv......v.>>.v>vv>.>.>.>.v...>vv.>>>>.....vv.>..>.>>>..v>>>.>v..>.>.>...>>.>.>v..>.vv>>.v..>.v>v..vvv>...>...v..v>.. +..v..>vv..v...v...v.>.>..>v..v..v.>.>>v>.v....vv>>.....>>>v.>.v.>v..>.>v>v.v.v.v...vv.v..vvvv.>.>>.>..>>.v..v...v>..>v..>.>>..vvv..>.>>.>.. +>v.>.vvv.>>.>.>..v>.>.>>...v>..>>v>..v>>.....vv>.v.v....>>...>.v.>.v.....v...>.>..v.>v..>...>.v..v..v..>>v...>>>..v.>.vv..>.>vv..>..v.....> +>.v..v.>.v.v.>.v.vv.>vv>.v>.vvv>...v>.v..>>v>>..>.>>>>>....v>vv..v.v..>>v...v....vv.....>vv...>..v.v....v..v>>.>>.v.>v>vv>>......v...>.vv.v +vv..vv.....v.>v......vv.>v...>.>.v>....v.v.....>v>..vv...>.>..v>>.>..v.v.>>..>>..v.v.vvv.v.vv.v>vv.>v>....>>v>>>>.....>v.....>vv..>.>..>v>v +vv>...v>....>..v>vv..v>.v..>....>v>.v.v>>v..>v.>.....>vv.>>.v>.>v...v..>v>vvv...>....v.v.>v.>..v>v>>.>v..v..>vvv>..>.vv>...>>..>..v.>.>>v.. +...vvv.v.>>.>vv..>..>v..>>.>.......vv.>.v...vvv>.v.>..v..>....vv.vv.>>>..>>>.v.>v>.>>.........>.>>v.>v>>>....>>.>.>.>v...v.vvv.v.>.v.>>>>v> +>.v..>....>.v.>...>v>v.v>>>..v.v>..v.>v.v.>>v>...v>>..>>vv>>.>.>>>>vv.v>...>..v..>.....v.>..v...vv.v...>v..>>v>.....>..v.>.v.>v>v.v.v>.v>.. +>>v>......>>>.>v>..>v...>>v>v>..v>....>.>.>.>v>...v.vv>v>.>>..>.v.v....>>......v.>.v..vvv>...>.v.>v....v>..>>v>....>..>v>..v.>>v..>...>.>>> +.v>..>.>.v..v..v...v.>v...v>.v>v.vv.vv....>>vv..>vv.....>>v.vv>.vv...v..v.v.>.......v...>.........>v.v>....>>vv>.>..>v.>.>>.>>>.v...>..>v>.