summary refs log tree commit diff homepage
diff options
context:
space:
mode:
authorJune McEnroe <programble@gmail.com>2017-12-15 14:58:34 -0500
committerJune McEnroe <programble@gmail.com>2017-12-15 14:58:34 -0500
commit581e6ab565f53e4b4b715a76d5c2fb8399fc73b5 (patch)
tree52b4358cb3bcc40fd48493a5db06ad013c1e4367
parentDay 10, part 2 (diff)
downloadaoc-581e6ab565f53e4b4b715a76d5c2fb8399fc73b5.tar.gz
aoc-581e6ab565f53e4b4b715a76d5c2fb8399fc73b5.zip
Day 11
https://www.redblobgames.com/grids/hexagons/#coordinates-cube
-rw-r--r--2017/input/day11.txt1
-rw-r--r--2017/src/bin/day11.rs42
2 files changed, 43 insertions, 0 deletions
diff --git a/2017/input/day11.txt b/2017/input/day11.txt
new file mode 100644
index 0000000..ce4568b
--- /dev/null
+++ b/2017/input/day11.txt
@@ -0,0 +1 @@
+se,nw,ne,s,sw,sw,sw,sw,nw,sw,nw,nw,ne,nw,nw,n,se,ne,n,n,n,n,n,n,n,n,ne,n,se,ne,n,s,n,ne,ne,ne,ne,n,se,ne,se,se,ne,se,ne,s,sw,ne,se,ne,nw,se,se,se,se,se,se,se,se,se,ne,s,se,se,n,n,se,se,s,se,se,ne,se,s,se,n,nw,sw,s,ne,se,s,s,ne,s,s,sw,s,se,s,se,s,s,ne,s,s,s,nw,s,s,nw,s,ne,s,s,s,sw,s,s,nw,se,s,s,s,sw,sw,s,s,sw,sw,s,sw,s,sw,sw,sw,sw,s,s,s,s,nw,s,sw,ne,s,sw,sw,nw,sw,sw,n,nw,sw,sw,sw,sw,se,sw,sw,se,nw,n,se,sw,sw,sw,s,nw,se,sw,n,se,sw,sw,sw,sw,se,sw,sw,nw,n,sw,sw,sw,nw,sw,n,nw,nw,n,nw,nw,se,nw,sw,sw,sw,s,nw,nw,sw,nw,n,nw,se,sw,nw,nw,se,nw,nw,nw,sw,nw,se,nw,se,nw,nw,nw,s,nw,nw,nw,nw,sw,nw,nw,nw,sw,nw,n,ne,se,s,nw,nw,n,nw,nw,nw,nw,n,nw,nw,nw,nw,nw,nw,n,sw,nw,ne,se,se,nw,n,nw,n,nw,n,n,n,ne,ne,s,nw,nw,n,n,nw,nw,se,se,n,n,n,nw,nw,se,n,nw,n,n,n,nw,nw,nw,s,nw,n,nw,n,n,nw,n,nw,n,n,n,n,n,n,n,n,n,s,nw,s,ne,sw,n,n,nw,n,s,n,se,nw,s,n,n,n,n,n,n,n,n,sw,s,n,n,s,n,n,sw,n,s,n,n,n,n,sw,n,n,n,n,ne,n,n,ne,n,n,ne,ne,n,s,ne,n,n,n,n,n,s,s,ne,n,n,ne,n,sw,n,ne,n,n,ne,n,n,n,s,ne,ne,se,n,ne,n,ne,se,ne,ne,n,ne,ne,ne,se,ne,n,se,n,ne,n,ne,sw,n,ne,nw,ne,ne,n,se,ne,ne,ne,n,n,n,ne,ne,ne,n,n,ne,ne,ne,n,sw,ne,n,s,ne,nw,ne,n,ne,n,n,ne,n,n,se,ne,ne,ne,n,ne,ne,n,ne,ne,ne,ne,nw,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,s,ne,ne,ne,ne,ne,ne,ne,n,ne,ne,nw,ne,ne,ne,ne,ne,ne,ne,s,n,n,ne,ne,se,ne,se,ne,ne,ne,ne,ne,s,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,n,ne,n,ne,ne,nw,ne,ne,ne,ne,ne,ne,ne,ne,se,se,s,se,ne,ne,ne,ne,se,ne,se,ne,se,ne,ne,ne,se,se,ne,nw,sw,sw,se,ne,ne,s,se,se,se,nw,se,n,se,se,se,se,ne,ne,ne,ne,n,ne,ne,ne,ne,nw,se,se,se,ne,se,ne,se,ne,se,ne,se,ne,se,n,s,ne,ne,ne,s,se,ne,se,se,se,nw,ne,nw,se,n,se,se,se,se,ne,ne,se,se,se,se,se,ne,se,ne,se,se,ne,se,nw,n,se,se,se,se,se,se,se,se,n,se,nw,se,se,se,se,se,se,sw,ne,n,se,se,nw,s,s,se,nw,se,se,sw,se,se,se,ne,s,ne,se,ne,se,se,sw,se,se,nw,se,se,se,n,se,nw,n,se,sw,se,se,se,se,ne,se,se,n,se,se,se,se,se,n,se,se,se,se,s,se,se,se,sw,se,ne,se,se,se,sw,se,sw,se,se,s,se,se,s,se,se,ne,se,n,s,se,s,se,s,se,se,se,se,se,s,se,se,s,se,se,se,sw,se,se,n,se,s,ne,se,se,nw,se,se,se,n,se,se,se,se,s,se,n,se,se,se,se,se,se,nw,se,se,se,sw,se,se,se,s,se,s,ne,se,se,se,n,n,se,n,ne,s,se,nw,se,ne,se,sw,s,se,se,s,se,s,sw,se,n,se,se,se,sw,s,se,se,se,se,se,se,s,s,s,sw,ne,se,s,se,se,se,n,s,nw,s,se,n,se,s,se,s,se,s,ne,se,se,s,se,s,n,se,ne,se,se,se,s,s,se,s,se,s,nw,se,n,s,se,s,se,ne,ne,se,s,s,s,s,se,s,s,s,s,s,ne,se,se,nw,se,n,s,se,s,s,n,se,se,nw,se,s,sw,s,s,se,se,s,ne,s,s,s,s,s,s,s,ne,nw,s,s,s,s,s,s,s,s,se,s,s,n,ne,se,nw,ne,s,nw,ne,nw,se,s,s,s,se,sw,s,s,se,se,s,s,se,s,s,s,se,s,s,s,s,sw,s,s,se,s,se,sw,s,s,s,s,s,s,s,s,s,s,s,s,s,s,nw,se,s,s,nw,s,s,s,s,s,s,s,s,s,se,s,s,s,s,sw,s,s,s,s,s,s,n,s,nw,s,s,s,s,s,ne,se,n,s,s,n,s,s,n,sw,s,s,nw,s,sw,sw,s,sw,s,sw,sw,nw,s,nw,s,nw,s,s,ne,s,s,sw,s,sw,s,nw,s,s,s,sw,s,s,s,sw,sw,s,s,sw,s,s,s,s,s,s,nw,s,s,s,s,sw,sw,nw,s,s,s,s,sw,s,s,n,sw,s,ne,s,sw,n,s,se,s,s,s,sw,se,s,s,sw,s,se,s,s,ne,s,s,se,sw,s,s,ne,n,sw,s,se,s,s,nw,sw,sw,sw,s,s,s,ne,se,sw,s,s,s,ne,nw,s,s,s,s,s,sw,sw,s,s,ne,s,se,s,s,s,sw,n,s,sw,sw,sw,sw,nw,s,s,s,sw,nw,s,se,sw,s,n,s,sw,nw,s,s,sw,s,sw,sw,sw,s,sw,s,s,s,n,s,s,sw,sw,sw,se,s,sw,n,nw,s,sw,sw,se,s,s,s,sw,sw,sw,s,sw,n,sw,s,s,se,s,s,s,n,ne,sw,s,nw,sw,sw,sw,sw,sw,sw,sw,s,s,s,se,sw,sw,s,ne,sw,ne,sw,sw,s,s,sw,sw,sw,sw,s,se,sw,se,ne,ne,se,sw,s,sw,sw,nw,s,s,se,sw,s,s,sw,s,nw,s,sw,s,sw,sw,nw,s,sw,sw,sw,sw,nw,sw,sw,n,n,ne,s,s,nw,sw,sw,sw,s,n,s,ne,s,sw,n,n,n,se,sw,sw,n,se,s,sw,sw,s,s,sw,sw,sw,sw,se,sw,sw,s,sw,s,sw,s,se,s,nw,ne,sw,sw,sw,sw,sw,sw,nw,sw,sw,n,sw,sw,nw,s,sw,se,ne,se,nw,sw,sw,sw,ne,sw,s,sw,sw,sw,sw,ne,sw,sw,n,s,sw,sw,sw,sw,nw,sw,sw,sw,n,n,sw,sw,sw,s,ne,sw,sw,sw,sw,sw,s,s,sw,sw,sw,n,sw,sw,sw,sw,sw,sw,sw,sw,n,nw,sw,sw,sw,sw,sw,sw,sw,sw,sw,s,sw,se,sw,sw,sw,sw,sw,se,sw,sw,sw,sw,sw,sw,sw,sw,sw,ne,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,se,sw,sw,sw,sw,se,sw,sw,sw,n,sw,sw,sw,sw,nw,sw,nw,sw,sw,sw,sw,ne,sw,sw,sw,sw,sw,sw,ne,sw,sw,sw,nw,n,sw,n,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,n,sw,n,sw,sw,sw,sw,nw,ne,se,sw,nw,sw,sw,sw,sw,sw,sw,nw,se,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,se,n,nw,sw,sw,s,sw,sw,sw,sw,sw,sw,sw,sw,s,sw,sw,sw,sw,nw,sw,sw,sw,sw,sw,sw,sw,n,nw,sw,sw,se,sw,sw,sw,sw,sw,nw,sw,sw,sw,nw,ne,ne,nw,sw,nw,se,s,sw,sw,nw,sw,n,n,s,sw,sw,sw,sw,ne,sw,nw,sw,nw,sw,sw,sw,sw,nw,sw,nw,sw,nw,sw,sw,nw,s,sw,nw,nw,nw,ne,sw,nw,sw,nw,sw,sw,nw,sw,sw,s,nw,sw,sw,sw,s,sw,sw,sw,sw,nw,sw,sw,sw,nw,nw,nw,nw,nw,s,sw,sw,s,nw,sw,sw,sw,sw,sw,nw,sw,sw,nw,n,nw,sw,sw,nw,sw,sw,sw,nw,nw,nw,sw,sw,ne,ne,sw,sw,sw,nw,se,nw,sw,sw,nw,sw,nw,ne,s,nw,se,sw,s,sw,sw,sw,sw,sw,se,sw,n,ne,sw,sw,ne,sw,n,n,nw,nw,nw,sw,nw,sw,nw,sw,nw,s,se,sw,nw,sw,nw,sw,nw,se,nw,se,n,sw,ne,nw,sw,nw,se,sw,nw,nw,nw,sw,nw,ne,sw,nw,nw,nw,s,nw,ne,nw,se,sw,sw,sw,sw,nw,nw,nw,sw,nw,sw,nw,nw,nw,sw,nw,nw,nw,nw,nw,ne,sw,nw,sw,sw,s,nw,sw,nw,s,sw,n,nw,nw,n,sw,n,s,sw,nw,nw,sw,nw,sw,s,nw,ne,nw,sw,nw,nw,sw,sw,sw,nw,n,nw,nw,sw,nw,nw,nw,se,sw,nw,nw,nw,nw,se,sw,nw,nw,nw,se,se,nw,se,nw,s,nw,nw,nw,nw,nw,nw,sw,sw,nw,nw,nw,sw,s,nw,nw,nw,sw,sw,nw,nw,nw,nw,s,sw,nw,sw,se,nw,nw,nw,nw,sw,nw,nw,nw,nw,nw,nw,sw,n,nw,nw,nw,sw,nw,nw,sw,nw,se,nw,ne,sw,nw,nw,se,nw,nw,nw,nw,nw,sw,nw,s,nw,sw,nw,nw,nw,nw,nw,nw,sw,nw,nw,nw,sw,nw,nw,nw,nw,n,nw,nw,nw,nw,sw,nw,nw,nw,nw,nw,nw,nw,nw,sw,nw,nw,nw,nw,sw,n,ne,nw,nw,nw,nw,nw,sw,sw,nw,se,sw,se,sw,nw,n,nw,nw,nw,nw,sw,nw,nw,nw,se,ne,nw,nw,n,se,nw,nw,nw,n,nw,nw,nw,nw,nw,s,nw,nw,nw,se,nw,nw,n,nw,nw,nw,nw,nw,nw,nw,s,nw,se,nw,nw,sw,ne,ne,nw,nw,nw,nw,s,ne,nw,sw,nw,nw,nw,n,nw,nw,sw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,sw,nw,nw,nw,nw,nw,nw,n,nw,nw,nw,se,nw,nw,nw,se,nw,nw,nw,n,nw,nw,nw,nw,sw,nw,nw,nw,nw,nw,nw,nw,n,ne,nw,s,nw,nw,nw,nw,sw,nw,nw,nw,nw,n,nw,nw,nw,s,nw,nw,nw,nw,nw,sw,nw,nw,nw,ne,nw,nw,nw,nw,se,n,ne,nw,s,nw,nw,n,n,nw,nw,ne,ne,nw,nw,nw,nw,nw,ne,s,nw,nw,nw,sw,nw,s,nw,nw,nw,sw,nw,nw,nw,n,se,s,se,sw,nw,nw,s,sw,sw,n,nw,se,s,n,n,ne,se,sw,nw,nw,nw,nw,nw,nw,n,nw,nw,n,ne,s,se,nw,nw,nw,se,nw,nw,nw,nw,n,sw,nw,nw,n,nw,nw,nw,s,s,n,nw,nw,n,s,n,se,n,nw,n,nw,nw,nw,n,n,se,nw,sw,nw,nw,s,nw,nw,nw,nw,nw,nw,nw,nw,nw,n,ne,nw,nw,nw,nw,n,nw,n,nw,nw,n,n,ne,n,nw,nw,s,nw,n,nw,sw,nw,nw,nw,nw,nw,ne,ne,se,nw,ne,nw,nw,nw,n,nw,nw,sw,nw,n,nw,nw,nw,ne,s,nw,nw,n,ne,n,n,nw,nw,sw,n,nw,nw,nw,nw,nw,n,nw,nw,se,nw,se,n,n,nw,n,nw,se,nw,nw,n,n,nw,nw,nw,nw,nw,sw,n,nw,nw,nw,nw,n,nw,ne,nw,ne,s,nw,nw,n,s,ne,nw,nw,sw,n,n,sw,nw,nw,se,n,nw,n,nw,n,n,n,nw,nw,sw,nw,se,nw,sw,n,nw,nw,nw,n,n,nw,nw,nw,sw,nw,n,n,n,ne,nw,n,n,nw,nw,n,n,s,nw,nw,n,s,nw,n,nw,nw,n,nw,nw,n,nw,nw,n,n,n,n,nw,n,n,nw,n,n,nw,nw,nw,nw,nw,nw,n,n,se,n,n,nw,nw,nw,nw,s,n,nw,nw,nw,n,n,nw,n,n,n,nw,n,n,n,n,nw,se,nw,nw,sw,nw,nw,n,n,nw,n,n,nw,nw,se,nw,nw,nw,nw,ne,n,ne,nw,nw,nw,n,nw,nw,nw,n,nw,n,nw,n,nw,n,nw,nw,nw,nw,s,nw,nw,n,n,s,n,nw,nw,nw,n,n,nw,n,n,n,nw,n,n,n,n,nw,nw,n,nw,ne,n,nw,n,s,nw,nw,nw,nw,s,nw,nw,n,n,sw,ne,nw,nw,n,nw,nw,n,ne,nw,nw,sw,nw,se,s,nw,n,n,nw,nw,s,nw,n,n,n,n,nw,n,n,ne,n,n,n,nw,se,n,n,se,se,se,nw,nw,n,n,n,nw,ne,ne,s,n,n,n,n,nw,se,n,n,nw,s,n,n,ne,n,n,se,nw,se,nw,n,n,n,n,n,n,nw,nw,n,nw,n,nw,n,n,ne,n,n,nw,nw,n,nw,nw,s,n,nw,n,n,n,s,n,n,s,ne,nw,n,n,n,n,n,sw,nw,sw,n,nw,n,nw,nw,n,nw,n,n,n,n,nw,ne,n,n,s,nw,se,n,nw,nw,se,sw,se,nw,n,sw,n,nw,n,se,sw,n,sw,nw,se,nw,n,n,se,n,nw,n,n,n,ne,n,s,nw,nw,n,n,nw,n,n,s,nw,nw,nw,n,nw,n,n,n,n,sw,n,n,n,n,s,n,n,s,se,n,n,sw,n,n,n,n,n,n,nw,n,nw,n,n,n,n,nw,n,n,n,n,n,ne,n,n,n,n,n,n,ne,sw,n,n,n,n,nw,n,sw,nw,ne,sw,n,n,ne,ne,n,n,n,nw,nw,n,n,n,nw,s,n,s,ne,n,n,sw,n,n,se,n,n,sw,n,n,nw,n,n,n,n,n,n,n,n,nw,nw,n,n,sw,n,n,nw,nw,n,n,n,n,n,n,nw,ne,nw,n,se,n,nw,n,n,ne,n,n,n,nw,n,n,n,n,n,n,n,n,se,n,n,n,n,n,ne,ne,nw,n,n,se,nw,n,se,n,s,n,s,n,n,n,se,n,se,se,n,n,n,n,ne,sw,n,n,ne,n,se,n,n,n,n,n,n,n,n,n,s,n,ne,n,n,n,n,n,n,n,n,n,n,se,se,n,se,n,n,n,s,n,n,n,n,sw,n,n,n,sw,n,n,n,n,n,n,n,n,n,s,nw,n,n,n,n,n,n,nw,n,sw,n,sw,n,sw,n,se,n,n,nw,n,n,nw,nw,n,n,n,n,n,n,n,ne,n,n,n,n,n,se,n,ne,n,n,n,n,n,se,n,n,ne,n,se,n,n,n,n,sw,n,n,n,n,n,n,se,n,n,n,n,ne,s,s,n,n,se,n,n,nw,n,n,n,n,n,n,n,n,n,n,n,n,s,n,n,n,n,sw,se,s,se,n,n,n,s,n,n,n,se,n,n,se,n,ne,nw,n,n,n,n,n,n,ne,ne,n,n,s,n,ne,n,n,n,nw,nw,n,n,ne,n,n,n,n,n,n,n,n,n,se,n,n,n,ne,n,n,ne,ne,n,n,ne,n,se,n,n,nw,n,ne,n,s,se,sw,n,n,n,s,n,s,n,n,ne,n,n,n,n,ne,n,n,sw,n,n,ne,ne,n,n,ne,n,n,n,ne,n,nw,n,ne,n,nw,se,s,n,n,n,n,ne,nw,ne,n,n,n,ne,n,ne,n,n,n,n,n,n,ne,ne,ne,s,n,n,n,ne,n,ne,n,n,n,ne,n,n,ne,n,n,n,n,ne,n,ne,n,ne,n,n,n,ne,n,sw,n,s,n,n,n,n,nw,ne,n,n,se,n,ne,nw,n,n,n,n,ne,ne,n,n,sw,n,n,n,ne,n,n,n,n,n,ne,ne,sw,n,ne,n,se,ne,sw,n,n,n,n,n,n,ne,se,nw,ne,se,n,ne,ne,ne,ne,n,n,n,n,se,nw,sw,n,n,se,ne,n,ne,sw,n,nw,ne,ne,sw,ne,ne,n,n,n,s,s,ne,ne,n,nw,n,ne,n,n,ne,ne,n,n,n,n,n,ne,se,ne,se,sw,nw,ne,ne,n,nw,n,n,n,n,ne,se,n,n,nw,ne,nw,ne,n,n,se,se,n,nw,n,n,ne,n,n,s,n,n,n,ne,ne,ne,ne,n,ne,n,ne,ne,s,sw,ne,ne,ne,n,ne,n,n,ne,ne,n,n,sw,ne,ne,ne,ne,nw,n,nw,n,ne,n,ne,n,n,ne,nw,se,s,n,ne,ne,nw,n,ne,ne,ne,se,ne,n,n,ne,n,n,n,n,n,n,ne,n,n,ne,ne,nw,n,n,ne,n,n,n,ne,n,nw,n,ne,nw,nw,s,n,nw,n,n,n,ne,ne,n,n,ne,n,ne,n,s,n,ne,ne,n,n,n,ne,ne,ne,n,ne,ne,n,n,s,s,ne,n,n,ne,ne,sw,sw,sw,n,n,ne,n,n,n,ne,n,ne,ne,n,n,n,n,ne,sw,ne,nw,ne,s,n,se,nw,n,n,n,nw,ne,n,ne,ne,n,se,n,sw,n,s,ne,n,ne,ne,s,se,n,se,ne,ne,se,ne,sw,n,ne,sw,n,n,ne,sw,s,n,ne,n,n,ne,ne,ne,ne,ne,se,ne,n,n,ne,ne,n,ne,n,n,ne,nw,ne,ne,n,ne,ne,nw,ne,ne,n,ne,ne,ne,sw,nw,n,n,ne,n,s,n,ne,ne,ne,n,n,sw,sw,n,n,ne,ne,ne,ne,ne,se,ne,ne,ne,n,n,ne,s,n,n,ne,n,ne,ne,ne,se,ne,n,ne,n,ne,ne,ne,s,nw,n,ne,sw,n,n,sw,ne,ne,ne,n,ne,ne,ne,se,ne,se,ne,ne,sw,s,n,ne,sw,ne,ne,ne,ne,n,ne,ne,sw,ne,s,n,se,sw,ne,ne,ne,ne,s,ne,nw,n,sw,ne,ne,n,nw,n,s,n,ne,n,n,n,ne,ne,ne,nw,n,n,ne,n,n,ne,n,n,se,nw,ne,ne,ne,n,n,ne,ne,n,ne,se,n,ne,sw,ne,ne,nw,ne,n,s,n,s,ne,n,ne,ne,ne,ne,n,ne,ne,ne,ne,ne,ne,ne,n,ne,n,ne,ne,ne,n,sw,ne,nw,s,n,ne,n,ne,ne,n,sw,se,n,n,n,ne,sw,ne,sw,nw,ne,ne,s,s,sw,nw,ne,n,s,ne,ne,n,nw,ne,sw,ne,ne,ne,n,ne,ne,ne,n,ne,ne,s,ne,n,n,se,ne,n,ne,ne,ne,n,se,ne,n,ne,n,n,se,ne,n,n,ne,sw,n,ne,ne,ne,n,ne,ne,ne,ne,ne,ne,ne,se,n,ne,ne,ne,n,n,s,ne,ne,ne,ne,se,n,n,ne,ne,ne,ne,ne,nw,ne,ne,ne,ne,ne,ne,ne,n,ne,nw,ne,ne,ne,n,ne,ne,ne,ne,ne,ne,nw,ne,ne,nw,se,se,ne,ne,ne,ne,s,ne,nw,ne,n,n,sw,ne,ne,n,ne,ne,ne,ne,ne,ne,ne,n,ne,ne,n,se,ne,se,n,n,n,ne,ne,ne,n,n,nw,s,ne,ne,ne,se,ne,ne,ne,s,ne,sw,ne,ne,n,ne,nw,ne,sw,ne,ne,ne,ne,nw,ne,ne,n,se,n,ne,ne,ne,s,ne,sw,ne,ne,ne,se,ne,n,sw,ne,sw,ne,ne,ne,sw,ne,ne,nw,n,ne,sw,n,nw,ne,ne,se,ne,s,ne,nw,n,s,nw,ne,ne,ne,ne,ne,ne,nw,s,ne,n,ne,n,ne,ne,ne,ne,ne,ne,nw,ne,ne,s,nw,ne,ne,ne,n,ne,ne,se,ne,n,ne,ne,ne,ne,ne,n,ne,nw,ne,ne,ne,ne,ne,ne,n,ne,ne,n,ne,ne,n,ne,ne,ne,ne,ne,ne,ne,ne,sw,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,se,ne,ne,ne,ne,ne,ne,nw,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,n,ne,ne,ne,ne,sw,ne,ne,ne,nw,s,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,s,sw,ne,ne,nw,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,se,ne,ne,ne,ne,ne,ne,ne,ne,ne,n,ne,ne,ne,ne,ne,sw,ne,se,ne,ne,nw,ne,ne,ne,ne,ne,ne,ne,ne,ne,nw,ne,ne,se,ne,ne,ne,ne,ne,s,ne,ne,se,sw,ne,ne,se,ne,ne,ne,ne,n,ne,ne,ne,se,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,sw,nw,ne,se,ne,s,sw,ne,ne,ne,nw,ne,ne,ne,ne,ne,nw,ne,ne,se,ne,nw,se,ne,ne,ne,ne,ne,ne,ne,ne,se,ne,ne,se,ne,sw,s,ne,ne,ne,n,ne,ne,s,ne,se,ne,n,ne,nw,ne,ne,ne,ne,ne,ne,s,se,ne,ne,nw,se,se,sw,ne,ne,ne,se,ne,ne,ne,se,ne,sw,s,ne,sw,ne,se,ne,se,ne,sw,ne,ne,ne,ne,n,n,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,s,ne,n,nw,sw,ne,ne,nw,ne,ne,ne,ne,ne,ne,sw,ne,ne,ne,s,ne,s,ne,ne,sw,ne,ne,n,ne,se,ne,s,ne,ne,ne,ne,ne,ne,ne,ne,ne,se,se,ne,ne,ne,n,ne,ne,se,ne,nw,nw,se,sw,se,se,nw,ne,se,ne,se,ne,ne,ne,nw,ne,ne,n,ne,ne,s,ne,se,ne,nw,n,ne,ne,ne,ne,ne,ne,sw,ne,ne,se,se,ne,nw,ne,se,ne,sw,ne,ne,n,ne,ne,se,ne,sw,ne,ne,ne,ne,ne,ne,nw,ne,ne,se,ne,se,s,n,se,se,ne,ne,s,ne,ne,ne,ne,ne,se,ne,n,ne,ne,ne,ne,se,ne,se,ne,se,s,se,ne,ne,ne,se,n,se,n,ne,ne,se,ne,se,ne,se,ne,se,ne,ne,ne,ne,se,se,se,ne,se,se,se,ne,se,se,ne,s,ne,ne,ne,se,ne,s,ne,n,ne,ne,ne,s,s,se,ne,se,ne,ne,ne,ne,ne,ne,ne,ne,sw,ne,n,se,se,se,s,ne,ne,n,se,ne,ne,se,se,ne,nw,ne,ne,se,ne,ne,ne,se,se,nw,se,ne,nw,se,se,n,se,ne,ne,ne,ne,s,ne,ne,ne,se,ne,ne,ne,se,nw,sw,ne,ne,ne,se,ne,se,ne,sw,ne,ne,se,nw,se,ne,ne,sw,se,n,ne,ne,se,se,ne,sw,ne,ne,se,ne,ne,ne,s,ne,ne,ne,se,se,ne,ne,n,ne,ne,se,ne,se,ne,nw,se,ne,se,ne,s,se,se,ne,s,nw,se,ne,sw,ne,sw,ne,ne,ne,ne,se,ne,ne,ne,s,ne,ne,ne,ne,n,ne,n,ne,se,ne,ne,se,ne,ne,n,ne,se,n,ne,ne,ne,s,ne,ne,ne,se,se,n,ne,sw,ne,ne,ne,ne,s,s,se,se,n,ne,ne,ne,ne,ne,ne,n,s,se,ne,nw,n,ne,ne,se,ne,ne,ne,s,se,ne,ne,ne,nw,ne,ne,se,ne,ne,nw,se,ne,n,ne,ne,ne,sw,se,n,ne,ne,se,se,se,ne,ne,ne,ne,ne,ne,ne,ne,ne,n,ne,ne,se,ne,n,ne,se,ne,n,ne,s,ne,ne,s,se,ne,ne,sw,ne,ne,ne,ne,ne,se,ne,ne,ne,ne,se,se,ne,ne,ne,se,nw,ne,ne,s,n,n,se,ne,se,sw,sw,sw,s,ne,se,ne,ne,ne,se,ne,sw,sw,ne,se,ne,ne,se,se,ne,ne,ne,ne,ne,ne,ne,ne,n,ne,s,se,se,nw,se,ne,ne,ne,se,se,se,ne,ne,se,se,sw,se,se,ne,s,n,ne,ne,ne,se,se,se,se,ne,ne,se,ne,sw,se,n,se,ne,ne,ne,ne,se,se,se,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,se,se,ne,sw,se,n,n,ne,ne,nw,nw,nw,se,n,sw,ne,se,ne,se,ne,ne,se,se,s,nw,ne,sw,ne,se,nw,ne,se,ne,se,ne,nw,ne,ne,se,se,ne,ne,ne,se,se,ne,se,ne,ne,ne,ne,sw,ne,se,se,ne,ne,ne,se,se,se,sw,ne,ne,ne,nw,ne,ne,s,ne,se,se,se,nw,se,ne,ne,n,n,se,se,se,ne,se,sw,se,s,se,sw,ne,se,ne,sw,ne,se,se,se,s,ne,se,n,se,se,se,nw,se,se,se,ne,se,ne,se,se,nw,ne,n,se,ne,ne,se,ne,se,se,ne,se,se,ne,se,nw,ne,se,ne,se,se,nw,s,n,ne,ne,s,nw,ne,se,sw,ne,sw,ne,ne,ne,se,se,sw,ne,ne,se,se,se,n,se,ne,se,se,ne,ne,se,se,se,ne,se,ne,se,se,n,se,n,n,se,ne,ne,se,se,se,ne,n,se,se,se,se,ne,se,se,ne,se,se,se,se,se,ne,se,n,se,se,se,se,se,se,s,ne,se,se,sw,se,se,ne,ne,ne,ne,se,nw,ne,se,ne,ne,se,nw,ne,nw,ne,se,nw,se,se,se,nw,n,se,sw,ne,ne,ne,ne,se,sw,se,s,nw,ne,s,ne,se,se,ne,nw,n,sw,se,ne,ne,ne,se,se,ne,ne,se,se,sw,se,ne,ne,se,s,se,se,se,ne,se,se,s,se,ne,sw,sw,se,ne,se,ne,ne,se,sw,sw,ne,se,ne,se,ne,se,ne,se,sw,n,se,ne,ne,nw,s,n,se,se,s,ne,sw,se,ne,se,ne,ne,ne,ne,ne,n,se,se,ne,se,se,se,ne,se,ne,n,se,n,n,ne,ne,sw,se,ne,se,se,se,se,se,ne,se,ne,ne,ne,se,ne,nw,ne,s,se,sw,se,n,ne,ne,se,se,se,sw,se,se,se,s,se,se,se,se,ne,se,se,ne,se,sw,nw,ne,se,se,se,s,n,se,se,ne,ne,ne,se,ne,se,se,se,sw,ne,se,se,se,n,se,se,se,se,se,se,n,se,se,se,se,se,sw,se,se,se,se,se,se,n,ne,ne,se,ne,se,se,ne,ne,se,se,ne,ne,ne,se,se,se,se,se,ne,sw,ne,se,ne,se,s,se,ne,se,se,se,ne,se,se,se,se,nw,se,se,se,s,n,se,se,se,se,se,ne,sw,sw,ne,sw,se,se,ne,sw,se,se,se,s,ne,ne,se,se,se,ne,se,ne,se,n,se,n,ne,ne,se,se,se,ne,n,se,se,se,se,s,ne,sw,n,se,ne,se,se,ne,s,ne,se,se,se,ne,s,nw,s,ne,n,se,ne,s,s,s,ne,ne,ne,se,ne,ne,s,sw,se,se,se,se,sw,nw,ne,nw,se,se,se,se,s,se,se,s,se,ne,se,n,nw,s,se,se,se,se,ne,se,se,sw,ne,se,se,se,ne,ne,se,se,se,se,ne,n,se,se,se,se,se,ne,se,s,se,se,s,se,sw,se,se,se,ne,ne,se,se,s,se,n,se,se,se,se,se,se,nw,nw,se,ne,se,ne,se,se,se,se,n,se,se,se,ne,se,se,se,n,se,se,nw,se,se,ne,ne,se,se,ne,se,ne,n,s,se,se,se,sw,se,se,se,se,se,se,ne,n,se,se,ne,se,se,se,se,se,se,se,se,se,se,n,se,nw,se,se,se,se,se,se,se,ne,se,se,se,s,n,se,se,se,se,se,s,se,ne,se,se,ne,se,se,nw,n,se,se,n,se,ne,se,se,se,se,s,se,se,se,se,se,se,se,ne,s,s,se,se,sw,se,se,se,se,se,se,se,se,nw,sw,se,se,se,se,ne,se,se,n,se,ne,ne,n,se,nw,ne,se,se,ne,se,se,se,se,se,ne,se,n,ne,se,se,s,se,se,se,se,se,se,se,se,s,sw,se,ne,se,se,se,se,se,se,s,n,s,se,se,sw,se,se,se,se,se,se,se,se,se,se,se,s,se,sw,se,se,se,se,se,n,se,sw,n,se,n,se,se,nw,se,nw,se,sw,se,se,se,se,se,se,se,se,se,se,se,se,se,se,se,se,sw,se,se,se,se,se,se,se,se,se,nw,se,se,sw,ne,n,n,s,nw,nw,s,nw,n,nw,nw,sw,sw,sw,sw,s,sw,se,s,s,s,s,s,s,s,se,s,se,s,se,se,s,se,se,se,se,se,se,se,se,se,ne,se,se,se,ne,se,se,se,ne,se,se,s,sw,ne,ne,se,ne,ne,s,sw,sw,ne,ne,n,ne,ne,ne,n,ne,ne,ne,ne,ne,n,ne,ne,ne,n,s,n,n,ne,s,n,ne,sw,ne,ne,n,n,s,nw,nw,n,n,nw,n,se,n,n,sw,n,n,n,n,n,nw,n,n,n,nw,s,n,nw,n,nw,n,s,n,n,sw,sw,n,nw,s,nw,se,nw,nw,nw,nw,nw,nw,nw,n,nw,n,sw,s,nw,nw,sw,sw,nw,nw,ne,sw,nw,nw,nw,nw,nw,nw,nw,sw,nw,sw,nw,nw,nw,n,ne,nw,nw,sw,nw,nw,s,nw,nw,sw,n,nw,sw,sw,sw,nw,nw,nw,sw,s,nw,nw,nw,sw,sw,nw,sw,sw,n,nw,nw,nw,sw,nw,sw,sw,sw,sw,nw,nw,sw,ne,se,sw,sw,sw,sw,ne,n,sw,sw,sw,sw,sw,sw,se,sw,s,sw,sw,sw,sw,sw,sw,sw,n,s,sw,s,s,n,sw,s,s,sw,sw,s,s,s,n,se,sw,s,s,s,sw,n,s,sw,sw,sw,nw,nw,sw,s,sw,sw,sw,sw,sw,sw,nw,s,sw,sw,nw,s,sw,s,s,sw,s,sw,sw,s,sw,s,sw,s,n,sw,se,s,se,sw,n,s,ne,s,se,se,s,nw,s,s,sw,s,s,s,s,sw,s,s,sw,s,s,s,s,se,s,sw,s,ne,s,s,s,s,n,sw,n,sw,ne,s,s,s,s,s,s,nw,s,s,se,s,sw,se,ne,s,s,s,s,s,s,ne,s,nw,s,s,nw,se,s,s,s,s,se,ne,se,sw,s,s,s,ne,se,s,ne,se,s,se,s,se,s,s,s,se,s,s,s,n,se,ne,se,se,s,nw,s,nw,se,s,s,n,se,n,ne,se,s,se,s,se,ne,se,se,se,s,s,sw,se,s,se,se,s,s,se,s,n,nw,ne,s,se,se,se,s,s,se,s,se,n,se,s,s,sw,se,se,se,se,se,se,ne,se,s,se,se,se,se,se,se,se,se,se,se,se,nw,se,se,nw,s,n,n,n,se,n,se,se,se,se,se,se,sw,se,ne,ne,nw,se,se,se,se,n,se,se,se,n,se,se,se,nw,se,se,sw,sw,n,se,se,ne,se,n,sw,nw,se,se,se,ne,ne,se,se,se,ne,se,se,se,se,ne,se,se,se,ne,se,ne,se,se,se,n,ne,s,se,ne,se,n,n,ne,se,se,se,ne,ne,ne,ne,ne,se,n,s,se,se,nw,ne,ne,se,nw,ne,se,ne,se,ne,se,se,ne,ne,se,ne,ne,se,se,ne,ne,se,ne,se,sw,n,ne,ne,ne,ne,ne,se,ne,ne,ne,ne,se,se,ne,sw,se,ne,ne,se,ne,se,ne,se,se,ne,se,ne,se,ne,sw,ne,ne,se,se,ne,se,se,se,ne,n,ne,nw,sw,ne,ne,ne,ne,ne,n,se,se,ne,se,ne,s,nw,se,ne,se,se,ne,ne,sw,ne,sw,ne,ne,se,ne,n,sw,ne,nw,sw,ne,ne,sw,ne,ne,nw,ne,s,se,n,ne,ne,se,ne,n,ne,ne,ne,sw,ne,n,ne,nw,nw,ne,ne,nw,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,ne,nw,ne,ne,ne,n,ne,ne,ne,nw,ne,s,se,ne,ne,n,n,ne,ne,ne,ne,ne,se,ne,ne,ne,sw,ne,ne,ne,ne,sw,ne,ne,ne,ne,sw,n,ne,ne,ne,sw,ne,n,se,s,n,s,ne,ne,s,ne,s,ne,se,n,ne,n,ne,s,ne,se,s,ne,n,ne,ne,sw,se,ne,se,ne,n,ne,ne,n,ne,ne,ne,ne,ne,ne,n,s,ne,ne,ne,ne,ne,s,n,nw,n,ne,n,n,nw,ne,n,n,n,nw,ne,ne,ne,n,ne,ne,ne,ne,n,se,n,n,ne,ne,ne,ne,n,ne,ne,ne,s,ne,n,n,ne,ne,n,ne,ne,s,ne,n,ne,n,ne,n,sw,ne,ne,se,n,ne,n,n,n,ne,n,n,n,ne,n,ne,ne,se,n,ne,n,n,n,ne,n,ne,ne,ne,sw,ne,n,n,nw,n,s,n,ne,n,ne,s,ne,n,n,ne,n,sw,n,ne,nw,n,sw,ne,sw,nw,ne,n,ne,n,n,ne,s,n,ne,n,ne,n,n,se,n,ne,n,n,n,n,ne,n,ne,n,ne,n,n,n,n,n,n,n,n,n,s,nw,n,n,n,se,n,n,ne,s,n,n,n,se,se,nw,ne,n,n,n,ne,nw,n,n,n,n,sw,n,se,n,n,n,n,s,n,sw,n,n,ne,s,n,ne,n,se,n,se,sw,n,ne,n,ne,s,n,n,n,se,n,n,sw,n,n,n,n,ne,n,n,n,n,n,n,n,n,n,sw,s,n,n,n,n,n,se,n,n,n,nw,n,n,se,n,nw,n,n,n,n,n,nw,n,n,n,n,n,n,n,n,se,n,n,n,n,n,n,sw,n,n,n,n,n,n,s,n,n,ne,nw,n,s,nw,n,n,n,n,ne,nw,nw,n,n,nw,n,se,se,n,se,n,n,n,nw,s,n,n,se,nw,n,n,n,n,nw,se,n,n,n,n,nw,n,ne,n,s,n,s,nw,n,nw,n,n,sw,n,nw,nw,nw,n,n,nw,ne,nw,n,n,n,n,se,n,n,n,s,n,nw,n,ne,ne,n,n,nw,n,n,sw,n,n,ne,n,nw,nw,n,n,s,n,nw,nw,ne,s,n,s,n,n,s,n,n,n,n,nw,se,n,n,n,se,n,n,n,ne,se,n,nw,n,nw,n,n,nw,nw,n,nw,n,n,nw,nw,nw,n,nw,nw,nw,n,n,n,s,s,nw,n,n,n,n,n,ne,s,n,n,sw,nw,n,n,sw,nw,nw,nw,nw,ne,sw,ne,n,n,nw,nw,n,n,nw,n,nw,ne,nw,n,ne,n,nw,nw,nw,sw,sw,nw,se,nw,n,nw,ne,n,nw,n,nw,nw,nw,n,nw,s,nw,nw,nw,sw,n,n,s,n,sw,nw,se,s,nw,ne,se,nw,nw,nw,n,ne,n,nw,nw,nw,nw,nw,n,nw,nw,nw,nw,s,nw,nw,nw,nw,nw,nw,sw,n,n,nw,nw,nw,n,n,nw,nw,n,se,nw,nw,n,nw,nw,s,nw,n,nw,ne,nw,nw,se,nw,n,nw,s,nw,nw,ne,nw,nw,sw,nw,se,n,nw,sw,nw,nw,n,nw,nw,n,nw,n,nw,nw,nw,nw,nw,nw,nw,nw,n,nw,nw,nw,sw,nw,nw,nw,nw,n,nw,n,nw,n,nw,nw,s,nw,ne,nw,s,nw,n,nw,nw,s,n,nw,nw,n,se,nw,ne,n,nw,nw,nw,s,nw,nw,nw,nw,n,nw,ne,nw,s,nw,nw,s,nw,nw,nw,nw,nw,nw,nw,nw,nw,ne,nw,sw,nw,sw,nw,nw,n,nw,n,sw,nw,nw,nw,se,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,nw,sw,nw,n,nw,sw,nw,nw,sw,nw,nw,nw,nw,nw,nw,sw,s,sw,se,nw,nw,nw,sw,nw,nw,nw,nw,nw,s,se,s,nw,nw,nw,sw,se,nw,nw,s,nw,s,nw,sw,nw,nw,nw,nw,s,se,sw,n,nw,n,nw,sw,nw,s,nw,sw,sw,sw,s,sw,nw,ne,nw,sw,sw,nw,sw,nw,nw,ne,sw,ne,nw,nw,s,sw,nw,sw,nw,s,nw,nw,nw,nw,nw,nw,nw,nw,nw,se,nw,se,nw,ne,nw,nw,nw,nw,nw,nw,nw,nw,se,se,nw,s,ne,se,nw,n,sw,nw,se,s,nw,nw,sw,ne,nw,sw,n,nw,nw,nw,nw,sw,se,sw,nw,sw,ne,nw,n,nw,sw,nw,nw,nw,sw,nw,sw,nw,sw,nw,nw,s,sw,ne,sw,nw,nw,nw,se,nw,sw,nw,nw,sw,sw,nw,sw,ne,s,sw,n,s,sw,sw,sw,nw,nw,nw,nw,sw,s,sw,nw,nw,nw,sw,ne,se,sw,sw,nw,sw,nw,sw,nw,sw,nw,sw,nw,nw,n,sw,sw,sw,nw,sw,sw,sw,nw,nw,nw,nw,se,nw,sw,s,nw,nw,se,n,se,n,nw,nw,se,se,nw,s,sw,nw,nw,sw,s,nw,sw,nw,nw,n,nw,nw,sw,nw,sw,nw,sw,sw,sw,nw,nw,nw,se,nw,nw,nw,nw,se,n,sw,nw,nw,nw,ne,se,nw,nw,sw,sw,sw,se,nw,sw,nw,nw,nw,nw,nw,nw,nw,nw,nw,sw,nw,nw,nw,sw,nw,nw,nw,nw,sw,sw,n,nw,sw,se,nw,nw,sw,sw,sw,sw,nw,sw,nw,sw,sw,se,nw,sw,sw,nw,sw,nw,ne,sw,nw,sw,n,sw,sw,se,sw,nw,se,nw,nw,nw,sw,nw,sw,nw,sw,nw,sw,sw,nw,sw,nw,ne,nw,sw,sw,sw,sw,nw,s,nw,sw,ne,nw,sw,se,sw,ne,nw,sw,sw,sw,nw,nw,sw,nw,nw,sw,sw,nw,nw,s,se,se,n,sw,sw,sw,ne,nw,sw,sw,sw,nw,ne,nw,nw,sw,nw,sw,s,sw,s,sw,sw,s,n,nw,n,n,s,sw,sw,sw,se,ne,sw,nw,sw,sw,nw,sw,ne,sw,sw,nw,sw,sw,n,sw,nw,sw,nw,sw,ne,ne,sw,nw,sw,sw,ne,sw,nw,nw,sw,sw,se,nw,sw,nw,s,sw,sw,n,sw,sw,nw,sw,nw,nw,s,ne,nw,sw,sw,sw,sw,sw,sw,sw,sw,sw,n,sw,sw,sw,sw,se,ne,sw,nw,sw,sw,sw,sw,nw,nw,nw,nw,sw,nw,sw,s,sw,sw,sw,sw,sw,sw,sw,sw,sw,s,sw,ne,sw,se,s,sw,sw,se,sw,sw,n,ne,sw,sw,sw,s,sw,sw,sw,sw,sw,sw,sw,sw,sw,s,sw,sw,sw,sw,n,sw,n,nw,nw,sw,sw,sw,sw,ne,ne,sw,se,sw,sw,n,sw,ne,sw,sw,sw,nw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,sw,s,sw,sw,sw,sw,sw,sw,sw,sw,n,ne,sw,se,s,sw,s,s,sw,sw,sw,se,nw,sw,sw,sw,sw,s,sw,n,sw,sw,se,se,sw,sw,n,sw,s,n,sw,sw,sw,sw,sw,nw,ne,sw,sw,sw,sw,n,sw,sw,sw,n,sw,sw,sw,sw,ne,sw,n,sw,sw,se,sw,s,sw,sw,nw,sw,sw,sw,ne,sw,ne,sw,sw,ne,sw,sw,sw,sw,sw,sw,sw,sw,s,sw,sw,sw,s,sw,sw,sw,sw,n,s,sw,s,sw,sw,sw,sw,sw,ne,sw,s,sw,sw,sw,sw,s,sw,sw,sw,sw,sw,s,sw,sw,sw,ne,sw,s,sw,s,nw,sw,sw,ne,sw,s,sw,sw,sw,sw,sw,sw,ne,sw,s,sw,sw,sw,nw,sw,s,s,sw,sw,nw,sw,sw,sw,sw,sw,n,s,s,s,n,sw,s,sw,sw,se,ne,se,s,s,sw,s,sw,ne,sw,se,sw,n,s,s,sw,s,sw,sw,sw,s,sw,sw,sw,sw,nw,sw,s,sw,sw,sw,s,sw,nw,sw,sw,sw,s,n,sw,nw,sw,sw,sw,sw,sw,sw,s,s,sw,sw,s,sw,sw,sw,sw,sw,s,nw,se,s,sw,sw,sw,s,sw,sw,sw,n,s,sw,sw,sw,sw,sw,sw,sw,sw,s,sw,s,s,sw,sw,sw,sw,s,sw,sw,sw,sw,ne,s,sw,nw,sw,sw,sw,sw,n,s,sw,sw,se,sw,s,se,sw,s,s,sw,s,sw,n,sw,sw,s,s,sw,sw,s,ne,sw,sw,n,s,sw,sw,s,sw,n,sw,sw,ne,s,sw,sw,s,sw,sw,sw,s,nw,sw,sw,s,nw,s,se,s,ne,s,ne,n,sw,sw,sw,ne,sw,sw,s,sw,s,sw,n,sw,sw,n,sw,sw,sw,nw,s,s,sw,sw,s,s,s,s,sw,sw,s,s,sw,sw,s,sw,se,ne,s,sw,s,sw,sw,sw,sw,n,s,s,nw,se,s,sw,sw,sw,s,sw,s,s,s,sw,s,s,n,sw,se,s,s,sw,n,s,s,s,sw,s,s,sw,s,sw,s,sw,n,n,sw,se,s,sw,sw,sw,s,sw,se,sw,sw,s,s,sw,s,s,sw,s,nw,nw,sw,se,s,s,s,sw,se,s,sw,sw,s,s,sw,s,sw,ne,s,s,n,sw,nw,sw,s,sw,sw,sw,sw,se,sw,sw,s,s,sw,s,s,sw,s,sw,sw,s,s,ne,s,s,s,sw,s,s,sw,s,s,n,sw,n,sw,s,s,s,ne,sw,s,ne,s,s,ne,s,s,s,s,sw,s,s,ne,sw,s,se,s,se,sw,s,sw,s,s,sw,s,sw,s,s,s,sw,n,sw,s,s,s,ne,se,s,sw,s,sw,sw,sw,s,s,n,sw,se,sw,s,s,sw,sw,sw,sw,s,s,sw,s,s,sw,sw,n,s,s,sw,sw,sw,s,nw,s,s,sw,sw,ne,s,s,s,se,sw,se,s,sw,ne,sw,s,s,s,s,s,s,se,s,s,s,s,s,s,s,s,sw,s,sw,s,s,n,s,ne,sw,sw,s,s,sw,s,s,s,s,s,sw,s,s,s,nw,nw,s,sw,s,s,se,sw,s,s,s,s,s,nw,s,s,sw,sw,s,s,s,s,sw,s,sw,s,s,s,n,s,ne,s,s,s,s,sw,s,s,n,sw,n,n,nw,s,sw,s,sw,s,ne,nw,ne,ne,sw,s,s,se,nw,s,s,s,s,sw,se,s,s,sw,nw,s,s,s,nw,sw,se,s,s,s,s,s,s,sw,s,s,nw,s,s,sw,s,s,s,s,s,s,s,s,s,sw,s,s,s,se,s,s,s,sw,s,s,s,sw,s,s,s,n,s,se,s,sw,ne,s,s,sw,s,se,sw,n,s,s,nw,n,n,nw,s,s,s,s,s,se,ne,sw,nw,s,s,s,nw,s,s,ne,s,s,s,s,s,s,n,s,s,ne,nw,n,sw,s,s,s,s,s,s,sw,se,s,nw,s,s,sw,s,s,sw,se,sw,s,s,s,s,s,s,s,s,ne,sw,s,sw,sw,s,s,s,s,s,s,s,s,sw,s,se,s,s,s,s
\ No newline at end of file
diff --git a/2017/src/bin/day11.rs b/2017/src/bin/day11.rs
new file mode 100644
index 0000000..174f950
--- /dev/null
+++ b/2017/src/bin/day11.rs
@@ -0,0 +1,42 @@
+use std::io::{self, Read};
+
+#[derive(Debug, Clone, Copy)]
+struct Hex(i32, i32, i32);
+
+impl Hex {
+    fn mov(self, dir: &str) -> Self {
+        let Hex(x, y, z) = self;
+        match dir {
+            "n"  => Hex(x, y + 1, z - 1),
+            "ne" => Hex(x + 1, y, z - 1),
+            "se" => Hex(x + 1, y - 1, z),
+            "s"  => Hex(x, y - 1, z + 1),
+            "sw" => Hex(x - 1, y, z + 1),
+            "nw" => Hex(x - 1, y + 1, z),
+            _ => unimplemented!(),
+        }
+    }
+}
+
+fn solve1(input: &str) -> i32 {
+    let mut hex = Hex(0, 0, 0);
+    for dir in input.split(',') {
+        hex = hex.mov(dir);
+    }
+    (hex.0.abs() + hex.1.abs() + hex.2.abs()) / 2
+}
+
+fn main() {
+    let mut input = String::new();
+    io::stdin().read_to_string(&mut input).unwrap();
+
+    println!("Part 1: {}", solve1(input.trim()));
+}
+
+#[test]
+fn part1() {
+    assert_eq!(3, solve1("ne,ne,ne"));
+    assert_eq!(0, solve1("ne,ne,sw,sw"));
+    assert_eq!(2, solve1("ne,ne,s,s"));
+    assert_eq!(3, solve1("se,sw,se,sw,sw"));
+}