DanielCalle / python-constraints

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

python-constraint

Constraint Solving Problem resolver for Python

Daniel Calle, Adrian Dorta, Zihao Hong

Introducción

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, …).

¿Como comenzamos?

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 *

Problem

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

Resolutores

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

Backtracking solver

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

Recursive backtracking solver

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

Minimum conflicts solver

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

Restricciones

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}]

Ejemplos

Ahora vamos a ver algunos ejemplos de implementación de problemas

Problema de las Torres

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},
 ...]

Cuadrados mágicos

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}

About


Languages

Language:HTML 81.0%Language:Jupyter Notebook 19.0%