diff --git a/.classpath b/.classpath
deleted file mode 100644
index fb565a5..0000000
--- a/.classpath
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
The dataset is part of MNIST from kaggle Digit Recognizer competition.
-"train.format" is the train set, which has been binarized.
-"test.format" is the test set, which has been binarized.
\ No newline at end of file diff --git a/dataset/test.predict b/dataset/test.predict deleted file mode 100644 index c6eb184..0000000 --- a/dataset/test.predict +++ /dev/null @@ -1,28000 +0,0 @@ -2 -0 -9 -9 -3 -7 -0 -3 -0 -3 -5 -7 -4 -0 -4 -0 -3 -1 -9 -0 -9 -1 -1 -5 -7 -4 -2 -7 -7 -7 -7 -5 -4 -2 -6 -2 -5 -5 -1 -6 -7 -7 -4 -9 -6 -7 -8 -2 -6 -7 -6 -8 -8 -3 -8 -2 -1 -2 -9 -0 -4 -1 -7 -0 -0 -0 -1 -9 -0 -1 -6 -5 -8 -8 -2 -8 -9 -9 -2 -3 -5 -9 -1 -0 -9 -2 -4 -3 -6 -7 -2 -0 -6 -6 -1 -4 -3 -9 -7 -4 -0 -3 -2 -0 -7 -3 -0 -5 -0 -9 -0 -0 -6 -1 -1 -7 -1 -1 -5 -3 -3 -7 -2 -8 -6 -3 -8 -7 -8 -4 -5 -5 -6 -0 -0 -0 -3 -1 -3 -0 -4 -3 -4 -5 -5 -8 -7 -7 -2 -8 -4 -3 -5 -6 -5 -1 -7 -5 -7 -8 -3 -0 -4 -5 -1 -2 -7 -6 -5 -0 -2 -7 -9 -6 -1 -3 -7 -4 -1 -2 -4 -2 -5 -2 -4 -9 -2 -1 -6 -0 -6 -1 -4 -2 -6 -0 -9 -7 -6 -9 -1 -9 -0 -5 -9 -0 -8 -4 -6 -2 -0 -9 -3 -6 -7 -2 -1 -6 -3 -4 -2 -3 -1 -3 -2 -8 -4 -6 -1 -0 -0 -4 -9 -1 -7 -3 -2 -2 -8 -6 -8 -6 -2 -8 -5 -5 -9 -8 -3 -8 -9 -7 -1 -3 -8 -4 -5 -1 -4 -3 -6 -3 -3 -5 -7 -0 -6 -8 -5 -1 -6 -0 -6 -3 -9 -9 -1 -5 -8 -4 -0 -9 -2 -0 -5 -3 -7 -8 -9 -9 -5 -9 -7 -9 -9 -6 -3 -0 -3 -3 -6 -9 -8 -2 -6 -2 -7 -1 -4 -5 -8 -5 -9 -0 -0 -3 -8 -4 -1 -5 -9 -1 -1 -9 -8 -4 -5 -1 -5 -7 -6 -3 -1 -3 -0 -9 -0 -6 -6 -0 -6 -7 -1 -8 -6 -0 -6 -5 -2 -2 -6 -7 -7 -2 -5 -8 -9 -9 -2 -1 -9 -6 -3 -8 -9 -2 -3 -8 -1 -6 -4 -8 -9 -9 -7 -6 -9 -5 -3 -7 -6 -5 -5 -9 -2 -6 -2 -1 -3 -7 -1 -7 -9 -9 -6 -1 -1 -1 -7 -3 -9 -7 -6 -1 -1 -1 -2 -3 -5 -5 -5 -0 -4 -1 -2 -3 -1 -1 -3 -5 -9 -6 -6 -5 -3 -1 -4 -7 -4 -7 -4 -8 -5 -2 -6 -1 -3 -9 -5 -0 -8 -4 -7 -4 -9 -4 -1 -5 -3 -9 -9 -7 -6 -9 -5 -9 -2 -3 -1 -6 -6 -7 -5 -0 -5 -1 -7 -4 -4 -1 -1 -4 -9 -5 -6 -0 -1 -3 -1 -0 -4 -8 -1 -2 -7 -9 -4 -8 -3 -7 -0 -4 -2 -4 -2 -7 -6 -3 -2 -0 -6 -5 -9 -2 -1 -8 -3 -3 -0 -6 -7 -5 -8 -7 -5 -3 -1 -7 -6 -3 -7 -9 -0 -7 -7 -1 -0 -1 -1 -7 -0 -5 -3 -8 -5 -5 -6 -5 -7 -3 -0 -2 -8 -2 -0 -3 -0 -9 -2 -1 -1 -3 -0 -5 -0 -0 -7 -5 -6 -2 -0 -3 -1 -1 -6 -5 -4 -1 -1 -4 -7 -5 -3 -6 -0 -4 -8 -2 -4 -2 -5 -1 -2 -6 -9 -1 -7 -5 -8 -0 -8 -8 -4 -5 -3 -6 -6 -6 -0 -3 -1 -1 -7 -1 -6 -2 -8 -5 -6 -4 -7 -4 -3 -3 -2 -4 -7 -0 -0 -9 -8 -5 -9 -4 -0 -8 -7 -3 -6 -7 -6 -1 -8 -6 -1 -9 -7 -7 -8 -3 -0 -9 -9 -6 -7 -7 -4 -4 -1 -8 -4 -9 -0 -0 -8 -2 -4 -3 -3 -7 -2 -3 -4 -0 -4 -2 -1 -3 -3 -6 -3 -9 -4 -3 -8 -7 -7 -6 -6 -0 -6 -9 -8 -1 -1 -3 -4 -6 -9 -9 -2 -6 -0 -1 -8 -4 -3 -9 -8 -8 -4 -0 -5 -0 -6 -0 -9 -4 -6 -0 -5 -8 -1 -5 -7 -6 -2 -3 -7 -8 -9 -3 -1 -0 -1 -0 -6 -9 -7 -0 -7 -1 -3 -2 -2 -7 -1 -6 -1 -5 -4 -4 -3 -4 -3 -9 -8 -7 -8 -6 -4 -9 -4 -4 -1 -4 -7 -1 -1 -2 -2 -0 -4 -0 -4 -0 -0 -8 -1 -8 -6 -5 -0 -1 -5 -3 -4 -6 -3 -1 -1 -6 -9 -8 -3 -5 -5 -4 -5 -8 -5 -0 -4 -0 -4 -3 -1 -6 -9 -7 -1 -1 -3 -3 -1 -9 -9 -6 -9 -1 -5 -9 -7 -3 -4 -4 -0 -9 -7 -4 -3 -0 -5 -0 -1 -9 -0 -4 -4 -2 -8 -4 -5 -9 -3 -9 -6 -1 -5 -5 -1 -9 -0 -8 -4 -6 -7 -2 -1 -5 -8 -9 -7 -7 -2 -8 -1 -3 -6 -5 -0 -9 -1 -4 -2 -3 -6 -9 -2 -3 -4 -5 -4 -2 -3 -3 -1 -1 -0 -1 -4 -9 -1 -1 -2 -7 -1 -5 -4 -9 -1 -7 -6 -0 -4 -2 -9 -9 -1 -1 -5 -3 -5 -7 -9 -7 -7 -3 -2 -7 -2 -0 -4 -7 -1 -6 -4 -6 -1 -5 -7 -3 -5 -9 -4 -7 -9 -6 -6 -3 -3 -2 -1 -4 -1 -3 -7 -7 -9 -5 -6 -0 -6 -1 -0 -9 -3 -2 -9 -2 -6 -7 -5 -2 -3 -2 -8 -3 -0 -2 -7 -9 -4 -0 -0 -5 -1 -8 -8 -5 -3 -2 -9 -6 -7 -0 -8 -0 -7 -4 -3 -8 -7 -9 -7 -7 -0 -5 -3 -2 -1 -9 -0 -6 -8 -3 -6 -2 -2 -9 -0 -9 -0 -7 -1 -3 -4 -6 -3 -9 -2 -6 -3 -7 -3 -7 -2 -3 -4 -9 -5 -9 -9 -6 -2 -6 -1 -5 -5 -1 -9 -1 -8 -9 -4 -8 -3 -5 -2 -0 -1 -6 -1 -9 -6 -2 -7 -7 -6 -6 -2 -6 -3 -5 -9 -1 -1 -3 -6 -5 -0 -0 -6 -0 -9 -4 -7 -0 -5 -9 -8 -3 -7 -6 -7 -2 -6 -1 -2 -9 -3 -0 -2 -3 -7 -7 -6 -6 -3 -1 -3 -1 -0 -1 -7 -6 -8 -3 -9 -3 -4 -2 -9 -1 -8 -2 -0 -6 -4 -6 -7 -2 -4 -1 -0 -5 -2 -6 -9 -9 -8 -5 -4 -1 -6 -3 -5 -6 -1 -2 -0 -0 -8 -0 -3 -6 -8 -7 -7 -7 -0 -0 -2 -1 -2 -8 -4 -5 -5 -3 -6 -7 -8 -4 -7 -4 -9 -1 -8 -0 -9 -1 -7 -0 -6 -4 -5 -2 -4 -5 -8 -2 -9 -1 -8 -6 -2 -7 -2 -5 -3 -8 -9 -9 -0 -7 -0 -3 -0 -9 -7 -3 -3 -8 -8 -9 -3 -2 -5 -4 -6 -8 -3 -8 -1 -7 -9 -6 -4 -0 -6 -2 -8 -4 -5 -9 -6 -7 -8 -2 -0 -0 -5 -0 -5 -9 -4 -9 -9 -5 -4 -3 -0 -5 -4 -1 -9 -1 -7 -9 -9 -5 -7 -8 -6 -4 -1 -9 -3 -1 -6 -6 -0 -1 -5 -5 -7 -6 -1 -3 -1 -9 -4 -2 -2 -6 -9 -9 -8 -1 -1 -0 -1 -6 -0 -4 -0 -2 -7 -6 -1 -4 -7 -0 -7 -1 -0 -7 -1 -1 -9 -8 -0 -6 -5 -9 -8 -6 -3 -6 -6 -6 -1 -1 -4 -0 -7 -8 -0 -4 -6 -7 -5 -5 -9 -6 -2 -4 -7 -5 -9 -3 -5 -1 -8 -0 -9 -6 -8 -1 -3 -0 -3 -1 -9 -1 -4 -5 -8 -2 -2 -9 -1 -3 -3 -0 -5 -6 -1 -8 -3 -6 -7 -2 -3 -2 -9 -7 -1 -5 -9 -8 -7 -3 -8 -4 -5 -8 -2 -1 -6 -7 -6 -1 -1 -0 -5 -0 -9 -1 -7 -4 -0 -9 -7 -5 -9 -8 -8 -7 -4 -4 -3 -7 -9 -4 -7 -2 -7 -4 -1 -5 -7 -2 -9 -5 -9 -8 -4 -5 -9 -1 -5 -1 -9 -3 -7 -6 -1 -7 -9 -2 -5 -6 -1 -8 -5 -0 -8 -8 -4 -7 -1 -9 -6 -8 -9 -4 -9 -9 -6 -5 -2 -7 -9 -8 -0 -4 -9 -0 -8 -8 -9 -0 -9 -0 -9 -7 -0 -8 -5 -5 -3 -6 -2 -5 -3 -1 -7 -3 -1 -0 -6 -5 -9 -3 -3 -9 -4 -8 -8 -7 -6 -4 -4 -0 -7 -9 -9 -6 -7 -3 -8 -9 -5 -0 -8 -6 -0 -3 -0 -1 -8 -3 -8 -6 -0 -1 -3 -0 -7 -3 -6 -9 -2 -3 -1 -7 -7 -9 -5 -9 -9 -3 -1 -5 -8 -3 -2 -5 -4 -1 -8 -4 -0 -2 -0 -1 -0 -0 -7 -1 -5 -5 -5 -9 -9 -7 -9 -4 -6 -8 -1 -9 -2 -7 -4 -8 -5 -0 -5 -9 -8 -7 -5 -0 -1 -7 -9 -6 -3 -0 -8 -7 -5 -2 -6 -1 -7 -2 -3 -8 -8 -1 -4 -6 -2 -4 -0 -2 -3 -6 -3 -8 -2 -9 -1 -8 -2 -5 -8 -7 -7 -6 -2 -0 -3 -2 -5 -1 -5 -9 -3 -3 -1 -9 -3 -2 -1 -1 -2 -6 -1 -9 -4 -4 -9 -6 -6 -7 -5 -9 -6 -6 -1 -0 -7 -8 -8 -5 -3 -7 -7 -7 -1 -4 -6 -1 -0 -0 -1 -7 -7 -2 -8 -9 -8 -2 -4 -8 -1 -3 -5 -1 -3 -3 -6 -6 -5 -8 -8 -3 -4 -5 -9 -8 -2 -0 -1 -3 -3 -5 -6 -5 -3 -6 -1 -3 -3 -7 -1 -5 -6 -6 -1 -7 -4 -1 -9 -0 -2 -8 -0 -7 -1 -3 -0 -7 -0 -7 -7 -1 -5 -8 -4 -9 -7 -0 -7 -1 -5 -3 -6 -2 -4 -7 -1 -6 -5 -9 -3 -4 -1 -9 -4 -0 -3 -5 -1 -0 -0 -5 -3 -9 -4 -9 -1 -0 -0 -5 -7 -1 -6 -8 -3 -7 -0 -3 -8 -2 -8 -6 -7 -9 -1 -8 -4 -5 -3 -1 -5 -2 -2 -5 -3 -8 -8 -2 -7 -4 -1 -5 -7 -0 -6 -6 -2 -3 -2 -2 -9 -1 -9 -6 -9 -2 -2 -6 -0 -9 -0 -0 -0 -0 -3 -0 -4 -3 -6 -7 -8 -6 -0 -5 -1 -8 -5 -6 -0 -2 -7 -1 -1 -3 -9 -9 -3 -0 -8 -5 -9 -6 -8 -3 -1 -0 -0 -9 -0 -6 -6 -2 -4 -3 -0 -2 -7 -1 -5 -8 -5 -8 -8 -4 -7 -4 -3 -6 -5 -7 -3 -1 -6 -7 -1 -3 -1 -5 -3 -1 -5 -2 -2 -6 -9 -0 -2 -1 -2 -7 -4 -4 -9 -3 -0 -9 -5 -1 -9 -6 -9 -7 -6 -5 -0 -1 -1 -3 -8 -4 -0 -0 -0 -3 -7 -9 -8 -8 -9 -9 -1 -5 -0 -9 -1 -7 -2 -0 -5 -9 -0 -6 -9 -2 -4 -2 -1 -4 -4 -4 -8 -8 -6 -5 -6 -1 -1 -5 -9 -3 -9 -7 -0 -7 -6 -5 -8 -6 -6 -0 -7 -4 -5 -1 -7 -7 -3 -5 -6 -8 -5 -3 -6 -9 -5 -6 -1 -9 -5 -0 -9 -4 -9 -1 -8 -4 -0 -9 -3 -0 -9 -4 -6 -4 -0 -1 -0 -1 -7 -5 -9 -8 -7 -8 -6 -2 -0 -0 -5 -7 -9 -6 -1 -6 -7 -2 -5 -9 -7 -1 -1 -4 -1 -6 -6 -7 -0 -2 -8 -7 -0 -9 -4 -6 -2 -6 -7 -3 -2 -9 -6 -5 -2 -5 -8 -5 -6 -9 -2 -7 -7 -9 -3 -4 -9 -2 -8 -0 -2 -4 -0 -9 -4 -5 -8 -8 -9 -3 -3 -5 -9 -0 -7 -0 -5 -5 -1 -9 -1 -9 -9 -4 -6 -4 -6 -8 -9 -0 -0 -8 -2 -1 -6 -8 -2 -0 -0 -2 -1 -5 -7 -3 -3 -5 -9 -6 -2 -3 -4 -3 -7 -4 -3 -2 -6 -6 -1 -5 -8 -0 -6 -7 -6 -2 -2 -4 -0 -6 -2 -1 -5 -2 -5 -7 -5 -6 -2 -0 -6 -8 -2 -4 -4 -5 -1 -6 -8 -1 -4 -6 -6 -1 -5 -2 -0 -0 -0 -1 -1 -4 -7 -0 -3 -6 -5 -0 -5 -3 -0 -8 -9 -1 -5 -7 -3 -3 -6 -1 -6 -1 -9 -5 -2 -0 -7 -9 -0 -2 -7 -4 -4 -6 -0 -9 -6 -8 -9 -1 -7 -4 -7 -9 -9 -7 -4 -8 -5 -9 -5 -5 -1 -9 -3 -6 -4 -0 -2 -6 -1 -8 -0 -4 -2 -1 -2 -6 -7 -3 -7 -9 -1 -5 -6 -4 -0 -1 -4 -2 -1 -1 -4 -2 -2 -1 -1 -7 -9 -4 -8 -0 -8 -9 -5 -8 -9 -4 -6 -3 -3 -3 -9 -0 -3 -6 -9 -1 -2 -6 -0 -6 -0 -5 -0 -0 -1 -8 -0 -8 -2 -0 -1 -5 -3 -9 -5 -7 -6 -8 -8 -7 -9 -0 -3 -2 -6 -0 -5 -6 -9 -6 -5 -4 -2 -1 -9 -3 -6 -6 -8 -7 -2 -2 -0 -3 -4 -5 -3 -3 -1 -5 -4 -5 -9 -7 -0 -1 -6 -5 -3 -2 -6 -4 -2 -5 -9 -3 -4 -6 -3 -5 -8 -2 -8 -9 -8 -7 -3 -3 -9 -9 -4 -6 -7 -3 -6 -9 -9 -6 -6 -0 -9 -9 -9 -9 -4 -1 -7 -2 -8 -5 -0 -5 -6 -7 -1 -8 -0 -8 -0 -3 -0 -2 -4 -9 -1 -1 -6 -7 -6 -7 -5 -3 -6 -6 -3 -9 -8 -7 -8 -8 -9 -0 -0 -7 -7 -1 -6 -0 -3 -1 -9 -8 -5 -1 -7 -0 -1 -0 -5 -9 -9 -0 -1 -9 -0 -9 -9 -4 -2 -2 -5 -5 -0 -0 -5 -9 -9 -3 -4 -2 -5 -0 -0 -3 -2 -3 -5 -9 -0 -1 -9 -5 -9 -8 -2 -0 -3 -4 -4 -1 -0 -8 -3 -5 -5 -6 -9 -1 -9 -8 -7 -0 -3 -3 -9 -1 -0 -3 -3 -9 -7 -3 -1 -9 -6 -3 -3 -4 -0 -2 -1 -3 -9 -9 -1 -7 -9 -7 -9 -6 -1 -5 -6 -6 -9 -0 -4 -2 -2 -4 -3 -7 -6 -4 -1 -4 -2 -6 -1 -0 -2 -2 -1 -0 -2 -7 -2 -6 -0 -2 -0 -2 -0 -0 -5 -0 -3 -9 -0 -6 -6 -4 -1 -5 -9 -2 -4 -6 -4 -1 -1 -3 -0 -1 -1 -5 -0 -2 -9 -7 -3 -6 -8 -7 -8 -8 -7 -2 -6 -9 -4 -5 -7 -1 -3 -6 -0 -9 -9 -4 -6 -8 -6 -4 -1 -0 -3 -3 -0 -1 -8 -9 -5 -5 -7 -7 -3 -4 -6 -2 -9 -3 -0 -7 -6 -8 -8 -2 -4 -0 -6 -9 -8 -3 -9 -2 -0 -1 -6 -7 -7 -6 -4 -6 -5 -9 -6 -1 -3 -3 -5 -2 -1 -6 -4 -1 -9 -9 -6 -6 -6 -4 -5 -9 -4 -9 -9 -2 -2 -5 -1 -6 -2 -8 -7 -2 -8 -4 -7 -6 -1 -0 -1 -9 -0 -7 -4 -9 -0 -9 -4 -9 -0 -3 -6 -7 -4 -3 -7 -0 -2 -1 -5 -1 -4 -2 -4 -5 -2 -6 -6 -8 -8 -6 -7 -9 -1 -9 -1 -3 -2 -5 -9 -0 -9 -0 -1 -6 -9 -7 -7 -3 -0 -5 -3 -1 -9 -2 -6 -7 -9 -1 -0 -5 -1 -6 -8 -8 -6 -7 -3 -7 -2 -8 -9 -1 -0 -6 -1 -1 -6 -6 -9 -0 -1 -6 -9 -8 -1 -3 -7 -7 -8 -1 -4 -7 -0 -6 -0 -6 -4 -3 -1 -9 -6 -3 -0 -0 -2 -8 -9 -8 -1 -1 -8 -1 -3 -2 -3 -1 -0 -5 -9 -5 -0 -7 -1 -0 -6 -1 -5 -1 -1 -8 -2 -2 -6 -1 -7 -9 -7 -6 -7 -5 -1 -0 -6 -2 -7 -6 -4 -4 -4 -0 -8 -2 -0 -0 -6 -4 -8 -1 -9 -2 -9 -5 -1 -5 -1 -1 -4 -7 -0 -1 -2 -4 -6 -1 -9 -2 -9 -2 -9 -2 -6 -6 -5 -5 -5 -8 -5 -6 -1 -1 -6 -1 -2 -1 -9 -4 -7 -6 -7 -1 -0 -6 -4 -6 -5 -3 -3 -8 -0 -1 -1 -6 -0 -5 -1 -2 -1 -6 -4 -3 -9 -0 -4 -0 -3 -1 -4 -9 -2 -1 -7 -0 -9 -6 -8 -5 -8 -6 -0 -6 -7 -9 -9 -3 -1 -3 -9 -3 -1 -1 -2 -0 -0 -7 -7 -5 -1 -6 -0 -6 -7 -9 -3 -6 -2 -2 -2 -9 -9 -9 -9 -2 -7 -9 -2 -8 -1 -7 -7 -3 -7 -8 -7 -2 -5 -6 -1 -9 -7 -7 -7 -8 -9 -9 -7 -8 -9 -5 -2 -9 -5 -0 -7 -6 -1 -2 -6 -2 -7 -3 -5 -6 -9 -5 -8 -8 -2 -2 -9 -7 -9 -5 -1 -1 -1 -4 -5 -6 -1 -7 -0 -7 -9 -2 -7 -2 -3 -1 -5 -7 -1 -5 -1 -6 -0 -2 -6 -9 -9 -7 -9 -8 -7 -7 -7 -5 -6 -2 -9 -8 -8 -6 -7 -3 -1 -3 -9 -1 -2 -0 -2 -6 -5 -1 -0 -9 -9 -1 -6 -8 -5 -5 -6 -2 -3 -6 -1 -6 -6 -2 -0 -6 -0 -8 -1 -2 -8 -6 -4 -8 -5 -0 -4 -5 -0 -9 -7 -9 -2 -9 -2 -8 -5 -3 -5 -9 -7 -9 -5 -7 -3 -0 -2 -8 -0 -6 -6 -6 -9 -9 -3 -9 -2 -2 -3 -3 -7 -4 -5 -8 -5 -3 -6 -0 -5 -1 -2 -6 -9 -5 -5 -2 -7 -9 -1 -9 -3 -6 -8 -8 -2 -5 -8 -3 -9 -1 -6 -9 -6 -7 -5 -8 -5 -0 -8 -6 -7 -8 -1 -7 -1 -9 -3 -8 -8 -3 -9 -9 -8 -7 -6 -0 -5 -3 -0 -9 -9 -6 -8 -7 -9 -1 -2 -3 -2 -1 -5 -2 -9 -4 -4 -9 -3 -0 -0 -1 -1 -3 -1 -1 -2 -1 -6 -2 -7 -6 -0 -4 -4 -7 -0 -7 -0 -8 -7 -1 -3 -7 -8 -9 -0 -9 -0 -0 -1 -8 -8 -7 -4 -8 -3 -5 -9 -0 -3 -6 -3 -6 -3 -0 -9 -2 -6 -9 -3 -0 -5 -4 -5 -7 -7 -4 -2 -3 -9 -2 -1 -1 -0 -1 -9 -4 -2 -2 -1 -3 -2 -7 -3 -5 -1 -3 -0 -2 -1 -1 -7 -9 -1 -8 -9 -1 -6 -9 -7 -1 -8 -9 -9 -2 -0 -6 -1 -5 -2 -0 -9 -2 -5 -5 -3 -9 -0 -1 -0 -9 -6 -0 -9 -3 -7 -8 -0 -4 -0 -2 -6 -8 -2 -1 -9 -2 -1 -8 -6 -6 -1 -4 -8 -6 -2 -1 -3 -9 -8 -3 -7 -8 -7 -8 -7 -1 -5 -6 -4 -7 -5 -5 -4 -0 -8 -1 -6 -6 -3 -3 -7 -8 -8 -4 -3 -4 -3 -2 -1 -7 -0 -9 -4 -2 -8 -6 -8 -5 -1 -8 -4 -8 -1 -4 -3 -9 -1 -2 -1 -5 -3 -6 -7 -2 -4 -7 -6 -9 -1 -9 -8 -6 -8 -2 -6 -2 -0 -1 -1 -0 -6 -3 -9 -7 -3 -1 -9 -4 -6 -9 -7 -2 -7 -8 -1 -0 -5 -1 -2 -7 -6 -6 -3 -0 -4 -1 -9 -6 -3 -9 -1 -2 -4 -1 -3 -4 -0 -1 -8 -0 -2 -9 -2 -7 -9 -9 -1 -4 -7 -3 -2 -9 -9 -1 -3 -7 -8 -4 -9 -7 -9 -7 -1 -4 -4 -0 -0 -0 -3 -5 -8 -3 -0 -4 -1 -2 -8 -1 -0 -8 -8 -3 -4 -6 -9 -3 -2 -7 -2 -6 -8 -1 -0 -1 -8 -1 -3 -7 -4 -9 -1 -3 -5 -0 -3 -5 -4 -8 -6 -1 -9 -9 -6 -6 -6 -1 -9 -0 -3 -9 -8 -4 -6 -5 -6 -8 -9 -9 -5 -1 -8 -0 -2 -0 -3 -9 -5 -7 -0 -1 -0 -7 -2 -8 -1 -8 -3 -3 -7 -9 -6 -9 -9 -5 -7 -4 -6 -4 -9 -6 -0 -0 -4 -3 -5 -7 -1 -2 -1 -9 -2 -1 -3 -1 -9 -1 -8 -5 -8 -7 -9 -3 -6 -3 -6 -1 -7 -5 -8 -2 -6 -3 -7 -0 -5 -6 -7 -9 -6 -8 -6 -0 -9 -5 -9 -6 -1 -9 -5 -6 -7 -6 -2 -6 -5 -6 -6 -0 -4 -3 -9 -4 -3 -5 -0 -2 -6 -5 -0 -7 -6 -0 -6 -0 -5 -3 -6 -1 -9 -3 -8 -4 -4 -3 -4 -5 -4 -6 -0 -6 -1 -2 -0 -3 -9 -5 -0 -4 -1 -1 -3 -3 -9 -3 -3 -6 -4 -9 -0 -6 -9 -7 -9 -8 -5 -7 -9 -1 -4 -6 -5 -1 -8 -4 -9 -7 -1 -6 -8 -6 -7 -9 -4 -4 -0 -7 -7 -9 -1 -1 -6 -8 -0 -8 -3 -2 -7 -6 -7 -0 -1 -6 -5 -4 -5 -6 -2 -5 -3 -9 -5 -1 -3 -9 -6 -9 -2 -0 -6 -2 -7 -6 -0 -0 -3 -9 -1 -2 -9 -3 -0 -6 -1 -0 -9 -9 -6 -5 -1 -3 -6 -7 -1 -5 -1 -8 -1 -7 -3 -7 -9 -5 -2 -4 -9 -6 -8 -6 -6 -0 -8 -1 -7 -7 -1 -9 -0 -1 -4 -9 -1 -7 -3 -1 -6 -2 -2 -7 -2 -4 -1 -5 -6 -1 -5 -3 -2 -6 -9 -1 -7 -4 -5 -6 -5 -6 -3 -8 -1 -3 -9 -5 -6 -7 -1 -3 -3 -7 -1 -1 -8 -0 -6 -3 -9 -3 -3 -6 -2 -2 -0 -1 -0 -1 -1 -3 -7 -2 -9 -0 -3 -8 -8 -0 -1 -9 -5 -5 -2 -1 -3 -6 -0 -2 -7 -2 -9 -1 -5 -7 -1 -7 -4 -3 -9 -4 -4 -3 -2 -0 -0 -0 -3 -1 -1 -4 -3 -9 -2 -2 -2 -8 -6 -9 -4 -0 -4 -9 -1 -0 -7 -1 -2 -1 -6 -2 -4 -0 -4 -6 -0 -1 -1 -4 -2 -6 -2 -7 -7 -3 -4 -3 -9 -0 -1 -4 -8 -6 -2 -1 -1 -7 -3 -2 -9 -2 -2 -5 -2 -1 -0 -2 -5 -0 -0 -0 -9 -2 -7 -3 -0 -2 -1 -9 -0 -8 -5 -3 -8 -2 -2 -0 -2 -7 -8 -4 -0 -3 -0 -2 -2 -8 -0 -9 -2 -3 -0 -2 -9 -9 -7 -1 -4 -2 -2 -1 -6 -7 -6 -6 -3 -3 -6 -7 -3 -9 -1 -2 -3 -5 -0 -1 -0 -9 -7 -9 -0 -1 -5 -1 -4 -3 -6 -4 -8 -1 -2 -2 -6 -4 -2 -5 -8 -2 -6 -5 -8 -3 -1 -7 -4 -6 -0 -1 -5 -8 -1 -4 -0 -3 -6 -6 -1 -6 -2 -5 -9 -1 -5 -6 -6 -1 -4 -0 -3 -6 -0 -1 -6 -8 -9 -4 -7 -7 -7 -8 -8 -7 -5 -2 -7 -8 -1 -1 -9 -5 -4 -1 -0 -1 -3 -2 -3 -6 -8 -3 -1 -2 -7 -1 -7 -7 -0 -0 -1 -0 -0 -2 -0 -0 -7 -1 -7 -8 -6 -5 -7 -1 -6 -6 -9 -9 -9 -1 -3 -9 -0 -4 -9 -2 -8 -6 -2 -7 -4 -7 -5 -0 -3 -7 -5 -6 -6 -9 -0 -3 -5 -2 -8 -9 -8 -2 -2 -9 -7 -1 -7 -7 -2 -7 -3 -2 -2 -5 -4 -0 -2 -2 -8 -1 -1 -2 -9 -2 -3 -8 -1 -6 -9 -9 -4 -3 -9 -7 -9 -0 -7 -3 -5 -2 -3 -0 -1 -9 -9 -7 -9 -2 -7 -4 -7 -0 -6 -5 -1 -9 -5 -9 -7 -2 -2 -5 -6 -3 -5 -8 -2 -3 -3 -1 -4 -7 -3 -8 -4 -5 -7 -6 -1 -9 -0 -4 -8 -0 -6 -5 -6 -5 -2 -0 -5 -3 -1 -5 -1 -4 -1 -1 -1 -1 -5 -7 -1 -0 -4 -2 -9 -5 -5 -9 -3 -5 -2 -0 -0 -1 -0 -4 -2 -4 -3 -2 -7 -9 -4 -0 -1 -9 -9 -4 -9 -3 -2 -0 -8 -4 -1 -0 -9 -3 -4 -9 -6 -9 -0 -6 -1 -1 -2 -9 -7 -8 -7 -3 -7 -0 -1 -8 -6 -2 -5 -4 -8 -9 -1 -0 -2 -8 -7 -9 -4 -4 -7 -6 -9 -4 -1 -9 -5 -8 -3 -4 -2 -6 -7 -8 -7 -8 -7 -4 -9 -4 -7 -3 -6 -9 -1 -1 -1 -0 -1 -8 -1 -6 -9 -3 -3 -6 -9 -5 -8 -1 -9 -2 -3 -7 -9 -9 -2 -9 -8 -3 -4 -5 -1 -9 -9 -6 -1 -3 -5 -2 -9 -6 -5 -3 -5 -1 -5 -0 -2 -6 -8 -9 -9 -0 -6 -6 -7 -5 -8 -2 -0 -9 -5 -0 -1 -9 -7 -2 -3 -3 -0 -4 -9 -3 -1 -3 -9 -0 -3 -5 -4 -9 -4 -6 -8 -9 -6 -9 -3 -8 -6 -5 -0 -4 -8 -6 -0 -0 -9 -1 -4 -2 -5 -6 -3 -8 -0 -8 -8 -2 -4 -2 -7 -6 -9 -7 -8 -6 -9 -8 -6 -1 -5 -4 -3 -9 -9 -5 -0 -8 -2 -9 -1 -6 -9 -1 -0 -1 -8 -7 -6 -1 -6 -4 -1 -7 -5 -9 -1 -1 -2 -3 -9 -0 -7 -2 -2 -4 -1 -7 -7 -7 -8 -3 -5 -5 -6 -2 -1 -0 -8 -7 -7 -5 -1 -1 -8 -6 -5 -6 -6 -9 -8 -1 -7 -4 -9 -1 -6 -7 -3 -0 -7 -2 -1 -6 -8 -1 -3 -9 -0 -7 -5 -3 -2 -9 -0 -6 -1 -4 -0 -9 -7 -0 -6 -5 -5 -7 -0 -1 -5 -6 -1 -4 -8 -6 -8 -9 -5 -1 -0 -2 -2 -0 -7 -8 -2 -5 -1 -8 -3 -7 -6 -9 -1 -4 -9 -1 -0 -3 -3 -5 -9 -2 -7 -6 -3 -3 -8 -0 -0 -9 -7 -5 -5 -0 -3 -8 -7 -3 -1 -0 -7 -1 -5 -7 -0 -2 -5 -9 -2 -6 -1 -3 -1 -1 -3 -6 -6 -8 -4 -2 -3 -0 -1 -4 -4 -1 -1 -8 -4 -7 -6 -7 -5 -1 -9 -2 -0 -9 -1 -4 -3 -9 -4 -6 -9 -8 -5 -6 -8 -9 -7 -0 -0 -1 -0 -9 -7 -0 -2 -2 -7 -9 -6 -9 -5 -6 -1 -1 -1 -5 -8 -7 -9 -6 -2 -2 -2 -8 -5 -7 -1 -1 -1 -2 -9 -1 -8 -1 -3 -2 -1 -0 -6 -4 -7 -6 -5 -0 -1 -2 -8 -8 -4 -4 -3 -7 -4 -4 -9 -2 -8 -8 -6 -1 -5 -4 -5 -6 -8 -7 -0 -0 -1 -5 -4 -1 -5 -7 -3 -2 -0 -9 -9 -4 -9 -5 -0 -3 -6 -2 -3 -1 -7 -6 -0 -8 -2 -7 -7 -5 -8 -7 -4 -5 -0 -1 -9 -7 -4 -5 -0 -9 -8 -6 -3 -3 -1 -6 -1 -8 -0 -9 -9 -1 -1 -3 -7 -0 -0 -3 -0 -4 -9 -9 -8 -8 -0 -9 -0 -1 -6 -6 -6 -0 -2 -5 -7 -0 -6 -9 -7 -2 -2 -5 -3 -6 -6 -9 -2 -5 -4 -3 -5 -2 -4 -5 -4 -1 -7 -2 -3 -1 -9 -9 -2 -9 -0 -8 -1 -5 -7 -8 -6 -6 -8 -3 -2 -6 -7 -0 -6 -0 -2 -2 -3 -0 -6 -3 -3 -4 -2 -1 -4 -3 -3 -0 -0 -3 -2 -4 -1 -5 -9 -2 -4 -2 -5 -8 -7 -9 -9 -1 -5 -0 -0 -9 -0 -8 -8 -0 -9 -8 -6 -2 -3 -2 -0 -6 -3 -3 -1 -9 -2 -0 -5 -2 -8 -9 -4 -2 -6 -0 -2 -0 -6 -5 -3 -4 -1 -2 -2 -4 -9 -4 -3 -2 -1 -9 -1 -6 -1 -2 -3 -4 -0 -1 -9 -4 -0 -0 -4 -8 -1 -9 -2 -5 -3 -4 -3 -7 -0 -7 -9 -7 -9 -5 -9 -7 -7 -0 -4 -2 -1 -1 -8 -5 -0 -4 -9 -8 -8 -2 -4 -1 -4 -1 -4 -1 -0 -9 -9 -5 -6 -9 -9 -1 -2 -6 -0 -3 -0 -3 -3 -0 -4 -0 -1 -0 -8 -4 -9 -3 -7 -1 -4 -1 -7 -6 -0 -7 -7 -1 -5 -0 -3 -6 -0 -2 -8 -5 -3 -5 -7 -7 -2 -9 -6 -7 -8 -1 -5 -7 -3 -1 -7 -3 -1 -8 -0 -1 -0 -4 -3 -2 -7 -9 -7 -9 -3 -6 -2 -3 -4 -1 -3 -0 -9 -9 -2 -6 -4 -0 -0 -7 -5 -1 -8 -3 -8 -1 -6 -5 -8 -9 -2 -2 -0 -7 -1 -6 -2 -1 -6 -8 -4 -3 -5 -9 -1 -0 -5 -3 -1 -9 -2 -1 -8 -1 -3 -6 -0 -1 -2 -4 -1 -3 -7 -4 -9 -4 -2 -0 -6 -3 -5 -0 -4 -3 -6 -1 -7 -6 -2 -7 -1 -7 -0 -6 -9 -6 -5 -1 -3 -6 -8 -1 -9 -0 -6 -6 -9 -3 -6 -8 -2 -9 -0 -6 -1 -8 -1 -1 -0 -0 -9 -9 -9 -4 -8 -4 -1 -6 -4 -9 -1 -8 -9 -2 -3 -4 -6 -1 -0 -1 -6 -7 -9 -0 -0 -8 -5 -4 -2 -5 -2 -8 -4 -6 -9 -7 -1 -4 -3 -5 -2 -9 -3 -3 -5 -3 -0 -0 -1 -9 -2 -5 -3 -7 -6 -5 -9 -6 -5 -0 -9 -1 -3 -8 -5 -7 -7 -0 -7 -7 -1 -5 -6 -7 -0 -4 -3 -0 -0 -0 -0 -7 -6 -8 -2 -6 -7 -1 -7 -1 -0 -2 -3 -5 -1 -8 -5 -4 -7 -6 -2 -6 -6 -8 -3 -8 -5 -1 -5 -2 -6 -5 -1 -5 -8 -3 -5 -5 -3 -2 -3 -5 -5 -8 -6 -7 -0 -3 -8 -8 -4 -2 -6 -4 -5 -8 -3 -0 -9 -1 -1 -3 -0 -9 -6 -7 -8 -2 -5 -3 -6 -2 -0 -2 -5 -1 -2 -9 -9 -0 -2 -5 -5 -6 -1 -4 -1 -3 -1 -5 -5 -0 -1 -9 -3 -9 -5 -0 -7 -9 -8 -3 -0 -1 -3 -3 -8 -1 -3 -5 -7 -0 -1 -6 -4 -8 -5 -0 -6 -0 -4 -5 -8 -2 -1 -5 -4 -0 -1 -4 -1 -7 -3 -9 -2 -9 -1 -2 -1 -7 -6 -6 -1 -5 -9 -8 -9 -0 -2 -3 -1 -7 -3 -1 -5 -2 -7 -3 -2 -6 -9 -7 -4 -0 -5 -1 -5 -9 -1 -0 -9 -4 -5 -9 -8 -7 -1 -3 -3 -2 -4 -1 -1 -8 -0 -5 -2 -8 -9 -0 -9 -7 -0 -9 -9 -2 -7 -6 -1 -7 -1 -6 -0 -2 -9 -9 -9 -7 -8 -2 -4 -0 -9 -3 -5 -9 -4 -2 -0 -3 -2 -0 -2 -9 -4 -8 -5 -5 -6 -9 -6 -8 -4 -7 -6 -7 -4 -9 -4 -2 -1 -0 -8 -1 -7 -6 -0 -1 -9 -3 -6 -5 -5 -0 -7 -1 -3 -6 -9 -3 -3 -4 -8 -4 -7 -9 -1 -2 -9 -6 -7 -4 -8 -9 -3 -9 -5 -6 -7 -9 -2 -2 -1 -8 -3 -2 -7 -1 -7 -1 -2 -8 -7 -9 -8 -0 -9 -4 -0 -0 -2 -2 -4 -2 -0 -7 -6 -3 -2 -7 -4 -1 -2 -7 -4 -9 -2 -1 -7 -5 -8 -0 -5 -7 -9 -7 -1 -5 -5 -4 -2 -4 -7 -9 -9 -6 -4 -5 -4 -9 -1 -9 -6 -5 -6 -2 -8 -6 -8 -3 -8 -9 -6 -8 -8 -6 -4 -0 -2 -6 -1 -3 -8 -9 -8 -7 -7 -7 -8 -0 -7 -9 -5 -0 -3 -7 -4 -6 -4 -7 -2 -9 -6 -4 -0 -4 -6 -1 -8 -4 -9 -9 -4 -3 -6 -9 -0 -4 -1 -8 -5 -7 -8 -5 -2 -8 -8 -7 -0 -5 -0 -7 -2 -3 -4 -7 -8 -1 -5 -5 -9 -5 -2 -5 -0 -5 -6 -9 -7 -4 -1 -1 -9 -1 -9 -9 -4 -8 -4 -3 -7 -6 -2 -0 -1 -8 -9 -6 -7 -9 -5 -7 -5 -3 -1 -6 -0 -3 -2 -4 -5 -1 -5 -1 -5 -3 -5 -8 -5 -8 -5 -2 -7 -0 -1 -1 -1 -9 -0 -9 -9 -2 -0 -7 -5 -1 -3 -4 -7 -8 -0 -1 -2 -9 -3 -1 -6 -2 -0 -5 -0 -1 -6 -1 -9 -7 -7 -8 -6 -8 -4 -0 -7 -1 -0 -1 -3 -4 -9 -0 -9 -4 -5 -1 -6 -9 -4 -6 -6 -6 -1 -1 -3 -5 -8 -7 -4 -8 -6 -9 -8 -1 -1 -1 -3 -3 -5 -6 -5 -6 -2 -8 -7 -9 -1 -1 -9 -9 -0 -6 -6 -2 -3 -8 -3 -0 -0 -5 -0 -9 -2 -1 -3 -3 -5 -1 -8 -9 -9 -1 -5 -6 -9 -1 -7 -2 -9 -1 -6 -3 -5 -0 -7 -7 -6 -5 -1 -8 -1 -3 -4 -5 -0 -7 -4 -2 -8 -0 -4 -5 -1 -9 -7 -4 -2 -8 -8 -5 -8 -6 -8 -7 -9 -9 -7 -9 -4 -2 -6 -9 -1 -9 -9 -0 -6 -8 -3 -0 -1 -4 -6 -6 -8 -1 -9 -4 -3 -7 -2 -8 -5 -1 -9 -6 -8 -0 -0 -1 -7 -9 -4 -9 -6 -0 -7 -3 -9 -7 -2 -7 -4 -2 -0 -5 -2 -6 -4 -1 -7 -3 -0 -4 -3 -1 -6 -1 -4 -9 -2 -1 -0 -3 -3 -9 -0 -9 -6 -6 -0 -2 -7 -3 -0 -5 -8 -8 -5 -3 -5 -0 -8 -0 -7 -3 -3 -2 -5 -1 -3 -6 -5 -9 -7 -2 -2 -9 -0 -8 -8 -0 -5 -0 -8 -0 -4 -1 -6 -7 -7 -8 -1 -0 -2 -6 -4 -6 -8 -8 -6 -6 -4 -9 -4 -5 -5 -6 -3 -1 -7 -6 -1 -9 -9 -0 -6 -6 -5 -2 -0 -8 -9 -3 -1 -8 -1 -0 -3 -0 -6 -6 -8 -6 -2 -3 -2 -9 -2 -0 -6 -0 -2 -1 -2 -6 -6 -1 -7 -7 -0 -2 -9 -4 -1 -0 -0 -7 -5 -8 -5 -6 -1 -7 -0 -6 -6 -5 -9 -3 -6 -4 -2 -1 -1 -7 -1 -5 -9 -3 -3 -7 -6 -1 -6 -2 -1 -2 -5 -7 -0 -5 -2 -6 -0 -9 -1 -0 -5 -5 -2 -4 -6 -3 -0 -9 -4 -9 -4 -7 -0 -0 -4 -0 -9 -2 -7 -1 -1 -2 -1 -1 -6 -3 -2 -5 -5 -1 -8 -2 -0 -3 -8 -4 -1 -6 -8 -5 -8 -5 -3 -5 -8 -6 -7 -1 -6 -1 -9 -3 -9 -3 -9 -3 -1 -9 -8 -8 -3 -1 -7 -8 -6 -5 -4 -6 -0 -0 -2 -0 -0 -0 -2 -6 -7 -5 -1 -0 -0 -0 -9 -3 -8 -0 -9 -5 -9 -4 -2 -3 -2 -7 -2 -0 -2 -6 -2 -2 -8 -8 -8 -5 -1 -2 -2 -6 -7 -0 -2 -2 -1 -4 -3 -4 -1 -9 -7 -0 -5 -6 -5 -1 -8 -5 -3 -3 -9 -0 -6 -6 -9 -2 -1 -0 -4 -8 -4 -5 -7 -9 -2 -2 -2 -1 -1 -4 -4 -7 -8 -6 -8 -6 -5 -5 -8 -1 -8 -2 -9 -1 -9 -7 -2 -4 -4 -4 -9 -9 -3 -0 -5 -5 -5 -5 -2 -7 -0 -0 -1 -3 -5 -3 -0 -0 -0 -3 -1 -4 -0 -2 -6 -9 -7 -6 -9 -6 -6 -9 -0 -2 -2 -4 -1 -9 -2 -7 -2 -5 -9 -4 -6 -2 -7 -6 -8 -9 -1 -8 -8 -0 -2 -4 -9 -9 -1 -7 -1 -9 -9 -2 -1 -4 -5 -2 -7 -6 -0 -0 -3 -0 -6 -6 -8 -0 -0 -3 -6 -7 -8 -0 -8 -6 -4 -5 -8 -1 -5 -0 -6 -6 -9 -5 -1 -6 -4 -3 -0 -7 -2 -5 -5 -9 -9 -5 -6 -9 -0 -1 -9 -2 -9 -5 -6 -4 -9 -7 -6 -2 -8 -0 -4 -1 -8 -2 -1 -3 -4 -1 -7 -7 -2 -9 -3 -8 -6 -3 -2 -2 -6 -3 -5 -7 -1 -1 -1 -7 -7 -5 -2 -9 -7 -9 -1 -5 -6 -4 -4 -4 -1 -9 -0 -5 -4 -3 -4 -6 -6 -3 -8 -6 -7 -4 -9 -5 -9 -0 -0 -0 -8 -6 -4 -2 -3 -0 -9 -8 -5 -9 -8 -6 -7 -6 -1 -4 -0 -1 -6 -1 -4 -5 -6 -1 -1 -9 -1 -5 -7 -5 -9 -2 -5 -1 -0 -6 -7 -1 -1 -6 -4 -0 -5 -6 -0 -8 -0 -7 -4 -9 -9 -0 -2 -2 -0 -3 -0 -5 -1 -0 -1 -1 -2 -8 -2 -6 -2 -6 -2 -0 -2 -9 -7 -3 -3 -8 -5 -0 -6 -6 -9 -5 -3 -2 -7 -3 -4 -7 -7 -5 -8 -1 -1 -6 -0 -5 -7 -5 -9 -5 -0 -4 -3 -7 -6 -3 -5 -4 -5 -1 -1 -9 -4 -8 -3 -7 -3 -0 -9 -4 -7 -8 -4 -8 -1 -1 -0 -5 -6 -7 -9 -5 -6 -1 -0 -6 -0 -2 -1 -7 -9 -0 -3 -2 -8 -7 -0 -1 -3 -4 -9 -0 -7 -6 -1 -3 -9 -2 -3 -1 -4 -1 -1 -7 -4 -4 -5 -1 -2 -8 -9 -6 -6 -5 -4 -0 -6 -1 -3 -5 -2 -8 -1 -9 -0 -5 -3 -3 -9 -2 -9 -1 -7 -4 -5 -0 -5 -1 -9 -1 -1 -9 -9 -9 -6 -6 -1 -4 -5 -4 -8 -7 -6 -1 -1 -0 -4 -6 -2 -9 -9 -5 -3 -6 -4 -3 -3 -8 -2 -2 -1 -5 -8 -7 -5 -2 -8 -0 -7 -2 -5 -5 -6 -4 -8 -7 -3 -8 -2 -1 -3 -9 -5 -0 -4 -0 -6 -5 -5 -0 -0 -6 -7 -7 -1 -1 -1 -5 -6 -6 -5 -1 -4 -9 -5 -0 -4 -9 -1 -7 -7 -4 -6 -9 -3 -0 -0 -7 -8 -0 -8 -3 -0 -5 -8 -5 -1 -6 -0 -9 -0 -9 -5 -3 -0 -1 -7 -1 -1 -4 -4 -0 -4 -1 -7 -1 -5 -5 -4 -5 -6 -8 -3 -3 -1 -1 -8 -0 -9 -8 -2 -7 -2 -9 -8 -9 -5 -4 -8 -2 -2 -3 -2 -6 -8 -9 -1 -1 -9 -5 -9 -1 -7 -2 -7 -9 -1 -2 -9 -7 -5 -5 -5 -7 -4 -3 -5 -9 -7 -8 -0 -6 -1 -4 -8 -2 -3 -1 -8 -2 -9 -7 -9 -7 -3 -3 -2 -9 -2 -7 -6 -1 -9 -9 -2 -1 -2 -5 -8 -1 -6 -3 -0 -9 -1 -2 -6 -5 -5 -8 -4 -2 -6 -1 -6 -1 -0 -4 -9 -0 -1 -4 -1 -2 -1 -6 -0 -7 -6 -1 -0 -0 -1 -8 -3 -0 -6 -7 -0 -3 -2 -0 -1 -7 -8 -4 -4 -6 -1 -6 -2 -0 -0 -3 -9 -9 -8 -7 -5 -8 -0 -1 -0 -0 -0 -5 -6 -2 -2 -5 -3 -8 -8 -1 -9 -2 -7 -4 -0 -5 -3 -8 -3 -6 -9 -9 -3 -4 -8 -9 -4 -3 -2 -9 -2 -3 -7 -3 -7 -7 -7 -0 -9 -9 -4 -2 -3 -6 -6 -7 -9 -3 -9 -7 -1 -4 -9 -0 -9 -9 -8 -0 -0 -9 -9 -7 -3 -9 -4 -4 -9 -2 -1 -9 -9 -6 -9 -1 -9 -6 -4 -7 -7 -7 -2 -7 -6 -2 -9 -6 -6 -7 -3 -9 -8 -1 -0 -9 -2 -8 -0 -3 -1 -4 -5 -2 -1 -9 -4 -4 -1 -0 -9 -1 -9 -7 -4 -5 -9 -3 -8 -5 -7 -0 -1 -4 -1 -8 -1 -6 -6 -9 -6 -8 -8 -1 -6 -2 -7 -8 -0 -2 -0 -4 -5 -5 -8 -1 -7 -6 -5 -4 -6 -0 -2 -2 -1 -5 -7 -2 -4 -6 -4 -4 -9 -2 -2 -7 -6 -1 -7 -1 -6 -3 -9 -7 -5 -1 -7 -9 -2 -2 -5 -7 -3 -5 -7 -6 -2 -8 -7 -2 -8 -9 -9 -2 -9 -2 -4 -4 -1 -6 -0 -6 -9 -6 -5 -6 -9 -6 -1 -2 -2 -5 -0 -9 -4 -1 -9 -4 -3 -6 -9 -6 -5 -7 -0 -3 -0 -0 -2 -7 -0 -7 -8 -7 -2 -7 -5 -8 -0 -7 -2 -9 -6 -2 -0 -9 -7 -3 -5 -0 -5 -9 -0 -9 -6 -9 -1 -9 -1 -0 -0 -8 -8 -9 -8 -3 -9 -7 -7 -8 -2 -5 -4 -7 -5 -5 -7 -1 -1 -9 -2 -7 -9 -5 -7 -6 -1 -2 -2 -9 -1 -4 -6 -5 -4 -4 -8 -4 -7 -1 -2 -0 -7 -6 -7 -6 -7 -1 -5 -2 -9 -2 -7 -6 -6 -6 -1 -1 -4 -6 -9 -4 -2 -1 -0 -5 -1 -5 -7 -4 -6 -2 -3 -5 -2 -5 -9 -1 -7 -3 -8 -0 -1 -6 -5 -9 -7 -7 -0 -9 -6 -3 -8 -9 -0 -1 -2 -1 -1 -3 -5 -9 -9 -8 -7 -1 -9 -9 -3 -5 -7 -1 -4 -4 -7 -4 -3 -9 -1 -9 -1 -3 -7 -3 -1 -4 -7 -3 -5 -6 -5 -6 -1 -8 -9 -4 -7 -1 -1 -8 -2 -6 -4 -6 -6 -0 -6 -2 -3 -3 -4 -3 -5 -6 -8 -2 -4 -3 -8 -0 -1 -0 -9 -3 -4 -2 -3 -0 -2 -5 -8 -1 -7 -5 -0 -9 -7 -7 -7 -1 -0 -4 -9 -4 -1 -6 -7 -4 -4 -6 -0 -7 -2 -2 -3 -9 -1 -1 -2 -2 -2 -3 -8 -0 -5 -2 -6 -2 -1 -1 -8 -7 -8 -2 -3 -8 -7 -1 -6 -3 -7 -0 -5 -6 -6 -7 -4 -2 -2 -1 -7 -3 -4 -3 -9 -8 -8 -0 -2 -3 -9 -1 -3 -6 -3 -8 -7 -9 -2 -6 -3 -6 -9 -2 -2 -5 -9 -3 -7 -2 -3 -6 -9 -1 -9 -6 -4 -5 -6 -5 -0 -7 -3 -9 -9 -1 -6 -9 -1 -6 -9 -3 -5 -2 -2 -7 -9 -7 -2 -9 -0 -9 -8 -2 -1 -9 -1 -2 -5 -0 -9 -0 -5 -3 -8 -9 -5 -8 -6 -1 -9 -4 -1 -6 -6 -9 -6 -2 -7 -3 -8 -2 -4 -9 -1 -6 -4 -1 -1 -2 -3 -7 -5 -5 -2 -5 -3 -2 -1 -5 -8 -0 -4 -9 -2 -4 -6 -2 -8 -9 -9 -5 -8 -0 -5 -0 -0 -6 -6 -2 -6 -2 -0 -7 -1 -2 -8 -2 -9 -1 -6 -4 -3 -0 -0 -1 -5 -9 -3 -1 -0 -2 -5 -6 -8 -4 -4 -3 -4 -9 -7 -6 -6 -8 -4 -8 -3 -3 -8 -4 -1 -8 -2 -5 -5 -2 -9 -0 -0 -4 -1 -5 -7 -7 -3 -3 -6 -2 -6 -5 -1 -7 -3 -1 -7 -7 -9 -8 -7 -3 -3 -3 -1 -6 -1 -9 -5 -9 -3 -0 -0 -2 -0 -8 -0 -0 -2 -5 -5 -8 -5 -9 -7 -8 -9 -1 -5 -9 -7 -9 -7 -3 -1 -4 -3 -8 -4 -0 -7 -0 -6 -0 -9 -8 -1 -5 -3 -5 -6 -8 -7 -9 -1 -4 -4 -0 -2 -0 -4 -5 -5 -8 -8 -8 -9 -6 -6 -5 -1 -5 -7 -7 -5 -2 -2 -2 -3 -8 -6 -4 -8 -4 -1 -2 -7 -5 -5 -0 -4 -6 -6 -1 -4 -4 -6 -5 -5 -5 -9 -4 -6 -1 -3 -0 -2 -9 -5 -2 -3 -3 -2 -8 -1 -5 -6 -3 -4 -6 -4 -6 -3 -0 -0 -5 -5 -0 -7 -9 -1 -3 -1 -4 -8 -7 -5 -8 -0 -0 -0 -0 -6 -9 -7 -9 -9 -9 -0 -2 -4 -0 -7 -6 -1 -1 -4 -5 -3 -0 -8 -7 -8 -1 -3 -4 -1 -5 -2 -3 -0 -7 -1 -0 -3 -8 -5 -0 -3 -1 -5 -4 -5 -3 -6 -1 -6 -6 -1 -4 -7 -3 -7 -8 -6 -0 -5 -6 -6 -9 -5 -5 -2 -2 -6 -1 -5 -6 -0 -3 -2 -6 -6 -1 -5 -9 -5 -4 -6 -1 -1 -7 -2 -0 -5 -8 -1 -0 -4 -8 -6 -1 -9 -5 -1 -9 -6 -6 -7 -6 -7 -3 -1 -1 -1 -6 -4 -8 -1 -4 -4 -1 -4 -1 -1 -7 -9 -6 -3 -8 -6 -6 -6 -2 -5 -9 -4 -5 -1 -6 -6 -3 -0 -7 -9 -9 -6 -1 -1 -5 -1 -8 -1 -6 -9 -2 -7 -7 -0 -1 -9 -3 -9 -3 -2 -4 -9 -8 -7 -7 -1 -1 -6 -9 -5 -3 -5 -2 -8 -8 -9 -2 -8 -3 -9 -0 -8 -6 -6 -5 -0 -6 -7 -8 -9 -7 -4 -2 -7 -2 -8 -0 -0 -4 -2 -9 -0 -1 -9 -9 -9 -1 -7 -0 -7 -0 -3 -1 -6 -8 -1 -9 -4 -0 -7 -0 -9 -8 -1 -8 -8 -1 -2 -6 -5 -1 -0 -2 -6 -0 -3 -7 -0 -5 -3 -7 -7 -0 -5 -5 -2 -5 -1 -2 -7 -2 -7 -5 -6 -7 -6 -2 -4 -0 -1 -8 -6 -6 -9 -4 -6 -6 -2 -4 -4 -0 -1 -7 -9 -1 -8 -3 -3 -1 -4 -5 -2 -2 -7 -4 -1 -7 -4 -8 -9 -6 -8 -7 -8 -7 -0 -9 -4 -0 -2 -5 -0 -3 -6 -9 -4 -1 -0 -1 -2 -8 -1 -6 -0 -1 -2 -6 -3 -3 -2 -0 -6 -9 -2 -1 -3 -2 -8 -8 -0 -6 -1 -1 -8 -7 -4 -8 -3 -1 -9 -5 -5 -1 -8 -5 -0 -5 -9 -9 -5 -4 -5 -7 -3 -5 -7 -8 -0 -2 -1 -4 -0 -9 -1 -7 -9 -1 -6 -7 -1 -3 -5 -4 -4 -4 -0 -3 -5 -1 -4 -2 -1 -4 -0 -1 -1 -7 -5 -7 -1 -3 -3 -0 -4 -9 -4 -6 -8 -2 -9 -5 -1 -9 -5 -0 -8 -2 -5 -4 -3 -6 -7 -2 -5 -3 -6 -0 -1 -4 -9 -3 -6 -6 -5 -1 -9 -3 -0 -3 -8 -9 -7 -1 -3 -0 -5 -7 -9 -0 -4 -5 -9 -8 -2 -8 -3 -1 -5 -8 -3 -7 -5 -0 -3 -5 -4 -4 -2 -5 -9 -6 -6 -0 -1 -4 -1 -2 -6 -5 -0 -3 -8 -3 -0 -1 -1 -2 -9 -6 -1 -1 -0 -7 -2 -8 -4 -7 -2 -1 -6 -1 -8 -6 -7 -7 -6 -3 -2 -4 -1 -4 -5 -8 -3 -5 -4 -8 -4 -6 -6 -1 -7 -5 -6 -1 -3 -2 -2 -7 -0 -0 -2 -9 -1 -3 -3 -3 -3 -9 -3 -4 -1 -2 -6 -8 -1 -9 -5 -4 -7 -9 -0 -7 -2 -9 -9 -1 -4 -0 -6 -7 -8 -7 -4 -7 -1 -9 -4 -9 -6 -5 -1 -9 -3 -6 -6 -5 -2 -8 -3 -8 -2 -4 -0 -6 -0 -1 -5 -9 -0 -1 -6 -5 -2 -3 -0 -3 -0 -0 -8 -4 -5 -0 -5 -3 -0 -2 -3 -1 -2 -4 -3 -0 -2 -0 -7 -9 -3 -3 -9 -6 -5 -9 -8 -1 -8 -0 -6 -5 -1 -9 -5 -1 -7 -1 -9 -6 -2 -1 -1 -0 -5 -6 -4 -1 -9 -5 -3 -4 -5 -3 -8 -5 -3 -7 -2 -2 -2 -9 -8 -3 -0 -6 -7 -6 -2 -8 -6 -2 -1 -5 -7 -2 -1 -2 -3 -9 -4 -1 -9 -2 -8 -4 -6 -7 -8 -4 -9 -9 -4 -5 -1 -2 -0 -2 -9 -6 -1 -5 -0 -9 -5 -4 -7 -5 -8 -1 -5 -1 -1 -0 -5 -4 -2 -0 -0 -9 -0 -2 -7 -7 -5 -2 -5 -7 -6 -3 -7 -5 -4 -0 -8 -6 -3 -7 -3 -1 -6 -2 -4 -4 -4 -0 -5 -1 -8 -8 -3 -4 -5 -0 -2 -2 -0 -1 -1 -6 -1 -4 -3 -1 -5 -9 -9 -2 -5 -0 -0 -2 -4 -2 -8 -2 -8 -4 -9 -4 -4 -8 -0 -5 -8 -5 -9 -9 -4 -4 -9 -2 -4 -8 -3 -0 -9 -8 -7 -6 -2 -4 -2 -6 -2 -2 -7 -1 -1 -0 -2 -9 -9 -0 -5 -4 -7 -0 -5 -9 -4 -1 -5 -6 -6 -8 -1 -2 -4 -3 -3 -2 -9 -7 -1 -4 -9 -6 -9 -0 -2 -4 -4 -5 -7 -8 -9 -4 -2 -4 -1 -7 -8 -2 -8 -0 -1 -2 -9 -9 -7 -0 -1 -2 -6 -9 -4 -2 -1 -4 -5 -0 -8 -6 -1 -9 -5 -1 -6 -2 -1 -8 -0 -5 -1 -9 -9 -6 -6 -8 -1 -1 -7 -9 -4 -7 -7 -3 -4 -6 -0 -6 -3 -0 -6 -3 -0 -1 -3 -2 -6 -3 -2 -0 -5 -9 -1 -3 -9 -0 -2 -0 -5 -8 -9 -6 -6 -5 -2 -9 -7 -6 -0 -7 -9 -1 -3 -9 -1 -7 -6 -4 -9 -7 -6 -0 -0 -4 -8 -4 -9 -8 -3 -5 -1 -7 -7 -1 -4 -1 -6 -3 -9 -7 -6 -6 -1 -9 -4 -0 -0 -4 -4 -8 -3 -1 -7 -5 -8 -3 -7 -4 -1 -0 -3 -2 -9 -3 -2 -2 -6 -0 -9 -9 -8 -3 -1 -8 -6 -4 -2 -2 -1 -7 -3 -1 -9 -5 -0 -6 -8 -1 -7 -8 -3 -7 -6 -7 -7 -3 -9 -2 -4 -5 -7 -7 -9 -0 -9 -1 -8 -1 -8 -9 -4 -1 -9 -9 -6 -1 -7 -5 -3 -5 -3 -1 -8 -0 -0 -1 -0 -3 -6 -6 -1 -9 -9 -0 -1 -0 -2 -0 -6 -7 -7 -5 -3 -1 -8 -9 -7 -2 -4 -6 -2 -5 -0 -6 -5 -6 -8 -3 -4 -1 -1 -4 -6 -8 -7 -1 -8 -6 -8 -1 -2 -3 -3 -2 -3 -3 -6 -8 -2 -7 -6 -9 -8 -0 -9 -7 -7 -7 -8 -3 -1 -2 -3 -1 -4 -3 -6 -4 -8 -3 -1 -3 -6 -9 -6 -9 -0 -3 -9 -0 -7 -7 -3 -0 -0 -9 -3 -5 -7 -9 -8 -6 -0 -7 -7 -2 -8 -7 -9 -1 -2 -5 -6 -0 -7 -8 -1 -0 -3 -6 -9 -9 -5 -0 -3 -0 -1 -1 -6 -2 -5 -9 -5 -4 -0 -5 -5 -1 -2 -7 -6 -5 -3 -0 -5 -6 -9 -0 -7 -8 -1 -7 -1 -8 -7 -2 -7 -9 -7 -3 -2 -1 -2 -8 -4 -9 -2 -1 -3 -1 -8 -1 -6 -2 -7 -3 -9 -9 -4 -1 -6 -3 -1 -1 -7 -5 -3 -5 -2 -2 -9 -7 -1 -3 -9 -1 -1 -1 -8 -1 -6 -2 -6 -6 -1 -8 -2 -9 -7 -0 -3 -5 -7 -8 -7 -8 -7 -9 -3 -7 -1 -8 -5 -4 -7 -5 -3 -0 -5 -9 -7 -0 -7 -7 -4 -4 -5 -8 -9 -2 -9 -7 -5 -1 -4 -9 -9 -6 -4 -2 -0 -2 -6 -2 -2 -8 -4 -1 -6 -1 -2 -2 -1 -3 -1 -2 -4 -6 -4 -3 -5 -5 -5 -1 -0 -1 -1 -9 -1 -7 -2 -6 -9 -6 -5 -2 -5 -4 -8 -9 -3 -4 -8 -9 -7 -3 -5 -6 -5 -9 -8 -5 -7 -0 -4 -5 -1 -0 -1 -6 -9 -2 -1 -9 -7 -0 -9 -3 -1 -6 -3 -6 -0 -5 -2 -6 -5 -7 -9 -0 -2 -0 -8 -4 -0 -9 -9 -6 -0 -7 -5 -0 -1 -9 -6 -1 -1 -2 -7 -0 -3 -3 -8 -9 -9 -8 -4 -5 -4 -7 -9 -8 -6 -9 -8 -3 -0 -9 -6 -7 -9 -3 -5 -8 -1 -2 -7 -8 -7 -1 -6 -8 -3 -1 -6 -8 -7 -6 -9 -1 -5 -9 -0 -9 -4 -3 -3 -3 -4 -1 -9 -3 -0 -5 -2 -0 -6 -1 -6 -7 -9 -0 -4 -5 -4 -3 -5 -9 -4 -8 -7 -2 -8 -2 -6 -7 -9 -7 -6 -4 -6 -3 -4 -5 -7 -4 -2 -2 -9 -6 -9 -0 -5 -0 -0 -3 -3 -5 -3 -7 -6 -2 -2 -4 -9 -0 -5 -3 -1 -8 -5 -9 -9 -7 -1 -4 -3 -6 -7 -8 -1 -6 -4 -1 -4 -9 -7 -1 -3 -0 -8 -7 -8 -7 -1 -6 -9 -9 -8 -3 -1 -6 -8 -5 -0 -8 -4 -1 -6 -8 -1 -9 -4 -3 -8 -4 -0 -9 -9 -4 -9 -3 -7 -2 -8 -0 -4 -3 -7 -4 -4 -6 -5 -3 -0 -5 -3 -1 -4 -6 -5 -5 -9 -3 -1 -1 -3 -5 -0 -9 -2 -3 -5 -9 -2 -4 -3 -1 -0 -7 -7 -5 -6 -0 -4 -8 -8 -2 -0 -3 -7 -7 -0 -8 -3 -8 -2 -0 -0 -9 -5 -7 -2 -0 -1 -1 -3 -9 -2 -4 -4 -1 -4 -9 -2 -9 -1 -1 -9 -0 -2 -7 -9 -7 -9 -6 -7 -7 -7 -6 -7 -9 -4 -7 -1 -1 -6 -1 -1 -1 -1 -6 -3 -1 -1 -5 -6 -1 -3 -8 -1 -6 -9 -3 -9 -9 -5 -0 -5 -9 -6 -3 -0 -2 -2 -2 -4 -2 -0 -6 -7 -7 -0 -4 -7 -3 -5 -8 -7 -4 -0 -7 -4 -2 -4 -2 -9 -0 -6 -0 -4 -4 -7 -8 -0 -9 -9 -6 -1 -6 -6 -9 -9 -1 -3 -8 -0 -9 -4 -4 -9 -0 -0 -8 -1 -1 -0 -2 -5 -2 -0 -9 -2 -3 -6 -2 -0 -5 -9 -2 -9 -4 -1 -5 -1 -9 -1 -6 -4 -2 -1 -5 -9 -6 -0 -4 -4 -1 -3 -3 -3 -0 -4 -1 -5 -6 -1 -2 -0 -7 -8 -6 -4 -1 -2 -8 -4 -4 -8 -2 -1 -1 -9 -5 -1 -9 -0 -2 -7 -1 -6 -0 -7 -4 -4 -4 -5 -1 -7 -9 -6 -4 -5 -6 -9 -1 -4 -7 -9 -7 -8 -0 -8 -6 -9 -2 -7 -1 -2 -8 -1 -1 -9 -5 -8 -8 -6 -0 -7 -6 -4 -6 -3 -2 -6 -0 -9 -1 -6 -5 -2 -7 -3 -9 -7 -1 -0 -6 -9 -7 -6 -4 -0 -5 -0 -9 -7 -1 -3 -6 -4 -4 -9 -7 -7 -4 -2 -2 -1 -1 -5 -3 -5 -9 -7 -9 -3 -4 -8 -7 -7 -1 -1 -9 -9 -4 -4 -3 -0 -3 -9 -8 -1 -6 -4 -0 -6 -2 -9 -0 -6 -3 -6 -6 -6 -5 -1 -0 -9 -3 -6 -3 -8 -0 -1 -2 -0 -3 -2 -5 -7 -9 -1 -9 -8 -9 -4 -8 -9 -8 -8 -9 -1 -5 -1 -1 -6 -7 -0 -2 -8 -7 -4 -5 -5 -4 -6 -8 -1 -4 -0 -9 -4 -3 -7 -9 -3 -0 -2 -9 -6 -3 -3 -1 -2 -3 -4 -6 -7 -9 -3 -6 -7 -9 -3 -3 -1 -2 -4 -5 -9 -9 -0 -1 -9 -7 -6 -8 -7 -8 -0 -6 -7 -9 -6 -7 -1 -2 -7 -8 -6 -0 -8 -1 -1 -7 -7 -3 -5 -3 -7 -6 -4 -0 -4 -1 -9 -1 -5 -2 -1 -6 -1 -0 -9 -6 -6 -0 -2 -1 -7 -9 -5 -8 -8 -7 -8 -3 -0 -2 -1 -9 -9 -9 -1 -3 -3 -6 -9 -0 -3 -7 -4 -1 -5 -1 -7 -5 -4 -2 -5 -0 -6 -4 -1 -9 -7 -9 -6 -7 -8 -0 -2 -3 -9 -8 -7 -2 -3 -4 -9 -5 -6 -8 -6 -6 -1 -2 -8 -1 -7 -6 -9 -1 -8 -7 -6 -2 -2 -7 -3 -0 -4 -6 -8 -0 -1 -7 -3 -2 -0 -8 -8 -3 -5 -4 -1 -8 -6 -4 -1 -0 -1 -1 -0 -2 -4 -7 -6 -4 -3 -8 -6 -4 -6 -9 -1 -4 -6 -1 -6 -9 -3 -7 -4 -9 -1 -3 -8 -2 -9 -4 -9 -5 -8 -8 -9 -2 -6 -1 -5 -5 -3 -6 -7 -0 -3 -4 -2 -6 -7 -6 -1 -5 -7 -7 -2 -7 -3 -3 -3 -9 -1 -2 -1 -1 -1 -1 -6 -0 -6 -9 -6 -9 -6 -6 -1 -1 -0 -0 -7 -6 -9 -5 -1 -7 -6 -9 -7 -4 -8 -2 -3 -5 -8 -6 -2 -2 -1 -0 -8 -9 -2 -4 -4 -0 -0 -9 -6 -8 -0 -3 -9 -7 -9 -7 -9 -7 -3 -7 -2 -8 -2 -3 -8 -6 -1 -2 -7 -2 -1 -2 -7 -1 -4 -0 -5 -3 -5 -5 -3 -3 -8 -6 -9 -9 -0 -2 -5 -7 -9 -6 -8 -6 -2 -3 -1 -7 -3 -8 -4 -9 -9 -0 -3 -8 -7 -4 -8 -2 -8 -7 -7 -5 -7 -8 -6 -9 -5 -1 -5 -9 -9 -0 -4 -9 -7 -4 -7 -9 -0 -1 -4 -3 -5 -9 -0 -9 -4 -4 -8 -6 -1 -2 -1 -1 -9 -2 -7 -7 -0 -1 -5 -1 -6 -9 -8 -3 -4 -0 -3 -1 -0 -5 -3 -9 -8 -1 -7 -8 -3 -6 -8 -1 -1 -7 -1 -4 -5 -0 -8 -9 -6 -0 -2 -7 -1 -6 -1 -0 -1 -2 -1 -0 -5 -4 -5 -1 -2 -1 -1 -2 -7 -3 -3 -6 -0 -2 -8 -5 -9 -8 -9 -3 -5 -3 -4 -0 -6 -6 -3 -5 -4 -6 -9 -1 -2 -3 -9 -0 -3 -4 -9 -6 -8 -6 -9 -3 -8 -4 -8 -4 -1 -1 -7 -3 -8 -1 -2 -3 -1 -9 -4 -7 -2 -4 -0 -1 -4 -3 -6 -2 -4 -1 -5 -9 -7 -1 -7 -6 -6 -1 -6 -7 -4 -8 -2 -1 -0 -9 -6 -2 -5 -5 -3 -9 -0 -6 -2 -5 -6 -0 -3 -4 -3 -6 -7 -6 -0 -3 -5 -5 -8 -4 -0 -6 -9 -5 -6 -0 -1 -7 -0 -7 -5 -6 -4 -3 -4 -4 -6 -2 -2 -4 -7 -7 -0 -7 -8 -7 -4 -9 -2 -4 -7 -1 -3 -9 -4 -0 -1 -2 -9 -7 -9 -9 -3 -4 -5 -5 -1 -4 -5 -6 -1 -2 -8 -8 -4 -6 -5 -9 -6 -1 -0 -5 -4 -0 -3 -1 -1 -5 -5 -3 -1 -2 -4 -6 -9 -9 -4 -1 -7 -9 -0 -4 -1 -1 -9 -3 -6 -2 -2 -1 -6 -7 -7 -1 -7 -3 -0 -1 -1 -1 -3 -1 -1 -5 -2 -7 -1 -2 -1 -8 -8 -0 -7 -5 -5 -4 -0 -8 -7 -7 -2 -4 -5 -8 -2 -0 -7 -4 -1 -1 -1 -1 -5 -4 -2 -1 -0 -2 -4 -7 -0 -2 -8 -0 -2 -1 -9 -7 -3 -3 -4 -4 -1 -1 -4 -2 -3 -1 -0 -9 -8 -5 -9 -8 -6 -1 -3 -1 -6 -3 -7 -6 -1 -7 -3 -3 -5 -7 -7 -6 -0 -8 -1 -7 -9 -7 -3 -2 -1 -3 -9 -4 -5 -1 -9 -7 -7 -2 -3 -4 -8 -0 -9 -4 -1 -1 -7 -2 -6 -6 -4 -1 -0 -9 -2 -1 -3 -7 -9 -0 -2 -8 -5 -8 -9 -9 -7 -5 -6 -8 -7 -4 -7 -0 -1 -7 -3 -5 -6 -9 -9 -5 -3 -1 -2 -0 -8 -1 -4 -1 -1 -1 -8 -9 -9 -7 -9 -6 -9 -6 -2 -4 -4 -2 -1 -8 -7 -5 -4 -6 -2 -1 -6 -7 -1 -9 -0 -0 -5 -8 -9 -7 -2 -0 -5 -9 -2 -2 -4 -2 -4 -3 -0 -1 -8 -5 -1 -8 -2 -1 -3 -2 -4 -0 -4 -1 -8 -3 -7 -9 -5 -8 -8 -6 -4 -5 -7 -4 -9 -6 -8 -8 -6 -6 -5 -7 -9 -9 -4 -2 -3 -6 -6 -0 -0 -6 -6 -9 -1 -4 -4 -7 -3 -7 -3 -2 -7 -8 -4 -5 -6 -2 -0 -3 -9 -5 -0 -0 -7 -8 -8 -3 -5 -8 -6 -3 -7 -5 -0 -2 -7 -8 -6 -1 -5 -3 -4 -4 -3 -4 -1 -3 -3 -8 -2 -1 -5 -7 -1 -7 -4 -9 -3 -1 -7 -8 -3 -6 -8 -9 -5 -7 -2 -8 -8 -8 -7 -2 -9 -7 -8 -1 -7 -8 -2 -0 -5 -1 -0 -6 -9 -6 -4 -9 -6 -9 -8 -3 -1 -6 -9 -9 -4 -9 -6 -8 -5 -8 -1 -9 -3 -9 -3 -1 -8 -0 -5 -2 -7 -1 -0 -5 -2 -4 -9 -3 -8 -9 -6 -6 -2 -8 -6 -7 -0 -0 -3 -3 -6 -5 -1 -1 -0 -9 -3 -1 -5 -8 -3 -2 -6 -8 -3 -8 -7 -4 -2 -9 -7 -3 -9 -8 -2 -3 -5 -1 -0 -9 -9 -2 -3 -7 -7 -9 -7 -8 -6 -0 -5 -4 -3 -7 -4 -1 -3 -4 -8 -7 -0 -0 -5 -6 -4 -5 -1 -9 -9 -2 -7 -7 -9 -2 -9 -8 -2 -1 -8 -2 -3 -5 -5 -3 -2 -0 -9 -8 -6 -1 -2 -0 -1 -1 -5 -6 -8 -8 -1 -3 -9 -0 -0 -3 -2 -4 -8 -9 -8 -4 -1 -9 -0 -9 -9 -2 -9 -4 -4 -7 -9 -9 -1 -2 -0 -5 -3 -9 -6 -7 -2 -5 -4 -4 -0 -1 -0 -9 -4 -0 -1 -9 -6 -0 -6 -1 -9 -3 -7 -8 -2 -7 -9 -2 -8 -7 -5 -6 -4 -9 -8 -7 -0 -1 -1 -6 -9 -6 -3 -2 -6 -8 -5 -5 -5 -2 -8 -3 -6 -2 -6 -9 -6 -5 -2 -0 -5 -8 -7 -4 -9 -7 -0 -2 -1 -9 -0 -8 -1 -0 -6 -2 -5 -0 -9 -0 -8 -5 -4 -6 -5 -3 -8 -7 -0 -9 -1 -4 -1 -5 -2 -2 -4 -2 -9 -8 -7 -1 -8 -3 -4 -7 -1 -9 -0 -9 -8 -7 -9 -4 -1 -9 -7 -0 -0 -5 -7 -4 -0 -6 -5 -4 -2 -5 -5 -5 -7 -1 -5 -3 -1 -8 -0 -9 -4 -0 -1 -6 -8 -0 -6 -2 -3 -4 -4 -2 -5 -6 -2 -1 -6 -1 -5 -9 -1 -7 -9 -0 -7 -9 -4 -2 -6 -0 -6 -6 -1 -7 -2 -8 -0 -6 -0 -1 -9 -9 -3 -7 -0 -2 -4 -6 -2 -1 -2 -1 -7 -6 -9 -0 -0 -1 -4 -8 -7 -3 -8 -6 -9 -3 -1 -3 -7 -9 -6 -0 -1 -7 -1 -1 -4 -1 -6 -6 -3 -1 -8 -1 -9 -6 -2 -1 -0 -1 -6 -7 -9 -0 -5 -1 -3 -6 -6 -1 -4 -9 -4 -5 -5 -2 -6 -6 -3 -4 -3 -4 -7 -0 -7 -0 -8 -2 -0 -0 -7 -7 -1 -0 -5 -2 -2 -3 -9 -1 -7 -6 -8 -3 -2 -0 -1 -5 -8 -2 -6 -0 -0 -5 -9 -0 -5 -6 -6 -4 -2 -7 -1 -2 -9 -5 -8 -7 -4 -9 -2 -8 -9 -8 -3 -3 -7 -3 -2 -0 -4 -9 -0 -3 -7 -6 -2 -0 -0 -7 -2 -1 -7 -1 -0 -8 -6 -0 -5 -7 -9 -8 -1 -5 -1 -9 -6 -3 -2 -0 -6 -8 -7 -0 -3 -9 -9 -0 -9 -5 -7 -6 -2 -2 -5 -3 -8 -5 -2 -1 -1 -5 -4 -6 -0 -2 -1 -2 -0 -7 -1 -1 -1 -7 -9 -0 -5 -9 -0 -8 -1 -7 -4 -2 -7 -1 -9 -3 -3 -7 -9 -4 -2 -7 -3 -7 -2 -5 -9 -0 -2 -6 -8 -7 -8 -8 -7 -0 -2 -9 -4 -0 -1 -7 -6 -7 -2 -3 -7 -6 -9 -9 -0 -3 -6 -4 -4 -2 -3 -1 -7 -6 -3 -0 -7 -0 -2 -7 -7 -7 -0 -0 -1 -9 -0 -6 -9 -7 -8 -1 -5 -1 -1 -2 -3 -9 -0 -0 -5 -2 -2 -3 -0 -9 -9 -9 -8 -2 -5 -1 -1 -5 -2 -8 -1 -5 -1 -8 -5 -3 -6 -7 -9 -1 -8 -8 -2 -1 -8 -8 -0 -9 -0 -2 -3 -5 -6 -0 -0 -0 -8 -0 -6 -3 -3 -7 -2 -5 -6 -8 -7 -5 -8 -0 -2 -7 -4 -0 -1 -3 -1 -0 -0 -0 -9 -5 -3 -0 -3 -7 -0 -6 -8 -9 -2 -6 -7 -7 -3 -1 -8 -7 -6 -3 -2 -6 -4 -9 -5 -8 -2 -7 -3 -2 -4 -8 -4 -9 -4 -1 -1 -6 -8 -9 -5 -1 -7 -3 -5 -0 -1 -3 -4 -5 -6 -2 -1 -9 -4 -9 -6 -7 -0 -1 -6 -8 -4 -3 -5 -4 -1 -6 -4 -5 -1 -2 -6 -9 -2 -4 -7 -0 -2 -1 -8 -1 -7 -7 -5 -3 -2 -8 -7 -5 -1 -4 -9 -4 -1 -7 -9 -7 -0 -6 -0 -2 -8 -2 -9 -4 -3 -0 -3 -8 -9 -1 -3 -5 -9 -2 -9 -1 -8 -1 -6 -0 -4 -8 -0 -9 -1 -0 -5 -9 -7 -7 -5 -8 -4 -7 -9 -7 -9 -6 -9 -5 -8 -4 -0 -0 -1 -9 -6 -6 -1 -6 -0 -2 -1 -8 -5 -7 -9 -4 -1 -4 -6 -2 -8 -0 -6 -5 -6 -1 -1 -3 -1 -7 -0 -3 -3 -5 -8 -7 -2 -3 -3 -7 -3 -9 -9 -8 -6 -6 -0 -5 -5 -9 -3 -0 -6 -1 -1 -3 -2 -6 -1 -5 -3 -2 -3 -8 -0 -0 -0 -1 -5 -2 -8 -7 -1 -0 -4 -9 -2 -3 -9 -7 -4 -4 -9 -6 -9 -9 -3 -9 -8 -1 -0 -6 -9 -1 -9 -4 -0 -9 -5 -0 -8 -9 -9 -4 -3 -1 -5 -5 -0 -6 -6 -6 -5 -6 -4 -4 -0 -4 -8 -5 -9 -4 -6 -4 -5 -8 -5 -7 -4 -1 -1 -6 -8 -3 -1 -0 -3 -5 -3 -7 -7 -1 -9 -9 -7 -3 -5 -9 -6 -2 -5 -2 -2 -8 -6 -5 -0 -7 -7 -3 -9 -8 -5 -0 -8 -9 -0 -6 -3 -3 -5 -9 -2 -6 -1 -3 -1 -8 -8 -1 -2 -0 -3 -5 -0 -1 -8 -0 -3 -3 -9 -8 -4 -1 -1 -3 -5 -1 -7 -4 -1 -5 -9 -9 -0 -7 -7 -6 -4 -1 -6 -1 -7 -8 -2 -1 -9 -4 -0 -9 -9 -3 -4 -2 -4 -7 -3 -9 -7 -1 -6 -5 -7 -8 -0 -1 -9 -6 -2 -6 -1 -0 -2 -4 -9 -6 -1 -1 -2 -8 -2 -6 -4 -7 -7 -1 -6 -9 -2 -9 -2 -7 -8 -6 -6 -4 -6 -5 -5 -2 -5 -7 -6 -7 -7 -9 -3 -0 -8 -9 -4 -5 -3 -8 -1 -3 -0 -9 -5 -1 -2 -0 -6 -3 -5 -9 -1 -5 -9 -9 -8 -0 -4 -5 -6 -6 -0 -6 -5 -1 -2 -6 -0 -2 -2 -9 -8 -1 -6 -2 -1 -9 -4 -8 -4 -1 -9 -9 -7 -1 -6 -7 -9 -9 -2 -4 -4 -7 -5 -9 -8 -6 -3 -6 -7 -2 -4 -6 -1 -4 -1 -9 -1 -6 -5 -6 -8 -5 -5 -9 -6 -0 -6 -9 -2 -5 -7 -6 -5 -2 -7 -7 -3 -5 -6 -6 -5 -9 -9 -5 -4 -0 -5 -5 -1 -8 -1 -2 -1 -1 -2 -3 -6 -8 -2 -1 -2 -5 -9 -2 -1 -2 -8 -6 -8 -8 -6 -0 -0 -7 -6 -2 -4 -5 -2 -9 -7 -5 -4 -6 -8 -1 -8 -5 -9 -1 -9 -3 -0 -9 -8 -8 -0 -5 -7 -3 -1 -8 -9 -3 -7 -0 -5 -7 -1 -1 -8 -8 -0 -4 -9 -6 -1 -8 -9 -6 -6 -7 -2 -9 -0 -8 -3 -3 -1 -9 -7 -6 -1 -3 -0 -2 -8 -2 -6 -5 -9 -7 -1 -7 -1 -5 -5 -1 -6 -1 -7 -2 -9 -9 -8 -1 -9 -5 -1 -4 -5 -2 -5 -1 -9 -0 -7 -1 -7 -3 -0 -6 -0 -6 -8 -5 -6 -1 -1 -1 -0 -7 -3 -3 -7 -4 -6 -7 -3 -1 -6 -1 -8 -9 -7 -6 -9 -1 -1 -4 -9 -1 -4 -1 -8 -2 -3 -6 -7 -1 -3 -4 -1 -0 -0 -8 -9 -6 -3 -0 -5 -5 -9 -0 -6 -4 -6 -0 -2 -0 -9 -1 -9 -7 -3 -2 -9 -3 -7 -4 -3 -8 -7 -5 -7 -8 -6 -0 -1 -6 -3 -9 -5 -0 -6 -7 -3 -1 -5 -5 -9 -8 -8 -1 -5 -1 -3 -7 -1 -2 -9 -5 -4 -6 -7 -3 -2 -0 -9 -5 -0 -2 -9 -0 -1 -1 -0 -5 -5 -3 -6 -9 -6 -1 -1 -7 -3 -0 -6 -7 -5 -0 -1 -1 -1 -5 -4 -5 -2 -4 -2 -8 -9 -1 -3 -5 -1 -7 -6 -5 -1 -1 -9 -4 -0 -7 -8 -5 -9 -2 -9 -2 -1 -5 -1 -0 -4 -3 -9 -8 -7 -0 -4 -9 -8 -2 -7 -7 -0 -1 -7 -4 -5 -7 -0 -3 -9 -0 -6 -4 -3 -7 -3 -7 -4 -9 -9 -7 -9 -1 -3 -6 -5 -8 -1 -0 -8 -9 -0 -1 -0 -8 -7 -5 -4 -4 -1 -2 -2 -7 -1 -2 -0 -2 -0 -6 -8 -7 -1 -3 -3 -1 -3 -8 -0 -5 -8 -1 -1 -9 -9 -1 -1 -3 -2 -2 -3 -4 -0 -1 -5 -6 -3 -3 -3 -9 -7 -1 -0 -5 -8 -7 -3 -9 -1 -9 -2 -5 -8 -9 -6 -5 -7 -2 -6 -2 -9 -2 -2 -0 -2 -0 -5 -1 -9 -8 -1 -5 -7 -1 -8 -4 -1 -9 -3 -1 -1 -8 -6 -4 -2 -0 -1 -0 -7 -2 -7 -8 -3 -1 -7 -1 -2 -4 -3 -1 -6 -5 -0 -7 -9 -1 -5 -9 -7 -5 -3 -9 -7 -2 -2 -9 -6 -1 -1 -3 -9 -0 -0 -9 -6 -0 -6 -4 -2 -9 -5 -3 -6 -6 -1 -1 -2 -6 -1 -6 -7 -2 -0 -1 -8 -9 -1 -7 -8 -7 -2 -7 -0 -0 -1 -5 -5 -8 -9 -4 -5 -4 -9 -9 -2 -0 -3 -1 -7 -1 -1 -4 -7 -2 -4 -3 -3 -5 -3 -8 -0 -8 -9 -6 -1 -9 -0 -8 -6 -6 -5 -9 -0 -2 -2 -9 -9 -8 -5 -7 -1 -8 -5 -1 -0 -4 -2 -4 -7 -3 -1 -9 -5 -0 -9 -9 -1 -2 -4 -1 -6 -9 -6 -3 -6 -4 -5 -9 -9 -0 -7 -7 -6 -6 -6 -0 -7 -4 -5 -6 -3 -9 -0 -0 -4 -2 -1 -5 -3 -0 -1 -6 -6 -7 -1 -2 -0 -9 -2 -4 -1 -5 -4 -9 -1 -6 -1 -7 -2 -1 -5 -0 -7 -1 -3 -2 -1 -1 -8 -4 -9 -5 -4 -0 -4 -6 -2 -0 -1 -6 -9 -6 -5 -8 -2 -5 -2 -1 -7 -5 -0 -0 -8 -8 -0 -0 -7 -3 -1 -3 -9 -5 -1 -3 -7 -8 -9 -0 -8 -2 -8 -0 -7 -1 -7 -6 -3 -0 -6 -4 -3 -9 -6 -7 -4 -2 -0 -9 -2 -2 -6 -1 -1 -6 -4 -5 -2 -3 -6 -9 -9 -5 -5 -2 -4 -2 -1 -5 -3 -8 -6 -9 -2 -1 -1 -4 -6 -5 -1 -1 -7 -3 -8 -3 -8 -1 -1 -9 -8 -1 -6 -0 -4 -2 -2 -8 -5 -3 -4 -3 -2 -7 -0 -3 -9 -5 -4 -7 -4 -8 -0 -6 -9 -3 -1 -5 -4 -5 -0 -1 -7 -0 -4 -5 -3 -8 -0 -6 -1 -3 -6 -9 -6 -5 -9 -7 -1 -5 -6 -5 -2 -5 -0 -6 -2 -1 -9 -9 -1 -6 -3 -3 -3 -7 -2 -9 -8 -5 -0 -1 -6 -6 -0 -1 -1 -8 -7 -5 -4 -9 -7 -0 -8 -8 -6 -7 -1 -4 -3 -6 -8 -8 -1 -1 -6 -9 -8 -1 -1 -1 -6 -1 -6 -9 -3 -5 -0 -5 -7 -7 -5 -7 -5 -5 -6 -0 -0 -1 -3 -4 -1 -8 -8 -7 -7 -2 -8 -6 -4 -6 -4 -8 -0 -6 -6 -1 -5 -1 -0 -6 -1 -6 -7 -1 -3 -2 -4 -0 -7 -9 -3 -4 -4 -3 -2 -5 -0 -9 -5 -5 -6 -8 -5 -6 -4 -9 -8 -6 -0 -9 -9 -1 -7 -3 -1 -7 -9 -9 -9 -2 -8 -0 -5 -1 -9 -3 -2 -4 -3 -1 -5 -8 -1 -4 -4 -1 -9 -7 -5 -6 -3 -6 -0 -3 -9 -1 -9 -4 -5 -1 -3 -9 -9 -4 -3 -2 -8 -1 -8 -1 -4 -1 -9 -0 -4 -0 -9 -0 -4 -1 -5 -0 -8 -0 -9 -0 -8 -1 -8 -7 -1 -8 -1 -6 -4 -0 -9 -6 -0 -7 -9 -2 -2 -5 -1 -4 -3 -3 -6 -9 -1 -0 -7 -2 -5 -4 -7 -8 -1 -9 -9 -3 -4 -3 -3 -8 -1 -7 -0 -8 -5 -7 -2 -1 -8 -6 -1 -7 -7 -9 -1 -0 -6 -5 -0 -2 -3 -9 -1 -7 -0 -8 -6 -1 -4 -9 -5 -7 -2 -4 -2 -3 -8 -2 -1 -7 -5 -1 -4 -5 -1 -8 -1 -7 -4 -4 -1 -3 -1 -0 -5 -3 -9 -7 -6 -9 -1 -1 -5 -1 -8 -4 -2 -5 -5 -8 -7 -2 -4 -0 -7 -9 -8 -6 -3 -8 -7 -4 -6 -2 -6 -4 -2 -2 -8 -8 -3 -1 -9 -1 -4 -0 -2 -1 -0 -0 -0 -9 -2 -3 -8 -3 -1 -7 -3 -0 -2 -0 -6 -0 -2 -7 -4 -5 -6 -2 -8 -9 -3 -0 -0 -0 -7 -9 -1 -6 -8 -1 -4 -2 -1 -2 -0 -6 -7 -4 -3 -5 -2 -0 -0 -4 -4 -9 -8 -5 -1 -9 -1 -2 -1 -5 -4 -9 -9 -6 -1 -8 -1 -5 -9 -9 -5 -6 -7 -6 -3 -8 -3 -4 -2 -3 -6 -3 -6 -5 -3 -4 -2 -6 -0 -1 -9 -1 -7 -7 -2 -7 -2 -9 -1 -0 -4 -6 -2 -5 -6 -0 -3 -1 -4 -8 -2 -1 -5 -5 -7 -4 -3 -0 -3 -7 -0 -2 -8 -6 -1 -1 -4 -0 -9 -0 -4 -1 -5 -3 -9 -4 -6 -5 -0 -5 -0 -1 -4 -8 -1 -0 -5 -8 -9 -6 -5 -4 -5 -5 -8 -3 -1 -9 -9 -2 -0 -3 -7 -3 -4 -3 -0 -6 -6 -5 -9 -3 -9 -2 -5 -9 -6 -3 -6 -9 -8 -2 -6 -3 -4 -1 -1 -3 -5 -8 -0 -4 -5 -4 -0 -2 -0 -6 -9 -1 -2 -3 -1 -1 -0 -1 -4 -4 -0 -6 -7 -1 -7 -2 -3 -6 -4 -3 -1 -8 -3 -9 -0 -2 -9 -9 -1 -3 -8 -6 -3 -7 -8 -0 -2 -9 -9 -9 -1 -0 -1 -5 -5 -4 -2 -4 -5 -3 -8 -6 -7 -9 -5 -2 -5 -1 -1 -2 -5 -0 -6 -9 -8 -8 -7 -1 -9 -9 -9 -2 -1 -3 -9 -6 -3 -4 -6 -1 -0 -4 -9 -1 -5 -3 -7 -9 -7 -6 -7 -6 -5 -9 -9 -6 -6 -9 -0 -4 -7 -7 -8 -9 -3 -0 -3 -2 -2 -9 -3 -0 -7 -9 -6 -1 -0 -8 -3 -3 -5 -2 -1 -2 -2 -2 -9 -1 -8 -3 -3 -5 -7 -6 -2 -2 -0 -1 -7 -5 -3 -7 -0 -1 -1 -9 -9 -9 -1 -1 -4 -3 -7 -2 -7 -3 -4 -7 -1 -0 -5 -6 -9 -7 -7 -0 -3 -9 -5 -4 -4 -5 -9 -9 -9 -4 -5 -2 -7 -3 -0 -3 -3 -8 -1 -4 -8 -1 -2 -0 -1 -6 -9 -0 -7 -7 -3 -6 -1 -0 -6 -5 -9 -3 -4 -7 -5 -6 -4 -2 -2 -2 -5 -3 -7 -8 -0 -8 -6 -1 -6 -4 -4 -0 -9 -0 -3 -5 -1 -7 -1 -4 -1 -8 -4 -9 -8 -0 -3 -5 -7 -4 -4 -6 -6 -8 -6 -9 -3 -1 -1 -6 -1 -9 -9 -3 -7 -7 -2 -7 -2 -2 -0 -6 -7 -0 -1 -5 -6 -2 -6 -2 -5 -5 -7 -6 -9 -7 -9 -4 -1 -3 -2 -6 -1 -5 -9 -9 -7 -8 -7 -0 -1 -4 -5 -7 -6 -5 -6 -0 -4 -7 -5 -1 -6 -1 -1 -9 -9 -8 -3 -5 -1 -7 -4 -4 -2 -9 -9 -7 -1 -7 -5 -2 -6 -2 -1 -4 -1 -5 -3 -9 -7 -9 -4 -3 -2 -6 -9 -1 -3 -5 -7 -0 -3 -9 -3 -5 -9 -1 -6 -8 -7 -2 -0 -0 -5 -2 -1 -8 -4 -4 -4 -4 -2 -4 -5 -9 -3 -9 -6 -7 -4 -0 -3 -4 -8 -7 -6 -1 -3 -2 -1 -0 -3 -0 -3 -5 -1 -4 -2 -8 -8 -0 -2 -8 -3 -9 -5 -9 -7 -8 -2 -6 -1 -2 -4 -1 -3 -4 -3 -2 -0 -1 -8 -4 -6 -8 -8 -7 -8 -5 -1 -2 -2 -0 -7 -6 -9 -1 -8 -7 -6 -2 -4 -6 -0 -2 -3 -5 -0 -5 -7 -4 -1 -7 -8 -9 -9 -1 -5 -0 -2 -0 -3 -3 -6 -4 -9 -4 -8 -6 -5 -2 -9 -0 -2 -1 -9 -8 -2 -5 -4 -7 -4 -8 -3 -4 -5 -2 -6 -4 -1 -3 -0 -2 -1 -2 -7 -2 -2 -6 -6 -0 -1 -4 -6 -1 -0 -2 -9 -8 -6 -1 -1 -9 -5 -6 -7 -6 -7 -5 -0 -3 -9 -9 -2 -6 -6 -9 -5 -9 -3 -2 -7 -4 -1 -4 -8 -7 -8 -4 -1 -8 -5 -6 -0 -8 -9 -3 -2 -6 -4 -6 -6 -5 -1 -8 -6 -8 -3 -7 -1 -1 -3 -6 -9 -4 -6 -0 -3 -9 -2 -6 -3 -7 -4 -3 -4 -1 -7 -2 -5 -6 -9 -6 -6 -3 -9 -4 -1 -8 -2 -3 -6 -0 -7 -7 -7 -3 -1 -0 -1 -0 -6 -0 -6 -7 -5 -5 -1 -9 -2 -5 -3 -3 -3 -7 -1 -0 -9 -2 -3 -2 -9 -3 -1 -8 -0 -1 -3 -8 -5 -0 -1 -9 -8 -1 -0 -1 -2 -6 -8 -2 -7 -4 -7 -7 -0 -1 -9 -9 -6 -1 -6 -7 -1 -3 -5 -3 -9 -0 -8 -2 -9 -4 -9 -2 -6 -1 -7 -9 -9 -0 -9 -7 -1 -9 -2 -7 -4 -6 -3 -3 -9 -7 -8 -1 -1 -0 -7 -9 -2 -5 -5 -5 -6 -5 -0 -9 -5 -5 -0 -0 -1 -7 -0 -1 -6 -9 -6 -2 -6 -9 -0 -0 -5 -3 -4 -6 -4 -2 -0 -7 -1 -2 -6 -2 -2 -6 -7 -5 -0 -2 -8 -4 -0 -9 -2 -6 -5 -9 -7 -8 -9 -5 -3 -9 -1 -1 -2 -5 -9 -4 -2 -5 -0 -1 -4 -0 -9 -6 -6 -0 -7 -8 -9 -7 -5 -3 -8 -9 -9 -1 -1 -6 -3 -3 -5 -0 -1 -1 -7 -8 -5 -7 -6 -5 -5 -9 -9 -0 -9 -1 -1 -6 -0 -4 -8 -2 -6 -7 -9 -5 -9 -6 -9 -7 -1 -8 -8 -4 -7 -2 -3 -7 -9 -0 -0 -1 -9 -5 -2 -8 -9 -1 -4 -5 -7 -8 -5 -5 -6 -0 -6 -8 -9 -2 -2 -0 -8 -8 -7 -7 -5 -7 -2 -7 -1 -4 -6 -8 -4 -9 -5 -1 -1 -7 -6 -9 -8 -1 -6 -6 -4 -3 -3 -0 -5 -0 -3 -1 -6 -2 -6 -1 -6 -7 -6 -0 -6 -4 -8 -4 -6 -7 -4 -8 -8 -7 -4 -3 -1 -0 -9 -4 -0 -1 -8 -9 -6 -0 -6 -9 -9 -1 -9 -4 -2 -0 -9 -9 -1 -2 -9 -6 -5 -8 -1 -7 -5 -7 -2 -5 -8 -0 -0 -6 -5 -9 -3 -5 -4 -0 -3 -8 -3 -6 -9 -0 -0 -5 -8 -9 -6 -7 -2 -2 -8 -9 -6 -1 -6 -4 -4 -6 -6 -4 -0 -0 -9 -6 -4 -9 -9 -3 -0 -3 -1 -2 -1 -5 -1 -9 -4 -5 -3 -1 -9 -8 -2 -0 -2 -9 -2 -3 -3 -7 -6 -9 -6 -1 -3 -0 -1 -3 -7 -7 -9 -6 -9 -4 -5 -5 -6 -8 -3 -8 -3 -5 -7 -6 -3 -7 -7 -5 -4 -5 -1 -2 -8 -8 -7 -1 -5 -6 -5 -2 -5 -5 -1 -5 -6 -1 -4 -3 -0 -0 -3 -4 -2 -9 -0 -5 -2 -9 -3 -0 -6 -3 -2 -9 -6 -1 -8 -5 -7 -0 -5 -4 -1 -8 -8 -2 -9 -2 -0 -1 -4 -9 -7 -6 -3 -8 -4 -5 -0 -6 -6 -0 -5 -9 -0 -7 -4 -8 -9 -5 -9 -7 -9 -0 -1 -1 -1 -2 -0 -7 -5 -0 -6 -0 -8 -7 -1 -9 -8 -5 -2 -6 -1 -6 -9 -2 -3 -9 -8 -8 -9 -0 -2 -9 -4 -8 -5 -1 -0 -9 -0 -1 -7 -9 -4 -0 -1 -3 -9 -8 -9 -4 -5 -0 -1 -5 -8 -8 -1 -6 -9 -7 -0 -1 -7 -5 -6 -4 -6 -1 -9 -9 -9 -3 -9 -6 -9 -0 -0 -1 -5 -9 -3 -3 -2 -1 -1 -2 -4 -3 -1 -8 -5 -2 -3 -3 -5 -4 -8 -0 -5 -3 -5 -9 -3 -5 -8 -5 -1 -6 -0 -8 -9 -8 -0 -4 -1 -0 -1 -3 -1 -8 -6 -3 -1 -1 -0 -5 -8 -6 -9 -5 -1 -6 -1 -1 -6 -4 -3 -8 -6 -9 -4 -2 -8 -6 -7 -2 -7 -7 -6 -8 -2 -2 -0 -7 -0 -7 -5 -0 -9 -9 -6 -4 -5 -6 -1 -2 -0 -3 -9 -7 -6 -0 -3 -4 -1 -7 -7 -7 -1 -0 -0 -6 -0 -6 -5 -9 -7 -8 -2 -5 -1 -1 -9 -3 -8 -8 -9 -1 -2 -6 -6 -6 -9 -0 -3 -8 -6 -1 -5 -6 -6 -4 -3 -4 -9 -0 -0 -1 -0 -9 -2 -2 -1 -7 -5 -4 -1 -6 -0 -3 -8 -9 -9 -7 -8 -2 -7 -8 -5 -0 -2 -1 -8 -9 -1 -6 -9 -3 -9 -9 -1 -8 -7 -9 -1 -2 -2 -5 -6 -5 -8 -7 -3 -6 -1 -2 -6 -8 -1 -8 -6 -7 -4 -1 -1 -3 -4 -0 -9 -1 -1 -0 -1 -8 -1 -3 -9 -0 -3 -8 -5 -9 -0 -9 -8 -7 -7 -1 -0 -1 -0 -3 -4 -9 -6 -3 -0 -2 -4 -9 -7 -1 -9 -1 -9 -3 -8 -2 -0 -4 -7 -3 -2 -6 -7 -1 -5 -1 -1 -2 -4 -0 -0 -4 -8 -8 -5 -2 -5 -8 -5 -9 -0 -3 -2 -4 -8 -2 -0 -2 -7 -5 -1 -6 -8 -9 -1 -0 -7 -2 -6 -1 -1 -6 -0 -2 -9 -6 -0 -0 -8 -7 -4 -3 -6 -8 -1 -6 -7 -4 -6 -9 -3 -2 -0 -9 -8 -6 -6 -3 -0 -2 -0 -3 -0 -7 -2 -2 -1 -8 -4 -7 -9 -6 -7 -3 -1 -3 -7 -0 -3 -7 -2 -2 -2 -0 -7 -9 -1 -2 -0 -6 -6 -2 -3 -6 -7 -4 -9 -4 -5 -8 -9 -3 -7 -4 -2 -9 -9 -8 -6 -7 -0 -3 -0 -9 -1 -3 -1 -6 -5 -0 -6 -0 -1 -9 -6 -9 -0 -8 -8 -7 -4 -0 -9 -9 -6 -8 -0 -2 -4 -8 -4 -4 -1 -7 -1 -1 -9 -2 -2 -7 -6 -8 -0 -2 -0 -6 -0 -1 -9 -0 -3 -9 -9 -7 -9 -5 -0 -3 -8 -9 -8 -0 -1 -4 -6 -7 -9 -2 -7 -9 -7 -6 -5 -8 -2 -1 -4 -9 -7 -5 -8 -1 -2 -1 -1 -7 -1 -9 -6 -0 -1 -9 -9 -6 -0 -1 -8 -1 -0 -7 -4 -6 -6 -2 -9 -2 -1 -3 -5 -1 -9 -3 -1 -9 -3 -4 -1 -1 -8 -9 -9 -7 -5 -4 -1 -6 -0 -1 -2 -6 -0 -3 -0 -6 -8 -7 -2 -0 -3 -9 -7 -8 -4 -6 -4 -0 -5 -8 -9 -3 -3 -0 -1 -2 -1 -3 -8 -7 -2 -8 -2 -8 -0 -4 -6 -4 -2 -1 -6 -1 -4 -4 -1 -1 -6 -5 -7 -1 -1 -6 -1 -5 -9 -4 -3 -3 -3 -9 -0 -7 -4 -1 -3 -3 -1 -1 -6 -5 -7 -3 -9 -5 -4 -5 -6 -4 -1 -5 -9 -3 -9 -3 -8 -0 -8 -9 -6 -8 -5 -7 -9 -0 -9 -7 -2 -9 -1 -3 -5 -1 -4 -7 -3 -8 -1 -5 -7 -5 -0 -2 -7 -3 -9 -0 -1 -3 -2 -2 -2 -4 -0 -0 -4 -9 -5 -9 -1 -7 -0 -1 -4 -0 -8 -3 -0 -4 -0 -9 -6 -9 -0 -1 -0 -7 -3 -5 -6 -8 -2 -9 -1 -6 -1 -5 -1 -9 -1 -9 -5 -8 -9 -9 -6 -3 -8 -7 -5 -0 -3 -9 -3 -7 -1 -8 -7 -9 -3 -3 -9 -7 -0 -6 -3 -9 -4 -7 -6 -4 -3 -5 -5 -9 -7 -4 -4 -1 -5 -1 -0 -3 -9 -9 -1 -6 -5 -6 -4 -3 -3 -3 -3 -7 -9 -7 -5 -1 -2 -2 -0 -9 -9 -1 -4 -5 -1 -9 -4 -2 -1 -2 -8 -0 -0 -2 -8 -3 -2 -8 -8 -3 -4 -4 -1 -8 -1 -2 -0 -6 -4 -6 -9 -6 -1 -9 -0 -3 -5 -5 -5 -2 -8 -5 -8 -1 -2 -8 -9 -4 -4 -0 -9 -8 -0 -3 -4 -2 -7 -7 -0 -7 -6 -8 -9 -9 -0 -0 -9 -2 -3 -1 -9 -2 -9 -2 -0 -6 -9 -3 -7 -9 -7 -5 -2 -5 -8 -7 -1 -1 -2 -1 -4 -7 -4 -8 -7 -4 -0 -4 -0 -5 -0 -0 -2 -6 -1 -0 -8 -5 -5 -6 -2 -2 -1 -3 -5 -8 -3 -3 -6 -7 -3 -6 -4 -5 -9 -6 -2 -7 -9 -8 -2 -7 -3 -9 -7 -8 -1 -9 -8 -3 -6 -9 -2 -2 -6 -2 -8 -0 -7 -7 -8 -9 -6 -6 -9 -3 -6 -8 -0 -4 -3 -8 -2 -5 -0 -6 -1 -1 -9 -2 -7 -1 -5 -7 -3 -9 -1 -1 -3 -3 -7 -9 -2 -1 -3 -3 -8 -3 -9 -4 -2 -1 -4 -6 -7 -6 -6 -2 -6 -4 -1 -9 -7 -1 -6 -6 -9 -3 -5 -4 -3 -7 -3 -0 -8 -4 -6 -9 -0 -2 -9 -8 -1 -7 -2 -5 -3 -3 -7 -9 -3 -9 -5 -9 -9 -2 -8 -2 -6 -1 -1 -8 -2 -2 -9 -6 -9 -8 -5 -1 -8 -1 -8 -0 -6 -0 -3 -9 -3 -3 -6 -9 -3 -2 -0 -8 -3 -0 -1 -9 -6 -0 -8 -0 -1 -5 -7 -1 -3 -5 -5 -8 -0 -6 -2 -9 -6 -8 -2 -0 -7 -1 -2 -3 -1 -2 -4 -3 -8 -7 -3 -5 -0 -9 -4 -2 -2 -2 -9 -5 -9 -6 -8 -2 -2 -2 -1 -1 -2 -2 -8 -8 -5 -3 -9 -9 -0 -3 -1 -5 -3 -3 -0 -7 -8 -9 -5 -6 -0 -1 -7 -7 -6 -1 -3 -1 -2 -1 -4 -0 -9 -7 -0 -3 -7 -9 -8 -9 -6 -3 -1 -5 -8 -1 -9 -1 -0 -6 -6 -2 -5 -6 -1 -7 -1 -7 -0 -3 -3 -7 -9 -2 -0 -6 -8 -0 -1 -1 -1 -7 -7 -3 -3 -6 -4 -6 -9 -6 -0 -9 -1 -3 -3 -6 -7 -2 -1 -7 -5 -7 -6 -6 -7 -8 -1 -6 -3 -1 -0 -5 -9 -9 -9 -4 -6 -6 -1 -7 -8 -4 -4 -1 -3 -2 -9 -6 -8 -5 -9 -0 -2 -2 -7 -1 -3 -0 -6 -2 -6 -7 -9 -9 -3 -3 -9 -2 -1 -6 -5 -4 -0 -2 -4 -6 -2 -1 -6 -7 -5 -1 -9 -9 -5 -9 -4 -1 -5 -8 -1 -3 -5 -2 -7 -1 -2 -7 -1 -3 -4 -6 -9 -4 -9 -0 -9 -6 -9 -0 -8 -5 -9 -0 -3 -3 -0 -6 -8 -9 -0 -5 -9 -7 -6 -7 -2 -7 -7 -7 -1 -4 -8 -9 -6 -0 -2 -1 -5 -7 -9 -9 -0 -2 -0 -0 -2 -3 -6 -0 -2 -3 -2 -9 -1 -9 -2 -6 -4 -0 -9 -2 -4 -3 -1 -0 -2 -7 -6 -2 -5 -3 -7 -9 -3 -4 -0 -8 -9 -8 -7 -5 -1 -3 -5 -7 -9 -3 -3 -5 -7 -1 -2 -7 -5 -1 -5 -2 -5 -9 -8 -1 -9 -6 -7 -7 -2 -8 -3 -1 -7 -5 -9 -2 -6 -7 -3 -5 -4 -0 -7 -2 -4 -8 -2 -5 -1 -9 -8 -5 -1 -6 -3 -4 -9 -2 -6 -8 -4 -7 -1 -4 -4 -5 -6 -9 -4 -4 -2 -6 -3 -2 -7 -7 -2 -7 -1 -1 -7 -4 -0 -6 -2 -3 -0 -9 -9 -2 -7 -1 -6 -4 -1 -6 -7 -4 -1 -8 -7 -5 -4 -9 -2 -1 -4 -6 -6 -2 -7 -9 -5 -3 -4 -4 -8 -5 -7 -4 -5 -6 -6 -1 -3 -5 -6 -6 -2 -8 -2 -6 -8 -5 -3 -0 -0 -9 -8 -0 -1 -2 -9 -5 -3 -0 -9 -2 -9 -6 -1 -9 -7 -5 -8 -7 -0 -6 -3 -5 -3 -7 -0 -0 -9 -1 -6 -5 -1 -1 -5 -3 -4 -0 -3 -3 -1 -2 -8 -2 -7 -8 -9 -9 -7 -9 -1 -8 -8 -4 -4 -8 -4 -8 -5 -5 -7 -4 -9 -0 -3 -6 -1 -2 -4 -6 -2 -1 -1 -0 -7 -1 -5 -9 -3 -0 -5 -1 -7 -6 -1 -5 -2 -1 -1 -3 -7 -0 -8 -2 -4 -2 -5 -0 -3 -5 -9 -1 -3 -9 -5 -0 -0 -3 -6 -9 -0 -4 -5 -4 -1 -6 -2 -8 -1 -1 -4 -3 -8 -0 -7 -6 -6 -8 -5 -0 -5 -5 -6 -8 -4 -1 -2 -0 -3 -9 -6 -7 -8 -3 -9 -7 -8 -9 -6 -1 -3 -3 -4 -8 -3 -0 -1 -9 -1 -3 -0 -8 -6 -5 -4 -1 -7 -8 -3 -1 -9 -7 -8 -2 -6 -1 -0 -4 -0 -3 -5 -2 -9 -8 -1 -9 -2 -5 -2 -0 -9 -8 -3 -9 -0 -0 -6 -6 -7 -2 -7 -2 -3 -7 -9 -8 -3 -8 -8 -9 -6 -1 -8 -7 -2 -9 -6 -6 -4 -3 -1 -1 -4 -2 -1 -7 -5 -4 -9 -9 -2 -4 -5 -9 -4 -7 -1 -6 -6 -6 -2 -8 -4 -1 -5 -3 -7 -8 -3 -1 -3 -5 -0 -3 -6 -5 -7 -9 -9 -3 -0 -2 -5 -7 -8 -4 -7 -3 -7 -6 -6 -8 -3 -1 -4 -2 -2 -4 -9 -5 -1 -6 -6 -6 -7 -7 -8 -9 -0 -3 -4 -5 -0 -1 -6 -2 -1 -0 -9 -3 -8 -5 -5 -8 -8 -7 -0 -5 -7 -9 -6 -5 -6 -2 -2 -5 -8 -8 -5 -2 -9 -4 -6 -3 -8 -4 -4 -6 -6 -0 -4 -2 -5 -5 -1 -3 -9 -6 -2 -4 -5 -1 -1 -2 -7 -3 -6 -4 -2 -2 -4 -0 -1 -6 -6 -1 -7 -7 -2 -6 -5 -7 -4 -2 -8 -4 -9 -9 -2 -6 -1 -8 -1 -5 -0 -9 -3 -4 -2 -9 -9 -8 -3 -3 -4 -6 -9 -2 -6 -3 -3 -4 -4 -1 -1 -9 -5 -5 -1 -6 -1 -0 -0 -2 -7 -1 -1 -3 -0 -5 -4 -2 -6 -7 -8 -5 -9 -9 -6 -2 -2 -3 -6 -6 -2 -9 -0 -3 -6 -9 -5 -7 -1 -1 -7 -8 -2 -9 -7 -7 -9 -9 -5 -6 -9 -9 -1 -5 -5 -1 -8 -0 -7 -8 -0 -5 -9 -6 -8 -6 -2 -6 -6 -7 -0 -0 -5 -9 -1 -7 -1 -1 -3 -1 -1 -5 -5 -8 -3 -2 -3 -2 -9 -4 -6 -3 -7 -1 -5 -7 -8 -4 -8 -3 -0 -3 -9 -8 -0 -2 -8 -7 -9 -6 -3 -4 -9 -3 -6 -1 -7 -5 -9 -4 -6 -9 -2 -1 -7 -5 -7 -6 -4 -3 -6 -6 -9 -6 -5 -1 -5 -9 -6 -5 -0 -4 -1 -4 -2 -7 -8 -9 -8 -8 -0 -6 -2 -4 -9 -9 -9 -3 -3 -5 -3 -1 -0 -2 -7 -4 -1 -1 -8 -2 -9 -7 -2 -5 -0 -6 -8 -1 -5 -8 -4 -4 -8 -5 -3 -2 -1 -6 -7 -4 -4 -9 -2 -5 -8 -5 -3 -7 -7 -3 -3 -5 -7 -0 -7 -9 -9 -1 -6 -1 -9 -1 -9 -9 -7 -2 -2 -9 -7 -8 -0 -9 -9 -6 -7 -3 -5 -7 -7 -5 -9 -9 -0 -7 -8 -0 -6 -6 -5 -1 -8 -5 -9 -9 -5 -2 -8 -6 -8 -6 -7 -7 -7 -4 -4 -4 -1 -0 -6 -1 -6 -7 -1 -1 -6 -1 -7 -3 -7 -2 -6 -2 -9 -5 -0 -3 -2 -7 -6 -6 -9 -9 -1 -9 -2 -2 -6 -0 -3 -3 -6 -6 -1 -6 -1 -9 -8 -0 -0 -9 -3 -3 -9 -9 -3 -3 -5 -9 -1 -1 -8 -5 -8 -6 -2 -0 -6 -8 -0 -0 -2 -5 -5 -1 -1 -1 -8 -2 -4 -2 -1 -7 -9 -2 -9 -6 -2 -8 -2 -6 -5 -8 -8 -5 -0 -0 -0 -3 -2 -7 -7 -7 -2 -2 -1 -8 -1 -4 -4 -2 -7 -6 -8 -9 -7 -2 -7 -7 -5 -1 -8 -5 -5 -9 -3 -9 -7 -6 -0 -4 -8 -3 -6 -2 -4 -8 -3 -4 -5 -0 -9 -9 -0 -3 -5 -1 -1 -1 -9 -4 -8 -0 -8 -9 -2 -5 -2 -5 -1 -7 -0 -0 -2 -8 -1 -0 -4 -3 -9 -2 -5 -0 -7 -3 -6 -1 -7 -5 -3 -3 -2 -1 -6 -2 -4 -5 -6 -0 -6 -2 -1 -4 -7 -7 -0 -2 -1 -1 -5 -3 -7 -4 -0 -2 -4 -0 -2 -4 -2 -9 -3 -5 -5 -7 -6 -2 -6 -0 -5 -7 -9 -6 -4 -3 -2 -8 -2 -9 -5 -2 -5 -6 -0 -3 -0 -5 -5 -1 -5 -1 -9 -4 -5 -8 -1 -1 -5 -8 -4 -1 -7 -0 -4 -4 -1 -8 -7 -7 -4 -9 -3 -6 -3 -6 -2 -2 -8 -3 -1 -7 -3 -1 -4 -5 -4 -0 -8 -2 -8 -8 -3 -2 -8 -5 -4 -6 -3 -3 -3 -7 -1 -9 -6 -6 -7 -5 -9 -0 -2 -1 -4 -2 -4 -5 -1 -1 -6 -9 -7 -6 -7 -6 -9 -8 -4 -7 -9 -1 -4 -6 -2 -4 -3 -8 -8 -9 -7 -6 -3 -9 -1 -6 -3 -9 -0 -9 -6 -4 -2 -5 -6 -3 -5 -2 -0 -5 -7 -3 -9 -5 -5 -0 -0 -9 -3 -1 -9 -1 -1 -1 -4 -8 -6 -4 -4 -3 -0 -8 -9 -1 -4 -2 -4 -0 -1 -0 -3 -9 -0 -8 -8 -7 -0 -8 -8 -9 -6 -9 -5 -6 -6 -5 -9 -9 -6 -4 -2 -1 -5 -5 -2 -7 -0 -1 -0 -0 -9 -3 -2 -1 -6 -6 -7 -7 -5 -5 -2 -8 -3 -3 -2 -5 -8 -3 -3 -9 -9 -6 -4 -6 -1 -0 -9 -3 -6 -7 -5 -3 -2 -7 -7 -5 -6 -2 -3 -3 -6 -4 -6 -1 -2 -1 -7 -2 -2 -6 -6 -4 -4 -8 -6 -9 -5 -8 -5 -2 -8 -9 -8 -0 -9 -6 -9 -3 -2 -4 -0 -6 -6 -2 -4 -7 -8 -1 -3 -8 -1 -2 -7 -1 -3 -7 -9 -9 -4 -3 -4 -3 -7 -1 -2 -6 -8 -5 -1 -2 -1 -1 -0 -5 -6 -5 -2 -6 -2 -2 -3 -6 -9 -7 -4 -9 -0 -1 -1 -1 -1 -3 -5 -5 -1 -2 -3 -1 -2 -6 -1 -9 -0 -8 -0 -2 -1 -4 -4 -5 -7 -0 -8 -7 -8 -1 -3 -7 -2 -2 -2 -4 -2 -9 -3 -9 -2 -8 -3 -2 -5 -9 -4 -3 -7 -1 -0 -6 -9 -0 -9 -2 -0 -0 -5 -0 -5 -6 -0 -2 -7 -5 -0 -7 -4 -9 -9 -3 -6 -2 -9 -1 -3 -2 -3 -0 -0 -6 -5 -1 -7 -0 -6 -2 -0 -9 -9 -1 -5 -3 -5 -8 -9 -6 -7 -1 -5 -0 -1 -0 -0 -6 -4 -7 -7 -4 -9 -3 -8 -8 -9 -6 -7 -0 -1 -1 -3 -8 -7 -7 -4 -2 -1 -5 -7 -1 -7 -8 -2 -8 -0 -8 -3 -1 -0 -1 -3 -3 -6 -6 -6 -6 -1 -0 -8 -3 -7 -0 -5 -9 -6 -0 -2 -2 -5 -6 -1 -7 -5 -1 -7 -8 -1 -0 -4 -9 -3 -0 -2 -1 -3 -8 -3 -5 -7 -2 -8 -2 -1 -0 -2 -4 -5 -6 -7 -3 -8 -5 -0 -3 -5 -8 -1 -9 -4 -5 -8 -3 -9 -6 -1 -1 -6 -6 -4 -4 -5 -0 -2 -4 -2 -5 -9 -6 -8 -8 -5 -9 -0 -3 -0 -9 -2 -6 -3 -9 -3 -9 -6 -8 -9 -5 -3 -7 -2 -7 -1 -7 -4 -6 -7 -4 -6 -1 -5 -7 -9 -5 -6 -1 -2 -9 -3 -1 -8 -5 -1 -4 -1 -1 -8 -5 -8 -2 -2 -5 -2 -7 -5 -3 -6 -7 -8 -9 -6 -6 -1 -0 -9 -0 -0 -9 -3 -4 -7 -5 -5 -6 -9 -9 -2 -3 -9 -7 -3 -1 -6 -0 -0 -0 -2 -8 -6 -3 -6 -6 -6 -0 -2 -7 -3 -8 -1 -9 -6 -7 -9 -6 -7 -0 -1 -6 -4 -8 -4 -8 -5 -3 -5 -5 -8 -2 -9 -3 -2 -4 -7 -4 -2 -6 -3 -7 -6 -2 -0 -3 -4 -5 -6 -8 -9 -1 -4 -5 -1 -9 -1 -5 -2 -6 -7 -7 -4 -6 -5 -4 -6 -0 -0 -7 -0 -5 -8 -3 -6 -3 -8 -8 -3 -6 -1 -7 -9 -9 -1 -8 -8 -1 -4 -1 -9 -5 -9 -1 -9 -8 -2 -6 -4 -8 -5 -1 -7 -9 -8 -1 -6 -9 -5 -6 -1 -1 -2 -1 -0 -7 -0 -7 -1 -4 -4 -2 -6 -3 -1 -9 -3 -6 -5 -5 -5 -7 -6 -5 -0 -7 -8 -3 -5 -4 -3 -4 -3 -7 -9 -6 -2 -6 -0 -2 -5 -1 -1 -1 -2 -5 -3 -9 -9 -8 -9 -6 -9 -7 -5 -5 -2 -0 -1 -7 -4 -7 -9 -3 -2 -3 -5 -1 -9 -5 -6 -9 -6 -5 -1 -4 -8 -2 -8 -9 -6 -6 -8 -3 -3 -4 -2 -2 -1 -0 -1 -8 -0 -7 -1 -9 -3 -7 -1 -0 -4 -3 -6 -7 -8 -3 -2 -7 -7 -6 -5 -4 -7 -6 -9 -8 -6 -1 -1 -2 -4 -6 -1 -3 -1 -8 -1 -9 -4 -3 -9 -3 -5 -4 -3 -7 -9 -9 -4 -0 -8 -2 -5 -8 -9 -0 -9 -1 -9 -4 -3 -6 -8 -9 -3 -9 -2 -7 -4 -0 -8 -9 -3 -9 -7 -5 -0 -2 -5 -2 -2 -8 -2 -0 -5 -4 -7 -3 -2 -4 -3 -0 -1 -2 -5 -1 -3 -1 -2 -4 -7 -3 -6 -2 -4 -9 -3 -7 -3 -6 -1 -5 -2 -5 -1 -5 -6 -8 -2 -2 -2 -1 -5 -6 -3 -9 -1 -7 -8 -0 -6 -7 -4 -6 -0 -3 -8 -6 -1 -6 -4 -7 -6 -7 -3 -4 -1 -7 -4 -4 -6 -6 -9 -5 -7 -9 -3 -8 -2 -5 -4 -5 -4 -0 -0 -9 -7 -7 -5 -7 -4 -5 -9 -7 -9 -9 -1 -8 -9 -9 -5 -7 -1 -2 -0 -1 -9 -6 -5 -9 -0 -4 -8 -0 -5 -9 -3 -3 -7 -7 -0 -7 -0 -5 -4 -2 -5 -7 -0 -3 -4 -4 -1 -0 -0 -9 -9 -6 -4 -4 -1 -1 -0 -0 -9 -9 -7 -4 -7 -2 -1 -8 -4 -4 -4 -5 -6 -6 -2 -1 -1 -4 -2 -1 -8 -7 -1 -7 -8 -3 -3 -3 -0 -0 -5 -1 -2 -9 -9 -0 -0 -8 -7 -6 -6 -1 -9 -7 -2 -9 -7 -8 -1 -9 -1 -5 -2 -8 -8 -9 -9 -3 -8 -5 -5 -3 -6 -8 -3 -2 -6 -1 -4 -9 -6 -4 -8 -4 -3 -1 -8 -1 -3 -4 -5 -6 -5 -1 -9 -2 -6 -5 -1 -4 -7 -3 -0 -0 -6 -1 -0 -7 -7 -5 -8 -7 -4 -7 -9 -0 -0 -8 -1 -3 -9 -2 -1 -4 -7 -7 -1 -1 -8 -2 -9 -0 -0 -3 -1 -7 -6 -6 -3 -6 -1 -4 -8 -9 -4 -9 -3 -6 -6 -5 -8 -8 -8 -8 -9 -3 -8 -3 -7 -0 -0 -4 -0 -7 -7 -4 -8 -9 -2 -8 -3 -3 -1 -5 -5 -1 -1 -5 -1 -9 -3 -3 -1 -4 -7 -1 -4 -7 -3 -5 -1 -6 -9 -5 -3 -8 -2 -8 -8 -0 -5 -6 -0 -6 -0 -0 -3 -6 -2 -2 -6 -8 -1 -7 -1 -5 -3 -4 -6 -2 -7 -6 -8 -1 -2 -4 -1 -2 -3 -5 -6 -7 -8 -9 -4 -4 -6 -2 -7 -8 -5 -1 -7 -1 -6 -2 -1 -1 -2 -2 -8 -4 -0 -7 -9 -1 -7 -6 -7 -1 -2 -2 -3 -5 -2 -4 -1 -9 -4 -9 -8 -0 -4 -3 -9 -3 -9 -1 -4 -7 -5 -8 -6 -9 -9 -9 -9 -4 -1 -4 -3 -3 -5 -6 -6 -0 -2 -9 -2 -0 -4 -2 -6 -9 -9 -6 -3 -6 -2 -1 -5 -6 -8 -0 -2 -8 -4 -5 -6 -7 -5 -2 -6 -8 -0 -5 -1 -8 -9 -7 -3 -0 -6 -8 -3 -4 -5 -3 -2 -4 -6 -9 -4 -8 -2 -8 -9 -9 -0 -6 -0 -2 -1 -1 -4 -1 -7 -2 -3 -2 -1 -9 -6 -0 -3 -8 -3 -3 -9 -2 -0 -7 -7 -2 -0 -8 -6 -1 -1 -1 -6 -1 -2 -4 -1 -8 -0 -9 -8 -3 -5 -0 -2 -1 -8 -8 -1 -9 -7 -8 -9 -7 -9 -9 -4 -3 -1 -3 -7 -0 -8 -9 -1 -7 -0 -4 -0 -5 -0 -0 -5 -7 -6 -3 -2 -9 -8 -2 -9 -7 -2 -8 -1 -9 -1 -4 -9 -0 -7 -6 -8 -2 -1 -9 -1 -9 -0 -5 -5 -3 -6 -2 -6 -5 -0 -6 -4 -0 -1 -6 -1 -2 -6 -4 -6 -4 -9 -6 -9 -5 -9 -8 -5 -6 -0 -0 -1 -4 -9 -1 -3 -4 -1 -6 -4 -5 -1 -9 -8 -4 -6 -4 -1 -8 -2 -3 -7 -2 -8 -3 -3 -1 -6 -3 -1 -4 -2 -2 -1 -6 -7 -9 -2 -0 -0 -7 -4 -5 -4 -4 -5 -8 -6 -1 -8 -1 -8 -4 -6 -4 -1 -2 -9 -9 -6 -6 -9 -7 -6 -4 -6 -3 -9 -5 -0 -8 -6 -2 -1 -7 -6 -4 -8 -3 -4 -1 -4 -6 -1 -9 -1 -8 -0 -6 -2 -1 -2 -0 -9 -8 -6 -2 -4 -4 -7 -7 -8 -8 -3 -7 -6 -3 -5 -9 -5 -2 -7 -4 -6 -2 -3 -3 -0 -1 -3 -8 -8 -9 -0 -0 -6 -8 -3 -8 -9 -2 -1 -6 -3 -6 -9 -3 -1 -9 -7 -4 -8 -7 -9 -4 -8 -0 -3 -8 -7 -1 -3 -0 -5 -4 -4 -2 -4 -9 -5 -4 -1 -9 -3 -9 -7 -6 -6 -1 -5 -2 -9 -7 -7 -4 -9 -5 -7 -8 -5 -7 -6 -7 -4 -3 -0 -4 -7 -5 -8 -5 -1 -0 -0 -4 -7 -9 -0 -7 -2 -8 -8 -0 -1 -9 -5 -9 -5 -5 -4 -7 -4 -9 -8 -9 -1 -3 -6 -4 -0 -5 -7 -7 -2 -0 -2 -4 -7 -2 -2 -1 -4 -4 -6 -8 -6 -5 -0 -3 -8 -4 -6 -7 -6 -2 -1 -8 -4 -5 -2 -1 -0 -0 -7 -4 -0 -9 -9 -1 -7 -2 -1 -5 -5 -1 -8 -4 -5 -5 -7 -6 -8 -9 -0 -6 -6 -1 -7 -5 -4 -3 -8 -6 -9 -2 -1 -1 -4 -9 -5 -8 -1 -0 -6 -0 -0 -4 -2 -3 -6 -7 -4 -1 -8 -4 -1 -2 -0 -8 -6 -1 -5 -2 -2 -5 -7 -4 -6 -9 -6 -1 -9 -0 -8 -9 -4 -4 -7 -1 -3 -1 -4 -8 -9 -5 -9 -5 -6 -4 -9 -4 -7 -0 -1 -6 -0 -1 -8 -0 -6 -6 -1 -7 -3 -7 -9 -0 -9 -6 -9 -7 -3 -0 -2 -1 -7 -0 -0 -2 -1 -1 -6 -6 -7 -0 -2 -1 -8 -5 -5 -4 -3 -6 -1 -4 -0 -2 -4 -0 -1 -5 -4 -1 -0 -8 -2 -7 -4 -3 -3 -3 -1 -9 -2 -0 -6 -0 -6 -7 -9 -3 -7 -9 -9 -5 -7 -1 -3 -6 -9 -1 -7 -2 -7 -3 -9 -3 -7 -1 -4 -9 -3 -1 -5 -3 -1 -4 -1 -0 -9 -7 -3 -2 -3 -7 -7 -8 -7 -7 -6 -4 -7 -2 -6 -5 -6 -4 -0 -4 -8 -1 -1 -3 -9 -0 -1 -2 -2 -5 -8 -3 -4 -8 -7 -4 -2 -3 -1 -3 -8 -4 -9 -4 -0 -9 -6 -9 -1 -0 -4 -9 -1 -0 -2 -1 -7 -3 -1 -6 -4 -7 -8 -7 -8 -5 -2 -4 -7 -7 -2 -2 -8 -4 -1 -7 -5 -3 -2 -1 -6 -5 -1 -9 -8 -1 -2 -6 -1 -8 -2 -5 -9 -2 -2 -4 -0 -2 -0 -2 -9 -9 -4 -4 -7 -7 -5 -8 -9 -1 -5 -0 -6 -8 -1 -0 -0 -9 -4 -9 -2 -5 -6 -2 -9 -1 -9 -1 -8 -3 -0 -6 -6 -9 -2 -1 -4 -5 -1 -2 -2 -1 -3 -0 -5 -0 -7 -9 -5 -8 -7 -2 -2 -6 -6 -8 -8 -0 -0 -4 -9 -5 -1 -5 -3 -2 -9 -2 -2 -9 -6 -8 -2 -0 -0 -9 -2 -3 -1 -5 -0 -8 -3 -2 -8 -2 -4 -6 -3 -2 -6 -5 -0 -7 -5 -8 -0 -2 -9 -4 -5 -6 -0 -9 -9 -9 -4 -7 -9 -5 -9 -2 -1 -6 -1 -5 -9 -4 -1 -1 -5 -1 -3 -4 -4 -0 -9 -0 -4 -9 -3 -2 -3 -0 -4 -7 -1 -1 -5 -6 -1 -7 -0 -3 -6 -1 -9 -0 -3 -5 -3 -1 -2 -0 -5 -9 -1 -9 -7 -0 -6 -7 -1 -8 -8 -7 -2 -1 -5 -6 -0 -3 -6 -0 -1 -3 -6 -4 -9 -7 -0 -4 -4 -1 -7 -0 -3 -8 -6 -8 -1 -4 -0 -7 -2 -8 -8 -8 -8 -1 -9 -9 -0 -6 -0 -5 -5 -7 -3 -8 -3 -7 -1 -6 -2 -9 -6 -5 -0 -4 -7 -7 -8 -9 -0 -6 -3 -5 -2 -6 -0 -0 -9 -7 -9 -2 -4 -5 -0 -6 -4 -1 -2 -9 -8 -7 -7 -8 -8 -9 -1 -9 -7 -6 -7 -3 -3 -2 -4 -3 -9 -8 -6 -2 -5 -7 -9 -9 -5 -4 -1 -2 -0 -1 -4 -8 -2 -2 -5 -7 -1 -8 -6 -7 -4 -0 -3 -2 -1 -4 -3 -5 -9 -0 -7 -1 -1 -3 -9 -8 -9 -1 -7 -9 -3 -3 -0 -6 -6 -6 -2 -2 -9 -5 -2 -4 -6 -5 -3 -9 -2 -5 -1 -7 -5 -6 -8 -5 -9 -6 -8 -1 -0 -1 -8 -2 -8 -9 -2 -9 -6 -0 -5 -3 -6 -3 -9 -2 -0 -9 -9 -0 -3 -1 -4 -7 -8 -2 -9 -5 -5 -2 -6 -0 -9 -7 -6 -2 -1 -3 -4 -4 -7 -7 -8 -9 -6 -5 -8 -9 -9 -9 -4 -0 -3 -2 -6 -3 -5 -4 -9 -5 -4 -4 -1 -4 -2 -0 -6 -8 -5 -9 -7 -4 -7 -9 -5 -3 -3 -0 -2 -3 -4 -4 -2 -6 -8 -0 -5 -9 -1 -7 -5 -3 -1 -6 -1 -6 -1 -6 -4 -3 -9 -4 -6 -3 -1 -1 -6 -9 -3 -7 -2 -3 -5 -5 -5 -6 -0 -6 -1 -7 -5 -8 -0 -8 -3 -1 -3 -9 -2 -7 -0 -8 -0 -0 -3 -0 -6 -5 -1 -5 -6 -2 -9 -7 -5 -6 -4 -3 -6 -2 -1 -9 -3 -5 -9 -4 -3 -6 -8 -1 -1 -5 -8 -3 -4 -2 -2 -1 -1 -4 -2 -8 -1 -8 -9 -0 -8 -1 -8 -1 -9 -9 -0 -0 -4 -7 -1 -0 -8 -1 -3 -9 -9 -7 -1 -2 -9 -5 -6 -1 -3 -8 -6 -1 -9 -3 -8 -2 -5 -7 -1 -9 -0 -0 -7 -9 -5 -9 -5 -6 -3 -6 -8 -4 -4 -9 -5 -8 -8 -5 -1 -9 -6 -7 -0 -4 -9 -5 -2 -9 -2 -1 -0 -9 -7 -7 -7 -6 -0 -1 -9 -6 -0 -1 -9 -1 -2 -9 -3 -1 -0 -3 -6 -5 -7 -6 -6 -8 -1 -8 -1 -7 -3 -3 -6 -1 -5 -5 -0 -1 -2 -9 -1 -4 -1 -9 -6 -1 -7 -5 -7 -6 -3 -2 -4 -8 -7 -8 -0 -2 -1 -6 -5 -4 -0 -0 -4 -1 -1 -1 -1 -4 -8 -7 -9 -2 -9 -1 -6 -4 -1 -2 -2 -1 -1 -7 -3 -3 -4 -7 -9 -7 -0 -0 -4 -1 -1 -3 -6 -5 -0 -1 -4 -6 -6 -7 -8 -9 -7 -5 -2 -6 -1 -1 -3 -6 -8 -0 -2 -5 -7 -8 -5 -0 -9 -4 -4 -3 -1 -2 -9 -1 -3 -7 -6 -9 -1 -9 -3 -7 -1 -7 -1 -9 -3 -6 -0 -1 -5 -6 -6 -2 -3 -9 -7 -6 -6 -9 -7 -6 -6 -2 -4 -1 -8 -1 -2 -3 -7 -9 -5 -9 -4 -1 -0 -3 -1 -2 -7 -5 -0 -2 -4 -1 -8 -5 -4 -0 -0 -0 -2 -7 -0 -8 -8 -4 -6 -3 -4 -0 -6 -9 -1 -7 -8 -3 -1 -6 -3 -5 -9 -9 -1 -6 -1 -1 -4 -0 -9 -2 -4 -7 -9 -2 -6 -3 -0 -6 -6 -1 -6 -9 -9 -3 -7 -5 -5 -7 -5 -0 -9 -4 -1 -8 -8 -1 -1 -4 -7 -8 -6 -1 -2 -9 -8 -1 -5 -3 -2 -7 -5 -1 -0 -1 -0 -3 -3 -1 -5 -8 -8 -9 -3 -1 -3 -8 -6 -5 -1 -6 -9 -2 -8 -7 -9 -0 -8 -5 -4 -9 -5 -5 -8 -9 -8 -9 -9 -9 -1 -0 -9 -6 -7 -0 -6 -1 -3 -0 -6 -8 -2 -0 -1 -5 -6 -9 -8 -2 -5 -3 -3 -8 -1 -2 -3 -2 -0 -5 -2 -5 -1 -1 -9 -3 -9 -1 -4 -7 -9 -4 -7 -6 -1 -9 -7 -7 -1 -5 -9 -2 -8 -6 -7 -7 -1 -5 -4 -4 -0 -9 -7 -1 -6 -3 -0 -2 -7 -2 -7 -1 -3 -2 -4 -2 -1 -6 -8 -5 -1 -0 -5 -7 -1 -7 -3 -9 -8 -0 -9 -2 -9 -9 -6 -6 -3 -2 -6 -9 -5 -5 -4 -1 -1 -4 -6 -0 -1 -5 -8 -0 -0 -3 -9 -8 -1 -0 -9 -2 -6 -2 -0 -6 -8 -7 -0 -7 -5 -7 -5 -1 -1 -5 -7 -7 -7 -3 -4 -1 -0 -6 -9 -9 -6 -9 -1 -7 -4 -5 -8 -9 -9 -1 -1 -9 -9 -1 -7 -7 -6 -5 -5 -2 -7 -1 -3 -6 -8 -5 -2 -7 -1 -4 -0 -8 -5 -8 -5 -1 -2 -4 -5 -5 -2 -1 -3 -5 -2 -2 -9 -4 -9 -9 -5 -9 -1 -3 -2 -9 -6 -2 -2 -0 -7 -5 -7 -3 -4 -9 -4 -1 -2 -9 -2 -2 -8 -1 -0 -0 -9 -0 -6 -2 -4 -1 -0 -9 -7 -1 -1 -6 -9 -0 -8 -2 -9 -5 -0 -9 -3 -0 -7 -2 -7 -6 -0 -1 -1 -1 -7 -6 -1 -7 -7 -3 -8 -5 -0 -9 -1 -0 -8 -3 -9 -9 -5 -2 -6 -5 -0 -5 -2 -7 -3 -3 -4 -4 -7 -2 -1 -9 -3 -4 -5 -2 -7 -4 -5 -5 -7 -4 -1 -8 -4 -3 -7 -1 -2 -3 -0 -9 -1 -4 -3 -9 -9 -1 -7 -5 -6 -8 -4 -1 -5 -5 -2 -2 -2 -8 -4 -0 -7 -6 -4 -3 -2 -3 -1 -7 -6 -7 -6 -8 -9 -0 -2 -3 -6 -9 -6 -9 -4 -5 -9 -1 -9 -7 -1 -5 -9 -7 -2 -7 -6 -7 -8 -1 -6 -1 -9 -9 -7 -2 -1 -1 -0 -5 -5 -5 -9 -1 -4 -9 -2 -1 -7 -6 -6 -2 -4 -2 -3 -1 -5 -2 -9 -0 -2 -7 -3 -7 -8 -2 -0 -7 -2 -7 -2 -9 -1 -2 -0 -2 -9 -3 -0 -6 -2 -8 -0 -3 -7 -6 -1 -9 -0 -3 -1 -4 -5 -7 -9 -3 -1 -9 -5 -0 -4 -7 -2 -2 -1 -9 -5 -7 -9 -6 -2 -6 -7 -7 -8 -0 -5 -2 -7 -0 -2 -0 -2 -0 -2 -4 -2 -5 -9 -7 -5 -2 -7 -5 -1 -4 -2 -5 -6 -1 -9 -8 -8 -9 -4 -1 -5 -0 -8 -6 -6 -6 -5 -0 -0 -6 -9 -5 -4 -4 -8 -2 -2 -2 -1 -7 -7 -8 -0 -0 -1 -6 -5 -4 -2 -0 -2 -5 -7 -8 -5 -2 -4 -4 -9 -4 -4 -6 -6 -9 -0 -3 -9 -1 -3 -2 -4 -0 -0 -1 -1 -7 -6 -2 -8 -1 -2 -7 -5 -1 -8 -0 -1 -5 -7 -8 -5 -9 -1 -2 -7 -7 -0 -0 -1 -7 -3 -0 -3 -1 -4 -1 -3 -8 -3 -7 -3 -9 -1 -7 -7 -1 -2 -6 -5 -8 -0 -3 -2 -9 -6 -5 -4 -6 -7 -0 -3 -4 -6 -3 -5 -2 -7 -7 -3 -5 -4 -9 -0 -3 -1 -5 -3 -1 -2 -0 -2 -4 -8 -9 -4 -2 -9 -7 -9 -9 -5 -3 -4 -2 -6 -6 -5 -1 -9 -9 -7 -1 -7 -7 -4 -4 -8 -8 -7 -6 -1 -4 -4 -9 -0 -9 -6 -7 -0 -9 -9 -1 -9 -6 -7 -5 -7 -6 -0 -5 -9 -9 -9 -9 -2 -4 -5 -7 -0 -8 -6 -1 -8 -4 -6 -2 -7 -2 -7 -9 -9 -1 -4 -7 -1 -7 -6 -6 -1 -9 -0 -1 -3 -0 -1 -3 -2 -6 -5 -3 -9 -3 -9 -9 -3 -3 -0 -7 -5 -9 -6 -6 -4 -6 -5 -7 -3 -6 -1 -6 -8 -6 -7 -4 -1 -6 -0 -4 -2 -2 -5 -8 -4 -1 -9 -2 -9 -9 -7 -9 -1 -5 -7 -1 -8 -8 -6 -6 -7 -6 -0 -7 -6 -3 -1 -0 -7 -9 -5 -7 -8 -1 -0 -9 -9 -9 -0 -0 -7 -7 -4 -9 -7 -1 -5 -7 -1 -3 -3 -0 -3 -9 -1 -7 -0 -2 -0 -1 -5 -0 -3 -7 -9 -2 -4 -4 -9 -8 -8 -0 -4 -3 -6 -1 -9 -4 -8 -9 -6 -8 -9 -4 -7 -1 -5 -9 -2 -3 -8 -6 -5 -4 -5 -0 -1 -9 -0 -5 -8 -1 -1 -5 -4 -8 -2 -5 -1 -5 -1 -1 -8 -8 -0 -8 -9 -8 -9 -3 -2 -0 -8 -9 -9 -0 -6 -0 -1 -9 -9 -9 -4 -1 -4 -9 -1 -6 -5 -1 -8 -3 -1 -7 -9 -6 -3 -9 -5 -7 -7 -5 -4 -8 -4 -5 -2 -4 -1 -9 -3 -1 -1 -3 -7 -9 -0 -4 -9 -4 -9 -0 -0 -3 -1 -4 -2 -0 -4 -1 -0 -9 -1 -9 -4 -9 -1 -4 -7 -8 -8 -1 -5 -9 -3 -0 -5 -9 -5 -9 -5 -0 -9 -5 -1 -9 -8 -5 -9 -2 -1 -9 -9 -6 -3 -8 -1 -7 -9 -7 -6 -3 -3 -1 -3 -1 -0 -1 -8 -1 -1 -9 -1 -5 -0 -6 -9 -0 -0 -6 -9 -0 -1 -7 -2 -7 -6 -7 -7 -7 -7 -2 -3 -8 -1 -0 -9 -0 -2 -0 -7 -3 -7 -4 -5 -7 -6 -1 -1 -6 -9 -6 -7 -2 -6 -1 -0 -8 -2 -9 -8 -4 -5 -2 -6 -2 -1 -5 -3 -1 -1 -6 -3 -8 -2 -6 -7 -6 -0 -9 -5 -2 -9 -6 -0 -5 -8 -0 -1 -0 -8 -7 -2 -9 -6 -9 -0 -2 -4 -1 -2 -0 -1 -4 -7 -6 -6 -9 -1 -9 -0 -7 -1 -1 -8 -8 -5 -2 -9 -1 -2 -0 -0 -7 -5 -9 -0 -5 -2 -6 -7 -1 -3 -2 -1 -9 -9 -6 -0 -9 -1 -8 -8 -8 -1 -8 -8 -3 -4 -1 -5 -6 -2 -1 -8 -6 -9 -6 -3 -6 -8 -1 -5 -0 -5 -0 -0 -9 -8 -1 -9 -0 -1 -8 -9 -2 -5 -9 -0 -1 -4 -2 -3 -4 -5 -0 -0 -3 -0 -6 -6 -1 -9 -1 -4 -9 -8 -2 -0 -6 -1 -5 -6 -4 -9 -4 -1 -0 -4 -1 -7 -0 -7 -3 -6 -9 -9 -6 -2 -6 -8 -5 -0 -0 -3 -1 -0 -0 -2 -5 -5 -1 -8 -1 -9 -1 -6 -9 -9 -9 -3 -2 -0 -9 -3 -1 -6 -2 -3 -6 -1 -1 -6 -7 -9 -3 -9 -5 -5 -8 -6 -3 -9 -4 -0 -3 -7 -8 -5 -3 -1 -5 -0 -7 -9 -0 -4 -0 -0 -4 -8 -5 -1 -9 -7 -0 -0 -7 -4 -5 -8 -6 -9 -6 -7 -7 -1 -6 -8 -3 -9 -7 -6 -3 -0 -1 -9 -6 -9 -3 -9 -2 -3 -0 -1 -2 -8 -2 -1 -3 -9 -0 -3 -8 -9 -7 -7 -9 -2 -9 -7 -5 -2 -4 -5 -5 -7 -4 -5 -9 -4 -7 -5 -6 -0 -3 -6 -5 -0 -4 -8 -3 -9 -2 -7 -0 -7 -4 -2 -9 -3 -2 -0 -6 -2 -4 -0 -1 -4 -0 -6 -7 -0 -0 -5 -8 -2 -1 -3 -7 -1 -2 -6 -3 -9 -7 -0 -3 -9 -5 -4 -4 -9 -2 -8 -0 -0 -9 -7 -3 -3 -5 -9 -2 -7 -2 -9 -5 -1 -1 -3 -6 -1 -2 -2 -5 -4 -2 -1 -3 -7 -3 -7 -5 -6 -9 -7 -4 -9 -0 -8 -8 -6 -7 -1 -5 -7 -9 -9 -0 -9 -3 -6 -1 -7 -2 -4 -3 -3 -9 -7 -3 -6 -0 -0 -1 -3 -0 -5 -2 -8 -9 -7 -6 -2 -5 -8 -0 -9 -7 -6 -7 -6 -2 -3 -3 -7 -7 -3 -2 -0 -3 -4 -6 -8 -2 -9 -1 -1 -6 -9 -1 -1 -8 -1 -8 -3 -0 -6 -3 -2 -4 -3 -9 -2 -0 -9 -5 -9 -6 -2 -7 -1 -8 -0 -3 -1 -9 -1 -0 -1 -9 -5 -9 -2 -2 -2 -1 -5 -9 -2 -2 -6 -8 -3 -9 -1 -9 -1 -8 -3 -2 -9 -7 -9 -1 -2 -2 -6 -1 -1 -9 -1 -5 -2 -7 -3 -0 -5 -6 -8 -3 -6 -2 -7 -9 -0 -8 -1 -7 -4 -6 -9 -8 -3 -7 -5 -2 -7 -6 -6 -7 -7 -6 -6 -2 -0 -8 -9 -6 -4 -7 -3 -5 -6 -8 -8 -8 -0 -6 -6 -0 -0 -0 -1 -0 -6 -3 -4 -2 -0 -6 -2 -0 -9 -8 -1 -6 -2 -5 -1 -9 -8 -8 -9 -0 -8 -1 -6 -4 -8 -5 -1 -5 -0 -6 -1 -0 -2 -6 -7 -5 -5 -4 -2 -7 -5 -5 -2 -9 -3 -1 -9 -3 -6 -1 -7 -1 -3 -4 -6 -7 -9 -7 -1 -8 -0 -1 -8 -5 -2 -1 -1 -9 -4 -9 -7 -4 -1 -5 -3 -0 -1 -0 -6 -7 -3 -7 -5 -0 -7 -7 -7 -7 -1 -4 -9 -6 -9 -9 -5 -7 -1 -5 -8 -9 -4 -1 -6 -7 -3 -4 -4 -9 -5 -6 -7 -4 -7 -1 -9 -0 -4 -5 -6 -3 -5 -3 -7 -1 -5 -7 -9 -7 -0 -3 -1 -7 -2 -7 -0 -1 -5 -2 -6 -7 -5 -7 -9 -6 -7 -2 -8 -2 -5 -6 -6 -5 -9 -7 -8 -2 -4 -9 -6 -4 -4 -9 -6 -7 -1 -8 -6 -0 -3 -2 -7 -1 -9 -5 -2 -3 -5 -5 -7 -9 -7 -9 -2 -7 -8 -5 -2 -7 -5 -0 -1 -1 -8 -0 -8 -5 -6 -3 -0 -8 -4 -9 -6 -4 -1 -0 -9 -3 -8 -4 -2 -8 -1 -1 -6 -5 -1 -2 -7 -8 -6 -2 -8 -7 -8 -9 -7 -7 -0 -2 -3 -0 -8 -9 -8 -4 -9 -2 -9 -7 -7 -9 -1 -3 -3 -3 -8 -0 -6 -2 -7 -7 -2 -5 -2 -9 -8 -0 -3 -3 -4 -4 -3 -2 -5 -2 -8 -9 -7 -9 -6 -1 -0 -4 -5 -5 -2 -7 -4 -9 -4 -6 -9 -7 -9 -2 -1 -8 -8 -3 -5 -2 -9 -1 -2 -7 -1 -4 -4 -6 -5 -7 -2 -6 -4 -3 -1 -6 -9 -0 -4 -8 -1 -1 -0 -0 -9 -6 -1 -2 -4 -0 -7 -3 -2 -1 -0 -3 -2 -3 -9 -7 -4 -0 -7 -5 -5 -4 -1 -4 -1 -9 -0 -0 -3 -1 -0 -6 -1 -1 -7 -7 -6 -5 -0 -5 -5 -9 -2 -2 -5 -9 -8 -5 -2 -9 -8 -6 -7 -1 -0 -9 -3 -5 -1 -9 -1 -3 -1 -8 -2 -5 -3 -4 -7 -3 -9 -6 -7 -0 -1 -6 -8 -3 -3 -9 -6 -3 -1 -3 -7 -1 -7 -1 -1 -9 -4 -1 -3 -6 -1 -5 -1 -5 -2 -7 -2 -6 -1 -8 -9 -4 -4 -1 -6 -6 -9 -4 -0 -2 -3 -3 -1 -7 -6 -0 -7 -8 -7 -1 -2 -3 -2 -6 -7 -2 -9 -8 -7 -6 -1 -6 -0 -3 -6 -4 -4 -9 -7 -7 -1 -5 -4 -9 -2 -6 -9 -1 -1 -9 -7 -6 -7 -2 -9 -2 -7 -2 -7 -8 -8 -6 -3 -6 -7 -6 -2 -1 -9 -8 -1 -2 -0 -6 -5 -9 -5 -9 -5 -1 -5 -1 -7 -3 -8 -4 -8 -5 -2 -9 -7 -7 -3 -1 -1 -8 -9 -1 -8 -3 -1 -9 -0 -0 -7 -4 -5 -3 -7 -9 -2 -1 -2 -9 -3 -4 -4 -7 -1 -7 -3 -3 -7 -7 -2 -9 -2 -4 -2 -0 -4 -8 -8 -2 -1 -3 -9 -5 -2 -0 -2 -9 -0 -7 -6 -5 -9 -1 -1 -9 -5 -0 -4 -5 -9 -6 -2 -0 -9 -6 -7 -9 -8 -2 -9 -5 -8 -0 -6 -0 -9 -9 -9 -7 -3 -4 -7 -8 -1 -4 -6 -7 -1 -0 -3 -1 -8 -4 -3 -2 -9 -6 -1 -7 -6 -4 -9 -4 -9 -4 -1 -3 -7 -7 -1 -4 -6 -9 -0 -7 -0 -3 -4 -0 -2 -0 -2 -7 -2 -8 -0 -9 -1 -4 -2 -0 -5 -1 -0 -6 -3 -5 -7 -3 -6 -6 -5 -1 -0 -3 -6 -4 -4 -4 -7 -9 -5 -3 -7 -7 -1 -4 -0 -4 -9 -6 -3 -9 -6 -6 -0 -9 -9 -4 -1 -9 -2 -8 -4 -5 -1 -5 -3 -1 -9 -6 -7 -2 -3 -6 -9 -4 -1 -2 -1 -6 -6 -5 -3 -0 -1 -7 -1 -8 -1 -9 -0 -7 -9 -8 -1 -4 -7 -7 -7 -3 -2 -6 -7 -6 -0 -3 -4 -7 -7 -9 -4 -2 -1 -8 -6 -7 -6 -0 -7 -4 -9 -0 -2 -9 -3 -2 -9 -2 -2 -1 -0 -7 -3 -3 -2 -1 -4 -0 -2 -9 -8 -6 -1 -1 -3 -1 -9 -1 -3 -9 -2 -6 -6 -2 -1 -7 -9 -6 -4 -6 -4 -0 -4 -6 -0 -5 -2 -7 -1 -3 -9 -3 -2 -4 -2 -6 -8 -8 -3 -6 -0 -2 -1 -6 -9 -5 -0 -6 -5 -1 -7 -8 -5 -1 -1 -8 -9 -8 -1 -9 -6 -9 -1 -5 -2 -4 -3 -8 -0 -8 -1 -9 -6 -9 -7 -9 -8 -7 -3 -2 -5 -5 -9 -1 -9 -8 -9 -4 -7 -9 -6 -3 -9 -7 -8 -2 -8 -1 -7 -1 -0 -4 -6 -8 -1 -9 -7 -0 -8 -4 -0 -5 -8 -6 -0 -7 -7 -5 -5 -6 -1 -6 -8 -0 -0 -3 -6 -1 -6 -0 -7 -2 -9 -1 -6 -9 -7 -5 -4 -3 -8 -9 -7 -2 -8 -6 -9 -8 -8 -1 -5 -4 -9 -1 -0 -2 -2 -0 -6 -1 -3 -4 -1 -0 -8 -0 -8 -1 -9 -4 -7 -9 -1 -7 -9 -1 -8 -7 -9 -8 -1 -2 -7 -4 -6 -3 -0 -5 -7 -9 -3 -1 -3 -0 -9 -8 -9 -6 -8 -1 -0 -6 -8 -1 -1 -0 -3 -4 -3 -2 -1 -9 -1 -1 -6 -9 -2 -1 -0 -2 -9 -1 -1 -4 -8 -4 -3 -7 -1 -1 -9 -9 -0 -1 -9 -1 -6 -3 -1 -4 -7 -8 -0 -0 -9 -3 -8 -1 -1 -2 -6 -7 -7 -0 -4 -5 -2 -1 -9 -1 -2 -1 -3 -9 -0 -2 -1 -9 -0 -8 -6 -0 -8 -2 -0 -0 -5 -9 -9 -6 -1 -1 -4 -5 -5 -9 -8 -7 -6 -8 -5 -2 -0 -3 -8 -8 -2 -0 -2 -4 -7 -2 -4 -2 -7 -5 -3 -7 -2 -8 -0 -1 -8 -7 -9 -7 -0 -9 -4 -2 -0 -7 -6 -3 -5 -1 -9 -9 -8 -2 -4 -6 -2 -2 -9 -3 -2 -9 -1 -5 -9 -9 -5 -9 -7 -6 -1 -7 -6 -3 -0 -4 -3 -8 -4 -7 -3 -6 -1 -3 -0 -5 -1 -6 -3 -9 -0 -1 -2 -0 -6 -7 -2 -0 -1 -4 -2 -6 -7 -6 -9 -0 -3 -7 -4 -6 -1 -1 -2 -9 -0 -0 -7 -3 -3 -2 -1 -7 -9 -0 -5 -1 -2 -6 -7 -4 -2 -2 -6 -1 -1 -4 -9 -1 -4 -3 -4 -8 -1 -7 -0 -7 -0 -8 -6 -1 -3 -0 -7 -3 -7 -1 -1 -7 -6 -4 -9 -3 -6 -0 -6 -2 -9 -2 -6 -1 -9 -1 -7 -0 -7 -3 -5 -3 -0 -7 -9 -8 -2 -6 -3 -9 -1 -4 -1 -2 -6 -6 -4 -1 -7 -1 -4 -8 -0 -9 -8 -9 -7 -4 -1 -5 -0 -2 -1 -8 -7 -3 -2 -6 -4 -8 -3 -1 -6 -9 -8 -2 -7 -0 -1 -9 -3 -7 -7 -7 -9 -9 -5 -2 -3 -5 -6 -0 -2 -1 -3 -7 -2 -1 -3 -2 -6 -7 -2 -0 -1 -8 -2 -9 -1 -9 -6 -6 -8 -8 -1 -1 -3 -1 -7 -5 -4 -1 -8 -1 -6 -6 -6 -1 -2 -6 -9 -3 -3 -1 -0 -5 -2 -8 -3 -5 -7 -4 -8 -6 -1 -1 -4 -5 -8 -7 -4 -2 -2 -0 -9 -9 -1 -1 -9 -9 -2 -1 -2 -1 -6 -4 -3 -1 -6 -9 -2 -2 -0 -1 -1 -0 -4 -6 -4 -8 -0 -9 -1 -4 -0 -2 -5 -6 -2 -2 -7 -3 -1 -8 -5 -2 -9 -8 -0 -4 -1 -6 -8 -8 -2 -6 -2 -4 -9 -9 -4 -7 -6 -0 -0 -2 -4 -8 -3 -1 -0 -8 -9 -5 -4 -0 -3 -8 -3 -4 -4 -6 -8 -6 -4 -0 -2 -6 -9 -5 -0 -3 -4 -3 -0 -1 -9 -1 -7 -1 -3 -0 -8 -4 -7 -0 -2 -6 -1 -3 -6 -0 -4 -6 -6 -7 -6 -1 -0 -9 -9 -0 -2 -8 -9 -3 -6 -1 -6 -2 -3 -7 -5 -8 -8 -3 -3 -0 -9 -6 -2 -7 -0 -9 -9 -1 -7 -6 -6 -1 -4 -8 -8 -9 -8 -9 -7 -1 -6 -2 -7 -9 -8 -8 -0 -1 -0 -0 -2 -4 -4 -9 -1 -0 -1 -6 -2 -5 -6 -3 -7 -6 -8 -0 -4 -7 -6 -9 -1 -5 -4 -7 -2 -9 -7 -4 -2 -3 -4 -9 -8 -0 -6 -6 -9 -4 -5 -2 -4 -6 -8 -1 -6 -9 -6 -5 -6 -2 -7 -6 -9 -6 -7 -5 -6 -0 -3 -9 -7 -6 -6 -4 -6 -1 -6 -0 -1 -8 -3 -1 -1 -7 -9 -3 -6 -8 -5 -2 -9 -1 -4 -1 -4 -5 -9 -6 -6 -5 -1 -3 -3 -1 -4 -2 -1 -5 -5 -0 -7 -3 -9 -2 -8 -0 -9 -8 -6 -7 -4 -6 -0 -7 -2 -8 -4 -3 -0 -1 -3 -9 -1 -0 -9 -5 -8 -0 -0 -1 -4 -7 -8 -7 -8 -3 -5 -0 -4 -4 -5 -3 -4 -9 -7 -1 -3 -5 -2 -5 -7 -0 -1 -2 -7 -9 -5 -8 -1 -1 -7 -0 -1 -6 -5 -1 -7 -5 -1 -5 -7 -5 -0 -9 -5 -7 -4 -2 -7 -3 -1 -9 -6 -3 -6 -3 -1 -6 -9 -7 -6 -2 -3 -1 -7 -9 -9 -5 -2 -2 -4 -0 -7 -6 -6 -1 -1 -1 -8 -7 -1 -7 -2 -7 -9 -2 -2 -4 -0 -0 -1 -2 -4 -9 -2 -7 -9 -2 -9 -8 -2 -4 -3 -9 -8 -8 -3 -6 -3 -3 -7 -6 -8 -0 -2 -9 -7 -1 -1 -9 -3 -0 -6 -9 -3 -8 -5 -0 -5 -9 -1 -1 -6 -4 -2 -7 -2 -3 -6 -4 -1 -9 -0 -3 -8 -5 -1 -5 -9 -3 -8 -1 -5 -0 -8 -3 -8 -9 -0 -9 -0 -9 -0 -0 -9 -9 -3 -1 -7 -7 -4 -0 -2 -6 -2 -4 -0 -1 -5 -0 -7 -8 -9 -7 -7 -1 -1 -2 -4 -8 -7 -1 -1 -6 -2 -3 -2 -8 -8 -9 -5 -9 -4 -9 -6 -6 -9 -7 -9 -5 -0 -6 -3 -0 -1 -5 -6 -8 -9 -9 -9 -4 -5 -3 -7 -3 -9 -7 -5 -0 -6 -4 -2 -9 -0 -8 -4 -7 -6 -2 -1 -7 -6 -3 -6 -9 -7 -9 -3 -4 -6 -6 -4 -3 -8 -1 -9 -9 -1 -3 -0 -6 -7 -6 -1 -1 -2 -6 -9 -8 -6 -9 -1 -0 -7 -5 -1 -9 -3 -1 -2 -2 -0 -8 -7 -2 -6 -2 -7 -8 -8 -1 -2 -9 -8 -2 -7 -0 -0 -3 -4 -9 -2 -0 -3 -8 -3 -1 -7 -9 -3 -3 -2 -5 -0 -1 -3 -5 -2 -8 -9 -9 -9 -2 -4 -1 -4 -1 -6 -6 -0 -6 -4 -9 -1 -6 -4 -9 -0 -1 -9 -9 -9 -3 -9 -9 -4 -4 -5 -6 -0 -0 -7 -7 -0 -6 -8 -1 -9 -1 -1 -4 -7 -4 -2 -4 -1 -5 -4 -7 -6 -9 -4 -2 -3 -9 -7 -1 -0 -5 -5 -1 -3 -7 -4 -1 -5 -8 -5 -6 -5 -0 -0 -3 -1 -9 -0 -5 -9 -6 -7 -4 -6 -9 -5 -4 -7 -8 -8 -0 -5 -2 -4 -6 -0 -0 -6 -5 -0 -5 -1 -5 -7 -7 -2 -7 -0 -3 -0 -3 -5 -3 -6 -9 -6 -0 -9 -5 -5 -0 -2 -7 -6 -6 -4 -7 -2 -7 -1 -1 -2 -9 -6 -1 -0 -2 -2 -8 -1 -3 -5 -2 -5 -9 -8 -5 -6 -6 -1 -0 -1 -6 -9 -5 -2 -7 -2 -3 -4 -1 -0 -9 -4 -0 -7 -8 -1 -0 -1 -5 -6 -8 -0 -3 -5 -7 -5 -5 -8 -7 -2 -3 -6 -1 -1 -9 -5 -3 -1 -3 -3 -6 -8 -3 -5 -0 -7 -1 -5 -8 -5 -6 -6 -1 -3 -2 -9 -1 -1 -9 -8 -5 -9 -5 -5 -1 -7 -1 -1 -6 -5 -7 -2 -3 -2 -5 -7 -3 -9 -2 -3 -5 -1 -6 -4 -7 -7 -0 -3 -6 -7 -1 -9 -6 -3 -7 -0 -6 -9 -1 -2 -1 -1 -2 -9 -8 -3 -2 -0 -2 -3 -7 -6 -9 -6 -6 -6 -4 -6 -1 -0 -2 -3 -0 -4 -7 -6 -8 -8 -7 -2 -6 -2 -1 -2 -9 -7 -0 -0 -1 -0 -0 -0 -3 -8 -1 -8 -0 -1 -9 -3 -0 -9 -1 -5 -5 -5 -1 -3 -8 -7 -3 -7 -0 -6 -6 -6 -7 -4 -1 -7 -5 -2 -1 -4 -7 -2 -4 -0 -5 -4 -9 -5 -1 -5 -5 -8 -7 -7 -9 -1 -5 -4 -6 -7 -2 -7 -1 -5 -9 -9 -7 -9 -1 -1 -0 -6 -6 -1 -4 -1 -0 -0 -7 -1 -2 -8 -9 -2 -6 -9 -2 -7 -0 -8 -0 -0 -0 -7 -3 -3 -4 -1 -9 -0 -2 -0 -0 -2 -2 -1 -3 -5 -6 -8 -7 -2 -4 -3 -9 -6 -4 -9 -5 -6 -1 -2 -3 -1 -1 -2 -2 -9 -2 -7 -0 -6 -9 -0 -1 -0 -8 -5 -6 -4 -2 -0 -9 -9 -6 -1 -6 -7 -9 -0 -1 -3 -1 -2 -7 -8 -9 -1 -9 -1 -0 -7 -6 -5 -0 -5 -3 -5 -5 -8 -7 -3 -3 -2 -3 -3 -6 -6 -3 -1 -1 -4 -6 -1 -5 -3 -9 -5 -4 -1 -6 -7 -0 -2 -0 -8 -1 -9 -5 -4 -8 -3 -3 -1 -8 -2 -2 -0 -8 -1 -6 -8 -1 -0 -3 -0 -4 -2 -4 -8 -1 -5 -2 -3 -6 -5 -8 -5 -8 -0 -1 -9 -8 -0 -8 -0 -5 -6 -1 -4 -8 -7 -1 -3 -4 -0 -2 -6 -3 -0 -3 -8 -4 -5 -9 -1 -2 -0 -8 -9 -2 -3 -3 -7 -5 -5 -3 -1 -6 -0 -5 -9 -5 -1 -5 -5 -6 -1 -7 -0 -1 -1 -6 -8 -5 -9 -0 -6 -5 -0 -8 -2 -1 -3 -0 -5 -6 -5 -6 -1 -8 -0 -0 -5 -9 -2 -9 -5 -2 -2 -9 -9 -8 -8 -3 -4 -7 -4 -8 -5 -3 -7 -7 -1 -6 -7 -7 -0 -1 -2 -2 -3 -5 -6 -1 -7 -7 -9 -3 -4 -2 -8 -0 -6 -8 -9 -1 -7 -8 -7 -8 -7 -1 -0 -9 -6 -3 -7 -5 -7 -2 -5 -5 -6 -6 -4 -8 -5 -7 -6 -6 -2 -6 -4 -1 -9 -6 -6 -2 -1 -6 -6 -1 -5 -8 -0 -2 -9 -6 -4 -6 -3 -1 -1 -6 -6 -9 -5 -7 -9 -6 -5 -1 -5 -7 -5 -3 -9 -6 -6 -3 -1 -6 -8 -6 -0 -6 -2 -4 -6 -2 -2 -3 -4 -6 -6 -7 -5 -3 -0 -5 -1 -3 -1 -8 -8 -9 -8 -6 -1 -1 -2 -3 -8 -8 -9 -1 -4 -1 -0 -0 -5 -0 -7 -9 -9 -2 -1 -6 -9 -9 -9 -1 -3 -1 -4 -0 -4 -9 -0 -4 -1 -6 -5 -4 -1 -5 -9 -1 -7 -5 -8 -2 -3 -0 -9 -8 -9 -2 -4 -6 -1 -9 -9 -0 -1 -4 -1 -7 -1 -9 -1 -1 -4 -5 -0 -7 -3 -5 -2 -0 -1 -7 -1 -6 -8 -6 -7 -7 -3 -3 -8 -7 -7 -1 -3 -2 -0 -5 -0 -4 -2 -8 -6 -4 -7 -8 -1 -4 -1 -7 -1 -4 -0 -5 -3 -6 -6 -0 -6 -8 -2 -1 -9 -8 -2 -0 -5 -7 -0 -7 -6 -1 -6 -6 -1 -2 -1 -0 -1 -3 -0 -5 -8 -2 -7 -6 -2 -1 -4 -0 -5 -1 -3 -1 -6 -1 -9 -6 -2 -8 -0 -2 -0 -0 -6 -3 -4 -5 -4 -0 -0 -1 -4 -0 -2 -8 -4 -0 -5 -6 -6 -9 -1 -6 -4 -4 -7 -2 -1 -5 -2 -6 -6 -3 -1 -8 -1 -8 -1 -5 -5 -2 -1 -9 -9 -9 -5 -3 -7 -9 -0 -8 -2 -3 -4 -8 -5 -9 -0 -7 -2 -1 -9 -9 -7 -2 -9 -7 -4 -5 -5 -4 -0 -2 -2 -5 -4 -5 -3 -7 -6 -1 -2 -8 -2 -0 -8 -9 -9 -6 -5 -4 -9 -6 -5 -1 -6 -2 -7 -9 -7 -6 -4 -1 -5 -3 -9 -7 -6 -1 -8 -3 -5 -0 -5 -9 -9 -9 -5 -6 -3 -3 -1 -0 -4 -8 -9 -4 -1 -3 -4 -7 -4 -5 -9 -4 -7 -7 -8 -6 -4 -9 -0 -0 -0 -7 -7 -0 -7 -0 -6 -0 -0 -0 -1 -5 -9 -6 -8 -1 -5 -6 -9 -1 -3 -1 -0 -2 -6 -5 -4 -2 -1 -9 -6 -7 -7 -8 -3 -8 -4 -4 -9 -3 -0 -7 -1 -1 -0 -5 -6 -9 -1 -0 -3 -3 -1 -7 -9 -9 -5 -1 -7 -7 -7 -7 -2 -7 -6 -6 -5 -3 -8 -1 -1 -1 -3 -9 -6 -6 -1 -5 -7 -4 -6 -8 -1 -7 -1 -5 -9 -0 -6 -3 -1 -2 -3 -3 -9 -8 -3 -9 -7 -2 -5 -4 -3 -9 -1 -1 -3 -1 -7 -5 -0 -2 -4 -5 -8 -4 -2 -8 -2 -3 -0 -3 -5 -7 -6 -8 -8 -5 -8 -1 -9 -2 -8 -7 -1 -9 -7 -0 -6 -6 -2 -1 -7 -3 -1 -5 -1 -6 -2 -0 -1 -0 -0 -2 -3 -9 -9 -0 -8 -6 -5 -8 -5 -0 -2 -7 -0 -4 -2 -1 -3 -4 -4 -5 -3 -1 -0 -1 -2 -0 -1 -8 -7 -0 -4 -3 -2 -2 -2 -3 -0 -3 -9 -3 -0 -3 -4 -9 -8 -7 -8 -4 -7 -9 -2 -6 -9 -6 -4 -7 -6 -1 -1 -6 -2 -7 -9 -5 -3 -1 -9 -0 -2 -4 -6 -7 -6 -7 -3 -7 -1 -4 -7 -7 -6 -1 -0 -5 -8 -7 -5 -4 -0 -2 -9 -2 -0 -0 -1 -0 -8 -2 -6 -2 -4 -7 -5 -3 -8 -0 -1 -4 -7 -4 -4 -5 -6 -9 -4 -9 -1 -3 -4 -9 -1 -1 -9 -1 -5 -4 -1 -8 -5 -2 -6 -3 -4 -6 -0 -6 -4 -4 -3 -3 -4 -4 -2 -8 -4 -0 -6 -8 -3 -7 -9 -6 -5 -9 -5 -3 -2 -5 -1 -3 -0 -9 -3 -0 -6 -2 -1 -6 -6 -2 -6 -5 -8 -7 -2 -4 -1 -9 -9 -7 -0 -6 -8 -3 -7 -0 -4 -4 -9 -8 -0 -0 -6 -7 -1 -1 -4 -9 -9 -8 -4 -8 -1 -0 -2 -5 -7 -4 -7 -6 -3 -7 -8 -2 -1 -3 -6 -8 -9 -6 -4 -5 -1 -2 -3 -1 -7 -6 -7 -9 -5 -1 -2 -9 -9 -3 -2 -1 -8 -0 -2 -1 -4 -6 -3 -3 -2 -5 -3 -0 -9 -4 -8 -1 -6 -6 -3 -8 -2 -1 -4 -0 -8 -5 -1 -0 -7 -1 -4 -2 -5 -4 -3 -6 -2 -2 -6 -0 -5 -2 -1 -3 -1 -9 -9 -4 -6 -9 -8 -0 -9 -2 -0 -3 -5 -9 -5 -9 -0 -2 -9 -4 -9 -8 -4 -8 -9 -5 -4 -0 -5 -1 -9 -1 -5 -2 -1 -8 -3 -9 -6 -1 -4 -6 -6 -0 -9 -1 -3 -7 -7 -4 -6 -8 -2 -8 -8 -3 -1 -2 -6 -2 -1 -0 -0 -6 -2 -5 -4 -6 -2 -8 -9 -8 -8 -9 -0 -2 -2 -9 -1 -1 -1 -6 -9 -2 -7 -8 -0 -5 -2 -0 -6 -1 -3 -8 -4 -0 -7 -1 -9 -6 -4 -0 -7 -3 -8 -1 -8 -6 -7 -1 -0 -3 -0 -9 -2 -0 -2 -8 -0 -5 -0 -3 -6 -1 -4 -9 -1 -5 -2 -3 -0 -7 -2 -9 -2 -6 -7 -0 -4 -3 -7 -3 -0 -4 -9 -6 -9 -9 -9 -5 -3 -3 -4 -1 -8 -8 -1 -4 -8 -7 -4 -3 -1 -4 -8 -6 -4 -3 -4 -8 -5 -6 -8 -9 -5 -5 -8 -7 -4 -0 -0 -0 -5 -3 -9 -8 -9 -3 -2 -7 -1 -0 -7 -1 -1 -7 -9 -0 -0 -5 -1 -8 -9 -7 -4 -2 -4 -7 -1 -0 -8 -9 -2 -9 -5 -0 -7 -0 -7 -9 -8 -3 -3 -4 -5 -1 -6 -9 -7 -1 -2 -2 -9 -6 -6 -1 -9 -2 -0 -5 -8 -1 -6 -5 -6 -3 -7 -7 -6 -7 -6 -9 -5 -3 -1 -1 -6 -4 -3 -6 -1 -4 -1 -4 -1 -6 -1 -9 -7 -7 -7 -1 -3 -9 -0 -7 -4 -6 -7 -7 -3 -7 -6 -2 -5 -8 -9 -3 -3 -4 -5 -6 -1 -9 -0 -7 -3 -5 -1 -5 -9 -0 -4 -2 -8 -6 -6 -3 -9 -0 -8 -0 -9 -9 -7 -8 -1 -8 -0 -9 -7 -1 -9 -2 -5 -1 -3 -0 -2 -7 -6 -2 -3 -9 -7 -2 -7 -0 -7 -7 -6 -0 -6 -8 -4 -7 -5 -3 -2 -3 -2 -2 -3 -4 -4 -4 -7 -4 -0 -7 -9 -6 -2 -3 -2 -5 -3 -9 -6 -6 -7 -1 -0 -6 -7 -9 -0 -2 -7 -9 -2 -9 -5 -0 -9 -5 -7 -1 -2 -5 -3 -8 -0 -0 -2 -4 -1 -7 -8 -3 -3 -1 -5 -2 -6 -0 -3 -5 -8 -0 -5 -2 -1 -5 -6 -3 -6 -4 -8 -0 -5 -4 -0 -6 -0 -5 -9 -3 -3 -0 -1 -7 -2 -2 -2 -8 -9 -0 -8 -0 -9 -8 -2 -9 -4 -3 -2 -9 -4 -9 -4 -1 -7 -2 -1 -3 -3 -7 -1 -1 -7 -7 -3 -9 -3 -1 -8 -3 -5 -1 -4 -6 -9 -4 -0 -3 -6 -3 -6 -6 -2 -9 -7 -9 -7 -8 -6 -6 -0 -5 -1 -2 -1 -4 -6 -2 -0 -2 -2 -2 -8 -8 -8 -0 -1 -0 -1 -7 -6 -9 -4 -9 -9 -4 -9 -8 -9 -7 -9 -6 -3 -9 -5 -0 -8 -7 -0 -6 -8 -1 -5 -7 -1 -4 -7 -8 -8 -3 -3 -2 -3 -6 -3 -1 -5 -5 -2 -5 -2 -4 -2 -9 -7 -9 -9 -2 -6 -9 -6 -0 -0 -9 -0 -8 -2 -1 -7 -6 -2 -0 -1 -6 -2 -3 -8 -9 -1 -2 -5 -8 -2 -0 -7 -1 -1 -1 -0 -8 -6 -7 -6 -4 -7 -1 -2 -0 -3 -4 -2 -7 -7 -1 -3 -4 -1 -3 -1 -3 -6 -6 -9 -5 -2 -8 -5 -5 -3 -6 -9 -6 -2 -0 -2 -7 -1 -9 -8 -2 -4 -6 -6 -3 -6 -8 -2 -9 -6 -1 -8 -4 -3 -6 -6 -1 -1 -0 -2 -1 -3 -9 -9 -4 -3 -9 -2 -7 -2 -3 -2 -0 -3 -3 -9 -0 -4 -0 -6 -9 -5 -3 -4 -4 -5 -0 -1 -5 -9 -4 -3 -3 -4 -0 -1 -0 -5 -8 -4 -0 -3 -5 -8 -6 -9 -4 -4 -7 -9 -3 -5 -0 -9 -2 -3 -6 -9 -8 -2 -5 -8 -7 -0 -2 -2 -5 -6 -7 -2 -2 -2 -1 -8 -5 -7 -2 -2 -7 -3 -7 -7 -6 -6 -9 -4 -1 -5 -8 -9 -0 -8 -8 -2 -3 -6 -2 -9 -8 -0 -1 -0 -5 -4 -5 -7 -0 -6 -6 -2 -5 -2 -2 -6 -2 -4 -0 -7 -6 -2 -1 -2 -6 -4 -4 -5 -2 -6 -9 -9 -6 -2 -4 -9 -8 -2 -4 -9 -6 -0 -1 -1 -0 -9 -8 -6 -4 -3 -7 -4 -7 -2 -1 -9 -1 -8 -3 -0 -4 -8 -0 -9 -0 -0 -3 -2 -7 -1 -4 -2 -8 -4 -5 -8 -5 -5 -1 -0 -3 -2 -4 -5 -2 -7 -9 -9 -1 -4 -2 -3 -9 -9 -2 -9 -1 -6 -6 -9 -6 -1 -9 -0 -9 -9 -3 -9 -6 -9 -9 -0 -7 -0 -0 -2 -8 -9 -1 -1 -3 -7 -0 -6 -7 -7 -0 -0 -6 -0 -3 -7 -5 -0 -6 -1 -2 -6 -3 -9 -1 -7 -8 -0 -9 -3 -8 -0 -1 -0 -7 -3 -0 -6 -2 -8 -2 -5 -4 -9 -6 -3 -4 -3 -9 -7 -1 -3 -2 -6 -2 -5 -5 -2 -0 -6 -8 -6 -7 -0 -8 -9 -4 -0 -2 -1 -5 -1 -6 -8 -1 -0 -2 -5 -2 -9 -8 -5 -3 -6 -9 -7 -2 -1 -9 -3 -5 -4 -4 -8 -0 -9 -5 -0 -2 -6 -0 -2 -6 -3 -3 -6 -2 -8 -1 -2 -6 -9 -1 -2 -5 -5 -9 -0 -0 -1 -8 -2 -0 -7 -0 -9 -2 -0 -4 -9 -0 -6 -0 -3 -1 -5 -2 -2 -6 -2 -7 -6 -0 -0 -5 -1 -6 -3 -7 -8 -1 -1 -5 -2 -0 -6 -5 -5 -5 -3 -7 -7 -1 -5 -8 -1 -8 -3 -3 -6 -8 -6 -0 -7 -8 -6 -2 -5 -1 -5 -0 -9 -8 -0 -7 -5 -8 -2 -0 -0 -5 -2 -2 -8 -3 -1 -3 -5 -8 -1 -0 -6 -8 -3 -1 -6 -0 -0 -2 -1 -8 -2 -6 -9 -6 -5 -7 -4 -3 -7 -2 -1 -9 -9 -0 -0 -3 -6 -2 -6 -9 -2 -1 -4 -3 -0 -5 -1 -8 -7 -8 -7 -1 -3 -5 -1 -1 -4 -2 -3 -4 -9 -2 -0 -1 -5 -3 -1 -9 -0 -6 -0 -7 -1 -7 -1 -2 -7 -4 -0 -9 -6 -2 -6 -3 -2 -6 -7 -5 -1 -0 -4 -3 -3 -0 -1 -4 -3 -1 -3 -5 -5 -7 -6 -9 -6 -7 -5 -6 -9 -8 -5 -1 -3 -0 -6 -7 -8 -7 -6 -7 -4 -2 -6 -3 -7 -3 -6 -1 -1 -2 -7 -8 -7 -9 -4 -1 -9 -8 -7 -3 -8 -8 -5 -0 -2 -7 -8 -9 -9 -7 -7 -2 -3 -1 -9 -8 -6 -9 -0 -4 -6 -1 -5 -3 -3 -3 -0 -1 -8 -1 -4 -6 -8 -7 -6 -8 -0 -5 -3 -4 -6 -3 -0 -2 -9 -4 -9 -1 -5 -1 -0 -7 -4 -4 -1 -8 -4 -5 -5 -9 -9 -2 -2 -2 -4 -4 -9 -6 -2 -5 -2 -2 -0 -2 -7 -9 -5 -0 -7 -0 -8 -0 -1 -7 -8 -2 -9 -4 -0 -8 -9 -4 -5 -3 -5 -0 -3 -3 -8 -0 -7 -0 -6 -7 -2 -0 -3 -6 -2 -1 -8 -6 -0 -1 -3 -8 -0 -3 -6 -3 -9 -1 -1 -2 -6 -8 -8 -9 -4 -9 -5 -9 -9 -6 -6 -4 -9 -0 -4 -0 -1 -3 -0 -0 -1 -9 -7 -2 -1 -6 -7 -2 -2 -1 -8 -1 -8 -9 -6 -2 -9 -9 -7 -4 -0 -9 -6 -8 -9 -9 -9 -7 -9 -5 -4 -7 -0 -9 -6 -4 -9 -4 -0 -7 -7 -9 -0 -0 -5 -6 -7 -2 -1 -3 -3 -8 -0 -1 -3 -8 -4 -3 -1 -2 -9 -9 -4 -5 -1 -4 -0 -3 -8 -8 -7 -1 -1 -6 -8 -2 -8 -6 -3 -9 -5 -9 -7 -2 -3 -1 -2 -0 -6 -3 -1 -9 -5 -2 -7 -3 -0 -1 -1 -9 -5 -2 -2 -6 -0 -6 -5 -8 -4 -3 -3 -0 -2 -9 -5 -7 -4 -7 -2 -5 -9 -5 -4 -7 -8 -2 -3 -2 -3 -6 -9 -2 -6 -3 -4 -1 -6 -1 -9 -0 -0 -6 -2 -9 -0 -9 -7 -8 -0 -8 -6 -2 -3 -5 -0 -5 -4 -2 -6 -0 -9 -8 -5 -9 -6 -1 -9 -3 -7 -1 -3 -7 -4 -1 -1 -9 -6 -9 -5 -8 -0 -2 -5 -3 -8 -0 -1 -4 -1 -6 -6 -9 -5 -8 -0 -7 -3 -4 -9 -2 -9 -9 -3 -1 -0 -8 -5 -3 -2 -4 -5 -2 -1 -3 -9 -8 -4 -4 -7 -9 -3 -7 -0 -7 -7 -9 -9 -8 -7 -1 -2 -0 -0 -0 -7 -6 -6 -8 -0 -1 -3 -0 -2 -6 -3 -6 -8 -0 -5 -6 -2 -0 -2 -9 -5 -0 -2 -4 -3 -9 -9 -1 -9 -5 -4 -4 -2 -0 -1 -7 -6 -6 -7 -0 -6 -4 -9 -8 -8 -9 -3 -3 -1 -0 -4 -4 -7 -0 -5 -7 -6 -7 -8 -1 -3 -4 -6 -7 -0 -4 -3 -2 -6 -3 -7 -3 -7 -1 -9 -1 -3 -9 -0 -1 -7 -9 -8 -4 -3 -5 -4 -0 -7 -2 -2 -6 -9 -5 -3 -9 -9 -8 -1 -6 -1 -7 -8 -3 -1 -1 -2 -8 -4 -5 -6 -1 -7 -0 -0 -1 -8 -7 -4 -9 -9 -7 -0 -5 -1 -5 -8 -6 -8 -5 -6 -2 -6 -1 -1 -9 -6 -4 -3 -5 -1 -8 -5 -7 -9 -7 -2 -7 -1 -5 -9 -1 -3 -9 -5 -0 -4 -6 -3 -5 -3 -3 -6 -1 -0 -2 -3 -2 -2 -6 -2 -0 -1 -2 -7 -8 -5 -6 -2 -8 -4 -6 -8 -5 -8 -6 -9 -8 -7 -1 -6 -7 -3 -7 -7 -4 -0 -1 -3 -9 -2 -0 -0 -5 -4 -7 -1 -6 -9 -7 -8 -4 -3 -3 -1 -3 -1 -5 -6 -0 -3 -5 -0 -8 -7 -7 -8 -6 -3 -6 -9 -5 -9 -2 -1 -2 -3 -5 -2 -2 -1 -1 -3 -3 -5 -8 -7 -9 -3 -4 -2 -7 -1 -7 -8 -2 -2 -3 -9 -5 -5 -7 -7 -3 -9 -0 -5 -9 -6 -6 -9 -2 -6 -3 -9 -2 -0 -7 -0 -7 -7 -1 -2 -0 -3 -2 -9 -0 -3 -3 -6 -3 -0 -5 -2 -6 -6 -7 -8 -0 -1 -5 -7 -1 -2 -9 -2 -5 -3 -6 -3 -6 -1 -0 -4 -5 -1 -9 -4 -6 -0 -5 -8 -4 -0 -4 -5 -3 -1 -5 -1 -5 -5 -2 -1 -0 -9 -6 -7 -5 -9 -9 -3 -4 -7 -7 -5 -6 -3 -2 -0 -4 -4 -0 -8 -5 -9 -1 -5 -5 -5 -7 -8 -1 -0 -7 -0 -4 -4 -1 -5 -6 -4 -2 -8 -2 -6 -8 -1 -2 -3 -8 -9 -1 -3 -9 -9 -6 -7 -1 -2 -7 -7 -3 -3 -1 -1 -9 -7 -2 -1 -8 -9 -2 -7 -8 -4 -0 -4 -3 -5 -8 -9 -3 -3 -2 -9 -0 -7 -7 -1 -9 -0 -4 -2 -2 -8 -9 -4 -3 -9 -4 -6 -3 -6 -0 -5 -1 -3 -0 -1 -2 -5 -0 -7 -1 -7 -2 -7 -8 -7 -4 -9 -1 -5 -0 -8 -2 -9 -2 -1 -0 -1 -2 -6 -9 -2 -5 -3 -5 -3 -4 -9 -1 -4 -7 -1 -8 -1 -8 -8 -9 -4 -6 -1 -9 -9 -3 -4 -1 -2 -4 -3 -5 -9 -0 -7 -2 -8 -2 -9 -9 -9 -9 -0 -7 -1 -2 -3 -3 -1 -9 -9 -8 -8 -3 -5 -1 -2 -1 -7 -2 -0 -7 -2 -1 -1 -7 -0 -6 -4 -0 -8 -1 -8 -7 -2 -4 -7 -3 -0 -9 -6 -7 -5 -9 -7 -4 -5 -2 -9 -6 -7 -1 -3 -7 -0 -3 -1 -4 -7 -5 -2 -0 -4 -4 -9 -7 -4 -9 -0 -1 -0 -2 -1 -6 -6 -3 -6 -4 -9 -2 -2 -3 -1 -1 -0 -7 -1 -2 -7 -9 -0 -9 -0 -6 -7 -1 -0 -9 -7 -5 -0 -8 -4 -8 -5 -0 -0 -0 -3 -6 -5 -0 -8 -2 -7 -6 -0 -8 -5 -0 -2 -6 -9 -4 -2 -0 -9 -3 -8 -1 -3 -6 -7 -6 -7 -0 -3 -1 -9 -2 -1 -9 -7 -3 -0 -6 -4 -2 -2 -5 -3 -7 -8 -8 -5 -7 -4 -2 -7 -4 -9 -0 -5 -9 -9 -9 -2 -8 -8 -8 -0 -3 -1 -1 -1 -0 -9 -0 -4 -1 -7 -4 -7 -6 -1 -1 -4 -3 -7 -1 -4 -6 -9 -5 -8 -9 -3 -2 -9 -1 -5 -3 -9 -6 -3 -6 -7 -9 -1 -7 -3 -2 -5 -6 -9 -7 -2 -6 -2 -8 -6 -5 -7 -7 -3 -5 -9 -0 -0 -4 -2 -2 -5 -1 -9 -5 -9 -6 -8 -0 -8 -5 -3 -7 -6 -1 -9 -3 -5 -8 -0 -9 -4 -0 -7 -5 -6 -1 -4 -6 -5 -0 -4 -9 -7 -1 -9 -6 -6 -6 -1 -4 -8 -1 -7 -2 -4 -9 -7 -5 -0 -0 -0 -8 -0 -7 -7 -0 -2 -6 -9 -0 -9 -8 -7 -2 -9 -7 -3 -9 -3 -9 -9 -0 -7 -5 -2 -4 -5 -8 -7 -8 -9 -1 -2 -2 -7 -7 -4 -7 -0 -6 -5 -9 -7 -2 -0 -0 -1 -2 -9 -1 -3 -4 -0 -6 -4 -9 -5 -3 -0 -2 -0 -1 -6 -5 -8 -0 -5 -7 -6 -4 -7 -0 -2 -4 -2 -1 -9 -3 -9 -0 -1 -0 -5 -7 -6 -5 -0 -5 -6 -1 -0 -0 -0 -9 -0 -3 -1 -7 -3 -7 -9 -8 -4 -4 -8 -3 -3 -0 -6 -4 -1 -0 -0 -2 -2 -2 -1 -1 -7 -3 -7 -6 -8 -6 -3 -4 -6 -4 -9 -3 -3 -9 -2 -0 -1 -3 -2 -5 -1 -2 -4 -0 -3 -6 -2 -2 -1 -6 -9 -0 -6 -1 -2 -4 -1 -3 -9 -7 -6 -0 -4 -5 -3 -3 -7 -2 -3 -4 -4 -8 -4 -6 -2 -1 -7 -0 -5 -8 -1 -2 -8 -3 -5 -1 -6 -9 -0 -9 -4 -9 -1 -0 -7 -0 -9 -3 -7 -5 -6 -9 -9 -9 -6 -4 -8 -9 -7 -9 -7 -5 -7 -1 -2 -6 -7 -6 -0 -9 -7 -5 -9 -7 -1 -2 -6 -0 -5 -6 -6 -1 -0 -0 -0 -4 -9 -8 -9 -6 -8 -0 -2 -8 -4 -9 -7 -4 -1 -1 -7 -6 -1 -5 -7 -6 -2 -2 -3 -0 -7 -9 -0 -7 -2 -6 -0 -3 -6 -1 -2 -3 -3 -1 -9 -0 -5 -6 -2 -3 -6 -1 -4 -0 -0 -4 -6 -9 -8 -7 -4 -8 -4 -3 -9 -7 -8 -9 -8 -3 -6 -7 -3 -0 -1 -2 -3 -8 -2 -0 -8 -0 -5 -4 -2 -9 -9 -4 -0 -7 -3 -2 -2 -9 -4 -5 -1 -0 -5 -9 -6 -1 -5 -0 -7 -6 -4 -2 -5 -3 -7 -9 -3 -9 -1 -8 -1 -6 -8 -3 -4 -9 -0 -9 -1 -9 -4 -9 -6 -2 -6 -0 -0 -6 -0 -8 -7 -8 -9 -9 -0 -7 -7 -4 -2 -6 -0 -2 -6 -9 -5 -2 -1 -1 -1 -0 -1 -0 -8 -0 -6 -6 -4 -2 -8 -1 -9 -3 -9 -7 -1 -5 -4 -6 -2 -1 -7 -6 -8 -0 -7 -7 -0 -7 -2 -6 -9 -3 -6 -7 -6 -5 -9 -2 -9 -4 -4 -1 -0 -1 -4 -5 -4 -4 -6 -8 -5 -2 -3 -6 -2 -8 -5 -3 -3 -0 -2 -3 -3 -3 -9 -0 -3 -0 -3 -0 -3 -2 -9 -7 -5 -4 -9 -2 -4 -0 -1 -0 -6 -5 -0 -2 -8 -1 -3 -5 -5 -8 -9 -2 -7 -1 -6 -6 -6 -1 -4 -0 -4 -9 -6 -1 -8 -0 -9 -4 -5 -1 -6 -1 -1 -0 -9 -5 -9 -7 -9 -1 -6 -0 -0 -1 -7 -5 -8 -9 -7 -9 -9 -4 -6 -7 -7 -3 -6 -8 -0 -2 -0 -9 -1 -6 -6 -9 -6 -1 -8 -8 -1 -2 -8 -6 -1 -9 -7 -5 -2 -6 -0 -1 -7 -7 -5 -7 -3 -1 -6 -1 -0 -2 -5 -4 -2 -7 -3 -7 -3 -6 -4 -9 -5 -3 -1 -4 -6 -3 -9 -7 -8 -1 -9 -3 -1 -0 -5 -8 -5 -7 -8 -4 -1 -5 -4 -7 -5 -8 -3 -2 -1 -9 -2 -2 -5 -6 -1 -4 -8 -1 -1 -8 -1 -4 -9 -8 -3 -6 -8 -1 -5 -3 -7 -2 -4 -2 -5 -0 -4 -2 -1 -8 -4 -5 -4 -1 -6 -5 -5 -8 -2 -2 -9 -0 -7 -3 -8 -2 -8 -1 -4 -7 -4 -6 -7 -4 -4 -1 -5 -7 -9 -2 -6 -1 -0 -7 -1 -0 -9 -3 -7 -6 -7 -2 -1 -6 -7 -4 -9 -1 -7 -8 -5 -6 -7 -6 -6 -9 -7 -3 -9 -6 -0 -0 -6 -9 -2 -1 -4 -6 -3 -0 -9 -9 -6 -4 -7 -6 -0 -2 -9 -0 -1 -1 -0 -5 -9 -1 -1 -9 -2 -2 -4 -1 -0 -8 -3 -1 -5 -7 -2 -9 -8 -8 -0 -7 -9 -9 -2 -4 -1 -6 -9 -4 -4 -3 -6 -1 -3 -2 -3 -7 -5 -4 -3 -4 -2 -0 -7 -1 -6 -8 -1 -2 -1 -3 -0 -1 -0 -9 -9 -4 -5 -5 -2 -1 -8 -3 -8 -7 -8 -4 -2 -0 -6 -4 -5 -3 -2 -8 -0 -2 -7 -5 -7 -8 -5 -7 -6 -6 -3 -8 -5 -7 -1 -9 -6 -0 -5 -0 -7 -7 -9 -7 -8 -5 -5 -2 -1 -8 -9 -1 -7 -3 -5 -0 -0 -9 -6 -2 -6 -6 -2 -4 -9 -8 -6 -6 -2 -5 -8 -9 -5 -6 -2 -7 -1 -7 -8 -5 -3 -1 -3 -5 -9 -6 -4 -9 -1 -8 -0 -8 -6 -7 -9 -7 -2 -1 -7 -6 -3 -1 -7 -4 -0 -8 -3 -9 -1 -2 -9 -5 -1 -0 -7 -6 -7 -8 -4 -5 -3 -0 -8 -2 -8 -0 -5 -0 -5 -0 -1 -9 -2 -3 -7 -3 -9 -9 -3 -9 -1 -0 -2 -9 -3 -3 -2 -6 -6 -8 -7 -7 -0 -9 -1 -7 -3 -3 -7 -5 -5 -0 -4 -9 -8 -2 -1 -9 -3 -3 -4 -2 -4 -3 -9 -1 -4 -0 -2 -7 -5 -3 -1 -6 -1 -5 -4 -8 -7 -4 -2 -5 -1 -7 -9 -8 -0 -5 -7 -4 -8 -2 -5 -9 -3 -4 -5 -6 -7 -5 -9 -8 -3 -7 -7 -3 -2 -8 -8 -2 -0 -1 -2 -0 -4 -1 -9 -0 -1 -4 -3 -1 -9 -4 -4 -5 -4 -5 -8 -0 -5 -0 -0 -9 -3 -2 -5 -9 -7 -4 -8 -7 -8 -0 -9 -6 -3 -3 -0 -7 -6 -6 -8 -8 -2 -1 -4 -9 -6 -4 -7 -5 -0 -4 -2 -9 -8 -8 -6 -6 -8 -3 -2 -0 -9 -1 -5 -3 -1 -0 -4 -9 -5 -9 -6 -3 -0 -9 -6 -7 -2 -7 -3 -0 -3 -3 -1 -8 -7 -2 -8 -7 -1 -0 -0 -6 -2 -0 -1 -0 -5 -9 -2 -5 -9 -9 -4 -0 -4 -0 -8 -4 -3 -1 -6 -4 -4 -1 -0 -9 -8 -8 -1 -1 -9 -8 -6 -4 -1 -8 -8 -1 -5 -1 -6 -3 -3 -5 -5 -4 -1 -2 -3 -6 -9 -8 -6 -1 -3 -4 -7 -9 -1 -5 -7 -3 -0 -6 -3 -4 -8 -8 -8 -6 -1 -0 -8 -8 -3 -2 -1 -6 -9 -8 -9 -0 -9 -1 -5 -9 -2 -6 -2 -2 -2 -5 -1 -9 -4 -0 -1 -1 -3 -4 -0 -6 -9 -8 -1 -7 -6 -4 -0 -6 -3 -0 -2 -5 -1 -5 -4 -4 -7 -1 -1 -0 -7 -7 -0 -4 -9 -7 -6 -5 -9 -1 -9 -6 -7 -9 -9 -2 -1 -2 -6 -0 -5 -1 -3 -1 -7 -2 -3 -5 -4 -1 -9 -3 -6 -0 -3 -3 -5 -0 -4 -8 -0 -3 -6 -0 -1 -9 -3 -1 -1 -0 -4 -5 -2 -2 -1 -6 -7 -6 -1 -9 -7 -9 -7 -3 -9 -2 diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..c5fff6c --- /dev/null +++ b/pom.xml @@ -0,0 +1,35 @@ + ++ * ����ʱ�䣺2014-7-8 ����3:58:46 */ public class Layer implements Serializable { /** - * + * */ private static final long serialVersionUID = -5747622503947497069L; - private LayerType type;// ������� - private int outMapNum;// ���map�ĸ��� - private Size mapSize;// map�Ĵ�С - private Size kernelSize;// �����˴�С��ֻ�о������� - private Size scaleSize;// ������С��ֻ�в������� - private double[][][][] kernel;// �����ˣ�ֻ�о������������� - private double[] bias;// ÿ��map��Ӧһ��ƫ�ã�ֻ�о������������� - // �������batch�����map��outmaps[0][0]��ʾ��һ����¼ѵ���µ�0�����map + private LayerType type; + private int outMapNum; + private Size mapSize; + private Size kernelSize; + private Size scaleSize; + private double[][][][] kernel; + private double[] bias; private double[][][][] outmaps; - // �в��matlab toolbox��d��Ӧ private double[][][][] errors; - private static int recordInBatch = 0;// ��¼��ǰѵ������batch�ĵڼ�����¼ + private static int recordInBatch = 0; - private int classNum = -1;// ������ + private int classNum = -1; private Layer() { } - /** - * ����һ��batch��ѵ�� - */ public static void prepareForNewBatch() { recordInBatch = 0; } - /** - * ����һ����¼��ѵ�� - */ public static void prepareForNewRecord() { recordInBatch++; } - /** - * ��ʼ������� - * - * @param mapSize - * @return - */ public static Layer buildInputLayer(Size mapSize) { Layer layer = new Layer(); layer.type = LayerType.input; - layer.outMapNum = 1;// ������map����Ϊ1����һ��ͼ + layer.outMapNum = 1;// ������map����Ϊ1����һ��ͼ layer.setMapSize(mapSize);// return layer; } - /** - * ��������� - * - * @return - */ public static Layer buildConvLayer(int outMapNum, Size kernelSize) { Layer layer = new Layer(); layer.type = LayerType.conv; @@ -78,12 +59,6 @@ public static Layer buildConvLayer(int outMapNum, Size kernelSize) { return layer; } - /** - * ��������� - * - * @param scaleSize - * @return - */ public static Layer buildSampLayer(Size scaleSize) { Layer layer = new Layer(); layer.type = LayerType.samp; @@ -91,11 +66,6 @@ public static Layer buildSampLayer(Size scaleSize) { return layer; } - /** - * ���������,���������������ĸ��������������Ԫ�ĸ��� - * - * @return - */ public static Layer buildOutputLayer(int classNum) { Layer layer = new Layer(); layer.classNum = classNum; @@ -106,86 +76,44 @@ public static Layer buildOutputLayer(int classNum) { // while ((1 << outMapNum) < classNum) // outMapNum += 1; // layer.outMapNum = outMapNum; - Log.i("outMapNum:" + layer.outMapNum); + Log.info("outMapNum:" + layer.outMapNum); return layer; } - /** - * ��ȡmap�Ĵ�С - * - * @return - */ public Size getMapSize() { return mapSize; } - /** - * ����map�Ĵ�С - * - * @param mapSize - */ public void setMapSize(Size mapSize) { this.mapSize = mapSize; } - /** - * ��ȡ������� - * - * @return - */ public LayerType getType() { return type; } - /** - * ��ȡ����������� - * - * @return - */ - public int getOutMapNum() { return outMapNum; } - /** - * �������map�ĸ��� - * - * @param outMapNum - */ public void setOutMapNum(int outMapNum) { this.outMapNum = outMapNum; } - /** - * ��ȡ�����˵Ĵ�С��ֻ�о�������kernelSize���������δnull - * - * @return - */ public Size getKernelSize() { return kernelSize; } - /** - * ��ȡ������С��ֻ�в�������scaleSize���������δnull - * - * @return - */ public Size getScaleSize() { return scaleSize; } enum LayerType { - // ���������ͣ�����㡢����㡢�����㡢������ input, output, conv, samp } - /** - * �����˻��߲�����scale�Ĵ�С,��������Բ���.���Ͱ�ȫ�����Ժ��� - * - * @author jiqunpeng - * - * ����ʱ�䣺2014-7-8 ����4:11:00 - */ + // --- + public static class Size implements Serializable { private static final long serialVersionUID = -209157832162004118L; @@ -197,30 +125,34 @@ public Size(int x, int y) { this.y = y; } + @Override public String toString() { - StringBuilder s = new StringBuilder("Size(").append(" x = ") - .append(x).append(" y= ").append(y).append(")"); - return s.toString(); + return "Size{" + + "x=" + x + + ", y=" + y + + '}'; } /** - * ����scaleSize�õ�һ���µ�Size��Ҫ��this.x��this. - * y�ֱܷ�scaleSize.x��scaleSize.y���� - * + * ����scaleSize�õ�һ���µ�Size��Ҫ��this.x��this. + * y�ֱܷ�scaleSize.x��scaleSize.y���� + * * @param scaleSize * @return */ public Size divide(Size scaleSize) { int x = this.x / scaleSize.x; int y = this.y / scaleSize.y; - if (x * scaleSize.x != this.x || y * scaleSize.y != this.y) - throw new RuntimeException(this + "��������" + scaleSize); + if (x * scaleSize.x != this.x || y * scaleSize.y != this.y) { + throw new RuntimeException(this + " can not be divisible " + scaleSize); + } + return new Size(x, y); } /** - * ��ȥsize��С����x��y�ֱ�һ��ֵappend - * + * ��ȥsize��С����x��y�ֱ�һ��ֵappend + * * @param size * @param append * @return @@ -233,8 +165,8 @@ public Size subtract(Size size, int append) { } /** - * �����ʼ�������� - * + * �����ʼ������� + * * @param frontMapNum */ public void initKernel(int frontMapNum) { @@ -244,12 +176,12 @@ public void initKernel(int frontMapNum) { this.kernel = new double[frontMapNum][outMapNum][kernelSize.x][kernelSize.y]; for (int i = 0; i < frontMapNum; i++) for (int j = 0; j < outMapNum; j++) - kernel[i][j] = Util.randomMatrix(kernelSize.x, kernelSize.y,true); + kernel[i][j] = Util.randomMatrix(kernelSize.x, kernelSize.y, true); } /** - * �����ľ����˵Ĵ�С����һ���map��С - * + * �����ľ���˵Ĵ�С����һ���map��С + * * @param frontMapNum * @param size */ @@ -261,12 +193,12 @@ public void initOutputKerkel(int frontMapNum, Size size) { this.kernel = new double[frontMapNum][outMapNum][kernelSize.x][kernelSize.y]; for (int i = 0; i < frontMapNum; i++) for (int j = 0; j < outMapNum; j++) - kernel[i][j] = Util.randomMatrix(kernelSize.x, kernelSize.y,false); + kernel[i][j] = Util.randomMatrix(kernelSize.x, kernelSize.y, false); } /** - * ��ʼ��ƫ�� - * + * ��ʼ��ƫ�� + * * @param frontMapNum */ public void initBias(int frontMapNum) { @@ -274,8 +206,8 @@ public void initBias(int frontMapNum) { } /** - * ��ʼ�����map - * + * ��ʼ�����map + * * @param batchSize */ public void initOutmaps(int batchSize) { @@ -283,14 +215,11 @@ public void initOutmaps(int batchSize) { } /** - * ����mapֵ - * - * @param mapNo - * �ڼ���map - * @param mapX - * map�ĸ� - * @param mapY - * map�Ŀ� + * ����mapֵ + * + * @param mapNo �ڼ���map + * @param mapX map�ĸ� + * @param mapY map�Ŀ� * @param value */ public void setMapValue(int mapNo, int mapX, int mapY, double value) { @@ -300,8 +229,8 @@ public void setMapValue(int mapNo, int mapX, int mapY, double value) { static int count = 0; /** - * �Ծ�����ʽ���õ�mapNo��map��ֵ - * + * �Ծ�����ʽ���õ�mapNo��map��ֵ + * * @param mapNo * @param outMatrix */ @@ -312,9 +241,9 @@ public void setMapValue(int mapNo, double[][] outMatrix) { } /** - * ��ȡ��index��map���������ܿ��ǣ�û�з��ظ��ƶ�����ֱ�ӷ������ã����ö�������� - * ������outmaps�������������setMapValue(...) - * + * ��ȡ��index��map���������ܿ��ǣ�û�з��ظ��ƶ�����ֱ�ӷ������ã����ö�������� + * ������outmaps�������������setMapValue(...) + * * @param index * @return */ @@ -323,12 +252,10 @@ public double[][] getMap(int index) { } /** - * ��ȡǰһ���i��map����ǰ���j��map�ľ����� - * - * @param i - * ��һ���map�±� - * @param j - * ��ǰ���map�±� + * ��ȡǰһ���i��map����ǰ���j��map�ľ���� + * + * @param i ��һ���map�±� + * @param j ��ǰ���map�±� * @return */ public double[][] getKernel(int i, int j) { @@ -336,8 +263,8 @@ public double[][] getKernel(int i, int j) { } /** - * ���òв�ֵ - * + * ���òв�ֵ + * * @param mapNo * @param mapX * @param mapY @@ -348,8 +275,8 @@ public void setError(int mapNo, int mapX, int mapY, double value) { } /** - * ��map�������ʽ���òв�ֵ - * + * ��map�������ʽ���òв�ֵ + * * @param mapNo * @param matrix */ @@ -360,9 +287,9 @@ public void setError(int mapNo, double[][] matrix) { } /** - * ��ȡ��mapNo��map�IJв�.û�з��ظ��ƶ�����ֱ�ӷ������ã����ö�������� - * ������errors�������������setError(...) - * + * ��ȡ��mapNo��map�IJв�.û�з��ظ��ƶ�����ֱ�ӷ������ã����ö�������� + * ������errors�������������setError(...) + * * @param mapNo * @return */ @@ -371,8 +298,8 @@ public double[][] getError(int mapNo) { } /** - * ��ȡ����(ÿ����¼��ÿ��map)�IJв� - * + * ��ȡ����(ÿ����¼��ÿ��map)�IJв� + * * @return */ public double[][][][] getErrors() { @@ -380,8 +307,8 @@ public double[][][][] getErrors() { } /** - * ��ʼ���в����� - * + * ��ʼ���в����� + * * @param batchSize */ public void initErros(int batchSize) { @@ -389,7 +316,6 @@ public void initErros(int batchSize) { } /** - * * @param lastMapNo * @param mapNo * @param kernel @@ -399,8 +325,8 @@ public void setKernel(int lastMapNo, int mapNo, double[][] kernel) { } /** - * ��ȡ��mapNo�� - * + * ��ȡ��mapNo�� + * * @param mapNo * @return */ @@ -409,8 +335,8 @@ public double getBias(int mapNo) { } /** - * ���õ�mapNo��map��ƫ��ֵ - * + * ���õ�mapNo��map��ƫ��ֵ + * * @param mapNo * @param value */ @@ -419,8 +345,8 @@ public void setBias(int mapNo, double value) { } /** - * ��ȡbatch����map���� - * + * ��ȡbatch����map���� + * * @return */ @@ -429,8 +355,8 @@ public double[][][][] getMaps() { } /** - * ��ȡ��recordId��¼�µ�mapNo�IJв� - * + * ��ȡ��recordId��¼�µ�mapNo�IJв� + * * @param recordId * @param mapNo * @return @@ -440,8 +366,8 @@ public double[][] getError(int recordId, int mapNo) { } /** - * ��ȡ��recordId��¼�µ�mapNo�����map - * + * ��ȡ��recordId��¼�µ�mapNo�����map + * * @param recordId * @param mapNo * @return @@ -451,8 +377,8 @@ public double[][] getMap(int recordId, int mapNo) { } /** - * ��ȡ������ - * + * ��ȡ������ + * * @return */ public int getClassNum() { @@ -460,8 +386,8 @@ public int getClassNum() { } /** - * ��ȡ���еľ����� - * + * ��ȡ���еľ���� + * * @return */ public double[][][][] getKernel() { diff --git a/src/main/java/javacnn/cnn/Process.java b/src/main/java/javacnn/cnn/Process.java new file mode 100644 index 0000000..0ba7194 --- /dev/null +++ b/src/main/java/javacnn/cnn/Process.java @@ -0,0 +1,11 @@ +package javacnn.cnn; + +/** + *
+ * Created: 2018-02-19 08:29 + * + * @author Ralf Th. Pietsch <ratopi@abwesend.de> + */ +public interface Process { + void process(int start, int end); +} diff --git a/src/main/java/javacnn/dataset/Dataset.java b/src/main/java/javacnn/dataset/Dataset.java new file mode 100644 index 0000000..877d47b --- /dev/null +++ b/src/main/java/javacnn/dataset/Dataset.java @@ -0,0 +1,89 @@ +package javacnn.dataset; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; + +public class Dataset { + private List+ * Created: 2014-6-16 at 3:33:41 PM + * + * @author jiqunpeng + */ +public class ConcurenceRunner implements Runner { + + private final ExecutorService exec; + private final int threadCount; + + /** + * Starting ConcurrenceRunner with one thread for each CPU. + */ + public ConcurenceRunner() { + this(Runtime.getRuntime().availableProcessors()); + } + + /** + * Starting ConcurenceRunner with the given count of threads. + * + * @param threadCount Threads to start (must be > 0). + */ + public ConcurenceRunner(final int threadCount) { + this.threadCount = threadCount; + exec = Executors.newFixedThreadPool(this.threadCount); + } + + public void shutdown() { + exec.shutdown(); + } + + @Override + public void startProcess(final int mapNum, final Process process) { + final int runCpu = threadCount < mapNum ? threadCount : 1; + + // Fragment length rounded up + final CountDownLatch gate = new CountDownLatch(runCpu); + + final int fregLength = (mapNum + runCpu - 1) / runCpu; + + for (int cpu = 0; cpu < runCpu; cpu++) { + final int start = cpu * fregLength; + + final int tmp = (cpu + 1) * fregLength; + final int end = tmp <= mapNum ? tmp : mapNum; + + final Runnable task = new Runnable() { + @Override + public void run() { + process.process(start, end); + gate.countDown(); + } + }; + + exec.execute(task); + } + try {// Wait for all threads to finish running + gate.await(); + } catch (InterruptedException e) { + e.printStackTrace(); + throw new RuntimeException(e); + } + } + +} diff --git a/src/main/java/javacnn/util/DirectRunner.java b/src/main/java/javacnn/util/DirectRunner.java new file mode 100644 index 0000000..ad8bd4c --- /dev/null +++ b/src/main/java/javacnn/util/DirectRunner.java @@ -0,0 +1,29 @@ +package javacnn.util; + +import javacnn.cnn.Process; + +/** + *
+ * Created: 20.02.2018 11:03 + * + * @author Ralf Th. Pietsch <ratopi@abwesend.de> + */ +public class DirectRunner implements Runner { + + @Override + public void startProcess(final int mapNum, final Process process) { + final int runCpu = 1; + + // Fragment length rounded up + final int fregLength = (mapNum + runCpu - 1) / runCpu; + + for (int cpu = 0; cpu < runCpu; cpu++) { + final int start = cpu * fregLength; + + final int tmp = (cpu + 1) * fregLength; + final int end = tmp <= mapNum ? tmp : mapNum; + + process.process(start, end); + } + } +} diff --git a/src/main/java/javacnn/util/DotProgressIndicator.java b/src/main/java/javacnn/util/DotProgressIndicator.java new file mode 100644 index 0000000..5996de8 --- /dev/null +++ b/src/main/java/javacnn/util/DotProgressIndicator.java @@ -0,0 +1,47 @@ +package javacnn.util; + +import java.io.Serializable; + +/** + * + * Created: 19.02.2018 10:53 + * + * @author Ralf Th. Pietsch <ratopi@abwesend.de> + */ +public class DotProgressIndicator implements ProgressIndicator, Serializable { + + private static final long serialVersionUID = 1L; + + private int cycle; + + private int count = 0; + + + public DotProgressIndicator() { + this(50); + } + + public DotProgressIndicator(final int cycle) { + this.cycle = cycle; + } + + + @Override + public void start() { + count = 0; + } + + @Override + public void progress() { + count++; + if (count > cycle) { + System.out.print("."); + count = 0; + } + } + + @Override + public void finished() { + System.out.println(); + } +} diff --git a/src/main/java/javacnn/util/Log.java b/src/main/java/javacnn/util/Log.java new file mode 100644 index 0000000..683cc86 --- /dev/null +++ b/src/main/java/javacnn/util/Log.java @@ -0,0 +1,22 @@ +package javacnn.util; + +import java.io.PrintStream; + +public class Log { + private static final PrintStream stream = System.out; + + private static boolean on = false; + + public static void switchOn() { + on = true; + } + + public static void info(String tag, String msg) { + if (on) stream.println(tag + "\t" + msg); + } + + public static void info(String msg) { + if (on) stream.println(msg); + } + +} diff --git a/src/main/java/javacnn/util/ProgressIndicator.java b/src/main/java/javacnn/util/ProgressIndicator.java new file mode 100644 index 0000000..1bb4af4 --- /dev/null +++ b/src/main/java/javacnn/util/ProgressIndicator.java @@ -0,0 +1,14 @@ +package javacnn.util; + +/** + * Interface for feedback progress of any kind + * + * Created: 19.02.2018 10:52 + * + * @author Ralf Th. Pietsch <ratopi@abwesend.de> + */ +public interface ProgressIndicator { + void start(); + void progress(); + void finished(); +} diff --git a/src/main/java/javacnn/util/Runner.java b/src/main/java/javacnn/util/Runner.java new file mode 100644 index 0000000..b404a49 --- /dev/null +++ b/src/main/java/javacnn/util/Runner.java @@ -0,0 +1,13 @@ +package javacnn.util; + +import javacnn.cnn.Process; + +/** + * + * Created: 2018-02-19 08:57 + * + * @author Ralf Th. Pietsch <ratopi@abwesend.de> + */ +public interface Runner { + void startProcess(int mapNum, Process process); +} diff --git a/src/edu/hitsz/c102c/util/TestArray.java b/src/main/java/javacnn/util/TestArray.java similarity index 73% rename from src/edu/hitsz/c102c/util/TestArray.java rename to src/main/java/javacnn/util/TestArray.java index b946432..4ccf55f 100644 --- a/src/edu/hitsz/c102c/util/TestArray.java +++ b/src/main/java/javacnn/util/TestArray.java @@ -1,15 +1,15 @@ -package edu.hitsz.c102c.util; +package javacnn.util; import java.util.Locale; -import edu.hitsz.c102c.util.TimedTest.TestTask; +import javacnn.util.TimedTest.TestTask; /** - * ����Ԫ��ֱ�ӷ���������ͨ���������������Ч�ʣ� ���ۣ�������ʽ���ʲ�û�н����ٶ� + * ����Ԫ��ֱ�ӷ���������ͨ���������������Ч�ʣ� ���ۣ�������ʽ���ʲ�û�н����ٶ� * * @author jiqunpeng * - * ����ʱ�䣺2014-7-9 ����3:18:30 + * ����ʱ�䣺2014-7-9 ����3:18:30 */ public class TestArray { double[][] data; @@ -35,7 +35,7 @@ private void useFunc() { } public static void main(String[] args) { - String a = "aAdfa��_"; + String a = "aAdfa��_"; System.out.println(a.toUpperCase(Locale.CHINA)); double[][] d = new double[3][]; // d[0] = new double[] { 1,2,3 }; diff --git a/src/edu/hitsz/c102c/util/TimedTest.java b/src/main/java/javacnn/util/TimedTest.java similarity index 74% rename from src/edu/hitsz/c102c/util/TimedTest.java rename to src/main/java/javacnn/util/TimedTest.java index 71125aa..ea5959c 100644 --- a/src/edu/hitsz/c102c/util/TimedTest.java +++ b/src/main/java/javacnn/util/TimedTest.java @@ -1,11 +1,11 @@ -package edu.hitsz.c102c.util; +package javacnn.util; /** - * ��ʱ�IJ��Թ��� + * ��ʱ�IJ��Թ��� * * @author jiqunpeng * - * ����ʱ�䣺2014-7-8 ����8:21:56 + * ����ʱ�䣺2014-7-8 ����8:21:56 */ public class TimedTest { private int repeat; @@ -26,6 +26,6 @@ public void test() { task.process(); } double cost = (System.currentTimeMillis() - t) / 1000.0; - Log.i("cost ", cost + "s"); + Log.info("cost ", cost + "s"); } } diff --git a/src/edu/hitsz/c102c/util/Util.java b/src/main/java/javacnn/util/Util.java similarity index 84% rename from src/edu/hitsz/c102c/util/Util.java rename to src/main/java/javacnn/util/Util.java index e0d0077..62b3020 100644 --- a/src/edu/hitsz/c102c/util/Util.java +++ b/src/main/java/javacnn/util/Util.java @@ -1,27 +1,26 @@ -package edu.hitsz.c102c.util; +package javacnn.util; import java.io.Serializable; import java.util.Arrays; import java.util.HashSet; import java.util.Random; import java.util.Set; -import edu.hitsz.c102c.cnn.Layer.Size; -import edu.hitsz.c102c.util.TimedTest.TestTask; +import javacnn.cnn.Layer.Size; public class Util { /** - * �����ӦԪ�����ʱ��ÿ��Ԫ���ϵIJ��� + * �����ӦԪ�����ʱ��ÿ��Ԫ���ϵIJ��� * * @author jiqunpeng * - * ����ʱ�䣺2014-7-9 ����9:28:35 + * ����ʱ�䣺2014-7-9 ����9:28:35 */ public interface Operator extends Serializable { public double process(double value); } - // ����ÿ��Ԫ��value������1-value�IJ��� + // ����ÿ��Ԫ��value������1-value�IJ��� public static final Operator one_value = new Operator() { /** * @@ -34,7 +33,7 @@ public double process(double value) { } }; - // digmod���� + // digmod���� public static final Operator digmod = new Operator() { /** * @@ -52,7 +51,7 @@ interface OperatorOnTwo extends Serializable { } /** - * ��������ӦԪ�صļӷ����� + * ��������ӦԪ�صļӷ����� */ public static final OperatorOnTwo plus = new OperatorOnTwo() { /** @@ -66,7 +65,7 @@ public double process(double a, double b) { } }; /** - * ��������ӦԪ�صij˷����� + * ��������ӦԪ�صij˷����� */ public static OperatorOnTwo multiply = new OperatorOnTwo() { /** @@ -81,7 +80,7 @@ public double process(double a, double b) { }; /** - * ��������ӦԪ�صļ������� + * ��������ӦԪ�صļ������� */ public static OperatorOnTwo minus = new OperatorOnTwo() { /** @@ -105,7 +104,7 @@ public static void printMatrix(double[][] matrix) { } /** - * �Ծ������180����ת,����matrix�ĸ����ϸ��ƣ������ԭ���ľ�������� + * �Ծ������180����ת,����matrix�ĸ����ϸ��ƣ������ԭ���ľ�������� * * @param matrix */ @@ -113,7 +112,7 @@ public static double[][] rot180(double[][] matrix) { matrix = cloneMatrix(matrix); int m = matrix.length; int n = matrix[0].length; - // ���жԳƽ��н��� + // ���жԳƽ��н��� for (int i = 0; i < m; i++) { for (int j = 0; j < n / 2; j++) { double tmp = matrix[i][j]; @@ -121,7 +120,7 @@ public static double[][] rot180(double[][] matrix) { matrix[i][n - 1 - j] = tmp; } } - // ���жԳƽ��н��� + // ���жԳƽ��н��� for (int j = 0; j < n; j++) { for (int i = 0; i < m / 2; i++) { double tmp = matrix[i][j]; @@ -135,7 +134,7 @@ public static double[][] rot180(double[][] matrix) { private static Random r = new Random(2); /** - * �����ʼ������ + * �����ʼ������ * * @param x * @param y @@ -147,7 +146,7 @@ public static double[][] randomMatrix(int x, int y, boolean b) { int tag = 1; for (int i = 0; i < x; i++) { for (int j = 0; j < y; j++) { - // ���ֵ��[-0.05,0.05)֮�䣬��Ȩ�س�ʼ��ֵ��С���������ڱ������� + // ���ֵ��[-0.05,0.05)֮�䣬��Ȩ�س�ʼ��ֵ��С���������ڱ������� matrix[i][j] = (r.nextDouble() - 0.05) / 10; // matrix[i][j] = tag * 0.5; // if (b) @@ -160,7 +159,7 @@ public static double[][] randomMatrix(int x, int y, boolean b) { } /** - * �����ʼ��һά���� + * �����ʼ��һά���� * * @param len * @return @@ -175,7 +174,7 @@ public static double[] randomArray(int len) { } /** - * ������еij����������ȡbatchSize��[0,size)���� + * ������еij����������ȡbatchSize��[0,size)���� * * @param size * @param batchSize @@ -194,7 +193,7 @@ public static int[] randomPerm(int size, int batchSize) { } /** - * ���ƾ��� + * ���ƾ��� * * @param matrix * @return @@ -214,7 +213,7 @@ public static double[][] cloneMatrix(final double[][] matrix) { } /** - * �Ե���������в��� + * �Ե���������в��� * * @param ma * @param operator @@ -233,15 +232,15 @@ public static double[][] matrixOp(final double[][] ma, Operator operator) { } /** - * ����ά����ͬ�ľ����ӦԪ�ز���,�õ��Ľ������mb�У���mb[i][j] = (op_a + * ����ά����ͬ�ľ����ӦԪ�ز���,�õ��Ľ������mb�У���mb[i][j] = (op_a * ma[i][j]) op (op_b mb[i][j]) * * @param ma * @param mb * @param operatorB - * �ڵ�mb�����ϵIJ��� + * �ڵ�mb�����ϵIJ��� * @param operatorA - * ��ma����Ԫ���ϵIJ��� + * ��ma����Ԫ���ϵIJ��� * @return * */ @@ -251,7 +250,7 @@ public static double[][] matrixOp(final double[][] ma, final double[][] mb, final int m = ma.length; int n = ma[0].length; if (m != mb.length || n != mb[0].length) - throw new RuntimeException("���������С��һ�� ma.length:" + ma.length + throw new RuntimeException("���������С��һ�� ma.length:" + ma.length + " mb.length:" + mb.length); for (int i = 0; i < m; i++) { @@ -269,7 +268,7 @@ public static double[][] matrixOp(final double[][] ma, final double[][] mb, } /** - * �����ڿ˻�,�Ծ��������չ + * �����ڿ˻�,�Ծ��������չ * * @param matrix * @param scale @@ -293,7 +292,7 @@ public static double[][] kronecker(final double[][] matrix, final Size scale) { } /** - * �Ծ�����о�ֵ��С + * �Ծ�����о�ֵ��С * * @param matrix * @param scaleSize @@ -307,7 +306,7 @@ public static double[][] scaleMatrix(final double[][] matrix, final int sn = n / scale.y; final double[][] outMatrix = new double[sm][sn]; if (sm * scale.x != m || sn * scale.y != n) - throw new RuntimeException("scale��������matrix"); + throw new RuntimeException("scale��������matrix"); final int size = scale.x * scale.y; for (int i = 0; i < sm; i++) { for (int j = 0; j < sn; j++) { @@ -324,7 +323,7 @@ public static double[][] scaleMatrix(final double[][] matrix, } /** - * ����fullģʽ�ľ��� + * ����fullģʽ�ľ�� * * @param matrix * @param kernel @@ -336,7 +335,7 @@ public static double[][] convnFull(double[][] matrix, int n = matrix[0].length; final int km = kernel.length; final int kn = kernel[0].length; - // ��չ���� + // ��չ���� final double[][] extendMatrix = new double[m + 2 * (km - 1)][n + 2 * (kn - 1)]; for (int i = 0; i < m; i++) { @@ -347,7 +346,7 @@ public static double[][] convnFull(double[][] matrix, } /** - * ����validģʽ�ľ��� + * ����validģʽ�ľ�� * * @param matrix * @param kernel @@ -360,11 +359,11 @@ public static double[][] convnValid(final double[][] matrix, int n = matrix[0].length; final int km = kernel.length; final int kn = kernel[0].length; - // ��Ҫ������������ + // ��Ҫ����������� int kns = n - kn + 1; - // ��Ҫ������������ + // ��Ҫ����������� final int kms = m - km + 1; - // ������� + // ������� final double[][] outMatrix = new double[kms][kns]; for (int i = 0; i < kms; i++) { @@ -383,7 +382,7 @@ public static double[][] convnValid(final double[][] matrix, } /** - * ��ά����ľ���,����Ҫ�����������һά��ͬ + * ��ά����ľ��,����Ҫ�����������һά��ͬ * * @param matrix * @param kernel @@ -401,8 +400,8 @@ public static double[][] convnValid(final double[][][][] matrix, int kns = n - kn + 1; int khs = h - kh + 1; if (matrix.length != kernel.length) - throw new RuntimeException("������������ڵ�һά�ϲ�ͬ"); - // ������� + throw new RuntimeException("�����������ڵ�һά�ϲ�ͬ"); + // ������� final double[][][] outMatrix = new double[kms][kns][khs]; for (int i = 0; i < kms; i++) { for (int j = 0; j < kns; j++) @@ -426,10 +425,10 @@ public static double sigmod(double x) { } /** - * �Ծ���Ԫ����� + * �Ծ���Ԫ����� * * @param error - * @return ע�������ͺܿ��ܻ���� + * @return ע�������ͺܿ��ܻ���� */ public static double sum(double[][] error) { @@ -445,7 +444,7 @@ public static double sum(double[][] error) { } /** - * ��errors[...][j]Ԫ����� + * ��errors[...][j]Ԫ����� * * @param errors * @param j @@ -482,7 +481,7 @@ public static int binaryArray2int(double[] array) { } /** - * ���Ծ���,���Խ����4���²������еľ�����߲���2�� + * ���Ծ��,���Խ����4���²������еľ����߲���2�� */ private static void testConvn() { int count = 1; @@ -608,7 +607,7 @@ public static void main(String[] args) { } /** - * ȡ����Ԫ�ص��±� + * ȡ����Ԫ�ص��±� * * @param out * @return diff --git a/src/test/dataset/readme.md b/src/test/dataset/readme.md new file mode 100644 index 0000000..01c8d6d --- /dev/null +++ b/src/test/dataset/readme.md @@ -0,0 +1,3 @@ +The dataset is part of MNIST from kaggle Digit Recognizer competition: +* "train.format" is the train set, which has been binarized. +* "test.format" is the test set, which has been binarized. diff --git a/dataset/test.format b/src/test/dataset/test.format similarity index 100% rename from dataset/test.format rename to src/test/dataset/test.format diff --git a/dataset/train.format b/src/test/dataset/train.format similarity index 100% rename from dataset/train.format rename to src/test/dataset/train.format diff --git a/src/test/java/javacnn/RunCNN.java b/src/test/java/javacnn/RunCNN.java new file mode 100644 index 0000000..cae9051 --- /dev/null +++ b/src/test/java/javacnn/RunCNN.java @@ -0,0 +1,52 @@ +package javacnn; + +import java.io.IOException; + +import javacnn.cnn.CNN; +import javacnn.cnn.CNNLoader; +import javacnn.cnn.Layer; +import javacnn.dataset.Dataset; +import javacnn.dataset.DatasetLoader; +import javacnn.util.ConcurenceRunner; + +public class RunCNN { + + public static void main(String[] args) throws IOException, ClassNotFoundException { + + final ConcurenceRunner concurenceRunner = new ConcurenceRunner(); + + try { + + final CNN.LayerBuilder builder = + new CNN.LayerBuilder() + .addLayer(Layer.buildInputLayer(new Layer.Size(28, 28))) + .addLayer(Layer.buildConvLayer(6, new Layer.Size(5, 5))) + .addLayer(Layer.buildSampLayer(new Layer.Size(2, 2))) + .addLayer(Layer.buildConvLayer(12, new Layer.Size(5, 5))) + .addLayer(Layer.buildSampLayer(new Layer.Size(2, 2))) + .addLayer(Layer.buildOutputLayer(10)); + + final CNN cnn = new CNN(builder, 50, concurenceRunner); + // final CNN cnn = new CNN(builder, 50, new DirectRunner()); + + final String fileName = "src/test/dataset/train.format"; + final Dataset dataset = DatasetLoader.load(fileName, ",", 784); + cnn.train(dataset, 3); + + CNNLoader.saveModel("src/test/model.cnn", cnn); + dataset.clear(); + + /* + final CNN cnn = CNNLoader.loadModel("model.cnn"); + cnn.setRunner(concurenceRunner); + */ + + final Dataset testset = DatasetLoader.load("src/test/dataset/test.format", ",", -1); + cnn.predict(testset, "src/test/dataset/test.predict"); + + } finally { + concurenceRunner.shutdown(); + } + } + +}