From: Hamed Gorjiara <hgorjiar@uci.edu>
Date: Thu, 6 Sep 2018 20:57:56 +0000 (-0700)
Subject: Bugfix for Sudoku solver + Using Glucose instead of Pycosat
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=457ddef68a9d8645a925201aafb28a3c144b34df;p=Benchmarks_CSolver.git

Bugfix for Sudoku solver + Using Glucose instead of Pycosat
---

diff --git a/sudoku-csolver/.gitignore b/sudoku-csolver/.gitignore
index 648641e1..ae149edf 100644
--- a/sudoku-csolver/.gitignore
+++ b/sudoku-csolver/.gitignore
@@ -1,9 +1,11 @@
 numpy*/
 pycosat*/
 bin/
-solved/
+solved/*
 
 csolver
 *.class
 *.so
 *.pyc
+*.in
+*.out
diff --git a/sudoku-csolver/Sudoku.py b/sudoku-csolver/Sudoku.py
index d84b126b..676425d2 100644
--- a/sudoku-csolver/Sudoku.py
+++ b/sudoku-csolver/Sudoku.py
@@ -1,4 +1,4 @@
-import pycosat
+import glucose
 import sys, getopt 
 import time
 import numpy as np
@@ -154,12 +154,13 @@ def sudoku_clauses():
 	# for all cells, ensure that the each cell:
 	for i in range(1, N+1):
 		for j in range(1, N+1):
-			# denotes (at least) one of the 9 digits (1 clause)
-			res.append([v(i, j, d) for d in range(1, N+1)])
 			# does not denote two different digits at once (36 clauses)
 			for d in range(1, N+1):
 				for dp in range(d + 1, N+1):
-					res.append([-v(i, j, d), -v(i, j, dp)])
+					res.append([ -v(i, j, dp), -v(i, j, d)])
+			# denotes (at least) one of the 9 digits (1 clause)
+			res.append([v(i, j, d) for d in range(1, N+1)])
+			
 	print "First one :" + str( len(res))
 	
 	def valid(cells): 
@@ -197,10 +198,11 @@ def solve(grid):
 	# Print number SAT clause 
 	numclause = len(clauses)
 	print "P CNF " + str(numclause) +"(number of clauses)"
-
+# 	for c in clauses:
+# 		print c
 	# solve the SAT problem
 	start = time.time()
-	sol = set(pycosat.solve(clauses))
+	sol = set(glucose.solve(clauses, N**3))
 	end = time.time()
 	print("SUDOKU SAT SOLVING TIME: "+str(end - start))
     
diff --git a/sudoku-csolver/csolversudoku.py b/sudoku-csolver/csolversudoku.py
index f61a040c..ac1fef63 100644
--- a/sudoku-csolver/csolversudoku.py
+++ b/sudoku-csolver/csolversudoku.py
@@ -14,8 +14,19 @@ def replaceWithElemConstOptimization(elemConsts, problem, sudoku):
 		for j, cell in enumerate(row):
 			if cell != 0:
 				problem[i][j] = elemConsts[cell-1]
+				
+def constantCellConstraint(csolverlb, solver, elemConsts, problem, sudoku):
+	for i,row in enumerate(sudoku):
+		for j, cell in enumerate(row):
+			if cell != 0:
+				csolverlb.addConstraint(solver, generateEqualityConstraint(csolverlb, solver, problem[i][j], elemConsts[cell-1]))
 
-	
+def generateEqualityConstraint(csolverlb, solver, e1, e2):
+	equals = csolverlb.createPredicateOperator(solver, c_uint(ps.CompOp.SATC_EQUALS))
+	inp = [e1,e2]
+	inputs = (c_void_p*len(inp))(*inp)
+	b = csolverlb.applyPredicate(solver,equals, inputs, c_uint(2))
+	return b
 	
 def extractItemInSetOptimization(csolverlb, solver, sudoku, N):
 	sets =[ [[i for i in range(1, N+1)] for i in range(N)] for i in range (N)]
@@ -48,13 +59,10 @@ def generateSudokuConstraints(N, sudoku = None, serialize=False):
 	s1 = [ i for i in range(1, N+1)]
 	set1 = (c_long* len(s1))(*s1)
 	s1 = csolverlb.createSet(solver, c_uint(1), set1, c_uint(N))
-	problem = np.array([[csolverlb.getElementVar(solver,s1) for i in range(N)] for i in range(N)]) if sudoku is None else extractItemInSetOptimization(csolverlb, solver, sudoku, N)
+	problem = np.array([[csolverlb.getElementVar(solver,s1) for i in range(N)] for i in range(N)])# if sudoku is None else extractItemInSetOptimization(csolverlb, solver, sudoku, N)
 	elemConsts = [csolverlb.getElementConst(solver, c_uint(1), i) for i in range(1, N+1)]
 	
-	# Is it a sudoku to solve?
-	if sudoku is not None:
-		replaceWithElemConstOptimization(elemConsts, problem, sudoku)	
-	
+				
 	def valid(cells):
 		for i, ei in enumerate(cells):
 			for j, ej in enumerate(cells):
@@ -72,32 +80,32 @@ def generateSudokuConstraints(N, sudoku = None, serialize=False):
 
 
 	# ensure each cell at least has one value!
-	for i,row in enumerate(problem):
-		for j, elem in enumerate(row):
-			constr = []
-			for econst in elemConsts:
-				s1 = csolverlb.getElementRange(solver, elem)
-				sconst = csolverlb.getElementRange(solver,econst)
-				d = [s1,sconst]
-				domain = (c_void_p *len(d))(*d)
-				equals = csolverlb.createPredicateOperator(solver, c_uint(ps.CompOp.SATC_EQUALS))
-				inp = [elem,econst]
-				inputs = (c_void_p*len(inp))(*inp)
-				constr.append( csolverlb.applyPredicate(solver,equals, inputs, c_uint(2)))
-			b = (c_void_p*len(constr))(*constr)
-			b = csolverlb.applyLogicalOperation(solver, ps.LogicOps.SATC_OR, b, len(constr))
-			csolverlb.addConstraint(solver,b);
+# 	for i,row in enumerate(problem):
+# 		for j, elem in enumerate(row):
+# 			constr = []
+# 			for econst in elemConsts:
+# 				s1 = csolverlb.getElementRange(solver, elem)
+# 				sconst = csolverlb.getElementRange(solver,econst)
+# 				d = [s1,sconst]
+# 				domain = (c_void_p *len(d))(*d)
+# 				equals = csolverlb.createPredicateOperator(solver, c_uint(ps.CompOp.SATC_EQUALS))
+# 				inp = [elem,econst]
+# 				inputs = (c_void_p*len(inp))(*inp)
+# 				constr.append( csolverlb.applyPredicate(solver,equals, inputs, c_uint(2)))
+# 			b = (c_void_p*len(constr))(*constr)
+# 			b = csolverlb.applyLogicalOperation(solver, ps.LogicOps.SATC_OR, b, len(constr))
+# 			csolverlb.addConstraint(solver,b);
 	
 	
 	#ensure each cell at least has one value
-#	for i,row in enumerate(problem):
-#		for j, elem in enumerate(row):
-#			csolverlb.mustHaveValue(solver, elem)
+	for i,row in enumerate(problem):
+		for j, elem in enumerate(row):
+			csolverlb.mustHaveValue(solver, elem)
 
 	# ensure rows and columns have distinct values
         for i in range( N):
-                valid(problem[:,i])
-		valid(problem[i,:])
+        	valid(problem[:,i])
+        	valid(problem[i,:])
 	
 	# ensure each block has distinct values
 	root = int(N**(0.5))
@@ -105,7 +113,14 @@ def generateSudokuConstraints(N, sudoku = None, serialize=False):
         for i in collections:
                 for j in collections:
                         valid([problem[i + k % root, j + k // root] for k in range(N)])
+
 	
+	# Is it a sudoku to solve?
+	if sudoku is not None:
+# 		replaceWithElemConstOptimization(elemConsts, problem, sudoku)
+		constantCellConstraint(csolverlb, solver, elemConsts, problem, sudoku)						
+
+#	csolverlb.printConstraints(solver);	
 	#Serializing the problem before solving it ....
 	if serialize:
 		csolverlb.serialize(solver)
diff --git a/sudoku-csolver/glucose.py b/sudoku-csolver/glucose.py
new file mode 100644
index 00000000..a27ed8c2
--- /dev/null
+++ b/sudoku-csolver/glucose.py
@@ -0,0 +1,63 @@
+
+cnf_in_filename  = 'cnf.in'
+cnf_out_filename = 'cnf.out'
+
+import subprocess
+import re
+
+def in_file_out_file(exe_name):
+    ''' Run a minisat style solver'''
+    def solve(infilename, outfilename):
+        return subprocess.call(
+            [exe_name, infilename, outfilename]
+        )
+    return solve
+
+def in_file_out_pipe(exe_name):
+    ''' Run a precosat style solver'''
+    def solve(infilename, outfilename):
+        with open(outfilename, 'w') as fil:
+            return subprocess.call(
+                [exe_name, infilename],
+                stdout=fil
+            )
+    return solve
+
+#SAT_SOLVE = in_file_out_pipe('./lingeling')
+#SAT_SOLVE = in_file_out_file('./cryptominisat')
+SAT_SOLVE = in_file_out_file('./glucose_static')
+
+
+def print_cnf_file(clauses, fil, maxVar):
+    print >> fil, 'p cnf', maxVar , len(clauses)
+    for (i,clause) in enumerate(clauses):
+        for lit in clause:
+            print >> fil, lit,
+        print >> fil, '0'
+    
+
+def get_SAT_assignments(fil):
+    assignments = []
+    for line in fil:
+        if 'UNSAT' in line.upper():
+            return None
+        for word in line.split():
+            if re.match(r'-?\d+$', word):
+                n = int(word)
+                if n == 0:
+                    return assignments
+                else:
+                    assignments.append(n)
+    return assignments
+
+
+def solve(clauses, maxVar):
+    assignments = []
+    with open(cnf_in_filename, 'w') as fil:
+        print_cnf_file(clauses, fil, maxVar )
+
+    SAT_SOLVE(cnf_in_filename, cnf_out_filename)
+
+    with open(cnf_out_filename, 'r') as fil:
+        assignments = get_SAT_assignments(fil)
+    return assignments
\ No newline at end of file
diff --git a/sudoku-csolver/glucose_static b/sudoku-csolver/glucose_static
new file mode 100755
index 00000000..309030bd
Binary files /dev/null and b/sudoku-csolver/glucose_static differ
diff --git a/sudoku-csolver/parse.sh b/sudoku-csolver/parse.sh
index 09d69d96..a3c5ecea 100755
--- a/sudoku-csolver/parse.sh
+++ b/sudoku-csolver/parse.sh
@@ -28,6 +28,7 @@ while IFS='' read -r line || [[ -n "$line" ]]; do
 	if [[ $line == $SATTIME ]]; then
 		number=$(echo $line|grep -Eo '[+-]?[0-9]+([.][0-9]+)?')
 		row+=","$number
+                timeout=1
 	fi
 
 done < "$1"
diff --git a/sudoku-csolver/solved/36x36.sol b/sudoku-csolver/solved/36x36.sol
index d7a2079e..b5367862 100644
--- a/sudoku-csolver/solved/36x36.sol
+++ b/sudoku-csolver/solved/36x36.sol
@@ -1,36 +1,36 @@
-1.900000000000000000e+01 1.800000000000000000e+01 2.700000000000000000e+01 2.400000000000000000e+01 1.500000000000000000e+01 3.100000000000000000e+01 3.300000000000000000e+01 2.900000000000000000e+01 2.000000000000000000e+00 9.000000000000000000e+00 2.200000000000000000e+01 1.300000000000000000e+01 1.700000000000000000e+01 5.000000000000000000e+00 1.600000000000000000e+01 3.200000000000000000e+01 3.500000000000000000e+01 2.500000000000000000e+01 2.000000000000000000e+01 2.300000000000000000e+01 1.100000000000000000e+01 2.600000000000000000e+01 1.200000000000000000e+01 2.100000000000000000e+01 2.800000000000000000e+01 6.000000000000000000e+00 4.000000000000000000e+00 1.000000000000000000e+00 1.400000000000000000e+01 3.600000000000000000e+01 1.000000000000000000e+01 7.000000000000000000e+00 3.400000000000000000e+01 3.000000000000000000e+01 3.000000000000000000e+00 8.000000000000000000e+00
-6.000000000000000000e+00 4.000000000000000000e+00 5.000000000000000000e+00 3.400000000000000000e+01 1.200000000000000000e+01 1.000000000000000000e+00 3.200000000000000000e+01 2.800000000000000000e+01 2.300000000000000000e+01 8.000000000000000000e+00 7.000000000000000000e+00 3.100000000000000000e+01 3.000000000000000000e+00 3.300000000000000000e+01 2.700000000000000000e+01 2.200000000000000000e+01 1.000000000000000000e+01 3.000000000000000000e+01 2.400000000000000000e+01 1.900000000000000000e+01 1.800000000000000000e+01 1.600000000000000000e+01 1.300000000000000000e+01 9.000000000000000000e+00 3.500000000000000000e+01 1.700000000000000000e+01 2.600000000000000000e+01 1.500000000000000000e+01 2.100000000000000000e+01 2.000000000000000000e+01 3.600000000000000000e+01 2.900000000000000000e+01 2.500000000000000000e+01 1.100000000000000000e+01 1.400000000000000000e+01 2.000000000000000000e+00
-9.000000000000000000e+00 2.200000000000000000e+01 1.100000000000000000e+01 3.000000000000000000e+01 3.300000000000000000e+01 3.200000000000000000e+01 1.000000000000000000e+01 1.400000000000000000e+01 1.800000000000000000e+01 2.100000000000000000e+01 2.600000000000000000e+01 2.000000000000000000e+01 8.000000000000000000e+00 1.200000000000000000e+01 3.600000000000000000e+01 3.100000000000000000e+01 2.400000000000000000e+01 3.400000000000000000e+01 4.000000000000000000e+00 2.000000000000000000e+00 3.000000000000000000e+00 2.900000000000000000e+01 3.500000000000000000e+01 2.800000000000000000e+01 2.700000000000000000e+01 2.500000000000000000e+01 7.000000000000000000e+00 1.300000000000000000e+01 2.300000000000000000e+01 5.000000000000000000e+00 1.900000000000000000e+01 1.500000000000000000e+01 1.700000000000000000e+01 1.000000000000000000e+00 1.600000000000000000e+01 6.000000000000000000e+00
-3.600000000000000000e+01 3.500000000000000000e+01 2.500000000000000000e+01 2.100000000000000000e+01 2.000000000000000000e+01 2.300000000000000000e+01 1.700000000000000000e+01 1.500000000000000000e+01 2.700000000000000000e+01 1.900000000000000000e+01 1.200000000000000000e+01 1.100000000000000000e+01 9.000000000000000000e+00 4.000000000000000000e+00 1.000000000000000000e+00 1.800000000000000000e+01 6.000000000000000000e+00 1.400000000000000000e+01 2.200000000000000000e+01 5.000000000000000000e+00 3.300000000000000000e+01 3.400000000000000000e+01 7.000000000000000000e+00 1.000000000000000000e+01 2.000000000000000000e+00 3.000000000000000000e+01 3.000000000000000000e+00 1.600000000000000000e+01 2.900000000000000000e+01 8.000000000000000000e+00 1.300000000000000000e+01 3.200000000000000000e+01 2.400000000000000000e+01 2.800000000000000000e+01 3.100000000000000000e+01 2.600000000000000000e+01
-2.900000000000000000e+01 2.800000000000000000e+01 2.600000000000000000e+01 1.000000000000000000e+01 3.000000000000000000e+00 1.700000000000000000e+01 6.000000000000000000e+00 4.000000000000000000e+00 3.600000000000000000e+01 1.600000000000000000e+01 3.500000000000000000e+01 5.000000000000000000e+00 2.300000000000000000e+01 2.000000000000000000e+00 1.300000000000000000e+01 1.900000000000000000e+01 2.000000000000000000e+01 7.000000000000000000e+00 8.000000000000000000e+00 2.500000000000000000e+01 1.000000000000000000e+00 3.000000000000000000e+01 1.400000000000000000e+01 1.500000000000000000e+01 1.100000000000000000e+01 2.400000000000000000e+01 3.400000000000000000e+01 9.000000000000000000e+00 3.200000000000000000e+01 3.100000000000000000e+01 2.100000000000000000e+01 2.700000000000000000e+01 3.300000000000000000e+01 1.800000000000000000e+01 1.200000000000000000e+01 2.200000000000000000e+01
-1.600000000000000000e+01 1.300000000000000000e+01 1.400000000000000000e+01 2.000000000000000000e+00 7.000000000000000000e+00 8.000000000000000000e+00 3.400000000000000000e+01 2.400000000000000000e+01 3.000000000000000000e+00 2.500000000000000000e+01 1.000000000000000000e+00 3.000000000000000000e+01 2.800000000000000000e+01 2.100000000000000000e+01 2.900000000000000000e+01 2.600000000000000000e+01 1.100000000000000000e+01 1.500000000000000000e+01 6.000000000000000000e+00 2.700000000000000000e+01 1.700000000000000000e+01 3.600000000000000000e+01 3.100000000000000000e+01 3.200000000000000000e+01 3.300000000000000000e+01 1.000000000000000000e+01 1.800000000000000000e+01 2.200000000000000000e+01 1.900000000000000000e+01 1.200000000000000000e+01 2.000000000000000000e+01 3.500000000000000000e+01 5.000000000000000000e+00 4.000000000000000000e+00 2.300000000000000000e+01 9.000000000000000000e+00
-3.500000000000000000e+01 3.300000000000000000e+01 3.600000000000000000e+01 3.200000000000000000e+01 2.700000000000000000e+01 3.000000000000000000e+01 3.100000000000000000e+01 8.000000000000000000e+00 2.900000000000000000e+01 2.800000000000000000e+01 2.500000000000000000e+01 2.600000000000000000e+01 2.400000000000000000e+01 2.000000000000000000e+01 2.300000000000000000e+01 1.200000000000000000e+01 1.600000000000000000e+01 2.100000000000000000e+01 9.000000000000000000e+00 1.700000000000000000e+01 1.300000000000000000e+01 1.400000000000000000e+01 1.800000000000000000e+01 1.900000000000000000e+01 6.000000000000000000e+00 1.000000000000000000e+00 2.200000000000000000e+01 1.100000000000000000e+01 2.000000000000000000e+00 1.000000000000000000e+01 4.000000000000000000e+00 3.000000000000000000e+00 1.500000000000000000e+01 5.000000000000000000e+00 3.400000000000000000e+01 7.000000000000000000e+00
-1.800000000000000000e+01 3.100000000000000000e+01 1.200000000000000000e+01 7.000000000000000000e+00 2.900000000000000000e+01 2.800000000000000000e+01 3.600000000000000000e+01 3.400000000000000000e+01 3.200000000000000000e+01 2.700000000000000000e+01 3.300000000000000000e+01 2.000000000000000000e+00 1.400000000000000000e+01 1.900000000000000000e+01 3.000000000000000000e+01 9.000000000000000000e+00 2.500000000000000000e+01 1.100000000000000000e+01 1.000000000000000000e+00 2.200000000000000000e+01 1.500000000000000000e+01 2.300000000000000000e+01 2.600000000000000000e+01 5.000000000000000000e+00 4.000000000000000000e+00 3.500000000000000000e+01 1.700000000000000000e+01 2.100000000000000000e+01 2.400000000000000000e+01 3.000000000000000000e+00 8.000000000000000000e+00 2.000000000000000000e+01 6.000000000000000000e+00 1.600000000000000000e+01 1.000000000000000000e+01 1.300000000000000000e+01
-2.600000000000000000e+01 1.900000000000000000e+01 1.300000000000000000e+01 2.500000000000000000e+01 2.400000000000000000e+01 2.200000000000000000e+01 3.500000000000000000e+01 3.000000000000000000e+01 2.000000000000000000e+01 1.800000000000000000e+01 1.700000000000000000e+01 2.100000000000000000e+01 2.900000000000000000e+01 3.400000000000000000e+01 6.000000000000000000e+00 1.000000000000000000e+01 3.200000000000000000e+01 3.100000000000000000e+01 1.100000000000000000e+01 3.300000000000000000e+01 2.800000000000000000e+01 2.700000000000000000e+01 4.000000000000000000e+00 3.000000000000000000e+00 7.000000000000000000e+00 3.600000000000000000e+01 1.600000000000000000e+01 8.000000000000000000e+00 5.000000000000000000e+00 1.500000000000000000e+01 1.000000000000000000e+00 9.000000000000000000e+00 2.300000000000000000e+01 1.200000000000000000e+01 2.000000000000000000e+00 1.400000000000000000e+01
-2.300000000000000000e+01 2.100000000000000000e+01 1.500000000000000000e+01 1.600000000000000000e+01 1.700000000000000000e+01 1.400000000000000000e+01 2.400000000000000000e+01 1.200000000000000000e+01 1.900000000000000000e+01 2.200000000000000000e+01 1.300000000000000000e+01 1.000000000000000000e+01 1.000000000000000000e+00 3.000000000000000000e+00 2.000000000000000000e+00 5.000000000000000000e+00 7.000000000000000000e+00 4.000000000000000000e+00 3.600000000000000000e+01 3.200000000000000000e+01 3.500000000000000000e+01 8.000000000000000000e+00 2.900000000000000000e+01 6.000000000000000000e+00 2.600000000000000000e+01 2.700000000000000000e+01 9.000000000000000000e+00 3.400000000000000000e+01 2.000000000000000000e+01 3.300000000000000000e+01 2.800000000000000000e+01 1.100000000000000000e+01 1.800000000000000000e+01 3.100000000000000000e+01 2.500000000000000000e+01 3.000000000000000000e+01
-2.000000000000000000e+01 1.100000000000000000e+01 1.000000000000000000e+01 9.000000000000000000e+00 5.000000000000000000e+00 2.000000000000000000e+00 4.000000000000000000e+00 1.000000000000000000e+00 1.400000000000000000e+01 6.000000000000000000e+00 3.000000000000000000e+00 1.600000000000000000e+01 2.600000000000000000e+01 1.500000000000000000e+01 8.000000000000000000e+00 3.600000000000000000e+01 3.300000000000000000e+01 2.700000000000000000e+01 3.400000000000000000e+01 1.200000000000000000e+01 3.000000000000000000e+01 7.000000000000000000e+00 2.400000000000000000e+01 3.100000000000000000e+01 3.200000000000000000e+01 1.300000000000000000e+01 2.800000000000000000e+01 2.500000000000000000e+01 1.800000000000000000e+01 2.300000000000000000e+01 2.900000000000000000e+01 2.200000000000000000e+01 3.500000000000000000e+01 1.700000000000000000e+01 2.100000000000000000e+01 1.900000000000000000e+01
-4.000000000000000000e+00 6.000000000000000000e+00 1.000000000000000000e+00 8.000000000000000000e+00 3.400000000000000000e+01 3.000000000000000000e+00 2.300000000000000000e+01 1.100000000000000000e+01 1.500000000000000000e+01 7.000000000000000000e+00 5.000000000000000000e+00 9.000000000000000000e+00 3.500000000000000000e+01 2.800000000000000000e+01 2.200000000000000000e+01 1.700000000000000000e+01 1.800000000000000000e+01 1.300000000000000000e+01 2.500000000000000000e+01 2.100000000000000000e+01 2.000000000000000000e+01 1.000000000000000000e+01 1.600000000000000000e+01 2.000000000000000000e+00 3.100000000000000000e+01 2.900000000000000000e+01 1.900000000000000000e+01 1.400000000000000000e+01 1.200000000000000000e+01 3.000000000000000000e+01 3.200000000000000000e+01 3.600000000000000000e+01 2.700000000000000000e+01 2.600000000000000000e+01 3.300000000000000000e+01 2.400000000000000000e+01
-3.400000000000000000e+01 3.600000000000000000e+01 3.300000000000000000e+01 3.100000000000000000e+01 3.500000000000000000e+01 2.900000000000000000e+01 3.000000000000000000e+01 3.200000000000000000e+01 2.800000000000000000e+01 2.600000000000000000e+01 2.700000000000000000e+01 2.500000000000000000e+01 2.200000000000000000e+01 2.400000000000000000e+01 2.100000000000000000e+01 2.300000000000000000e+01 1.900000000000000000e+01 2.000000000000000000e+01 1.800000000000000000e+01 1.600000000000000000e+01 1.400000000000000000e+01 1.500000000000000000e+01 1.700000000000000000e+01 1.300000000000000000e+01 1.200000000000000000e+01 1.100000000000000000e+01 1.000000000000000000e+01 7.000000000000000000e+00 8.000000000000000000e+00 9.000000000000000000e+00 2.000000000000000000e+00 4.000000000000000000e+00 1.000000000000000000e+00 3.000000000000000000e+00 6.000000000000000000e+00 5.000000000000000000e+00
-3.200000000000000000e+01 3.000000000000000000e+01 2.800000000000000000e+01 2.700000000000000000e+01 2.600000000000000000e+01 2.500000000000000000e+01 2.900000000000000000e+01 3.600000000000000000e+01 3.500000000000000000e+01 3.300000000000000000e+01 3.100000000000000000e+01 3.400000000000000000e+01 1.800000000000000000e+01 1.600000000000000000e+01 1.500000000000000000e+01 1.400000000000000000e+01 1.300000000000000000e+01 6.000000000000000000e+00 2.300000000000000000e+01 2.400000000000000000e+01 2.200000000000000000e+01 2.100000000000000000e+01 2.000000000000000000e+01 1.100000000000000000e+01 1.900000000000000000e+01 4.000000000000000000e+00 5.000000000000000000e+00 3.000000000000000000e+00 1.000000000000000000e+00 2.000000000000000000e+00 1.700000000000000000e+01 8.000000000000000000e+00 7.000000000000000000e+00 1.000000000000000000e+01 9.000000000000000000e+00 1.200000000000000000e+01
-2.400000000000000000e+01 2.300000000000000000e+01 2.200000000000000000e+01 2.000000000000000000e+01 1.900000000000000000e+01 1.800000000000000000e+01 2.100000000000000000e+01 1.700000000000000000e+01 1.600000000000000000e+01 1.500000000000000000e+01 1.400000000000000000e+01 1.200000000000000000e+01 1.000000000000000000e+01 3.200000000000000000e+01 9.000000000000000000e+00 3.000000000000000000e+01 8.000000000000000000e+00 5.000000000000000000e+00 7.000000000000000000e+00 6.000000000000000000e+00 4.000000000000000000e+00 3.000000000000000000e+00 2.000000000000000000e+00 1.000000000000000000e+00 2.500000000000000000e+01 3.300000000000000000e+01 3.100000000000000000e+01 2.700000000000000000e+01 3.500000000000000000e+01 3.400000000000000000e+01 2.600000000000000000e+01 2.800000000000000000e+01 3.600000000000000000e+01 1.300000000000000000e+01 2.900000000000000000e+01 1.100000000000000000e+01
-2.100000000000000000e+01 1.700000000000000000e+01 1.600000000000000000e+01 1.500000000000000000e+01 1.400000000000000000e+01 1.300000000000000000e+01 2.200000000000000000e+01 2.300000000000000000e+01 1.100000000000000000e+01 2.000000000000000000e+01 1.900000000000000000e+01 1.800000000000000000e+01 7.000000000000000000e+00 1.000000000000000000e+00 4.000000000000000000e+00 3.000000000000000000e+00 2.000000000000000000e+00 1.200000000000000000e+01 5.000000000000000000e+00 3.100000000000000000e+01 1.000000000000000000e+01 9.000000000000000000e+00 3.400000000000000000e+01 8.000000000000000000e+00 2.900000000000000000e+01 3.200000000000000000e+01 3.600000000000000000e+01 6.000000000000000000e+00 2.600000000000000000e+01 2.800000000000000000e+01 3.500000000000000000e+01 2.400000000000000000e+01 3.000000000000000000e+01 3.300000000000000000e+01 2.700000000000000000e+01 2.500000000000000000e+01
-1.200000000000000000e+01 1.000000000000000000e+01 9.000000000000000000e+00 1.100000000000000000e+01 8.000000000000000000e+00 7.000000000000000000e+00 5.000000000000000000e+00 6.000000000000000000e+00 4.000000000000000000e+00 3.000000000000000000e+00 2.000000000000000000e+00 1.000000000000000000e+00 3.400000000000000000e+01 3.100000000000000000e+01 2.500000000000000000e+01 3.300000000000000000e+01 3.600000000000000000e+01 3.500000000000000000e+01 2.900000000000000000e+01 3.000000000000000000e+01 3.200000000000000000e+01 2.800000000000000000e+01 2.700000000000000000e+01 2.600000000000000000e+01 1.300000000000000000e+01 2.200000000000000000e+01 2.000000000000000000e+01 2.400000000000000000e+01 1.700000000000000000e+01 1.400000000000000000e+01 1.600000000000000000e+01 1.900000000000000000e+01 2.100000000000000000e+01 1.500000000000000000e+01 1.800000000000000000e+01 2.300000000000000000e+01
-3.000000000000000000e+00 1.000000000000000000e+00 2.000000000000000000e+00 4.000000000000000000e+00 6.000000000000000000e+00 5.000000000000000000e+00 1.300000000000000000e+01 1.000000000000000000e+01 9.000000000000000000e+00 2.400000000000000000e+01 8.000000000000000000e+00 7.000000000000000000e+00 2.700000000000000000e+01 2.600000000000000000e+01 2.800000000000000000e+01 1.100000000000000000e+01 1.700000000000000000e+01 2.900000000000000000e+01 3.500000000000000000e+01 3.600000000000000000e+01 2.500000000000000000e+01 3.300000000000000000e+01 1.900000000000000000e+01 1.200000000000000000e+01 3.000000000000000000e+01 2.300000000000000000e+01 2.100000000000000000e+01 1.800000000000000000e+01 1.500000000000000000e+01 1.600000000000000000e+01 3.400000000000000000e+01 3.100000000000000000e+01 3.200000000000000000e+01 1.400000000000000000e+01 2.200000000000000000e+01 2.000000000000000000e+01
-3.300000000000000000e+01 3.400000000000000000e+01 3.500000000000000000e+01 3.600000000000000000e+01 3.200000000000000000e+01 2.700000000000000000e+01 2.800000000000000000e+01 3.100000000000000000e+01 3.000000000000000000e+01 2.900000000000000000e+01 2.400000000000000000e+01 2.300000000000000000e+01 2.500000000000000000e+01 2.200000000000000000e+01 2.600000000000000000e+01 2.100000000000000000e+01 1.500000000000000000e+01 1.700000000000000000e+01 1.900000000000000000e+01 2.000000000000000000e+01 1.600000000000000000e+01 1.800000000000000000e+01 1.100000000000000000e+01 1.400000000000000000e+01 1.000000000000000000e+01 1.200000000000000000e+01 1.300000000000000000e+01 5.000000000000000000e+00 9.000000000000000000e+00 7.000000000000000000e+00 6.000000000000000000e+00 2.000000000000000000e+00 4.000000000000000000e+00 8.000000000000000000e+00 1.000000000000000000e+00 3.000000000000000000e+00
-3.100000000000000000e+01 2.900000000000000000e+01 3.000000000000000000e+01 2.800000000000000000e+01 2.500000000000000000e+01 2.600000000000000000e+01 2.700000000000000000e+01 3.500000000000000000e+01 3.400000000000000000e+01 3.600000000000000000e+01 3.200000000000000000e+01 3.300000000000000000e+01 2.000000000000000000e+01 2.300000000000000000e+01 2.400000000000000000e+01 1.600000000000000000e+01 1.400000000000000000e+01 1.900000000000000000e+01 2.100000000000000000e+01 1.500000000000000000e+01 9.000000000000000000e+00 1.200000000000000000e+01 1.000000000000000000e+01 2.200000000000000000e+01 1.000000000000000000e+00 2.000000000000000000e+00 8.000000000000000000e+00 4.000000000000000000e+00 3.000000000000000000e+00 6.000000000000000000e+00 5.000000000000000000e+00 1.800000000000000000e+01 1.100000000000000000e+01 7.000000000000000000e+00 1.300000000000000000e+01 1.700000000000000000e+01
-1.500000000000000000e+01 2.400000000000000000e+01 2.300000000000000000e+01 2.200000000000000000e+01 1.800000000000000000e+01 2.100000000000000000e+01 2.600000000000000000e+01 2.500000000000000000e+01 1.700000000000000000e+01 1.400000000000000000e+01 2.000000000000000000e+01 1.900000000000000000e+01 1.300000000000000000e+01 3.600000000000000000e+01 3.300000000000000000e+01 7.000000000000000000e+00 5.000000000000000000e+00 8.000000000000000000e+00 2.000000000000000000e+00 4.000000000000000000e+00 6.000000000000000000e+00 1.000000000000000000e+00 3.000000000000000000e+00 2.900000000000000000e+01 3.400000000000000000e+01 3.100000000000000000e+01 3.500000000000000000e+01 3.200000000000000000e+01 2.700000000000000000e+01 1.100000000000000000e+01 1.200000000000000000e+01 1.000000000000000000e+01 2.800000000000000000e+01 9.000000000000000000e+00 3.000000000000000000e+01 1.600000000000000000e+01
-1.700000000000000000e+01 2.000000000000000000e+01 1.900000000000000000e+01 1.200000000000000000e+01 1.600000000000000000e+01 1.100000000000000000e+01 1.800000000000000000e+01 2.200000000000000000e+01 7.000000000000000000e+00 2.000000000000000000e+00 2.100000000000000000e+01 1.500000000000000000e+01 6.000000000000000000e+00 1.000000000000000000e+01 3.000000000000000000e+00 1.000000000000000000e+00 4.000000000000000000e+00 9.000000000000000000e+00 3.100000000000000000e+01 1.300000000000000000e+01 8.000000000000000000e+00 5.000000000000000000e+00 2.800000000000000000e+01 2.400000000000000000e+01 2.300000000000000000e+01 2.600000000000000000e+01 3.000000000000000000e+01 3.300000000000000000e+01 3.600000000000000000e+01 2.500000000000000000e+01 2.700000000000000000e+01 3.400000000000000000e+01 1.400000000000000000e+01 2.900000000000000000e+01 3.200000000000000000e+01 3.500000000000000000e+01
-1.400000000000000000e+01 3.000000000000000000e+00 8.000000000000000000e+00 1.000000000000000000e+00 1.300000000000000000e+01 1.000000000000000000e+01 1.200000000000000000e+01 9.000000000000000000e+00 6.000000000000000000e+00 5.000000000000000000e+00 1.600000000000000000e+01 4.000000000000000000e+00 3.200000000000000000e+01 3.000000000000000000e+01 1.100000000000000000e+01 2.000000000000000000e+00 3.100000000000000000e+01 2.800000000000000000e+01 2.700000000000000000e+01 7.000000000000000000e+00 3.400000000000000000e+01 1.700000000000000000e+01 2.500000000000000000e+01 3.500000000000000000e+01 2.000000000000000000e+01 1.500000000000000000e+01 2.900000000000000000e+01 1.900000000000000000e+01 2.200000000000000000e+01 1.800000000000000000e+01 2.400000000000000000e+01 2.100000000000000000e+01 2.600000000000000000e+01 2.300000000000000000e+01 3.600000000000000000e+01 3.300000000000000000e+01
-7.000000000000000000e+00 9.000000000000000000e+00 6.000000000000000000e+00 5.000000000000000000e+00 2.000000000000000000e+00 4.000000000000000000e+00 3.000000000000000000e+00 1.300000000000000000e+01 1.000000000000000000e+00 1.100000000000000000e+01 1.000000000000000000e+01 8.000000000000000000e+00 1.200000000000000000e+01 2.700000000000000000e+01 3.500000000000000000e+01 3.400000000000000000e+01 2.900000000000000000e+01 1.800000000000000000e+01 3.300000000000000000e+01 2.600000000000000000e+01 3.600000000000000000e+01 3.200000000000000000e+01 3.000000000000000000e+01 2.300000000000000000e+01 2.400000000000000000e+01 2.800000000000000000e+01 1.400000000000000000e+01 1.700000000000000000e+01 1.600000000000000000e+01 2.100000000000000000e+01 3.100000000000000000e+01 2.500000000000000000e+01 2.200000000000000000e+01 2.000000000000000000e+01 1.900000000000000000e+01 1.500000000000000000e+01
-3.000000000000000000e+01 2.000000000000000000e+00 3.400000000000000000e+01 3.000000000000000000e+00 1.000000000000000000e+00 9.000000000000000000e+00 8.000000000000000000e+00 3.300000000000000000e+01 3.100000000000000000e+01 1.700000000000000000e+01 3.600000000000000000e+01 3.500000000000000000e+01 2.100000000000000000e+01 2.900000000000000000e+01 3.200000000000000000e+01 2.800000000000000000e+01 2.700000000000000000e+01 2.600000000000000000e+01 1.600000000000000000e+01 1.800000000000000000e+01 2.400000000000000000e+01 2.500000000000000000e+01 2.300000000000000000e+01 2.000000000000000000e+01 5.000000000000000000e+00 1.900000000000000000e+01 1.500000000000000000e+01 1.200000000000000000e+01 1.300000000000000000e+01 2.200000000000000000e+01 7.000000000000000000e+00 1.400000000000000000e+01 1.000000000000000000e+01 6.000000000000000000e+00 1.100000000000000000e+01 4.000000000000000000e+00
-2.800000000000000000e+01 3.200000000000000000e+01 3.100000000000000000e+01 3.500000000000000000e+01 3.600000000000000000e+01 3.300000000000000000e+01 2.500000000000000000e+01 2.700000000000000000e+01 2.600000000000000000e+01 3.400000000000000000e+01 3.000000000000000000e+01 2.900000000000000000e+01 1.900000000000000000e+01 1.800000000000000000e+01 2.000000000000000000e+01 2.400000000000000000e+01 2.300000000000000000e+01 2.200000000000000000e+01 1.700000000000000000e+01 1.400000000000000000e+01 2.100000000000000000e+01 1.300000000000000000e+01 1.500000000000000000e+01 7.000000000000000000e+00 1.600000000000000000e+01 9.000000000000000000e+00 1.100000000000000000e+01 1.000000000000000000e+01 6.000000000000000000e+00 4.000000000000000000e+00 3.000000000000000000e+00 1.200000000000000000e+01 8.000000000000000000e+00 2.000000000000000000e+00 5.000000000000000000e+00 1.000000000000000000e+00
-2.700000000000000000e+01 5.000000000000000000e+00 7.000000000000000000e+00 6.000000000000000000e+00 2.300000000000000000e+01 2.400000000000000000e+01 2.000000000000000000e+00 2.100000000000000000e+01 2.200000000000000000e+01 3.200000000000000000e+01 2.800000000000000000e+01 1.400000000000000000e+01 3.600000000000000000e+01 3.500000000000000000e+01 3.400000000000000000e+01 2.500000000000000000e+01 3.000000000000000000e+00 3.300000000000000000e+01 3.000000000000000000e+01 1.000000000000000000e+01 1.200000000000000000e+01 1.100000000000000000e+01 9.000000000000000000e+00 4.000000000000000000e+00 1.700000000000000000e+01 8.000000000000000000e+00 1.000000000000000000e+00 2.900000000000000000e+01 3.100000000000000000e+01 2.600000000000000000e+01 1.500000000000000000e+01 1.600000000000000000e+01 1.300000000000000000e+01 1.900000000000000000e+01 2.000000000000000000e+01 1.800000000000000000e+01
-2.500000000000000000e+01 1.600000000000000000e+01 2.900000000000000000e+01 1.900000000000000000e+01 4.000000000000000000e+00 2.000000000000000000e+01 1.500000000000000000e+01 1.800000000000000000e+01 1.300000000000000000e+01 1.200000000000000000e+01 2.300000000000000000e+01 3.000000000000000000e+00 3.100000000000000000e+01 1.100000000000000000e+01 1.400000000000000000e+01 6.000000000000000000e+00 3.000000000000000000e+01 1.000000000000000000e+01 2.600000000000000000e+01 1.000000000000000000e+00 5.000000000000000000e+00 2.200000000000000000e+01 8.000000000000000000e+00 2.700000000000000000e+01 2.100000000000000000e+01 7.000000000000000000e+00 3.200000000000000000e+01 2.000000000000000000e+00 2.800000000000000000e+01 2.400000000000000000e+01 3.300000000000000000e+01 1.700000000000000000e+01 9.000000000000000000e+00 3.600000000000000000e+01 3.500000000000000000e+01 3.400000000000000000e+01
-8.000000000000000000e+00 2.600000000000000000e+01 1.800000000000000000e+01 1.700000000000000000e+01 2.200000000000000000e+01 1.200000000000000000e+01 7.000000000000000000e+00 2.000000000000000000e+01 1.000000000000000000e+01 4.000000000000000000e+00 1.100000000000000000e+01 2.400000000000000000e+01 1.500000000000000000e+01 9.000000000000000000e+00 5.000000000000000000e+00 1.300000000000000000e+01 1.000000000000000000e+00 1.600000000000000000e+01 3.200000000000000000e+01 2.900000000000000000e+01 2.000000000000000000e+00 1.900000000000000000e+01 6.000000000000000000e+00 3.400000000000000000e+01 1.400000000000000000e+01 3.000000000000000000e+00 2.500000000000000000e+01 3.600000000000000000e+01 3.300000000000000000e+01 3.500000000000000000e+01 3.000000000000000000e+01 2.300000000000000000e+01 3.100000000000000000e+01 2.700000000000000000e+01 2.800000000000000000e+01 2.100000000000000000e+01
-1.100000000000000000e+01 1.400000000000000000e+01 2.100000000000000000e+01 1.300000000000000000e+01 1.000000000000000000e+01 1.500000000000000000e+01 1.600000000000000000e+01 1.900000000000000000e+01 5.000000000000000000e+00 1.000000000000000000e+00 9.000000000000000000e+00 6.000000000000000000e+00 4.000000000000000000e+00 1.700000000000000000e+01 7.000000000000000000e+00 8.000000000000000000e+00 1.200000000000000000e+01 2.000000000000000000e+00 2.800000000000000000e+01 3.000000000000000000e+00 3.100000000000000000e+01 3.500000000000000000e+01 3.300000000000000000e+01 3.600000000000000000e+01 1.800000000000000000e+01 3.400000000000000000e+01 2.300000000000000000e+01 2.000000000000000000e+01 3.000000000000000000e+01 2.700000000000000000e+01 2.500000000000000000e+01 2.600000000000000000e+01 2.900000000000000000e+01 2.200000000000000000e+01 2.400000000000000000e+01 3.200000000000000000e+01
-2.200000000000000000e+01 2.700000000000000000e+01 3.200000000000000000e+01 3.300000000000000000e+01 3.100000000000000000e+01 3.600000000000000000e+01 2.000000000000000000e+01 2.600000000000000000e+01 2.500000000000000000e+01 3.500000000000000000e+01 3.400000000000000000e+01 2.800000000000000000e+01 3.000000000000000000e+01 1.400000000000000000e+01 1.900000000000000000e+01 2.900000000000000000e+01 2.100000000000000000e+01 3.000000000000000000e+00 1.500000000000000000e+01 1.100000000000000000e+01 7.000000000000000000e+00 6.000000000000000000e+00 5.000000000000000000e+00 1.800000000000000000e+01 8.000000000000000000e+00 1.600000000000000000e+01 1.200000000000000000e+01 2.300000000000000000e+01 4.000000000000000000e+00 1.300000000000000000e+01 9.000000000000000000e+00 1.000000000000000000e+00 2.000000000000000000e+00 2.400000000000000000e+01 1.700000000000000000e+01 1.000000000000000000e+01
-1.300000000000000000e+01 2.500000000000000000e+01 2.400000000000000000e+01 2.900000000000000000e+01 3.000000000000000000e+01 3.500000000000000000e+01 1.900000000000000000e+01 1.600000000000000000e+01 3.300000000000000000e+01 3.100000000000000000e+01 1.800000000000000000e+01 3.600000000000000000e+01 1.100000000000000000e+01 8.000000000000000000e+00 1.200000000000000000e+01 2.700000000000000000e+01 3.400000000000000000e+01 3.200000000000000000e+01 1.000000000000000000e+01 9.000000000000000000e+00 2.300000000000000000e+01 2.000000000000000000e+01 2.200000000000000000e+01 1.700000000000000000e+01 1.500000000000000000e+01 5.000000000000000000e+00 2.000000000000000000e+00 2.600000000000000000e+01 7.000000000000000000e+00 1.000000000000000000e+00 1.400000000000000000e+01 6.000000000000000000e+00 3.000000000000000000e+00 2.100000000000000000e+01 4.000000000000000000e+00 2.800000000000000000e+01
-1.000000000000000000e+01 1.500000000000000000e+01 2.000000000000000000e+01 2.600000000000000000e+01 2.800000000000000000e+01 3.400000000000000000e+01 1.400000000000000000e+01 7.000000000000000000e+00 2.400000000000000000e+01 3.000000000000000000e+01 2.900000000000000000e+01 3.200000000000000000e+01 3.300000000000000000e+01 1.300000000000000000e+01 1.800000000000000000e+01 4.000000000000000000e+00 2.200000000000000000e+01 3.600000000000000000e+01 3.000000000000000000e+00 3.500000000000000000e+01 1.900000000000000000e+01 2.000000000000000000e+00 1.000000000000000000e+00 1.600000000000000000e+01 9.000000000000000000e+00 2.100000000000000000e+01 6.000000000000000000e+00 3.100000000000000000e+01 1.100000000000000000e+01 1.700000000000000000e+01 2.300000000000000000e+01 5.000000000000000000e+00 1.200000000000000000e+01 2.500000000000000000e+01 8.000000000000000000e+00 2.700000000000000000e+01
-5.000000000000000000e+00 1.200000000000000000e+01 1.700000000000000000e+01 2.300000000000000000e+01 2.100000000000000000e+01 1.900000000000000000e+01 1.100000000000000000e+01 3.000000000000000000e+00 8.000000000000000000e+00 1.300000000000000000e+01 1.500000000000000000e+01 2.700000000000000000e+01 2.000000000000000000e+00 6.000000000000000000e+00 1.000000000000000000e+01 3.500000000000000000e+01 9.000000000000000000e+00 1.000000000000000000e+00 1.400000000000000000e+01 2.800000000000000000e+01 2.600000000000000000e+01 4.000000000000000000e+00 3.600000000000000000e+01 2.500000000000000000e+01 2.200000000000000000e+01 2.000000000000000000e+01 2.400000000000000000e+01 3.000000000000000000e+01 3.400000000000000000e+01 2.900000000000000000e+01 1.800000000000000000e+01 3.300000000000000000e+01 1.600000000000000000e+01 3.200000000000000000e+01 7.000000000000000000e+00 3.100000000000000000e+01
-2.000000000000000000e+00 7.000000000000000000e+00 3.000000000000000000e+00 1.800000000000000000e+01 9.000000000000000000e+00 6.000000000000000000e+00 1.000000000000000000e+00 5.000000000000000000e+00 2.100000000000000000e+01 2.300000000000000000e+01 4.000000000000000000e+00 2.200000000000000000e+01 1.600000000000000000e+01 2.500000000000000000e+01 1.700000000000000000e+01 1.500000000000000000e+01 2.800000000000000000e+01 2.400000000000000000e+01 1.200000000000000000e+01 8.000000000000000000e+00 2.700000000000000000e+01 3.100000000000000000e+01 3.200000000000000000e+01 3.000000000000000000e+01 3.600000000000000000e+01 1.400000000000000000e+01 3.300000000000000000e+01 3.500000000000000000e+01 1.000000000000000000e+01 1.900000000000000000e+01 1.100000000000000000e+01 1.300000000000000000e+01 2.000000000000000000e+01 3.400000000000000000e+01 2.600000000000000000e+01 2.900000000000000000e+01
-1.000000000000000000e+00 8.000000000000000000e+00 4.000000000000000000e+00 1.400000000000000000e+01 1.100000000000000000e+01 1.600000000000000000e+01 9.000000000000000000e+00 2.000000000000000000e+00 1.200000000000000000e+01 1.000000000000000000e+01 6.000000000000000000e+00 1.700000000000000000e+01 5.000000000000000000e+00 7.000000000000000000e+00 3.100000000000000000e+01 2.000000000000000000e+01 2.600000000000000000e+01 2.300000000000000000e+01 1.300000000000000000e+01 3.400000000000000000e+01 2.900000000000000000e+01 2.400000000000000000e+01 2.100000000000000000e+01 3.300000000000000000e+01 3.000000000000000000e+00 1.800000000000000000e+01 2.700000000000000000e+01 2.800000000000000000e+01 2.500000000000000000e+01 3.200000000000000000e+01 2.200000000000000000e+01 3.000000000000000000e+01 1.900000000000000000e+01 3.500000000000000000e+01 1.500000000000000000e+01 3.600000000000000000e+01
+5.000000000000000000e+00 2.700000000000000000e+01 6.000000000000000000e+00 2.000000000000000000e+00 2.100000000000000000e+01 2.200000000000000000e+01 1.900000000000000000e+01 1.400000000000000000e+01 2.900000000000000000e+01 3.200000000000000000e+01 1.100000000000000000e+01 1.500000000000000000e+01 1.700000000000000000e+01 2.500000000000000000e+01 3.000000000000000000e+00 8.000000000000000000e+00 3.300000000000000000e+01 9.000000000000000000e+00 2.400000000000000000e+01 1.600000000000000000e+01 2.800000000000000000e+01 2.000000000000000000e+01 1.000000000000000000e+01 3.600000000000000000e+01 3.500000000000000000e+01 3.000000000000000000e+01 1.200000000000000000e+01 3.100000000000000000e+01 2.300000000000000000e+01 4.000000000000000000e+00 7.000000000000000000e+00 1.000000000000000000e+00 1.800000000000000000e+01 2.600000000000000000e+01 1.300000000000000000e+01 3.400000000000000000e+01
+9.000000000000000000e+00 2.900000000000000000e+01 3.400000000000000000e+01 1.300000000000000000e+01 3.600000000000000000e+01 1.500000000000000000e+01 2.000000000000000000e+01 2.800000000000000000e+01 3.000000000000000000e+00 3.300000000000000000e+01 6.000000000000000000e+00 1.000000000000000000e+01 3.100000000000000000e+01 4.000000000000000000e+00 3.200000000000000000e+01 1.100000000000000000e+01 2.700000000000000000e+01 2.300000000000000000e+01 5.000000000000000000e+00 1.900000000000000000e+01 7.000000000000000000e+00 2.000000000000000000e+00 2.600000000000000000e+01 2.500000000000000000e+01 2.400000000000000000e+01 1.600000000000000000e+01 1.000000000000000000e+00 2.100000000000000000e+01 1.800000000000000000e+01 1.400000000000000000e+01 1.700000000000000000e+01 2.200000000000000000e+01 3.000000000000000000e+01 1.200000000000000000e+01 8.000000000000000000e+00 3.500000000000000000e+01
+3.100000000000000000e+01 4.000000000000000000e+00 2.000000000000000000e+01 1.000000000000000000e+01 2.600000000000000000e+01 3.200000000000000000e+01 1.700000000000000000e+01 2.400000000000000000e+01 1.000000000000000000e+00 1.300000000000000000e+01 3.600000000000000000e+01 2.200000000000000000e+01 1.800000000000000000e+01 2.000000000000000000e+00 1.200000000000000000e+01 3.000000000000000000e+01 1.600000000000000000e+01 2.900000000000000000e+01 3.500000000000000000e+01 3.400000000000000000e+01 3.300000000000000000e+01 2.100000000000000000e+01 8.000000000000000000e+00 1.500000000000000000e+01 7.000000000000000000e+00 6.000000000000000000e+00 9.000000000000000000e+00 3.000000000000000000e+00 2.700000000000000000e+01 1.100000000000000000e+01 2.500000000000000000e+01 1.900000000000000000e+01 2.300000000000000000e+01 5.000000000000000000e+00 1.400000000000000000e+01 2.800000000000000000e+01
+1.400000000000000000e+01 3.300000000000000000e+01 7.000000000000000000e+00 2.400000000000000000e+01 1.700000000000000000e+01 1.100000000000000000e+01 9.000000000000000000e+00 1.800000000000000000e+01 1.600000000000000000e+01 8.000000000000000000e+00 5.000000000000000000e+00 1.200000000000000000e+01 2.800000000000000000e+01 2.100000000000000000e+01 3.500000000000000000e+01 3.400000000000000000e+01 2.200000000000000000e+01 1.900000000000000000e+01 2.700000000000000000e+01 4.000000000000000000e+00 3.100000000000000000e+01 3.000000000000000000e+01 1.000000000000000000e+00 2.300000000000000000e+01 3.600000000000000000e+01 2.500000000000000000e+01 2.600000000000000000e+01 2.900000000000000000e+01 1.300000000000000000e+01 3.200000000000000000e+01 6.000000000000000000e+00 2.000000000000000000e+01 1.500000000000000000e+01 1.000000000000000000e+01 3.000000000000000000e+00 2.000000000000000000e+00
+3.500000000000000000e+01 2.500000000000000000e+01 3.000000000000000000e+01 8.000000000000000000e+00 1.200000000000000000e+01 2.800000000000000000e+01 2.000000000000000000e+00 2.300000000000000000e+01 2.100000000000000000e+01 4.000000000000000000e+00 3.400000000000000000e+01 3.100000000000000000e+01 7.000000000000000000e+00 2.600000000000000000e+01 1.000000000000000000e+00 5.000000000000000000e+00 1.300000000000000000e+01 6.000000000000000000e+00 1.800000000000000000e+01 2.900000000000000000e+01 1.700000000000000000e+01 3.000000000000000000e+00 1.100000000000000000e+01 1.400000000000000000e+01 2.200000000000000000e+01 3.300000000000000000e+01 1.900000000000000000e+01 2.000000000000000000e+01 1.000000000000000000e+01 1.500000000000000000e+01 2.700000000000000000e+01 9.000000000000000000e+00 1.600000000000000000e+01 2.400000000000000000e+01 3.200000000000000000e+01 3.600000000000000000e+01
+1.900000000000000000e+01 2.300000000000000000e+01 3.000000000000000000e+00 1.800000000000000000e+01 1.000000000000000000e+00 1.600000000000000000e+01 3.000000000000000000e+01 2.500000000000000000e+01 2.700000000000000000e+01 2.600000000000000000e+01 3.500000000000000000e+01 7.000000000000000000e+00 1.500000000000000000e+01 1.400000000000000000e+01 2.400000000000000000e+01 1.000000000000000000e+01 3.600000000000000000e+01 2.000000000000000000e+01 2.200000000000000000e+01 9.000000000000000000e+00 1.300000000000000000e+01 3.200000000000000000e+01 1.200000000000000000e+01 6.000000000000000000e+00 2.000000000000000000e+00 2.800000000000000000e+01 3.400000000000000000e+01 8.000000000000000000e+00 5.000000000000000000e+00 1.700000000000000000e+01 2.900000000000000000e+01 2.100000000000000000e+01 3.100000000000000000e+01 3.300000000000000000e+01 1.100000000000000000e+01 4.000000000000000000e+00
+1.100000000000000000e+01 3.100000000000000000e+01 1.700000000000000000e+01 2.500000000000000000e+01 2.800000000000000000e+01 8.000000000000000000e+00 3.600000000000000000e+01 2.000000000000000000e+01 1.300000000000000000e+01 2.100000000000000000e+01 3.300000000000000000e+01 5.000000000000000000e+00 1.600000000000000000e+01 3.000000000000000000e+00 3.400000000000000000e+01 2.600000000000000000e+01 7.000000000000000000e+00 1.500000000000000000e+01 2.000000000000000000e+00 6.000000000000000000e+00 1.400000000000000000e+01 2.700000000000000000e+01 2.400000000000000000e+01 1.900000000000000000e+01 1.000000000000000000e+00 3.500000000000000000e+01 3.000000000000000000e+01 1.000000000000000000e+01 2.200000000000000000e+01 2.900000000000000000e+01 3.200000000000000000e+01 1.800000000000000000e+01 1.200000000000000000e+01 9.000000000000000000e+00 4.000000000000000000e+00 2.300000000000000000e+01
+2.700000000000000000e+01 2.100000000000000000e+01 4.000000000000000000e+00 2.600000000000000000e+01 2.000000000000000000e+00 7.000000000000000000e+00 1.400000000000000000e+01 1.200000000000000000e+01 3.100000000000000000e+01 1.000000000000000000e+01 3.000000000000000000e+01 1.700000000000000000e+01 2.400000000000000000e+01 2.800000000000000000e+01 9.000000000000000000e+00 1.800000000000000000e+01 1.900000000000000000e+01 1.000000000000000000e+00 2.000000000000000000e+01 3.200000000000000000e+01 2.900000000000000000e+01 5.000000000000000000e+00 3.300000000000000000e+01 3.000000000000000000e+00 2.300000000000000000e+01 3.400000000000000000e+01 6.000000000000000000e+00 2.500000000000000000e+01 1.600000000000000000e+01 3.600000000000000000e+01 1.500000000000000000e+01 3.500000000000000000e+01 1.100000000000000000e+01 8.000000000000000000e+00 2.200000000000000000e+01 1.300000000000000000e+01
+2.300000000000000000e+01 1.800000000000000000e+01 2.400000000000000000e+01 1.900000000000000000e+01 3.500000000000000000e+01 1.000000000000000000e+00 2.200000000000000000e+01 8.000000000000000000e+00 3.400000000000000000e+01 2.900000000000000000e+01 3.200000000000000000e+01 3.000000000000000000e+00 2.000000000000000000e+01 1.100000000000000000e+01 3.300000000000000000e+01 1.200000000000000000e+01 2.500000000000000000e+01 1.000000000000000000e+01 3.000000000000000000e+01 2.800000000000000000e+01 1.500000000000000000e+01 4.000000000000000000e+00 1.600000000000000000e+01 9.000000000000000000e+00 1.300000000000000000e+01 2.700000000000000000e+01 1.700000000000000000e+01 5.000000000000000000e+00 2.100000000000000000e+01 7.000000000000000000e+00 3.600000000000000000e+01 1.400000000000000000e+01 2.000000000000000000e+00 6.000000000000000000e+00 3.100000000000000000e+01 2.600000000000000000e+01
+3.200000000000000000e+01 1.200000000000000000e+01 1.000000000000000000e+01 3.600000000000000000e+01 3.300000000000000000e+01 5.000000000000000000e+00 6.000000000000000000e+00 1.900000000000000000e+01 2.800000000000000000e+01 2.300000000000000000e+01 2.700000000000000000e+01 2.500000000000000000e+01 3.500000000000000000e+01 3.000000000000000000e+01 4.000000000000000000e+00 2.100000000000000000e+01 1.400000000000000000e+01 2.200000000000000000e+01 2.600000000000000000e+01 1.000000000000000000e+00 3.400000000000000000e+01 1.300000000000000000e+01 1.800000000000000000e+01 3.100000000000000000e+01 8.000000000000000000e+00 2.000000000000000000e+00 1.100000000000000000e+01 9.000000000000000000e+00 1.500000000000000000e+01 3.000000000000000000e+00 2.000000000000000000e+01 2.400000000000000000e+01 7.000000000000000000e+00 1.600000000000000000e+01 2.900000000000000000e+01 1.700000000000000000e+01
+1.500000000000000000e+01 9.000000000000000000e+00 2.900000000000000000e+01 2.000000000000000000e+01 2.200000000000000000e+01 1.300000000000000000e+01 1.600000000000000000e+01 2.000000000000000000e+00 1.800000000000000000e+01 1.100000000000000000e+01 2.600000000000000000e+01 3.500000000000000000e+01 6.000000000000000000e+00 2.700000000000000000e+01 5.000000000000000000e+00 3.100000000000000000e+01 2.300000000000000000e+01 1.700000000000000000e+01 1.000000000000000000e+01 7.000000000000000000e+00 2.100000000000000000e+01 3.600000000000000000e+01 2.500000000000000000e+01 8.000000000000000000e+00 4.000000000000000000e+00 2.400000000000000000e+01 1.400000000000000000e+01 3.200000000000000000e+01 1.200000000000000000e+01 1.900000000000000000e+01 1.000000000000000000e+00 3.300000000000000000e+01 2.800000000000000000e+01 3.000000000000000000e+00 3.400000000000000000e+01 3.000000000000000000e+01
+3.400000000000000000e+01 3.000000000000000000e+01 1.400000000000000000e+01 3.000000000000000000e+00 1.600000000000000000e+01 6.000000000000000000e+00 4.000000000000000000e+00 1.500000000000000000e+01 9.000000000000000000e+00 7.000000000000000000e+00 2.400000000000000000e+01 1.000000000000000000e+00 8.000000000000000000e+00 3.600000000000000000e+01 1.300000000000000000e+01 2.900000000000000000e+01 2.000000000000000000e+00 3.200000000000000000e+01 1.700000000000000000e+01 2.300000000000000000e+01 1.200000000000000000e+01 1.100000000000000000e+01 2.200000000000000000e+01 3.500000000000000000e+01 2.800000000000000000e+01 3.100000000000000000e+01 1.800000000000000000e+01 2.600000000000000000e+01 3.300000000000000000e+01 2.000000000000000000e+01 1.000000000000000000e+01 2.500000000000000000e+01 5.000000000000000000e+00 2.100000000000000000e+01 2.700000000000000000e+01 1.900000000000000000e+01
+3.000000000000000000e+01 1.900000000000000000e+01 2.200000000000000000e+01 1.200000000000000000e+01 2.300000000000000000e+01 2.100000000000000000e+01 2.400000000000000000e+01 1.000000000000000000e+00 1.500000000000000000e+01 2.000000000000000000e+01 1.800000000000000000e+01 3.200000000000000000e+01 1.100000000000000000e+01 8.000000000000000000e+00 2.600000000000000000e+01 1.600000000000000000e+01 1.700000000000000000e+01 3.500000000000000000e+01 3.600000000000000000e+01 3.100000000000000000e+01 2.700000000000000000e+01 2.500000000000000000e+01 2.900000000000000000e+01 4.000000000000000000e+00 1.000000000000000000e+01 3.000000000000000000e+00 5.000000000000000000e+00 7.000000000000000000e+00 3.400000000000000000e+01 9.000000000000000000e+00 3.300000000000000000e+01 2.800000000000000000e+01 1.400000000000000000e+01 1.300000000000000000e+01 2.000000000000000000e+00 6.000000000000000000e+00
+2.000000000000000000e+00 5.000000000000000000e+00 3.600000000000000000e+01 1.000000000000000000e+00 3.200000000000000000e+01 2.000000000000000000e+01 2.300000000000000000e+01 6.000000000000000000e+00 7.000000000000000000e+00 9.000000000000000000e+00 1.700000000000000000e+01 1.400000000000000000e+01 3.300000000000000000e+01 1.800000000000000000e+01 3.100000000000000000e+01 1.500000000000000000e+01 4.000000000000000000e+00 3.000000000000000000e+00 1.300000000000000000e+01 3.000000000000000000e+01 2.400000000000000000e+01 1.900000000000000000e+01 2.800000000000000000e+01 1.100000000000000000e+01 2.700000000000000000e+01 2.200000000000000000e+01 8.000000000000000000e+00 1.600000000000000000e+01 2.900000000000000000e+01 2.500000000000000000e+01 2.100000000000000000e+01 3.400000000000000000e+01 1.000000000000000000e+01 3.500000000000000000e+01 2.600000000000000000e+01 1.200000000000000000e+01
+1.300000000000000000e+01 1.700000000000000000e+01 2.500000000000000000e+01 1.500000000000000000e+01 2.700000000000000000e+01 3.400000000000000000e+01 8.000000000000000000e+00 3.100000000000000000e+01 1.100000000000000000e+01 5.000000000000000000e+00 2.800000000000000000e+01 3.300000000000000000e+01 1.000000000000000000e+01 2.400000000000000000e+01 2.900000000000000000e+01 1.400000000000000000e+01 2.000000000000000000e+01 1.200000000000000000e+01 3.000000000000000000e+00 2.600000000000000000e+01 2.300000000000000000e+01 6.000000000000000000e+00 3.500000000000000000e+01 1.600000000000000000e+01 2.100000000000000000e+01 1.000000000000000000e+00 4.000000000000000000e+00 1.900000000000000000e+01 2.000000000000000000e+00 1.800000000000000000e+01 9.000000000000000000e+00 3.600000000000000000e+01 2.200000000000000000e+01 3.000000000000000000e+01 7.000000000000000000e+00 3.200000000000000000e+01
+7.000000000000000000e+00 2.400000000000000000e+01 1.600000000000000000e+01 6.000000000000000000e+00 3.100000000000000000e+01 1.000000000000000000e+01 3.400000000000000000e+01 2.200000000000000000e+01 3.600000000000000000e+01 3.000000000000000000e+00 1.300000000000000000e+01 3.000000000000000000e+01 9.000000000000000000e+00 1.000000000000000000e+00 2.000000000000000000e+00 2.500000000000000000e+01 5.000000000000000000e+00 2.800000000000000000e+01 8.000000000000000000e+00 1.400000000000000000e+01 1.800000000000000000e+01 3.300000000000000000e+01 1.700000000000000000e+01 2.100000000000000000e+01 1.100000000000000000e+01 2.600000000000000000e+01 3.200000000000000000e+01 3.500000000000000000e+01 2.000000000000000000e+01 1.200000000000000000e+01 1.900000000000000000e+01 2.300000000000000000e+01 4.000000000000000000e+00 2.700000000000000000e+01 1.500000000000000000e+01 2.900000000000000000e+01
+4.000000000000000000e+00 3.000000000000000000e+00 2.800000000000000000e+01 3.300000000000000000e+01 9.000000000000000000e+00 1.800000000000000000e+01 3.500000000000000000e+01 1.600000000000000000e+01 2.600000000000000000e+01 2.700000000000000000e+01 2.900000000000000000e+01 2.000000000000000000e+00 2.100000000000000000e+01 6.000000000000000000e+00 1.900000000000000000e+01 1.300000000000000000e+01 3.000000000000000000e+01 7.000000000000000000e+00 1.000000000000000000e+00 1.000000000000000000e+01 3.200000000000000000e+01 2.200000000000000000e+01 3.400000000000000000e+01 1.200000000000000000e+01 3.100000000000000000e+01 1.500000000000000000e+01 2.300000000000000000e+01 3.600000000000000000e+01 1.400000000000000000e+01 2.400000000000000000e+01 5.000000000000000000e+00 1.700000000000000000e+01 8.000000000000000000e+00 2.000000000000000000e+01 2.500000000000000000e+01 1.100000000000000000e+01
+8.000000000000000000e+00 3.500000000000000000e+01 1.100000000000000000e+01 1.400000000000000000e+01 2.900000000000000000e+01 2.600000000000000000e+01 2.100000000000000000e+01 1.000000000000000000e+01 1.200000000000000000e+01 2.500000000000000000e+01 1.900000000000000000e+01 4.000000000000000000e+00 2.200000000000000000e+01 3.200000000000000000e+01 2.700000000000000000e+01 2.300000000000000000e+01 3.400000000000000000e+01 3.600000000000000000e+01 1.500000000000000000e+01 5.000000000000000000e+00 2.000000000000000000e+00 7.000000000000000000e+00 9.000000000000000000e+00 2.000000000000000000e+01 6.000000000000000000e+00 1.300000000000000000e+01 2.800000000000000000e+01 1.700000000000000000e+01 3.000000000000000000e+01 3.300000000000000000e+01 2.400000000000000000e+01 3.100000000000000000e+01 3.000000000000000000e+00 1.000000000000000000e+00 1.600000000000000000e+01 1.800000000000000000e+01
+1.200000000000000000e+01 1.500000000000000000e+01 1.900000000000000000e+01 3.200000000000000000e+01 1.100000000000000000e+01 2.000000000000000000e+00 3.300000000000000000e+01 2.700000000000000000e+01 3.000000000000000000e+01 3.500000000000000000e+01 1.000000000000000000e+01 1.800000000000000000e+01 5.000000000000000000e+00 7.000000000000000000e+00 3.600000000000000000e+01 6.000000000000000000e+00 3.100000000000000000e+01 2.600000000000000000e+01 2.300000000000000000e+01 3.000000000000000000e+00 1.600000000000000000e+01 2.900000000000000000e+01 1.400000000000000000e+01 2.200000000000000000e+01 2.500000000000000000e+01 8.000000000000000000e+00 2.000000000000000000e+01 2.400000000000000000e+01 9.000000000000000000e+00 1.000000000000000000e+00 3.400000000000000000e+01 4.000000000000000000e+00 1.300000000000000000e+01 1.700000000000000000e+01 2.800000000000000000e+01 2.100000000000000000e+01
+3.600000000000000000e+01 1.400000000000000000e+01 8.000000000000000000e+00 3.400000000000000000e+01 2.000000000000000000e+01 2.700000000000000000e+01 1.200000000000000000e+01 3.200000000000000000e+01 2.200000000000000000e+01 2.800000000000000000e+01 2.300000000000000000e+01 2.600000000000000000e+01 3.000000000000000000e+01 1.000000000000000000e+01 1.600000000000000000e+01 4.000000000000000000e+00 3.000000000000000000e+00 3.300000000000000000e+01 2.100000000000000000e+01 2.500000000000000000e+01 9.000000000000000000e+00 1.700000000000000000e+01 1.900000000000000000e+01 2.000000000000000000e+00 2.900000000000000000e+01 1.100000000000000000e+01 3.100000000000000000e+01 1.300000000000000000e+01 6.000000000000000000e+00 5.000000000000000000e+00 3.500000000000000000e+01 1.500000000000000000e+01 2.400000000000000000e+01 1.800000000000000000e+01 1.000000000000000000e+00 7.000000000000000000e+00
+2.200000000000000000e+01 2.800000000000000000e+01 1.800000000000000000e+01 9.000000000000000000e+00 1.300000000000000000e+01 1.700000000000000000e+01 5.000000000000000000e+00 2.100000000000000000e+01 8.000000000000000000e+00 1.500000000000000000e+01 2.500000000000000000e+01 1.100000000000000000e+01 2.300000000000000000e+01 2.900000000000000000e+01 1.400000000000000000e+01 2.000000000000000000e+01 2.400000000000000000e+01 3.400000000000000000e+01 6.000000000000000000e+00 3.600000000000000000e+01 3.500000000000000000e+01 1.000000000000000000e+00 3.100000000000000000e+01 7.000000000000000000e+00 1.900000000000000000e+01 4.000000000000000000e+00 1.000000000000000000e+01 1.200000000000000000e+01 2.600000000000000000e+01 3.000000000000000000e+01 1.600000000000000000e+01 3.200000000000000000e+01 2.700000000000000000e+01 2.000000000000000000e+00 3.300000000000000000e+01 3.000000000000000000e+00
+1.000000000000000000e+00 1.600000000000000000e+01 5.000000000000000000e+00 7.000000000000000000e+00 3.000000000000000000e+01 2.400000000000000000e+01 3.000000000000000000e+00 9.000000000000000000e+00 1.900000000000000000e+01 1.400000000000000000e+01 4.000000000000000000e+00 6.000000000000000000e+00 2.000000000000000000e+00 1.700000000000000000e+01 2.500000000000000000e+01 3.500000000000000000e+01 2.100000000000000000e+01 1.800000000000000000e+01 3.200000000000000000e+01 1.300000000000000000e+01 8.000000000000000000e+00 3.400000000000000000e+01 1.500000000000000000e+01 2.600000000000000000e+01 3.300000000000000000e+01 2.300000000000000000e+01 2.200000000000000000e+01 2.800000000000000000e+01 3.600000000000000000e+01 2.700000000000000000e+01 1.100000000000000000e+01 1.200000000000000000e+01 2.000000000000000000e+01 2.900000000000000000e+01 1.000000000000000000e+01 3.100000000000000000e+01
+2.100000000000000000e+01 6.000000000000000000e+00 2.600000000000000000e+01 3.500000000000000000e+01 3.000000000000000000e+00 4.000000000000000000e+00 7.000000000000000000e+00 2.900000000000000000e+01 2.000000000000000000e+00 1.000000000000000000e+00 3.100000000000000000e+01 2.000000000000000000e+01 1.200000000000000000e+01 2.200000000000000000e+01 2.800000000000000000e+01 3.200000000000000000e+01 9.000000000000000000e+00 1.300000000000000000e+01 3.300000000000000000e+01 1.100000000000000000e+01 3.000000000000000000e+01 1.000000000000000000e+01 2.700000000000000000e+01 2.400000000000000000e+01 1.600000000000000000e+01 1.400000000000000000e+01 1.500000000000000000e+01 1.800000000000000000e+01 1.700000000000000000e+01 3.400000000000000000e+01 2.300000000000000000e+01 8.000000000000000000e+00 2.500000000000000000e+01 3.600000000000000000e+01 1.900000000000000000e+01 5.000000000000000000e+00
+3.300000000000000000e+01 1.000000000000000000e+01 2.300000000000000000e+01 2.900000000000000000e+01 2.500000000000000000e+01 3.100000000000000000e+01 1.300000000000000000e+01 3.600000000000000000e+01 1.700000000000000000e+01 3.400000000000000000e+01 1.600000000000000000e+01 2.400000000000000000e+01 2.700000000000000000e+01 1.500000000000000000e+01 8.000000000000000000e+00 1.900000000000000000e+01 1.000000000000000000e+00 1.100000000000000000e+01 1.200000000000000000e+01 2.000000000000000000e+01 5.000000000000000000e+00 1.800000000000000000e+01 4.000000000000000000e+00 2.800000000000000000e+01 3.200000000000000000e+01 7.000000000000000000e+00 3.000000000000000000e+00 2.000000000000000000e+00 3.500000000000000000e+01 2.100000000000000000e+01 2.600000000000000000e+01 3.000000000000000000e+01 9.000000000000000000e+00 2.200000000000000000e+01 6.000000000000000000e+00 1.400000000000000000e+01
+1.700000000000000000e+01 1.100000000000000000e+01 3.200000000000000000e+01 4.000000000000000000e+00 7.000000000000000000e+00 1.200000000000000000e+01 1.000000000000000000e+00 3.000000000000000000e+01 2.000000000000000000e+01 3.100000000000000000e+01 9.000000000000000000e+00 3.600000000000000000e+01 2.500000000000000000e+01 3.500000000000000000e+01 2.300000000000000000e+01 3.000000000000000000e+00 6.000000000000000000e+00 5.000000000000000000e+00 1.900000000000000000e+01 3.300000000000000000e+01 1.000000000000000000e+01 2.800000000000000000e+01 2.100000000000000000e+01 1.300000000000000000e+01 1.400000000000000000e+01 1.800000000000000000e+01 2.000000000000000000e+00 3.400000000000000000e+01 8.000000000000000000e+00 1.600000000000000000e+01 2.200000000000000000e+01 2.600000000000000000e+01 2.900000000000000000e+01 1.500000000000000000e+01 2.400000000000000000e+01 2.700000000000000000e+01
+1.000000000000000000e+01 2.000000000000000000e+00 1.300000000000000000e+01 2.700000000000000000e+01 1.500000000000000000e+01 1.900000000000000000e+01 2.600000000000000000e+01 3.000000000000000000e+00 2.400000000000000000e+01 1.700000000000000000e+01 1.400000000000000000e+01 8.000000000000000000e+00 2.900000000000000000e+01 3.300000000000000000e+01 2.000000000000000000e+01 1.000000000000000000e+00 3.200000000000000000e+01 4.000000000000000000e+00 3.100000000000000000e+01 3.500000000000000000e+01 2.200000000000000000e+01 1.600000000000000000e+01 3.000000000000000000e+01 5.000000000000000000e+00 1.200000000000000000e+01 9.000000000000000000e+00 2.100000000000000000e+01 2.300000000000000000e+01 1.100000000000000000e+01 6.000000000000000000e+00 1.800000000000000000e+01 7.000000000000000000e+00 3.400000000000000000e+01 2.800000000000000000e+01 3.600000000000000000e+01 2.500000000000000000e+01
+6.000000000000000000e+00 3.600000000000000000e+01 3.500000000000000000e+01 5.000000000000000000e+00 8.000000000000000000e+00 2.300000000000000000e+01 1.000000000000000000e+01 7.000000000000000000e+00 3.200000000000000000e+01 1.900000000000000000e+01 2.200000000000000000e+01 2.700000000000000000e+01 2.600000000000000000e+01 1.600000000000000000e+01 2.100000000000000000e+01 1.700000000000000000e+01 2.800000000000000000e+01 3.000000000000000000e+01 9.000000000000000000e+00 1.800000000000000000e+01 2.500000000000000000e+01 1.400000000000000000e+01 2.000000000000000000e+01 3.400000000000000000e+01 3.000000000000000000e+00 2.900000000000000000e+01 2.400000000000000000e+01 1.500000000000000000e+01 4.000000000000000000e+00 1.300000000000000000e+01 2.000000000000000000e+00 1.100000000000000000e+01 3.300000000000000000e+01 3.100000000000000000e+01 1.200000000000000000e+01 1.000000000000000000e+00
+2.800000000000000000e+01 2.600000000000000000e+01 3.300000000000000000e+01 2.200000000000000000e+01 1.400000000000000000e+01 3.000000000000000000e+01 2.500000000000000000e+01 1.300000000000000000e+01 4.000000000000000000e+00 1.600000000000000000e+01 2.000000000000000000e+00 2.300000000000000000e+01 3.400000000000000000e+01 9.000000000000000000e+00 7.000000000000000000e+00 2.400000000000000000e+01 1.800000000000000000e+01 2.700000000000000000e+01 1.100000000000000000e+01 1.500000000000000000e+01 3.600000000000000000e+01 1.200000000000000000e+01 3.200000000000000000e+01 2.900000000000000000e+01 2.000000000000000000e+01 5.000000000000000000e+00 3.500000000000000000e+01 1.000000000000000000e+00 3.100000000000000000e+01 1.000000000000000000e+01 3.000000000000000000e+00 6.000000000000000000e+00 2.100000000000000000e+01 1.900000000000000000e+01 1.700000000000000000e+01 8.000000000000000000e+00
+3.000000000000000000e+00 3.400000000000000000e+01 3.100000000000000000e+01 1.600000000000000000e+01 1.800000000000000000e+01 9.000000000000000000e+00 2.900000000000000000e+01 5.000000000000000000e+00 3.300000000000000000e+01 1.200000000000000000e+01 2.100000000000000000e+01 2.800000000000000000e+01 1.900000000000000000e+01 1.300000000000000000e+01 1.100000000000000000e+01 2.200000000000000000e+01 1.500000000000000000e+01 1.400000000000000000e+01 7.000000000000000000e+00 8.000000000000000000e+00 6.000000000000000000e+00 2.400000000000000000e+01 2.000000000000000000e+00 1.000000000000000000e+00 1.700000000000000000e+01 3.600000000000000000e+01 2.500000000000000000e+01 2.700000000000000000e+01 3.200000000000000000e+01 2.600000000000000000e+01 3.000000000000000000e+01 1.000000000000000000e+01 3.500000000000000000e+01 4.000000000000000000e+00 2.300000000000000000e+01 2.000000000000000000e+01
+2.900000000000000000e+01 2.000000000000000000e+01 1.000000000000000000e+00 2.100000000000000000e+01 2.400000000000000000e+01 2.500000000000000000e+01 1.100000000000000000e+01 3.500000000000000000e+01 6.000000000000000000e+00 1.800000000000000000e+01 1.500000000000000000e+01 3.400000000000000000e+01 3.600000000000000000e+01 1.200000000000000000e+01 1.000000000000000000e+01 2.000000000000000000e+00 8.000000000000000000e+00 3.100000000000000000e+01 4.000000000000000000e+00 2.700000000000000000e+01 3.000000000000000000e+00 2.600000000000000000e+01 2.300000000000000000e+01 1.700000000000000000e+01 3.000000000000000000e+01 1.900000000000000000e+01 3.300000000000000000e+01 2.200000000000000000e+01 7.000000000000000000e+00 2.800000000000000000e+01 1.300000000000000000e+01 5.000000000000000000e+00 3.200000000000000000e+01 1.400000000000000000e+01 9.000000000000000000e+00 1.600000000000000000e+01
+2.000000000000000000e+01 3.200000000000000000e+01 1.200000000000000000e+01 3.000000000000000000e+01 1.000000000000000000e+01 1.400000000000000000e+01 3.100000000000000000e+01 3.300000000000000000e+01 2.500000000000000000e+01 6.000000000000000000e+00 7.000000000000000000e+00 2.100000000000000000e+01 3.000000000000000000e+00 2.300000000000000000e+01 1.500000000000000000e+01 2.800000000000000000e+01 3.500000000000000000e+01 8.000000000000000000e+00 1.600000000000000000e+01 2.000000000000000000e+00 1.900000000000000000e+01 9.000000000000000000e+00 1.300000000000000000e+01 1.800000000000000000e+01 2.600000000000000000e+01 1.700000000000000000e+01 2.700000000000000000e+01 1.100000000000000000e+01 1.000000000000000000e+00 2.200000000000000000e+01 4.000000000000000000e+00 2.900000000000000000e+01 3.600000000000000000e+01 3.400000000000000000e+01 5.000000000000000000e+00 2.400000000000000000e+01
+1.800000000000000000e+01 8.000000000000000000e+00 9.000000000000000000e+00 1.700000000000000000e+01 1.900000000000000000e+01 3.000000000000000000e+00 2.700000000000000000e+01 4.000000000000000000e+00 1.000000000000000000e+01 2.200000000000000000e+01 1.000000000000000000e+00 1.300000000000000000e+01 1.400000000000000000e+01 3.400000000000000000e+01 6.000000000000000000e+00 7.000000000000000000e+00 1.200000000000000000e+01 2.500000000000000000e+01 2.900000000000000000e+01 2.400000000000000000e+01 1.100000000000000000e+01 2.300000000000000000e+01 3.600000000000000000e+01 3.300000000000000000e+01 5.000000000000000000e+00 2.100000000000000000e+01 1.600000000000000000e+01 3.000000000000000000e+01 2.800000000000000000e+01 3.500000000000000000e+01 3.100000000000000000e+01 2.000000000000000000e+00 2.600000000000000000e+01 3.200000000000000000e+01 2.000000000000000000e+01 1.500000000000000000e+01
+2.600000000000000000e+01 1.300000000000000000e+01 1.500000000000000000e+01 2.800000000000000000e+01 6.000000000000000000e+00 3.600000000000000000e+01 1.800000000000000000e+01 1.100000000000000000e+01 3.500000000000000000e+01 2.400000000000000000e+01 2.000000000000000000e+01 1.900000000000000000e+01 4.000000000000000000e+00 5.000000000000000000e+00 2.200000000000000000e+01 2.700000000000000000e+01 2.900000000000000000e+01 2.100000000000000000e+01 3.400000000000000000e+01 1.200000000000000000e+01 1.000000000000000000e+00 3.100000000000000000e+01 3.000000000000000000e+00 1.000000000000000000e+01 9.000000000000000000e+00 3.200000000000000000e+01 7.000000000000000000e+00 1.400000000000000000e+01 2.500000000000000000e+01 2.000000000000000000e+00 8.000000000000000000e+00 1.600000000000000000e+01 1.700000000000000000e+01 2.300000000000000000e+01 3.000000000000000000e+01 3.300000000000000000e+01
+2.400000000000000000e+01 2.200000000000000000e+01 2.700000000000000000e+01 3.100000000000000000e+01 4.000000000000000000e+00 2.900000000000000000e+01 2.800000000000000000e+01 3.400000000000000000e+01 2.300000000000000000e+01 3.000000000000000000e+01 1.200000000000000000e+01 1.600000000000000000e+01 1.000000000000000000e+00 2.000000000000000000e+01 1.700000000000000000e+01 3.300000000000000000e+01 1.100000000000000000e+01 2.000000000000000000e+00 2.500000000000000000e+01 2.100000000000000000e+01 2.600000000000000000e+01 3.500000000000000000e+01 5.000000000000000000e+00 3.200000000000000000e+01 1.500000000000000000e+01 1.000000000000000000e+01 3.600000000000000000e+01 6.000000000000000000e+00 3.000000000000000000e+00 8.000000000000000000e+00 1.400000000000000000e+01 1.300000000000000000e+01 1.900000000000000000e+01 7.000000000000000000e+00 1.800000000000000000e+01 9.000000000000000000e+00
+1.600000000000000000e+01 1.000000000000000000e+00 2.100000000000000000e+01 1.100000000000000000e+01 3.400000000000000000e+01 3.300000000000000000e+01 3.200000000000000000e+01 1.700000000000000000e+01 5.000000000000000000e+00 2.000000000000000000e+00 8.000000000000000000e+00 9.000000000000000000e+00 1.300000000000000000e+01 3.100000000000000000e+01 3.000000000000000000e+01 3.600000000000000000e+01 2.600000000000000000e+01 2.400000000000000000e+01 1.400000000000000000e+01 2.200000000000000000e+01 2.000000000000000000e+01 1.500000000000000000e+01 7.000000000000000000e+00 2.700000000000000000e+01 1.800000000000000000e+01 1.200000000000000000e+01 2.900000000000000000e+01 4.000000000000000000e+00 1.900000000000000000e+01 2.300000000000000000e+01 2.800000000000000000e+01 3.000000000000000000e+00 6.000000000000000000e+00 2.500000000000000000e+01 3.500000000000000000e+01 1.000000000000000000e+01
+2.500000000000000000e+01 7.000000000000000000e+00 2.000000000000000000e+00 2.300000000000000000e+01 5.000000000000000000e+00 3.500000000000000000e+01 1.500000000000000000e+01 2.600000000000000000e+01 1.400000000000000000e+01 3.600000000000000000e+01 3.000000000000000000e+00 2.900000000000000000e+01 3.200000000000000000e+01 1.900000000000000000e+01 1.800000000000000000e+01 9.000000000000000000e+00 1.000000000000000000e+01 1.600000000000000000e+01 2.800000000000000000e+01 1.700000000000000000e+01 4.000000000000000000e+00 8.000000000000000000e+00 6.000000000000000000e+00 3.000000000000000000e+01 3.400000000000000000e+01 2.000000000000000000e+01 1.300000000000000000e+01 3.300000000000000000e+01 2.400000000000000000e+01 3.100000000000000000e+01 1.200000000000000000e+01 2.700000000000000000e+01 1.000000000000000000e+00 1.100000000000000000e+01 2.100000000000000000e+01 2.200000000000000000e+01
diff --git a/sudoku-csolver/solved/9x9.sol b/sudoku-csolver/solved/9x9.sol
index 1a20fc53..ad71b8d6 100644
--- a/sudoku-csolver/solved/9x9.sol
+++ b/sudoku-csolver/solved/9x9.sol
@@ -1,9 +1,9 @@
+1.000000000000000000e+00 7.000000000000000000e+00 5.000000000000000000e+00 4.000000000000000000e+00 3.000000000000000000e+00 8.000000000000000000e+00 2.000000000000000000e+00 9.000000000000000000e+00 6.000000000000000000e+00
+8.000000000000000000e+00 2.000000000000000000e+00 9.000000000000000000e+00 5.000000000000000000e+00 7.000000000000000000e+00 6.000000000000000000e+00 4.000000000000000000e+00 1.000000000000000000e+00 3.000000000000000000e+00
+4.000000000000000000e+00 6.000000000000000000e+00 3.000000000000000000e+00 1.000000000000000000e+00 9.000000000000000000e+00 2.000000000000000000e+00 8.000000000000000000e+00 7.000000000000000000e+00 5.000000000000000000e+00
+5.000000000000000000e+00 4.000000000000000000e+00 2.000000000000000000e+00 9.000000000000000000e+00 1.000000000000000000e+00 3.000000000000000000e+00 7.000000000000000000e+00 6.000000000000000000e+00 8.000000000000000000e+00
+3.000000000000000000e+00 1.000000000000000000e+00 8.000000000000000000e+00 2.000000000000000000e+00 6.000000000000000000e+00 7.000000000000000000e+00 5.000000000000000000e+00 4.000000000000000000e+00 9.000000000000000000e+00
+7.000000000000000000e+00 9.000000000000000000e+00 6.000000000000000000e+00 8.000000000000000000e+00 4.000000000000000000e+00 5.000000000000000000e+00 1.000000000000000000e+00 3.000000000000000000e+00 2.000000000000000000e+00
+6.000000000000000000e+00 5.000000000000000000e+00 4.000000000000000000e+00 3.000000000000000000e+00 2.000000000000000000e+00 1.000000000000000000e+00 9.000000000000000000e+00 8.000000000000000000e+00 7.000000000000000000e+00
+2.000000000000000000e+00 3.000000000000000000e+00 1.000000000000000000e+00 7.000000000000000000e+00 8.000000000000000000e+00 9.000000000000000000e+00 6.000000000000000000e+00 5.000000000000000000e+00 4.000000000000000000e+00
 9.000000000000000000e+00 8.000000000000000000e+00 7.000000000000000000e+00 6.000000000000000000e+00 5.000000000000000000e+00 4.000000000000000000e+00 3.000000000000000000e+00 2.000000000000000000e+00 1.000000000000000000e+00
-6.000000000000000000e+00 5.000000000000000000e+00 4.000000000000000000e+00 3.000000000000000000e+00 2.000000000000000000e+00 1.000000000000000000e+00 9.000000000000000000e+00 7.000000000000000000e+00 8.000000000000000000e+00
-3.000000000000000000e+00 2.000000000000000000e+00 1.000000000000000000e+00 9.000000000000000000e+00 8.000000000000000000e+00 7.000000000000000000e+00 6.000000000000000000e+00 5.000000000000000000e+00 4.000000000000000000e+00
-8.000000000000000000e+00 9.000000000000000000e+00 6.000000000000000000e+00 7.000000000000000000e+00 4.000000000000000000e+00 5.000000000000000000e+00 2.000000000000000000e+00 1.000000000000000000e+00 3.000000000000000000e+00
-7.000000000000000000e+00 4.000000000000000000e+00 5.000000000000000000e+00 2.000000000000000000e+00 1.000000000000000000e+00 3.000000000000000000e+00 8.000000000000000000e+00 9.000000000000000000e+00 6.000000000000000000e+00
-2.000000000000000000e+00 1.000000000000000000e+00 3.000000000000000000e+00 8.000000000000000000e+00 9.000000000000000000e+00 6.000000000000000000e+00 7.000000000000000000e+00 4.000000000000000000e+00 5.000000000000000000e+00
-5.000000000000000000e+00 7.000000000000000000e+00 9.000000000000000000e+00 4.000000000000000000e+00 6.000000000000000000e+00 8.000000000000000000e+00 1.000000000000000000e+00 3.000000000000000000e+00 2.000000000000000000e+00
-4.000000000000000000e+00 6.000000000000000000e+00 2.000000000000000000e+00 1.000000000000000000e+00 3.000000000000000000e+00 9.000000000000000000e+00 5.000000000000000000e+00 8.000000000000000000e+00 7.000000000000000000e+00
-1.000000000000000000e+00 3.000000000000000000e+00 8.000000000000000000e+00 5.000000000000000000e+00 7.000000000000000000e+00 2.000000000000000000e+00 4.000000000000000000e+00 6.000000000000000000e+00 9.000000000000000000e+00