diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..c0071b2
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..aa00ffa
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..712ab9d
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..5ddb3b3
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/data/graphs.DarkMaze/in_100_0 b/data/graphs.DarkMaze/in_100_0
new file mode 100644
index 0000000..28f77ea
--- /dev/null
+++ b/data/graphs.DarkMaze/in_100_0
@@ -0,0 +1,5120 @@
+100
+441
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+0
+0
+-1
+0
+-1
+-1
+0
+0
+-1
+0
+1
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+-1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+1
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+-1
+0
+1
+1
+-1
+-1
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+-1
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+0
+0
+0
+-1
+-1
+1
+0
+0
+1
+0
+0
+-1
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+1
+1
+0
+0
+0
+1
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+-1
+0
+-1
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+1
+0
+0
+-1
+-1
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+-1
+1
+1
+-1
+-1
+0
+0
+1
+0
+-1
+0
+0
+-1
+0
+1
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+0
+1
+0
+0
+1
+0
+1
+0
+0
+-1
+0
+0
+0
+-1
+0
+-1
+1
+0
+-1
+1
+0
+0
+0
+0
+1
+0
+1
+1
+0
+0
+0
+1
+1
+-1
+0
+0
+0
+1
+0
+1
+0
+0
+0
+1
+0
+0
+0
+-1
+1
+0
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+-1
+0
+-1
+0
+1
+0
+0
+0
+-1
+-1
+1
+-1
+0
+0
+0
+-1
+-1
+0
+-1
+0
+-1
+1
+0
+0
+1
+0
+1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+1
+0
+1
+0
+0
+1
+-1
+0
+1
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+-1
+1
+-1
+0
+-1
+-1
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+1
+0
+1
+-1
+-1
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+0
+1
+0
+0
+-1
+0
+-1
+1
+0
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+-1
+-1
+-1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+-1
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+0
+1
+0
+1
+0
+-1
+0
+0
+0
+-1
+-1
+0
+0
+-1
+0
+0
+1
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+-1
+0
+-1
+1
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+-1
+-1
+-1
+0
+-1
+0
+0
+1
+0
+-1
+0
+0
+0
+0
+-1
+0
+-1
+1
+0
+0
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+0
+1
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+-1
+1
+-1
+0
+0
+0
+-1
+0
+1
+1
+0
+0
+0
+1
+1
+0
+0
+0
+1
+0
+0
+0
+1
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+-1
+1
+-1
+0
+0
+-1
+-1
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+-1
+-1
+0
+1
+0
+0
+0
+-1
+0
+-1
+0
+0
+-1
+0
+0
+-1
+0
+0
+-1
+0
+-1
+1
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+1
+0
+-1
+-1
+-1
+0
+0
+0
+0
+0
+0
+1
+1
+0
+0
+1
+-1
+0
+1
+0
+1
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+1
+0
+0
+1
+0
+-1
+-1
+-1
+-1
+1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+1
+0
+0
+-1
+0
+0
+1
+1
+0
+1
+0
+0
+0
+1
+0
+0
+0
+-1
+-1
+0
+0
+-1
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+1
+0
+1
+0
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+0
+1
+0
+1
+0
+0
+0
+0
+1
+0
+1
+0
+1
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+-1
+0
+0
+0
+0
+-1
+1
+1
+-1
+0
+-1
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+0
+0
+0
+-1
+0
+0
+0
+-1
+0
+0
+1
+0
+1
+0
+-1
+-1
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+0
+0
+0
+0
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+0
+1
+0
+0
+0
+-1
+0
+0
+0
+-1
+0
+0
+-1
+-1
+0
+1
+0
+1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+-1
+0
+1
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+1
+-1
+-1
+0
+-1
+0
+0
+0
+0
+0
+-1
+-1
+0
+-1
+0
+1
+0
+0
+0
+-1
+0
+0
+-1
+0
+1
+1
+0
+-1
+0
+1
+-1
+1
+-1
+0
+0
+-1
+0
+0
+1
+0
+0
+0
+0
+-1
+1
+-1
+0
+0
+-1
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+0
+0
+0
+1
+0
+-1
+-1
+0
+0
+1
+0
+0
+-1
+0
+0
+0
+-1
+1
+-1
+0
+0
+1
+0
+0
+0
+0
+1
+0
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+1
+0
+0
+0
+1
+-1
+0
+1
+0
+0
+0
+-1
+-1
+-1
+0
+-1
+0
+-1
+0
+0
+-1
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+-1
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+1
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+1
+0
+1
+0
+0
+0
+0
+1
+0
+0
+-1
+0
+1
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+1
+0
+1
+0
+1
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+-1
+-1
+1
+0
+0
+-1
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+-1
+1
+0
+0
+0
+0
+0
+0
+1
+0
+0
+-1
+0
+0
+1
+1
+0
+0
+0
+1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+1
+-1
+0
+-1
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+-1
+1
+1
+-1
+0
+0
+-1
+1
+0
+0
+-1
+0
+-1
+1
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+1
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+0
+0
+1
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+1
+-1
+0
+0
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+-1
+1
+0
+0
+0
+-1
+0
+0
+0
+1
+1
+0
+-1
+-1
+-1
+0
+0
+1
+0
+0
+0
+1
+-1
+-1
+-1
+-1
+0
+0
+0
+1
+0
+1
+-1
+1
+0
+0
+-1
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+-1
+-1
+0
+0
+0
+-1
+-1
+0
+0
+0
+1
+0
+0
+-1
+0
+0
+0
+-1
+-1
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+-1
+0
+1
+0
+0
+0
+-1
+1
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+-1
+0
+1
+0
+-1
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+-1
+-1
+0
+0
+-1
+0
+0
+0
+0
+1
+0
+-1
+0
+-1
+0
+-1
+1
+0
+1
+1
+0
+0
+1
+0
+0
+-1
+0
+-1
+0
+-1
+1
+-1
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+-1
+0
+0
+1
+-1
+1
+-1
+0
+-1
+-1
+0
+0
+0
+1
+0
+1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+1
+1
+0
+0
+0
+0
+1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+1
+1
+0
+1
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+1
+1
+-1
+1
+0
+0
+0
+0
+0
+0
+-1
+-1
+1
+0
+1
+0
+0
+0
+-1
+0
+-1
+0
+-1
+0
+-1
+0
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+-1
+-1
+1
+1
+-1
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+1
+0
+1
+-1
+0
+0
+-1
+-1
+0
+1
+1
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+-1
+0
+0
+0
+-1
+1
+1
+0
+-1
+0
+-1
+0
+0
+-1
+-1
+0
+0
+-1
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+-1
+-1
+0
+-1
+1
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+0
+1
+1
+0
+1
+0
+0
+0
+0
+0
+-1
+-1
+0
+-1
+0
+0
+1
+0
+1
+0
+1
+0
+-1
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+-1
+-1
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+1
+1
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+0
+-1
+0
+0
+-1
+0
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+-1
+-1
+-1
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+0
+-1
+-1
+0
+0
+-1
+-1
+0
+-1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+1
+1
+-1
+0
+0
+0
+0
+1
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+0
+-1
+1
+1
+-1
+0
+0
+-1
+-1
+1
+0
+1
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+-1
+1
+-1
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+0
+1
+0
+-1
+1
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+1
+0
+0
+0
+0
+0
+-1
+1
+0
+0
+1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+1
+-1
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+1
+1
+0
+-1
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+-1
+0
+0
+-1
+1
+-1
+0
+1
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+-1
+-1
+0
+-1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+-1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+0
+1
+1
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+-1
+1
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+1
+-1
+0
+-1
+0
+0
+-1
+0
+-1
+1
+0
+0
+-1
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+-1
+0
+-1
+1
+1
+-1
+0
+-1
+0
+0
+0
+0
+0
+-1
+1
+-1
+-1
+0
+0
+1
+-1
+0
+1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+-1
+1
+-1
+0
+0
+1
+0
+-1
+0
+0
+1
+0
+-1
+-1
+-1
+0
+0
+0
+0
+0
+-1
+1
+0
+0
+-1
+0
+-1
+0
+-1
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+0
+0
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+1
+0
+1
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+0
+-1
+1
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+-1
+-1
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+-1
+1
+-1
+-1
+1
+0
+-1
+0
+-1
+0
+1
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+-1
+0
+0
+0
+0
+-1
+1
+-1
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+-1
+0
+0
+-1
+0
+0
+0
+1
+1
+0
+-1
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+-1
+-1
+0
+0
+0
+-1
+-1
+0
+0
+-1
+0
+1
+-1
+0
+-1
+-1
+0
+-1
+1
+-1
+0
+1
+0
+-1
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+0
+0
+0
+-1
+0
+-1
+1
+0
+0
+-1
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+-1
+-1
+0
+0
+1
+0
+-1
+1
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+1
+0
+0
+-1
+0
+-1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+-1
+1
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+0
+1
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+1
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+-1
+1
+0
+0
+0
+1
+0
+0
+0
+-1
+0
+-1
+0
+1
+0
+0
+-1
+0
+0
+-1
+1
+0
+-1
+-1
+1
+0
+-1
+0
+1
+1
+-1
+0
+0
+0
+-1
+-1
+0
+-1
+0
+1
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+0
+0
+1
+0
+0
+-1
+-1
+0
+0
+-1
+1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+-1
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+0
+1
+0
+0
+-1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+-1
+0
+0
+-1
+-1
+0
+0
+0
+1
+-1
+0
+0
+0
+-1
+-1
+1
+-1
+-1
+0
+0
+0
+0
+1
+1
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+1
+0
+0
+-1
+0
+-1
+0
+-1
+1
+0
+0
+0
+1
+0
+-1
+-1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+1
+0
+1
+0
+1
+0
+0
+0
+-1
+0
+-1
+0
+0
+1
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+1
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+-1
+0
+0
+0
+-1
+-1
+-1
+0
+0
+0
+0
+1
+0
+0
+0
+1
+-1
+1
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+1
+0
+0
+0
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+0
+-1
+0
+-1
+1
+0
+-1
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+-1
+-1
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+-1
+-1
+1
+0
+1
+0
+0
+-1
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+1
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+0
+0
+-1
+1
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+-1
+0
+-1
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+-1
+-1
+0
+1
+1
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+1
+1
+0
+0
+1
+0
+0
+-1
+-1
+0
+0
+1
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+-1
+1
+-1
+-1
+0
+0
+0
+0
+-1
+0
+-1
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+1
+0
+-1
+0
+-1
+-1
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+-1
+1
+1
+0
+-1
+0
+-1
+0
+0
+-1
+0
+1
+0
+1
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+0
+0
+-1
+1
+0
+1
+-1
+0
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+-1
+-1
+0
+0
+-1
+0
+0
+0
+-1
+0
+0
+-1
+-1
+0
+1
+-1
+-1
+1
+0
+1
+0
+0
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+0
+1
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+-1
+-1
+1
+0
+0
+1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+-1
+1
+0
+1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+-1
+0
+0
+0
+-1
+-1
+-1
+-1
+1
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+-1
+-1
+-1
+0
+0
+0
+0
+1
+0
+-1
+0
+1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+1
+-1
+0
+1
+-1
+1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+-1
+1
+0
+-1
+0
+-1
+0
+-1
+0
+0
+-1
+-1
+0
+-1
+-1
+-1
+0
+-1
+1
+-1
+-1
+0
+1
+1
+0
+-1
+0
+1
+-1
+0
+1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+-1
+-1
+0
+-1
+0
+1
+0
+0
+-1
+0
+-1
+0
+1
+0
+0
+0
+0
+1
+0
+-1
+0
+-1
+-1
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+-1
+0
+1
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+1
+0
+0
+-1
+0
+-1
+0
+-1
+0
+0
+1
+-1
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+0
+-1
+0
+0
+0
+0
+0
+1
+0
+0
+-1
+0
+-1
+0
+-1
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+1
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+0
+1
+0
+0
+0
+0
+-1
+1
+-1
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+-1
+0
+-1
+0
+-1
+0
+1
+-1
+0
+0
+-1
+0
+-1
+1
+0
+1
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+1
+-1
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+-1
+-1
+-1
+0
+0
+-1
+0
+0
+-1
+1
+0
+0
+-1
+0
+1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+-1
+-1
+0
+1
+0
+-1
+0
+0
+0
+0
+0
+0
+1
+-1
+1
+0
+1
+-1
+0
+1
+-1
+1
+-1
+0
+1
+0
+1
+1
+0
+0
+0
+0
+0
+1
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+-1
+0
+-1
+1
+0
+0
+-1
+-1
+0
+1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+-1
+-1
+0
+0
+0
+-1
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+-1
+0
+1
+0
+0
+-1
+0
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+1
+0
+0
+1
+0
+1
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+-1
+0
+1
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+-1
+1
+0
+0
+1
+0
+0
+1
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+1
+0
+-1
+-1
+1
+0
+0
+0
+-1
+0
+1
+0
+-1
+0
+-1
+0
\ No newline at end of file
diff --git a/data/graphs.DarkMaze/in_10_0 b/data/graphs.DarkMaze/in_10_0
new file mode 100644
index 0000000..a3def73
--- /dev/null
+++ b/data/graphs.DarkMaze/in_10_0
@@ -0,0 +1,178 @@
+10
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+2
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+10
+5 2 5 6
+5
+52
+53
+54
+55
+56
+4 2 5 6
+6
+42
+43
+53
+54
+55
+56
+3 5 5 6
+4
+35
+45
+55
+56
+7 2 5 6
+7
+72
+73
+74
+75
+76
+66
+56
+1 3 5 6
+10
+13
+3
+4
+5
+15
+25
+35
+45
+46
+56
+8 5 5 6
+5
+85
+86
+76
+66
+56
+8 6 5 6
+4
+86
+76
+66
+56
+3 5 5 6
+4
+35
+45
+55
+56
+5 4 5 6
+3
+54
+55
+56
+1 8 5 6
+7
+18
+17
+16
+26
+36
+46
+56
diff --git a/data/graphs.DarkMaze/in_10_1 b/data/graphs.DarkMaze/in_10_1
new file mode 100644
index 0000000..e2962c3
--- /dev/null
+++ b/data/graphs.DarkMaze/in_10_1
@@ -0,0 +1,189 @@
+10
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+2
+0
+-1
+-1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+10
+1 5 8 7
+10
+15
+25
+26
+36
+46
+56
+66
+76
+86
+87
+2 4 8 7
+10
+24
+34
+35
+45
+55
+56
+66
+67
+77
+87
+4 5 8 7
+7
+45
+55
+56
+57
+67
+77
+87
+7 8 8 7
+3
+78
+77
+87
+7 9 8 7
+4
+79
+78
+77
+87
+3 9 8 7
+10
+39
+38
+37
+36
+46
+56
+66
+67
+77
+87
+1 3 8 7
+14
+13
+3
+4
+5
+15
+25
+35
+45
+46
+56
+57
+67
+77
+87
+4 8 8 7
+0
+8 0 8 7
+0
+9 1 8 7
+8
+91
+92
+93
+94
+95
+85
+86
+87
diff --git a/data/graphs.DarkMaze/in_10_2 b/data/graphs.DarkMaze/in_10_2
new file mode 100644
index 0000000..3aab2ad
--- /dev/null
+++ b/data/graphs.DarkMaze/in_10_2
@@ -0,0 +1,181 @@
+10
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+2
+1
+-1
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+10
+0 8 4 2
+0
+2 3 4 2
+4
+23
+22
+32
+42
+7 6 4 2
+8
+76
+75
+74
+73
+63
+53
+52
+42
+5 0 4 2
+4
+50
+51
+52
+42
+8 6 4 2
+9
+86
+76
+75
+74
+64
+63
+53
+52
+42
+6 0 4 2
+5
+60
+61
+62
+52
+42
+8 7 4 2
+10
+87
+86
+85
+75
+74
+73
+63
+53
+52
+42
+1 5 4 2
+9
+15
+25
+35
+45
+55
+54
+53
+52
+42
+6 3 4 2
+4
+63
+62
+52
+42
+7 3 4 2
+5
+73
+72
+62
+52
+42
diff --git a/data/graphs.DarkMaze/in_10_3 b/data/graphs.DarkMaze/in_10_3
new file mode 100644
index 0000000..426544f
--- /dev/null
+++ b/data/graphs.DarkMaze/in_10_3
@@ -0,0 +1,164 @@
+10
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+2
+-1
+1
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+10
+4 8 2 0
+0
+1 0 2 0
+2
+10
+20
+0 2 2 0
+5
+2
+12
+11
+10
+20
+1 0 2 0
+2
+10
+20
+1 3 2 0
+5
+13
+12
+11
+10
+20
+1 0 2 0
+2
+10
+20
+5 2 2 0
+12
+52
+42
+43
+33
+23
+13
+3
+2
+1
+11
+10
+20
+4 4 2 0
+0
+0 8 2 0
+0
+4 0 2 0
+13
+40
+41
+31
+32
+33
+23
+13
+3
+2
+1
+0
+10
+20
diff --git a/data/graphs.DarkMaze/in_10_4 b/data/graphs.DarkMaze/in_10_4
new file mode 100644
index 0000000..1794c8b
--- /dev/null
+++ b/data/graphs.DarkMaze/in_10_4
@@ -0,0 +1,201 @@
+10
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+2
+1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+10
+6 7 7 1
+10
+67
+66
+76
+75
+74
+73
+83
+82
+81
+71
+6 9 7 1
+12
+69
+68
+78
+77
+76
+75
+74
+73
+83
+82
+81
+71
+1 7 7 1
+13
+17
+16
+15
+25
+35
+45
+55
+54
+53
+63
+62
+61
+71
+1 4 7 1
+0
+7 5 7 1
+7
+75
+65
+64
+63
+62
+61
+71
+8 9 7 1
+0
+9 5 7 1
+7
+95
+94
+93
+92
+91
+81
+71
+3 6 7 1
+10
+36
+46
+45
+55
+54
+53
+52
+51
+61
+71
+4 2 7 1
+5
+42
+52
+62
+61
+71
+2 9 7 1
+14
+29
+28
+27
+37
+36
+46
+45
+55
+54
+53
+52
+62
+61
+71
diff --git a/data/graphs.DarkMaze/in_10_5 b/data/graphs.DarkMaze/in_10_5
new file mode 100644
index 0000000..6038b7a
--- /dev/null
+++ b/data/graphs.DarkMaze/in_10_5
@@ -0,0 +1,201 @@
+10
+13
+0
+0
+0
+0
+0
+0
+2
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+10
+9 5 0 6
+11
+95
+85
+86
+76
+66
+56
+46
+36
+26
+16
+6
+6 4 0 6
+9
+64
+65
+55
+45
+35
+25
+15
+5
+6
+0 2 0 6
+5
+2
+3
+4
+5
+6
+3 8 0 6
+6
+38
+28
+27
+17
+7
+6
+9 6 0 6
+0
+5 9 0 6
+9
+59
+58
+57
+56
+46
+36
+26
+16
+6
+2 3 0 6
+6
+23
+24
+25
+15
+5
+6
+8 8 0 6
+11
+88
+78
+68
+67
+57
+56
+46
+36
+26
+16
+6
+1 0 0 6
+8
+10
+11
+1
+2
+3
+4
+5
+6
+6 0 0 6
+13
+60
+61
+62
+63
+64
+54
+55
+45
+35
+25
+15
+5
+6
diff --git a/data/graphs.DarkMaze/in_10_6 b/data/graphs.DarkMaze/in_10_6
new file mode 100644
index 0000000..fc1e6e3
--- /dev/null
+++ b/data/graphs.DarkMaze/in_10_6
@@ -0,0 +1,198 @@
+10
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+2
+1
+0
+0
+-1
+1
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+10
+2 7 1 7
+2
+27
+17
+0 1 1 7
+8
+1
+2
+3
+4
+5
+6
+16
+17
+2 6 1 7
+3
+26
+16
+17
+5 4 1 7
+8
+54
+55
+45
+35
+25
+15
+16
+17
+6 2 1 7
+11
+62
+63
+64
+54
+55
+45
+35
+25
+15
+16
+17
+3 8 1 7
+4
+38
+28
+27
+17
+0 5 1 7
+4
+5
+6
+7
+17
+6 0 1 7
+13
+60
+61
+62
+63
+64
+54
+55
+45
+35
+25
+26
+27
+17
+9 5 1 7
+11
+95
+85
+86
+76
+66
+56
+46
+36
+26
+27
+17
+9 5 1 7
+11
+95
+85
+86
+76
+66
+56
+46
+36
+26
+27
+17
diff --git a/data/graphs.DarkMaze/in_10_7 b/data/graphs.DarkMaze/in_10_7
new file mode 100644
index 0000000..cf9cceb
--- /dev/null
+++ b/data/graphs.DarkMaze/in_10_7
@@ -0,0 +1,162 @@
+10
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+2
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+10
+4 2 6 7
+8
+42
+43
+53
+54
+55
+56
+66
+67
+4 7 6 7
+3
+47
+57
+67
+4 7 6 7
+3
+47
+57
+67
+2 5 6 7
+7
+25
+35
+45
+55
+56
+66
+67
+4 7 6 7
+3
+47
+57
+67
+8 0 6 7
+0
+9 0 6 7
+0
+9 4 6 7
+7
+94
+95
+85
+86
+76
+66
+67
+5 8 6 7
+3
+58
+68
+67
+3 6 6 7
+5
+36
+46
+56
+57
+67
diff --git a/data/graphs.DarkMaze/in_10_8 b/data/graphs.DarkMaze/in_10_8
new file mode 100644
index 0000000..c3cfdba
--- /dev/null
+++ b/data/graphs.DarkMaze/in_10_8
@@ -0,0 +1,224 @@
+10
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+0
+0
+0
+2
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+10
+8 2 2 8
+13
+82
+72
+62
+63
+53
+54
+55
+45
+35
+36
+37
+38
+28
+6 2 2 8
+11
+62
+63
+64
+54
+55
+45
+35
+25
+26
+27
+28
+7 5 2 8
+9
+75
+65
+55
+56
+46
+36
+37
+38
+28
+9 2 2 8
+14
+92
+93
+94
+95
+85
+86
+76
+66
+56
+46
+36
+37
+38
+28
+8 3 2 8
+12
+83
+73
+74
+64
+54
+55
+45
+35
+36
+37
+38
+28
+4 1 2 8
+12
+41
+42
+43
+53
+54
+55
+45
+35
+36
+37
+38
+28
+4 1 2 8
+12
+41
+42
+43
+53
+54
+55
+45
+35
+36
+37
+38
+28
+8 8 2 8
+11
+88
+78
+68
+67
+57
+56
+46
+36
+37
+38
+28
+8 4 2 8
+0
+5 5 2 8
+7
+55
+45
+35
+36
+37
+38
+28
diff --git a/data/graphs.DarkMaze/in_10_9 b/data/graphs.DarkMaze/in_10_9
new file mode 100644
index 0000000..068e063
--- /dev/null
+++ b/data/graphs.DarkMaze/in_10_9
@@ -0,0 +1,185 @@
+10
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+10
+3 5 6 4
+5
+35
+45
+55
+54
+64
+4 3 6 4
+4
+43
+53
+63
+64
+6 3 6 4
+2
+63
+64
+3 1 6 4
+7
+31
+41
+51
+52
+53
+63
+64
+5 2 6 4
+4
+52
+53
+54
+64
+0 9 6 4
+12
+9
+19
+29
+28
+27
+26
+36
+46
+56
+55
+54
+64
+5 7 6 4
+5
+57
+56
+55
+54
+64
+0 6 6 4
+9
+6
+16
+26
+36
+46
+56
+55
+54
+64
+3 4 6 4
+6
+34
+35
+45
+55
+54
+64
+2 7 6 4
+8
+27
+37
+36
+46
+56
+55
+54
+64
diff --git a/data/graphs.DarkMaze/in_20_0 b/data/graphs.DarkMaze/in_20_0
new file mode 100644
index 0000000..ddaf08d
--- /dev/null
+++ b/data/graphs.DarkMaze/in_20_0
@@ -0,0 +1,546 @@
+20
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+0
+0
+-1
+0
+-1
+-1
+0
+0
+-1
+0
+1
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+-1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+1
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+-1
+0
+1
+1
+-1
+-1
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+-1
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+0
+0
+0
+-1
+-1
+1
+0
+0
+1
+0
+0
+-1
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+1
+1
+0
+0
+0
+1
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+2
+1
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+-1
+0
+-1
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+10
+19 5 16 9
+8
+385
+365
+366
+346
+326
+327
+328
+329
+11 8 16 9
+7
+228
+248
+268
+288
+308
+309
+329
+17 3 16 9
+8
+343
+344
+324
+325
+326
+327
+328
+329
+5 17 16 9
+20
+117
+137
+157
+156
+176
+175
+195
+194
+214
+213
+233
+232
+252
+251
+250
+270
+269
+289
+309
+329
+15 14 16 9
+0
+3 9 16 9
+20
+69
+68
+88
+87
+86
+106
+126
+146
+147
+167
+187
+207
+227
+247
+267
+287
+288
+308
+328
+329
+9 15 16 9
+14
+195
+194
+214
+213
+212
+232
+252
+251
+271
+291
+311
+310
+309
+329
+0 18 16 9
+26
+18
+38
+37
+57
+56
+55
+75
+95
+115
+135
+155
+175
+195
+194
+214
+213
+212
+232
+252
+251
+271
+291
+311
+310
+309
+329
+0 12 16 9
+20
+12
+32
+31
+51
+71
+91
+111
+131
+151
+171
+191
+211
+210
+230
+250
+270
+269
+289
+309
+329
+15 2 16 9
+0
diff --git a/data/graphs.DarkMaze/in_20_1 b/data/graphs.DarkMaze/in_20_1
new file mode 100644
index 0000000..9ec54c9
--- /dev/null
+++ b/data/graphs.DarkMaze/in_20_1
@@ -0,0 +1,518 @@
+20
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+0
+0
+-1
+0
+-1
+-1
+0
+0
+-1
+0
+1
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+-1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+1
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+-1
+0
+1
+1
+-1
+-1
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+2
+0
+-1
+0
+-1
+0
+-1
+-1
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+0
+0
+0
+-1
+-1
+1
+0
+0
+1
+0
+0
+-1
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+1
+1
+0
+0
+0
+1
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+-1
+0
+-1
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+10
+5 17 10 14
+9
+117
+137
+157
+156
+176
+175
+174
+194
+214
+4 4 10 14
+0
+11 0 10 14
+0
+7 10 10 14
+8
+150
+151
+171
+191
+192
+212
+213
+214
+0 7 10 14
+18
+7
+27
+47
+67
+68
+69
+70
+71
+91
+111
+131
+151
+171
+172
+192
+212
+213
+214
+7 2 10 14
+20
+142
+143
+144
+145
+146
+147
+148
+128
+129
+130
+110
+130
+131
+132
+133
+153
+173
+174
+194
+214
+13 6 10 14
+12
+266
+267
+268
+269
+270
+271
+251
+252
+232
+233
+234
+214
+4 18 10 14
+0
+1 16 10 14
+12
+36
+56
+55
+75
+95
+115
+135
+155
+175
+174
+194
+214
+17 6 10 14
+16
+346
+347
+348
+328
+329
+309
+289
+269
+270
+250
+251
+252
+232
+233
+234
+214
diff --git a/data/graphs.DarkMaze/in_20_2 b/data/graphs.DarkMaze/in_20_2
new file mode 100644
index 0000000..e9df8e3
--- /dev/null
+++ b/data/graphs.DarkMaze/in_20_2
@@ -0,0 +1,524 @@
+20
+13
+0
+0
+0
+0
+0
+0
+0
+0
+2
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+0
+0
+-1
+0
+-1
+-1
+0
+0
+-1
+0
+1
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+-1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+1
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+-1
+0
+1
+1
+-1
+-1
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+-1
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+0
+0
+0
+-1
+-1
+1
+0
+0
+1
+0
+0
+-1
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+1
+1
+0
+0
+0
+1
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+-1
+0
+-1
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+10
+9 8 0 8
+0
+2 18 0 8
+13
+58
+57
+56
+55
+54
+53
+52
+32
+31
+11
+10
+9
+8
+3 5 0 8
+7
+65
+45
+46
+26
+27
+28
+8
+6 19 0 8
+0
+13 4 0 8
+20
+264
+265
+245
+225
+205
+206
+186
+187
+167
+147
+146
+126
+106
+86
+66
+46
+26
+27
+28
+8
+1 12 0 8
+6
+32
+12
+11
+10
+9
+8
+2 2 0 8
+9
+42
+22
+2
+3
+4
+5
+6
+7
+8
+11 15 0 8
+19
+235
+234
+214
+194
+174
+173
+153
+133
+113
+93
+73
+72
+71
+51
+31
+11
+10
+9
+8
+17 17 0 8
+27
+357
+356
+336
+316
+296
+276
+256
+255
+235
+234
+214
+194
+174
+173
+153
+133
+113
+93
+92
+72
+71
+51
+31
+11
+10
+9
+8
+11 11 0 8
+0
diff --git a/data/graphs.DarkMaze/in_20_3 b/data/graphs.DarkMaze/in_20_3
new file mode 100644
index 0000000..04606f6
--- /dev/null
+++ b/data/graphs.DarkMaze/in_20_3
@@ -0,0 +1,559 @@
+20
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+0
+0
+-1
+0
+-1
+-1
+0
+0
+-1
+0
+1
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+-1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+1
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+-1
+0
+1
+1
+-1
+-1
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+-1
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+0
+0
+0
+-1
+-1
+1
+0
+0
+1
+0
+0
+-1
+-1
+0
+0
+0
+1
+2
+0
+0
+0
+0
+1
+1
+1
+0
+0
+0
+1
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+-1
+0
+-1
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+10
+16 6 13 7
+5
+326
+306
+307
+287
+267
+4 8 13 7
+13
+88
+87
+107
+106
+126
+146
+147
+167
+187
+207
+227
+247
+267
+2 1 13 7
+20
+41
+61
+81
+101
+100
+120
+140
+141
+142
+143
+144
+145
+146
+147
+167
+187
+207
+227
+247
+267
+19 8 13 7
+0
+1 14 13 7
+20
+34
+54
+74
+94
+93
+92
+91
+111
+110
+130
+129
+128
+148
+147
+167
+187
+207
+227
+247
+267
+2 14 13 7
+19
+54
+74
+94
+93
+92
+91
+111
+110
+130
+129
+128
+148
+147
+167
+187
+207
+227
+247
+267
+0 7 13 7
+16
+7
+27
+26
+46
+66
+86
+106
+126
+146
+147
+167
+187
+207
+227
+247
+267
+2 3 13 7
+16
+43
+63
+64
+65
+85
+86
+106
+126
+146
+147
+167
+187
+207
+227
+247
+267
+1 13 13 7
+19
+33
+53
+73
+93
+92
+91
+111
+110
+130
+129
+128
+148
+147
+167
+187
+207
+227
+247
+267
+10 11 13 7
+8
+211
+210
+230
+229
+228
+248
+247
+267
diff --git a/data/graphs.DarkMaze/in_20_4 b/data/graphs.DarkMaze/in_20_4
new file mode 100644
index 0000000..90b647e
--- /dev/null
+++ b/data/graphs.DarkMaze/in_20_4
@@ -0,0 +1,572 @@
+20
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+0
+0
+-1
+0
+-1
+-1
+0
+0
+-1
+0
+1
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+-1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+2
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+1
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+-1
+0
+1
+1
+-1
+-1
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+-1
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+0
+0
+0
+-1
+-1
+1
+0
+0
+1
+0
+0
+-1
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+1
+1
+0
+0
+0
+1
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+-1
+0
+-1
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+10
+3 2 7 17
+20
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+91
+92
+93
+94
+95
+115
+135
+155
+156
+157
+17 6 7 17
+22
+346
+347
+327
+307
+287
+288
+268
+269
+249
+250
+251
+252
+232
+233
+234
+214
+194
+174
+175
+176
+156
+157
+12 5 7 17
+18
+245
+246
+247
+248
+249
+250
+251
+252
+232
+212
+192
+172
+173
+174
+175
+176
+177
+157
+11 17 7 17
+11
+237
+236
+235
+234
+214
+194
+174
+175
+155
+156
+157
+12 3 7 17
+22
+243
+223
+224
+225
+245
+246
+247
+248
+249
+250
+251
+252
+232
+212
+192
+172
+173
+174
+175
+176
+177
+157
+12 8 7 17
+15
+248
+249
+250
+251
+252
+232
+212
+192
+172
+173
+174
+175
+176
+177
+157
+4 14 7 17
+7
+94
+114
+115
+116
+117
+137
+157
+11 18 7 17
+0
+4 2 7 17
+21
+82
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+91
+92
+93
+94
+95
+115
+135
+155
+156
+157
+0 18 7 17
+13
+18
+38
+37
+57
+56
+55
+75
+95
+115
+116
+117
+137
+157
diff --git a/data/graphs.DarkMaze/in_20_5 b/data/graphs.DarkMaze/in_20_5
new file mode 100644
index 0000000..7952c76
--- /dev/null
+++ b/data/graphs.DarkMaze/in_20_5
@@ -0,0 +1,514 @@
+20
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+0
+0
+-1
+0
+-1
+-1
+0
+0
+-1
+0
+1
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+-1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+1
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+-1
+0
+1
+1
+-1
+-1
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+-1
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+2
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+0
+0
+0
+-1
+-1
+1
+0
+0
+1
+0
+0
+-1
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+1
+1
+0
+0
+0
+1
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+-1
+0
+-1
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+10
+17 5 11 12
+0
+14 2 11 12
+0
+2 0 11 12
+26
+40
+20
+0
+1
+2
+3
+4
+5
+25
+45
+46
+66
+67
+68
+69
+70
+71
+91
+111
+131
+151
+171
+172
+192
+212
+232
+13 4 11 12
+13
+264
+265
+245
+246
+247
+267
+268
+269
+270
+271
+251
+252
+232
+7 6 11 12
+13
+146
+147
+148
+128
+129
+130
+131
+151
+171
+172
+192
+212
+232
+4 3 11 12
+19
+83
+63
+64
+65
+66
+67
+68
+69
+70
+71
+91
+111
+131
+151
+171
+172
+192
+212
+232
+13 9 11 12
+6
+269
+249
+250
+251
+252
+232
+8 12 11 12
+4
+172
+192
+212
+232
+14 6 11 12
+10
+286
+266
+267
+268
+269
+270
+250
+251
+252
+232
+6 7 11 12
+0
diff --git a/data/graphs.DarkMaze/in_20_6 b/data/graphs.DarkMaze/in_20_6
new file mode 100644
index 0000000..66f85fe
--- /dev/null
+++ b/data/graphs.DarkMaze/in_20_6
@@ -0,0 +1,605 @@
+20
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+0
+0
+-1
+0
+-1
+-1
+0
+0
+-1
+0
+1
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+-1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+1
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+-1
+0
+1
+1
+-1
+-1
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+-1
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+0
+0
+0
+-1
+-1
+1
+0
+0
+1
+0
+0
+-1
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+1
+2
+0
+0
+0
+1
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+-1
+0
+-1
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+10
+19 11 13 14
+20
+391
+371
+351
+350
+330
+310
+290
+270
+271
+272
+252
+232
+233
+234
+235
+236
+256
+276
+275
+274
+16 8 13 14
+18
+328
+329
+309
+289
+269
+249
+250
+251
+252
+232
+233
+234
+235
+236
+256
+276
+275
+274
+4 12 13 14
+20
+92
+93
+94
+95
+115
+135
+136
+156
+176
+175
+174
+194
+214
+215
+235
+236
+256
+276
+275
+274
+17 16 13 14
+7
+356
+336
+316
+296
+295
+275
+274
+14 16 13 14
+4
+296
+295
+275
+274
+12 8 13 14
+14
+248
+249
+250
+251
+252
+232
+233
+234
+235
+236
+256
+276
+275
+274
+9 2 13 14
+23
+182
+183
+203
+223
+224
+225
+245
+246
+247
+248
+249
+250
+251
+252
+232
+233
+234
+235
+236
+256
+276
+275
+274
+12 2 13 14
+22
+242
+243
+223
+224
+225
+245
+246
+247
+248
+249
+250
+251
+252
+232
+233
+234
+235
+236
+256
+276
+275
+274
+5 7 13 14
+24
+107
+106
+126
+146
+147
+167
+187
+207
+208
+228
+229
+249
+250
+251
+252
+232
+233
+234
+235
+236
+256
+276
+275
+274
+14 0 13 14
+30
+280
+300
+320
+321
+322
+342
+343
+344
+324
+325
+305
+306
+307
+287
+267
+268
+269
+249
+250
+251
+252
+232
+233
+234
+235
+236
+256
+276
+275
+274
diff --git a/data/graphs.DarkMaze/in_20_7 b/data/graphs.DarkMaze/in_20_7
new file mode 100644
index 0000000..cb3632a
--- /dev/null
+++ b/data/graphs.DarkMaze/in_20_7
@@ -0,0 +1,563 @@
+20
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+0
+0
+-1
+0
+-1
+-1
+0
+0
+-1
+0
+1
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+-1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+1
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+-1
+0
+1
+1
+-1
+-1
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+-1
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+0
+0
+0
+-1
+-1
+1
+0
+0
+1
+0
+0
+-1
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+1
+1
+0
+0
+0
+1
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+0
+-1
+-1
+-1
+0
+-1
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+10
+13 4 19 4
+7
+264
+284
+304
+324
+344
+364
+384
+0 18 19 4
+36
+18
+38
+37
+57
+56
+55
+75
+95
+115
+116
+136
+156
+176
+175
+174
+194
+214
+213
+233
+232
+252
+251
+250
+249
+269
+268
+267
+287
+286
+306
+326
+346
+366
+365
+364
+384
+19 6 19 4
+0
+12 9 19 4
+13
+249
+269
+268
+267
+287
+286
+306
+305
+304
+324
+344
+364
+384
+0 0 19 4
+26
+0
+20
+40
+41
+61
+81
+101
+100
+120
+140
+160
+161
+181
+182
+183
+203
+223
+243
+263
+264
+284
+304
+324
+344
+364
+384
+15 0 19 4
+9
+300
+320
+321
+341
+342
+343
+363
+383
+384
+14 4 19 4
+6
+284
+304
+324
+344
+364
+384
+6 0 19 4
+18
+120
+140
+141
+142
+143
+163
+183
+203
+223
+243
+263
+264
+284
+304
+324
+344
+364
+384
+4 11 19 4
+25
+91
+111
+131
+151
+171
+191
+211
+212
+232
+252
+251
+250
+249
+269
+268
+267
+287
+286
+306
+326
+346
+366
+365
+364
+384
+4 9 19 4
+0
diff --git a/data/graphs.DarkMaze/in_20_8 b/data/graphs.DarkMaze/in_20_8
new file mode 100644
index 0000000..48d3327
--- /dev/null
+++ b/data/graphs.DarkMaze/in_20_8
@@ -0,0 +1,526 @@
+20
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+2
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+0
+0
+-1
+0
+-1
+-1
+0
+0
+-1
+0
+1
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+-1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+1
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+-1
+0
+1
+1
+-1
+-1
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+-1
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+0
+0
+0
+-1
+-1
+1
+0
+0
+1
+0
+0
+-1
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+1
+1
+0
+0
+0
+1
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+-1
+0
+-1
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+10
+7 4 4 10
+12
+144
+145
+146
+147
+148
+128
+129
+130
+131
+111
+91
+90
+13 13 4 10
+13
+273
+272
+252
+232
+212
+192
+172
+171
+151
+131
+111
+91
+90
+13 5 4 10
+19
+265
+266
+267
+268
+248
+249
+250
+251
+252
+232
+212
+211
+191
+171
+151
+131
+111
+91
+90
+4 5 4 10
+8
+85
+65
+66
+67
+68
+69
+70
+90
+4 15 4 10
+6
+95
+94
+93
+92
+91
+90
+17 0 4 10
+0
+15 12 4 10
+14
+312
+292
+272
+252
+232
+212
+192
+172
+171
+151
+131
+111
+91
+90
+3 9 4 10
+3
+69
+70
+90
+16 5 4 10
+22
+325
+305
+306
+286
+287
+267
+247
+248
+249
+250
+251
+252
+232
+212
+192
+172
+171
+151
+131
+111
+91
+90
+7 10 4 10
+6
+150
+130
+131
+111
+91
+90
diff --git a/data/graphs.DarkMaze/in_20_9 b/data/graphs.DarkMaze/in_20_9
new file mode 100644
index 0000000..1a1b1c6
--- /dev/null
+++ b/data/graphs.DarkMaze/in_20_9
@@ -0,0 +1,557 @@
+20
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+0
+1
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+0
+0
+1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+-1
+-1
+-1
+-1
+0
+0
+-1
+0
+-1
+-1
+0
+0
+-1
+0
+1
+0
+-1
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+-1
+1
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+1
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+-1
+0
+1
+1
+-1
+-1
+0
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+0
+-1
+0
+-1
+0
+-1
+-1
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+2
+0
+-1
+0
+-1
+0
+0
+0
+-1
+0
+0
+0
+0
+1
+0
+0
+0
+-1
+-1
+1
+0
+0
+1
+0
+0
+-1
+-1
+0
+0
+0
+1
+0
+0
+0
+0
+0
+1
+1
+1
+0
+0
+0
+1
+0
+0
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+-1
+1
+0
+0
+0
+0
+-1
+0
+0
+-1
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+1
+-1
+0
+-1
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+0
+-1
+0
+1
+0
+0
+0
+0
+-1
+0
+1
+0
+1
+0
+-1
+0
+0
+1
+-1
+0
+0
+0
+0
+0
+1
+0
+-1
+0
+0
+-1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+-1
+-1
+0
+-1
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+10
+11 3 11 16
+18
+223
+224
+225
+245
+246
+266
+267
+268
+269
+270
+250
+251
+252
+232
+233
+234
+235
+236
+10 17 11 16
+3
+217
+237
+236
+17 7 11 16
+16
+347
+348
+349
+329
+309
+289
+269
+270
+250
+251
+252
+232
+233
+234
+235
+236
+10 12 11 16
+6
+212
+213
+214
+234
+235
+236
+9 4 11 16
+19
+184
+204
+224
+225
+245
+265
+266
+267
+268
+269
+270
+271
+251
+252
+232
+233
+234
+235
+236
+14 10 11 16
+10
+290
+270
+271
+251
+252
+232
+233
+234
+235
+236
+18 9 11 16
+15
+369
+349
+329
+309
+289
+269
+270
+250
+251
+252
+232
+233
+234
+235
+236
+17 13 11 16
+10
+353
+354
+355
+335
+315
+295
+296
+276
+256
+236
+17 6 11 16
+17
+346
+347
+348
+328
+329
+309
+289
+269
+270
+250
+251
+252
+232
+233
+234
+235
+236
+18 4 11 16
+20
+364
+344
+324
+304
+284
+264
+265
+266
+267
+268
+269
+270
+271
+251
+252
+232
+233
+234
+235
+236
diff --git a/data/graphs.DarkMaze/in_5_0 b/data/graphs.DarkMaze/in_5_0
new file mode 100644
index 0000000..a957937
--- /dev/null
+++ b/data/graphs.DarkMaze/in_5_0
@@ -0,0 +1,94 @@
+5
+13
+2
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+10
+4 0 0 0
+5
+20
+15
+10
+5
+0
+3 0 0 0
+4
+15
+10
+5
+0
+4 2 0 0
+7
+22
+17
+16
+11
+10
+5
+0
+0 0 0 0
+0
+2 2 0 0
+5
+12
+11
+6
+5
+0
+2 2 0 0
+5
+12
+11
+6
+5
+0
+4 0 0 0
+5
+20
+15
+10
+5
+0
+3 1 0 0
+5
+16
+11
+6
+5
+0
+0 4 0 0
+5
+4
+3
+2
+1
+0
+2 2 0 0
+5
+12
+11
+6
+5
+0
diff --git a/data/graphs.DarkMaze/in_5_1 b/data/graphs.DarkMaze/in_5_1
new file mode 100644
index 0000000..5f29f32
--- /dev/null
+++ b/data/graphs.DarkMaze/in_5_1
@@ -0,0 +1,91 @@
+5
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+2
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+10
+0 2 2 4
+5
+2
+3
+4
+9
+14
+1 2 2 4
+4
+7
+12
+13
+14
+1 2 2 4
+4
+7
+12
+13
+14
+1 1 2 4
+7
+6
+1
+2
+3
+4
+9
+14
+3 4 2 4
+2
+19
+14
+2 3 2 4
+2
+13
+14
+2 2 2 4
+3
+12
+13
+14
+3 3 2 4
+3
+18
+13
+14
+2 3 2 4
+2
+13
+14
+4 0 2 4
+11
+20
+15
+10
+11
+6
+7
+2
+3
+4
+9
+14
diff --git a/data/graphs.DarkMaze/in_5_2 b/data/graphs.DarkMaze/in_5_2
new file mode 100644
index 0000000..49c119f
--- /dev/null
+++ b/data/graphs.DarkMaze/in_5_2
@@ -0,0 +1,89 @@
+5
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+2
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+10
+3 3 2 0
+5
+18
+17
+16
+15
+10
+4 4 2 0
+7
+24
+19
+18
+17
+16
+15
+10
+1 1 2 0
+3
+6
+11
+10
+3 4 2 0
+6
+19
+18
+17
+16
+11
+10
+2 0 2 0
+0
+4 2 2 0
+5
+22
+17
+16
+11
+10
+4 2 2 0
+5
+22
+17
+16
+11
+10
+0 0 2 0
+3
+0
+5
+10
+3 0 2 0
+2
+15
+10
+0 2 2 0
+5
+2
+7
+6
+11
+10
diff --git a/data/graphs.DarkMaze/in_5_3 b/data/graphs.DarkMaze/in_5_3
new file mode 100644
index 0000000..4b7910d
--- /dev/null
+++ b/data/graphs.DarkMaze/in_5_3
@@ -0,0 +1,107 @@
+5
+13
+0
+0
+0
+0
+2
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+10
+4 3 0 4
+10
+23
+22
+17
+16
+11
+6
+7
+2
+3
+4
+2 4 0 4
+0
+1 0 0 4
+6
+5
+6
+7
+2
+3
+4
+4 4 0 4
+11
+24
+19
+18
+17
+16
+11
+6
+7
+2
+3
+4
+1 0 0 4
+6
+5
+6
+7
+2
+3
+4
+4 0 0 4
+9
+20
+15
+10
+11
+6
+7
+2
+3
+4
+1 4 0 4
+2
+9
+4
+2 2 0 4
+5
+12
+7
+2
+3
+4
+0 1 0 4
+4
+1
+2
+3
+4
+2 1 0 4
+6
+11
+12
+7
+2
+3
+4
diff --git a/data/graphs.DarkMaze/in_5_4 b/data/graphs.DarkMaze/in_5_4
new file mode 100644
index 0000000..5764f5a
--- /dev/null
+++ b/data/graphs.DarkMaze/in_5_4
@@ -0,0 +1,79 @@
+5
+13
+0
+0
+0
+2
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+10
+0 0 0 3
+4
+0
+1
+2
+3
+2 1 0 3
+5
+11
+12
+7
+2
+3
+0 4 0 3
+2
+4
+3
+2 2 0 3
+4
+12
+7
+2
+3
+0 3 0 3
+0
+1 3 0 3
+0
+0 0 0 3
+4
+0
+1
+2
+3
+4 1 0 3
+0
+3 1 0 3
+6
+16
+11
+6
+7
+2
+3
+3 1 0 3
+6
+16
+11
+6
+7
+2
+3
diff --git a/data/graphs.DarkMaze/in_5_5 b/data/graphs.DarkMaze/in_5_5
new file mode 100644
index 0000000..6434508
--- /dev/null
+++ b/data/graphs.DarkMaze/in_5_5
@@ -0,0 +1,66 @@
+5
+13
+0
+0
+0
+0
+0
+0
+2
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+10
+4 2 1 1
+5
+22
+17
+16
+11
+6
+2 0 1 1
+3
+10
+11
+6
+4 1 1 1
+0
+1 1 1 1
+0
+2 0 1 1
+3
+10
+11
+6
+2 2 1 1
+3
+12
+11
+6
+2 4 1 1
+0
+1 0 1 1
+2
+5
+6
+4 1 1 1
+0
+1 0 1 1
+2
+5
+6
diff --git a/data/graphs.DarkMaze/in_5_6 b/data/graphs.DarkMaze/in_5_6
new file mode 100644
index 0000000..f2fd137
--- /dev/null
+++ b/data/graphs.DarkMaze/in_5_6
@@ -0,0 +1,83 @@
+5
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+2
+0
+-1
+1
+0
+1
+10
+3 2 3 4
+3
+17
+18
+19
+1 4 3 4
+11
+9
+4
+3
+2
+7
+6
+11
+16
+17
+18
+19
+1 3 3 4
+0
+2 4 3 4
+0
+2 0 3 4
+6
+10
+15
+16
+17
+18
+19
+4 1 3 4
+0
+3 3 3 4
+2
+18
+19
+4 2 3 4
+4
+22
+23
+24
+19
+2 1 3 4
+5
+11
+12
+17
+18
+19
+3 1 3 4
+4
+16
+17
+18
+19
diff --git a/data/graphs.DarkMaze/in_5_7 b/data/graphs.DarkMaze/in_5_7
new file mode 100644
index 0000000..1c41a5f
--- /dev/null
+++ b/data/graphs.DarkMaze/in_5_7
@@ -0,0 +1,87 @@
+5
+13
+0
+2
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+0
+1
+10
+3 0 0 1
+5
+15
+10
+5
+0
+1
+1 1 0 1
+2
+6
+1
+1 3 0 1
+0
+4 3 0 1
+7
+23
+22
+17
+16
+11
+6
+1
+0 3 0 1
+3
+3
+2
+1
+3 2 0 1
+5
+17
+12
+7
+2
+1
+0 4 0 1
+4
+4
+3
+2
+1
+2 3 0 1
+5
+13
+12
+7
+2
+1
+2 1 0 1
+3
+11
+6
+1
+2 3 0 1
+5
+13
+12
+7
+2
+1
diff --git a/data/graphs.DarkMaze/in_5_8 b/data/graphs.DarkMaze/in_5_8
new file mode 100644
index 0000000..0a980fc
--- /dev/null
+++ b/data/graphs.DarkMaze/in_5_8
@@ -0,0 +1,116 @@
+5
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+1
+0
+0
+-1
+1
+2
+1
+10
+0 4 4 3
+10
+4
+3
+2
+7
+6
+11
+16
+17
+18
+23
+1 1 4 3
+6
+6
+11
+16
+17
+22
+23
+1 1 4 3
+6
+6
+11
+16
+17
+22
+23
+0 4 4 3
+10
+4
+3
+2
+7
+6
+11
+16
+17
+22
+23
+0 0 4 3
+8
+0
+5
+10
+15
+16
+17
+22
+23
+0 1 4 3
+7
+1
+6
+11
+16
+17
+18
+23
+3 0 4 3
+5
+15
+16
+17
+22
+23
+0 0 4 3
+8
+0
+5
+10
+15
+16
+17
+22
+23
+3 0 4 3
+5
+15
+16
+17
+18
+23
+3 2 4 3
+3
+17
+18
+23
diff --git a/data/graphs.DarkMaze/in_5_9 b/data/graphs.DarkMaze/in_5_9
new file mode 100644
index 0000000..f4b43e2
--- /dev/null
+++ b/data/graphs.DarkMaze/in_5_9
@@ -0,0 +1,108 @@
+5
+13
+0
+0
+0
+0
+0
+0
+0
+0
+-1
+0
+0
+0
+1
+0
+-1
+0
+0
+0
+2
+0
+0
+-1
+1
+0
+1
+10
+2 1 3 3
+4
+11
+12
+17
+18
+1 4 3 3
+10
+9
+4
+3
+2
+7
+6
+11
+16
+17
+18
+3 1 3 3
+3
+16
+17
+18
+1 0 3 3
+6
+5
+10
+11
+16
+17
+18
+4 4 3 3
+3
+24
+19
+18
+1 4 3 3
+10
+9
+4
+3
+2
+7
+6
+11
+16
+17
+18
+0 0 3 3
+7
+0
+5
+10
+15
+16
+17
+18
+1 2 3 3
+4
+7
+12
+17
+18
+0 3 3 3
+8
+3
+2
+1
+6
+11
+16
+17
+18
+4 0 3 3
+5
+20
+15
+16
+17
+18
diff --git a/src/main/java/graphs/DarkMaze.java b/src/main/java/graphs/DarkMaze.java
new file mode 100644
index 0000000..bf42a0e
--- /dev/null
+++ b/src/main/java/graphs/DarkMaze.java
@@ -0,0 +1,303 @@
+package graphs;
+import java.util.*;
+
+/**
+ *
+ * You are lost in a dark maze, and you want to find the exit.
+ * Fortunately you have got a flashlight to light the way.
+ * Your flashlight have a maximal power capacity.
+ * At every move you do you lose one level of your power capacity.
+ * When the power capacity falls to 0 you are definitively stuck in the maze.
+ * In the maze you can find battery that recharge your flashlight to the maximum capacity.
+ * You have to find the shortest path that leads you to the exit.
+ * The maze is represented by a matrix of integers (-1)-0-1-2 of size nxm.
+ * This matrix is a two-dimensional array.
+ * An entry equal to '-1' means that there
+ * is a wall and therefore this position is not accessible,
+ * while '0' means that the position is free.
+ * An entry equal to '1' means that there is battery.
+ * An entry equal to '2' means that there is an EXIT.
+ * We ask you to write a Java code to discover
+ * the shortest path between two coordinates
+ * on this matrix from (x1, y1) to (x2, y2).
+ * The moves can only be vertical (up/down) or horizontal (left/right)
+ * (not diagonal), one step at a time.
+ * The result of the path is an Iterable of
+ * coordinates from the origin to the destination.
+ * These coordinates are represented by integers
+ * between 0 and n * m-1, where an integer 'a'
+ * represents the position x =a/m and y=a%m.
+ * If the start or end position is a wall
+ * or if there is no path, an empty Iterable must be returned.
+ * The same applies if there is no path
+ * between the origin and the destination.
+ */
+public class DarkMaze {
+
+
+ static final int WALL = -1;
+ static final int BATTERY = 1;
+ static final int EXIT = 2;
+
+ static final int[][] pos = new int[][] {{1,0}, {-1,0}, {0,1}, {0,-1}};
+
+ static HashMap> pathsToKeyPoint;
+
+
+ public static List findPath(int startX, int startY, int endX, int endY, int maxPower, int[][] maze){
+ // BEGIN STRIP
+ if (maze[startX][startY] == WALL) return null;
+
+ pathsToKeyPoint = new HashMap<>();
+ int nRow = maze.length;
+ int nCol = maze[0].length;
+ int[] distTo = new int[nRow*nCol];
+ int[] edgeTo = new int[nRow*nCol];
+ int[] powerTrace = new int[nRow*nCol];
+ int startIndex = ind(startX, startY, nCol);
+
+ PriorityQueue PQ = new PriorityQueue<>();
+
+ for (int i = 0; i < nRow*nCol; i++){
+ distTo[i] = Integer.MAX_VALUE;
+ powerTrace[i] = 0;
+ }
+ distTo[startIndex] = 0;
+ powerTrace[startIndex] = maxPower;
+
+
+ PQ.add(new Point(startX, startY, maxPower, 0));
+ while (!PQ.isEmpty()){
+
+ Point current = PQ.poll();
+ int x = current.x;
+ int y = current.y;
+ int indCurrent = ind(x, y, nCol);
+
+ if (x == endX && y == endY) break;
+
+ HashMap> neighbours = getNeighbours(current, maxPower, maze, powerTrace);
+ for ( Point neighbour : neighbours.keySet()) {
+ int neiX = neighbour.x;
+ int neiY = neighbour.y;
+ int indNeighbour = ind(neiX, neiY, nCol);
+
+ if (distTo[indNeighbour] > distTo[indCurrent] + neighbour.cost){
+ distTo[indNeighbour] = distTo[indCurrent] + neighbour.cost;
+ PQ.add(new Point(neiX, neiY, neighbour.power, distTo[indNeighbour]));
+ edgeTo[indNeighbour] = indCurrent;
+ pathsToKeyPoint.put(ind(neighbour.x, neighbour.y, nCol),neighbours.get(neighbour));
+ }
+ }
+ }
+ int currentIndex = ind(endX, endY, nCol);
+
+ if (pathsToKeyPoint.get(currentIndex)==null) return null;
+
+ List path = new ArrayList<>();
+ path.add(ind(endX, endY, nCol));
+
+ while (currentIndex != startIndex){
+ List subPath = pathsToKeyPoint.get(currentIndex);
+ for (int i = 1; i < pathsToKeyPoint.get(currentIndex).size(); i++) {
+ path.add(subPath.get(i));
+ }
+ currentIndex = edgeTo[currentIndex];
+ }
+
+ Collections.reverse(path);
+
+ return path;
+ // END STRIP
+ // STUDENT return null;
+ }
+
+ // BEGIN STRIP
+ /**
+ *
+ * @param start : point where we start
+ * @param maxPower :
+ * @param maze : matrix (m x n)
+ * @param powerTrace :
+ * @return
+ */
+ private static HashMap> getNeighbours(Point start, int maxPower, int[][] maze, int[] powerTrace){
+
+ int nRow = maze.length;
+ int nCol = maze[0].length;
+ int[] distTo = new int[nRow*nCol];
+ int[] edgeTo = new int[nRow*nCol];
+ HashMap> keys = new HashMap<>();
+ PriorityQueue PQ = new PriorityQueue<>();
+
+ for (int i = 0; i < nRow*nCol; i++) distTo[i] = Integer.MAX_VALUE;
+ distTo[ind(start.x, start.y, nCol)] = 0;
+ PQ.add(start);
+
+ while (!PQ.isEmpty()){
+
+ Point current = PQ.poll();
+ int x = current.x;
+ int y = current.y;
+ int indCurrent = ind(x, y, nCol);
+
+ if (maze[x][y] == BATTERY && (start.x != x || start.y != y)){
+ keys.put(new Point(x, y, current.power, current.cost), getPathTo(ind(start.x, start.y, nCol), indCurrent, edgeTo));
+ continue;
+ } else if (maze[x][y] == EXIT){
+ keys.put(new Point(x, y, current.power, current.cost), getPathTo(ind(start.x, start.y, nCol), indCurrent, edgeTo));
+ return keys;
+ }
+
+ for (int w = 0; w < 4; w++) {
+ int neiX = (x + pos[w][0]);
+ int neiY = (y + pos[w][1]);
+
+ if (neiX >= 0 && neiX < nRow && neiY >= 0 && neiY < nCol ) {
+ int indW = ind(neiX,neiY, nCol);
+
+ if ( maze[neiX][neiY] != WALL && (distTo[indW] > distTo[indCurrent] + 1) && (current.power > 1 || maze[neiX][neiY] == BATTERY || maze[neiX][neiY] == EXIT) && (powerTrace[indW] <= current.power-1)){
+
+ int newCost = current.cost+1;
+ int newPower = current.power-1;
+ powerTrace[indW] = newPower;
+
+ if (maze[neiX][neiY] == BATTERY){
+ newCost = current.cost + (maxPower-current.power);
+ newPower = maxPower;
+ }
+
+ PQ.offer(new Point(neiX, neiY, newPower, newCost));
+ distTo[indW] = newCost;
+ edgeTo[indW] = indCurrent;
+ }
+ }
+ }
+ }
+ return keys;
+ }
+
+
+ private static List getPathTo(int src, int well, int[] edgeTo){
+
+ List path = new ArrayList<>();
+
+ int current = well;
+ while (current != src){
+ path.add(current);
+ current = edgeTo[current];
+ }
+ path.add(current);
+
+ return path;
+ }
+ // END STRIP
+
+
+
+
+
+
+
+
+
+
+
+
+
+ public static int ind(int x, int y, int lg) {
+ return x * lg + y;
+ }
+
+ public static int row(int pos, int mCols) {
+ return pos / mCols;
+ }
+
+ public static int col(int pos, int mCols) {
+ return pos % mCols;
+ }
+
+
+
+ // BEGIN STRIP
+ static class Point implements Comparable{
+
+ int x;
+ int y;
+ int power;
+ int cost;
+
+ public Point(int x, int y, int power, int cost){
+ this.x = x;
+ this.y = y;
+ this.power = power;
+ this.cost = cost;
+ }
+
+ @Override
+ public int compareTo(Point o) {
+ return this.cost - o.cost;
+ }
+ }
+ // END STRIP
+
+
+ public static void main(String[] args) {
+
+
+ int[][] maze = {
+ {1, 0, 0, 0, 0, 0, 0, 1},
+ {0, 0, 0, 0, 0, 0,-1,-1},
+ {0, 0, 0, 0, 0, 0, 0, 2}
+ };
+
+ List path = DarkMaze.findPath(0, 0, 2, 7, 8, maze);
+ System.out.println(path);
+ System.out.println(path.size());
+
+
+ int[][] maze1 = {
+ {1, 0, 0, 0, 0, 1, 0},
+ {0,-1,-1, 0, 0, 0, 0},
+ {0,-1, 0, 0,-1,-1,-1},
+ {0, 0, 1, 0, 0,-1, 0},
+ {0, 0, 0,-1, 0, 0, 0},
+ {0, 0, 0, 0, 0,-1, 2},
+ };
+
+ List path2 = DarkMaze.findPath(0, 0, 5, 6, 8, maze1);
+
+ System.out.println(path2);
+ System.out.println(path2.size());
+
+
+
+ int[][] maze3 = {
+ {1, 0, 0, 0, 0, 1, 0},
+ {0,-1,-1, 0, 0, 0, 0},
+ {0,-1, 0, 0,-1,-1,-1},
+ {-1,0, 1, 0, 0,-1, 0},
+ {0, 0, 0,-1, 0, 0, 0},
+ {0, 0, 0, 0, 0,-1, 2},
+ };
+ List path3 = DarkMaze.findPath(0, 0, 5, 6, 8, maze3);
+ System.out.println(path3);
+ System.out.println(path3.size());
+
+
+
+ int[][] maze4 = {
+ {1, 0, 0, 0, 0, 1, 0},
+ {0,-1,-1, 0, 0, 0, 0},
+ {0,-1, 0, 0,-1,-1,-1},
+ {-1,0, 1, 0, 0,-1, 0},
+ {0, 0, 0,-1, 0, 0, 0},
+ {0, 0, 0, 0, 0,-1, 2},
+ };
+ List path4 = DarkMaze.findPath(0, 0, 5, 6, 6, maze3);
+ System.out.println(path4);
+ System.out.println(path4.size());
+
+
+ }
+}
diff --git a/src/main/java/graphs/DarkMazeGenerator.java b/src/main/java/graphs/DarkMazeGenerator.java
new file mode 100644
index 0000000..a83b014
--- /dev/null
+++ b/src/main/java/graphs/DarkMazeGenerator.java
@@ -0,0 +1,99 @@
+package graphs;
+
+
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.PrintWriter;
+import java.util.*;
+
+public class DarkMazeGenerator {
+
+
+ public static void main(String [] args) {
+
+ Random r = new Random(563996);
+ int[] grid_sizes = new int[]{5, 10, 20};
+ for (int grid_size : grid_sizes) {
+
+ for (int instance_id = 0; instance_id < 10; instance_id++) {
+ ArrayList queries = randomQueries(grid_size, 10, r);
+ int [][] matrix = randomMaze(grid_size, 0.3f);
+ String file = "data/graphs.DarkMaze/in_" + grid_size + "_" + instance_id;
+ writeInstance(file, matrix, queries);
+ }
+ }
+ }
+
+ private static int[][] randomMaze(int size, float p){
+ int[][] matrix = new int[size][size];
+ Random rand = new Random(34333);
+ for (int i = 0; i < size; i++) {
+ for (int j = 0; j < size; j++) {
+ float r = rand.nextFloat();
+ if (r >= p ){
+ matrix[i][j] = 0;
+ } else if (r < p && r>= p/3) {
+ matrix[i][j] = -1;
+ } else {
+ matrix[i][j] = 1;
+ }
+ }
+
+ }
+ return matrix;
+ }
+
+ private static ArrayList randomQueries(int grid_size, int number, Random r) {
+ ArrayList queries = new ArrayList<>();
+ for (int i = 0; i < number; i++) {
+ queries.add(new ArrayList());
+ ArrayList q = queries.get(i);
+ for (int j = 0; j <4; j++) {
+ q.add(r.nextInt(grid_size));
+ }
+ }
+ return queries;
+ }
+
+
+ private static void writeInstance(String file, int [][] matrix, ArrayList queries) {
+ Random r = new Random(563996);
+ try {
+ int nBattery = 9 + r.nextInt(19-9);
+
+ PrintWriter p = new PrintWriter(new FileOutputStream(file));
+ p.println(matrix.length);
+ p.println(nBattery);
+
+ int endX = (int) queries.get(0).get(2);
+ int endY = (int) queries.get(0).get(3);
+
+ matrix[endX][endY] = 2;
+ for (int row = 0; row < matrix.length; row++) {
+ for (int col = 0; col < matrix.length; col++) {
+ p.println(matrix[row][col]);
+ }
+ }
+ p.println(queries.size());
+
+ for (ArrayList query : queries) {
+ p.println(query.get(0) + " " + query.get(1) + " " + endX + " " + endY);
+
+ List path = DarkMaze.findPath(query.get(0), query.get(1), endX, endY, nBattery, matrix);
+ if (path == null){
+ p.println(0);
+ }else{
+ p.println(path.size());
+ for(int val: path){
+ p.println(val);
+ }
+ }
+ }
+
+ p.close();
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/src/test/java/graphs/DarkMazeTests.java b/src/test/java/graphs/DarkMazeTests.java
new file mode 100644
index 0000000..8528d53
--- /dev/null
+++ b/src/test/java/graphs/DarkMazeTests.java
@@ -0,0 +1,155 @@
+package graphs;
+
+import org.javagrader.ConditionalOrderingExtension;
+import org.javagrader.Grade;
+import org.junit.jupiter.api.MethodOrderer;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestMethodOrder;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+
+
+
+import java.util.*;
+@ExtendWith(ConditionalOrderingExtension.class)
+@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
+@Grade
+public class DarkMazeTests {
+
+ public static int[][] maze1 = new int[][] {
+ {1, 0, 0, 0, 0, 0, 0, 1},
+ {0, 0, 0, 0, 0, 0,-1,-1},
+ {0, 0, 0, 0, 0, 0, 0, 2}
+ };
+
+ public static int[][] maze2 = new int[][]{
+ {1, 0, 0, 0, 0, 1, 0},
+ {0,-1,-1, 0, 0, 0, 0},
+ {0,-1, 0, 0,-1,-1,-1},
+ {0, 0, 1, 0, 0,-1, 0},
+ {0, 0, 0,-1, 0, 0, 0},
+ {0, 0, 0, 0, 0,-1, 2},
+ };
+
+ public static int[][] maze3 = new int[][]{
+ {1, 0, 0, 0, 0, 1, 0},
+ {0,-1,-1, 0, 0, 0, 0},
+ {0,-1, 0, 0,-1,-1,-1},
+ {-1,0, 1, 0, 0,-1, 0},
+ {0, 0, 0,-1, 0, 0, 0},
+ {0, 0, 0, 0, 0,-1, 2},
+ };
+
+ public static int[][] maze4 = {
+ {1, 0, 0, 0, 0, 0, 2},
+ };
+
+ public static int[][] maze5 = {
+ {1,-1, 2},
+ };
+
+
+ @Test
+ @Grade(value = 1)
+ @Order(1)
+ public void testMaze1() {
+ Iterable path = DarkMaze.findPath(0, 0, 2, 7, 8, maze1);
+ assertNotNull(path);
+ Integer[] pathArray = toArray(path);
+ assertEquals(14, pathArray.length);
+ assertTrue(validPathSourceToDest(0, 0, 2, 7, maze1, path));
+ }
+
+ @Test
+ @Grade(value = 1)
+ @Order(1)
+ public void testMaze2() {
+ Iterable path1 = DarkMaze.findPath(0, 0, 5, 6, 8, maze2);
+ assertNotNull(path1);
+ Integer[] pathArray = toArray(path1);
+ assertTrue(validPathSourceToDest(0, 0, 5, 6, maze2, path1));
+ assertEquals(12, pathArray.length);
+ }
+
+ @Test
+ @Grade(value = 1)
+ @Order(1)
+ public void testMaze3() {
+ Iterable path1 = DarkMaze.findPath(0, 0, 5, 6, 8, maze3);
+ assertNotNull(path1);
+ Integer[] pathArray = toArray(path1);
+ assertTrue(validPathSourceToDest(0, 0, 5, 6, maze3, path1));
+ assertEquals(14, pathArray.length);
+
+
+
+ Iterable path2 = DarkMaze.findPath(0, 0, 5, 6, 6, maze3);
+ assertNotNull(path2);
+ Integer[] pathArray2 = toArray(path2);
+ assertTrue(validPathSourceToDest(0, 0, 5, 6, maze3, path2));
+ assertEquals(18, pathArray2.length);
+ }
+
+
+
+ @Test
+ @Grade(value = 1)
+ @Order(1)
+ public void testMazeUnfeasible() {
+ Iterable path1 = DarkMaze.findPath(0, 0, 0, 6, 1, maze4);
+ assertNull(path1);
+
+ Iterable path2 = DarkMaze.findPath(0, 0, 0, 2, 6, maze5);
+ assertNull(path2);
+
+ Iterable path3 = DarkMaze.findPath(0, 1, 0, 2, 6, maze5);
+ assertNull(path3);
+ }
+
+
+
+
+
+ public static boolean validPathSourceToDest(int x1, int y1, int x2, int y2, int[][] maze, Iterable path) {
+ int m = maze[0].length;
+ Iterator ite = path.iterator();
+ if (!ite.hasNext()) return false;
+ int p = ite.next();
+ int x = row(p, m);
+ int y = col(p, m);
+ if (x != x1 || y != y1) return false;
+ while (ite.hasNext()) {
+ p = ite.next();
+ int x_ = row(p, m);
+ int y_ = col(p, m);
+ if (maze[x][y] == -1) return false;
+ if (Math.abs(x_ - x) + Math.abs(y_ - y) != 1) return false;
+ x = x_;
+ y = y_;
+ }
+ if (x != x2 || y != y2) return false;
+ return true;
+ }
+
+ public static Integer[] toArray(Iterable path) {
+ LinkedList list = new LinkedList();
+ path.forEach(list::add);
+ return list.toArray(new Integer[0]);
+ }
+
+ public static int row(int pos, int mCols) {
+ return pos / mCols;
+ }
+ public static int col(int pos, int mCols) {
+ return pos % mCols;
+ }
+
+}
\ No newline at end of file