Daniel Calle, Adrian Dorta, Zihao Hong
Bibliografía: https://labix.org/python-constraint
Transparencias: https://danielcalle.github.io/python-constraints/
Python constraint es un módulo que ofrece resolutores para Constraint Satisfaction Problems (CSPs) sobre dominios finitos en un simple y puro Python. CSP es una clase de problemas los cuales pueden ser representados en términos de variables (a, b, …), dominios (a in [1,2,3], …), y restricciones (a < b, …).
Primero tenemos que instalar el paquete de python-constraint con:
!pip install python-constraint
Collecting python-constraint
Downloading https://files.pythonhosted.org/packages/37/8b/5f1bc2734ca611943e1d6733ee244238679f6410a10cd45ede55a61a8402/python-constraint-1.4.0.tar.bz2
Building wheels for collected packages: python-constraint
Building wheel for python-constraint (setup.py) ... �[?25ldone
�[?25h Stored in directory: /home/jovyan/.cache/pip/wheels/34/31/15/7b070b25d0a549d20ce2e9fe6d727471c2c61ef904720fd40c
Successfully built python-constraint
Installing collected packages: python-constraint
Successfully installed python-constraint-1.4.0
Para poder usarlo en cualquier script de Python tenemos que importar el paquete
from constraint import *
Es una clase usada para definir un problema y obtener soluciones
problem = Problem()
problem.addVariable("a", [1, 2])
problem.getSolution() in ({'a': 1}, {'a': 2})
True
problem.reset()
problem.addVariables(["a", "b"], [1, 2, 3])
problem.addConstraint(lambda a, b: b == a+1, ["a", "b"])
solutions = problem.getSolutions()
solutions
[{'a': 2, 'b': 3}, {'a': 1, 'b': 2}]
problem.reset()
problem.addVariables(["a"], [42])
iter = problem.getSolutionIter()
iter.__next__()
{'a': 42}
problem.reset()
problem.getSolution() is None
True
problem.reset()
problem.getSolutions() == []
True
problem.reset()
list(problem.getSolutionIter()) == []
True
Se utiliza la clase abstracta Solver para definir resolutores, en la cual ya tenemos definidos los siguientes resolutores:
- Backtracking solver
- Recursive backtracking solver
- Minimum conflicts solver
solver = BacktrackingSolver()
problem = Problem(solver)
problem.getSolver() is solver
True
problem.setSolver(RecursiveBacktrackingSolver)
problem.getSolver() is solver
False
Este es el resolutor utilizado por defecto
result = [[('a', 1), ('b', 2)],
[('a', 1), ('b', 3)],
[('a', 2), ('b', 3)]]
problem = Problem(BacktrackingSolver())
problem.addVariables(["a", "b"], [1, 2, 3])
problem.addConstraint(lambda a, b: b > a, ["a", "b"])
solution = problem.getSolution()
sorted(solution.items()) in result
for solution in problem.getSolutionIter():
sorted(solution.items()) in result
for solution in problem.getSolutions():
sorted(solution.items()) in result
problem = Problem(RecursiveBacktrackingSolver())
problem.addVariables(["a", "b"], [1, 2, 3])
problem.addConstraint(lambda a, b: b > a, ["a", "b"])
solution = problem.getSolution()
sorted(solution.items()) in result
for solution in problem.getSolutions():
sorted(solution.items()) in result
problem.getSolutionIter()
---------------------------------------------------------------------------
NotImplementedError Traceback (most recent call last)
<ipython-input-15-6d0cdaf1300b> in <module>
----> 1 problem.getSolutionIter()
/srv/conda/lib/python3.6/site-packages/constraint/__init__.py in getSolutionIter(self)
292 if not domains:
293 return iter(())
--> 294 return self._solver.getSolutionIter(domains, constraints, vconstraints)
295
296 def _getArgs(self):
/srv/conda/lib/python3.6/site-packages/constraint/__init__.py in getSolutionIter(self, domains, constraints, vconstraints)
436 """
437 msg = "%s doesn't provide iteration" % self.__class__.__name__
--> 438 raise NotImplementedError(msg)
439
440
NotImplementedError: RecursiveBacktrackingSolver doesn't provide iteration
problem = Problem(MinConflictsSolver())
problem.addVariables(["a", "b"], [1, 2, 3])
problem.addConstraint(lambda a, b: b > a, ["a", "b"])
solution = problem.getSolution()
sorted(solution.items()) in result
True
problem.getSolutions()
---------------------------------------------------------------------------
NotImplementedError Traceback (most recent call last)
<ipython-input-17-a0841ceee5a9> in <module>
----> 1 problem.getSolutions()
/srv/conda/lib/python3.6/site-packages/constraint/__init__.py in getSolutions(self)
269 if not domains:
270 return []
--> 271 return self._solver.getSolutions(domains, constraints, vconstraints)
272
273 def getSolutionIter(self):
/srv/conda/lib/python3.6/site-packages/constraint/__init__.py in getSolutions(self, domains, constraints, vconstraints)
421 """
422 msg = "%s provides only a single solution" % self.__class__.__name__
--> 423 raise NotImplementedError(msg)
424
425 def getSolutionIter(self, domains, constraints, vconstraints):
NotImplementedError: MinConflictsSolver provides only a single solution
problem.getSolutionIter()
---------------------------------------------------------------------------
NotImplementedError Traceback (most recent call last)
<ipython-input-18-6d0cdaf1300b> in <module>
----> 1 problem.getSolutionIter()
/srv/conda/lib/python3.6/site-packages/constraint/__init__.py in getSolutionIter(self)
292 if not domains:
293 return iter(())
--> 294 return self._solver.getSolutionIter(domains, constraints, vconstraints)
295
296 def _getArgs(self):
/srv/conda/lib/python3.6/site-packages/constraint/__init__.py in getSolutionIter(self, domains, constraints, vconstraints)
436 """
437 msg = "%s doesn't provide iteration" % self.__class__.__name__
--> 438 raise NotImplementedError(msg)
439
440
NotImplementedError: MinConflictsSolver doesn't provide iteration
Se utiliza la clase abstracta Constraint para definir restricciones, para la cual ya tenemos definidas las siguientes restricciones:
- FunctionConstraint
- AllDifferentConstraint
- AllEqualConstraint
- MaxSumConstraint
- ExactSumConstraint
- MinSumConstraint
- InSetConstraint
- NotInSetConstraint
- SomeInSetConstraint
- SomeNotInSetConstraint
problem = Problem()
problem.addVariables(["a", "b"], [1, 2, 3])
problem.addConstraint(AllDifferentConstraint())
problem.getSolutions()
[{'a': 3, 'b': 2},
{'a': 3, 'b': 1},
{'a': 2, 'b': 3},
{'a': 2, 'b': 1},
{'a': 1, 'b': 2},
{'a': 1, 'b': 3}]
problem = Problem()
problem.addVariables(["a", "b"], [1, 2])
problem.addConstraint(AllEqualConstraint())
problem.getSolutions()
[{'a': 2, 'b': 2}, {'a': 1, 'b': 1}]
problem = Problem()
problem.addVariables(["a", "b"], [1, 2])
problem.addConstraint(MaxSumConstraint(3))
problem.getSolutions()
[{'a': 2, 'b': 1}, {'a': 1, 'b': 2}, {'a': 1, 'b': 1}]
problem = Problem()
problem.addVariables(["a", "b"], [1, 2])
problem.addConstraint(InSetConstraint([1]))
problem.getSolutions()
[{'a': 1, 'b': 1}]
Ahora vamos a ver algunos ejemplos de implementación de problemas
El siguiente ejemplo resuelve el problema de las ocho torres de Ajedrez:
problem = Problem()
numpieces = 8
cols = range(numpieces)
rows = range(numpieces)
problem.addVariables(cols, rows)
for col1 in cols:
for col2 in cols:
if col1 < col2:
problem.addConstraint(lambda row1, row2: row1 != row2,
(col1, col2))
problem.getSolutions()
[{0: 7, 1: 6, 2: 5, 3: 4, 4: 3, 5: 2, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 3, 5: 2, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 3, 5: 1, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 3, 5: 1, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 3, 5: 0, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 3, 5: 0, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 2, 5: 3, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 2, 5: 3, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 2, 5: 1, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 2, 5: 1, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 2, 5: 0, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 2, 5: 0, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 1, 5: 2, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 1, 5: 2, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 1, 5: 3, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 1, 5: 3, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 1, 5: 0, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 1, 5: 0, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 0, 5: 1, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 0, 5: 1, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 0, 5: 2, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 0, 5: 2, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 0, 5: 3, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 4, 4: 0, 5: 3, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 4, 5: 0, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 4, 5: 0, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 4, 5: 1, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 4, 5: 1, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 4, 5: 2, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 4, 5: 2, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 2, 5: 4, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 2, 5: 4, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 2, 5: 0, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 2, 5: 0, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 2, 5: 1, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 2, 5: 1, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 1, 5: 2, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 1, 5: 2, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 1, 5: 4, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 1, 5: 4, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 1, 5: 0, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 1, 5: 0, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 0, 5: 1, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 0, 5: 1, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 0, 5: 2, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 0, 5: 2, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 0, 5: 4, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 3, 4: 0, 5: 4, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 3, 5: 0, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 3, 5: 0, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 3, 5: 1, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 3, 5: 1, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 3, 5: 4, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 3, 5: 4, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 4, 5: 3, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 4, 5: 3, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 4, 5: 0, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 4, 5: 0, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 4, 5: 1, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 4, 5: 1, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 1, 5: 4, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 1, 5: 4, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 1, 5: 3, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 1, 5: 3, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 1, 5: 0, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 1, 5: 0, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 0, 5: 1, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 0, 5: 1, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 0, 5: 4, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 0, 5: 4, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 0, 5: 3, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 2, 4: 0, 5: 3, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 2, 5: 0, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 2, 5: 0, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 2, 5: 4, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 2, 5: 4, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 2, 5: 3, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 2, 5: 3, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 3, 5: 2, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 3, 5: 2, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 3, 5: 0, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 3, 5: 0, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 3, 5: 4, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 3, 5: 4, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 4, 5: 3, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 4, 5: 3, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 4, 5: 2, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 4, 5: 2, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 4, 5: 0, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 4, 5: 0, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 0, 5: 4, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 0, 5: 4, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 0, 5: 3, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 0, 5: 3, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 0, 5: 2, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 1, 4: 0, 5: 2, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 1, 5: 4, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 1, 5: 4, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 1, 5: 3, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 1, 5: 3, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 1, 5: 2, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 1, 5: 2, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 2, 5: 1, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 2, 5: 1, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 2, 5: 4, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 2, 5: 4, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 2, 5: 3, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 2, 5: 3, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 3, 5: 2, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 3, 5: 2, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 3, 5: 1, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 3, 5: 1, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 3, 5: 4, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 3, 5: 4, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 4, 5: 3, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 4, 5: 3, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 4, 5: 2, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 4, 5: 2, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 4, 5: 1, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 5, 3: 0, 4: 4, 5: 1, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 0, 5: 3, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 0, 5: 3, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 0, 5: 2, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 0, 5: 2, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 0, 5: 1, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 0, 5: 1, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 1, 5: 0, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 1, 5: 0, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 1, 5: 3, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 1, 5: 3, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 1, 5: 2, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 1, 5: 2, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 2, 5: 1, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 2, 5: 1, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 2, 5: 0, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 2, 5: 0, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 2, 5: 3, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 2, 5: 3, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 3, 5: 2, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 3, 5: 2, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 3, 5: 1, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 3, 5: 1, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 3, 5: 0, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 5, 4: 3, 5: 0, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 5, 5: 2, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 5, 5: 2, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 5, 5: 1, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 5, 5: 1, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 5, 5: 0, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 5, 5: 0, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 0, 5: 5, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 0, 5: 5, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 0, 5: 2, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 0, 5: 2, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 0, 5: 1, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 0, 5: 1, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 1, 5: 0, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 1, 5: 0, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 1, 5: 5, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 1, 5: 5, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 1, 5: 2, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 1, 5: 2, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 2, 5: 1, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 2, 5: 1, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 2, 5: 0, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 2, 5: 0, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 2, 5: 5, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 3, 4: 2, 5: 5, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 3, 5: 1, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 3, 5: 1, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 3, 5: 0, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 3, 5: 0, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 3, 5: 5, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 3, 5: 5, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 5, 5: 3, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 5, 5: 3, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 5, 5: 1, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 5, 5: 1, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 5, 5: 0, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 5, 5: 0, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 0, 5: 5, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 0, 5: 5, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 0, 5: 3, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 0, 5: 3, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 0, 5: 1, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 0, 5: 1, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 1, 5: 0, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 1, 5: 0, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 1, 5: 5, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 1, 5: 5, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 1, 5: 3, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 2, 4: 1, 5: 3, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 2, 5: 0, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 2, 5: 0, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 2, 5: 5, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 2, 5: 5, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 2, 5: 3, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 2, 5: 3, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 3, 5: 2, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 3, 5: 2, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 3, 5: 0, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 3, 5: 0, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 3, 5: 5, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 3, 5: 5, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 5, 5: 3, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 5, 5: 3, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 5, 5: 2, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 5, 5: 2, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 5, 5: 0, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 5, 5: 0, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 0, 5: 5, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 0, 5: 5, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 0, 5: 3, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 0, 5: 3, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 0, 5: 2, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 1, 4: 0, 5: 2, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 1, 5: 5, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 1, 5: 5, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 1, 5: 3, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 1, 5: 3, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 1, 5: 2, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 1, 5: 2, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 2, 5: 1, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 2, 5: 1, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 2, 5: 5, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 2, 5: 5, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 2, 5: 3, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 2, 5: 3, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 3, 5: 2, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 3, 5: 2, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 3, 5: 1, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 3, 5: 1, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 3, 5: 5, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 3, 5: 5, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 5, 5: 3, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 5, 5: 3, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 5, 5: 2, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 5, 5: 2, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 5, 5: 1, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 4, 3: 0, 4: 5, 5: 1, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 0, 5: 5, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 0, 5: 5, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 0, 5: 2, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 0, 5: 2, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 0, 5: 1, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 0, 5: 1, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 1, 5: 0, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 1, 5: 0, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 1, 5: 5, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 1, 5: 5, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 1, 5: 2, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 1, 5: 2, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 2, 5: 1, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 2, 5: 1, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 2, 5: 0, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 2, 5: 0, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 2, 5: 5, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 2, 5: 5, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 5, 5: 2, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 5, 5: 2, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 5, 5: 1, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 5, 5: 1, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 5, 5: 0, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 4, 4: 5, 5: 0, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 4, 5: 2, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 4, 5: 2, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 4, 5: 1, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 4, 5: 1, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 4, 5: 0, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 4, 5: 0, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 0, 5: 4, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 0, 5: 4, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 0, 5: 2, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 0, 5: 2, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 0, 5: 1, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 0, 5: 1, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 1, 5: 0, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 1, 5: 0, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 1, 5: 4, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 1, 5: 4, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 1, 5: 2, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 1, 5: 2, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 2, 5: 1, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 2, 5: 1, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 2, 5: 0, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 2, 5: 0, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 2, 5: 4, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 5, 4: 2, 5: 4, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 5, 5: 1, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 5, 5: 1, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 5, 5: 0, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 5, 5: 0, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 5, 5: 4, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 5, 5: 4, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 4, 5: 5, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 4, 5: 5, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 4, 5: 1, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 4, 5: 1, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 4, 5: 0, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 4, 5: 0, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 0, 5: 4, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 0, 5: 4, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 0, 5: 5, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 0, 5: 5, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 0, 5: 1, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 0, 5: 1, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 1, 5: 0, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 1, 5: 0, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 1, 5: 4, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 1, 5: 4, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 1, 5: 5, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 2, 4: 1, 5: 5, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 2, 5: 0, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 2, 5: 0, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 2, 5: 4, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 2, 5: 4, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 2, 5: 5, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 2, 5: 5, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 5, 5: 2, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 5, 5: 2, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 5, 5: 0, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 5, 5: 0, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 5, 5: 4, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 5, 5: 4, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 4, 5: 5, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 4, 5: 5, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 4, 5: 2, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 4, 5: 2, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 4, 5: 0, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 4, 5: 0, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 0, 5: 4, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 0, 5: 4, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 0, 5: 5, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 0, 5: 5, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 0, 5: 2, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 1, 4: 0, 5: 2, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 1, 5: 4, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 1, 5: 4, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 1, 5: 5, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 1, 5: 5, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 1, 5: 2, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 1, 5: 2, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 2, 5: 1, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 2, 5: 1, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 2, 5: 4, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 2, 5: 4, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 2, 5: 5, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 2, 5: 5, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 5, 5: 2, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 5, 5: 2, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 5, 5: 1, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 5, 5: 1, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 5, 5: 4, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 5, 5: 4, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 4, 5: 5, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 4, 5: 5, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 4, 5: 2, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 4, 5: 2, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 4, 5: 1, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 3, 3: 0, 4: 4, 5: 1, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 0, 5: 4, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 0, 5: 4, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 0, 5: 5, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 0, 5: 5, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 0, 5: 1, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 0, 5: 1, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 1, 5: 0, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 1, 5: 0, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 1, 5: 4, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 1, 5: 4, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 1, 5: 5, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 1, 5: 5, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 5, 5: 1, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 5, 5: 1, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 5, 5: 0, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 5, 5: 0, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 5, 5: 4, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 5, 5: 4, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 4, 5: 5, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 4, 5: 5, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 4, 5: 1, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 4, 5: 1, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 4, 5: 0, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 3, 4: 4, 5: 0, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 3, 5: 5, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 3, 5: 5, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 3, 5: 1, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 3, 5: 1, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 3, 5: 0, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 3, 5: 0, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 0, 5: 3, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 0, 5: 3, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 0, 5: 5, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 0, 5: 5, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 0, 5: 1, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 0, 5: 1, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 1, 5: 0, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 1, 5: 0, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 1, 5: 3, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 1, 5: 3, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 1, 5: 5, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 1, 5: 5, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 5, 5: 1, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 5, 5: 1, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 5, 5: 0, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 5, 5: 0, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 5, 5: 3, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 4, 4: 5, 5: 3, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 4, 5: 1, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 4, 5: 1, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 4, 5: 0, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 4, 5: 0, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 4, 5: 3, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 4, 5: 3, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 3, 5: 4, 6: 0, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 3, 5: 4, 6: 1, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 3, 5: 1, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 3, 5: 1, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 3, 5: 0, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 3, 5: 0, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 0, 5: 3, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 0, 5: 3, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 0, 5: 4, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 0, 5: 4, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 0, 5: 1, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 0, 5: 1, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 1, 5: 0, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 1, 5: 0, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 1, 5: 3, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 1, 5: 3, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 1, 5: 4, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 5, 4: 1, 5: 4, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 5, 5: 0, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 5, 5: 0, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 5, 5: 3, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 5, 5: 3, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 5, 5: 4, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 5, 5: 4, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 4, 5: 5, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 4, 5: 5, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 4, 5: 0, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 4, 5: 0, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 4, 5: 3, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 4, 5: 3, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 3, 5: 4, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 3, 5: 4, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 3, 5: 5, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 3, 5: 5, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 3, 5: 0, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 3, 5: 0, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 0, 5: 3, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 0, 5: 3, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 0, 5: 4, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 0, 5: 4, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 0, 5: 5, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 1, 4: 0, 5: 5, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 1, 5: 3, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 1, 5: 3, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 1, 5: 4, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 1, 5: 4, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 1, 5: 5, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 1, 5: 5, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 5, 5: 1, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 5, 5: 1, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 5, 5: 3, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 5, 5: 3, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 5, 5: 4, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 5, 5: 4, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 4, 5: 5, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 4, 5: 5, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 4, 5: 1, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 4, 5: 1, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 4, 5: 3, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 4, 5: 3, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 3, 5: 4, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 3, 5: 4, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 3, 5: 5, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 3, 5: 5, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 3, 5: 1, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 2, 3: 0, 4: 3, 5: 1, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 0, 5: 3, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 0, 5: 3, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 0, 5: 4, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 0, 5: 4, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 0, 5: 5, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 0, 5: 5, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 5, 5: 0, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 5, 5: 0, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 5, 5: 3, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 5, 5: 3, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 5, 5: 4, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 5, 5: 4, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 4, 5: 5, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 4, 5: 5, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 4, 5: 0, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 4, 5: 0, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 4, 5: 3, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 4, 5: 3, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 3, 5: 4, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 3, 5: 4, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 3, 5: 5, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 3, 5: 5, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 3, 5: 0, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 2, 4: 3, 5: 0, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 2, 5: 4, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 2, 5: 4, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 2, 5: 5, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 2, 5: 5, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 2, 5: 0, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 2, 5: 0, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 0, 5: 2, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 0, 5: 2, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 0, 5: 4, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 0, 5: 4, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 0, 5: 5, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 0, 5: 5, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 5, 5: 0, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 5, 5: 0, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 5, 5: 2, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 5, 5: 2, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 5, 5: 4, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 5, 5: 4, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 4, 5: 5, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 4, 5: 5, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 4, 5: 0, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 4, 5: 0, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 4, 5: 2, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 3, 4: 4, 5: 2, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 3, 5: 5, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 3, 5: 5, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 3, 5: 0, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 3, 5: 0, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 3, 5: 2, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 3, 5: 2, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 2, 5: 3, 6: 0, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 2, 5: 3, 6: 5, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 2, 5: 5, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 2, 5: 5, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 2, 5: 0, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 2, 5: 0, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 0, 5: 2, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 0, 5: 2, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 0, 5: 3, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 0, 5: 3, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 0, 5: 5, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 0, 5: 5, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 5, 5: 0, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 5, 5: 0, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 5, 5: 2, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 5, 5: 2, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 5, 5: 3, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 4, 4: 5, 5: 3, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 4, 5: 0, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 4, 5: 0, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 4, 5: 2, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 4, 5: 2, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 4, 5: 3, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 4, 5: 3, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 3, 5: 4, 6: 2, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 3, 5: 4, 6: 0, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 3, 5: 0, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 3, 5: 0, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 3, 5: 2, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 3, 5: 2, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 2, 5: 3, 6: 0, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 2, 5: 3, 6: 4, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 2, 5: 4, 6: 3, 7: 0},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 2, 5: 4, 6: 0, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 2, 5: 0, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 2, 5: 0, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 0, 5: 2, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 0, 5: 2, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 0, 5: 3, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 0, 5: 3, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 0, 5: 4, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 5, 4: 0, 5: 4, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 5, 5: 2, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 5, 5: 2, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 5, 5: 3, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 5, 5: 3, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 5, 5: 4, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 5, 5: 4, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 4, 5: 5, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 4, 5: 5, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 4, 5: 2, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 4, 5: 2, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 4, 5: 3, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 4, 5: 3, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 3, 5: 4, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 3, 5: 4, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 3, 5: 5, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 3, 5: 5, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 3, 5: 2, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 3, 5: 2, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 2, 5: 3, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 2, 5: 3, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 2, 5: 4, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 2, 5: 4, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 2, 5: 5, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 1, 3: 0, 4: 2, 5: 5, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 5, 5: 2, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 5, 5: 2, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 5, 5: 3, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 5, 5: 3, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 5, 5: 4, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 5, 5: 4, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 4, 5: 5, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 4, 5: 5, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 4, 5: 2, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 4, 5: 2, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 4, 5: 3, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 4, 5: 3, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 3, 5: 4, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 3, 5: 4, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 3, 5: 5, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 3, 5: 5, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 3, 5: 2, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 3, 5: 2, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 2, 5: 3, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 2, 5: 3, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 2, 5: 4, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 2, 5: 4, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 2, 5: 5, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 1, 4: 2, 5: 5, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 1, 5: 3, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 1, 5: 3, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 1, 5: 4, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 1, 5: 4, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 1, 5: 5, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 1, 5: 5, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 5, 5: 1, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 5, 5: 1, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 5, 5: 3, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 5, 5: 3, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 5, 5: 4, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 5, 5: 4, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 4, 5: 5, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 4, 5: 5, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 4, 5: 1, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 4, 5: 1, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 4, 5: 3, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 4, 5: 3, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 3, 5: 4, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 3, 5: 4, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 3, 5: 5, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 3, 5: 5, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 3, 5: 1, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 2, 4: 3, 5: 1, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 2, 5: 4, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 2, 5: 4, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 2, 5: 5, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 2, 5: 5, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 2, 5: 1, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 2, 5: 1, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 1, 5: 2, 6: 5, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 1, 5: 2, 6: 4, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 1, 5: 4, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 1, 5: 4, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 1, 5: 5, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 1, 5: 5, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 5, 5: 1, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 5, 5: 1, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 5, 5: 2, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 5, 5: 2, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 5, 5: 4, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 5, 5: 4, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 4, 5: 5, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 4, 5: 5, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 4, 5: 1, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 4, 5: 1, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 4, 5: 2, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 3, 4: 4, 5: 2, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 3, 5: 5, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 3, 5: 5, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 3, 5: 1, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 3, 5: 1, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 3, 5: 2, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 3, 5: 2, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 2, 5: 3, 6: 1, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 2, 5: 3, 6: 5, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 2, 5: 5, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 2, 5: 5, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 2, 5: 1, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 2, 5: 1, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 1, 5: 2, 6: 5, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 1, 5: 2, 6: 3, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 1, 5: 3, 6: 2, 7: 5},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 1, 5: 3, 6: 5, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 1, 5: 5, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 1, 5: 5, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 5, 5: 1, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 5, 5: 1, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 5, 5: 2, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 5, 5: 2, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 5, 5: 3, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 4, 4: 5, 5: 3, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 4, 5: 1, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 4, 5: 1, 6: 2, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 4, 5: 2, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 4, 5: 2, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 4, 5: 3, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 4, 5: 3, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 3, 5: 4, 6: 2, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 3, 5: 4, 6: 1, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 3, 5: 1, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 3, 5: 1, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 3, 5: 2, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 3, 5: 2, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 2, 5: 3, 6: 1, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 2, 5: 3, 6: 4, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 2, 5: 4, 6: 3, 7: 1},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 2, 5: 4, 6: 1, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 2, 5: 1, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 2, 5: 1, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 1, 5: 2, 6: 4, 7: 3},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 1, 5: 2, 6: 3, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 1, 5: 3, 6: 2, 7: 4},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 1, 5: 3, 6: 4, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 1, 5: 4, 6: 3, 7: 2},
{0: 7, 1: 6, 2: 0, 3: 5, 4: 1, 5: 4, 6: 2, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 4, 5: 1, 6: 3, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 4, 5: 1, 6: 2, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 4, 5: 2, 6: 1, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 4, 5: 2, 6: 3, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 4, 5: 3, 6: 2, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 4, 5: 3, 6: 1, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 3, 5: 4, 6: 2, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 3, 5: 4, 6: 1, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 3, 5: 1, 6: 4, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 3, 5: 1, 6: 2, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 3, 5: 2, 6: 1, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 3, 5: 2, 6: 4, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 2, 5: 3, 6: 1, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 2, 5: 3, 6: 4, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 2, 5: 4, 6: 3, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 2, 5: 4, 6: 1, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 2, 5: 1, 6: 4, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 2, 5: 1, 6: 3, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 1, 5: 2, 6: 4, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 1, 5: 2, 6: 3, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 1, 5: 3, 6: 2, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 1, 5: 3, 6: 4, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 1, 5: 4, 6: 3, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 0, 4: 1, 5: 4, 6: 2, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 0, 5: 2, 6: 4, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 0, 5: 2, 6: 3, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 0, 5: 3, 6: 2, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 0, 5: 3, 6: 4, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 0, 5: 4, 6: 3, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 0, 5: 4, 6: 2, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 4, 5: 0, 6: 3, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 4, 5: 0, 6: 2, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 4, 5: 2, 6: 0, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 4, 5: 2, 6: 3, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 4, 5: 3, 6: 2, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 4, 5: 3, 6: 0, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 3, 5: 4, 6: 2, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 3, 5: 4, 6: 0, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 3, 5: 0, 6: 4, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 3, 5: 0, 6: 2, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 3, 5: 2, 6: 0, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 3, 5: 2, 6: 4, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 2, 5: 3, 6: 0, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 2, 5: 3, 6: 4, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 2, 5: 4, 6: 3, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 2, 5: 4, 6: 0, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 2, 5: 0, 6: 4, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 1, 4: 2, 5: 0, 6: 3, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 1, 5: 3, 6: 0, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 1, 5: 3, 6: 4, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 1, 5: 4, 6: 3, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 1, 5: 4, 6: 0, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 1, 5: 0, 6: 4, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 1, 5: 0, 6: 3, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 0, 5: 1, 6: 4, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 0, 5: 1, 6: 3, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 0, 5: 3, 6: 1, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 0, 5: 3, 6: 4, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 0, 5: 4, 6: 3, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 0, 5: 4, 6: 1, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 4, 5: 0, 6: 3, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 4, 5: 0, 6: 1, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 4, 5: 1, 6: 0, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 4, 5: 1, 6: 3, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 4, 5: 3, 6: 1, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 4, 5: 3, 6: 0, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 3, 5: 4, 6: 1, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 3, 5: 4, 6: 0, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 3, 5: 0, 6: 4, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 3, 5: 0, 6: 1, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 3, 5: 1, 6: 0, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 2, 4: 3, 5: 1, 6: 4, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 2, 5: 4, 6: 1, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 2, 5: 4, 6: 0, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 2, 5: 0, 6: 4, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 2, 5: 0, 6: 1, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 2, 5: 1, 6: 0, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 2, 5: 1, 6: 4, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 1, 5: 2, 6: 0, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 1, 5: 2, 6: 4, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 1, 5: 4, 6: 2, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 1, 5: 4, 6: 0, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 1, 5: 0, 6: 4, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 1, 5: 0, 6: 2, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 0, 5: 1, 6: 4, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 0, 5: 1, 6: 2, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 0, 5: 2, 6: 1, 7: 4},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 0, 5: 2, 6: 4, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 0, 5: 4, 6: 2, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 0, 5: 4, 6: 1, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 4, 5: 0, 6: 2, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 4, 5: 0, 6: 1, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 4, 5: 1, 6: 0, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 4, 5: 1, 6: 2, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 4, 5: 2, 6: 1, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 3, 4: 4, 5: 2, 6: 0, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 3, 5: 0, 6: 2, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 3, 5: 0, 6: 1, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 3, 5: 1, 6: 0, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 3, 5: 1, 6: 2, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 3, 5: 2, 6: 1, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 3, 5: 2, 6: 0, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 2, 5: 3, 6: 1, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 2, 5: 3, 6: 0, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 2, 5: 0, 6: 3, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 2, 5: 0, 6: 1, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 2, 5: 1, 6: 0, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 2, 5: 1, 6: 3, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 1, 5: 2, 6: 0, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 1, 5: 2, 6: 3, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 1, 5: 3, 6: 2, 7: 0},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 1, 5: 3, 6: 0, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 1, 5: 0, 6: 3, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 1, 5: 0, 6: 2, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 0, 5: 1, 6: 3, 7: 2},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 0, 5: 1, 6: 2, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 0, 5: 2, 6: 1, 7: 3},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 0, 5: 2, 6: 3, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 0, 5: 3, 6: 2, 7: 1},
{0: 7, 1: 5, 2: 6, 3: 4, 4: 0, 5: 3, 6: 1, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 3, 5: 0, 6: 2, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 3, 5: 0, 6: 1, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 3, 5: 1, 6: 0, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 3, 5: 1, 6: 2, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 3, 5: 2, 6: 1, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 3, 5: 2, 6: 0, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 2, 5: 3, 6: 1, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 2, 5: 3, 6: 0, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 2, 5: 0, 6: 3, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 2, 5: 0, 6: 1, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 2, 5: 1, 6: 0, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 2, 5: 1, 6: 3, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 1, 5: 2, 6: 0, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 1, 5: 2, 6: 3, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 1, 5: 3, 6: 2, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 1, 5: 3, 6: 0, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 1, 5: 0, 6: 3, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 1, 5: 0, 6: 2, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 0, 5: 1, 6: 3, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 0, 5: 1, 6: 2, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 0, 5: 2, 6: 1, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 0, 5: 2, 6: 3, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 0, 5: 3, 6: 2, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 6, 4: 0, 5: 3, 6: 1, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 6, 5: 1, 6: 3, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 6, 5: 1, 6: 2, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 6, 5: 2, 6: 1, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 6, 5: 2, 6: 3, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 6, 5: 3, 6: 2, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 6, 5: 3, 6: 1, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 3, 5: 6, 6: 2, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 3, 5: 6, 6: 1, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 3, 5: 1, 6: 6, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 3, 5: 1, 6: 2, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 3, 5: 2, 6: 1, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 3, 5: 2, 6: 6, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 2, 5: 3, 6: 1, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 2, 5: 3, 6: 6, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 2, 5: 6, 6: 3, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 2, 5: 6, 6: 1, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 2, 5: 1, 6: 6, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 2, 5: 1, 6: 3, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 1, 5: 2, 6: 6, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 1, 5: 2, 6: 3, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 1, 5: 3, 6: 2, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 1, 5: 3, 6: 6, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 1, 5: 6, 6: 3, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 0, 4: 1, 5: 6, 6: 2, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 0, 5: 2, 6: 6, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 0, 5: 2, 6: 3, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 0, 5: 3, 6: 2, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 0, 5: 3, 6: 6, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 0, 5: 6, 6: 3, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 0, 5: 6, 6: 2, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 6, 5: 0, 6: 3, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 6, 5: 0, 6: 2, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 6, 5: 2, 6: 0, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 6, 5: 2, 6: 3, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 6, 5: 3, 6: 2, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 6, 5: 3, 6: 0, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 3, 5: 6, 6: 2, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 3, 5: 6, 6: 0, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 3, 5: 0, 6: 6, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 3, 5: 0, 6: 2, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 3, 5: 2, 6: 0, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 3, 5: 2, 6: 6, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 2, 5: 3, 6: 0, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 2, 5: 3, 6: 6, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 2, 5: 6, 6: 3, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 2, 5: 6, 6: 0, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 2, 5: 0, 6: 6, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 1, 4: 2, 5: 0, 6: 3, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 1, 5: 3, 6: 0, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 1, 5: 3, 6: 6, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 1, 5: 6, 6: 3, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 1, 5: 6, 6: 0, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 1, 5: 0, 6: 6, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 1, 5: 0, 6: 3, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 0, 5: 1, 6: 6, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 0, 5: 1, 6: 3, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 0, 5: 3, 6: 1, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 0, 5: 3, 6: 6, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 0, 5: 6, 6: 3, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 0, 5: 6, 6: 1, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 6, 5: 0, 6: 3, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 6, 5: 0, 6: 1, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 6, 5: 1, 6: 0, 7: 3},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 6, 5: 1, 6: 3, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 6, 5: 3, 6: 1, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 6, 5: 3, 6: 0, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 3, 5: 6, 6: 1, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 3, 5: 6, 6: 0, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 3, 5: 0, 6: 6, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 3, 5: 0, 6: 1, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 3, 5: 1, 6: 0, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 2, 4: 3, 5: 1, 6: 6, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 2, 5: 6, 6: 1, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 2, 5: 6, 6: 0, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 2, 5: 0, 6: 6, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 2, 5: 0, 6: 1, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 2, 5: 1, 6: 0, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 2, 5: 1, 6: 6, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 1, 5: 2, 6: 0, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 1, 5: 2, 6: 6, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 1, 5: 6, 6: 2, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 1, 5: 6, 6: 0, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 1, 5: 0, 6: 6, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 1, 5: 0, 6: 2, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 0, 5: 1, 6: 6, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 0, 5: 1, 6: 2, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 0, 5: 2, 6: 1, 7: 6},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 0, 5: 2, 6: 6, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 0, 5: 6, 6: 2, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 0, 5: 6, 6: 1, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 6, 5: 0, 6: 2, 7: 1},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 6, 5: 0, 6: 1, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 6, 5: 1, 6: 0, 7: 2},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 6, 5: 1, 6: 2, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 6, 5: 2, 6: 1, 7: 0},
{0: 7, 1: 5, 2: 4, 3: 3, 4: 6, 5: 2, 6: 0, 7: 1},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 2, 5: 6, 6: 1, 7: 0},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 2, 5: 6, 6: 0, 7: 1},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 2, 5: 0, 6: 6, 7: 1},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 2, 5: 0, 6: 1, 7: 6},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 2, 5: 1, 6: 0, 7: 6},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 2, 5: 1, 6: 6, 7: 0},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 1, 5: 2, 6: 0, 7: 6},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 1, 5: 2, 6: 6, 7: 0},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 1, 5: 6, 6: 2, 7: 0},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 1, 5: 6, 6: 0, 7: 2},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 1, 5: 0, 6: 6, 7: 2},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 1, 5: 0, 6: 2, 7: 6},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 0, 5: 1, 6: 6, 7: 2},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 0, 5: 1, 6: 2, 7: 6},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 0, 5: 2, 6: 1, 7: 6},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 0, 5: 2, 6: 6, 7: 1},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 0, 5: 6, 6: 2, 7: 1},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 0, 5: 6, 6: 1, 7: 2},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 6, 5: 0, 6: 2, 7: 1},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 6, 5: 0, 6: 1, 7: 2},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 6, 5: 1, 6: 0, 7: 2},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 6, 5: 1, 6: 2, 7: 0},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 6, 5: 2, 6: 1, 7: 0},
{0: 7, 1: 5, 2: 3, 3: 4, 4: 6, 5: 2, 6: 0, 7: 1},
{0: 7, 1: 5, 2: 3, 3: 6, 4: 4, 5: 0, 6: 2, 7: 1},
{0: 7, 1: 5, 2: 3, 3: 6, 4: 4, 5: 0, 6: 1, 7: 2},
{0: 7, 1: 5, 2: 3, 3: 6, 4: 4, 5: 1, 6: 0, 7: 2},
{0: 7, 1: 5, 2: 3, 3: 6, 4: 4, 5: 1, 6: 2, 7: 0},
{0: 7, 1: 5, 2: 3, 3: 6, 4: 4, 5: 2, 6: 1, 7: 0},
{0: 7, 1: 5, 2: 3, 3: 6, 4: 4, 5: 2, 6: 0, 7: 1},
{0: 7, 1: 5, 2: 3, 3: 6, 4: 2, 5: 4, 6: 1, 7: 0},
{0: 7, 1: 5, 2: 3, 3: 6, 4: 2, 5: 4, 6: 0, 7: 1},
{0: 7, 1: 5, 2: 3, 3: 6, 4: 2, 5: 0, 6: 4, 7: 1},
{0: 7, 1: 5, 2: 3, 3: 6, 4: 2, 5: 0, 6: 1, 7: 4},
{0: 7, 1: 5, 2: 3, 3: 6, 4: 2, 5: 1, 6: 0, 7: 4},
{0: 7, 1: 5, 2: 3, 3: 6, 4: 2, 5: 1, 6: 4, 7: 0},
{0: 7, 1: 5, 2: 3, 3: 6, 4: 1, 5: 2, 6: 0, 7: 4},
{0: 7, 1: 5, 2: 3, 3: 6, 4: 1, 5: 2, 6: 4, 7: 0},
{0: 7, 1: 5, 2: 3, 3: 6, 4: 1, 5: 4, 6: 2, 7: 0},
{0: 7, 1: 5, 2: 3, 3: 6, 4: 1, 5: 4, 6: 0, 7: 2},
...]
Este ejemplo resuelve un cuadrado mágico 4x4:
problem = Problem()
problem.addVariables(range(0, 16), range(1, 16 + 1))
problem.addConstraint(AllDifferentConstraint(), range(0, 16))
problem.addConstraint(ExactSumConstraint(34), [0, 5, 10, 15])
problem.addConstraint(ExactSumConstraint(34), [3, 6, 9, 12])
for row in range(4):
problem.addConstraint(ExactSumConstraint(34),
[row * 4 + i for i in range(4)])
for col in range(4):
problem.addConstraint(ExactSumConstraint(34),
[col + 4 * i for i in range(4)])
problem.getSolution()
{0: 16,
3: 13,
5: 11,
10: 5,
15: 2,
6: 10,
9: 8,
12: 3,
1: 1,
2: 4,
4: 6,
7: 7,
8: 9,
11: 12,
13: 14,
14: 15}