Solved 2025 Day 1 Parts 1 & 2
This commit is contained in:
parent
4f07ea9f81
commit
1a711cd261
71
2024/day15/input.txt
Normal file
71
2024/day15/input.txt
Normal file
@ -0,0 +1,71 @@
|
||||
##################################################
|
||||
#OOO.O.#...O.O..#.....OO...#.....OO.O..OO.....#..#
|
||||
##.O...O.OO#.#.O.#.O.O...O#.OO.....OO..OO.O..#...#
|
||||
#OO.O....O....O..........O.O...O........#.OOO....#
|
||||
#..#.O#..O.O..O.O#..OOO...OO.#......O...O.O.#.OOO#
|
||||
#...#..OO..........O.O...O....#....O#OO.O..O.#.#.#
|
||||
#.#.O....O..OO....O#....O..OO...#.......O..O.O...#
|
||||
#O...O.#OO..O...........OO.....#O...O.O.#.OO.OO..#
|
||||
#O.O......O..#..O.#.##OO........#..##O.O#......#.#
|
||||
#..O........#............OO...OO...OO###..O.OO.OO#
|
||||
#..O..OO.......O.......#O..O#O..#.O..O...#......O#
|
||||
#OO..#........#.O..O........O.OO.O#...O#......#..#
|
||||
#.......#...#.....#..O.O.......OOOO#....O..#.....#
|
||||
#....O....O.O.OO#OO#..OO.....#.##..O#O.....OO..O.#
|
||||
#...OOO..O...OO..O..O.OO.O.#O..#O#..O.O...O...#.O#
|
||||
#O.O...O..O....#.OO....O......O....#...#.O.OOO#.O#
|
||||
#O#O#.O#......O.OO.O..O....#..#O......O....O.O..O#
|
||||
#...##..O.O......O.#.O.O...O...O....OO.....O..O..#
|
||||
#O..#.O...O.O..O....#.O....O....##O..O.OOOO.....O#
|
||||
#.O.O...O.#..OO.....O.#..#..#....OO.......O.#OOO.#
|
||||
#.O#...O..O...#...#..OO..OO.OO.OO..O#.....O...O.O#
|
||||
#...O.O.OO.O.O.O.........O.........O..........O#.#
|
||||
#....#....O##.OO.OO......O.OO.#.O.#.O...O....O..##
|
||||
#..O...O..O.O..#O.O..OO.OOOO..............O#O....#
|
||||
#...O#OO....OO.O..OO.OO.@....OO.O...O....O.O...#O#
|
||||
#...O....O..#.##..O....OO.O.O.O..#.OO.#OO....O.OO#
|
||||
#..O.O..#.O......#O..#O.O.#....O....#...O...O..OO#
|
||||
#..O...OO.....O.O..O.O..O......O.OO.OOO...OO.O#..#
|
||||
#....#.O..OOOOOOO..O#.O....O.O..OOO.O...#.O...OOO#
|
||||
#O...O...O#...##...O....OO...O.O.OOO.O#.#....OO.O#
|
||||
#..O.#.O#.OO..O.O.#..OOOO##O.O....OO.O.O.O#O.OOO##
|
||||
#.O.O..O.....O..OO..O...O.............O.O........#
|
||||
#.O.O.....O#OOO..#O#O...O.O.O..O.OO...#OO....O.OO#
|
||||
#....#....O#OO...O..#...O.O...O...............#O.#
|
||||
##....##...O#..O.OO.O..O.O..#..OO.O#....O.O..#O.O#
|
||||
#O...O.O...........O##..#.O......#..#.#..O.O#..OO#
|
||||
#.#.O.O...OO..OO.O......O..O.OO.O.......O..#.#...#
|
||||
#.......O..#..#...#.......#OO.OO...OOOO.......#..#
|
||||
#.#.......O.......#....OOO......#....O.O.O....O..#
|
||||
#O#O..#..OOOO..OO.O....O.O......O##.OO......O.O..#
|
||||
#..OOO.....OO..#......OO.##.O..OO...O.....OO....##
|
||||
#.OO...OO..O#..O.#O.O..OOO..OO.O.OO......O....OO.#
|
||||
#O..O.......O.O....OO....#.......O.....#.O.......#
|
||||
#...O#...OO..#O##.O.O.O#O..OO...OO.O.OOO...O...O.#
|
||||
#.#...OO.....O.#.OO...OO..#O...O...O.....O..O..O.#
|
||||
#..#O......OO.....O..##...OOO..O.OO..O....#...#OO#
|
||||
#......OO..##...OO.....#.....###...#O#O....#.....#
|
||||
#O.#O#......#..OO........O#.OO........O...O......#
|
||||
#...O..#...#O.....OOO...O..#.O..O.#O.O..O.....O..#
|
||||
##################################################
|
||||
|
||||
^<>^<^>v^^^v><^<^v^<><><^^^>><>>vvv<vv>^^^^v^<v^v>>v>><<^>>^v<<>vvv<^>^<^<<vv^>>><>vv^>vv^>^<vv<^^><^>>v<vvv^^^v^v^>>>><vv><>^v^v<<^<>><v^v>^<v^^><<><vv>vv^vv<<<vv^^<<v<v><<^^<v<<>v^^^<^^^>>>v^^<>>^^>>><><^<><><v>vvv<^<v^v^<>^><><>>^>v<^>>><<v<>^>^v^v>v>^>v^v<v<>^v<^^<<^vv<^v><^v<><>vv><^<v>>^<>v<vv<<v<<<v>v^>>>^><>vvv><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<vv>><^>v<^^^^<>>>v<<<><<<v^^v^v<^^<>v^vvv^^<>v><>v^^>>v^>v<^vv^v^>>v>^vv><><<^>^>v^^>v^>>^^>v^<<>>^^v^^^>>v><<<<v<<v<v^><v>^<^>^^^<v^vv<><<v^^>^>v><v<>^>><v^<^><^vv<>>^vv><v^>>>^<><vvv^^<v>^^^<>^v^^<><v<>vvv>><>>>^^>^<>v>>v<^^v>^<^^v<v>>v<^^v<v>^<>v>^^<<^<vvv^<<v^<<<><>>>^><^<v^^<v>^v><^<<<<>^v>><><^>^^v^>^<v<>^<vvv>>vv>v>><>^<>>^<v^^<><^>v><<<>>>^vv<<^>vvv<^v<v<<vv^v><<v^<v>><>v^<<<^><<<<<v<v^>v^>>v^>vv^><v^><<>><<^>>>^<v<><v^<<^<>^<vvv^>>v^><><>v^>>><v>^v><^v^<v<><><vv>><v>v^<>v^vvv^>>>v><<<v<<>v<>^<>v^^^^v>v>>v^<^<^<<
|
||||
>>v^><^^^^><^<<vv^^v<^<><><vv<^<v^^><<<^>>vv<v^<^<v><^v^>^v>vv>><^^^^<v>>^v>^><v>>vv>^vvvv^^v^vv><v>>v^^>^vv>>vv^v>vvv>v^<v<^<<^^v^^>><><^>>><<v<>^<<>><>^>^v<<<vv^>>>>>>v>vv>^^v<<^^>v<v^>v>v^<^>vv^<^vv<^v^>^^v^v><>^>^v<>^^><v>v^<^v^><<>^<vv<>>^^<>v><^>><v>v<^>^^<<v<>^^^^>>vv^^^>^>^^v<>^>v>v^v<^^<>^v>v<v^<v<v>v>>>v><^vv^<<v<^<vvvv<^^v^<^><^vv><^^<^>v^>^^^^^<>v>vvv>^^<^<v><>><>^v>v^v^<^<>v>^>^^^><v>v>^<>^<<^v><>^^v<<v>^<><^>>vvvv^<>><v^vvv>^><^<<<<v^<<^^<<>><<^^><v^v^<>v>v>v^^>v<<^>v^vv<vv^>vvv<v>^v^^<v^v<vv<<v<^>>>>^^<v<v<>><>v>v>^>vv^v^<v>v^><vv<>vv>v^<^^<v^^<<><>>vv<v^<vv^^>>>^^^<>v>>vvv^>><<^>v<^^><<vv><<^<vv><^><v>><^^<<^v>^^><<<>^^>><v>>><v<<<<v^>^^>v>v^<^<<>vvvvv<<<^v>vvv<>^^<<^vv<><v^>^v^>^v>>v>v<>^<<^<>v>^>><^>^><>^<<^v^vv<<^><<^<^>v^^>^<<<v>^<v<v>v^v<v>>^vv>^<^>^>><^>^vvvvvv>^>^<><v<>>>vvv^>v^^<>v<^>v>v<<><<^>^v>^><v^>v^<^<>v^<<v><>^>^^v<^>>^vv^<>^v<><^>>v^>^<<^vv<^>vvv^>v><<>^^^v>v<<^>><vvvvvv><>^<><<<>>v<>>v<v^^>vv^>><<^v>>>v>^v>><^>^v>^>^^<v<<vvv^v<>^^v^<<v<^^>v^>>^<v>^^^vvv
|
||||
v<<^<^><><>^>v^><vv^<<<<^>^^>>^<<^^<>^^^v<<v^<v<>><v<<^<><^^v<<<>v<^vvv>v^v^<<>>vv>^^v<^<v^<<<vv^>vv>>>>>>^<^^>^v<<^<<>^^>^>^><v^^v<vvv<v^>^^<^<<vv^<<^>>><^<>v^<>><^<<<v<^^<v^<>v<>^<<><v^<<>>>^v^>>^^v<<>v<v^v^v>^>^^>>^vv^>^<^^^<^^v^><>><vv<^>>v>>^v<^>vvv^>^^<v<^>>^><v^<v<v<<^<><<>^><<^>v^^v>^^v<<<vv>>^<<><v>><<vv^vv>^<v>v^^v><><><<>^>>vv^^>v^>v<<<^^<^>^vv><^^>>^v^^<<^vvvv^v>>v<vv^<>>>v^<^>>>^^<>^<v>>vv^v^<<^^v>^vvvv>^v<>vv<<<><v^^v><vvv<<<v>^><vvv>v<<^><^^><<<^^^^^>v>^vvvvv>^>^<v>^>v>>vv^<^<^v<<^>^>vv<<v>^>>v>v<>><<><><v^>>v^v>^v>^<v^<<^>^>>vv>>v<<<><^>>>vv^>v<vv>>v^vvv>><<^<v>^<^<>>v<<v>>>^><>^^^^vv<^^<^vv><vv<^>>v^<v^v>^v^>>^v>^><v>v^>^>^vv>^^<v>^>>^>^v<^^^v^>>>^>^><vv<<^<^<^>v^<<^^>^<^>vv<^^^v^^>^^v<>^^<^v^<^>^^><><>v^vv^>^>>>>^>v>vv><^vv<<<^>^<<^v^<^>><<^<>^><>^v^>vv>^v>>v<>v<<v^^><v^<^<v^vvvv<>^v<><vv^<<^^v^><>>>^^^<<^>>>v<<>>vv<v<v><v>v>><v>>^>v^v<v^<^^>^vv>>>v<^<<<v^v<<>v><vvv<v<^>^><>v^^^><<^<<>><<<<^>^<>>^^^>^>vvv<<<<v>>v^<vv><><^<v^v^<><v^^>^<^<^>^^v^>v^<v><v<><v>>><<vv<>><>^
|
||||
>v^vv>^^>^v^>^<>><^vv<>>^v>v<<<^<<^>>>>^^v^>v^<vvv>>>^><<<^^v<v>^>^^^>><><<^vvvvv^<>^>^>^<^^<>^>vv<>^>^>v>^>>vv<v^<>>v^<<^^v^^v<v^>^^v<<>^^v<>v>vv<^<v<<<<<>^><<^<^^>vv>^<v<><^<^vvv<>>^><^^<>vvvv<<^^><<v<<v<<v>vvv^>^<><<^>>v><vv>v><vv<^<<<<<<^><<>v^vvv<>v>>>^<v>>v<^>v^v^^<^>>><>>>^<>v<>>>>>>><v^vv>><>v>v<<<v<<>v^>v<<vvv>^^<>><>><^^^^^^v>vv^<^^<><>^vv<v>^v^<<^v>>^v^v>^v>vv<^<<^v<>vv<>vv>v>^vv^<^>vv>v<v<>^^v>v<v^>v^<>v^^>^<^^vv<<><>>^>vv^<^>v^vvvv^v^<^v<<v^<>v<^<^^>v^^>^v><^v>v<v<>>>^^vv<v><^v<<<>^<^>v<<<v><<^<^>v<>^vvv<<<<v^<>v^>v^^<^^v<>><<><^<>>^vv>^^<>v<^^<>^>^<v^^^<^<^>^v<^<^^vvvvv<v>>^>^<v<v^^>v>^>vv^v><>^<v^>^>v>>^^^vv^<<^v^v^v^<v^<vv<<^<<<^><<<><v^v^>>><^<><>>^>v<>v>v>>>v>^^>><>>v<^<>^<>>^v>>>v^>>>v>v<^<^v<vv^v>>v^<<^v<v<<<^<>>>^<v<><><vv<<<><^^vv^<>vv<^<<><>>^v<>>v^vv^<<<^vv^vv^^v<^v<<v>>>^v>^<>^v>v<<^vv^>>^^^<^>><v<<<><v<v^vv<v>>><vv>>^<<<^v>v<>><<v<v^^^<<v>^v>^><<^><>vvv^^^vv^><><v^^><v>><><>^vv><vvv<v>^>^^<^>v^<vv<<<<>v<v>^^^^><^v>>^<^<>^<^^v<^^>>>>>><^<^v<^v<v<vv^>v<^>v<>^>>>
|
||||
<<^>v>><>><><<>><v^>^>>^>^<>^^v<<<v^v<vv^<><^>^v><^><>vvvv^<^^>>v<<v^<^v<<vv<vv>>^>^v>^v>>^vv>^<>^v><^<^vv^vv^^<<>^^v^v>^v<>>vv<>v>vv<^<vvvv^<^>^v^v^<<vvv<v<^><><^>^^>^<>v<^v>^<>v<^<^<^>>^<<^^<v^^^^>v^vv^><<v^^v>^<>^v^>^^v>^>><^>^>^^v><<^<^>v<^><v>>>v>v^>^<<v<><^><^^<>^^vvv^v<v>><v><v^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^>^v<^^<>><><^v>^<><<>^><<>>v>^^v^><>>>>v<<><>>^^>^^vvv<<v^><>><>v<<<vv^>v^v>vvv<^><v^>^vv><v>>>v>>^><^vv<^^<^^^<>v>^<^<vvv<>><vv<v^vv^^v>v^>vvv>^^<vv<<>><v^^vvv>^<<<>^v>vv>><<^v^>v^>^<<>^>v<>><^^>^v>^><^>><>^v<>v^<><^>^<<v<>>^>>^>>>^<<<v<v<<^vv<^><<v^>v<<>>v^>^^v<v^<>><><v^>>v^<<v<>^>^<<>^<^^v<v^><^v>^^<>>v<>>>^><>v^>^^^^>v^<>>^^^<<<v^>v^<>>>v>>^^>vv>>><<^>v<^<^>v<<^^<<>>>^^<^>>>^>^<<^^vvv>>^>>v^<>^v<><<^>><>v>v>v<>^^v>^<vv<<^<^^v^<<>>vv>>v<^^^v><>v>^v^<>><^^^vv^>^^vv<>><vv<<^<<v^^<v>>><^<>v><^>vv>>v^^^>v>v>>vvv<>^>^^<^vv^<^<>^><^<>^><v^<>^><<v^v>v^v>^^>v^^>vv^>^v>^>>v>^>v<<^v<^<>>vvv<^^vv^<
|
||||
<<vvvv^<>>>vvv><<v<>^<>>^^>v<<v<^^v>>^v^^^v<>v^^v^>^^<^^<^^><<^^^>^^><>v<^^><^<<vv^v<<>v>><^^<^>^<v^>>v<^vvv<^^>>><>><v>vvvv^<<<v>><vv^vvv^><>^<>vvv^<vv>>v^^^v<^^^^^<^^<<><^^^^v<<>><^>>v<vv>>>>>v^v>v><<^>v<^^<><<>v<<<v^^^><v^^v>^<>^<^>^v><v>v^<>^v<>><v^vvv<<<<><<<^^<v^>v^v<<^^><>><v<^^^v<<^^<^>vv<<v<<^><<^<>><^^><v<>>^<>^<<^^<v^vv^vvv^>>><vv<<>>>><<><>^>^^>>v^v^>^>v>v>vv<><v<v^^^^vv>>^^>><<^v^>^vv>>v>><<><>^^vv^v^>>vv^>v^>^>vv<v>vv<^>^>^><^>v^<^^vv>>^<v<^><>^^^^<^><<^<^^^v>v^<<><<vv>v<vvv>><v<<<^<^^>>v><^>^vvv<v^v<^><^<v>><<<v<<^^v<<vv>^vv<vv<<>vv>v>v>v>><><<<>v^v>^^v<v><v>v<>^^>><>>>^>v<v^v>>^^v^^<>^>^^vv<><<<v<^<v<^<v>v<^<^vv<v<<><v<<v^^^v<>v^vvv<<v<>>>^^^v>v^<<<^^>^>v^^v^>^>^vv><^^^>vv<v<<^v^v>>v^<^^^v^^<vv<<<><v><>>^vvv<v^vvv<<v^vv<v^v^>vv<v<>>^<>>><^><><<<v>^>>>^<<<v>>v^v^<>>v^^^vv^^<>^><^<>>>v<v<><^>v^<vvvvvv^<<vv<<>^^>>vv<^<>v^>>><vv><v>>^>><>^<<<v><>^<v^^<v<vvv^v>v^v>vvvv^^v^v^v>><<>>><^^>><v^>v>v<^>^<>^<><<<v^>v^v^><>^><v<>^v>^^><^^vvv^><><<vv><<^>^<<<<v><<^^>^<v<>vvv<v^>^v<v^
|
||||
^v<>^^^<<<v^v^vv<^<>>^^<v>^>><<^v^<^>>^v<v>^v^><<>v<<^<^<<^>v^<v^>>v>^v^^vv>^><<^v>^<^>^>v^^v<<><>^>^<>><^><<^v<<vv>^vv^v^>^^>^^>^<<^<<^<<v<v^^><v^^>v^>^>>>vv^<>>^<>v>>>^><<<><>^>^<^v>>^<v^>>>>v<>v<^vv^<v>^<v>^>v<v<>>v^>vv<^<><>vv>^^<v<><<^v^>^v^vv>v<<v^v<>v^v>v><^^<v^>v^^v<><v^>vv^>^<>v^<vvv<vv>^>^vv>v^<>vvv<^vv<>^^<<^^<<vvv>>v^v^<^^^<v<^v^^<>^>^^<>>^^v^v^><^v><>^><v<v^<>v^><>^vv<^<<>vvv^^<v^<^>><v>v>^v>v>^^v><v<v<vv^>>vv><^<>^>vv<>v<>>>^<>^^^vv>v^>v<>v^vv^^<vv<v<v>vv>><v^vv>><>v<vv>^><<vv<>v^<<>^<><v<>vv><<<^<>>v^<>^><^<>^>^v^><^^<v<>>vv^><^v^^>v^v<^^^<>^v^^<<><<>v><>>>><>v<<^^^vv>^^>^<<<>>>v>>v>>^>^><vv^^v^vv^^<vv>v^^<v<><^vv><vv<v<v^^>^<<<>^><>^v<v><v^v><>^v>^><<^>^>v><<v<<^^vv^^>^^<^>v>v>^v<<v^v^^vvvv>^<^vv>v>v>>v>>><v<^><^<vv<^>^>v>^^<>^^v>^<<<>^<vvvv><^v>v>^^^>vv^<><v><<<>^^^v<<<<<<>v<^v^>>>vv<^<><^>^^>>><>>^>>>><v^<>^^<>^^^><v<<^vvv>vv>v<<<><<v<><v>vv>v>>^v<v>^<vv^>^vv^<v>>v>>><>v^^>><>^^<<>vv^v<>^<<><<v^^>v<^v^>>^<v<v>v><>vvv^<<^>^>v<>^vv<>^>>^<><>>>v^<>v^v^<^>><vv><<<>>^v>vv^
|
||||
>v^vv><^>>^v^<<<<>vv>^<vv^<v^vvv^^<><^<v>v^<><<>vvv^<^v^>>><v>v>^^>>^vv^^v><v><><<^>^<v^^v><<>^><>^<v>v^<><><<>v<><^^><^<<>>>v^>>v^^^>^^v<v<<^>><>>v>^^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<v^>^<<<^v>>><><^vv>>v<^vvv^>><>>>v<<>vv><>v^^v<v>>v<v^>v><<<v<^>^vv>v<>v^^<<<v<^<>>^<<>^^>^><<^^>^^>v^>>^>v>^v^v>v<>>>^<<<<^v^^>^>^^v>^>^v>^^>^vv<>vv^><v<v>>>^v^>><>><<>v^>>v<^v<><><<<>^v^>>^^<v^>v^^>vvvv>^><<><v^>v^^^^<^><vv<v<v<<<v<<v<v>v<vv^<^v<^v^^v<<^v><^<>^^v<>>^<^<>v>^>><<><v<^>><<>^^^v>^^^>^v^<>v^>><>^<vv^<v<^>>>vvv>^^>vv<^>^<<>^v>><vv<<^>^<^^vv<^>vv<^>^v>>>v^>>^<v>v><><v^<<>v><^<v>^>><>^v<<vv<^><v>>vv>>>^v<^v<<<>v^<>><>^vvvv^vv>>>>^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<vvv<^<^v>>><^<<>>><<v>>><^v>><v<><v<><^<^^v^^>>>>>>>>^<<<v^>^><^>vvv^^^^<>^<v>vv>^vv^v^>v<>>^>>^><^v<v<<^><vvvv^<^^^<<v^^<v^>><<<^<<<v>v^><>>v<><><^v<^>v^v
|
||||
><>^vv<v<^>><^<><<^^^^v<^>v<<><^^^v<vv^v^<^v^<^v<v<>vv<v^<<<^>v^v^^v^>v>><>^^>>>vv^<<^>^>><v^vv^>v>v^^<<>^>v^^v<^v>^>vv^v<><>^>>^>v<<>v^^<^^^>>v>><v^v>><^^^vvv<vv^<v<<^>v<^^v<vv>v<v>v>v^^v^^>^v^>^v^><v><<v>^<v>^<>><v<<>v^<<>v>v<<<^^^v^^<>v<v^>^>>vvv>v><vv<v>v>^v^v<<^^vv><>^v>^v^>>^^v<>v>v<^^^<<<v<>v<v<v>vv^vv><<v^v><vv>>^<>><<^^<v<^>>^v<^vv<<<<>>><>^><<vv^^>v<vvv<<^v>vv><vvv<v^^>>>v^v>><>>^<>v><><v>v<<<<^^<v^<v^>v<<v^<^v<>^>v<<<^^^>^>v<^v^<<^<<>><v><v>><v^<^^^>v<<v>^vv><>>^>>>v^^vv^<>>^^^v^<>><>^vvv^v>^^v>^^<^^v<<^>^><>^v>v<vvv^<<v>vv>>>>^^^><<<>><>v^v<vv>v^^^^<>v<^^v^v<v^vv^v>>>>^^><><>>>>^v^>^v^v^vvvv>^^^<^><>^^<vv><v^<^v<><vvv>v>>><^<^^vv><vv<<>>^^^v^v><>vv><<>^v^>>^v>>><^vv^>>>>vvv^^vvvvvv<^vvvv<<v<<vvv^^^>v^<<^vv^<^>v^><v<>>v^<v^^^^v^^^^<<>>>v^^<^vv>><v<<<v^v^^<>>^vv^<v>>>>v^v<>^^>^>v<><vv^<<v^v>vv<<<<^<<<>^^v^v^^<<v^v^<v^^>><^<>v>^v>vv^><<v^v^^vv><^>><^<^^<v><<v<>^>>>>vvv<^>vv>^>v<>><<^>^vvv^>>v<><^>v^v<^<>>><^^^<v>vv<v^<^>^<<<^^<v^^v<^>^<>^^>v>^<v<>v><>^<<<^^^^<<><^^v>><<<v><^<^
|
||||
vv>>^vv^^<^vv<^v>^<>^<v<^v^v^v^^>^^vvv>^<>^<<<<^^><vv^vvvv^>^^>>v<^><v^vv^^^<>>v<^vv^^^<^<<^^<>^<^^<^<v<<^>>>^<^><>>>vv>^>v^^>v><^<^<v>><v<v>>>v<^^>><v^v<vv>^v<vv<>^^<<>>v<v<^^^<<v^^<<^<^^<^<>vv<v>>v<<<<>v<v>><>^^vvv<<>><>>^v<vv<v<v^><^>>^v<v^<>>>>>v>v<>>^<>><>>v<<>v<^>^^v^^vv<<^<<<><^<<vvv<^^>>>v^^^v><<^<^<^^>v<<><<^>>v>^v^<<<^vv>>>^^^vv<<<>^>><>v><<<v^^^<^><>>v>^vvv<<v^>v<v^v>>><<<vv>>^v<^><<^v<<^v^>>>v<^<^>^^><>>v>^^^>vv>vv<v<vv<<<>vv<>v^>^^vv^<>>vvv>^<>v<>vv^v>v^^>>><vvv<v<>>^^v><vv<<vvv<>>v>^^<>^><v^><v^^^^<vv>^<v>v^v^v<>v>^v^v^>^<<v>><vvv^^v<^>>vv><><<v>>>>vv>^^vvv>v<vv<<vv<<^<^><<v>v<<v^v^v<v>>v<<<<^vv>v^^>>v<^>>v^>^<>>v<<^<><vv>v^^^v^>><vv^>>^^<>^<<<>>^<<^v<>^<<<vv>>>^v^<v>^v<<<^^^>v<vv>v>^<>v><>>v<^^<<^^><<^<v^^^^>^>v<>v>^<<<v<>v^^><v>>v^v>vv<>><<>^^^^>>^vv<v^v><>>>vvv^<<v<<v>><<>^^<^>^^><^^v^v^^>v^v^<<^v>>v<v>v><>v>>vvv^v<^<v>>>^^<><v<^v>vv><v<^<^>^>vv^v^<^^vv>^>><v>>^>vvvv<^<vvvvv^>v><>><v>>v<^<^v<v>^>>v^>v^^^vv^v>v<^v>^^>>><v^v<>v>vv<vv^v<v<>^v<^^><v^^^>^<>v^v^v^^vv^<<<v^>>
|
||||
^<<v>^v<v^<^^^v^^v><^v>^^^<v>>><<<<^v^><^v>v>>^><<vv<<^<^^v<v>>v>^<>vv>vv^^>>v<<><>v>vvv^v<>v^^<^v<<^^^^<^>>v<<<^^>v>vv<>^^<^^^>^<^v<<><^<v>>vv><<>^vv><^<v><^^^^vv>^^<>>v>^v><v><^v^>vv><<^v>^v<<>v^<>^<^>^><v<>v^>^v<>v>^<<<vvv^^v>>vv>^^^>^^><v<^^><>v>><^v^>^<v^<^^^v^^>v<v>^>><vv^>><<^v<>><<<v>^v<v<>v<^>>^^>^>v>v^^>v>vvv^>>v>>^<<vv><v^vv<>vv<v<v<v<><v>v^^v^<>^^^^v>>^v^<^<^^>><^^<><>^v<^>>^>^^<vv><<<><<^>>v>vv^^v<v^v^v>^<<<<^^^>v><>><vvv>>>>v^v^>>>>>>v^^<<><<^>^<^>^<>v>v><v<v<^<>><><>vvv>>v<<vv^<><>^>^^<^<^v^^>^<<^^<^>^^<<>^><^<^><<<v>v<<>>v^<<>>>^v<>v<vv>>>^vv^>v^>^^v<^^<><>v<>>v^^><v<<<<^^>><vvv><v><<<<v<^<<^vv<>>><>>>^^<>^^^^^^v<v>vv<<<<v^vvv>v^v<^<<^v<>^v>>^v<<<<^<>>vv^vv<v><^>>>>>^v>v>>^^v^<<><<>v<vv<v^vv<v>^<><<<v>^<><^><><vvv>v^^^><vv>>v><^^^<<<><^<^<<>^^^v^v^<vv<<>><v<v^<>^<vv>v><>><^<^^>vv>>v>>><>^<v<v><^v^<v>>^>>v<^v><^^v><v^<^vv<v>^<v><<<>>^vv<^^^<>>><^<^<v<>^<v>><v<<>^<v<v<<>>>>^<v<<<><>><^<>^>>v>^^<>^v^vv^>><^>v<vv<>>v^vv><^^<v^v><^^<v>^^^^<^v^^>v<v^^<^^>v>^><v^<^>>vvv<^>>vv>
|
||||
<^<^<v^^v^v>>^>vv>>^><<v^<><>^<^>vv<>^<v<^^<^v<<>^v^^><<<<vv>vvvv>vv<^><v<^<<^v^<v<<><^^>>^><^v^<^^><v>v^<<v>>^>>^^^<>v<v^><>>^^vvvv<^<<<>^<>><^^<v<<^^vv^^>v<<<v>>v<><v<<<^^<^^>^>><^>v^^<>^>><>vv>^^<vv><^^vvv^v<^<^v>^^<v^^<><v<^><v^><^>v>^>>>^<vvv>v>>v^v><>><><<<v^v^^<^v>^>^<>>^^v<><^v^<<^^<^v^vvv>>v^^>>v>><^v^>><<^>>><<>^v<^^^<><v>v<^>>><>v^><v>>vv<<><^><<<<^v<<v<><<v^^<vv><v<<^v>v^<^>>v><<^><^<>^^<vv<<<<^vv<<<>vv>^<<<<<^>^><v>^^><><^^>><<>^^><<^v>^<<>v<>v<v^<^^v><<><<<><>>^<^^v^^<v<vv^>^>v<<^^^<v^v><<^><^^v<>^vv^<<<^<<<v<>v<^^>^><^^<^<^<v><>vv>vv>^^^^<<<<>v<<><<<^^>^>^><v<v<>vv>^><^><<^<<^<>>v<^><>^v<vv^^<<>v<><v<<v>>>><v^<^^<>^>>^<^v^^<>v^v>^<<v>><v^<v<^v>>>^^^v^<>v<<vv><v>><v>v><<^v>^<^<<<^^^<^vv^<>v<<v^v><>^vvv^v^^^>v>>>v^^<^v^^^>^v^^^>v<^v<v><<^>><^v^<vv^<>>^v<v<v<>^v<<>>>>>^v^^v<<>v<<v^>^v<<><v^>vv<vvv>^vv^<^<vv><v^^>><>><<><^v^>v^>^<<>^>^^vv^^<<^>><v^v>^<v<v^^v^<>>vvvv^<>v>v<^><v<v><^^<v^^vv^<^<<<vv>>^v<vvv<v<^>>>v^><>^^^^^^v^<v^<^v<v^>>>v<v<vv<^^<><><v<^v^<^^<<>vv^^^<>^<^^<v><
|
||||
>>^v<<v><<^>v><<^<^<<<vvv>^^>>v<>^<^<^^^<v>v<vv^>>v<>v^><>v>^<>vv>><^^<^<>>^vv<vv>^vvvv<<^<>><>v>>^><>v^vv<^v^>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^>vv<v^v<^v^v>^>>vv^vvvvv^>v^vv>^<><^><v^v<>^>vv>>^vv^v><^<><v<<>>^><^vv^<v<<v<^<<vv>v^<^v<<<^^v<>><^v<v^^v^<<v<>^>^>>>v<<vvvv><^v<>>><vv<<>>vv^>^^vv>^vv<<<>^v^<vv><v>^v>vvv^^^v<vv<^<<v<>v<^<vv<>>^^<v<><<>v>vvv^>^>vv><<>>v>><<>v<v<<^v^<>>v<>^^^^>><vv^><<>vv^><<<<^<<v<<<<^^v>^vv>>^<^^^<^v><v^vv^<v<<<<<<>><^vv<>v>>v<><<^<>>vv><><vv^><^v<<<^^>>v>^^^^v<<v<v^<<><<^^^vvv^^^v>><v<<<^<>vv^<^^<>v^>>^^v^vv<v^v>^><^^>>^>>vv>v<>^^>v<vv<v^>>v>v^<>v>><^^vvvv^<<<>v<v>^<<^^>^^<vv>^><^vvvv>>v^<v^>^>>>v<<<<<><v<v>v>>v>^>v^<<><^^>><v^^v<^<<<v^<><^<^>^>v<>^>v^^v<vvv>^<<^^>v<vvvvv>><<^>><<v<>^v>v>^v^>v<v^<^v>v^>vv^><<>^^<v<<^<v<>^<vv<^v<>>>>v>>^<<v>>v>v<^<<^v^<><>vvv<^<>v><v^^^^^v^vvv^^>>><<>v<v<v^v<><^^^<^><<><>^>>>>^^>><>^^v<^^^<>^^^><>>>v>^>^<v>v^<>v>^>v>v<
|
||||
^>v<v^^<v<v><v>v>^<<<<^><<<v^>^>^^<^^<^<^v<^><^v>^<^vvvv><><<^^<v<v<vv>v>^^<v^><^v>>^>><^v^<^<v<>^<^vv>v^vvv^^><>>v>>^<^^^<><v<^<^^<<^vvvv^>v^^<^>^>v^<>^<<><v<v<<<><v>>>>^^v^^^<>>>>vv<v^<<<<<^><>>^^v<<><<v>>>v<>^<<^<^v><^>v<v>^<vv>^><v<^^^^v^v<<v<v<v>>vv>^^v><><<<vv>^vv^v>v<^^vv^v^^<^<^^vvv^^^^^v^^><vv<^>^^><v^v^>^>^>>>^>v^>v<v<v><^^<>v^vv^vv<>v^^v><v>^v<^^^<v>v><v^>><<^>><^>vvv^vv<^><v^^^vv<>v^^<>^<<^^>vv<<v>^>^>v><<^<v>>^>^v^^>v><>>>^^^^^v^vv<<^<^^v^v<v>vv^vvv>v^<^v^^>v^vv>^<v^<>v^v>>>v<^<v<<>>v^v^<<<v>><<v>><^vv>v>>>>^v><>><>v^vvv>v>^>v>>><<><><v<vv>v<vv^vv<>^v^>^<v>v^^>>^<<v><>><^<>>><>v^v<^v<v^>vv>^v<<^<><v>><v^>^<vv^^v>><>>^>^v>>vv>>><<<<<<v^v>>^<<<<v<><^^^^^^^>v<>^>^v<><<^>>><^>^^^^v>>^^>v^>v<^v^v>>v^<v^><><><>><v>v>^>>>^<<><^<vvv^^v<<^<<^v^<>^^>^<v^^>>v>^v<>v^<>>^><^^<vv><<^^^<^>^<<<>>^vv><>^<^^^>^<><^v><<<<^>^>v<>v^>>^^vv^<v^<v<^vv^vv^>vv>^<><^v<^^<>v<vv^vv>v>>^^<^v<<^><v>^v<^<^>v^^^v^<><^<<^<<<v>>>>^><v>^>^^vvv>v><v>^v><vv^<<><v>^>v<<v^^v^v^>vv<v>v>vv<v<v<^v><<^>^^v>^<vv>>v<v
|
||||
^<<<>^^<>v<v^>v<v^v^^^<>v^^^v^^<v><v<^^^^v^<>^^>^v^<^>^<^<^><><<>^^^v<>><><>>>>>vv^v^^v>vv^<<^<<v>>^^<>>^<>^vvv^vvvv<<<<v<v^v^v<^^>v<>v>>v<>^<^<^<^v<<>v>^<vv<^v^<><<>>v^<v>vvv^>^<<<^<v<v^<v<^^<>><><<>><>>^v>vv<<vv><^^^^^v<v^>vv^><><v^>v^^^<v>v^^^^vv^^v<<^><<v^>^^<^<^vvv<vv<^v>>v>>>v<v^>v<v<<>v^v<vv><^<vvv<>><^v^v<<^^<>>><>^^<^<<v<^>vv^^>v>v^>v^^>v>v>v>^><^<><v^^<vvv^>><><^v^<v^>vv<v<>>>^<<^<^^<v^<v>>v<>^>>^^vv>>^^vv<v>>^^^<v<v<^>^>^>^<>>v<<^^v>^^^v^<>v^><<>>^><^>><v<<v><vvv^^^^v>vv^<<<^^v>>^^<^v^v<><^<^vv<<v><v^>>v<^<v>>>><^v<<^<^<vv<<^>vv<^>>><^>^<^<<^^^^<v^<v^<v^>^<^>v<>v^^>^<v^>^>^>^v<^^<<^>>^>v>v>>^<^>>vvv^>>^<<v^vvv>vv^>v<vvvv>><^v^<vv>v>^v>^^>v>^<>vv<vv<<vv^^>>^v<^^v><>v<^<>v^>><v><^><>><v>><^^v<v<<v^v<>v<^^<<^^<<<<^<><<>v><>>>>>v><>>^^><v<^^v<<v<>v<vvv<>><>>^<v^v>>><v^^>><v<>>v<>^<>><>vvv^>>v>^>v^>v><^<v^>>><^^v>^<<v<^v^^v><v^^v>^v^<>^v>v^><^<v>^vv<><>^vv>vv<vvv><v^<>><^<<><vvv>v><<vv^><<<>><><^^v^vv<v>>>^>>>v>^<<<<^>v^>>v<^>v><<v^^>^>^>v>^<v>v^v>v>>><^>>v<v<<^v<v<<v>vvvvv<v^^^<
|
||||
<^><<^>v^v>>^>^vv<v^v><>v<v<>>^<^^<>^>vv<^v<^^v>^<^^<<<>^>vv>^v^^vv><<>^vv>v^>>v<^<<<^><>v><^><<vvv^<<^vv>v<><><^v>v^v<v^<<>^<^>>vv^v^v^<^^vv^^v^v^v<^<>>v<<><v^v<^^v^^<^<>v<>>>>>>v^>>^v^<^>^>v>^^v<<^<>>><vv^>^>><<>>^><v<>vv<><vv>v^><><>^>^<^<^v^^>>v<>vv^>>>>^<v^^><><<<v^^>><><^^<^><><^>v>v>v^vv<<v><v>^^<^^>><^><<<v>>^^^^>>v<v>>v<><>v<^v>v<v>>v<v<<^vv>^v>>^<>>><v>v^^v^>^<v<>>><vvv<<^>>v^v^>^>>^<><>>^<<>^vv^^>^v<>>^^^vv<^>^<v^v^vvv^v>^vv^^^<^^><v<^><vvv<>v>^^>>v^<v^<^>>>>>v^><>>>^^<<<^v^v^^<v<^v><^v><>^^vvvv^<<<v^vv<^v^v<v^<v<<^vv^^v<<<<>>^<>>>v^<>^>^<>>>>^<<>^^^>v^<>v><<>>>^v^vvv^v>v><v<>v><<vv<^<^>^>vv>^>>^v^<^><<>^v^v>>>^<v>^v^<>>^<>v>^><><v>>^<^v<v^vv^><^<<<^vv^v^<>^><v<v>>v>>^<>^v^>vv^^^^v>>^>>vv>>^v<<<^>^^>^<v>vv^<<<^^>>^<><^<<^<vvv^<>v<>^^^<vv<vv^>v^>><vv^<^^><<>v^vv<><<v^<<v^>>^>><<v>>^^v><<^^<^<<<><v<v<^<<vv^<vv^^>>v<^>^>>v<^<^<<>^^^^^<v<^>^^v>>v^^>^><><^v<<<^>>>^^^<v^vv^^<v>^>v<v^<^^<<vv<>^>>^>>^><^<>vv>^>v<><^<<>v<<^>vv>^^v>^>^v^>^>^>^^><^>v^>><^<<v^>^vv^<<<>^^v<vv<^>v>^<>vv><
|
||||
^^<v>><v^vv^>^vvv<v^vv<vv^<v^<><v<>v>^<<>^<vvvvv<vv>^<>>^vv^^^><^<<<v<><vv^<<<^^>>v>><^v>v^>^v<^v^>><v>^<^v<v^v>^^^>v><v^<<^^<^^^^^<v>^<>>^vv>v<^v><>^v<><v^v>^><<>><v^<>>v>>v>vvv^v><v^^<<>vv^><<><><vv^v><v>vv>>^v^<<^v>><><><>>><v<v<<<v<>><<^^<>>vv<>v^><^>>^^^v<>v>v>^^vv^v<>^>v^<>^<^>><>>><<>v>><>^v^v><>v>>^>><^^<<^v^>^>^<^<>>v<<^^^vv><<<^v>^^<v>v<vv^<^<>v^^^>>v>v>v<>vv<^<>vv><><>><^>>vv^vv^^^<><>^<v^vvv>^<>vv<<v>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>^<^<^<^vvv>v<^<^<<^<<>^<v<^>v>>>>^^>v<^v<^>v^<>>v><vv<>>><^^<^v<^^^vv>>>>v<v^^v<<>^^>^>^<><<>v^v>^^vv^>><>>^vv^<v<<<^v>^<>v>v>>>^v<><v^^^<<><v<><v^v<^<<vv^><>^>^>^<>>v^><<><^^<^><<^vv<>^>>^^^v^^<^<><^v<v>>^<^^v^v<<v^v^<vvvv^<<>><<v>v^>v<v<<>^^>vv^<><v<v><^<><^<^>v>>v<v<vv^^<<^^<>^<v^<^^v^^>^vv<^<^>^>><vv<vv>v>^<>>v^><v<^>v>^><vv>^^<><>v<v>v<>^<^v^<><v<vvv<^^><v>^^>v><^<>>vv>v^<>^<^v><<<^^>^v^^><v^<vv>^^^v>^v>v>>^^v<^v^<>>><>v<>vv^>>^vv>v^v<v>^vvv><^><>v^><<<<^<v^v><v<<^^><vv>v^<^>
|
||||
^>>^^^vv>>^^<<><<^v>>><^>^v^^v^v<<vv^<^>><v^>vv^><^<^^v^>><<^>><>v^v<v>^^vvv<<<vv>^^^><^^v<v<<<><<<^>><^><^^><<>^><>>^<vvvv^^<^>v><v>><>>^><^^^^^vv>v<<><vv<^^^v><^>>^<v>^vv^>>^vv<vvvvv<^><^vv^^>vv<^><v^>^^v><><<<v<^>>v>>>^v>^vv>>>v^<>><v>>vv^<^v>v>v><>vv^>>>^v<>v^<vv^^vv>v<v<<^^vv><v>^^>v<><<v><>><>^v^vv^<^<^>^>><>^<>^<vv^v<><v>^<>v<>><v<>><<v>vv^>v<vv><<v>^<><^<><^>>^v<vv^^v^>^><^vvvv^<>^vv<><<^^^v^<>^vv>v^<v<>v>v>^^<<^^>^vv<v><v<v<<^<><<<><^v^^>^<<><<^<v^<^><^>^<^<>^^>><^^<v>vv<v^v>v>><<^<^^<v^>^^<^<^^<v^<<><>v^>v^^v><<^><^^^^<>^><>v>^v<vv>^vv^^>>^^>>v^<<<^vv^>vvv^^^^<v<>>v<<>>><^v<><<v>v^v^^^v^<>>v^v>^>><^^<<v>>><<^^>>v^^<^>>^>vv^^v<<v^<v<^>^<v><<<v^v^^><<v>^^^v<v>>^>>^><^^vvv^^>>>^v<v<^>^v>>v^>><^v^v^><>v><>v>vv^>>><^<^vv<><<^<<><<^^^^>v<^>v<v<><vvv>^>>vvv>v>^<^v>^vv<<^<^v<>v<<v^^v<>>^^<>>^><<vv<><<v^v>>^^v^<><^v>^>^>>>^^<^^>vvvv^vv<v^^<<><>^>v^v>><v^<<<v<^v>vvv>>v<<>^vv<v>^vv><>^^<<^<<<<<<<>^^<>v<<<^<<<<<<><>^>^vvvv<<^>><^^^vv^>v^v<<>^><v^<><v>>^<vv^vv>^>v^<<<<vv><<<<^<<>^<>v^v^^v
|
||||
v^v^<<v>vv^^><>v><^^^<v<>^^>>>>>^<^<>^^<^<<>>vv<>>v^>^^><<^^<v>^^>v>>><v<v><<><>v^^v>^vv<v<vv<v<><>>v^><<vv^<<<^>v<<v>>>>>v<^vv<>>>v>^<^>^>>^>^^><>^^^v<^v^<vv>v><^<>v^<>>^<<^<>>^^vv^v^<<<^>v<<<<^<v<<<<>^><v>>v><<<>vv^<^>^^<>>v<v^<v^><^^v<<^>^^v^^>><^vv<><<>>^^<vv<<^v<^><>>vv^^^<>>^v>v^v^v^>^v<><>^vvv>><<^>v<v>^^<<^v<<v<^<>v^<^>>vv>v^v<vvv<>vv^^>^<v><<<><^><<<v><v^>v^v>v>><^>^><<v<><vv><v<^vv<^><vv>>^v<v><<v^^>^^><vv<v>><v>v<^vv^^v^<v>^vv><vv^^^>^><>^^<v>><>vv>>^v>>>>v>><>v^v^^<^>v<^>>^>vvvv>^^><^<v^^vv^v^<^><vv^^^>^^><><^vv<^<^vv^^<<vv<v<^>vv^^><v<>v><><<v>^><v^><v>^<^vvvv<^<v<v^v<v><>><><>v<^>><<^<<^v<v><v<>>v><><<<vv^^><vv^<v<vv>><^><>v^v^v>^v>>^^vv<><v>>><><>v^v>^^<^<v>^^>vvv<v><^^>>v^>>v^^v<><<^v>><^>>^<v<>v^><>^>v><^><<^v^^v>^><>>>vvv<v^^<><^<<<<^^vv><<>vv^v>v<>vv>v^^v<^><vvv>>vvv<v<^^<<<<<><v^>>^>>v><^v^<^<><<<v<v<^v^^v<^^^><v^^vv^^<<^v^^^^<>^><>^v^v^v<^<<v<^>>^>v^v^<>>>>v<<><vv<v<^>^^>><v^vv>^^vv<>vvvv^<<<<vv<>^^vv>>v>v<^v^v>v^^v<>v>v>v<vv^vv<><^<>^>^>>^>^<vv<<vv^<><<<vv^v>vv^<>
|
||||
<v<^<v<^>>^vv^>^v^<<^><^<v^<^^^<^<<>>>^^<<^<vv^v<v<<v<vv<<v^><^<<>>^<^^v><^v>>^>^^<<^^v^vv<v<<>^^<^>v>v^<vvv<><^^<<vv^<>>^^^>>v>><^<vv<^><>^<^v^>vv>v^^v^^>^^<>^>^>^<v^v><^><^><>^^><<v^v<<<v^v<><<<v^<><>v^vv^v<>v>v^<^>^<<>><v<vv<^^<<>>^>^^<^<vv^v<><^v<vvvv>>><vv<><v>vv><v^^>^vv>>vvv>^^<>vv>v><<v>>^<>v>^^>^v^^vv^^v>>^<>>^^<><vv<<v<^<v<^v>vv^<>v><^>^<<v^>v>^v^<<vv<<^^<v^<<>v>>^v><<^>^^<<><<<^^v^<>>vv<>v^v^>v<<v^v<^^<>vv<v>><>v<^^^<>>v>v<^<v^>v>>>v><<>>>vv><>^<^>><v<>>v^><^^<v<^^<>>>^>v<<>>^^<><^vv<vvv<^>><^vvv<^<<v>v>^v<>^<v<>>^<v<^<<v<^v<v<<<vv<^>><<>v>vv><>v^>^<>v^vv<<>^^^v>v^>>^<>^>v^^^^<v>>^^>^<<v^vv>^v^^v^v^<^v^><>^v<^^^<v^^>>^><<^^<v><v>^^v>v>>>v^>v<vv<vv^^><vv^v<<<<<><<v^<<>>v<<v<vvv>v>>>^>>>^<>>>>v^>vv<<>^><<v>^v^v><<vv<vv<>v<<><>v^vv>^>>^^><^<vv^<<>^v^vvvv<<^>v<>vvv^<><<<<>vv^^>>><>v>v<^^<v<v<<v>v^^v<<<<^>^<v^vv<v>v>>>^vv>^v<<^><v>vv<^v<v^<><v>>>^<>>><>^^<>^v^>vvv^v^^v^<^^v<^>v^^<>^<^><v^<<v<<v<<^^>^v^^>><<v>>v>^<v^<>^^><<<v^<>v>^v^vv>vv<<>^^<^>>^<<>><>^v^<<<v^><<^^^<^v<<v^>^^vv>
|
||||
342
2024/day15/main.py
Normal file
342
2024/day15/main.py
Normal file
@ -0,0 +1,342 @@
|
||||
ROBOT_SPEED: int = 1
|
||||
|
||||
class Coord:
|
||||
x: int
|
||||
y: int
|
||||
|
||||
def __init__(self, x: int, y: int):
|
||||
self.x = x
|
||||
self.y = y
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f'({self.x}, {self.y})'
|
||||
|
||||
def __eq__(self, other) -> bool:
|
||||
return other.x == self.x and other.y == self.y
|
||||
|
||||
def __add__(self, other):
|
||||
return Coord(self.x + other.x, self.y + other.y)
|
||||
|
||||
def __sub__(self, other):
|
||||
return Coord(self.x - other.x, self.y - other.y)
|
||||
|
||||
def __mul__(self, other):
|
||||
return Coord(self.x * other, self.y * other)
|
||||
|
||||
def __rmul__(self, other):
|
||||
return Coord(self.x * other, self.y * other)
|
||||
|
||||
def copy(self):
|
||||
return Coord(self.x, self.y)
|
||||
|
||||
class Warehouse:
|
||||
robot: Coord
|
||||
walls: list[Coord] = []
|
||||
boxes: list[Coord] = []
|
||||
width: int
|
||||
height: int
|
||||
|
||||
def __init__(self, warehouse_map: list[str]):
|
||||
for y, line in enumerate(warehouse_map):
|
||||
for x, c in enumerate(line):
|
||||
match c:
|
||||
case "#":
|
||||
self.walls.append(Coord(x, y))
|
||||
case "@":
|
||||
self.robot = Coord(x, y)
|
||||
case "O":
|
||||
self.boxes.append(Coord(x, y))
|
||||
|
||||
self.width = len(warehouse_map[0])
|
||||
self.height = len(warehouse_map)
|
||||
|
||||
def __str__(self) -> str:
|
||||
w = [['.'] * self.width for _ in range(self.height)]
|
||||
|
||||
for box in self.boxes:
|
||||
w[box.y][box.x] = 'O'
|
||||
|
||||
for wall in self.walls:
|
||||
w[wall.y][wall.x] = '#'
|
||||
|
||||
w[self.robot.y][self.robot.x] = '@'
|
||||
|
||||
s = ''
|
||||
for row in w:
|
||||
for c in row:
|
||||
s += c
|
||||
s += '\n'
|
||||
|
||||
return s
|
||||
|
||||
def move_robot(self, command: str) -> None:
|
||||
|
||||
dx, dy = 0, 0
|
||||
match command:
|
||||
case '>':
|
||||
dx += 1
|
||||
case '<':
|
||||
dx -= 1
|
||||
case 'v':
|
||||
dy += 1
|
||||
case '^':
|
||||
dy -= 1
|
||||
|
||||
movement = Coord(dx, dy)
|
||||
|
||||
new_pos = self.robot + movement
|
||||
|
||||
if new_pos in self.walls:
|
||||
return None
|
||||
|
||||
if new_pos in self.boxes:
|
||||
if self.push_box(new_pos, movement):
|
||||
self.robot = new_pos
|
||||
return None
|
||||
|
||||
self.robot = new_pos
|
||||
|
||||
def push_box(self, box: Coord, movement: Coord) -> bool:
|
||||
new_pos: Coord = box + movement
|
||||
|
||||
if new_pos in self.walls:
|
||||
return False
|
||||
|
||||
if new_pos in self.boxes:
|
||||
if not self.push_box(new_pos, movement):
|
||||
return False
|
||||
|
||||
self.boxes.remove(box)
|
||||
self.boxes.append(new_pos)
|
||||
return True
|
||||
|
||||
def score(self) -> int:
|
||||
total = 0
|
||||
for box in self.boxes:
|
||||
total += 100 * box.y + box.x
|
||||
|
||||
return total
|
||||
|
||||
class BigBox:
|
||||
right: Coord
|
||||
left: Coord
|
||||
|
||||
def __init__(self, left: Coord):
|
||||
self.left = left
|
||||
self.right = Coord(left.x + 1, left.y)
|
||||
|
||||
def __add__(self, other: Coord):
|
||||
return BigBox(self.left + other)
|
||||
|
||||
def __eq__(self, other) -> bool:
|
||||
return self.left == other.left and self.right == other.right
|
||||
|
||||
def __str__(self) -> str:
|
||||
return '[]'
|
||||
|
||||
class SecondWarehouse:
|
||||
robot: Coord
|
||||
walls: list[Coord] = []
|
||||
boxes: list[BigBox] = []
|
||||
width: int
|
||||
height: int
|
||||
|
||||
def __init__(self, warehouse_map: list[str]):
|
||||
for y, line in enumerate(warehouse_map):
|
||||
offset = 0
|
||||
for x, c in enumerate(line):
|
||||
match c:
|
||||
case "#":
|
||||
self.walls.append(Coord(x + offset, y))
|
||||
self.walls.append(Coord(x + 1 + offset, y))
|
||||
case "@":
|
||||
self.robot = Coord(x + offset, y)
|
||||
case "O":
|
||||
self.boxes.append(BigBox(Coord(x + offset, y)))
|
||||
|
||||
offset += 1
|
||||
|
||||
self.width = len(warehouse_map[0]) * 2
|
||||
self.height = len(warehouse_map)
|
||||
|
||||
def __str__(self) -> str:
|
||||
w = [['.'] * self.width for _ in range(self.height)]
|
||||
|
||||
for box in self.boxes:
|
||||
w[box.left.y][box.left.x] = '['
|
||||
w[box.right.y][box.right.x] = ']'
|
||||
|
||||
for wall in self.walls:
|
||||
w[wall.y][wall.x] = '#'
|
||||
|
||||
w[self.robot.y][self.robot.x] = '@'
|
||||
|
||||
s = ''
|
||||
for row in w:
|
||||
for c in row:
|
||||
s += c
|
||||
s += '\n'
|
||||
|
||||
return s
|
||||
|
||||
def move_robot(self, command: str) -> None:
|
||||
|
||||
dx, dy = 0, 0
|
||||
match command:
|
||||
case '>':
|
||||
dx += 1
|
||||
case '<':
|
||||
dx -= 1
|
||||
case 'v':
|
||||
dy += 1
|
||||
case '^':
|
||||
dy -= 1
|
||||
|
||||
movement = Coord(dx, dy)
|
||||
|
||||
new_pos = self.robot + movement
|
||||
|
||||
if new_pos in self.walls:
|
||||
return
|
||||
|
||||
if box := self.is_box(new_pos):
|
||||
if self.push_box(box, movement):
|
||||
self.robot = new_pos
|
||||
return
|
||||
|
||||
self.robot = new_pos
|
||||
|
||||
def is_box(self, pos: Coord) -> BigBox | None:
|
||||
for box in self.boxes:
|
||||
if pos == box.left or pos == box.right:
|
||||
return box
|
||||
|
||||
return None
|
||||
|
||||
def push_box(self, box: BigBox, movement: Coord) -> bool:
|
||||
new_box: BigBox = box + movement
|
||||
|
||||
|
||||
|
||||
|
||||
# def push_box(self, box: Coord, movement: Coord) -> bool:
|
||||
|
||||
# if movement.y != 0:
|
||||
# return self.vertical_push(box, movement)
|
||||
|
||||
# new_pos: Coord = box + movement
|
||||
# new_pos2 = new_pos.copy()
|
||||
# if movement.x > 0:
|
||||
# new_pos2.x += 1
|
||||
# else:
|
||||
# new_pos.x -= 1
|
||||
|
||||
# if new_pos in self.walls:
|
||||
# return False
|
||||
|
||||
# if new_pos2 in self.boxes:
|
||||
# if not self.push_box(new_pos2, movement):
|
||||
# return False
|
||||
|
||||
# self.boxes.remove(box)
|
||||
# self.boxes.append(new_pos)
|
||||
|
||||
# return True
|
||||
|
||||
def vertical_push(self, box: Coord, movement: Coord) -> bool:
|
||||
pass
|
||||
new_pos: Coord = box + movement
|
||||
|
||||
# other_new_pos: Coord = new_pos
|
||||
# if box in self.left_boxes:
|
||||
# other_new_pos.x += 1
|
||||
# else:
|
||||
# other_new_pos.x -= 1
|
||||
|
||||
# if new_pos in self.walls or other_new_pos in self.walls:
|
||||
# return False
|
||||
|
||||
# if new_pos in self.left_boxes or new_pos in self.right_boxes:
|
||||
# if not self.vertical_push(new_pos, movement):
|
||||
# return False
|
||||
|
||||
# if other_new_pos in self.left_boxes or other_new_pos in self.right_boxes:
|
||||
# if not self.vertical_push(other_new_pos, movement):
|
||||
# return False
|
||||
|
||||
# if box in self.left_boxes:
|
||||
# self.left_boxes.remove(box)
|
||||
# self.left_boxes.append(new_pos)
|
||||
|
||||
# self.right_boxes.remove(Coord(box.x + 1, box.y))
|
||||
# self.right_boxes.append(other_new_pos)
|
||||
|
||||
# else:
|
||||
# self.right_boxes.remove(box)
|
||||
# self.right_boxes.append(new_pos)
|
||||
|
||||
# self.left_boxes.remove(Coord(box.x - 1, box.y))
|
||||
# self.left_boxes.append(other_new_pos)
|
||||
|
||||
# return True
|
||||
|
||||
# def can_push(self, box: Coord, movement: Coord) -> bool:
|
||||
# new_pos: Coord = box + movement
|
||||
|
||||
# if new_pos in self.right_boxes or new_pos in self.left_boxes:
|
||||
# return self.can_push(new_pos, movement)
|
||||
|
||||
# return new_pos in self.walls
|
||||
|
||||
# def score(self) -> int:
|
||||
# total = 0
|
||||
# for box in self.left_boxes:
|
||||
# total += 100 * box.y + box.x
|
||||
|
||||
# return total
|
||||
|
||||
|
||||
def main() -> None:
|
||||
|
||||
with open('test.txt', 'r') as file:
|
||||
data: str = file.read()
|
||||
|
||||
warehouse_map, movements = [s.split("\n") for s in data.split("\n\n")]
|
||||
movements = ''.join(movements)
|
||||
|
||||
# Part 1
|
||||
print('<', '=' * 25, ' PART 1 ', '=' * 25, '>')
|
||||
|
||||
warehouse = Warehouse(warehouse_map)
|
||||
|
||||
print(warehouse)
|
||||
|
||||
for command in movements:
|
||||
warehouse.move_robot(command)
|
||||
print(warehouse)
|
||||
print('Score: ', warehouse.score())
|
||||
|
||||
# Part 2
|
||||
print('<', '=' * 25, ' PART 2 ', '=' * 25, '>')
|
||||
|
||||
warehouse = SecondWarehouse(warehouse_map)
|
||||
|
||||
print(warehouse)
|
||||
|
||||
# for command in movements:
|
||||
# warehouse.move_robot(command)
|
||||
# print('Movement: ', command)
|
||||
# print(warehouse)
|
||||
# input()
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
9
2024/day15/test.txt
Normal file
9
2024/day15/test.txt
Normal file
@ -0,0 +1,9 @@
|
||||
#######
|
||||
#...#.#
|
||||
#.....#
|
||||
#..OO@#
|
||||
#..O..#
|
||||
#.....#
|
||||
#######
|
||||
|
||||
<vv<<^^<<^^
|
||||
91
2024/day16/main.py
Normal file
91
2024/day16/main.py
Normal file
@ -0,0 +1,91 @@
|
||||
class Coord:
|
||||
x: int
|
||||
y: int
|
||||
|
||||
def __init__(self, x: int, y: int):
|
||||
self.x = x
|
||||
self.y = y
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f'({self.x}, {self.y})'
|
||||
|
||||
def __eq__(self, other) -> bool:
|
||||
return other.x == self.x and other.y == self.y
|
||||
|
||||
def __add__(self, other):
|
||||
return Coord(self.x + other.x, self.y + other.y)
|
||||
|
||||
def __sub__(self, other):
|
||||
return Coord(self.x - other.x, self.y - other.y)
|
||||
|
||||
def __mul__(self, other):
|
||||
return Coord(self.x * other, self.y * other)
|
||||
|
||||
def __rmul__(self, other):
|
||||
return Coord(self.x * other, self.y * other)
|
||||
|
||||
def copy(self):
|
||||
return Coord(self.x, self.y)
|
||||
|
||||
UP = Coord(1, 0)
|
||||
DOWN = Coord(-1, 0)
|
||||
EAST = Coord(0, 1)
|
||||
WEST = Coord(0, -1)
|
||||
|
||||
class Maze:
|
||||
map: list[str]
|
||||
start: Coord
|
||||
end: Coord
|
||||
|
||||
def __init__(self, file_path: str):
|
||||
with open(file_path, 'r') as file:
|
||||
self.map = file.readlines()
|
||||
|
||||
for y, row in enumerate(self.map):
|
||||
for x, char in enumerate(row):
|
||||
if char == 'E':
|
||||
self.end = Coord(x, y)
|
||||
elif char == 'S':
|
||||
self.start = Coord(x, y)
|
||||
|
||||
def get_pos(self, pos: Coord) -> str:
|
||||
return self.map[pos.y][pos.x]
|
||||
|
||||
def is_wall(self, pos: Coord) -> bool:
|
||||
return self.get_pos(pos) == '#'
|
||||
|
||||
def is_end(self, pos: Coord) -> bool:
|
||||
return self.end == pos
|
||||
|
||||
def lowest_score(self, pos: Coord, score: int | None = 0, dir: Coord | None = None, facing: Coord | None = EAST) -> int:
|
||||
print(pos)
|
||||
if self.is_end(pos):
|
||||
return score
|
||||
|
||||
if self.is_wall(pos):
|
||||
return float('inf')
|
||||
|
||||
if dir:
|
||||
if dir != facing:
|
||||
score += 1000
|
||||
facing = dir
|
||||
|
||||
score += 1
|
||||
pos += facing
|
||||
|
||||
|
||||
return min([self.lowest_score(pos, score, dir, facing) for dir in [UP, DOWN, EAST, WEST]])
|
||||
|
||||
|
||||
def main():
|
||||
maze = Maze('test.text')
|
||||
print(maze.lowest_score(maze.start))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
15
2024/day16/test.text
Normal file
15
2024/day16/test.text
Normal file
@ -0,0 +1,15 @@
|
||||
###############
|
||||
#.......#....E#
|
||||
#.#.###.#.###.#
|
||||
#.....#.#...#.#
|
||||
#.###.#####.#.#
|
||||
#.#.#.......#.#
|
||||
#.#.#####.###.#
|
||||
#...........#.#
|
||||
###.#.#####.#.#
|
||||
#...#.....#.#.#
|
||||
#.#.#.###.#.#.#
|
||||
#.....#...#.#.#
|
||||
#.###.#.#.#.#.#
|
||||
#S..#.....#...#
|
||||
###############
|
||||
5
2024/day17/input.txt
Normal file
5
2024/day17/input.txt
Normal file
@ -0,0 +1,5 @@
|
||||
Register A: 62769524
|
||||
Register B: 0
|
||||
Register C: 0
|
||||
|
||||
Program: 2,4,1,7,7,5,0,3,4,0,1,7,5,5,3,0
|
||||
167
2024/day17/main.py
Normal file
167
2024/day17/main.py
Normal file
@ -0,0 +1,167 @@
|
||||
import logging
|
||||
|
||||
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
|
||||
|
||||
|
||||
class Machine:
|
||||
register_a: int
|
||||
register_b: int
|
||||
register_c: int
|
||||
|
||||
ic: int = 0 # Instruction Counter
|
||||
|
||||
program: list[int] = []
|
||||
|
||||
def __init__(self, program: str):
|
||||
self.register_a = 0
|
||||
self.register_b = 0
|
||||
self.register_c = 0
|
||||
|
||||
self.program = [int(x) for x in program.split(',')]
|
||||
|
||||
def interpret_combo_operand(self, operand: int) -> int:
|
||||
match operand:
|
||||
case operand if operand in range(0, 4):
|
||||
return operand
|
||||
case 4:
|
||||
return self.register_a
|
||||
case 5:
|
||||
return self.register_b
|
||||
case 6:
|
||||
return self.register_c
|
||||
|
||||
def adv(self, operand: int) -> None:
|
||||
operand = self.interpret_combo_operand(operand)
|
||||
self.ic += 2
|
||||
self.register_a = int(self.register_a / (2 ** operand))
|
||||
|
||||
def bxl(self, operand: int) -> None:
|
||||
self.ic += 2
|
||||
self.register_b = self.register_b ^ operand
|
||||
|
||||
def bst(self, operand: int) -> None:
|
||||
operand = self.interpret_combo_operand(operand)
|
||||
self.ic += 2
|
||||
self.register_b = operand % 8
|
||||
|
||||
def jnz(self, operand: int) -> None:
|
||||
if self.register_a == 0:
|
||||
self.ic += 2
|
||||
return
|
||||
self.ic = operand
|
||||
|
||||
def bxc(self, operand: int) -> None:
|
||||
self.ic += 2
|
||||
self.register_b = self.register_b ^ self.register_c
|
||||
|
||||
def out(self, operand: int) -> int:
|
||||
operand = self.interpret_combo_operand(operand)
|
||||
self.ic += 2
|
||||
return operand % 8
|
||||
|
||||
def bdv(self, operand: int) -> None:
|
||||
operand = self.interpret_combo_operand(operand)
|
||||
self.ic += 2
|
||||
self.register_b = int(self.register_a / (2 ** operand))
|
||||
|
||||
def cdv(self, operand: int) -> None:
|
||||
operand = self.interpret_combo_operand(operand)
|
||||
self.ic += 2
|
||||
self.register_c = int(self.register_a / (2 ** operand))
|
||||
|
||||
def run(self) -> str:
|
||||
output = []
|
||||
while self.ic < len(self.program):
|
||||
|
||||
opcode = self.program[self.ic]
|
||||
operand = self.program[self.ic + 1]
|
||||
logging.debug(f"IC: {self.ic}, A: {self.register_a}, B: {self.register_b}, C: {self.register_c}, Opcode: {opcode}, Operand: {operand}")
|
||||
|
||||
opcode_out: None | int = None
|
||||
match opcode:
|
||||
case 0:
|
||||
opcode_out = self.adv(operand)
|
||||
case 1:
|
||||
opcode_out = self.bxl(operand)
|
||||
case 2:
|
||||
opcode_out = self.bst(operand)
|
||||
case 3:
|
||||
self.jnz(operand)
|
||||
case 4:
|
||||
opcode_out = self.bxc(operand)
|
||||
case 5:
|
||||
opcode_out = self.out(operand)
|
||||
case 6:
|
||||
self.bdv(operand)
|
||||
case 7:
|
||||
self.cdv(operand)
|
||||
|
||||
if opcode_out is not None:
|
||||
output.append(opcode_out)
|
||||
|
||||
return ','.join([str(x) for x in output])
|
||||
|
||||
def part1():
|
||||
INPUT_FILE = "input.txt"
|
||||
|
||||
with open(INPUT_FILE, 'r') as file:
|
||||
data = file.readlines()
|
||||
|
||||
reg_a = int(data[0].split(':')[1].strip())
|
||||
reg_b = int(data[1].split(':')[1].strip())
|
||||
reg_c = int(data[2].split(':')[1].strip())
|
||||
|
||||
program = data[4].split(':')[1].strip()
|
||||
|
||||
machine = Machine(program)
|
||||
machine.register_a = reg_a
|
||||
machine.register_b = reg_b
|
||||
machine.register_c = reg_c
|
||||
|
||||
print(f'Output: {machine.run()}')
|
||||
logging.debug(f'Final Registers: A={machine.register_a}, B={machine.register_b}, C={machine.register_c}')
|
||||
|
||||
def part2():
|
||||
INPUT_FILE = "input.txt"
|
||||
|
||||
with open(INPUT_FILE, 'r') as file:
|
||||
data = file.readlines()
|
||||
|
||||
reg_b = int(data[1].split(':')[1].strip())
|
||||
reg_c = int(data[2].split(':')[1].strip())
|
||||
|
||||
program = data[4].split(':')[1].strip()
|
||||
|
||||
program_len: int = len(program.split(','))
|
||||
|
||||
reg_a = 8 ** program_len - 1
|
||||
|
||||
# machine = Machine(program)
|
||||
# machine.register_a = reg_a
|
||||
# machine.register_b = reg_b
|
||||
# machine.register_c = reg_c
|
||||
|
||||
# print(machine.run())
|
||||
# print(program)
|
||||
|
||||
# exit()
|
||||
|
||||
# Naive solution but it works (in time)
|
||||
while True:
|
||||
logging.info(f'Testing Reg A: {reg_a}')
|
||||
machine = Machine(program)
|
||||
machine.register_a = reg_a
|
||||
machine.register_b = reg_b
|
||||
machine.register_c = reg_c
|
||||
|
||||
output = machine.run()
|
||||
logging.info(f'Output: {output}')
|
||||
|
||||
if output == program:
|
||||
print(f'Correct Reg A: {reg_a}')
|
||||
break
|
||||
|
||||
reg_a += 1
|
||||
|
||||
if __name__ == "__main__":
|
||||
part2()
|
||||
5
2024/day17/test.txt
Normal file
5
2024/day17/test.txt
Normal file
@ -0,0 +1,5 @@
|
||||
Register A: 729
|
||||
Register B: 0
|
||||
Register C: 0
|
||||
|
||||
Program: 0,1,5,4,3,0
|
||||
5
2024/day17/tests/p1.txt
Normal file
5
2024/day17/tests/p1.txt
Normal file
@ -0,0 +1,5 @@
|
||||
Register A: 0
|
||||
Register B: 0
|
||||
Register C: 9
|
||||
|
||||
Program: 2,6
|
||||
5
2024/day17/tests/p2.txt
Normal file
5
2024/day17/tests/p2.txt
Normal file
@ -0,0 +1,5 @@
|
||||
Register A: 10
|
||||
Register B: 0
|
||||
Register C: 0
|
||||
|
||||
Program: 5,0,5,1,5,4
|
||||
5
2024/day17/tests/p3.txt
Normal file
5
2024/day17/tests/p3.txt
Normal file
@ -0,0 +1,5 @@
|
||||
Register A: 2024
|
||||
Register B: 0
|
||||
Register C: 0
|
||||
|
||||
Program: 0,1,5,4,3,0
|
||||
5
2024/day17/tests/p4.txt
Normal file
5
2024/day17/tests/p4.txt
Normal file
@ -0,0 +1,5 @@
|
||||
Register A: 0
|
||||
Register B: 29
|
||||
Register C: 0
|
||||
|
||||
Program: 1,7
|
||||
5
2024/day17/tests/p5.txt
Normal file
5
2024/day17/tests/p5.txt
Normal file
@ -0,0 +1,5 @@
|
||||
Register A: 0
|
||||
Register B: 2024
|
||||
Register C: 43690
|
||||
|
||||
Program: 4,0
|
||||
5
2024/day17/tests/test2.txt
Normal file
5
2024/day17/tests/test2.txt
Normal file
@ -0,0 +1,5 @@
|
||||
Register A: 2024
|
||||
Register B: 0
|
||||
Register C: 0
|
||||
|
||||
Program: 0,3,5,4,3,0
|
||||
402
2024/day19/input.txt
Normal file
402
2024/day19/input.txt
Normal file
@ -0,0 +1,402 @@
|
||||
grbb, burb, wrwbrwg, uwwb, bwbbw, ubgrbu, gguu, uru, gwr, wrw, gubwb, g, gwbu, rbw, bbuu, rwgbr, urrr, rwww, wrrb, ug, rubbwuuu, gbrbr, brb, wrubb, gwrgbbgu, wggwbrww, rwwb, br, buuwr, rgrbb, wgubb, gbb, gbrb, rubw, ubr, guu, wrugbg, gubwru, bww, rbu, burr, ugu, bbggguw, bguw, ubu, uuuw, uugww, urugr, uwgur, gugrgggw, b, gugu, wgb, rwgwuu, guw, brg, ubur, wbwwb, ggbg, wr, urw, wur, brwgrw, uuur, rwwg, rrbrbggw, gwrurwg, rurru, r, bug, ruwrww, brgwu, bwgurbu, rwuu, guub, rrbwb, rbgwbr, grbrugbu, bwugwugb, guwww, ugwggg, buggrug, urb, bbbwuur, ururgur, wu, bbbru, ruuw, grr, buw, bub, gbwwug, rwrbw, wrbg, wubr, u, wgrb, wbuub, ugrugwg, wggbrr, gr, uur, ugb, wbg, uub, bbbrww, uwbr, buwguww, wbwgw, ubuuwr, wuuwgr, wggw, gwurgub, rwwu, bruwg, bgbrbwb, rbgg, rbg, bubggwu, gubgrur, gwb, rgu, wrr, uug, bgw, ruuugu, uwbg, rgurgwwb, wrwgb, brbbr, wgrgu, brgbwb, gub, uugw, wrrbb, wwruuru, grrw, urgg, gbwg, ubbur, bggwwgw, ubggw, uwgw, ruu, wwuu, bwuu, uggw, gwu, urg, rwbb, uwwub, ruug, bwbbu, wbb, bwwwu, rbwrruu, gg, ugrbbwgb, wbbwwr, bbwrrrb, rgwwu, bbr, wbuwb, grub, ubwwgu, ubb, brrbuu, grw, bwugg, wurbu, uwrb, rwgg, rurbuu, gbrug, brwgr, gru, bgrub, uuwr, gbwww, bbrw, rbr, bwrg, ruur, gbbgr, brgwug, ugg, bwgubu, rrg, ub, gbuwu, ubuwuw, ggw, wrgww, uuwb, bwr, bb, ruwu, bwugrw, buu, wug, gggwbwu, brurg, rrur, gb, wg, ggruwbu, gbg, bruur, gug, rgr, gwuuu, uwwurr, ubw, uugbuw, ruugwu, bu, ubrbw, ggu, rug, wgurwurr, ugrrbr, brgrb, rrbrgwww, rrgg, grb, brbw, bruwgw, uwbw, rgg, wrg, rrruwr, gguw, bugbbrw, bbg, rwg, wbuwg, uuu, wruwur, ugwb, bur, urgb, bg, uwubrwu, rwbwwg, rub, wwwwbw, rbbugbr, wgg, bwbb, brw, ggugb, guggw, bgg, wwr, gwrbb, rbb, bgb, brrubwb, wwu, bggrrwu, bugb, gwugw, grg, wrb, wuub, bru, gggrr, wuw, uwg, gbgurg, wguwug, gbwgw, bgrb, wguuw, rwr, ubuww, wruuw, wurur, wuu, bbw, brbgubb, bubg, wgw, wwuwrw, bbwu, bbrgubw, uwu, bw, wbr, bbu, bgr, ubg, rwrgg, uggu, wugggb, wwbgguur, wrwuwb, rgrr, wgbu, ggb, ubuw, rgugg, gwuru, guuubbw, bgbrrw, rrgwg, gbw, wbu, wuwg, gugb, uww, ruugb, rubu, ugwbw, bbrgrg, grbrr, guwgruwr, wwbr, wgruw, grwg, wgr, ururwr, gbbg, gbuub, uwr, grwgrwr, ruw, wru, ggr, guwuu, uwuuwu, gbu, rwbbgg, ruruww, wwwur, rgrug, rbbwg, rgwugwg, wbw, bbru, ggg, bbuugrrg, uugb, rw, gburwww, rububugg, gguubbg, rrrurwwg, buruwrb, bbwrggwb, gbrbwr, uruwwu, wwwurbu, rrwb, bbb, bwg, wurggubb, wgu, gwwg, wururruu, bbbu, ur, rwb, uwww, wgwr, rr, rru, uuw, uu, bwgw, brr, wub, bwgbrrw, gwrgrw, uw, ggguwbg, bubbur, ubbggu, ugr, rrrw, ru, rb, gwwbgw, rrr, rrw, gruw, rwrrbb, rugr, uubw, ruwb, uubbbu, gur, wb, rrrrwww, bbub, bgurwg, ubbugw, gwbw, gggbru, ugru, brru, ggwg, wwg, ugubr, urggbu, ggwuww, gbr, guwubu, rwu, gwg, rrbur, gwrg, wwubr, uwb, gbrr, rurburb, brrg, ggur, rurbw, uwbu, grbbu, wgur, urr, rgggg, rrb, ww, rww, bwwwr, wubwubgw, ggubw, wwb, uurb, wbrggwu, ugw, rggwwr, urwu, gwwggg, uwuubwr, gwuubww, uwbwu, www, gwgwr, bwu, gu, rur, wwwg, uwruub
|
||||
|
||||
rrwuwuurrrguggbrrrrgwwururguggwuwrwwurwuuwbw
|
||||
wrrugrgbuuuurgubbbbbggrrwgrbgggbwuwwbuubwrbgwwgbww
|
||||
uurwwrgbuuburbgbrrgugrgwugbwrwguruugwwgguwugrgwggrur
|
||||
rgruurwubbgggwwuwwgurrwuugggbrbuwgwrubrgw
|
||||
gugwbgbwbbgurrbrurwbwwgwwgbrgwuwruubwuwuggrrrgbgb
|
||||
urwguwuggwbbwgbrbbgubwbggwggwgrbrrruguruggbgruwb
|
||||
grwbubrugwuuubgbgburrgbuuuwruruuugrwgrrbwwrgbwrbwrugubgu
|
||||
wwrbruwrgbgubuurwrgbubbwwgbwurwrrbwwurrgugggrbwurrrb
|
||||
bwugbgrugbuwbuurrgurwbrggrggrbrgurgwwbbgrrbgbubrgrrbwgrbwu
|
||||
grggrbwrwbuwrgwrbggwrrggugugggrwbwwrguuuuwgrrgbgwuurug
|
||||
gbugrrruubgbgwrggbwgrwwubrrbubrgbbgubbbuurwbb
|
||||
bgrrbbrwbrguurggwrrrgrrgwururbggururgwwgrwgbuugbg
|
||||
uwwubbuwgwuggrruuuwbgwrrgwrbbrgggubwugubuuubwwbbwuwru
|
||||
ruwgguggbgbbwwrbbrubrrruugbwwgrguwubwgbbgburu
|
||||
wrbubwugwgurrrrrbwwwuubbubgrbbgwrurrrrbugggw
|
||||
rbwbbrbrrwbugurbbbrubbgbbgbuwbrbbwrggwbrwbguguubggwgbruww
|
||||
gggwrrgubuurrrrrurwubgwgbuuggrrwrurbbgugruruwrrgurugu
|
||||
gurrbwbrbubguwbbrgwggruwuwrrrwwrggggrwuwubgubugwwgbgwrwgurgw
|
||||
grbgrgguwrwrububbrburbgrubuwrwwbbwwgbbuwwwbubgrbgbr
|
||||
ubbuwuguwbwwbubbbbburbuububwrwwbwgubrubuwwwuwrrwrwwggubggg
|
||||
buwrgrrbuuwbbrgggbbwuruugbwwgwggwwgrrbbggrbuwuu
|
||||
gguguwbwrrggguurrrwuwbrwwwwrruwuwguuggrrrbgwwgrbbbrgrbrgb
|
||||
bgbugwgwwgwwwgrbwuwugwbgbururwugwuwwurwwbuubrw
|
||||
gwggguurbubwbgwgrwwrgrubuurrrugrbbuugrrgbuurggbgwbwwwur
|
||||
gwruwwbrwwgwrbgbguwwugrwruwrgubwbbwbbugrwbgguwurguwu
|
||||
gwbruubwwrbbbbbgruwgwgwgbrwgururrrwugwgrubbggbuwuwwbb
|
||||
buuuwwguwbwgwbbuwgubbrggwgggburwbgbwwrbuguwgwbwugrggr
|
||||
ubwrubuwgbgbwgggwrwgrwrrggrgbgrbbuwwggbwgbwbbgurbrguguwrrgw
|
||||
wrrubggwruurbbbrgbwguwbwgggbrrwrwgubwuguwbrgw
|
||||
rgbwwuurgwbwrrwwgruurbruubwurggugbuubgrrrwbgrggrggrgwbr
|
||||
grurgwbgbggbwbwwuuubugbuuugbbwrwuugbbubbuw
|
||||
ubggwwbgwwrruuwwuwbrrbbwugwruurrugrbbwgbwwwgbwbwbwbubbrr
|
||||
wgbwubuugwrrgwrwbbwwgrrgwuggrubgrrubwrubrwuurgruwwwgrwr
|
||||
uggwguwruuwugbwbuwwgwugwrbbwrubrburgrgbuuburw
|
||||
grbbrgbwbbubwrwrurgugbggrwbuugbubbgugbwrgrwwgbbbguuwg
|
||||
rwurubwguwuububwrurwgrrwuubbubrwwbrgugrbgubu
|
||||
grrbrgrbbuguwgrwugurrbbwrggwbguguugrurgw
|
||||
gurrwrwgruubrubgrgbrwbrgwwrbrgbugrbwgwgbbgw
|
||||
wubrubbuwrubrrrrwgbgugbrrbrgwbwgrwbuugugbgrbuur
|
||||
bbrgbbgrbrbwgruwrgwgrgugrrwgruwwgwwbwwwguurbuwbwruwbubr
|
||||
wugrwrggbwbwrbwrwbbggrgburuggwurbubruugbwgruwbrguwb
|
||||
buwrbwruwrbgrrruugbruugrrwbgrwgwugrbwgbrwwuuwbwgurgw
|
||||
wwggrrwwbgrbwguwwuwwurbgwburwggrwugwguubugwgugggbwb
|
||||
ubwrguuwrgbgugurgguuwwggbuuubwgwwrwuguubgwbwgrwuwwb
|
||||
rgurubgwubguggbgguwwwwwuuwugrwgubrrurgubrrgw
|
||||
uggggbwwgbbrbwururggrwugggurgugubrbrgrurbgb
|
||||
rwrrgbbbbrwggbrgguwubrgwwuugugwwwbuburugubguwguubuguwrrug
|
||||
rggguuwuuburuwubgbuwwrububgwrrbwwrubbrgw
|
||||
ggrbrbbrgrwuggwubrbbwwbgruubrbgggguuggrgw
|
||||
rwgwubgrruggwruurwwuubgbrwggwbrwwbggbrgw
|
||||
gbrrrggwbrrbwwuugwgbugrrgggwubgruwburburrbbrggwbbgww
|
||||
wruwbbuwubbwwrrubbbrurwrbggwwgguurrruwubruuwwuwubgbwug
|
||||
rbuwguwbugbrrrrbubbwubgwuwbuwwrwuugbubrggrbrwrwwbrwbrgrwbb
|
||||
gwbuububgrwuuwbwbwbguwggubgrgubgwrrrbwgrrwwwbugb
|
||||
wwrbugruuwrgwubgbwrwugwwrgrrubggubuwurwgurwubruu
|
||||
ubgwwuburrwrgrbgurbgubgwwwbwurgbbbwwrgwrbgguguwbbuug
|
||||
wwwburwwguwrbugwgwwrbwbruugbggburrgrbruwggrrgw
|
||||
wubuwruubgwubrwwbrrrgwruwgbuugburrbgurbwrruugwbgrwu
|
||||
brugwggbbgbbgggwbwuuwbuuggwrbuguurwubrggbrggbw
|
||||
uuurbrwbbbbwggwbrruggwbwwurbbbbubbwwuwuurrgruububwrgrrwubb
|
||||
gbwugbgbrurrbrggguwuwrgburwbwbuwuurwubwbwguugurrwrgguwgubg
|
||||
bwrrrrbgwuubggbrbguuuuwwbwbgggbwbguuwbrgwggbuug
|
||||
rrwwwubwurguurrggbbgrbrrbbrrbrrwurwwgrrbugugbb
|
||||
wwbwrurrwrgbgggguruurwbrwbbrbwubwubgwgruruuuwrubbgwwrgw
|
||||
wuburburbbrbbwrugbbrbbbuwbrwrbuwgugrugbgwrrgrwguggbg
|
||||
gugrggwurbuuwgrwguwbrwubrbrwuwugbuwgbwbwrwrrwwrgbuurg
|
||||
wwbwbwrwrruuwbbrrggbugwbrwbbbubugbrwruuwbg
|
||||
urbwgrrgbbgbrgwbwwrrrbrgubrwrrwrwwgurgubuguwwuurgw
|
||||
gwwrwbuurrbgbwwbwwwurburrgrwggwrrwwwrbbrwgrrgw
|
||||
rwruurbbbwrbrgrwbbuwrwbbuurrgurrrwggbubwwwguwgbwgggruuugrr
|
||||
uwbbuwbggbrrbwrrrrgbrbwwgbbruguwubwbwuwuggb
|
||||
uburbbwbruuwugwrgwwuwrbrrrbgrbwrwrurrbubrgugurgbrgbgb
|
||||
wbuwrwwruwguggbwrwwrbburgguwgruubuwgurugbgugbubbgbrrguwbg
|
||||
rbguwgburgwgrwubggbbggwwguwuuuwgbbuwbrbrwrrbgguwr
|
||||
guwbgwwwgbrrbuwbwbrbbwrbbgbguuwbwrbugbbbgu
|
||||
rwrbgwggubwbwuubbwruwbgrbgrbuubrurgrwbgbgwbrwbburub
|
||||
gggwbrugrbbbuwbuwrwgugrugrrrrbwrgbbwwgwwgugggr
|
||||
wwrrbrwrgugrugwrbuugrrgrbwwrbuggbbruuwrrwrwrugbwbgurrrrr
|
||||
burwrruurbgggguuwubrrrgubgruwwwrwuggbwbwuwurg
|
||||
ubbgbbrguwubrwwbrurbuuuguwggruwgrgbbrgbbgbburwrbrguwrgw
|
||||
rwrgbbrbwwrwggwwbguwrgrrrurgrrgruurbuugbbgb
|
||||
ggugwrrgwgrrwbwrwgrurggggwurgbgwwurwrrwrrgwubrw
|
||||
rgbuwbbrrguuwwgbrugruuurbgwuwwuurbugrbrugbuwubbruuggug
|
||||
rwuwbwrgrwbwugrwubrgbubuwuwbbbwwgggugrbuwrrbbgbwurgw
|
||||
gubgbwuurgbwbguuubgurggwwrgrwbuwbuugwuugwubwwwwggugr
|
||||
wbrbrbugwrwrwurrbrruubgbbwwuuuuwwrwwwurruwgwbgugw
|
||||
wurbrruububbrgwwrwbwurgggrrbrgrwbgbbrwbbrbwbuwugwgubwur
|
||||
gbwbgbgurwurguwgrgwbwubgggruuuwuuggggbguugbrwgbwburgw
|
||||
ugbwbbubwrggwuwwubbguurbbrubburuwugwrurbugurbubrgbrrrrr
|
||||
wrwrrwgwbwrwurggrrbbgrwgbrbguububrwrururrrrrwuwbbgrrbrgg
|
||||
uuubrrrubwguurguwgruwrbruwugrubuubbrbwbugwrwwbruurwbur
|
||||
wwwwwbbbggggubguuugbbbbuburrugrbbwubrgbrguuug
|
||||
wwbgguguugbggrrbwwuwrubgugwuwugbgrwwrggwgwrwurburgbrb
|
||||
ubrgwbwbwwuwbwggrrrrwwbwgruuurbwrruwwrgburrwurrwrr
|
||||
uuwrgwbbbrggrrruurwrrrrbrwgbgugbburbuburwrrbubr
|
||||
gbwubgbggwwbgbwbbwwwwwrwbbwwrgbrgwwwrrbrgwwwr
|
||||
bbuubrbuwrgrbrgrrbggbuwrugrwubwwwbwbbrwggugurwgbrgbrgbb
|
||||
bbuwrurgurgrbubuguwrrurwrbggwuwguwugbwbwbbwrbugrw
|
||||
brrbububggbrgurwurwbwuguwuwrgubwugwrrbugrbrwgwgrgguwg
|
||||
burgwuurbrgruwbrrwurwuwwgwuubwrgrgwgrguubguggbbuugrrggrgw
|
||||
rgwrgwurbgguuwrbguwwgwuwubgwguwgbruwrrguuwbbwbr
|
||||
brrrubwrugrggugrwgbwgugggbuugrwguuwrwwgwuruwwbrg
|
||||
rggbwgwgugrrbrbwububgrwgubrwbwbubwburbubbw
|
||||
uubrrwwuugwubguruggugwwrrggrrwwgugrurubrgbwurgrwug
|
||||
uwrwwbguggwugwwrguuwbrugggugbburgwubruubgugbwgurgw
|
||||
wbwgugrurrbgbuggwwwrrwwgrgubgbbgbwrrwrrbubuwbr
|
||||
uwggguggbgwgrgrbbgruwurwggburububrgbwwwguburubrugrruugbwu
|
||||
wgwgbrwurgwbrrbgwruugurbgwguurbuwubbuubrbuwwwgbuwbb
|
||||
guwrrbwwgburbgggggrguwuwbbwrbuurrwururgw
|
||||
rurwbgrwurugrwwwbgrrubrwwwbugurbbwbrgurbgwrwwrgwrwwgwbr
|
||||
rurwbbwwbubwbrgugwbggbbbguubwrbwbwggwwbguurrub
|
||||
gbuwbugrrwgwrgbbguugwuwwwubuuwugggrbbbggwrugbubu
|
||||
bguubggwggrwuruubgubrrrwbwuuggwwbwwuuuurbuugbggrrwbu
|
||||
uguuwugurrbgbwggwrrgwruwuwrbruruuwwuwrubrruw
|
||||
rbgwbrbrwbuuwgrgrwwggwrwggrgwgbgrubbgwwuwwrgw
|
||||
guwuugbwubruguwbbgrbbbwbwbrrurgrbrurrbgbbbwbubr
|
||||
uubrbuubrruwwggguugrugburwrrrubbbggbbrrbuwrwrurgw
|
||||
wubbgrruruuwrgubgruwubruggwrwgbwwwggwurggwgrrub
|
||||
bugbbrbwruuwbrbrguwrbbbgbgwbbbwbbwwwwbwwurruuubururuwwbuw
|
||||
wrubrrguurwrbwwrwrwugwuuurbgbrgrwrburbrrgwwbbugwwbgbrugb
|
||||
wwrrurrwugubgbuuurrgrbbwwgwurugurbgurbuwwrguurbguu
|
||||
wbugrbwggburugrbgguggwbuubbgbggbbburgbbgugurrurgguggw
|
||||
buurgrruuwwggbwwrrbrbwgbgruwbwwbwrrurwwbggbwwbuggbuwrgw
|
||||
ggwuwgubbuwwwurbugrbwbrburrgggubuwwururruuwgbwurwwu
|
||||
uwuburwwrrwggrgwbubwrwuggurububrrubgwbwbrruubrrbrww
|
||||
wurgwwggruuurwuwbburbrurburbwubuubbwwwwuubwugbrrrgw
|
||||
wwubbbgbwgbgruruwbrgugubrrwwugrrwwwubrrwuubrwwrgggbwrb
|
||||
rbbbrbwburbuwwwwurrrgrbwubbbubbrbubggrguuwrrggwrgr
|
||||
gwwrrwuurgruwburuugrwugrbgbwgugrgggwubbrguwrrwwgrwbrgw
|
||||
wwbwggbbbuuuugbgwubwurrbgwrwggwgbrwgrbrwwuuuurwwwwwwguuwbu
|
||||
wuurwbwrgbrwrgrwuruwbuugurgwwwbrwwgbwuwbuwburuuwbrwbwuwuwg
|
||||
rgurgwwbwrbbbuuuugbrgububwgbrbwgguuuggbbgrrrgrgw
|
||||
rubgruwurburuuuwbwrrbwuggbbuggwurbburrrurwgrrgruuw
|
||||
urbgbggrwgrgwwuubwrguwwgbbbrbbrgugrwuwbuwwb
|
||||
ugwwrwgurrruwbrbbrurgurrubrbgrrbuwbwwubgbbguugwuguurrgw
|
||||
gbugwbrwbgrguwrrwgrwbbwgrubgrggrrwwwgguurguguggbgrwurgbr
|
||||
grrbruubggggbbbrbrwgbubgbgwugbrrrgrbuubgrrwbbuwrgugrbw
|
||||
uuuwbbbgrwurruwrubbrgggrrgubwwbbgwuugbubrrggbgbwguwwwru
|
||||
guwrwggurbrguubgrruwgggugrbwwrwwbwwbuwgwwgwwuwggwbgbwgbww
|
||||
uguugggrbwgrrgruwbuwugbrrwuggrwbwggbgbburburbw
|
||||
bbbwrwbwgrugbbgrwruwwwuwwrbguwbbuuurrgwrbgguruugwbbbb
|
||||
gwgwugwurwrwbwggwrgwuuugwgwbbuurguugbbruwwrwwgrwrgrwb
|
||||
grwrwggrrwgubrrrbbubwwwwbugwurbuuuwbuwrbbwgwbwwubugg
|
||||
wgbbrbbrbgugwugbrwwuwuuurgrgwbbwwwwuwguubbubwwwbrrbuwgwgwr
|
||||
rwbububrwrggubbwrbuugbugrrrggbrwrrbwbbbbrgw
|
||||
uwuuuugrguwububurbrrruwwgrbubwrwurwrggrrgw
|
||||
bgurrrrbwgrgbbwbwbwgrubgurgbgbgwurbgugrwrb
|
||||
rwrugruugugrwruwbwrrguruuurgwuuuwurbgbwrrwrgwurburwrrugbbrgw
|
||||
ggbwrurrrgurwgwwuwgwggrbbwgwwuugrgggrbguugrur
|
||||
gruubgbuubuwguggrwrgguwbwgrggrrbbruubrrrbbuw
|
||||
rgggbugbgrwwbwbwburrgubrgugwwwrrwburbwuubwuwrrwuu
|
||||
wguwggrbgrbgwwrgwuwbggbuwwwururuurbburwwwbbrburugrwrbwrrg
|
||||
urrbrgbrgbbruuwruwubgwbrbuwruwbwbuwgrwuwwwuwbwwuwgggb
|
||||
guwuwwwruuuugrwgurbbwgbwrbbrwrgbubrbwgwwuubgrbrwggrwwww
|
||||
buwgggwrggrbgwwwwbubrbbrgbwrrgruwrurrgrgw
|
||||
gwgbubruwbbwbbwgwbbruwbbubwugwugbbgwgbwuurgw
|
||||
bwwgwwuugrwwbuurgrwrrrbrbrruwrgugurururrwbrwbwwrwurwuu
|
||||
wwrwgbgugwuwuuurwgbbbggbbbugubbgbwgggrbwrgw
|
||||
wburrrrguggbrwuwbbrwwwuuurrwrggrbgwrrwurgw
|
||||
ururggggrwwrwgrbuwbbgwbugrrbgbwbgbrrbugwgbuuwwrbrw
|
||||
wbwwrbgbgwgurrrwburgrurwgrgrubrrwwuububwrrrwwggubuwwrgw
|
||||
brwrwgwubrrbgrwbrwbrurbburrgurbrgwggrubuwrgb
|
||||
wggbgubrggbwrguwuubguwuubbwwguwggrrggbwugbbgugrgw
|
||||
ggbbugbruwwubrrggrugurbuubbbwrwurbbgubbrrwgggbg
|
||||
bwbgggguuggggwurgwbggbggugwrbugubbbbwrgwwwwwbwrrrgw
|
||||
wrruggrwwgwbrwbgrrrwuurwuuurubwrgwwbrbgubrgwugbwgbwgrwrgw
|
||||
gwbgbwbrwbbruuwbwugrgbbrruwurbggrburrbrggggub
|
||||
uwbgwuurbgbgwwrgbbbbrbuwrwruwwuuurgrbwrgrruwwrbwrgrrw
|
||||
rwguugrubggguuwrgwugwbgubrrrurwwgbuwgbgggwwwrrrwrgw
|
||||
uugggwurbwrrrubwggwburwuwurwwguugrwruguuruguugwgb
|
||||
grwguguuwwgwbwuuruwwgwrugggugbbwwgwruguburb
|
||||
rbugruwbrgrrbrugwbwrgggubguwurruwrggbggguwwubbu
|
||||
uwbgbuubbgurbggubbbuwwurrwbuurwurwrrwuwrrbgwrwwb
|
||||
guuwrruggrbbrbwwrubwrwbwggbwubgrwwrbwggrgwbw
|
||||
rbwgggrgurgguwuguurwugwuurburbgbbgburuwbrgw
|
||||
rubugrgwwggbuubrbgrwwgruwbugbbbruwgwgbgrugrrrwbrrbuwuubwu
|
||||
gurggrgrrrwrwuwbbggbubgurbwuwrgbbwbgrrggwrgwrgg
|
||||
urgbrbbgguugwubrgwuuwbrbgbrbuurggrrwbrgw
|
||||
bguwwwbwbruwggubwguwrwugrgrubrrbuuuuubrwbrwbubububbwruuru
|
||||
ububgwgbrgrwwrguuwrgugbggwubrbgurwwbgguurbgrgwwgrbuggrwbrgw
|
||||
uwbuguggbgrurrgrurrwbrubrrubbwrrgguwugubrrurbrbrrgwwg
|
||||
wwurrbrguuwwrbguggbuwruwgruurwwugugggurggrrrgwrruwrubbwwur
|
||||
wruurbrbbbuwurrrwwrbrwwbwrbrggubwuubbbbuwbrrrwbggwwrgg
|
||||
bwrwburrgwgurbrbwbrruburgrgwwubguguwwwgwbrbuggrwubbr
|
||||
gbgrwuugbuwrwgrgrburwwrggrbgwrgguugrwguubrgwwrrwrrgw
|
||||
rgugubugbrwuwugwbgrwugrurwwrrwguwbbruwbwrww
|
||||
wrurwbbgwrrgbgwggrrgbrrwuwubrrbuuwrwgrrgrggbbwrubwrbwwgrwg
|
||||
rrubrwgwuwbbbugwrbbuuwgwbubgwgwuwuwgrurrwrwwgrgu
|
||||
ubrurbbwururburwrbubbuggggrrwrrrgwgbbwuuggubwbu
|
||||
rggwwuubbggugwubggwuwugwwrrguuwbwrrrbwwgbgwwbrurw
|
||||
bgbgguwbbrwrwburbubwrgwruuwgwrbgbrggbgbgrrrrw
|
||||
uwgrrggrwbbbuwbgbbrrwgwbbburwuuggwwurguuuwruwubrburgw
|
||||
uubugwbbrrwbuwggwgrwgwrrwggwwuugburgrrugbbuwg
|
||||
gbbwwgubugwbubwggwbrwwrwwrgbbbwgurugwrwwbwwgggbgrwwgubg
|
||||
ubgbwwburgbwuuwbrruwbwruwuugwbgwggrgrwbwurbbbwrgurwbg
|
||||
wrwgbgbgrwwbbbgwrggwbbwurggggbgwuuguugrgw
|
||||
bgrbwggwgbrgguwwwwbuuurgwrwuubbuwuguwbgbwggbgbrwbbrrwbu
|
||||
gwubwgbrurbwwrrgugwwgbwbwuuurgwbwrurrgwurgw
|
||||
rurwuwugruguggwugruburbwuuwgbrwwbrbwrgbgwgurwurrgw
|
||||
uburgrbugbbubbrubbrbgwbrrbugbguguurrgrrgwwrrbgbbbu
|
||||
gbwbggrbuwbrrbbrgugwwrbuwggwggwgrrwwuurgurggbww
|
||||
ubwbrbwwwwwrguruuuwwwrbwurrruguubruuwbuwruub
|
||||
bbwwgrbbbbbbwwugggugwgrbwrbbbbbbrrwrrwrwgwb
|
||||
wuubbrbbbuubruwurrwuuruurbwbguwuugbrugwwwbugbruu
|
||||
gbwwuwgbubwwrwguugwwbwrgbwuuggrwbgbuwwguggb
|
||||
wrwwwwbwugbgbuwwrrwuwbbuwgrgwwwwrbrgggubbrbuburwr
|
||||
uwruubbrwwrrgrururgwuguwbgbbgrwrrugbwuububrbgwuwwrbbwwr
|
||||
grggbuwbbrwbgubwwuuwbggrugwgggurbbburubuurrguuuwrrw
|
||||
gbbbbugruwwuuubguuugbuwwwugrggbrggurwbwubrrbwurgwggbgrgrr
|
||||
uguububuwwurruuggwgrruwbwrrbwwgwwgbgrrbgrgw
|
||||
rrwuwguwubggrwbwbruuwggruuwrbwgrrgugbwrugwguwugbbrb
|
||||
wbwggrbrwguwwugggwwrbwrrbrgwwwgubggbrgrrrgububgwubrgw
|
||||
wrrrrrwrrwrrwuwrbugbbwuubugrburgrbbrruurbuwwbwrrbubrgw
|
||||
gburugrbrugbuwgbbwuwgugrbwugwwrbuuguggurrgw
|
||||
rbgwwwwgwwburwbbruurggwbwggwuggwrgggwgggwwubgrbggwugbgbrww
|
||||
gwurwuugrbrwgbbbuwguggwrurrurwguurgururbbrruwwgrrwgbrgw
|
||||
rwuwgbuwrbbgwbbwgggugggwrgwuguwururrrbwggrwubrwgrrwwbubgb
|
||||
rwrgubburrbuwurubbwrbwgbgbuwrbrrubbwuuurguwururgw
|
||||
ggbguuububgggurgruwgrrggwrbwubggurugugrgggwurwbgbwr
|
||||
brgwrububuwrrwrbwuuugugwururbuuwurrubrbrwwuggggruburbub
|
||||
uuuggrrbgurruurrbrurgguuuuggrbgbwgbrurwwgwurrrrgrbu
|
||||
wrrrbrbggwwrgrgbuurbwggrguwwurwrrrrubgrgw
|
||||
wbwbrwrubwbbubgugruwrwubwguurwbwbwwgurggggrgguuug
|
||||
rrrbrbggwggggrurbugbuwwrgwburgbgrwgbwgrgwb
|
||||
ugggurrgrgwgrruguwwwbugrbrbuggwwubgbbgrggrbbuuwuwwbbubrgg
|
||||
wrwbuwrrburbgurggbwubrwurwbgrggbwbbruggguggbrr
|
||||
rbbububbrrrrwrubwrwbrugrwbgguwurbwgburrgbwwwwuug
|
||||
gbgubuugubwwuwrbwwgwugrwgrggruwbugwbuwubgbwrurwrgurrgr
|
||||
uubwbgubbrrbbggrgwgubwwgrwggrbuwbuwrbwwrguubwrgw
|
||||
ruwuurggwwuwbbrwbwugwugbwbgugwwburbgugwrwggrbruwgwbuggg
|
||||
bburgrgwuurgbrbwbgurwwrrwwgbgurwubwbbggbbrugrruugbgr
|
||||
grwuugwbbugrgrbuubrgurrbubbwurgbuurrurgw
|
||||
ubwggrrrrurwggwubbbrgbrubwbrgrbrwuruubrubugbr
|
||||
urguggggggguwbrbbubggbrwuurrrruugwrbuwrgwbubbbrg
|
||||
gbgbwggwubrgwburbuwgburgubwbwgggguwwrrwuwwuggwubwbbwbrrgw
|
||||
urbwbgbuguuuwwuwbgrbuwbbuuuwugwgwbgurwbwgwugbu
|
||||
urrgrrruwwwubbbbgrruuwwgrwbbgwrbrubggubrwwbubguu
|
||||
rbwwuubwwbbrbubrbgbgwbrrguwrrbwruwbugwbrgw
|
||||
wwggwwwbrgwwurubbggrrwgwgwbrbgbbggbrgrubgrb
|
||||
brbwrrugwgrgwgugrugugwurburrbwrrrgrrbrbbguwbuburgw
|
||||
wruubbbuwwuubgwrwwbuurgbrwrbuggggbwuwrbubggwruwwwbbguu
|
||||
burgbbrrurburwbuuwbgwbwrgrrwwuwuugbgubgbwwggubr
|
||||
uuurgwugggubbbbugrugwuurwururuguwwbgrwgrgw
|
||||
ubrbbbgrgwgubuwggwrrbuuuburuwwgbguruwbuuugwguruuurgubrbrug
|
||||
rwgwguwrgrwbbbruwrbbwbguburbguwbuwrgrwwuubrub
|
||||
rrbbgrurrwwwbwwgbbbwwbbrbbbbwwgguggwbubuwbuuwuubuurgu
|
||||
ggwgggwbwbwuburugrrbwuwuwwbgbwrubrubugruubrug
|
||||
wrbbgbgbubrugrruugbuggbbwubwwrbrgbwurrrubgrrrgubw
|
||||
rwuurgubwbwurbuguwwuwuguwruuwrrwbbrrrrwrrbgrgggburwgrbb
|
||||
wggwruurrwbuggruwbububgwrbburwgwbgrruwruggrgbgbguugwuwuw
|
||||
rurbrwgrbwwgrurwgbwbwugubwbrbgrgbgubggwbbrubugrrr
|
||||
ururuubgwwrwwwrbrgguwurgbbuugguugbuwurrwrurwuwrburburuwub
|
||||
uwwwbwrbgururuggburruguurrrwgrbgwbwbrbgwburbw
|
||||
ruwggwubwbwggruggbgubrubuuwuurugwrwuuwgbubrrurwuwu
|
||||
wwrubrbwrbwwuwgurbrwrurrubbwrbwwbrbrbubwwubbgbubwruwgwuw
|
||||
bwwbuggruwwurgbuwgurubuwugbgwuruurruwuurgrgrrr
|
||||
urbuwrbwgwurwrggugrbruwbgwggwggrubwwuubwbbububg
|
||||
rwbgwgbwwuggruubguubugbuggrrwbwrrbwbwruububw
|
||||
rgbrrburwugurwrrrubwwgwrwuwwurbwbuugurbrbuuggrrwrrw
|
||||
bgbrugurrrgrubrbrwwrbwurggubbuwrrgwrrgbrgw
|
||||
ugrgbbbrwgrbguurwbburuurwwrggurgggrrubrrbrbrugwurubbw
|
||||
rrwbgburwrwgwurwrwbrgrwgbuuurwuguubgguggwbbuwuubguwrrb
|
||||
rguuurbruwgwrugwwguuuwwwrgruwururgwrruwbbbuuwggurbu
|
||||
wuwguurrgwubruurruwbwbgwgrrbuwgrwbubwuwrbbubu
|
||||
wbbggubrgbgggbrwbwwruwwruwwgwrbgrgbwbbuburb
|
||||
guburbrwbgwubwwwubbggggwbwrguguwwbrbbgwuwguwrwgwg
|
||||
gwgwggwuubuggrburwwrrgggubuurubbgbwbrgbwwwrbgwbbbubru
|
||||
wbbwrbgbugbugwrgrwuguwrrrwgrugrbbuwbrwubuu
|
||||
gwgrrgwrgwwbgbbrububbgwggrbgwrrwubgwbguggggurgw
|
||||
bwbbgrwuwuugbbugbwwwgwwbrburggbbubrwuggurrbwwbrrgb
|
||||
gbrrbgwwrrgubbgggrgbubrgubguwrugrrguwgruwubuwbgbwguwgruwrgw
|
||||
bwwgwgrwbgrrgwrugrbwwwurwwrguubuwgwgrugrrgrgw
|
||||
rwuubggrgubbwuwgrrwurwwwbrruwrububuggbrggrggwrgwrgw
|
||||
rbuubuwrbbruwbuwgubguwrurwrgbwugbwwrgbrwwwggwbuubgw
|
||||
ubrrbwwgrbrrubuwbrubbugwbugwrrbrrubrwrurubggrgrgbgburu
|
||||
buwrwggubrbrrgrwwugwwburgburrgbuugrwruuuwuuwggubwbgwurw
|
||||
bugbwrrrwbbbubwgrrwrrbruurgruugbbwbwwurgwwrgw
|
||||
ugwgwrgbbguwubrrbugguruggbrwwgrwgrgwgrbrubuwwrwguwrwurgw
|
||||
rubwgbrgguwrgbwurugburwwwrbrgwugbbgburubwrrgrgbggu
|
||||
bwuubbuurbuwburwwuubuuwgggbbbgrwrgbwwwrbbrrubruuw
|
||||
wbbwggbbwbrgwrrbgwwwwuburwuwwrgubgububwwuuwrbrrgw
|
||||
rbgwrwuwuugrwwbwgrgbgruugruwrbwgwugrwbrggbgrgbrrrwuru
|
||||
ubgwbwwrugggrwgurrwbwwrbwgrgwggwbrubwwwuggrwgbb
|
||||
rgwubwbrgrbggbwuwuwugruggbrrgbbwrgruwuwrgw
|
||||
urwrwrurubwwgbwgguruwbuugrugwggrwurgbrwbbrgbwbgbugrrg
|
||||
bbrwgbuwubwubgwgrwrwuruwrrbubrwrgggugwruwwubw
|
||||
rrbuwbwrrwgburbwguugwbwgwuwrwwrbwgwrgubbbugbrbggbbgbruu
|
||||
ugwgubrbbwrbbgrgrubbwrubrbgwuuruwgugwbwgwwwrrggwgbrwuwbwb
|
||||
bbrbrbwrggbbuwgwburwuwuggrbgrrugwgwurrgrwuubwguuwrgw
|
||||
rbbuwwwbbgwurwbgbgrbguuwrrwggwguwggbuwbwbggwbb
|
||||
uruurrrrbrrgwbrgbuuubugggrwwgrbugrgbruwbggwuugrugububgugw
|
||||
wwuwwruuwwgrgwbuwruuwrbuubgrrububuggubwuuru
|
||||
ubwbggggwubruguwwgbwbubwwubgwbuwbwbwggrgw
|
||||
wurrbrbbubbbwguwbuugbwbrbwguwurwrrwgwwwugurrguuwuubbrugrwu
|
||||
wrrgugrwwgugrwgwgwbwrwwrrbwubwwrguuruggrugbwgrwrrbgbrwwrb
|
||||
uuwuggggwuuwbuubgbwrrrugwuuwbbwgrrbbrwbuururgbruwr
|
||||
rwbubbgwugbgbgurgggugwggbwrwubuwbwwgggbwrwrgrwubrwgwg
|
||||
wbwrwwurgrgrrrwwuwgbwbugbwgbwbbrggwbgwbgrggbgrrwgwrbrb
|
||||
gugbguwbwrwbrgbgggrrwrgbuuuggbugbwubugbbgbrrbrruburgbu
|
||||
rururwrrugubugububbubgwugurwgwwbrbgrwbrwbbwgu
|
||||
wrbggguruwgwgbrwrgguburbgwburggrbrwwuwuggru
|
||||
rbbbwbrbwbgbwrbbwuggrbgwbrgugggbwburwubgbrgwuuwrbguurwrg
|
||||
gugrrggbbwrbwrwbubuurrbrbruuwwuuugurwrrrrggwuwgrruruw
|
||||
uruurwbwbuwrbubbgrwwgbwurbguubbuwgrrwrbrrwrggbwrr
|
||||
wrbwuuwgwrgrubrurruubburgbrbbubuguurugwurbgubuuwrwrbwr
|
||||
wrugbwrugwggwrubguwguggbwrwwgbgwuubbubuurbubwbuuuwu
|
||||
uuuwurgwgubuwrwwgrwuguwggrwgggrwruugbbugggbrwrbugw
|
||||
bbbuuubwrwbwrwwurugrwwbrwrrrubrwwwggrurbgggbg
|
||||
wbgguwwwbgbrwrrruurubggrwbwwrurgurwrgrrgbuwwggg
|
||||
wuwwurugwugbuwgbuggwrbrugbgrgrruwwbwugbrwwbwrwgwgguubuurb
|
||||
bubwubbggruggwububwuwrwgbugrwgbrwgruurbgrrrwbbrgrwurrgwuwb
|
||||
rgrgrgubbwgwbrgrbururbwwwruwwwbrbwbbuuwbbwgbwrgg
|
||||
wwgbbuwgubbubrbgrbwrggggbgrbwgwurrrggugwbgbgrrurruwrb
|
||||
rgruruwrggwrrggbugwgguuggbgwbrwwguuuugbbbwruuugrugubbgwg
|
||||
rrrrurrubwrrugbgbubrbgrgbwwbbrurrrrurwwgbggr
|
||||
bwwrgguubgwgruuuwrwgubbgubuurrurbrgurgbwrbuwbgrruuuubugwb
|
||||
rrwrubugggguwbuugrbubwwwrwbbrgggruwggbwubuubrurgw
|
||||
bbgubbwrubguuubrwuggbwggggggbgubuguuwrwrggbwubgwrwuu
|
||||
rugruwrbgrgguwwrwrbggruwrbwrrrurrgggubuggugubrww
|
||||
bwwgrgwgwgbgggguurrwgwuugbwwrwbbuurrgwguubg
|
||||
wgwgwuburrwbgbuurggugbburwubwuwgwuubwwrgbrrrw
|
||||
wgggugwwwggbggbbgbwurwwwurbgrwugugggguubbbw
|
||||
grburguwbwrrgwubbbuburgburrgubbruwrwggugrgrbrubg
|
||||
uruurubuwgurgrubuwuwgbbrgguwubuurgwrwwbwbbuu
|
||||
wgurrrgwuugburwrrwwbrugwbwwrgrgwwwugbwggbgruubwurgw
|
||||
bggwrwggrgrwgrrbburubrbwwbrubbbbbuuuuubrwbbbwrbwubgbwrgr
|
||||
uwuguuwbruurwgugbggrrgrruugrrbrwrurrgrrrgbbbgwurbubrgw
|
||||
grwbwruwwbwrugubwrwguguwwrwgruwrgbguugwwwbuw
|
||||
brbggwbruwggrguruuurrgrwgugwgurbrurrburwrbubuggbguwurrgw
|
||||
rgubuguruuwuggurbuuuwwrrbbuburwruuwuggruggwrwwrgwrrubrrur
|
||||
rgbwrggwrrgurrgrrbrgrggrbbbgwubbrbgubrguwuurbwggbgwwwu
|
||||
grubgrwgrgrurrgrggubgugbgwrbbuwgbgruwwwbbrwruu
|
||||
grgwrwrugggubwgwwgwwwgrgruurbrrwuurgubbbbgrbbwrwuubgrwwb
|
||||
gwbuuubbwgwrbubuwbbbgrwgrwgwuubgwwrwbbbbwugugrrwwuuruuggu
|
||||
bgwubrgwuwwuruwbbgugbgruwwuuuggbrgbggbwgwubbbrrbggu
|
||||
rruuuburggwbrbwwbwrurgubburggbggwrugururbugwgwbgggu
|
||||
buwubugbwrgwbrrwuuurubwuubgrwrwrbubwrbwrugrwrbgrur
|
||||
rwbbwbrbrgwggwwubgbbbguubwwgbrwbwbguburrwbg
|
||||
uwwbubbbbgugrrgbrwbgwuwwwgwuwwrwurwrgwwuugrbbwgbburrbgrgw
|
||||
wbbgwrbrwbrubbrgbgwrrwggwubbbgbgbwwbggwrbguwwggurggurb
|
||||
bwrbuwwgubwubggwgrwwgbgbgwguwuuguuuuggbugwgrwgwwgbr
|
||||
ugruwubuwurwbgbwubuwggrbbbbburgbggrbrwrwrgrbugwwgubgguuwrgw
|
||||
wuwgggggbrwugbrguwururruugwwgugggwbwbbruubgbbrwwrgw
|
||||
rbbgggubgbburgbrrgubwubrburwggbrugbgbuwgbuwbubggugrrubuw
|
||||
rgurugguguwwrgbbrwbggwrggbwbrwgruwuburbwbggrgwwwuwwgur
|
||||
ubbbwurwuugrubwrurrrggwggbugbbwwurggubbwrrggwwbrbwbbbgrbub
|
||||
bwgrgbugggbgrrwwbuwuwwwbrubwuugrurrwuwugbggbubrbgubrbbgww
|
||||
brrggurwgwuuwburuwruugbwbuuuwuwrbugurubugbwwu
|
||||
uubrbgguggbbbwgwubwgrrbgbwggrrubrrrwubugbbgwrrrbg
|
||||
uwuruwrrwwgbwwbgbruuuggrguwbrubgbuugggrbgbugubbgwwrwrrgwbgw
|
||||
wgrbwurwbubwggugrgwubuggrrurwwrwuuuuggbgrbbguuuwguwgg
|
||||
wwururbgrurgwruuguwrruwuggrugwbrurruwurrbubb
|
||||
urrrbggrwwwbwbbrubwrgbwwrwrwrrruuurwggrrwgurrrrgbrg
|
||||
gbbugbwrggwgwrbbbgwgbuugbruguuuwuwrgbgrbwgrgw
|
||||
uggbrrwwubgwbrwrwrbugurgrubwbgbuuububruurrbrbwbrgw
|
||||
bubrrwuubuuugrbggrbrwgrrwwggwrurruuwguwrurg
|
||||
ggggbbuwuugbubwgugurwwwrbgbrburrbwgbgrwrugrrbggbgubbwggrgb
|
||||
wbrbwwwrubggwggbgubbrrubgrggbuggurgrwrrwruurubb
|
||||
uwbgrbgubwguuwrbburrugugbwbrggubgrrrwbubrruwbggurrwbbrgw
|
||||
ggbwbruwubggburubuuuuggbbburwgbwuwrwbwggwb
|
||||
ggwwuwwuuwruwgurbuwbgguwurbuububrwbubgwububuggb
|
||||
gbgbbbbrwwwgwbgrbbuwuggwrugbugbuwuuruwgwruguwuwgrrbggr
|
||||
rruburbbrrguwwgguguwrruwgwrrbrwbbuuuwwgurbwuwbg
|
||||
gwwwbwwrrgwwgurwruwbwbrgubwgbgbwurrrgwugbbugwrbrg
|
||||
urgrwgbbwrbgwbwggbugguwwrgggugbbbrggubbgbrugwgrgw
|
||||
uwgrwwbbbwwrgbbwrwrubuurbugwbwugrbbgrruururuuurbuurw
|
||||
uggrwwbrurgbwrggugrrbbwwwwbrwgrwbbbuwgwuuwuwbrrb
|
||||
wruuwuubrwbuubbbbwgwrubugbrrbgwgrguuuwbbwggwggugr
|
||||
wuubrurgwrruwguwgrguwugugwggrrgwwbruwrubwrrbg
|
||||
wwrugbubuurwuubburubwrwuwuuwrgbwbrggwbuwgru
|
||||
wrbggbrbgwwrgrggggwruwrwbgbuuuubwwuuurrgbbrurbgggurrrgw
|
||||
rwgwbbgbbbgrbgbwbrguuwgwrwrwwwuurwrruwburbwgbgbguguwrbwurg
|
||||
gwrbwguubgrubgwwuguuwwgugbwggrgwrbrgwbbugugrbrbrrw
|
||||
wgwugbbbbbugrbggubrwwbgguurggbgbbbwwrwwgrrrrbggrgrbb
|
||||
gggbrbuuugubgwgwuggguwbgbbugwbwrgrbrrwugrggurrwgur
|
||||
wbggbwgbuwuwgwgbwwgrrwrgugggwwbrwrrrbwwrgw
|
||||
gwgubwbrgurrguubburuwguwwbrggwwbbbuwuubbggbruu
|
||||
gubwrbrwrwrwwrwggbgwbggbgwgwwguwubrrwguuguubrrwruuwuwurrgw
|
||||
guuwrurguurguruuuwrwbgggruwrbrbbwrrrwwbuburgbwwrubwrgwwbgb
|
||||
rgwwuruwrrrrrrbwrrbgrurgwwuggrrubgwurwrugrrbrwgwwwrwurgwbrgw
|
||||
ggwggurwbggwwubwrbrurbuubrrubguuruuwbgrububbgrgw
|
||||
gbwwggggurwggbuwrrgrwrububwggbwbwbruubrgrrrubuurwwbuwwuu
|
||||
ugggbwbwbrbrgwwburbrrubbwuuugurwbbbgbuwbbwuwrbgwgwruw
|
||||
gwgrwurgwgwrwgbruruwrugwwguuuugugggrbgbwgbw
|
||||
bwuwwguggbwrrbgburbwbguwwuwwbwurguwwbugwrgw
|
||||
bbwbwwrgburgbbuurggwrururwruwrugbubuguwwbrubuugg
|
||||
gbgwwrurgbuwuwbrwubwbbgruwbbgbgrubuwwgrwgg
|
||||
rruggbugrgurwuburgubwbbgburrwwbggwwrrwbbwwbrwwrw
|
||||
grrbwrgwurbruwrbgurubrbugbuwwrbrugwgwuurggbwrguggbwruw
|
||||
ubbguuurwwrgbuuwwgrrbububugwbuuburwwuububwbwubrwguwwwrbw
|
||||
rwugwbrrwwuwwuuruubwwbwbuwuwgurwurrrrbgubwggwrwbwrgbww
|
||||
brbburrgububgburgbwuubrrubgbrrgwbuwwwbgwguwuurubrubur
|
||||
bwwubguwbrwbrbugwurrruguwwbuuuwrbbbbwwbuwwbbgggurgw
|
||||
wbuguubruburgwguwguwwbggruwubwbuuggwuwburburbuu
|
||||
brwwbwrwbgwugubuubrbwrbgbgrggbuuwwurburgbbuwruggwrrrrgb
|
||||
brrbbugwbgrrwwbuurbbuwbggubuwurbgwwbubwwubruuuwbwurgw
|
||||
urbbgbwbwbgurbubuwurggrubwgrgwwrgrrggubwrgg
|
||||
urgwggurwburbggugwwwugwbguwuwgbbrrbwurggugugrwurgwwrb
|
||||
rggwuwruugrwgbwuburuwbbwrrrgrubuugwrurggburrgw
|
||||
wrurbgbbugurwugrbbbwugbwubgubgruwuuguburrrwggbuuggbrrbw
|
||||
72
2024/day19/main.py
Normal file
72
2024/day19/main.py
Normal file
@ -0,0 +1,72 @@
|
||||
from functools import cache
|
||||
|
||||
with open('input.txt', 'r') as file:
|
||||
data: list[str] = file.readlines()
|
||||
|
||||
parts: list[str] = data[0].strip().split(', ')
|
||||
|
||||
starting_letter: dict[str, str] = {}
|
||||
|
||||
for part in parts:
|
||||
first_char = part[0]
|
||||
|
||||
if first_char not in starting_letter:
|
||||
starting_letter[first_char] = [part]
|
||||
else:
|
||||
starting_letter[first_char].append(part)
|
||||
|
||||
designs = [design.strip() for design in data[2:]]
|
||||
|
||||
# this solution is pretty slow and stupid but it works, i think some variation of KMP would be faster? like a graph based search with a large amount of pre-processing
|
||||
# Could maybe use memoization on substrings
|
||||
@cache
|
||||
def search_designs(design: str) -> bool:
|
||||
if not design:
|
||||
return True
|
||||
|
||||
first_char = design[0]
|
||||
|
||||
if first_char not in starting_letter:
|
||||
return False
|
||||
|
||||
possible_matches = starting_letter[first_char]
|
||||
|
||||
possible = []
|
||||
for possible_match in possible_matches:
|
||||
if possible_match == design[:len(possible_match)]:
|
||||
possible.append(design.replace(possible_match, ''))
|
||||
|
||||
return any([search_designs(m) for m in possible])
|
||||
|
||||
|
||||
possible_count = 0
|
||||
for i, design in enumerate(designs):
|
||||
if search_designs(design):
|
||||
print(f'Design {i} finished search')
|
||||
possible_count += 1
|
||||
|
||||
print(f'Possible Designs: {possible_count}')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
10
2024/day19/test.txt
Normal file
10
2024/day19/test.txt
Normal file
@ -0,0 +1,10 @@
|
||||
r, wr, b, g, bwu, rb, gb, br
|
||||
|
||||
brwrr
|
||||
bggr
|
||||
gbbr
|
||||
rrbgbr
|
||||
ubwu
|
||||
bwurrg
|
||||
brgr
|
||||
bbrgwb
|
||||
4099
2025/day1/p1/input.txt
Normal file
4099
2025/day1/p1/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
45
2025/day1/p1/main.py
Normal file
45
2025/day1/p1/main.py
Normal file
@ -0,0 +1,45 @@
|
||||
INPUT = "input.txt"
|
||||
|
||||
with open(INPUT, 'r') as file:
|
||||
lines: list[str] = file.readlines()
|
||||
|
||||
place = 50
|
||||
zeroes = 0
|
||||
|
||||
# returns new place
|
||||
# dir, 0: L, 1: R
|
||||
|
||||
def move_dial(place: int, move: int, direction: int) -> int:
|
||||
|
||||
if direction == 0:
|
||||
move *= -1
|
||||
|
||||
temp = place + move
|
||||
|
||||
if temp < 0:
|
||||
place = 100 + (temp)
|
||||
elif temp > 99:
|
||||
place = abs(100 - temp)
|
||||
else:
|
||||
place = place + move
|
||||
|
||||
return place
|
||||
|
||||
for line in lines:
|
||||
line: str = line.strip()
|
||||
|
||||
direction: int = 0 if line[0] == 'L' else 1
|
||||
|
||||
# We only actually care about the last two numbers
|
||||
if len(line) > 3:
|
||||
move = int(line[-2:])
|
||||
else:
|
||||
move = int(line[1:])
|
||||
|
||||
place = move_dial(place, move, direction)
|
||||
|
||||
if place == 0:
|
||||
zeroes += 1
|
||||
|
||||
print(f'Dial Zero Count: {zeroes}')
|
||||
|
||||
10
2025/day1/p1/test.txt
Normal file
10
2025/day1/p1/test.txt
Normal file
@ -0,0 +1,10 @@
|
||||
L68
|
||||
L30
|
||||
R48
|
||||
L5
|
||||
R60
|
||||
L55
|
||||
L1
|
||||
L99
|
||||
R14
|
||||
L82
|
||||
4099
2025/day1/p2/input.txt
Normal file
4099
2025/day1/p2/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
46
2025/day1/p2/main.py
Normal file
46
2025/day1/p2/main.py
Normal file
@ -0,0 +1,46 @@
|
||||
INPUT = "input.txt"
|
||||
|
||||
with open(INPUT, 'r') as file:
|
||||
lines: list[str] = file.readlines()
|
||||
|
||||
place = 50
|
||||
zeroes = 0
|
||||
|
||||
# returns (new place, zeroes)
|
||||
# dir, 0: L, 1: R
|
||||
def move_dial(place: int, move: int, direction: int) -> tuple[int, int]:
|
||||
|
||||
if direction == 0:
|
||||
move *= -1
|
||||
|
||||
temp = place + move
|
||||
|
||||
if temp < 0:
|
||||
if place == 0:
|
||||
return (100 + (temp), 0)
|
||||
return (100 + (temp), 1)
|
||||
elif temp > 99:
|
||||
return (abs(100 - temp), 1)
|
||||
elif temp == 0:
|
||||
return (temp, 1)
|
||||
else:
|
||||
return (temp, 0)
|
||||
|
||||
for line in lines:
|
||||
line: str = line.strip()
|
||||
|
||||
direction: int = 0 if line[0] == 'L' else 1
|
||||
|
||||
# We only actually care about the last two numbers
|
||||
if len(line) > 3:
|
||||
move = int(line[-2:])
|
||||
zeroes += int(line[1])
|
||||
else:
|
||||
move = int(line[1:])
|
||||
|
||||
place, z = move_dial(place, move, direction)
|
||||
|
||||
zeroes += z
|
||||
|
||||
print(f'Dial Zero Count: {zeroes}')
|
||||
|
||||
10
2025/day1/p2/test.txt
Normal file
10
2025/day1/p2/test.txt
Normal file
@ -0,0 +1,10 @@
|
||||
L68
|
||||
L30
|
||||
R48
|
||||
L5
|
||||
R60
|
||||
L55
|
||||
L1
|
||||
L99
|
||||
R14
|
||||
L82
|
||||
Loading…
x
Reference in New Issue
Block a user