diff --git a/FinalProject/100X100_Matrix.txt b/FinalProject/100X100_Matrix.txt
new file mode 100644
index 0000000..a2d1ef0
--- /dev/null
+++ b/FinalProject/100X100_Matrix.txt
@@ -0,0 +1,203 @@
+100
+7 8 7 9 5 8 6 6 0 2 7 2 4 5 5 0 7 8 3 5 9 0 8 9 1 8 6 3 9 9 0 5 9 7 5 3 6 5 5 0 9 9 5 2 8 2 7 6 1 5 2 2 8 9 7 7 6 2 4 2 3 8 0 1 5 8 1 6 7 9 8 9 6 2 6 7 1 9 6 7 4 3 9 5 9 4 1 2 0 7 0 7 2 6 7 0 6 6 1 6
+9 7 0 8 8 7 6 6 1 6 7 7 1 1 3 7 4 3 1 6 6 9 6 9 0 7 2 9 7 6 3 9 0 0 5 0 0 4 8 3 4 3 9 3 7 4 3 8 8 9 3 5 3 2 5 7 2 8 5 2 6 6 5 4 8 6 9 2 6 2 4 7 6 3 6 7 3 5 0 7 0 4 3 7 4 8 9 4 5 7 2 8 4 3 2 5 0 1 2 1
+6 9 4 0 7 1 4 3 0 8 3 4 2 0 5 5 8 0 7 3 1 0 2 0 7 2 6 1 3 6 2 5 5 4 4 6 1 2 5 9 9 6 7 5 5 1 8 6 9 7 1 8 9 1 2 3 3 9 4 9 4 4 2 9 9 9 3 0 5 5 7 6 1 9 3 1 8 1 5 4 3 8 5 5 5 1 8 5 8 5 2 9 3 3 1 7 1 3 9 7
+8 8 3 4 4 7 5 3 7 3 0 4 8 9 4 2 1 4 6 3 6 3 0 7 6 9 4 4 7 0 2 6 4 6 4 5 6 2 7 5 9 5 2 9 2 9 5 5 3 4 5 5 7 6 9 7 8 8 6 1 3 0 9 1 6 7 1 7 9 7 4 5 6 2 7 6 5 0 1 1 7 8 5 5 4 2 9 5 8 0 6 7 6 4 7 6 8 3 1 2
+7 7 1 8 9 0 3 1 4 5 6 2 8 2 3 6 8 5 3 5 3 9 0 7 1 7 9 6 4 8 0 6 4 8 5 1 6 9 5 9 8 5 1 5 4 4 8 3 2 3 3 6 4 4 5 8 2 9 4 0 3 2 3 4 5 5 7 0 7 6 2 8 4 4 0 0 6 7 0 4 2 3 5 8 6 6 2 6 0 8 5 7 1 6 9 1 0 3 1 6
+4 4 7 8 8 3 0 3 8 3 0 4 7 9 4 5 8 3 9 4 0 2 2 5 7 4 9 9 3 7 5 2 9 3 8 1 3 7 0 2 6 4 9 5 0 4 8 9 9 0 2 7 2 7 8 9 5 7 9 1 7 1 4 6 6 5 6 7 3 1 2 8 1 1 3 1 4 7 0 2 7 5 0 8 0 7 3 2 3 0 3 2 8 8 0 4 9 2 9 4
+2 2 1 6 2 5 7 9 1 0 9 3 5 8 7 6 5 5 9 4 4 2 3 4 2 7 4 1 5 5 8 0 8 5 2 7 1 4 1 7 4 2 2 4 4 4 0 3 8 2 7 8 5 5 0 9 5 6 9 4 1 0 0 6 6 9 9 9 5 8 5 9 6 9 5 1 3 3 8 2 3 7 1 0 9 5 4 2 7 5 4 0 2 3 8 3 5 8 8 0
+4 8 7 2 9 4 7 0 0 6 3 5 7 7 2 4 5 8 9 3 0 1 6 8 6 9 1 6 0 6 2 7 5 2 5 1 5 2 5 6 9 6 5 5 1 6 0 8 8 8 1 0 8 1 4 7 5 9 5 4 0 4 5 5 3 2 6 0 3 4 3 7 6 8 0 3 5 8 8 0 1 7 5 5 5 4 7 6 5 2 5 5 8 1 4 9 2 8 7 4
+5 5 0 9 7 5 1 6 9 9 0 0 7 1 8 0 0 5 0 3 3 5 9 7 9 6 3 1 3 3 5 3 7 5 9 9 5 5 5 6 4 2 6 8 8 0 4 2 4 3 1 9 7 1 7 6 0 1 1 2 2 3 1 7 0 0 3 0 1 9 6 3 8 4 7 0 3 7 3 0 8 0 3 8 7 8 2 8 0 6 3 2 0 0 0 6 5 9 0 3
+4 0 3 0 0 0 4 6 2 6 0 9 7 2 9 5 1 4 1 6 5 1 4 6 4 1 0 2 9 4 1 1 0 4 3 8 9 9 6 3 3 9 9 1 0 2 9 7 5 2 9 0 8 1 2 7 9 8 9 5 5 8 9 3 3 0 3 6 2 0 2 0 7 7 3 6 3 6 6 8 1 2 4 7 5 1 9 2 7 7 6 7 1 5 0 9 7 5 9 9
+7 3 6 0 2 9 0 6 7 2 1 9 5 8 3 1 4 5 3 7 0 1 2 3 4 0 1 5 3 6 2 7 8 2 1 8 6 7 0 1 6 3 5 0 8 6 2 6 7 1 8 5 0 7 0 7 7 1 7 5 7 1 1 5 6 4 0 5 2 7 4 2 8 1 1 0 3 0 3 5 2 9 1 0 5 6 3 0 7 9 5 0 5 0 9 7 9 2 5 9
+2 4 6 6 2 0 2 6 2 3 8 1 3 4 0 3 5 7 6 0 0 4 1 0 3 0 4 1 7 7 2 9 9 1 2 4 0 2 2 6 0 1 9 6 7 9 3 8 7 2 1 4 0 5 0 4 5 6 1 6 6 5 1 0 6 4 0 2 8 2 5 7 9 2 5 6 4 4 5 9 7 7 4 9 1 2 8 7 1 8 6 8 5 0 3 3 6 4 5 2
+5 9 5 7 8 1 4 5 2 1 9 7 9 5 3 4 0 4 9 4 9 1 2 3 6 2 9 7 9 6 1 7 1 5 7 7 2 4 0 8 3 2 0 1 1 2 2 3 5 9 3 0 7 5 6 1 2 8 2 7 0 7 0 7 1 5 1 5 0 6 4 7 9 8 5 1 7 2 7 9 7 4 7 8 0 3 6 1 2 7 4 9 8 6 2 2 9 6 7 2
+4 8 3 3 5 9 8 2 0 1 3 6 9 6 1 6 3 0 2 4 8 1 5 5 0 0 5 2 7 0 6 2 9 0 0 8 9 7 3 9 1 9 8 2 2 6 5 5 6 7 3 6 0 2 0 4 5 2 9 1 1 4 1 2 3 7 1 6 7 1 8 3 8 6 9 1 9 2 1 9 9 3 1 2 8 2 6 5 2 5 1 1 1 6 2 9 0 3 1 0
+8 0 6 9 5 9 0 2 1 7 5 5 7 6 2 8 6 4 7 0 1 8 3 9 4 4 0 2 4 7 2 0 5 7 5 1 9 3 5 4 9 4 0 2 7 3 0 6 6 3 3 5 7 1 1 4 1 5 4 8 5 2 8 4 4 3 8 9 7 7 5 8 8 9 4 9 8 7 9 9 8 5 8 7 4 6 6 5 0 1 3 8 3 0 7 1 8 0 3 0
+6 9 2 4 6 7 7 3 9 2 2 5 0 0 3 1 6 3 8 3 3 8 5 5 0 8 0 5 3 9 3 7 6 7 0 0 8 8 4 2 0 4 3 4 8 2 9 5 5 9 9 7 1 4 4 3 5 3 3 8 6 8 3 6 3 5 5 9 2 6 4 8 0 4 0 8 8 4 9 7 9 3 2 6 4 1 1 2 5 0 8 7 5 0 0 2 3 8 9 1
+5 2 1 6 9 7 8 5 5 5 4 6 4 1 2 8 1 1 9 0 9 1 1 0 6 5 9 8 7 1 0 2 0 1 9 3 4 9 1 7 9 5 1 1 9 3 0 4 0 0 0 9 3 0 6 4 2 6 0 9 1 6 9 8 0 0 2 7 6 2 5 9 4 9 2 7 8 9 5 3 5 2 8 9 3 3 1 3 7 1 8 9 2 8 4 1 9 2 7 9
+4 2 3 8 1 3 9 1 7 0 5 9 3 3 1 1 9 5 4 9 1 2 4 6 1 6 1 3 8 9 3 2 0 1 8 0 4 2 7 5 3 4 5 4 4 3 7 0 6 5 6 1 1 2 1 7 0 3 2 1 5 1 4 9 0 4 8 6 3 4 4 9 6 5 9 4 2 6 9 5 8 8 8 0 0 8 9 5 3 8 9 7 4 2 7 3 7 1 0 5
+8 0 4 8 9 1 6 4 6 6 1 0 6 7 8 0 2 4 0 5 1 7 8 4 6 3 5 7 9 0 7 4 4 3 2 5 0 3 9 4 3 9 1 9 6 1 3 5 7 7 8 7 2 8 7 5 8 6 2 9 1 4 3 4 9 8 9 0 6 5 0 7 7 2 8 6 8 3 7 7 5 0 5 1 5 7 6 3 4 8 6 4 9 3 6 0 0 3 0 5
+3 1 5 9 9 7 8 6 1 6 7 8 7 3 9 6 6 8 5 2 4 9 6 0 4 6 7 8 4 2 5 4 2 3 0 7 6 7 2 7 1 6 8 8 7 3 7 6 4 6 4 8 2 4 4 1 0 1 9 2 7 1 3 4 9 7 9 5 0 9 8 6 8 7 0 7 6 9 0 7 8 7 3 9 2 1 4 3 6 7 6 9 7 4 6 0 8 1 5 5
+7 3 8 6 2 0 7 1 8 8 9 4 4 0 1 3 3 2 4 4 1 7 8 9 8 1 0 9 5 0 5 7 4 4 2 4 4 6 1 9 5 6 4 9 4 7 0 7 1 5 1 5 2 0 6 2 7 0 4 0 0 8 2 0 1 7 4 7 0 4 4 0 0 1 0 1 0 2 5 6 6 0 8 0 7 3 5 8 7 4 1 3 7 0 4 1 9 4 8 7
+3 6 7 0 3 2 7 5 6 4 6 7 1 3 1 3 8 7 0 4 8 5 3 5 7 8 3 5 1 5 6 9 1 8 6 5 6 4 5 8 5 4 2 9 3 2 1 7 0 3 1 6 1 8 1 2 5 1 2 0 2 6 4 3 9 4 9 3 6 7 3 4 5 4 5 7 2 4 8 9 4 3 2 5 3 8 2 3 5 9 3 9 9 5 0 4 0 9 0 3
+0 3 0 5 0 0 2 2 4 6 8 8 9 4 5 9 7 3 8 2 2 8 9 1 1 5 6 9 4 8 5 5 0 6 4 3 9 5 0 0 8 4 4 0 4 2 5 7 7 2 2 3 2 7 0 1 3 9 4 7 0 6 1 5 7 2 3 9 8 5 6 1 6 1 8 3 6 8 4 5 2 0 3 0 7 4 7 4 1 8 8 9 6 9 4 6 7 0 6 1
+3 0 4 6 8 5 0 7 9 4 7 3 3 6 3 2 3 6 1 1 7 6 8 2 7 3 1 5 8 4 1 7 6 9 7 3 4 7 4 6 1 9 4 2 8 9 3 1 4 7 1 0 5 6 4 8 9 0 7 0 7 9 9 0 2 0 8 0 6 4 4 3 0 8 6 5 4 6 0 9 5 3 4 8 2 1 3 5 6 0 2 5 5 9 3 2 9 3 6 3
+0 5 7 7 6 4 3 3 4 3 9 4 5 2 6 0 9 4 2 2 0 4 2 3 0 1 1 2 1 8 4 3 0 8 4 0 5 3 1 1 7 9 1 6 4 7 8 4 4 6 4 2 2 3 7 2 3 8 5 9 2 2 1 1 1 3 1 1 6 6 2 6 5 4 0 0 5 6 3 5 9 1 4 9 7 6 1 3 6 1 5 6 8 1 2 3 0 4 0 3
+9 9 4 5 8 2 1 3 9 5 6 2 4 9 7 0 6 2 4 4 5 2 4 8 5 6 6 7 1 7 0 9 2 9 0 5 1 2 4 2 4 1 9 9 0 1 2 5 2 2 2 9 9 0 6 4 0 6 7 0 4 6 9 3 6 6 7 3 0 0 4 8 4 4 0 3 4 1 6 9 6 3 7 5 8 3 3 9 2 2 6 7 4 7 5 3 5 7 9 0
+8 4 1 5 7 9 2 9 5 3 7 5 7 4 9 8 1 2 4 7 8 4 5 4 9 7 3 0 9 7 3 6 9 4 7 5 5 2 6 7 7 4 6 5 5 0 9 9 0 5 1 4 7 9 6 2 8 6 1 7 8 9 3 2 5 6 7 9 0 0 6 1 7 7 8 9 8 6 3 0 5 7 2 2 7 8 8 1 9 4 5 7 7 1 9 7 0 9 3 8
+8 4 5 4 7 9 7 3 0 9 9 3 2 2 7 3 6 2 7 8 4 4 2 5 0 6 9 9 1 6 7 8 5 2 2 3 9 3 4 8 4 9 7 9 2 4 8 2 5 7 2 0 7 9 8 7 7 4 3 5 2 0 9 8 8 7 4 3 1 4 6 3 3 0 1 0 5 4 7 7 3 6 2 9 8 4 0 8 2 0 4 6 1 5 2 6 6 5 0 7
+1 3 8 4 1 0 8 8 7 4 9 0 4 3 4 7 6 9 5 2 1 1 4 4 0 8 6 8 9 5 9 0 5 8 3 7 6 3 0 0 3 2 5 1 4 3 7 6 0 3 4 7 7 8 9 5 0 7 5 1 6 0 4 2 4 5 7 2 0 6 3 3 2 0 6 9 4 9 4 2 0 3 6 4 3 5 7 3 8 5 9 5 1 9 8 2 0 0 7 3
+1 1 2 2 6 5 0 6 9 0 7 2 1 9 8 6 7 0 1 7 7 3 1 6 7 4 5 7 0 2 1 8 0 3 9 6 0 5 8 4 6 5 2 9 7 3 3 3 1 2 4 8 2 7 1 2 9 7 5 8 4 5 1 7 5 3 7 5 9 8 3 9 4 1 7 7 7 3 2 0 3 5 1 6 8 3 4 0 0 2 8 1 2 2 9 4 6 5 7 1
+8 6 7 4 1 7 7 4 0 0 1 9 5 1 4 5 3 9 3 7 1 7 5 0 6 6 9 0 2 3 8 1 5 3 8 8 5 6 3 9 1 8 2 2 4 9 9 3 9 1 0 1 7 2 7 3 8 7 1 9 2 7 0 4 9 2 6 9 0 0 1 2 3 6 7 5 0 5 3 2 0 6 8 1 3 2 0 2 2 6 3 7 5 2 8 7 9 1 0 4
+7 0 9 0 1 9 4 7 5 6 0 6 7 0 9 8 3 2 0 8 7 9 8 0 1 0 0 6 9 9 7 4 9 9 1 6 8 8 6 3 9 1 1 4 8 0 6 3 9 9 1 2 2 6 9 2 0 7 3 1 1 6 3 1 6 1 9 8 9 1 7 5 0 1 4 1 0 3 0 3 2 7 7 8 5 7 3 1 2 5 2 0 5 5 0 1 0 9 9 8
+6 9 5 7 1 3 3 0 9 2 8 2 7 9 0 9 6 3 0 0 9 2 6 6 9 2 6 9 9 8 6 9 6 9 3 0 0 4 8 8 2 5 4 5 2 2 5 5 8 9 6 5 2 0 4 6 9 1 7 5 3 1 6 0 0 5 5 2 0 0 6 0 0 8 1 7 7 0 2 0 0 2 8 0 4 4 0 4 3 9 1 2 7 4 0 5 1 8 2 3
+7 0 4 6 0 1 7 9 7 5 1 4 3 1 9 1 5 0 1 1 7 3 9 2 0 7 5 0 8 4 9 8 8 3 3 2 7 0 5 5 5 7 7 8 5 1 6 5 4 5 8 1 6 6 4 3 5 7 2 3 5 5 8 7 7 8 5 9 4 5 3 1 9 3 3 0 3 7 5 8 0 0 8 7 1 3 5 7 0 9 2 3 9 6 3 9 5 8 7 3
+5 9 1 0 4 0 8 1 1 8 3 0 8 4 1 4 2 9 9 7 6 0 6 4 1 2 2 6 9 8 4 6 7 9 0 3 7 4 8 2 8 3 5 9 3 7 6 1 8 4 3 7 8 4 9 7 9 6 0 9 3 5 6 2 5 9 3 5 2 3 2 9 2 8 7 2 9 0 1 9 7 4 7 1 4 8 6 0 6 1 0 1 7 7 8 8 1 0 2 1
+4 8 3 6 1 2 1 3 8 5 8 7 8 3 1 3 2 6 1 0 2 8 3 0 9 5 0 5 0 8 2 5 4 7 6 9 5 0 4 6 8 7 1 1 3 0 9 3 0 4 9 1 2 1 6 2 1 6 6 5 4 2 1 3 4 2 8 2 5 9 6 3 7 7 9 1 8 5 4 0 7 9 4 5 0 1 7 8 6 7 5 9 4 9 9 1 8 2 8 2
+8 7 5 9 2 4 6 5 2 5 3 3 9 3 3 2 5 9 5 0 8 3 3 7 5 3 9 9 0 2 6 7 4 9 8 0 2 3 4 9 2 0 8 9 6 3 2 7 6 6 1 8 8 9 0 8 7 3 0 7 6 6 9 9 2 5 9 7 5 3 8 3 4 8 8 3 8 9 0 1 9 7 5 5 3 6 2 7 0 9 5 8 7 6 1 9 5 6 3 9
+0 0 6 6 2 3 8 0 6 2 9 0 5 4 1 6 1 8 7 6 2 3 2 3 7 4 5 5 4 1 2 5 9 8 7 2 9 7 7 7 8 7 4 8 3 1 3 0 2 2 0 3 4 2 4 9 6 4 2 3 2 5 9 4 0 4 4 1 7 0 1 0 8 8 9 4 1 4 8 2 1 6 1 6 5 9 4 1 2 7 8 3 8 4 5 6 5 2 3 2
+8 9 9 0 9 1 9 1 0 8 7 2 6 2 3 8 3 2 1 3 0 3 7 8 3 2 7 1 7 6 3 1 8 1 3 8 7 0 1 6 4 0 3 1 9 4 6 5 8 5 8 6 4 5 5 9 3 4 8 3 2 1 4 4 5 4 3 4 5 1 7 8 2 0 7 8 1 0 3 0 7 9 5 1 3 4 4 1 0 2 9 0 9 3 1 3 6 8 8 7
+4 0 0 5 5 2 8 5 6 7 8 8 3 4 0 6 4 5 7 1 3 4 0 3 6 9 3 2 3 7 5 2 9 0 6 9 9 5 9 5 0 8 7 2 7 8 9 2 8 3 2 7 4 0 9 9 5 0 8 6 1 3 4 6 7 2 3 5 1 0 6 1 7 4 5 8 1 5 3 3 6 8 6 8 0 4 8 4 2 3 5 4 9 7 2 1 9 9 7 9
+1 2 7 5 3 5 1 6 9 7 1 1 8 8 9 2 3 2 9 4 3 0 9 1 4 9 5 1 6 8 3 0 3 2 0 4 5 6 6 7 4 5 1 3 6 1 6 0 2 8 0 8 7 9 9 2 3 0 4 2 2 5 6 0 0 2 3 2 0 7 5 1 0 6 6 5 8 8 6 1 3 8 6 6 4 9 5 9 5 7 8 3 2 3 0 7 5 4 2 8
+1 7 0 9 1 2 4 7 6 8 2 1 8 6 7 9 9 9 9 3 1 8 3 5 7 7 0 9 9 3 5 0 0 1 1 5 1 0 1 1 6 0 4 9 4 6 1 1 1 6 6 8 2 7 5 8 9 7 6 4 8 6 9 7 0 7 1 1 0 0 5 3 2 6 4 8 9 3 9 6 9 3 3 6 9 3 1 9 2 7 1 3 4 1 0 2 3 7 0 4
+7 7 2 0 5 1 1 1 4 5 5 6 8 4 4 1 3 7 2 0 5 2 0 1 5 1 3 1 5 9 8 1 6 4 0 0 1 8 6 2 0 1 0 3 9 1 7 8 9 3 6 0 3 4 6 4 4 6 0 5 0 6 5 8 1 7 6 3 8 5 9 4 6 8 4 6 7 4 2 9 3 1 2 4 7 4 8 9 4 7 0 8 2 0 5 2 4 0 1 0
+6 8 3 1 9 3 2 3 1 2 9 2 1 1 8 1 5 8 8 7 8 9 8 8 3 0 4 7 6 5 2 1 9 8 4 6 7 5 6 1 3 4 2 3 9 3 0 4 9 4 8 5 9 9 4 8 8 5 4 1 1 9 5 4 8 5 0 0 4 3 3 4 0 9 9 9 8 4 6 0 3 1 3 0 7 5 1 4 8 8 6 7 9 8 4 0 1 6 6 7
+4 0 8 3 7 3 8 3 8 2 4 0 5 9 6 6 9 7 2 5 1 3 2 5 0 9 4 7 7 6 2 5 0 3 6 8 1 6 1 8 1 3 1 5 0 0 5 6 0 3 6 5 1 2 5 6 3 5 6 9 7 5 2 1 9 3 7 4 4 3 2 0 8 1 0 8 2 6 9 1 3 6 8 6 4 3 0 1 8 4 3 8 5 8 1 0 9 4 5 5
+8 7 9 8 3 5 0 2 9 8 5 8 9 8 1 2 3 2 2 4 8 1 7 5 0 4 5 8 6 1 3 3 5 2 6 1 1 9 8 9 6 1 8 9 3 9 7 1 3 9 5 2 8 5 9 1 0 4 6 1 2 8 9 6 9 4 7 1 7 9 6 8 1 5 7 3 4 5 1 9 6 9 2 7 9 3 7 2 9 9 2 0 4 4 6 6 4 0 6 6
+6 5 5 8 1 9 2 5 0 1 3 5 2 7 7 2 1 9 5 1 6 1 5 8 7 0 9 7 1 1 1 0 8 6 8 7 9 9 8 3 3 0 3 9 8 9 0 2 9 9 2 7 6 6 9 7 1 1 1 2 4 4 4 5 5 4 2 3 8 1 6 8 4 4 5 2 1 4 0 9 5 3 6 0 6 7 9 7 3 4 1 2 1 0 6 7 4 1 8 5
+5 1 8 0 9 0 6 8 0 2 1 5 3 7 2 4 4 2 9 1 9 0 4 9 5 2 6 1 1 6 1 7 6 8 1 2 3 1 6 9 8 4 9 4 5 1 1 9 7 3 2 8 3 1 1 8 1 4 6 8 6 6 7 3 2 4 2 2 0 6 9 3 3 4 3 2 0 8 3 5 2 6 7 5 6 1 7 6 9 3 0 1 3 4 6 6 2 9 0 0
+2 0 5 7 9 7 2 1 9 0 1 3 0 2 6 8 2 1 3 8 1 8 1 0 1 5 8 6 3 4 0 7 2 9 6 3 2 7 4 7 3 5 6 7 6 1 6 0 6 4 8 8 7 2 1 7 0 0 9 3 9 7 8 0 5 6 3 8 0 4 9 4 2 4 7 8 1 3 4 8 4 4 2 1 8 6 6 4 3 9 3 8 9 3 0 2 6 1 6 6
+8 9 8 8 9 3 5 2 3 0 6 6 0 6 1 6 0 4 9 8 7 0 3 1 9 9 2 6 4 3 5 0 1 0 2 5 5 4 0 8 9 3 2 5 5 2 7 1 9 3 9 8 4 8 3 6 1 9 0 8 0 4 7 5 0 1 8 5 4 1 8 4 9 2 9 4 6 0 2 2 8 0 2 6 0 3 2 3 7 1 1 6 6 5 2 6 6 7 8 5
+0 2 7 9 2 8 1 3 8 6 6 6 7 1 6 8 1 8 6 9 4 6 5 1 2 1 6 6 5 9 5 3 2 1 7 9 9 4 9 2 0 4 0 7 3 7 3 1 9 6 8 8 3 2 8 7 2 4 9 1 7 7 7 3 7 7 6 6 7 9 5 0 5 1 8 1 8 9 6 6 4 4 1 9 3 4 4 0 1 8 0 0 7 0 2 5 8 0 0 1
+0 8 0 3 3 1 2 2 5 3 2 5 9 5 3 8 8 9 6 4 6 1 0 5 9 2 1 3 7 7 4 5 8 1 5 1 9 9 8 8 9 1 5 9 1 7 7 8 8 6 0 0 7 3 5 1 1 0 6 8 6 8 4 0 9 4 9 3 7 9 5 3 7 8 3 1 1 9 8 2 0 4 5 8 6 8 5 0 6 1 1 6 8 6 6 2 7 3 0 0
+8 4 4 5 8 0 6 1 5 8 0 9 0 4 9 0 2 1 0 9 8 7 4 4 2 0 8 9 3 8 8 9 6 0 1 6 9 1 8 6 3 5 3 6 2 5 2 2 4 7 6 1 4 4 6 7 2 7 6 2 0 7 0 9 2 5 7 2 8 9 4 6 5 1 4 7 7 0 3 7 1 7 4 4 2 6 9 6 5 3 2 2 7 2 9 6 3 5 2 2
+7 9 1 9 3 6 8 0 9 1 8 9 7 0 9 4 0 5 1 5 0 4 4 7 4 9 0 0 3 5 0 8 1 0 9 7 8 1 9 3 4 5 4 8 6 2 2 1 0 7 5 2 3 1 3 6 0 2 7 3 7 7 0 0 6 6 9 4 8 9 9 1 9 4 0 3 9 0 2 8 6 3 9 9 2 6 1 0 7 7 3 8 1 4 8 6 1 9 9 8
+7 4 7 7 1 8 9 7 9 0 3 7 2 1 0 6 9 9 7 6 2 3 0 5 3 9 7 9 9 9 2 6 7 9 9 0 0 0 4 2 3 9 7 8 1 3 1 5 2 9 8 1 0 1 2 9 3 3 3 3 8 0 1 1 1 6 7 8 9 8 1 6 9 0 8 2 4 6 4 6 8 1 3 6 2 4 7 9 6 0 8 6 8 7 6 3 7 8 4 9
+2 7 1 3 8 2 5 3 7 2 8 1 2 8 3 4 9 2 8 2 7 8 2 1 1 4 5 7 9 3 4 3 1 8 8 1 2 8 3 1 0 5 0 9 8 6 5 2 5 9 1 6 9 0 1 6 0 7 4 1 0 7 1 1 5 3 1 2 4 5 8 8 0 7 1 6 8 3 8 4 6 3 2 2 2 3 5 5 9 8 8 0 0 8 1 2 3 3 4 0
+7 4 8 0 3 5 3 9 5 5 5 8 5 0 0 1 9 2 8 2 0 8 5 1 4 5 7 9 7 1 9 1 2 2 7 1 8 6 2 5 2 5 7 6 8 0 2 0 7 9 8 7 2 0 3 3 0 4 4 9 3 5 9 3 4 2 6 9 5 0 4 1 1 7 8 9 3 1 0 9 8 4 5 9 7 7 2 1 7 0 7 3 5 1 3 9 6 8 0 8
+3 6 5 3 5 2 3 7 0 6 5 7 6 8 7 6 1 1 0 1 9 3 0 0 5 7 2 7 2 9 8 2 6 9 2 7 8 5 4 2 3 0 6 7 3 3 5 1 5 2 6 7 6 9 9 9 8 3 4 4 7 4 2 3 2 8 0 4 9 5 5 8 2 0 2 9 1 2 5 3 7 3 2 3 0 6 3 6 6 5 1 3 3 5 6 5 3 9 6 6
+5 3 7 7 3 7 4 5 5 3 6 2 7 1 8 0 5 6 8 1 5 4 6 6 1 2 7 8 3 3 3 2 0 5 0 8 3 3 4 2 7 5 8 8 8 0 1 5 7 9 1 4 8 6 4 7 2 4 4 5 8 0 1 9 7 0 5 6 7 2 4 3 4 0 2 2 3 0 7 3 5 4 5 9 1 4 7 7 9 1 1 4 8 8 9 6 3 8 5 9
+7 4 3 8 8 5 0 1 7 0 5 9 7 6 6 1 0 2 4 2 0 3 5 2 0 9 6 9 2 1 1 4 9 3 7 2 8 1 2 8 4 5 0 3 0 8 6 3 4 0 2 6 1 4 1 8 5 7 6 8 4 0 6 9 7 7 3 8 9 5 4 6 8 7 9 5 7 3 3 9 0 8 2 7 0 2 6 4 4 6 4 8 7 6 6 3 4 8 2 7
+0 8 4 1 5 0 3 4 6 3 5 9 5 9 5 7 0 4 0 5 0 6 8 7 5 8 3 2 2 3 4 3 9 5 5 4 1 0 9 3 1 1 2 6 3 4 2 4 4 0 2 0 1 2 9 2 0 1 4 2 7 6 4 3 0 6 8 5 9 1 3 6 0 2 0 8 6 3 0 1 5 5 1 6 7 6 9 5 6 2 9 1 4 3 6 9 5 6 8 1
+1 2 6 8 5 0 6 6 2 1 6 2 2 5 4 4 0 1 7 5 6 3 2 8 9 0 4 2 7 5 2 4 0 6 5 6 3 8 2 8 7 9 9 9 1 5 4 8 1 2 9 6 2 1 5 0 1 1 9 1 2 1 3 5 3 3 0 3 2 5 0 1 7 1 1 0 4 7 7 4 5 1 7 1 8 0 6 4 6 0 6 4 8 4 4 1 9 0 0 5
+1 8 7 1 0 8 6 5 6 3 7 1 6 2 3 6 7 1 0 1 2 8 8 6 8 8 6 8 3 5 1 0 6 9 5 9 8 4 8 4 1 8 6 0 0 2 3 6 2 1 3 5 3 8 9 9 1 7 7 8 6 9 6 4 0 6 1 2 2 0 1 9 6 0 7 0 2 2 3 3 6 9 4 5 2 3 8 8 6 1 9 6 6 5 0 2 6 5 9 3
+8 3 4 7 5 9 6 0 1 8 0 8 8 4 9 5 3 3 7 6 4 9 7 3 7 9 1 6 6 6 2 1 7 0 0 7 4 8 8 0 3 9 7 5 0 6 5 7 4 4 5 0 6 5 9 7 9 3 7 0 3 4 8 4 1 1 3 2 4 2 1 4 7 5 7 9 4 7 1 0 6 2 8 3 5 6 9 2 6 4 5 7 4 8 8 5 8 1 1 0
+7 1 5 7 3 7 6 6 0 1 3 6 7 2 3 8 7 3 2 2 2 7 4 2 2 8 8 6 1 1 7 5 1 9 4 1 3 1 8 2 0 1 0 1 1 4 0 4 5 4 7 9 9 8 8 5 4 0 1 7 5 7 2 7 8 6 8 8 8 1 8 9 1 1 6 1 8 5 8 1 1 0 6 5 3 2 2 6 0 8 4 3 1 3 2 3 4 0 8 2
+2 4 2 4 7 3 2 2 1 8 8 0 1 0 9 5 9 0 8 7 2 4 9 7 7 6 5 6 0 4 3 3 4 3 1 3 5 4 5 9 6 6 7 0 7 5 3 8 3 1 1 7 0 2 4 9 8 4 3 4 2 9 5 3 9 1 3 4 6 3 8 4 4 2 9 5 3 9 6 4 1 4 0 3 0 8 7 2 7 0 5 6 9 1 6 3 5 3 4 0
+1 3 1 1 6 0 1 5 4 8 8 2 2 4 2 1 6 1 6 0 4 0 2 8 0 1 5 5 3 9 8 4 9 7 6 1 9 6 1 6 5 9 0 2 7 4 8 2 6 8 2 5 5 3 9 7 0 1 5 9 4 3 8 8 9 8 2 2 9 6 8 8 7 8 6 5 0 3 7 3 8 9 6 7 2 8 8 5 7 6 0 9 2 8 3 8 7 3 0 4
+0 2 0 1 0 8 6 6 6 0 7 9 4 1 5 2 3 0 8 9 0 3 0 9 5 9 1 0 6 8 4 4 0 5 4 1 6 4 1 3 9 6 0 0 2 2 2 0 0 8 9 3 8 5 3 3 1 7 7 6 0 9 0 9 1 1 3 7 3 9 9 7 1 9 2 7 0 0 4 8 2 0 5 4 5 4 9 6 2 5 1 6 3 6 1 5 1 5 3 2
+3 6 0 5 9 6 8 6 3 3 1 0 5 9 3 5 7 9 9 3 0 7 8 3 5 1 6 5 1 7 3 6 0 1 2 1 2 2 7 9 8 1 4 1 7 5 5 7 3 0 3 0 0 3 6 1 1 2 5 9 9 1 3 7 3 2 6 5 3 5 0 3 4 3 9 4 4 5 5 1 7 9 0 3 6 0 2 0 5 9 4 4 6 2 6 1 7 8 3 6
+2 8 0 1 0 5 2 1 7 4 6 4 1 6 7 9 9 5 7 4 5 0 2 4 0 4 0 6 7 6 1 5 7 0 2 9 8 4 8 5 1 3 7 9 4 3 5 6 0 5 6 0 4 0 2 7 3 7 8 7 3 7 1 3 8 0 9 4 2 4 6 4 1 6 2 1 5 1 5 3 4 2 8 4 7 3 7 8 3 4 2 4 4 0 2 2 7 1 6 2
+6 9 6 8 3 4 6 9 9 4 5 2 6 9 6 7 2 6 7 2 6 9 6 6 9 1 6 6 9 2 7 8 1 8 5 2 2 2 4 0 1 4 6 9 3 8 7 8 5 5 6 1 8 9 5 5 7 6 8 3 0 8 2 3 6 3 3 3 3 8 6 4 5 5 1 7 8 0 4 4 9 8 2 1 4 8 5 6 0 1 9 7 1 8 6 7 8 6 7 7
+4 9 1 8 8 9 5 9 6 6 7 5 2 3 4 2 6 2 8 8 2 4 5 7 1 0 5 9 1 0 7 7 3 8 1 3 1 2 6 9 1 3 9 9 1 0 6 8 8 0 0 3 4 4 2 3 9 7 1 3 9 5 4 4 2 6 0 2 1 0 1 2 9 3 2 8 5 2 2 6 0 6 2 7 7 0 2 9 5 6 4 1 4 2 6 5 0 5 8 9
+1 3 7 8 7 5 5 0 3 2 8 7 1 3 6 9 6 7 1 9 2 0 7 1 5 9 8 2 7 1 8 2 2 2 9 6 2 2 3 8 5 3 0 0 0 2 9 3 7 2 2 0 6 3 4 2 5 3 5 2 9 3 5 8 8 8 6 2 2 7 2 2 8 5 2 8 8 1 2 0 6 2 3 1 1 5 3 9 2 4 5 9 0 2 4 6 3 8 5 0
+6 0 9 5 4 0 6 1 6 2 9 9 3 2 7 2 8 0 9 9 4 8 5 1 3 9 8 8 0 0 9 3 8 0 5 4 9 8 7 3 8 4 5 8 7 6 6 2 6 2 5 9 2 9 1 0 6 1 2 7 8 3 4 9 2 7 6 3 1 0 6 9 9 5 9 9 4 3 0 1 6 3 9 5 0 6 4 0 0 6 2 6 9 7 5 4 0 8 7 7
+2 4 4 5 6 9 1 8 8 4 1 8 4 7 1 0 6 5 4 5 6 4 9 0 5 4 4 0 3 7 1 9 3 9 6 5 1 0 0 3 9 2 8 6 3 8 4 9 6 2 0 4 4 4 0 8 5 7 8 3 4 4 7 1 6 3 7 4 1 5 1 7 1 5 8 7 6 7 6 6 9 1 4 2 1 4 2 4 4 2 3 0 2 1 6 4 9 3 9 0
+2 2 0 6 6 8 1 3 2 1 9 5 7 2 2 7 6 7 0 7 3 7 5 4 8 0 6 2 0 0 1 3 4 2 1 6 1 9 5 1 0 1 7 8 6 1 5 1 1 2 7 8 4 1 5 8 6 8 2 4 7 7 3 6 0 2 7 0 6 8 3 2 3 0 2 7 5 1 7 7 7 1 3 7 0 5 9 2 2 2 7 7 3 2 4 4 8 4 6 1
+5 9 1 8 7 3 8 1 1 1 9 2 6 8 3 8 5 3 3 7 0 0 1 0 9 7 1 8 3 9 2 3 2 6 4 9 9 4 0 6 7 4 7 3 8 6 2 7 6 2 9 4 7 1 4 4 8 2 9 5 9 4 0 6 0 1 3 4 8 9 2 0 0 4 9 7 1 9 4 1 8 5 7 9 1 4 9 7 1 5 3 1 4 2 4 9 1 3 4 6
+5 7 5 2 5 7 8 1 0 9 9 7 5 8 0 6 5 7 7 5 8 1 4 9 1 8 7 3 2 1 5 9 0 1 4 0 9 5 8 8 6 5 3 4 0 1 3 4 4 4 3 1 4 1 4 5 3 9 3 1 1 6 7 4 7 9 0 5 0 1 8 5 3 6 9 3 8 4 3 5 4 0 0 4 6 1 1 9 4 4 4 8 6 3 0 1 2 2 8 8
+5 7 9 1 1 5 8 5 4 4 6 7 0 9 8 1 6 9 5 2 1 1 8 7 7 3 4 9 8 7 0 0 6 7 9 7 5 0 6 9 4 6 1 1 3 5 7 5 0 2 6 5 5 8 1 3 7 6 5 1 3 1 9 0 0 9 4 9 4 8 2 7 3 5 5 7 3 1 2 1 0 4 8 1 7 8 2 3 9 9 6 8 5 0 3 4 5 9 5 1
+4 8 0 1 2 8 2 4 6 0 6 1 0 1 7 7 1 2 5 2 6 8 2 0 5 9 7 9 6 9 1 3 0 8 5 6 3 9 7 9 9 5 3 0 0 0 4 8 2 2 1 2 6 3 5 8 5 6 1 9 8 5 7 1 6 0 5 0 0 6 8 2 8 9 7 8 4 3 5 4 4 7 7 7 5 1 6 2 3 1 7 5 9 6 7 7 7 9 3 3
+2 2 7 7 5 4 4 8 7 5 0 1 6 6 4 1 0 8 2 6 6 2 8 6 1 7 1 2 5 0 7 9 0 6 3 4 9 3 8 2 1 5 9 7 8 6 0 1 5 8 3 3 5 2 1 2 3 4 3 8 4 1 2 8 9 6 9 8 5 7 4 7 1 9 4 2 6 5 8 0 1 3 4 7 0 7 0 2 1 2 1 1 5 6 3 6 4 9 7 2
+1 0 5 1 1 1 7 5 4 6 5 2 3 9 6 6 2 6 9 7 8 2 1 3 2 6 7 6 4 7 6 1 3 9 8 0 1 5 0 1 0 0 4 2 6 9 9 0 7 9 8 5 0 6 3 2 3 9 0 4 4 9 5 7 9 1 2 4 7 2 0 6 0 0 6 7 2 3 2 7 8 6 0 4 7 7 2 9 8 3 3 9 2 1 3 9 7 9 2 9
+1 0 2 1 2 9 5 2 2 2 5 2 6 1 1 0 1 9 4 6 9 0 1 7 5 8 4 9 9 7 9 8 6 4 4 9 0 1 3 7 1 4 4 4 1 5 8 4 0 7 6 3 5 2 4 0 3 8 2 6 1 3 4 3 1 3 4 3 8 8 5 3 5 7 2 5 1 0 8 6 6 1 8 4 6 8 7 4 5 1 0 3 8 2 0 9 7 1 5 1
+9 0 7 3 0 5 7 5 7 6 9 9 2 3 3 9 7 5 2 0 9 1 6 3 1 2 7 6 1 6 7 7 5 3 2 9 8 5 9 1 2 1 5 9 7 0 2 0 0 0 4 3 0 2 5 3 2 4 1 1 2 8 2 8 9 3 4 2 0 4 8 2 2 5 9 0 3 3 4 2 6 1 5 9 8 3 2 2 7 4 5 1 8 8 4 8 1 5 9 7
+0 0 9 3 3 1 3 9 3 6 2 2 2 5 6 9 1 6 9 6 5 4 1 2 6 8 6 2 1 3 5 4 6 6 9 0 9 1 1 5 5 1 3 3 3 6 0 8 5 1 3 6 9 6 2 4 7 8 3 0 8 4 2 9 9 9 9 6 9 6 5 2 8 3 8 0 7 9 7 8 8 5 9 4 0 0 2 1 7 6 7 9 8 3 9 1 3 0 2 4
+5 7 8 6 0 7 9 7 3 6 5 3 4 1 0 8 0 1 9 6 3 3 1 2 0 6 3 5 0 4 0 7 0 0 5 5 9 2 2 1 6 1 2 1 9 8 4 4 0 4 4 6 4 9 2 3 8 7 9 4 2 1 4 5 7 3 8 2 4 6 8 7 3 7 5 5 9 3 4 6 5 2 0 6 1 0 4 8 4 1 4 6 9 6 2 5 3 0 7 5
+0 5 9 7 7 7 2 2 2 1 8 6 5 9 0 6 4 0 8 1 5 5 5 0 6 7 0 1 5 9 9 7 0 4 1 6 2 8 3 6 2 6 4 6 9 3 8 0 2 3 2 9 1 8 8 4 5 3 9 2 7 8 0 5 4 8 9 9 6 7 5 4 8 5 7 9 2 8 5 0 7 7 7 8 1 3 9 7 6 1 6 7 7 7 3 2 0 3 4 2
+9 1 6 9 5 9 0 5 2 5 9 2 4 3 0 6 3 0 7 2 9 5 7 3 4 9 8 1 2 6 0 9 8 9 9 9 1 6 3 8 3 0 4 7 8 0 6 1 6 9 0 8 6 5 2 2 1 6 9 4 5 9 9 3 6 7 7 0 7 2 4 5 3 8 8 6 8 1 1 6 0 2 9 4 0 3 6 7 4 2 1 1 8 2 0 0 8 9 4 5
+9 6 9 4 0 7 1 9 4 6 9 0 7 3 3 3 0 3 5 4 7 8 0 6 2 0 8 8 2 3 1 9 5 9 4 0 0 2 7 7 6 2 9 2 6 3 3 8 0 8 7 4 5 8 0 4 9 0 3 4 4 7 1 1 6 2 1 3 6 1 0 9 5 5 9 2 8 4 0 6 4 4 9 4 4 4 8 5 2 4 0 8 0 5 5 9 1 8 4 9
+6 5 0 5 6 0 0 0 1 9 1 4 8 1 0 8 3 6 6 3 1 8 8 3 2 6 1 8 3 4 1 1 8 1 0 1 8 8 5 9 3 2 6 5 3 0 0 2 1 1 7 7 2 3 3 4 2 2 0 4 2 4 8 3 8 5 1 2 4 4 4 5 5 5 4 8 3 9 6 2 5 1 7 2 4 1 3 5 7 2 1 2 2 8 4 0 3 5 5 3
+0 1 2 6 3 4 8 5 8 2 7 8 1 1 8 3 7 8 7 0 5 8 8 8 4 4 0 7 3 2 9 1 8 6 5 6 6 0 1 9 9 7 5 2 8 7 8 1 0 1 9 7 8 0 4 4 1 5 5 8 0 0 9 4 8 5 2 8 5 3 1 7 4 2 9 4 7 5 5 3 1 6 7 1 6 1 7 0 6 4 6 3 0 5 8 2 9 5 1 5
+5 7 3 9 0 5 6 9 0 6 5 4 9 0 5 5 3 6 0 7 4 8 0 2 5 2 8 8 2 7 4 1 1 1 0 8 8 5 6 1 1 9 3 4 3 7 7 9 3 1 7 4 3 9 1 0 4 3 1 0 6 2 2 9 5 1 8 6 6 5 7 4 8 3 8 0 7 1 9 8 1 0 6 7 9 8 3 6 8 8 2 3 6 0 7 2 9 6 8 3
+3 9 6 8 9 4 9 8 6 8 0 8 3 0 9 2 9 2 9 4 4 5 4 1 1 6 3 1 4 8 9 1 5 6 9 9 8 4 5 9 3 8 0 7 8 3 2 9 1 9 7 0 2 1 1 6 4 5 3 0 6 0 9 9 0 9 3 5 4 8 7 7 1 0 6 2 1 6 9 7 0 6 1 3 8 2 6 9 4 9 7 2 3 5 0 4 5 8 7 9
+1 5 1 9 7 5 4 6 9 2 5 7 3 7 4 5 6 5 0 2 4 6 7 5 5 2 5 9 6 9 5 7 5 6 8 4 7 0 6 2 6 1 6 8 6 0 8 5 8 0 8 8 2 5 2 4 2 7 8 1 3 5 1 7 3 0 4 5 8 1 1 3 6 0 1 0 8 4 6 8 5 2 0 7 3 1 6 0 5 2 1 1 9 6 5 1 4 5 1 5
+8 6 9 0 9 1 1 5 4 9 5 8 2 0 8 0 1 4 3 5 3 4 2 9 7 0 5 4 9 6 4 6 7 8 9 9 7 4 0 6 3 3 7 0 2 5 3 4 2 0 5 0 0 9 2 9 7 7 7 6 0 2 2 6 9 0 1 6 3 5 1 6 2 9 9 5 3 8 4 8 8 1 5 5 0 9 5 0 9 9 4 1 2 7 8 6 3 5 7 0
+8 8 2 4 1 9 8 9 0 4 0 0 6 3 6 1 6 6 2 4 1 1 4 9 8 1 0 4 8 6 9 8 0 3 0 5 2 9 2 4 6 6 6 5 9 1 3 3 6 4 8 2 2 2 9 9 1 0 0 9 1 4 8 1 8 6 4 3 6 8 1 7 7 0 7 6 9 2 2 7 8 4 8 7 9 2 4 5 3 5 6 9 1 4 2 0 8 0 2 6
+0 7 0 2 9 0 4 9 7 2 5 2 6 6 7 1 1 4 3 4 7 6 1 3 9 0 7 0 4 2 2 0 0 6 7 0 7 7 8 2 6 2 1 9 4 5 5 1 7 0 8 4 5 9 1 5 8 8 6 3 4 8 7 4 1 1 7 5 5 3 5 9 3 0 4 5 5 3 9 2 5 1 2 5 0 8 9 3 6 6 7 7 5 0 3 4 3 8 5 6
+5 7 0 2 0 1 2 7 3 4 3 4 7 9 0 0 2 3 2 3 5 0 9 8 4 9 4 7 4 4 6 5 3 5 7 2 5 6 8 9 5 7 2 1 2 9 6 9 0 9 5 1 5 4 4 0 6 2 8 7 0 4 3 6 7 7 6 6 0 0 1 1 8 8 2 6 0 2 6 0 5 7 4 3 6 7 2 9 5 9 5 8 2 5 9 4 7 6 2 0
+5 0 0 9 8 3 8 8 8 0 3 6 2 2 4 9 9 4 1 8 0 2 5 8 7 1 0 3 4 4 3 3 2 7 9 2 2 2 7 3 2 3 5 4 2 2 0 8 5 0 1 0 1 9 0 9 0 2 1 4 9 9 7 1 9 1 1 2 3 7 2 0 8 8 3 7 4 1 7 8 5 2 9 6 1 5 1 5 0 1 1 9 8 4 2 8 5 5 5 5
+2 6 7 1 0 5 1 0 9 6 8 9 8 6 9 4 9 8 9 9 2 9 7 0 0 2 2 4 0 5 7 3 2 3 6 0 3 4 7 4 6 1 2 9 0 7 6 5 4 0 9 9 9 6 3 4 3 9 5 9 5 3 7 2 8 5 8 6 9 3 1 0 7 9 1 0 1 0 8 4 0 2 9 8 4 9 0 6 0 6 4 5 4 9 4 8 0 2 8 3
+
+
+7 8 7 9 5 8 6 6 0 2 7 2 4 5 5 0 7 8 3 5 9 0 8 9 1 8 6 3 9 9 0 5 9 7 5 3 6 5 5 0 9 9 5 2 8 2 7 6 1 5 2 2 8 9 7 7 6 2 4 2 3 8 0 1 5 8 1 6 7 9 8 9 6 2 6 7 1 9 6 7 4 3 9 5 9 4 1 2 0 7 0 7 2 6 7 0 6 6 1 6
+9 7 0 8 8 7 6 6 1 6 7 7 1 1 3 7 4 3 1 6 6 9 6 9 0 7 2 9 7 6 3 9 0 0 5 0 0 4 8 3 4 3 9 3 7 4 3 8 8 9 3 5 3 2 5 7 2 8 5 2 6 6 5 4 8 6 9 2 6 2 4 7 6 3 6 7 3 5 0 7 0 4 3 7 4 8 9 4 5 7 2 8 4 3 2 5 0 1 2 1
+6 9 4 0 7 1 4 3 0 8 3 4 2 0 5 5 8 0 7 3 1 0 2 0 7 2 6 1 3 6 2 5 5 4 4 6 1 2 5 9 9 6 7 5 5 1 8 6 9 7 1 8 9 1 2 3 3 9 4 9 4 4 2 9 9 9 3 0 5 5 7 6 1 9 3 1 8 1 5 4 3 8 5 5 5 1 8 5 8 5 2 9 3 3 1 7 1 3 9 7
+8 8 3 4 4 7 5 3 7 3 0 4 8 9 4 2 1 4 6 3 6 3 0 7 6 9 4 4 7 0 2 6 4 6 4 5 6 2 7 5 9 5 2 9 2 9 5 5 3 4 5 5 7 6 9 7 8 8 6 1 3 0 9 1 6 7 1 7 9 7 4 5 6 2 7 6 5 0 1 1 7 8 5 5 4 2 9 5 8 0 6 7 6 4 7 6 8 3 1 2
+7 7 1 8 9 0 3 1 4 5 6 2 8 2 3 6 8 5 3 5 3 9 0 7 1 7 9 6 4 8 0 6 4 8 5 1 6 9 5 9 8 5 1 5 4 4 8 3 2 3 3 6 4 4 5 8 2 9 4 0 3 2 3 4 5 5 7 0 7 6 2 8 4 4 0 0 6 7 0 4 2 3 5 8 6 6 2 6 0 8 5 7 1 6 9 1 0 3 1 6
+4 4 7 8 8 3 0 3 8 3 0 4 7 9 4 5 8 3 9 4 0 2 2 5 7 4 9 9 3 7 5 2 9 3 8 1 3 7 0 2 6 4 9 5 0 4 8 9 9 0 2 7 2 7 8 9 5 7 9 1 7 1 4 6 6 5 6 7 3 1 2 8 1 1 3 1 4 7 0 2 7 5 0 8 0 7 3 2 3 0 3 2 8 8 0 4 9 2 9 4
+2 2 1 6 2 5 7 9 1 0 9 3 5 8 7 6 5 5 9 4 4 2 3 4 2 7 4 1 5 5 8 0 8 5 2 7 1 4 1 7 4 2 2 4 4 4 0 3 8 2 7 8 5 5 0 9 5 6 9 4 1 0 0 6 6 9 9 9 5 8 5 9 6 9 5 1 3 3 8 2 3 7 1 0 9 5 4 2 7 5 4 0 2 3 8 3 5 8 8 0
+4 8 7 2 9 4 7 0 0 6 3 5 7 7 2 4 5 8 9 3 0 1 6 8 6 9 1 6 0 6 2 7 5 2 5 1 5 2 5 6 9 6 5 5 1 6 0 8 8 8 1 0 8 1 4 7 5 9 5 4 0 4 5 5 3 2 6 0 3 4 3 7 6 8 0 3 5 8 8 0 1 7 5 5 5 4 7 6 5 2 5 5 8 1 4 9 2 8 7 4
+5 5 0 9 7 5 1 6 9 9 0 0 7 1 8 0 0 5 0 3 3 5 9 7 9 6 3 1 3 3 5 3 7 5 9 9 5 5 5 6 4 2 6 8 8 0 4 2 4 3 1 9 7 1 7 6 0 1 1 2 2 3 1 7 0 0 3 0 1 9 6 3 8 4 7 0 3 7 3 0 8 0 3 8 7 8 2 8 0 6 3 2 0 0 0 6 5 9 0 3
+4 0 3 0 0 0 4 6 2 6 0 9 7 2 9 5 1 4 1 6 5 1 4 6 4 1 0 2 9 4 1 1 0 4 3 8 9 9 6 3 3 9 9 1 0 2 9 7 5 2 9 0 8 1 2 7 9 8 9 5 5 8 9 3 3 0 3 6 2 0 2 0 7 7 3 6 3 6 6 8 1 2 4 7 5 1 9 2 7 7 6 7 1 5 0 9 7 5 9 9
+7 3 6 0 2 9 0 6 7 2 1 9 5 8 3 1 4 5 3 7 0 1 2 3 4 0 1 5 3 6 2 7 8 2 1 8 6 7 0 1 6 3 5 0 8 6 2 6 7 1 8 5 0 7 0 7 7 1 7 5 7 1 1 5 6 4 0 5 2 7 4 2 8 1 1 0 3 0 3 5 2 9 1 0 5 6 3 0 7 9 5 0 5 0 9 7 9 2 5 9
+2 4 6 6 2 0 2 6 2 3 8 1 3 4 0 3 5 7 6 0 0 4 1 0 3 0 4 1 7 7 2 9 9 1 2 4 0 2 2 6 0 1 9 6 7 9 3 8 7 2 1 4 0 5 0 4 5 6 1 6 6 5 1 0 6 4 0 2 8 2 5 7 9 2 5 6 4 4 5 9 7 7 4 9 1 2 8 7 1 8 6 8 5 0 3 3 6 4 5 2
+5 9 5 7 8 1 4 5 2 1 9 7 9 5 3 4 0 4 9 4 9 1 2 3 6 2 9 7 9 6 1 7 1 5 7 7 2 4 0 8 3 2 0 1 1 2 2 3 5 9 3 0 7 5 6 1 2 8 2 7 0 7 0 7 1 5 1 5 0 6 4 7 9 8 5 1 7 2 7 9 7 4 7 8 0 3 6 1 2 7 4 9 8 6 2 2 9 6 7 2
+4 8 3 3 5 9 8 2 0 1 3 6 9 6 1 6 3 0 2 4 8 1 5 5 0 0 5 2 7 0 6 2 9 0 0 8 9 7 3 9 1 9 8 2 2 6 5 5 6 7 3 6 0 2 0 4 5 2 9 1 1 4 1 2 3 7 1 6 7 1 8 3 8 6 9 1 9 2 1 9 9 3 1 2 8 2 6 5 2 5 1 1 1 6 2 9 0 3 1 0
+8 0 6 9 5 9 0 2 1 7 5 5 7 6 2 8 6 4 7 0 1 8 3 9 4 4 0 2 4 7 2 0 5 7 5 1 9 3 5 4 9 4 0 2 7 3 0 6 6 3 3 5 7 1 1 4 1 5 4 8 5 2 8 4 4 3 8 9 7 7 5 8 8 9 4 9 8 7 9 9 8 5 8 7 4 6 6 5 0 1 3 8 3 0 7 1 8 0 3 0
+6 9 2 4 6 7 7 3 9 2 2 5 0 0 3 1 6 3 8 3 3 8 5 5 0 8 0 5 3 9 3 7 6 7 0 0 8 8 4 2 0 4 3 4 8 2 9 5 5 9 9 7 1 4 4 3 5 3 3 8 6 8 3 6 3 5 5 9 2 6 4 8 0 4 0 8 8 4 9 7 9 3 2 6 4 1 1 2 5 0 8 7 5 0 0 2 3 8 9 1
+5 2 1 6 9 7 8 5 5 5 4 6 4 1 2 8 1 1 9 0 9 1 1 0 6 5 9 8 7 1 0 2 0 1 9 3 4 9 1 7 9 5 1 1 9 3 0 4 0 0 0 9 3 0 6 4 2 6 0 9 1 6 9 8 0 0 2 7 6 2 5 9 4 9 2 7 8 9 5 3 5 2 8 9 3 3 1 3 7 1 8 9 2 8 4 1 9 2 7 9
+4 2 3 8 1 3 9 1 7 0 5 9 3 3 1 1 9 5 4 9 1 2 4 6 1 6 1 3 8 9 3 2 0 1 8 0 4 2 7 5 3 4 5 4 4 3 7 0 6 5 6 1 1 2 1 7 0 3 2 1 5 1 4 9 0 4 8 6 3 4 4 9 6 5 9 4 2 6 9 5 8 8 8 0 0 8 9 5 3 8 9 7 4 2 7 3 7 1 0 5
+8 0 4 8 9 1 6 4 6 6 1 0 6 7 8 0 2 4 0 5 1 7 8 4 6 3 5 7 9 0 7 4 4 3 2 5 0 3 9 4 3 9 1 9 6 1 3 5 7 7 8 7 2 8 7 5 8 6 2 9 1 4 3 4 9 8 9 0 6 5 0 7 7 2 8 6 8 3 7 7 5 0 5 1 5 7 6 3 4 8 6 4 9 3 6 0 0 3 0 5
+3 1 5 9 9 7 8 6 1 6 7 8 7 3 9 6 6 8 5 2 4 9 6 0 4 6 7 8 4 2 5 4 2 3 0 7 6 7 2 7 1 6 8 8 7 3 7 6 4 6 4 8 2 4 4 1 0 1 9 2 7 1 3 4 9 7 9 5 0 9 8 6 8 7 0 7 6 9 0 7 8 7 3 9 2 1 4 3 6 7 6 9 7 4 6 0 8 1 5 5
+7 3 8 6 2 0 7 1 8 8 9 4 4 0 1 3 3 2 4 4 1 7 8 9 8 1 0 9 5 0 5 7 4 4 2 4 4 6 1 9 5 6 4 9 4 7 0 7 1 5 1 5 2 0 6 2 7 0 4 0 0 8 2 0 1 7 4 7 0 4 4 0 0 1 0 1 0 2 5 6 6 0 8 0 7 3 5 8 7 4 1 3 7 0 4 1 9 4 8 7
+3 6 7 0 3 2 7 5 6 4 6 7 1 3 1 3 8 7 0 4 8 5 3 5 7 8 3 5 1 5 6 9 1 8 6 5 6 4 5 8 5 4 2 9 3 2 1 7 0 3 1 6 1 8 1 2 5 1 2 0 2 6 4 3 9 4 9 3 6 7 3 4 5 4 5 7 2 4 8 9 4 3 2 5 3 8 2 3 5 9 3 9 9 5 0 4 0 9 0 3
+0 3 0 5 0 0 2 2 4 6 8 8 9 4 5 9 7 3 8 2 2 8 9 1 1 5 6 9 4 8 5 5 0 6 4 3 9 5 0 0 8 4 4 0 4 2 5 7 7 2 2 3 2 7 0 1 3 9 4 7 0 6 1 5 7 2 3 9 8 5 6 1 6 1 8 3 6 8 4 5 2 0 3 0 7 4 7 4 1 8 8 9 6 9 4 6 7 0 6 1
+3 0 4 6 8 5 0 7 9 4 7 3 3 6 3 2 3 6 1 1 7 6 8 2 7 3 1 5 8 4 1 7 6 9 7 3 4 7 4 6 1 9 4 2 8 9 3 1 4 7 1 0 5 6 4 8 9 0 7 0 7 9 9 0 2 0 8 0 6 4 4 3 0 8 6 5 4 6 0 9 5 3 4 8 2 1 3 5 6 0 2 5 5 9 3 2 9 3 6 3
+0 5 7 7 6 4 3 3 4 3 9 4 5 2 6 0 9 4 2 2 0 4 2 3 0 1 1 2 1 8 4 3 0 8 4 0 5 3 1 1 7 9 1 6 4 7 8 4 4 6 4 2 2 3 7 2 3 8 5 9 2 2 1 1 1 3 1 1 6 6 2 6 5 4 0 0 5 6 3 5 9 1 4 9 7 6 1 3 6 1 5 6 8 1 2 3 0 4 0 3
+9 9 4 5 8 2 1 3 9 5 6 2 4 9 7 0 6 2 4 4 5 2 4 8 5 6 6 7 1 7 0 9 2 9 0 5 1 2 4 2 4 1 9 9 0 1 2 5 2 2 2 9 9 0 6 4 0 6 7 0 4 6 9 3 6 6 7 3 0 0 4 8 4 4 0 3 4 1 6 9 6 3 7 5 8 3 3 9 2 2 6 7 4 7 5 3 5 7 9 0
+8 4 1 5 7 9 2 9 5 3 7 5 7 4 9 8 1 2 4 7 8 4 5 4 9 7 3 0 9 7 3 6 9 4 7 5 5 2 6 7 7 4 6 5 5 0 9 9 0 5 1 4 7 9 6 2 8 6 1 7 8 9 3 2 5 6 7 9 0 0 6 1 7 7 8 9 8 6 3 0 5 7 2 2 7 8 8 1 9 4 5 7 7 1 9 7 0 9 3 8
+8 4 5 4 7 9 7 3 0 9 9 3 2 2 7 3 6 2 7 8 4 4 2 5 0 6 9 9 1 6 7 8 5 2 2 3 9 3 4 8 4 9 7 9 2 4 8 2 5 7 2 0 7 9 8 7 7 4 3 5 2 0 9 8 8 7 4 3 1 4 6 3 3 0 1 0 5 4 7 7 3 6 2 9 8 4 0 8 2 0 4 6 1 5 2 6 6 5 0 7
+1 3 8 4 1 0 8 8 7 4 9 0 4 3 4 7 6 9 5 2 1 1 4 4 0 8 6 8 9 5 9 0 5 8 3 7 6 3 0 0 3 2 5 1 4 3 7 6 0 3 4 7 7 8 9 5 0 7 5 1 6 0 4 2 4 5 7 2 0 6 3 3 2 0 6 9 4 9 4 2 0 3 6 4 3 5 7 3 8 5 9 5 1 9 8 2 0 0 7 3
+1 1 2 2 6 5 0 6 9 0 7 2 1 9 8 6 7 0 1 7 7 3 1 6 7 4 5 7 0 2 1 8 0 3 9 6 0 5 8 4 6 5 2 9 7 3 3 3 1 2 4 8 2 7 1 2 9 7 5 8 4 5 1 7 5 3 7 5 9 8 3 9 4 1 7 7 7 3 2 0 3 5 1 6 8 3 4 0 0 2 8 1 2 2 9 4 6 5 7 1
+8 6 7 4 1 7 7 4 0 0 1 9 5 1 4 5 3 9 3 7 1 7 5 0 6 6 9 0 2 3 8 1 5 3 8 8 5 6 3 9 1 8 2 2 4 9 9 3 9 1 0 1 7 2 7 3 8 7 1 9 2 7 0 4 9 2 6 9 0 0 1 2 3 6 7 5 0 5 3 2 0 6 8 1 3 2 0 2 2 6 3 7 5 2 8 7 9 1 0 4
+7 0 9 0 1 9 4 7 5 6 0 6 7 0 9 8 3 2 0 8 7 9 8 0 1 0 0 6 9 9 7 4 9 9 1 6 8 8 6 3 9 1 1 4 8 0 6 3 9 9 1 2 2 6 9 2 0 7 3 1 1 6 3 1 6 1 9 8 9 1 7 5 0 1 4 1 0 3 0 3 2 7 7 8 5 7 3 1 2 5 2 0 5 5 0 1 0 9 9 8
+6 9 5 7 1 3 3 0 9 2 8 2 7 9 0 9 6 3 0 0 9 2 6 6 9 2 6 9 9 8 6 9 6 9 3 0 0 4 8 8 2 5 4 5 2 2 5 5 8 9 6 5 2 0 4 6 9 1 7 5 3 1 6 0 0 5 5 2 0 0 6 0 0 8 1 7 7 0 2 0 0 2 8 0 4 4 0 4 3 9 1 2 7 4 0 5 1 8 2 3
+7 0 4 6 0 1 7 9 7 5 1 4 3 1 9 1 5 0 1 1 7 3 9 2 0 7 5 0 8 4 9 8 8 3 3 2 7 0 5 5 5 7 7 8 5 1 6 5 4 5 8 1 6 6 4 3 5 7 2 3 5 5 8 7 7 8 5 9 4 5 3 1 9 3 3 0 3 7 5 8 0 0 8 7 1 3 5 7 0 9 2 3 9 6 3 9 5 8 7 3
+5 9 1 0 4 0 8 1 1 8 3 0 8 4 1 4 2 9 9 7 6 0 6 4 1 2 2 6 9 8 4 6 7 9 0 3 7 4 8 2 8 3 5 9 3 7 6 1 8 4 3 7 8 4 9 7 9 6 0 9 3 5 6 2 5 9 3 5 2 3 2 9 2 8 7 2 9 0 1 9 7 4 7 1 4 8 6 0 6 1 0 1 7 7 8 8 1 0 2 1
+4 8 3 6 1 2 1 3 8 5 8 7 8 3 1 3 2 6 1 0 2 8 3 0 9 5 0 5 0 8 2 5 4 7 6 9 5 0 4 6 8 7 1 1 3 0 9 3 0 4 9 1 2 1 6 2 1 6 6 5 4 2 1 3 4 2 8 2 5 9 6 3 7 7 9 1 8 5 4 0 7 9 4 5 0 1 7 8 6 7 5 9 4 9 9 1 8 2 8 2
+8 7 5 9 2 4 6 5 2 5 3 3 9 3 3 2 5 9 5 0 8 3 3 7 5 3 9 9 0 2 6 7 4 9 8 0 2 3 4 9 2 0 8 9 6 3 2 7 6 6 1 8 8 9 0 8 7 3 0 7 6 6 9 9 2 5 9 7 5 3 8 3 4 8 8 3 8 9 0 1 9 7 5 5 3 6 2 7 0 9 5 8 7 6 1 9 5 6 3 9
+0 0 6 6 2 3 8 0 6 2 9 0 5 4 1 6 1 8 7 6 2 3 2 3 7 4 5 5 4 1 2 5 9 8 7 2 9 7 7 7 8 7 4 8 3 1 3 0 2 2 0 3 4 2 4 9 6 4 2 3 2 5 9 4 0 4 4 1 7 0 1 0 8 8 9 4 1 4 8 2 1 6 1 6 5 9 4 1 2 7 8 3 8 4 5 6 5 2 3 2
+8 9 9 0 9 1 9 1 0 8 7 2 6 2 3 8 3 2 1 3 0 3 7 8 3 2 7 1 7 6 3 1 8 1 3 8 7 0 1 6 4 0 3 1 9 4 6 5 8 5 8 6 4 5 5 9 3 4 8 3 2 1 4 4 5 4 3 4 5 1 7 8 2 0 7 8 1 0 3 0 7 9 5 1 3 4 4 1 0 2 9 0 9 3 1 3 6 8 8 7
+4 0 0 5 5 2 8 5 6 7 8 8 3 4 0 6 4 5 7 1 3 4 0 3 6 9 3 2 3 7 5 2 9 0 6 9 9 5 9 5 0 8 7 2 7 8 9 2 8 3 2 7 4 0 9 9 5 0 8 6 1 3 4 6 7 2 3 5 1 0 6 1 7 4 5 8 1 5 3 3 6 8 6 8 0 4 8 4 2 3 5 4 9 7 2 1 9 9 7 9
+1 2 7 5 3 5 1 6 9 7 1 1 8 8 9 2 3 2 9 4 3 0 9 1 4 9 5 1 6 8 3 0 3 2 0 4 5 6 6 7 4 5 1 3 6 1 6 0 2 8 0 8 7 9 9 2 3 0 4 2 2 5 6 0 0 2 3 2 0 7 5 1 0 6 6 5 8 8 6 1 3 8 6 6 4 9 5 9 5 7 8 3 2 3 0 7 5 4 2 8
+1 7 0 9 1 2 4 7 6 8 2 1 8 6 7 9 9 9 9 3 1 8 3 5 7 7 0 9 9 3 5 0 0 1 1 5 1 0 1 1 6 0 4 9 4 6 1 1 1 6 6 8 2 7 5 8 9 7 6 4 8 6 9 7 0 7 1 1 0 0 5 3 2 6 4 8 9 3 9 6 9 3 3 6 9 3 1 9 2 7 1 3 4 1 0 2 3 7 0 4
+7 7 2 0 5 1 1 1 4 5 5 6 8 4 4 1 3 7 2 0 5 2 0 1 5 1 3 1 5 9 8 1 6 4 0 0 1 8 6 2 0 1 0 3 9 1 7 8 9 3 6 0 3 4 6 4 4 6 0 5 0 6 5 8 1 7 6 3 8 5 9 4 6 8 4 6 7 4 2 9 3 1 2 4 7 4 8 9 4 7 0 8 2 0 5 2 4 0 1 0
+6 8 3 1 9 3 2 3 1 2 9 2 1 1 8 1 5 8 8 7 8 9 8 8 3 0 4 7 6 5 2 1 9 8 4 6 7 5 6 1 3 4 2 3 9 3 0 4 9 4 8 5 9 9 4 8 8 5 4 1 1 9 5 4 8 5 0 0 4 3 3 4 0 9 9 9 8 4 6 0 3 1 3 0 7 5 1 4 8 8 6 7 9 8 4 0 1 6 6 7
+4 0 8 3 7 3 8 3 8 2 4 0 5 9 6 6 9 7 2 5 1 3 2 5 0 9 4 7 7 6 2 5 0 3 6 8 1 6 1 8 1 3 1 5 0 0 5 6 0 3 6 5 1 2 5 6 3 5 6 9 7 5 2 1 9 3 7 4 4 3 2 0 8 1 0 8 2 6 9 1 3 6 8 6 4 3 0 1 8 4 3 8 5 8 1 0 9 4 5 5
+8 7 9 8 3 5 0 2 9 8 5 8 9 8 1 2 3 2 2 4 8 1 7 5 0 4 5 8 6 1 3 3 5 2 6 1 1 9 8 9 6 1 8 9 3 9 7 1 3 9 5 2 8 5 9 1 0 4 6 1 2 8 9 6 9 4 7 1 7 9 6 8 1 5 7 3 4 5 1 9 6 9 2 7 9 3 7 2 9 9 2 0 4 4 6 6 4 0 6 6
+6 5 5 8 1 9 2 5 0 1 3 5 2 7 7 2 1 9 5 1 6 1 5 8 7 0 9 7 1 1 1 0 8 6 8 7 9 9 8 3 3 0 3 9 8 9 0 2 9 9 2 7 6 6 9 7 1 1 1 2 4 4 4 5 5 4 2 3 8 1 6 8 4 4 5 2 1 4 0 9 5 3 6 0 6 7 9 7 3 4 1 2 1 0 6 7 4 1 8 5
+5 1 8 0 9 0 6 8 0 2 1 5 3 7 2 4 4 2 9 1 9 0 4 9 5 2 6 1 1 6 1 7 6 8 1 2 3 1 6 9 8 4 9 4 5 1 1 9 7 3 2 8 3 1 1 8 1 4 6 8 6 6 7 3 2 4 2 2 0 6 9 3 3 4 3 2 0 8 3 5 2 6 7 5 6 1 7 6 9 3 0 1 3 4 6 6 2 9 0 0
+2 0 5 7 9 7 2 1 9 0 1 3 0 2 6 8 2 1 3 8 1 8 1 0 1 5 8 6 3 4 0 7 2 9 6 3 2 7 4 7 3 5 6 7 6 1 6 0 6 4 8 8 7 2 1 7 0 0 9 3 9 7 8 0 5 6 3 8 0 4 9 4 2 4 7 8 1 3 4 8 4 4 2 1 8 6 6 4 3 9 3 8 9 3 0 2 6 1 6 6
+8 9 8 8 9 3 5 2 3 0 6 6 0 6 1 6 0 4 9 8 7 0 3 1 9 9 2 6 4 3 5 0 1 0 2 5 5 4 0 8 9 3 2 5 5 2 7 1 9 3 9 8 4 8 3 6 1 9 0 8 0 4 7 5 0 1 8 5 4 1 8 4 9 2 9 4 6 0 2 2 8 0 2 6 0 3 2 3 7 1 1 6 6 5 2 6 6 7 8 5
+0 2 7 9 2 8 1 3 8 6 6 6 7 1 6 8 1 8 6 9 4 6 5 1 2 1 6 6 5 9 5 3 2 1 7 9 9 4 9 2 0 4 0 7 3 7 3 1 9 6 8 8 3 2 8 7 2 4 9 1 7 7 7 3 7 7 6 6 7 9 5 0 5 1 8 1 8 9 6 6 4 4 1 9 3 4 4 0 1 8 0 0 7 0 2 5 8 0 0 1
+0 8 0 3 3 1 2 2 5 3 2 5 9 5 3 8 8 9 6 4 6 1 0 5 9 2 1 3 7 7 4 5 8 1 5 1 9 9 8 8 9 1 5 9 1 7 7 8 8 6 0 0 7 3 5 1 1 0 6 8 6 8 4 0 9 4 9 3 7 9 5 3 7 8 3 1 1 9 8 2 0 4 5 8 6 8 5 0 6 1 1 6 8 6 6 2 7 3 0 0
+8 4 4 5 8 0 6 1 5 8 0 9 0 4 9 0 2 1 0 9 8 7 4 4 2 0 8 9 3 8 8 9 6 0 1 6 9 1 8 6 3 5 3 6 2 5 2 2 4 7 6 1 4 4 6 7 2 7 6 2 0 7 0 9 2 5 7 2 8 9 4 6 5 1 4 7 7 0 3 7 1 7 4 4 2 6 9 6 5 3 2 2 7 2 9 6 3 5 2 2
+7 9 1 9 3 6 8 0 9 1 8 9 7 0 9 4 0 5 1 5 0 4 4 7 4 9 0 0 3 5 0 8 1 0 9 7 8 1 9 3 4 5 4 8 6 2 2 1 0 7 5 2 3 1 3 6 0 2 7 3 7 7 0 0 6 6 9 4 8 9 9 1 9 4 0 3 9 0 2 8 6 3 9 9 2 6 1 0 7 7 3 8 1 4 8 6 1 9 9 8
+7 4 7 7 1 8 9 7 9 0 3 7 2 1 0 6 9 9 7 6 2 3 0 5 3 9 7 9 9 9 2 6 7 9 9 0 0 0 4 2 3 9 7 8 1 3 1 5 2 9 8 1 0 1 2 9 3 3 3 3 8 0 1 1 1 6 7 8 9 8 1 6 9 0 8 2 4 6 4 6 8 1 3 6 2 4 7 9 6 0 8 6 8 7 6 3 7 8 4 9
+2 7 1 3 8 2 5 3 7 2 8 1 2 8 3 4 9 2 8 2 7 8 2 1 1 4 5 7 9 3 4 3 1 8 8 1 2 8 3 1 0 5 0 9 8 6 5 2 5 9 1 6 9 0 1 6 0 7 4 1 0 7 1 1 5 3 1 2 4 5 8 8 0 7 1 6 8 3 8 4 6 3 2 2 2 3 5 5 9 8 8 0 0 8 1 2 3 3 4 0
+7 4 8 0 3 5 3 9 5 5 5 8 5 0 0 1 9 2 8 2 0 8 5 1 4 5 7 9 7 1 9 1 2 2 7 1 8 6 2 5 2 5 7 6 8 0 2 0 7 9 8 7 2 0 3 3 0 4 4 9 3 5 9 3 4 2 6 9 5 0 4 1 1 7 8 9 3 1 0 9 8 4 5 9 7 7 2 1 7 0 7 3 5 1 3 9 6 8 0 8
+3 6 5 3 5 2 3 7 0 6 5 7 6 8 7 6 1 1 0 1 9 3 0 0 5 7 2 7 2 9 8 2 6 9 2 7 8 5 4 2 3 0 6 7 3 3 5 1 5 2 6 7 6 9 9 9 8 3 4 4 7 4 2 3 2 8 0 4 9 5 5 8 2 0 2 9 1 2 5 3 7 3 2 3 0 6 3 6 6 5 1 3 3 5 6 5 3 9 6 6
+5 3 7 7 3 7 4 5 5 3 6 2 7 1 8 0 5 6 8 1 5 4 6 6 1 2 7 8 3 3 3 2 0 5 0 8 3 3 4 2 7 5 8 8 8 0 1 5 7 9 1 4 8 6 4 7 2 4 4 5 8 0 1 9 7 0 5 6 7 2 4 3 4 0 2 2 3 0 7 3 5 4 5 9 1 4 7 7 9 1 1 4 8 8 9 6 3 8 5 9
+7 4 3 8 8 5 0 1 7 0 5 9 7 6 6 1 0 2 4 2 0 3 5 2 0 9 6 9 2 1 1 4 9 3 7 2 8 1 2 8 4 5 0 3 0 8 6 3 4 0 2 6 1 4 1 8 5 7 6 8 4 0 6 9 7 7 3 8 9 5 4 6 8 7 9 5 7 3 3 9 0 8 2 7 0 2 6 4 4 6 4 8 7 6 6 3 4 8 2 7
+0 8 4 1 5 0 3 4 6 3 5 9 5 9 5 7 0 4 0 5 0 6 8 7 5 8 3 2 2 3 4 3 9 5 5 4 1 0 9 3 1 1 2 6 3 4 2 4 4 0 2 0 1 2 9 2 0 1 4 2 7 6 4 3 0 6 8 5 9 1 3 6 0 2 0 8 6 3 0 1 5 5 1 6 7 6 9 5 6 2 9 1 4 3 6 9 5 6 8 1
+1 2 6 8 5 0 6 6 2 1 6 2 2 5 4 4 0 1 7 5 6 3 2 8 9 0 4 2 7 5 2 4 0 6 5 6 3 8 2 8 7 9 9 9 1 5 4 8 1 2 9 6 2 1 5 0 1 1 9 1 2 1 3 5 3 3 0 3 2 5 0 1 7 1 1 0 4 7 7 4 5 1 7 1 8 0 6 4 6 0 6 4 8 4 4 1 9 0 0 5
+1 8 7 1 0 8 6 5 6 3 7 1 6 2 3 6 7 1 0 1 2 8 8 6 8 8 6 8 3 5 1 0 6 9 5 9 8 4 8 4 1 8 6 0 0 2 3 6 2 1 3 5 3 8 9 9 1 7 7 8 6 9 6 4 0 6 1 2 2 0 1 9 6 0 7 0 2 2 3 3 6 9 4 5 2 3 8 8 6 1 9 6 6 5 0 2 6 5 9 3
+8 3 4 7 5 9 6 0 1 8 0 8 8 4 9 5 3 3 7 6 4 9 7 3 7 9 1 6 6 6 2 1 7 0 0 7 4 8 8 0 3 9 7 5 0 6 5 7 4 4 5 0 6 5 9 7 9 3 7 0 3 4 8 4 1 1 3 2 4 2 1 4 7 5 7 9 4 7 1 0 6 2 8 3 5 6 9 2 6 4 5 7 4 8 8 5 8 1 1 0
+7 1 5 7 3 7 6 6 0 1 3 6 7 2 3 8 7 3 2 2 2 7 4 2 2 8 8 6 1 1 7 5 1 9 4 1 3 1 8 2 0 1 0 1 1 4 0 4 5 4 7 9 9 8 8 5 4 0 1 7 5 7 2 7 8 6 8 8 8 1 8 9 1 1 6 1 8 5 8 1 1 0 6 5 3 2 2 6 0 8 4 3 1 3 2 3 4 0 8 2
+2 4 2 4 7 3 2 2 1 8 8 0 1 0 9 5 9 0 8 7 2 4 9 7 7 6 5 6 0 4 3 3 4 3 1 3 5 4 5 9 6 6 7 0 7 5 3 8 3 1 1 7 0 2 4 9 8 4 3 4 2 9 5 3 9 1 3 4 6 3 8 4 4 2 9 5 3 9 6 4 1 4 0 3 0 8 7 2 7 0 5 6 9 1 6 3 5 3 4 0
+1 3 1 1 6 0 1 5 4 8 8 2 2 4 2 1 6 1 6 0 4 0 2 8 0 1 5 5 3 9 8 4 9 7 6 1 9 6 1 6 5 9 0 2 7 4 8 2 6 8 2 5 5 3 9 7 0 1 5 9 4 3 8 8 9 8 2 2 9 6 8 8 7 8 6 5 0 3 7 3 8 9 6 7 2 8 8 5 7 6 0 9 2 8 3 8 7 3 0 4
+0 2 0 1 0 8 6 6 6 0 7 9 4 1 5 2 3 0 8 9 0 3 0 9 5 9 1 0 6 8 4 4 0 5 4 1 6 4 1 3 9 6 0 0 2 2 2 0 0 8 9 3 8 5 3 3 1 7 7 6 0 9 0 9 1 1 3 7 3 9 9 7 1 9 2 7 0 0 4 8 2 0 5 4 5 4 9 6 2 5 1 6 3 6 1 5 1 5 3 2
+3 6 0 5 9 6 8 6 3 3 1 0 5 9 3 5 7 9 9 3 0 7 8 3 5 1 6 5 1 7 3 6 0 1 2 1 2 2 7 9 8 1 4 1 7 5 5 7 3 0 3 0 0 3 6 1 1 2 5 9 9 1 3 7 3 2 6 5 3 5 0 3 4 3 9 4 4 5 5 1 7 9 0 3 6 0 2 0 5 9 4 4 6 2 6 1 7 8 3 6
+2 8 0 1 0 5 2 1 7 4 6 4 1 6 7 9 9 5 7 4 5 0 2 4 0 4 0 6 7 6 1 5 7 0 2 9 8 4 8 5 1 3 7 9 4 3 5 6 0 5 6 0 4 0 2 7 3 7 8 7 3 7 1 3 8 0 9 4 2 4 6 4 1 6 2 1 5 1 5 3 4 2 8 4 7 3 7 8 3 4 2 4 4 0 2 2 7 1 6 2
+6 9 6 8 3 4 6 9 9 4 5 2 6 9 6 7 2 6 7 2 6 9 6 6 9 1 6 6 9 2 7 8 1 8 5 2 2 2 4 0 1 4 6 9 3 8 7 8 5 5 6 1 8 9 5 5 7 6 8 3 0 8 2 3 6 3 3 3 3 8 6 4 5 5 1 7 8 0 4 4 9 8 2 1 4 8 5 6 0 1 9 7 1 8 6 7 8 6 7 7
+4 9 1 8 8 9 5 9 6 6 7 5 2 3 4 2 6 2 8 8 2 4 5 7 1 0 5 9 1 0 7 7 3 8 1 3 1 2 6 9 1 3 9 9 1 0 6 8 8 0 0 3 4 4 2 3 9 7 1 3 9 5 4 4 2 6 0 2 1 0 1 2 9 3 2 8 5 2 2 6 0 6 2 7 7 0 2 9 5 6 4 1 4 2 6 5 0 5 8 9
+1 3 7 8 7 5 5 0 3 2 8 7 1 3 6 9 6 7 1 9 2 0 7 1 5 9 8 2 7 1 8 2 2 2 9 6 2 2 3 8 5 3 0 0 0 2 9 3 7 2 2 0 6 3 4 2 5 3 5 2 9 3 5 8 8 8 6 2 2 7 2 2 8 5 2 8 8 1 2 0 6 2 3 1 1 5 3 9 2 4 5 9 0 2 4 6 3 8 5 0
+6 0 9 5 4 0 6 1 6 2 9 9 3 2 7 2 8 0 9 9 4 8 5 1 3 9 8 8 0 0 9 3 8 0 5 4 9 8 7 3 8 4 5 8 7 6 6 2 6 2 5 9 2 9 1 0 6 1 2 7 8 3 4 9 2 7 6 3 1 0 6 9 9 5 9 9 4 3 0 1 6 3 9 5 0 6 4 0 0 6 2 6 9 7 5 4 0 8 7 7
+2 4 4 5 6 9 1 8 8 4 1 8 4 7 1 0 6 5 4 5 6 4 9 0 5 4 4 0 3 7 1 9 3 9 6 5 1 0 0 3 9 2 8 6 3 8 4 9 6 2 0 4 4 4 0 8 5 7 8 3 4 4 7 1 6 3 7 4 1 5 1 7 1 5 8 7 6 7 6 6 9 1 4 2 1 4 2 4 4 2 3 0 2 1 6 4 9 3 9 0
+2 2 0 6 6 8 1 3 2 1 9 5 7 2 2 7 6 7 0 7 3 7 5 4 8 0 6 2 0 0 1 3 4 2 1 6 1 9 5 1 0 1 7 8 6 1 5 1 1 2 7 8 4 1 5 8 6 8 2 4 7 7 3 6 0 2 7 0 6 8 3 2 3 0 2 7 5 1 7 7 7 1 3 7 0 5 9 2 2 2 7 7 3 2 4 4 8 4 6 1
+5 9 1 8 7 3 8 1 1 1 9 2 6 8 3 8 5 3 3 7 0 0 1 0 9 7 1 8 3 9 2 3 2 6 4 9 9 4 0 6 7 4 7 3 8 6 2 7 6 2 9 4 7 1 4 4 8 2 9 5 9 4 0 6 0 1 3 4 8 9 2 0 0 4 9 7 1 9 4 1 8 5 7 9 1 4 9 7 1 5 3 1 4 2 4 9 1 3 4 6
+5 7 5 2 5 7 8 1 0 9 9 7 5 8 0 6 5 7 7 5 8 1 4 9 1 8 7 3 2 1 5 9 0 1 4 0 9 5 8 8 6 5 3 4 0 1 3 4 4 4 3 1 4 1 4 5 3 9 3 1 1 6 7 4 7 9 0 5 0 1 8 5 3 6 9 3 8 4 3 5 4 0 0 4 6 1 1 9 4 4 4 8 6 3 0 1 2 2 8 8
+5 7 9 1 1 5 8 5 4 4 6 7 0 9 8 1 6 9 5 2 1 1 8 7 7 3 4 9 8 7 0 0 6 7 9 7 5 0 6 9 4 6 1 1 3 5 7 5 0 2 6 5 5 8 1 3 7 6 5 1 3 1 9 0 0 9 4 9 4 8 2 7 3 5 5 7 3 1 2 1 0 4 8 1 7 8 2 3 9 9 6 8 5 0 3 4 5 9 5 1
+4 8 0 1 2 8 2 4 6 0 6 1 0 1 7 7 1 2 5 2 6 8 2 0 5 9 7 9 6 9 1 3 0 8 5 6 3 9 7 9 9 5 3 0 0 0 4 8 2 2 1 2 6 3 5 8 5 6 1 9 8 5 7 1 6 0 5 0 0 6 8 2 8 9 7 8 4 3 5 4 4 7 7 7 5 1 6 2 3 1 7 5 9 6 7 7 7 9 3 3
+2 2 7 7 5 4 4 8 7 5 0 1 6 6 4 1 0 8 2 6 6 2 8 6 1 7 1 2 5 0 7 9 0 6 3 4 9 3 8 2 1 5 9 7 8 6 0 1 5 8 3 3 5 2 1 2 3 4 3 8 4 1 2 8 9 6 9 8 5 7 4 7 1 9 4 2 6 5 8 0 1 3 4 7 0 7 0 2 1 2 1 1 5 6 3 6 4 9 7 2
+1 0 5 1 1 1 7 5 4 6 5 2 3 9 6 6 2 6 9 7 8 2 1 3 2 6 7 6 4 7 6 1 3 9 8 0 1 5 0 1 0 0 4 2 6 9 9 0 7 9 8 5 0 6 3 2 3 9 0 4 4 9 5 7 9 1 2 4 7 2 0 6 0 0 6 7 2 3 2 7 8 6 0 4 7 7 2 9 8 3 3 9 2 1 3 9 7 9 2 9
+1 0 2 1 2 9 5 2 2 2 5 2 6 1 1 0 1 9 4 6 9 0 1 7 5 8 4 9 9 7 9 8 6 4 4 9 0 1 3 7 1 4 4 4 1 5 8 4 0 7 6 3 5 2 4 0 3 8 2 6 1 3 4 3 1 3 4 3 8 8 5 3 5 7 2 5 1 0 8 6 6 1 8 4 6 8 7 4 5 1 0 3 8 2 0 9 7 1 5 1
+9 0 7 3 0 5 7 5 7 6 9 9 2 3 3 9 7 5 2 0 9 1 6 3 1 2 7 6 1 6 7 7 5 3 2 9 8 5 9 1 2 1 5 9 7 0 2 0 0 0 4 3 0 2 5 3 2 4 1 1 2 8 2 8 9 3 4 2 0 4 8 2 2 5 9 0 3 3 4 2 6 1 5 9 8 3 2 2 7 4 5 1 8 8 4 8 1 5 9 7
+0 0 9 3 3 1 3 9 3 6 2 2 2 5 6 9 1 6 9 6 5 4 1 2 6 8 6 2 1 3 5 4 6 6 9 0 9 1 1 5 5 1 3 3 3 6 0 8 5 1 3 6 9 6 2 4 7 8 3 0 8 4 2 9 9 9 9 6 9 6 5 2 8 3 8 0 7 9 7 8 8 5 9 4 0 0 2 1 7 6 7 9 8 3 9 1 3 0 2 4
+5 7 8 6 0 7 9 7 3 6 5 3 4 1 0 8 0 1 9 6 3 3 1 2 0 6 3 5 0 4 0 7 0 0 5 5 9 2 2 1 6 1 2 1 9 8 4 4 0 4 4 6 4 9 2 3 8 7 9 4 2 1 4 5 7 3 8 2 4 6 8 7 3 7 5 5 9 3 4 6 5 2 0 6 1 0 4 8 4 1 4 6 9 6 2 5 3 0 7 5
+0 5 9 7 7 7 2 2 2 1 8 6 5 9 0 6 4 0 8 1 5 5 5 0 6 7 0 1 5 9 9 7 0 4 1 6 2 8 3 6 2 6 4 6 9 3 8 0 2 3 2 9 1 8 8 4 5 3 9 2 7 8 0 5 4 8 9 9 6 7 5 4 8 5 7 9 2 8 5 0 7 7 7 8 1 3 9 7 6 1 6 7 7 7 3 2 0 3 4 2
+9 1 6 9 5 9 0 5 2 5 9 2 4 3 0 6 3 0 7 2 9 5 7 3 4 9 8 1 2 6 0 9 8 9 9 9 1 6 3 8 3 0 4 7 8 0 6 1 6 9 0 8 6 5 2 2 1 6 9 4 5 9 9 3 6 7 7 0 7 2 4 5 3 8 8 6 8 1 1 6 0 2 9 4 0 3 6 7 4 2 1 1 8 2 0 0 8 9 4 5
+9 6 9 4 0 7 1 9 4 6 9 0 7 3 3 3 0 3 5 4 7 8 0 6 2 0 8 8 2 3 1 9 5 9 4 0 0 2 7 7 6 2 9 2 6 3 3 8 0 8 7 4 5 8 0 4 9 0 3 4 4 7 1 1 6 2 1 3 6 1 0 9 5 5 9 2 8 4 0 6 4 4 9 4 4 4 8 5 2 4 0 8 0 5 5 9 1 8 4 9
+6 5 0 5 6 0 0 0 1 9 1 4 8 1 0 8 3 6 6 3 1 8 8 3 2 6 1 8 3 4 1 1 8 1 0 1 8 8 5 9 3 2 6 5 3 0 0 2 1 1 7 7 2 3 3 4 2 2 0 4 2 4 8 3 8 5 1 2 4 4 4 5 5 5 4 8 3 9 6 2 5 1 7 2 4 1 3 5 7 2 1 2 2 8 4 0 3 5 5 3
+0 1 2 6 3 4 8 5 8 2 7 8 1 1 8 3 7 8 7 0 5 8 8 8 4 4 0 7 3 2 9 1 8 6 5 6 6 0 1 9 9 7 5 2 8 7 8 1 0 1 9 7 8 0 4 4 1 5 5 8 0 0 9 4 8 5 2 8 5 3 1 7 4 2 9 4 7 5 5 3 1 6 7 1 6 1 7 0 6 4 6 3 0 5 8 2 9 5 1 5
+5 7 3 9 0 5 6 9 0 6 5 4 9 0 5 5 3 6 0 7 4 8 0 2 5 2 8 8 2 7 4 1 1 1 0 8 8 5 6 1 1 9 3 4 3 7 7 9 3 1 7 4 3 9 1 0 4 3 1 0 6 2 2 9 5 1 8 6 6 5 7 4 8 3 8 0 7 1 9 8 1 0 6 7 9 8 3 6 8 8 2 3 6 0 7 2 9 6 8 3
+3 9 6 8 9 4 9 8 6 8 0 8 3 0 9 2 9 2 9 4 4 5 4 1 1 6 3 1 4 8 9 1 5 6 9 9 8 4 5 9 3 8 0 7 8 3 2 9 1 9 7 0 2 1 1 6 4 5 3 0 6 0 9 9 0 9 3 5 4 8 7 7 1 0 6 2 1 6 9 7 0 6 1 3 8 2 6 9 4 9 7 2 3 5 0 4 5 8 7 9
+1 5 1 9 7 5 4 6 9 2 5 7 3 7 4 5 6 5 0 2 4 6 7 5 5 2 5 9 6 9 5 7 5 6 8 4 7 0 6 2 6 1 6 8 6 0 8 5 8 0 8 8 2 5 2 4 2 7 8 1 3 5 1 7 3 0 4 5 8 1 1 3 6 0 1 0 8 4 6 8 5 2 0 7 3 1 6 0 5 2 1 1 9 6 5 1 4 5 1 5
+8 6 9 0 9 1 1 5 4 9 5 8 2 0 8 0 1 4 3 5 3 4 2 9 7 0 5 4 9 6 4 6 7 8 9 9 7 4 0 6 3 3 7 0 2 5 3 4 2 0 5 0 0 9 2 9 7 7 7 6 0 2 2 6 9 0 1 6 3 5 1 6 2 9 9 5 3 8 4 8 8 1 5 5 0 9 5 0 9 9 4 1 2 7 8 6 3 5 7 0
+8 8 2 4 1 9 8 9 0 4 0 0 6 3 6 1 6 6 2 4 1 1 4 9 8 1 0 4 8 6 9 8 0 3 0 5 2 9 2 4 6 6 6 5 9 1 3 3 6 4 8 2 2 2 9 9 1 0 0 9 1 4 8 1 8 6 4 3 6 8 1 7 7 0 7 6 9 2 2 7 8 4 8 7 9 2 4 5 3 5 6 9 1 4 2 0 8 0 2 6
+0 7 0 2 9 0 4 9 7 2 5 2 6 6 7 1 1 4 3 4 7 6 1 3 9 0 7 0 4 2 2 0 0 6 7 0 7 7 8 2 6 2 1 9 4 5 5 1 7 0 8 4 5 9 1 5 8 8 6 3 4 8 7 4 1 1 7 5 5 3 5 9 3 0 4 5 5 3 9 2 5 1 2 5 0 8 9 3 6 6 7 7 5 0 3 4 3 8 5 6
+5 7 0 2 0 1 2 7 3 4 3 4 7 9 0 0 2 3 2 3 5 0 9 8 4 9 4 7 4 4 6 5 3 5 7 2 5 6 8 9 5 7 2 1 2 9 6 9 0 9 5 1 5 4 4 0 6 2 8 7 0 4 3 6 7 7 6 6 0 0 1 1 8 8 2 6 0 2 6 0 5 7 4 3 6 7 2 9 5 9 5 8 2 5 9 4 7 6 2 0
+5 0 0 9 8 3 8 8 8 0 3 6 2 2 4 9 9 4 1 8 0 2 5 8 7 1 0 3 4 4 3 3 2 7 9 2 2 2 7 3 2 3 5 4 2 2 0 8 5 0 1 0 1 9 0 9 0 2 1 4 9 9 7 1 9 1 1 2 3 7 2 0 8 8 3 7 4 1 7 8 5 2 9 6 1 5 1 5 0 1 1 9 8 4 2 8 5 5 5 5
+2 6 7 1 0 5 1 0 9 6 8 9 8 6 9 4 9 8 9 9 2 9 7 0 0 2 2 4 0 5 7 3 2 3 6 0 3 4 7 4 6 1 2 9 0 7 6 5 4 0 9 9 9 6 3 4 3 9 5 9 5 3 7 2 8 5 8 6 9 3 1 0 7 9 1 0 1 0 8 4 0 2 9 8 4 9 0 6 0 6 4 5 4 9 4 8 0 2 8 3
\ No newline at end of file
diff --git a/FinalProject/CMakeLists.txt b/FinalProject/CMakeLists.txt
index bd7103b..b3d0a6d 100644
--- a/FinalProject/CMakeLists.txt
+++ b/FinalProject/CMakeLists.txt
@@ -3,16 +3,15 @@ project(FinalProject)
set(CMAKE_CXX_STANDARD 11)
SET(CMAKE_CXX_COMPILER mpicxx)
find_package(MPI REQUIRED)
-find_package(nlohmann_json 3.2.0 REQUIRED)
add_definitions(-DOMPI_SKIP_MPICXX)
set(HEADER_FILES
- )
-set(SOURCE_FILES
Serialize_Deserialize_Vector.h)
+set(SOURCE_FILES
+ )
add_executable(HW10 ${HEADER_FILES} ${SOURCE_FILES} main.cpp)
set_property(TARGET HW10 PROPERTY CXX_STANDARD 11)
target_compile_options(HW10 PRIVATE -Wall -Wextra -pedantic -Wl,--stack,10000000 -O3)
-target_link_libraries(HW10 PRIVATE MPI::MPI_C nlohmann_json::nlohmann_json)
+target_link_libraries(HW10 PRIVATE MPI::MPI_C)
diff --git a/FinalProject/Matrix.txt b/FinalProject/Matrix.txt
index 653c6c8..52b9d03 100644
--- a/FinalProject/Matrix.txt
+++ b/FinalProject/Matrix.txt
@@ -1,8 +1,9 @@
-3
-1 2 3
-4 5 6
-7 8 9
+4
+0 3 2 1
+3 2 2 2
+1 4 1 5
+2 6 7 2
9 8 7
6 5 4
-3 2 1
+3 2 1
\ No newline at end of file
diff --git a/FinalProject/a.out b/FinalProject/a.out
index 1962920..0515b85 100755
Binary files a/FinalProject/a.out and b/FinalProject/a.out differ
diff --git a/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/CXX.includecache b/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/CXX.includecache
index 0418a8c..aef0773 100644
--- a/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/CXX.includecache
+++ b/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/CXX.includecache
@@ -6,6 +6,14 @@
#IncludeRegexTransform:
+/Users/bradybodily/Repositories/CS5500_Parallel_Programming/FinalProject/Serialize_Deserialize_Vector.h
+vector
+-
+iostream
+-
+math.h
+-
+
/Users/bradybodily/Repositories/CS5500_Parallel_Programming/FinalProject/main.cpp
fstream
-
@@ -13,12 +21,10 @@ iostream
-
mpi.h
-
-stdlib.h
--
-time.h
--
vector
-
+Serialize_Deserialize_Vector.h
+/Users/bradybodily/Repositories/CS5500_Parallel_Programming/FinalProject/Serialize_Deserialize_Vector.h
/usr/local/Cellar/open-mpi/4.0.2/include/mpi.h
stddef.h
diff --git a/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/DependInfo.cmake b/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/DependInfo.cmake
index baf5be9..c07b73a 100644
--- a/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/DependInfo.cmake
+++ b/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/DependInfo.cmake
@@ -16,7 +16,6 @@ set(CMAKE_TARGET_DEFINITIONS_CXX
# The include file search paths:
set(CMAKE_CXX_TARGET_INCLUDE_PATH
"/usr/local/Cellar/open-mpi/4.0.2/include"
- "/usr/local/include"
)
# Targets to which this target links.
diff --git a/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/depend.internal b/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/depend.internal
index 240381d..7cfaec1 100644
--- a/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/depend.internal
+++ b/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/depend.internal
@@ -2,6 +2,7 @@
# Generated by "Unix Makefiles" Generator, CMake Version 3.15
CMakeFiles/HW10.dir/main.cpp.o
+ /Users/bradybodily/Repositories/CS5500_Parallel_Programming/FinalProject/Serialize_Deserialize_Vector.h
/Users/bradybodily/Repositories/CS5500_Parallel_Programming/FinalProject/main.cpp
/usr/local/Cellar/open-mpi/4.0.2/include/mpi.h
/usr/local/Cellar/open-mpi/4.0.2/include/mpi_portable_platform.h
diff --git a/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/depend.make b/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/depend.make
index 064ecbd..b492aa4 100644
--- a/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/depend.make
+++ b/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/depend.make
@@ -1,6 +1,7 @@
# CMAKE generated file: DO NOT EDIT!
# Generated by "Unix Makefiles" Generator, CMake Version 3.15
+CMakeFiles/HW10.dir/main.cpp.o: ../Serialize_Deserialize_Vector.h
CMakeFiles/HW10.dir/main.cpp.o: ../main.cpp
CMakeFiles/HW10.dir/main.cpp.o: /usr/local/Cellar/open-mpi/4.0.2/include/mpi.h
CMakeFiles/HW10.dir/main.cpp.o: /usr/local/Cellar/open-mpi/4.0.2/include/mpi_portable_platform.h
diff --git a/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/flags.make b/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/flags.make
index 28e37b9..7560fff 100644
--- a/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/flags.make
+++ b/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/flags.make
@@ -6,5 +6,5 @@ CXX_FLAGS = -g -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sd
CXX_DEFINES = -DOMPI_SKIP_MPICXX
-CXX_INCLUDES = -isystem /usr/local/Cellar/open-mpi/4.0.2/include -isystem /usr/local/include
+CXX_INCLUDES = -isystem /usr/local/Cellar/open-mpi/4.0.2/include
diff --git a/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/main.cpp.o b/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/main.cpp.o
index c16be8f..e2e19c2 100644
Binary files a/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/main.cpp.o and b/FinalProject/cmake-build-debug/CMakeFiles/HW10.dir/main.cpp.o differ
diff --git a/FinalProject/cmake-build-debug/CMakeFiles/Makefile.cmake b/FinalProject/cmake-build-debug/CMakeFiles/Makefile.cmake
index 9f7d3a2..c272862 100644
--- a/FinalProject/cmake-build-debug/CMakeFiles/Makefile.cmake
+++ b/FinalProject/cmake-build-debug/CMakeFiles/Makefile.cmake
@@ -42,9 +42,6 @@ set(CMAKE_MAKEFILE_DEPENDS
"CMakeFiles/3.15.3/CMakeCXXCompiler.cmake"
"CMakeFiles/3.15.3/CMakeSystem.cmake"
"CMakeFiles/FindMPI/test_mpi.cpp"
- "/usr/local/lib/cmake/nlohmann_json/nlohmann_jsonConfig.cmake"
- "/usr/local/lib/cmake/nlohmann_json/nlohmann_jsonConfigVersion.cmake"
- "/usr/local/lib/cmake/nlohmann_json/nlohmann_jsonTargets.cmake"
)
# The corresponding makefile is:
diff --git a/FinalProject/cmake-build-debug/FinalProject.cbp b/FinalProject/cmake-build-debug/FinalProject.cbp
index 2fa5b69..bcdef42 100644
--- a/FinalProject/cmake-build-debug/FinalProject.cbp
+++ b/FinalProject/cmake-build-debug/FinalProject.cbp
@@ -5,7 +5,7 @@
-
+
@@ -46,8 +46,8 @@
-
+
@@ -69,8 +69,8 @@
-
+
@@ -93,14 +93,5 @@
-
-
-
-
-
-
-
-
-
diff --git a/FinalProject/cmake-build-debug/HW10 b/FinalProject/cmake-build-debug/HW10
index e091703..f725f29 100755
Binary files a/FinalProject/cmake-build-debug/HW10 and b/FinalProject/cmake-build-debug/HW10 differ
diff --git a/FinalProject/main.cpp b/FinalProject/main.cpp
index 484a7e1..703c48b 100644
--- a/FinalProject/main.cpp
+++ b/FinalProject/main.cpp
@@ -7,11 +7,9 @@
#define MCW MPI_COMM_WORLD
using namespace std;
-using sdv = Serialize_Deserialize_Vector;
-//Problem size
int N;
-//global variables
+ofstream myfile;
std::vector > A = std::vector >(0, std::vector(0));
std::vector > B = std::vector >(0, std::vector(0));
std::vector > AB = std::vector >(0, std::vector(0));
@@ -23,18 +21,132 @@ void serial_version();
void compute_interval(int start, int interval);
void multiplyMatrix(int rank, int size);
void read_in_matrices();
+void print_help();
+void determinant();
+std::vector > read_in_single_matrix();
+void reduced_row();
-
-int main(int argc, char** argv){
+int main(int argc, char** argv) {
int rank, size;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MCW, &rank);
MPI_Comm_size(MCW, &size);
- multiplyMatrix(rank, size);
+ if(!rank)
+ myfile.open ("results.txt");
+
+ bool done = false;
+ while (!done) {
+ char user_input;
+ if (!rank) {
+ bool user_input_complete = false;
+ while (!user_input_complete) {
+ cout << "Enter your selection: \n\t 1=Matrix Multiplication \n\t 2=Reduced Row \n\t 3=Matrix Determinent \n\t h=help \n\t q=Exit"
+ << endl;
+ cin >> user_input;
+ if (user_input == 'h')
+ print_help();
+ else if (user_input == '1' || user_input == '2' || user_input == '3' ||
+ user_input == 'q')
+ user_input_complete = true;
+ }
+ }
+ MPI_Barrier(MCW);
+ MPI_Bcast(&user_input, 1, MPI_INT, 0, MCW );
+ if (user_input == '1')
+ multiplyMatrix(rank, size);
+ else if (user_input == '2'){
+ if(!rank)
+ reduced_row();
+ }
+ else if (user_input == '3') {
+ if (!rank)
+ determinant();
+ }
+ else if (user_input == 'q')
+ done = true;
+ }
+ myfile.close();
MPI_Finalize();
+ return 0;
+}
+void reduced_row() {
+ cout << "Reduced Row: " << endl;
+ myfile << "Reduced Row: " << endl;
+ std::vector > M = read_in_single_matrix();
+ int n = M.size();
+ const double SMALL = 1.0E-30;
+
+ for (int i = 0; i < n - 1; i++) {
+ int r = i;
+ double maxM = abs(M[i][i]);
+ for (int k = i + 1; k < n; k++) {
+ double val = abs(M[k][i]);
+ if (val > maxM) {
+ r = k;
+ maxM = val;
+ }
+ }
+ if (r != i)
+ for (int j = i; j < n; j++)
+ swap(M[i][j], M[r][j]);
+
+ double pivot = M[i][i];
+ if (abs(pivot) < SMALL) {
+ print_matrix(M);
+ return;
+ }
+
+ for (int rows = i + 1; rows < n; rows++) {
+ double multiple = M[rows][i] / pivot;
+ for (int j = i; j < n; j++)
+ M[rows][j] -= multiple * M[i][j];
+ }
+ }
+ print_matrix(M);
+}
+std::vector > read_in_single_matrix() {
+ ifstream f("Matrix.txt");
+ f >> N;
+ // Allocate memory
+ A.resize(N);
+ for (int i = 0; i < N; ++i)
+ A[i].resize(N);
+ for (int i = 0; i < N; i++)
+ for (int j = 0; j < N; j++)
+ f >> A[i][j];
+ return A;
}
+void print_help(){
+ cout << "Inputs-"
+ "\n\t<1> Matrix Multiplication"
+ "\n\t\t Matrix Multiplication runs both a parallel and serial implementation timing both results for comparison."
+ "\n\t\t The read files first line should be the dimensions of the matricies being read and formatted as below:"
+ "\n\t\t\t 3"
+ "\n\t\t\t 1 2 3"
+ "\n\t\t\t 4 5 6"
+ "\n\t\t\t 7 8 9"
+ "\n"
+ "\n\t\t\t 9 8 7"
+ "\n\t\t\t 6 5 4"
+ "\n\t\t\t 3 2 1"
+ "\n\n\t<2> Reduced Row"
+ "\n\t\t Reduced row will preform row swaps to get the matrix into reduced row format."
+ "\n\t\t The read files first line should be the dimensions of the matrix being read and formatted as below:"
+ "\n\t\t\t 3"
+ "\n\t\t\t 1 2 3"
+ "\n\t\t\t 4 5 6"
+ "\n\t\t\t 7 8 9"
+ "\n\n\t<3> Matrix Determinent"
+ "\n\t\t The Matrix determinant will be calculated by placing the matrix in reduced row format and then multiplying the pivot points."
+ "\n\t\t The read files first line should be the dimensions of the matrix being read and formatted as below:"
+ "\n\t\t\t 3"
+ "\n\t\t\t 1 2 3"
+ "\n\t\t\t 4 5 6"
+ "\n\t\t\t 7 8 9"
+ <> N;
@@ -51,8 +163,6 @@ void read_in_matrices() {
AB_serial.resize(N);
for (int i = 0; i < N; ++i)
AB_serial[i].resize(N);
- // Fill Matricies
-
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
@@ -64,18 +174,18 @@ void read_in_matrices() {
for (int j = 0; j < N; j++)
AB[i][j] = 0;
}
-
-//Function to print matrix
void print_matrix(std::vector >mat) {
for (int i = 0; i < N; i++){
for (int j = 0; j tmpB = std::vector(N*N);
tmpB = Serialize_Deserialize_Vector::Serialize(B);
MPI_Bcast(&tmpB[0],N*N,MPI_DOUBLE,0,MCW);
if(rank)
B=Serialize_Deserialize_Vector::Deserialize(tmpB);
- //print_matrix(B);
std::vector tmpA = std::vector(N*N);
tmpA = Serialize_Deserialize_Vector::Serialize(A);
MPI_Bcast(&tmpA[0], N*N, MPI_DOUBLE, 0, MCW);
-// MPI_Scatter(&tmpA[0], interval * N, MPI_DOUBLE, &tmpA[rank * interval], interval * N,
-// MPI_DOUBLE, 0, MCW);
if(rank)
A=Serialize_Deserialize_Vector::Deserialize(tmpA);
- //print_matrix(A);
- //Each processor cumputes the interval they are responsible for
compute_interval(rank*interval,interval);
- //Gather results
- auto tmp_AB = Serialize_Deserialize_Vector::Serialize(AB);
-// cout << "RANK: " << rank << " INTERVAL: "<< interval << " rank*N " << rank*N << " tmp_AB.size() "< tmp(interval*N);
-// for(int i = (rank * interval*N),j=0; i < (rank * interval*N)+N; i++, j++){
-// tmp[j]=tmp_AB[i];
-// cout << tmp[j]<<" ";
-// }
-// cout << endl;
-// std::vector test(N*N);
+ std::vector tmp_AB = Serialize_Deserialize_Vector::Serialize(AB);
MPI_Gather(&tmp_AB[rank * interval*N], interval * N, MPI_DOUBLE, &tmp_AB[rank*interval*N],
interval * N, MPI_DOUBLE, 0, MCW);
AB=Serialize_Deserialize_Vector::Deserialize(tmp_AB);
- if(!rank)
- print_matrix(AB);
//Record parallel finish time
MPI_Barrier(MCW);
-
time2 = MPI_Wtime();
if (!rank){
- cout << "made it here!!" < > M = read_in_single_matrix();
+ int n = M.size();
+ const double SMALL = 1.0E-30;
+ double det = 1;
+
+ for ( int i = 0; i < n - 1; i++ )
+ {
+ int r = i;
+ double maxM = abs( M[i][i] );
+ for ( int k = i + 1; k < n; k++ )
+ {
+ double val = abs( M[k][i] );
+ if ( val > maxM )
+ {
+ r = k;
+ maxM = val;
+ }
+ }
+ if ( r != i )
+ {
+ for ( int j = i; j < n; j++ ) swap( M[i][j], M[r][j] );
+ det = -det;
+ }
+
+ double pivot = M[i][i];
+ if ( abs( pivot ) < SMALL ) {
+ cout << "Determinant = " << M[0][0] << " for matrix: " <