heh
d24
| -rw-r--r-- | src/inp.txt | 441 | ||||
| -rw-r--r-- | src/main.rs | 99 | ||||
| -rw-r--r-- | src/util.rs | 36 |
3 files changed, 379 insertions, 197 deletions
diff --git a/src/inp.txt b/src/inp.txt index 009a788..0168991 100644 --- a/src/inp.txt +++ b/src/inp.txt @@ -1,141 +1,300 @@ -#.########################################################################################################################################### -#...###...#...#.......#...#.....#.........#...#...#...#...#...#.....#...#.......#...#...#.......#.....#...........#.....#...###...#.....#...# -###.###.#.#.#.#.#####.#.#.#.###.#.#######.#.#.#.#.#.#.#.#.#.#.#.###.#.#.#.#####.#.#.#.#.#.#####.#.###.#.#########.#.###.#.#.###.#.#.###.#.#.# -#...#...#...#.#.#.....#.#.#...#.#.......#.#.#.#.#.#.#.#.#.#.#.#.#...#.#.#...#...#.#.#.#.#.#.....#.#...#.........#.#...#.#.#...#.#.#...#.#.#.# -#.###.#######.#.#v#####.#.###.#.#######.#.#.#.#.#.#.#.#.#.#.#.#.#.###.#.###.#.###.#.#.#.#.#.#####.#.###########.#.###.#.#.###.#.#.###.#.#.#.# -#...#...#.....#.#.>.###.#.#...#.#.....#.#.#.#.#.#.#.#.#.#...#...#.>.>.#...#.#...#.#...#...#.#...#.#.....#.......#.###.#.#.#...#.#.###.#.#.#.# -###.###.#.#####.#v#.###.#.#.###.#.###.#.#.#.#.#.#.#.#.#.###########v#####.#.###.#.#########.#.#.#.#####.#.#######.###.#.#.#.###.#.###.#.#.#.# -#...#...#.#...#.#.#.....#...#...#...#.#.#.#.#.#.#.#.#.#.#.........#.#.....#.#...#...#.......#.#.#.#.....#.......#.....#.#.#...#.#.#...#.#.#.# -#.###.###.#.#.#.#.###########.#####.#.#.#.#.#.#.#.#.#.#.#.#######.#.#.#####.#.#####.#.#######.#.#.#.###########.#######.#.###.#.#.#.###.#.#.# -#.#...###...#...#.....###...#...#...#...#.#.#.#.#...#...#.......#...#...#...#.#.>.>.#.....#...#.#.#.###...#...#.......#...###.#.#.#.#...#.#.# -#.#.#################.###.#.###.#.#######.#.#.#.###############.#######.#.###.#.#v#######.#.###.#.#.###.#.#.#.#######.#######.#.#.#.#.###.#.# -#.#...###.............#...#.....#.......#...#.#...#.......#...#.....###.#.#...#.#...#.....#.#...#.#...#.#.#.#.#.......#...###...#.#.#.....#.# -#.###.###.#############.###############.#####.###.#.#####.#.#.#####.###.#.#.###.###.#.#####.#.###.###.#.#.#.#.#.#######.#.#######.#.#######.# -#.#...#...#.........###.......#.>.>.....#...#.#...#.....#.#.#.....#...#.#.#.#...#...#...###.#...#.#...#.#.#.#.#.........#.....#...#.#.......# -#.#.###.###.#######.#########.#.#v#######.#.#.#.#######.#.#.#####.###.#.#.#.#.###.#####.###.###.#.#.###.#.#.#.###############.#.###.#.####### -#.#...#.#...#.....#.......###.#.#.#...###.#.#...#.......#.#.....#.#...#.#.#.#.#...#...#...#...#.#.#.#...#...#.#...............#.....#.......# -#.###.#.#.###.###.#######.###.#.#.#.#.###.#.#####.#######.#####.#.#.###.#.#.#.#.###.#.###.###.#.#.#.#.#######.#.###########################.# -#.#...#.#...#...#.........#...#.#.#.#.....#.....#.#.....#.......#...###...#...#.....#...#...#.#.#.#.#...#.....#.............###.............# -#.#.###.###.###.###########.###.#.#.###########.#.#.###.###############################.###.#.#.#.#.###.#.#################.###.############# -#...###.....###...........#.#...#.#.#...........#...###...........#...###...#...#...#...#...#.#.#.#.#...#.#...>.>.#.........#...#...#.......# -#########################.#.#.###.#.#.###########################.#.#.###.#.#.#.#.#.#.###.###.#.#.#.#.###.#.###v#.#.#########.###.#.#.#####.# -#...#.......#...........#.#.#...#...#.........#...#.............#...#...#.#...#...#...###.....#...#.#.#...#.###.#.#.......###...#.#.#.#.....# -#.#.#.#####.#.#########.#.#.###.#############.#.#.#.###########.#######.#.#########################.#.#.###.###.#.#######.#####.#.#.#.#.##### -#.#.#.....#.#.........#...#.....#...#.........#.#.#.#...#...###.........#...#...#...#...........#...#.#...#.#...#.........#...#...#...#.....# -#.#.#####.#.#########.###########.#.#.#########.#.#.#.#.#.#.###############.#.#.#.#.#.#########.#.###.###.#.#.#############.#.#############.# -#.#.#.....#.#.........#...###.....#.#...........#.#...#...#.............###...#...#...#.....#...#.....###...#...#...#.....#.#...###...#.....# -#.#.#.#####.#.#########.#.###.#####.#############.#####################.###############.###.#.#################.#.#.#.###.#.###.###.#.#.##### -#.#.#.....#.#.......###.#...#.....#.#.........#...#...#.................#...###.........###...#...#...#...#.....#.#.#...#.#...#.###.#.#...### -#.#.#####.#.#######v###.###.#####.#.#.#######.#.###.#.#.#################.#.###.###############.#.#.#.#.#.#.#####.#.###.#.###.#.###.#.###v### -#.#...#...#.......#.>.#.#...#.....#.#.......#...###.#.#...........#.....#.#...#.........#...#...#...#.#.#.#.....#.#.....#.#...#.#...#.#.>.### -#.###.#.#########.#v#.#.#.###.#####.#######.#######.#.###########.#.###.#.###.#########.#.#.#.#######.#.#.#####.#.#######.#.###.#.###.#.#v### -#.#...#.........#.#.#.#.#...#.....#.#...#...#.....#.#.....#...#...#.#...#...#.#...#.....#.#.#.#.......#.#.###...#.......#.#...#.#...#.#.#...# -#.#.###########.#.#.#.#.###.#####.#.#.#.#v###.###.#.#####.#.#.#.###.#.#####.#.#.#.#.#####.#.#.#.#######.#.###v#########.#.###.#.###.#.#.###.# -#.#.........###.#.#.#.#.#...#...#.#...#.>.>.#.#...#.....#.#.#...###.#.#...#.#.#.#.#.....#.#.#.#...#...#.#...>.>.#.....#.#.#...#.....#...#...# -#.#########.###.#.#.#.#.#.###.#.#.#######v#.#.#.#######.#.#v#######.#.#.#.#.#.#.#.#####.#.#.#.###.#.#.#.#####v#.#.###.#.#.#.#############.### -#.........#.#...#.#.#...#.#...#.#.....#...#.#.#...#.....#.>.>.....#.#.#.#.#.#...#...#...#.#...#...#.#.#.#.....#.#.###.#.#.#...#.........#...# -#########.#.#.###.#.#####.#.###.#####.#.###.#.###.#.#######v#####.#.#.#.#.#.#######.#.###.#####.###.#.#.#.#####.#.###.#.#.###.#.#######.###.# -#.........#...###...###...#.###.#.....#...#.#...#...###...#.#.....#.#.#.#.#...#.....#...#.....#.....#...#.....#.#...#...#.#...#...#...#.....# -#.#####################.###.###.#.#######.#.###.#######.#.#.#.#####.#.#.#.###.#.#######v#####.###############.#.###.#####.#.#####.#.#.####### -#.....................#...#...#.#.#.......#.....#.......#...#.#...#.#.#.#.#...#.......>.>.#...#####.....###...#...#.....#...#####...#.......# -#####################.###.###.#.#.#.#############.###########.#.#.#.#.#.#.#.###########v#.#.#######.###.###.#####.#####.###################.# -#...#...........#...#.#...#...#...#.......###...#...#.......#.#.#.#.#...#.#.###.........#...###.....#...#...#.....#.....#.....###...#.......# -#.#.#.#########.#.#.#.#.###.#############.###.#.###.#.#####.#.#.#.#.#####.#.###.###############.#####.###.###.#####.#####.###.###.#.#.####### -#.#...#.......#.#.#.#.#...#.#...#...#...#.....#...#...#.....#...#...###...#.#...#.......###...#.....#.....###.....#.#...#...#.....#...#...### -#.#####.#####.#.#.#.#.###.#.#.#.#.#.#.#.#########.#####.###############.###.#.###.#####.###.#.#####.#############.#.#.#.###.###########.#.### -#.#...#.#.....#...#...###.#.#.#...#...#.#.........#.....#.........#.....#...#.....#...#...#.#.#.....#...###...###...#.#...#.............#...# -#.#.#.#.#.###############.#.#.#########.#.#########.#####.#######.#.#####.#########.#.###.#.#.#.#####.#.###.#.#######.###.#################.# -#.#.#...#...###...#...###...#.........#.#.....#####.......#.....#.#.#.....#...###...#...#.#.#.#.......#.....#.#...#...#...#...###...#.......# -#.#.#######.###.#.#.#.###############.#.#####.#############.###.#.#.#.#####.#.###.#####.#.#.#.###############.#.#.#.###.###.#.###.#.#.####### -#...###...#.....#...#...#.............#.....#...#...........###...#.#.#.....#.....#...#.#.#.#.................#.#.#.#...#...#.#...#...#.....# -#######.#.#############.#.#################.###.#.#################.#.#.###########.#.#.#.#.###################.#.#.#.###.###.#.#######.###.# -#.......#.......#.......#.........#.......#.....#.................#...#.#...#.....#.#.#...#.........#.........#.#...#...#...#.#.......#.#...# -#.#############.#.###############.#.#####.#######################.#####.#.#.#.###.#.#.#############v#.#######.#.#######.###.#.#######.#.#.### -#...#...#...###...#...#...#...###...#...#.......#.................#.....#.#...###...#.........#...>.>.#.....#.#.#.......#...#.....###...#...# -###.#.#.#.#.#######.#.#.#.#.#.#######.#.#######.#.#################.#####.###################.#.###v###.###.#.#.#.#######.#######.#########.# -#...#.#.#.#.....###.#.#.#.#.#.###...#.#.........#.............#...#.......###...#...#.........#...#.###.###...#.#.....###.......#.#.........# -#.###.#.#.#####.###.#.#.#.#.#.###.#.#.#######################.#.#.###########.#.#.#.#.###########.#.###.#######.#####.#########.#.#.######### -#...#.#...#.....#...#.#.#.#.#...#.#.#.............#...........#.#...#...#.....#...#...#...........#...#...###...#.....#...#.....#.#.........# -###.#.#####v#####.###.#.#.#.###.#.#.#############.#.###########.###.#.#.#.#############.#############.###.###.###.#####.#.#.#####.#########.# -###...#...#.>.###...#.#.#.#...#.#.#...#...........#.......#...#.#...#.#.#.............#.......#...###...#...#.#...#...#.#.#...#...#...###...# -#######.#.#v#.#####.#.#.#.###.#.#.###.#.#################.#.#.#.#.###.#.#############.#######.#.#.#####.###.#.#.###.#.#.#.###.#.###.#.###v### -#.......#...#...###.#.#.#.###.#.#...#.#...###...###...#...#.#...#.#...#.#...#...#.....#...###...#...#...#...#.#...#.#.#.#.#...#.#...#.#.>.### -#.#############.###.#.#.#.###.#.###.#.###v###.#.###.#.#v###.#####.#.###.#.#.#.#.#.#####.#.#########.#.###.###.###.#.#.#.#.#.###.#.###.#.#v### -#.......#.....#.#...#.#.#.#...#...#.#...>.>.#.#.#...#.>.>.#.#.....#...#.#.#.#.#.#.#...#.#.#.....#...#.###.....###.#.#.#.#.#...#.#.###...#...# -#######.#.###.#.#.###.#.#.#.#####.#.#####v#.#.#.#.#####v#.#.#.#######.#.#.#.#.#.#v#.#.#.#.#.###.#.###.###########.#.#.#.#.###.#.#.#########.# -#######.#.###.#.#.#...#.#.#...###...###...#.#.#.#.#.....#...#...#...#.#.#.#.#.#.>.>.#.#.#.#.#...#.###.......#####.#.#.#.#...#.#...#...#...#.# -#######.#.###.#.#.#.###.#.###.#########.###.#.#.#.#.###########.#.#.#.#.#.#.#.###v###.#.#.#.#.###.#########.#####.#.#.#.###.#.#####.#.#.#.#.# -#.......#.#...#...#.....#.#...#.........###.#.#...#...........#.#.#.#.#.#.#...#...###...#...#...#.#.......#.....#...#.#.#...#.#.....#...#...# -#.#######.#.#############.#.###.###########.#.###############.#.#.#.#.#.#.#####.###############.#.#.#####.#####.#####.#.#.###.#.############# -#.........#.........#...#.#.#...#...#.....#.#.#...#...........#...#.#.#...#...#.....#...#...#...#.#.....#.#.....#...#.#.#...#.#.............# -###################.#.#.#.#.#.###.#.#.###.#.#.#.#.#.###############.#.#####.#.#####.#.#.#.#.#.###.#####.#.#.#####.#.#.#.###.#.#############.# -#...#...#...#.......#.#.#...#.....#...#...#...#.#.#.....#...#...###.#.#.....#.......#.#...#.#.....#.....#...#.....#.#...#...#...#...........# -#.#.#.#.#.#.#.#######.#.###############.#######.#.#####.#.#.#.#.###.#.#.#############.#####.#######.#########.#####.#####.#####.#.########### -#.#...#...#...#...###.#...#...#...#...#.....#...#.......#.#.#.#...#...#...#...#.....#.#.....#...###.......###.#.....#...#.......#...........# -#.#############.#.###.###.#.#.#.#.#.#.#####.#.###########.#.#.###.#######.#.#.#.###.#.#.#####.#.#########.###.#.#####.#.###################.# -#.#.............#...#...#.#.#.#.#...#.......#.............#...#...#...###...#...#...#.#.#...#.#.#...#.....#...#.....#.#.#...#.........#.....# -#.#.###############.###.#.#.#.#v###############################.###.#.###########.###.#.#.#.#.#.#.#.#.#####.#######.#.#.#.#.#.#######.#.##### -#...#...............###.#.#.#.>.>.#.......#.....................#...#...#...#...#...#.#.#.#.#.#.#.#.#.#####...#.....#.#.#.#.#.......#.#.....# -#####.#################.#.#.###v#.#.#####.#.#####################.#####.#.#.#.#.###.#.#.#.#.#.#.#.#.#v#######.#.#####.#.#.#.#######.#.#####.# -#...#.........#...#...#.#.#.###.#...#.....#.#.....#.......#.....#...#...#.#.#.#.#...#.#.#.#.#.#...#.>.>.#...#.#.#...#.#.#.#...#...#.#.#...#.# -#.#.#########v#.#.#.#.#.#.#.###.#####.#####.#.###.#.#####.#.###.###.#.###.#.#.#.#v###.#.#.#.#.#######v#.#.#.#.#.#.#.#.#.#.###.#.#.#.#.#.#.#.# -#.#.......###.>.#.#.#...#.#.#...#...#...###...#...#.#.....#...#.#...#...#.#.#.#.>.>.#.#.#.#.#...#.....#.#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.#...# -#.#######.###v###.#.#####.#.#.###.#.###.#######.###.#.#######.#.#.#####.#.#.#.###v#.#.#.#.#.###.#.#####.#.#.#.#.#.#.#.#.###.#.#.#.#.#.#v##### -#.......#.....###.#.....#...#.#...#.....#...###.....#.....###.#.#.#...#.#.#.#.#...#...#...#.....#.....#.#.#.#.#.#.#.#.#...#.#.#.#.#.#.>.#...# -#######.#########.#####.#####.#.#########.#.#############.###.#.#.#.#.#.#.#.#.#.#####################.#.#.#.#.#.#.#.#.###.#.#.#.#.#.###v#.#.# -#.....#.........#.#...#.#...#.#.....#...#.#...#...#...#...#...#.#...#.#.#.#.#.#.#...###.....#.....#...#...#.#.#.#.#.#...#.#.#.#.#...###...#.# -#.###.#########.#.#.#.#.#.#.#.#####.#.#.#.###.#.#.#.#.#v###.###.#####.#.#.#.#.#.#.#.###.###.#.###.#.#######.#.#.#.#.###.#.#.#.#.###########.# -#...#.#.........#...#...#.#...#...#.#.#.#.#...#.#.#.#.>.>...###.......#...#.#.#.#.#...#.#...#...#.#.......#.#.#.#.#.#...#.#.#...#...........# -###.#.#.#################.#####.#.#.#.#.#.#.###.#.#.###v###################.#.#.#.###.#.#.#####.#.#######.#.#.#.#.#.#.###.#.#####.########### -#...#...#.......#...#.....#.....#.#.#.#...#...#.#.#.###...#...........#...#...#...#...#.#.......#.#.......#...#...#.#.###.#.....#...........# -#.#######.#####.#.#.#.#####.#####.#.#.#######.#.#.#.#####.#.#########.#.#.#########.###.#########.#.###############.#.###.#####.###########.# -#...#.....#.....#.#.#.......#.....#...###...#...#...#.....#.#.........#.#.#.....###.....#...#.....#.....#.....#.....#.#...#.....#...#.....#.# -###.#.#####.#####.#.#########.###########.#.#########.#####.#.#########.#.#.###.#########.#.#.#########.#.###.#.#####.#.###.#####.#.#.###.#.# -#...#.#.....#...#.#.#.........#...###.....#.....#...#.......#...........#.#...#.#.........#...#...###...#.#...#.....#.#.#...#...#.#.#...#.#.# -#.###.#.#####.#.#.#.#.#########.#.###.#########.#.#.#####################.###.#.#.#############.#.###.###.#.#######.#.#.#.###.#.#.#.###.#.#.# -#.....#.....#.#.#.#.#...........#...#.......#...#.#.#...#...#.......#.....#...#.#.......#.....#.#.#...#...#.....#...#.#.#.#...#...#.....#.#.# -###########.#.#.#.#.###############.#######.#.###.#.#.#.#.#.#.#####.#.#####.###.#######.#.###.#.#.#.###.#######.#.###.#.#.#.#############.#.# -#.........#...#...#.....#.......#...#...#...#...#.#.#.#.#.#.#.....#.#.#...#...#.#.....#...#...#.#.#.....#...#...#...#.#...#.............#.#.# -#.#######.#############.#.#####.#.###.#.#.#####.#.#.#.#.#.#.#####.#.#.#.#.###.#.#.###.#####.###.#.#######.#.#.#####.#.#################.#.#.# -#.......#...............#.....#...###.#.#...#...#.#.#.#.#.#.###...#...#.#.#...#...#...#.....#...#.........#.#.....#.#...#.........#.....#...# -#######.#####################v#######.#.###.#.###.#.#.#.#.#.###v#######.#.#.#######.###.#####.#############.#####.#.###.#.#######.#.######### -#.......#.....#...#...#.....>.>.#.....#.....#...#.#.#.#...#.#.>.>.#...#.#.#...#.....###.#...#.............#.#...#.#.....#.......#.#...#...### -#.#######.###.#.#.#.#.#.#####v#.#.#############.#.#.#.#####.#.#v#.#.#.#.#.###.#.#######v#.#.#############.#.#.#.#.#############.#.###.#.#.### -#.........#...#.#.#.#.#.....#.#...#...#...#.....#.#.#.....#.#.#.#...#.#.#.#...#.#...#.>.>.#...###...#.....#...#...#...#...#...#.#.....#.#.### -###########.###.#.#.#.#####.#.#####.#.#.#.#.#####.#.#####.#.#.#.#####.#.#.#.###.#.#.#.#v#####.###.#.#.#############.#.#.#.#.#.#.#######.#.### -#...........#...#.#.#.###...#.#...#.#.#.#.#.....#.#.....#.#...#...###.#.#...###...#.#.#.###...#...#...###...###...#.#.#.#.#.#.#.........#...# -#.###########.###.#.#.###.###.#.#.#.#.#.#.#####.#.#####.#.#######.###.#.###########.#.#.###.###.#########.#.###.#.#.#.#.#.#.#.#############.# -#...........#...#.#.#...#.#...#.#.#.#...#.....#.#.#.....#.#.......#...#.....###...#...#...#.###.......#...#...#.#...#.#.#.#.#.#.......#...#.# -###########.###.#.#.###.#.#.###.#.#.#########.#.#.#.#####.#.#######.#######.###.#.#######.#.#########.#.#####.#.#####.#.#.#.#.#.#####.#.#.#.# -#.......###...#.#...#...#.#...#.#...#.........#...#.#...#.#.....###...#...#.#...#.###.....#.#...#...#.#.#.....#...#...#.#.#.#.#.....#.#.#...# -#.#####.#####.#.#####.###.###.#.#####.#############.#.#.#.#####.#####.#.#.#.#.###.###.#####.#.#.#.#.#v#.#.#######.#.###.#.#.#.#####v#.#.##### -#.....#...#...#.....#...#.###...#...#...........###...#.#.#...#.....#...#...#...#...#.....#.#.#.#.#.>.>.#.....#...#...#.#.#.#.#...>.#...#...# -#####.###.#v#######.###.#.#######.#.###########.#######.#.#.#.#####.###########.###.#####.#.#.#.#.###v#######.#.#####.#.#.#.#.#.###v#####.#.# -#####.#...#.>...#...###.#.....#...#.###.........#...###...#.#.......###.....###...#.......#...#.#.###.......#.#.....#.#.#.#.#.#...#.......#.# -#####.#.###v###.#.#####.#####.#.###.###.#########.#.#######.###########.###.#####.#############.#.#########.#.#####.#.#.#.#.#.###.#########.# -#.....#.....###...#...#.......#...#.#...#...#.....#...#...#.#...#...#...#...#.....#.......#...#.#.#.........#.#.....#.#.#.#.#.#...#.........# -#.#################.#.###########.#.#.###.#.#.#######.#.#.#.#.#.#.#.#.###.###.#####.#####.#.#.#.#.#.#########.#.#####.#.#.#.#.#.###.######### -#.........#.........#...#.....#...#.#.....#...#.......#.#.#...#...#...#...###.#...#.#.....#.#.#...#.........#.#...#...#.#...#...###...#...### -#########.#.###########.#.###.#.###.###########.#######.#.#############.#####.#.#.#.#.#####.#.#############.#.###.#.###.#############.#.#.### -#.........#.#...........#.#...#...#...........#...#...#.#.###...........#...#...#...#.......#...#...........#.#...#...#.###...#...#...#.#...# -#.#########.#.###########.#.#####.###########.###.#.#.#.#.###.###########.#.###################.#.###########.#.#####.#.###.#.#.#.#.###.###.# -#.#.....#...#.#...........#...#...#...#.....#.....#.#.#.#...#...........#.#.###.......#...#.....#...........#...#...#...#...#...#.#.....#...# -#.#.###.#.###.#.#############.#.###.#.#.###.#######.#.#.###.###########.#.#.###.#####.#.#.#.###############.#####.#.#####.#######.#######.### -#...#...#.###...#...#...#.....#.....#.#.#...#...###.#.#.#...###.........#.#...#.....#...#...#####...###.....###...#.#...#.......#.....#...### -#####.###.#######.#.#.#.#.###########.#.#.###.#.###.#.#.#.#####v#########.###.#####.#############.#.###.#######.###.#.#.#######.#####.#.##### -#...#...#...#.....#...#...#.......###...#.....#.#...#.#.#...#.>.>.#.....#.#...#...#.....###...#...#.....#...###.#...#.#.#.....#.....#...#...# -#.#.###.###.#.#############.#####.#############.#.###.#.###.#.###.#.###.#.#.###.#.#####.###.#.#.#########.#.###.#.###.#.#.###.#####.#####.#.# -#.#.....#...#...#...###...#.#.....#...#.........#...#.#...#.#.###.#.#...#.#.#...#.#...#.....#.#.........#.#.###.#.###.#.#.#...#...#...#...#.# -#.#######.#####.#.#.###.#.#.#.#####.#.#.###########.#.###.#.#.###.#.#.###.#.#.###.#.#.#######.#########v#.#.###.#.###.#.#.#.###v#.###.#.###.# -#...#.....#...#...#...#.#.#.#.#...#.#.#.......###...#.#...#.#.#...#.#...#.#.#...#.#.#.#.......#...#...>.>.#...#.#...#.#.#.#.#.>.#.....#...#.# -###.#.#####.#.#######.#.#.#.#.#.#.#.#.#######.###.###.#.###.#.#.###.###.#.#.###.#.#.#.#v#######.#.#.#########.#.###.#.#.#.#.#.#v#########.#.# -#...#.#.....#...#...#.#.#.#.#.#.#.#.#.#####...#...###.#.###.#.#...#.#...#.#.....#.#.#.>.>.#...#.#.#.#...#...#.#.###.#.#.#.#...#...#...#...#.# -#.###.#.#######.#.#.#.#.#.#.#.#.#.#.#.#####v###.#####.#.###.#.###.#.#.###.#######.#.#####.#.#.#.#.#.#.#.#.#.#.#.###.#.#.#.#######.#.#.#.###.# -#...#.#.#.....#...#...#.#.#.#.#.#.#.#...#.>.>.#...#...#...#.#.#...#.#...#.###.....#.....#.#.#.#.#.#...#...#.#.#...#...#.#.#.......#.#.#...#.# -###.#.#.#.###.#########.#.#.#.#.#.#.###.#.###.###.#.#####.#.#.#.###.###.#.###.#########.#.#.#.#.#.#########.#.###.#####.#.#.#######.#.###.#.# -###.#.#.#.###.......#...#.#.#...#.#.#...#.###.#...#.....#.#...#.....###.#...#.#...#.....#.#.#.#.#...#.....#.#.#...#.....#.#.....#...#.#...#.# -###.#.#.#.#########.#.###.#.#####.#.#.###.###.#.#######.#.#############.###.#.#.#.#.#####.#.#.#.###.#.###.#.#.#.###.#####.#####.#.###.#.###.# -#...#.#.#.#.........#.#...#.....#.#.#...#.###.#.#.......#.....#.........#...#.#.#.#.....#.#.#.#.#...#...#.#.#.#...#...#...#.....#.#...#.#...# -#.###.#.#.#.#########.#.#######.#.#.###.#.###.#.#.###########.#.#########.###.#.#.#####.#.#.#.#.#.#####.#.#.#.###.###.#.###.#####.#.###.#.### -#.....#...#...........#.........#...###...###...#.............#...........###...#.......#...#...#.......#...#.....###...###.......#.....#...# -###########################################################################################################################################.# +246721424318191, 306735195971895, 195640804079938 @ 46, -42, 141 +286716952521568, 348951612232772, 274203424013154 @ 121, 421, -683 +231402843137765, 83297412652001, 273065723902291 @ 30, 154, 66 +149007003797913, 135560881744452, 410108443488148 @ 94, 29, -45 +300753321910904, 325992413695632, 294261243172676 @ -42, -9, -109 +300781588558364, 344948875944323, 229364859114892 @ 13, 498, -357 +302416458755294, 412874844208922, 178639130881522 @ 28, 6, 18 +540472514518877, 478952261686592, 505458461450740 @ -312, -311, -173 +276629207785995, 379893174962255, 152821077152811 @ 128, 52, 262 +223200859996270, 114056922580498, 375502982328520 @ 28, 74, -27 +312505186925210, 415915381089560, 212826752815317 @ -81, -143, -118 +273794100456071, 282467744290445, 306298513451258 @ -24, -98, 41 +259245649187948, 316374707389376, 294906031108960 @ 43, -15, -79 +143643667453234, 88866006914236, 353368801626174 @ 184, 251, -86 +332368149189662, 334747534451742, 385329199247756 @ -120, -12, -361 +268933652419162, 421740118342042, 391493101790816 @ 94, -214, -679 +301531784847016, 413994789138520, 287794043139863 @ -47, -223, -46 +176915604519101, 138271809955392, 377724585323003 @ 102, 105, -70 +309189878135560, 419571934158352, 180163951121044 @ -56, -67, -12 +262132992306992, 267518766563744, 349909481560834 @ 181, 593, -756 +239788061990996, 301077791945030, 218822561314048 @ 99, 46, 69 +319370801477810, 392479898544435, 249482280086024 @ -117, -28, -281 +288707028447527, 410618924373965, 181576682269387 @ 100, -78, 62 +244521854811880, 283051561687366, 418795729455662 @ 89, 90, -398 +238807520082063, 136241007048093, 324715592395753 @ 10, 44, 30 +294299994571745, 385145428484483, 195910731717085 @ 58, 124, -52 +306461763665864, 387268253700128, 204685867171204 @ -40, 70, -89 +150598729402492, 216934671296672, 388007739625504 @ 95, -47, -27 +195072796221443, 297575703140000, 142754563217814 @ 138, -23, 233 +430769604245252, 229973070563291, 434035646179750 @ -195, -40, -99 +332353368526034, 135412329046925, 122938613925455 @ -105, 292, 272 +310982937073304, 311524964955440, 149455427070268 @ -71, 517, 290 +343115420460683, 228216500870165, 218120975698582 @ -114, 52, 113 +327597792982512, 372487719333498, 196100842247682 @ -155, 56, 32 +398064309447116, 225098858957039, 524866315148092 @ -163, -26, -213 +158929446916050, 103990827096452, 231247768851240 @ 104, 103, 121 +252227819340623, 297045207886766, 287364155527121 @ 60, 31, -68 +353843214482102, 285898655957210, 402144043314484 @ -112, -98, -69 +286960863445446, 376276907993440, 222153547640848 @ 34, -15, -51 +319293209745416, 258199711416220, 334319212032088 @ -75, -42, -18 +324432786186812, 349882976659793, 137109423781624 @ -91, -102, 247 +237574994443745, 316897394285108, 379979722976610 @ 18, -131, -47 +383515921182651, 311739218003626, 363284835363396 @ -158, -105, -61 +260527439500358, 181469835811736, 325064698571908 @ -14, -11, 35 +246859296332206, 369893127109357, 136998548988340 @ 47, -150, 243 +294454739155396, 355425422256410, 208384350886123 @ 61, 379, -162 +288293451577373, 253011793841258, 273395774598079 @ -16, 135, -44 +282626651563528, 402140597670290, 129944591466276 @ 25, -158, 307 +229860839158736, 289959627421280, 236684829341308 @ 42, -73, 100 +333234089033843, 344406817664942, 274418471987416 @ -122, -37, -81 +327113169860496, 157080430222374, 504427681777182 @ -83, 56, -196 +216695929769111, 350704706628125, 86557060742263 @ 158, -64, 380 +230636017709051, 441827058928940, 234319432021678 @ 66, -275, 81 +323330042177986, 338471392993848, 180264388740804 @ -118, 125, 131 +281852642010608, 366824981011048, 137999472048756 @ 150, 254, 397 +418862456971472, 333566748777272, 288671227290092 @ -222, -116, 14 +321152813798756, 178228588342115, 377805466604068 @ -75, 6, -29 +266638547778762, 293761636023333, 281304743583643 @ 31, 44, -60 +263242291342808, 170117111450912, 383271302891684 @ -15, 10, -31 +245996037293074, 422248817246364, 266565597450706 @ 83, -235, -39 +279315320347361, 341710731357575, 157116540219433 @ 174, 460, 252 +194638875907186, 345989262913910, 230356522421368 @ 136, -110, 81 +197781971376015, 113634354104988, 379495334474160 @ 64, 101, -49 +277269860103656, 294745907976220, 229333729353508 @ 9, 47, 51 +386321630839526, 338836698675676, 282346598519384 @ -228, -57, -59 +292755568881228, 426260682983300, 52232426778848 @ -32, -248, 400 +304787636152376, 466885993642980, 168609998346408 @ 9, -736, 134 +293607024651767, 202924050395237, 325578883249678 @ -44, 10, 5 +301719197799506, 414293049983015, 176944487458843 @ 31, -26, 48 +286430256250216, 215707378547000, 189871236710228 @ 67, 958, 53 +259709806407704, 296171312488496, 294563194535908 @ 35, 8, -60 +301569088814996, 459568281597260, 237006069307468 @ -12, -420, -259 +226107589162191, 376656862088385, 426739755818503 @ 112, -142, -354 +300593136494261, 487604661487135, 383755366664753 @ -24, -490, -742 +383786498238641, 255727808198569, 490313497645618 @ -138, -82, -135 +326533994569808, 456296377195264, 293321794346460 @ -120, -337, -242 +313852183229624, 425415506984864, 182936106557020 @ -115, -149, -38 +279004851703630, 343127247074809, 559710212918371 @ -25, -150, -294 +225129473919407, 349877740979111, 284784692668713 @ 60, -140, 20 +98199785141279, 111837182125448, 222865616734099 @ 194, 129, 124 +254743017137204, 249613491575984, 287932951940128 @ 6, -31, 40 +381923352317740, 425629240274264, 414187406927170 @ -161, -251, -144 +299793608794724, 387192364080320, 143233287595190 @ 63, 337, 464 +282720961237964, 342156001500026, 243973012424752 @ 11, -10, -23 +346383807759328, 199972748186264, 176880723079060 @ -116, 76, 177 +294266400886348, 332905124169016, 210796206927592 @ -35, -79, 111 +200848222291704, 217439026207652, 443060345157672 @ 89, 40, -194 +162176719644098, 199080132603704, 285536027394760 @ 110, 13, 53 +189990486267691, 217037870740765, 484352027390898 @ 62, -36, -139 +161968477207611, 307482098609333, 143664175167170 @ 122, -104, 221 +278039493255788, 332278741131214, 188346685796366 @ 39, 66, 118 +212024474677916, 165633698438540, 446741573376568 @ 82, 136, -224 +277511817747984, 302590965306472, 107909845889596 @ -10, -46, 288 +301306356737075, 421764316237813, 202382250223118 @ -12, -186, -35 +255609912866441, 135322494676145, 422737981043563 @ -10, 30, -58 +316297968479182, 357351582496046, 238857988822285 @ -85, -5, -54 +307161575684322, 406471185415634, 184747418154592 @ -32, 76, -51 +319432982414549, 431952554614367, 291512044719768 @ -144, -242, -865 +201180178502835, 339769343877550, 406281015855696 @ 86, -133, -137 +258964181488216, 297025006551120, 272788832005188 @ 26, -22, 5 +287028633240856, 167387227231760, 386125875793028 @ -37, 43, -59 +309195265338348, 371925232948695, 122820649199216 @ -59, 212, 511 +320804498786191, 101994064274270, 238017586878078 @ -88, 487, 29 +288986848159957, 257941572011315, 229997315679607 @ -26, 52, 78 +230775864719837, 239098577085875, 337472990937445 @ 36, -18, -22 +338036762019994, 518836779966132, 257174952367669 @ -161, -555, -126 +196477785747870, 358457014214022, 182269365183111 @ 83, -165, 172 +311549517509000, 226128674002544, 305151455714356 @ -66, 79, -36 +218207118037512, 29190212565888, 477260877122268 @ 35, 171, -140 +317393450978648, 385480355035856, 211535175710788 @ -120, 101, -155 +299091562946912, 311334794254882, 257002570737977 @ -39, 15, -14 +302224206628343, 392743599482192, 196159152582552 @ 6, 121, -97 +310033280353780, 349791097879312, 163339908361314 @ -67, 825, 209 +302057369637758, 375426899435141, 150074661070537 @ 55, 646, 416 +313663789919076, 333559381818064, 212519854206960 @ -73, -7, 73 +302767517534676, 421297694837596, 209019778422968 @ 22, -102, -350 +263160875959766, 238292859553896, 241410521831724 @ 12, 53, 71 +313115649345480, 369505317251952, 415562539164324 @ -77, 5, -841 +173964880826015, 180506413525436, 322898819677777 @ 200, 229, -112 +271834313405423, 329952581236160, 252398548099066 @ 24, -23, -7 +323643077564473, 197103375494182, 325348210210274 @ -122, 743, -487 +240062178309289, 133124320543859, 72832689462042 @ 118, 520, 433 +431611228196746, 213194324867524, 368828456134286 @ -193, -27, -23 +279210814583228, 283390845619802, 137609248434655 @ 61, 351, 304 +280896498932472, 219974884243872, 243275643676276 @ -29, -10, 102 +193856657360398, 214679939204937, 212190799310200 @ 199, 234, 87 +307499988135020, 342417105895400, 215217458441668 @ -56, 27, 35 +281864876728586, 220899255140090, 436247130167008 @ -30, -10, -127 +333004806275108, 222430020172325, 310224495308326 @ -147, 502, -331 +306820085730860, 402177574674984, 174325664925320 @ -24, 171, 62 +272222194737544, 261357086465954, 141315450042710 @ 169, 808, 338 +308757473249960, 345978565400732, 152614566504952 @ -51, 838, 342 +380545855850618, 402147912212456, 281360256844096 @ -212, -195, -51 +296375698707214, 470827283781022, 389475108295270 @ -5, -421, -783 +256307577601153, 241096640079778, 139412666854599 @ 16, 23, 232 +284592138916236, 308249989239675, 247814845009158 @ -19, -42, 49 +316554025113023, 407141966736692, 134745384647530 @ -92, -147, 321 +282366680602894, 407521214188681, 186367921917670 @ 139, -64, 33 +351966627233510, 214016963757974, 266313726892450 @ -182, 358, -92 +176726051468751, 298900204169286, 396099821834398 @ 92, -105, -75 +265407544235886, 307662821902028, 194086100076295 @ 67, 109, 108 +501734873194135, 530111640108523, 380535317713836 @ -326, -394, -101 +173245473751373, 116407379521552, 191189624857118 @ 294, 569, 125 +297761534203103, 423376498786192, 202044202024097 @ 6, -199, -22 +296449172773716, 375539051686196, 179295051231540 @ 37, 181, 83 +128171886073276, 336100465900080, 52316934040488 @ 188, -127, 350 +339380752383208, 137882303511600, 471071281000868 @ -122, 327, -415 +554370585618983, 478187507260244, 425051776704658 @ -354, -315, -115 +477220916840824, 308846009474264, 472853089413746 @ -271, -107, -188 +316170470223760, 260360451741032, 403024406833116 @ -71, -47, -101 +193442027725088, 266279610721967, 240565199467998 @ 105, -20, 85 +418103952377216, 278219521445585, 420030394804573 @ -183, -90, -88 +314383133686160, 174221364382980, 301934152489336 @ -69, 72, 18 +292798126665176, 356832141543584, 213085550421028 @ 17, 104, -35 +229260592183736, 511507706934320, 408381549030388 @ 31, -353, -90 +333830914432166, 296391670030970, 196574802050988 @ -129, 115, 107 +314915871098775, 509410943995357, 346958404358890 @ -70, -364, -51 +321540954135941, 295478856350450, 234397974641128 @ -88, 31, 47 +170623481496605, 147944019815768, 425967986144950 @ 104, 81, -119 +296604743633363, 375389431301626, 203247958507992 @ 60, 291, -169 +296332046096936, 397573575370384, 187638713652580 @ 27, -15, 39 +261623461340920, 123095735599088, 39120282935380 @ 13, 229, 393 +191491030298598, 35248905928680, 390143122624786 @ 91, 257, -99 +315647953007744, 511014303102090, 274554232423350 @ -75, -418, -28 +287336583274965, 381419950675969, 261023963434093 @ 10, -90, -120 +246249716710826, 435590325496961, 339164881693984 @ 107, -266, -273 +198904491741506, 407970397713185, 454321602339883 @ 75, -230, -166 +181563940097084, 224556228926390, 227035458784718 @ 111, 22, 110 +241399457240152, 209219475714034, 327763012731166 @ 65, 159, -111 +279672841171919, 374792256774284, 169472738267884 @ 80, 21, 171 +262010216152624, 190799535161718, 290524852602624 @ -7, 23, 47 +297913006219224, 179101601017968, 377728757640756 @ -47, 83, -94 +296411409863648, 423219643019878, 250472728771774 @ 21, -192, -348 +253554436862471, 307766744600765, 285908126118283 @ 66, 28, -84 +320954306883422, 311449285311740, 247334946791518 @ -84, -33, 40 +311090870561631, 438029394478639, 284346092446582 @ -68, -276, -243 +317322809120710, 269234377196520, 109240755646262 @ -86, 237, 362 +250290415097078, 269382602283470, 289162401581848 @ 18, -38, 25 +249536125348441, 340958351719020, 240532279142563 @ 58, -75, 42 +317713394151095, 375965036514033, 257268288915207 @ -144, 330, -746 +265938733797896, 415583345183280, 404808026446788 @ -12, -241, -85 +234460673791530, 129771621651566, 445745987763558 @ 40, 154, -190 +308178107252168, 409768582707152, 198737368923588 @ -54, -119, -5 +135115319635616, 60812016650492, 277050812560867 @ 137, 165, 66 +289379193714166, 366860444932095, 302640677097163 @ -29, -150, -36 +285213989112104, 158755554306260, 349260476816766 @ -39, 7, 14 +301205681276216, 299983991831420, 80153854382938 @ -15, 495, 670 +234810352513064, 293534829900512, 289282208697108 @ 114, 70, -100 +240952833920571, 197695514419360, 311543229658383 @ 16, 9, 26 +305227494507256, 405935597165360, 185856632562788 @ -20, 10, -10 +319775262915076, 339969179926476, 209166727366395 @ -83, -75, 106 +270338432082852, 91601866170304, 76395761166092 @ 5, 329, 347 +263386024158920, 222988263385328, 315912396766348 @ 15, 93, -60 +178304260725436, 118910362298380, 119574386634208 @ 104, 138, 252 +206283598704930, 142807962377448, 334848469062451 @ 59, 81, -6 +292364105463680, 309767745625964, 225791068005160 @ 51, 556, -208 +200705901256040, 147798368839072, 311803090438700 @ 45, 21, 49 +345206783211584, 323580154629995, 219672947423395 @ -151, 12, 58 +281963055614396, 411693690132560, 202153168837528 @ -24, -231, 142 +277341769320985, 145137555303643, 68333479675496 @ -32, 14, 287 +529271225298244, 453842221080146, 496520855131348 @ -301, -284, -165 +264298788323609, 293541925137647, 98430049258118 @ 54, 100, 365 +327615972425816, 490050114085520, 277487153309188 @ -129, -468, -222 +186107941994676, 283280774262818, 237171624735205 @ 197, 55, 42 +278978429739436, 330175719278560, 273783099262008 @ 95, 273, -367 +435531197475376, 400670730457280, 279911142989008 @ -197, -227, 72 +190004342145176, 370006894380560, 198196037116548 @ 93, -179, 151 +335854428953144, 381479387316216, 236293819059340 @ -99, -190, 96 +207554532548248, 6539444781936, 217188119108260 @ 59, 248, 132 +262013991259446, 508200724269910, 329238876156648 @ -8, -348, 5 +218799766626421, 166720043764543, 306769790899965 @ 82, 164, -32 +296973080259372, 440844666968742, 190185712280585 @ 85, -337, -104 +309064385465064, 414085415702208, 521492515997524 @ -62, -232, -348 +317963694114626, 399481733312270, 190165510484623 @ -169, 187, -136 +218469482057714, 272394930395906, 342167564954521 @ 71, -25, -66 +302264904286593, 373125391193044, 144309548929775 @ -10, 173, 338 +263238300283226, 224777273135614, 330737734366010 @ -18, -60, 34 +129961827135919, 288132832471634, 259277840833003 @ 136, -101, 90 +308761217331781, 260575799465185, 381557378361098 @ -62, -82, -31 +203759198472328, 91983444207282, 367840187848473 @ 49, 99, -20 +303893908668145, 417758465361114, 172504540426443 @ 20, -25, 80 +296754539531210, 399288127219007, 194084532115705 @ 59, 68, -84 +307351257536384, 449879793266828, 182308577450321 @ -39, -419, 14 +272378337974448, 378262301111296, 224487313426852 @ 34, -117, 39 +459927820855406, 424983541138388, 349419905478262 @ -253, -251, -39 +287004981528824, 190972613820887, 326288001300256 @ -31, 80, -33 +252784542442791, 363657304377220, 285481350084863 @ 56, -115, -58 +326038639710308, 450786906770012, 251946265998736 @ -85, -285, 77 +283474704671274, 371940001093817, 209976237330305 @ -29, -182, 136 +382702858409528, 444422167774208, 331124536044712 @ -151, -275, -6 +179948040734783, 228108420999779, 255909505402867 @ 120, 28, 66 +237524321878289, 148841614852238, 151254778022413 @ 74, 279, 220 +348569462333665, 421453262961424, 301514432941074 @ -254, -199, -479 +199251321681646, 136199503556261, 427009739111869 @ 67, 88, -114 +278418218302606, 562530988680470, 261755708321350 @ -8, -488, 24 +176842477452459, 141978111598604, 309103048997340 @ 106, 109, 11 +348755026135408, 162561919101752, 498526112311628 @ -122, 148, -310 +269297612527496, 180975881314805, 540881265587293 @ -15, 38, -252 +345652585950535, 288311748747680, 314241969805474 @ -122, -23, -51 +262704746817928, 353869290157712, 221941656379551 @ 49, -71, 58 +287257704962006, 531815332362030, 441488675296178 @ -33, -393, -175 +256520617424591, 448150572325835, 227764461177313 @ 42, -290, 70 +202893363204066, 79371971250023, 207588282625175 @ 187, 568, 94 +319663232965736, 353490274595755, 260321391408833 @ -111, 128, -268 +256460780680036, 320339128487420, 351604531210072 @ 7, -113, -51 +340343237259132, 242391306258356, 514486403335505 @ -107, 13, -308 +277789641544148, 366170545888619, 206414614920270 @ 45, -32, 53 +206557091057336, 284412235858640, 265249742364748 @ 113, -7, 23 +200058942595208, 149651001258802, 382994015638247 @ 81, 111, -92 +299882162146280, 171870621175403, 263442495672019 @ -47, 164, 34 +287130633382189, 255583803866596, 219755227411948 @ -14, 125, 75 +395972296970792, 439860873144581, 306982169737690 @ -207, -272, -43 +304831995146888, 440039353753188, 207895883988548 @ 9, -345, -445 +295944517253747, 240135771142652, 315256271434996 @ -44, 5, -13 +329008076058398, 485899869839072, 172695007808866 @ -84, -319, 186 +272373236462388, 363704224544288, 235686962623623 @ 13, -119, 50 +319279022263128, 266624321542728, 284490123865420 @ -79, 18, -6 +161641561276466, 41563569070578, 268085808633733 @ 87, 135, 90 +365971083609728, 339047606719955, 303043441198114 @ -119, -168, 57 +294443683486196, 159461249372360, 122838665595778 @ -45, 61, 244 +302275049368607, 441796049764563, 153834331419663 @ 60, -384, 370 +288372450517132, 406187629437418, 197004038862644 @ 131, -6, -101 +57723906085246, 55110994531743, 126970359328833 @ 307, 294, 250 +203070234228688, 142540320706520, 111492906485796 @ 74, 112, 263 +362723230963720, 364960363560400, 299104890089108 @ -124, -183, 40 +203004225714562, 47287703427334, 469589331754592 @ 58, 176, -151 +218851618553087, 251952874554825, 398983744250762 @ 54, -28, -107 +21689832173314, 7196048475593, 14843783552640 @ 299, 274, 383 +301904706242596, 392333322546700, 140787103433108 @ 19, 179, 443 +315321553133120, 255283247651792, 384680191729812 @ -69, -71, -41 +303106212036766, 483956022043614, 167605088543932 @ -38, -450, 183 +284757900665506, 411544050121970, 211810295233858 @ -14, -218, 102 +90637077940343, 91161958250552, 154642232371349 @ 228, 193, 208 +298012025700996, 338448765621996, 291482316933485 @ -43, -99, -22 +342974195933200, 233206693961880, 426072122569920 @ -101, -33, -104 +423050052685844, 327267977271980, 463574855179352 @ -174, -158, -98 +222566881838600, 322764422648384, 289229054612948 @ 150, 10, -110 +236609167796616, 324435474780574, 290549096104558 @ 137, 38, -150 +308729807021465, 166588915910750, 319205398187944 @ -62, 7, 39 +263650255197564, 171982750892979, 338410835900087 @ 13, 170, -92 +352915265477066, 139891883907995, 401992709491063 @ -113, 78, -80 +241611446917781, 234910761928220, 301084380649513 @ 94, 197, -120 +273829665179716, 361865242082552, 198681033733752 @ 112, 91, 28 +327570986719837, 357677902936825, 288957622723288 @ -106, -78, -105 +302852208546603, 420068579406206, 212517789863679 @ 20, -89, -386 +315212196479630, 414136017997320, 201641132140594 @ -90, -163, 12 +274402229551268, 203910875376665, 371442394235011 @ -27, -28, -16 +262779995707576, 353012112533280, 292139285374988 @ 73, -27, -175 +219929362937879, 223780407774609, 288261150329807 @ 90, 96, -16 +169211911265255, 78828973725456, 8836481164160 @ 114, 185, 391 +236511643043306, 233997116096030, 306060703484698 @ 44, 30, -12 +254413781762700, 383936855578932, 112304555750424 @ 76, -136, 326 +244578011242068, 345070552690802, 240315299634937 @ 125, -5, -24 +307577747041581, 411802832680750, 184585131560997 @ -28, 107, -134 +295915680499993, 353395053699836, 219948398240689 @ -16, 13, 6 +199501005263612, 52016793693776, 379559585792044 @ 103, 313, -129 +226173273919487, 293120563169781, 227485141664908 @ 96, 6, 75 +278967133656536, 344098352677328, 160013451876676 @ 132, 310, 223 +247485317039478, 361598208398985, 232574714551191 @ 95, -78, 22 +320985069928504, 330688714410752, 230801427150028 @ -91, -5, 30 diff --git a/src/main.rs b/src/main.rs index 215ee46..c8a48f6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -23,63 +23,60 @@ )] extern crate test; pub mod util; +use std::{io::BufRead, mem::MaybeUninit}; + pub use util::prelude::*; -pub fn iterg<I: Iterator<Item = (u8, u8, u16)>>( - start: (u8, u8, u16, Box<[u64; 312]>), - graph: &mut impl Fn((u8, u8, u16)) -> I, - end: &mut impl Fn((u8, u8)) -> bool, - finally: &mut impl FnMut(u16), -) { - if end((start.0, start.1)) { - finally(start.2); - } else { - graph((start.0, start.1, start.2)) - .map(|(a, b, n)| { - let shift = (a.nat() * 141 + b.nat()) % 64; - let index = (a.nat() * 141 + b.nat()) / 64; - if start.3[index] & (1 << shift) == 0 { - let mut m = start.3.clone(); - m[index] |= 1 << shift; - iterg((a, b, n, m), graph, end, finally) - } - }) - .Θ(); - }; +pub fn intersect( + p0x: f64, + p0y: f64, + v0x: f64, + v0y: f64, + p1x: f64, + p1y: f64, + v1x: f64, + v1y: f64, +) -> Option<(f64, f64)> { + let x = ((p1y - p0y) + p0x * (v0y / v0x) - p1x * (v1y / v1x)) / ((v0y / v0x) - (v1y / v1x)); + let t0 = (x - p0x) / v0x; + let t1 = (x - p1x) / v1x; + (t0 > 0. && t1 > 0.).then_some((x, p0y + t0 * v0y)) } pub fn run(i: &str) -> impl Display { - let x = i.行().collect_vec(); - let i = x.as_slice(); - let end = (x.len() as u8 - 2, x.len() as u8 - 1); + let mut v: [MaybeUninit::<_>; 300] = + // SAFETY: mu likes this + unsafe { MaybeUninit::uninit().assume_init() }; + let mut x = i.as_bytes(); + for i in 0..300 { + let α = 読む::迄::<i64>(&mut x, b',') as f64; + x.skip(1); + let β = 読む::迄::<i64>(&mut x, b',') as f64; + x.skip(2); + while x.by().ψ() != b' ' {} + x.skip(2); + let δ = 読む::負迄(&mut x, b',') as f64; + x.skip(1); + let ε = 読む::負迄(&mut x, b',') as f64; + x.skip(1); + if let Some(n) = memchr::memchr(b'\n', x) { + x.skip(n + 1); + } + v[i].write(([α, β], [δ, ε])); + } + let v = v.map(|elem| unsafe { elem.assume_init() }); let mut sum = 0; - iterg( - (1u8, 0u8, 0u16, Box::new([0; 312])), - &mut |(x, y, n)| { - let v = match i[y.nat()][x.nat()] { - b'>' => vec![(x + 1, y, n + 1)], - b'<' => vec![(x - 1, y, n + 1)], - b'^' => vec![(x, y - 1, n + 1)], - b'v' => vec![(x, y + 1, n + 1)], - _ => [ - Dir::N + (x, y), - Dir::E + (x, y), - Dir::S + (x, y), - Dir::W + (x, y), - ] - .into_iter() - .flatten() - .fl(lt(141)) - .fr(lt(141)) - .filter(|(x, y)| i[y.nat()][x.nat()] != b'#') - .map(|(x, y)| (x, y, n + 1)) - .collect_vec(), - }; - v.into_iter() - }, - &mut |(x, y)| (x, y) == end, - &mut |x| sum = sum.max(x), - ); + for (i, &([x0, y0], [v0x, v0y])) in v.iter().enumerate() { + for &([x1, y1], [v1x, v1y]) in &v[i..] { + if let Some((x, y)) = intersect(x0, y0, v0x, v0y, x1, y1, v1x, v1y) { + let min = 200000000000000.; + let max = 400000000000000.; + if x > min && x < max && y > min && y < max { + sum += 1; + } + } + } + } sum } diff --git a/src/util.rs b/src/util.rs index ba6d1b8..2ef0fd9 100644 --- a/src/util.rs +++ b/src/util.rs @@ -979,6 +979,20 @@ pub mod 読む { n } + pub fn 負迄(x: &mut &[u8], until: u8) -> i64 { + let (sign, mut n) = match x.by().ψ() { + b'-' => (-1, 0), + b => (1, i64::from(b - b'0')), + }; + loop { + let byte = x.by().ψ(); + if byte == until { + return n * sign as i64; + } + n = n * 10 + i64::from(byte - b'0'); + } + } + pub fn 迄< T: Default + std::ops::Mul<T, Output = T> @@ -1001,14 +1015,18 @@ pub mod 読む { } pub fn 完了< - T: Default + std::ops::Mul<T, Output = T> + std::ops::Add<T, Output = T> + From<u8> + Copy, + T: Default + + std::ops::Mul<T, Output = T> + + std::ops::Add<T, Output = T> + + From<u8> + + Copy + + Ten, >( x: &[u8], - ten: T, ) -> T { let mut n = T::default(); for &byte in x { - n = n * ten + T::from(byte - b'0'); + n = n * T::ten() + T::from(byte - b'0'); } n } @@ -1319,14 +1337,22 @@ pub trait Skip { impl<T> Skip for &[T] { #[track_caller] fn skip(&mut self, n: usize) { - *self = &self[n..]; + if cfg!(debug_assertions) { + *self = &self[n..]; + } else { + *self = C! { &self[n..] }; + } } } impl Skip for &str { #[track_caller] fn skip(&mut self, n: usize) { - *self = &self[n..]; + if cfg!(debug_assertions) { + *self = &self[n..]; + } else { + *self = C! { &self[n..] }; + } } } |