Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- from itertools import permutations, product
- class WrongSize(Exception):
- pass
- # Finds out how many dimensions the solution trace has.
- def Dimensions(trace, side):
- power, exponent = 1, 1
- while power < len(trace):
- power *= side
- exponent += 1
- if power != len(trace):
- raise WrongSize()
- return exponent
- # Generates functions that transform a cell's coordinates to its image.
- # For a number of dimensions D, there are {factorial(D) * 2**D} symmetries.
- def Symmetries(dimensions, side):
- return (lambda cell: (cell[p[i]] if s[i] else side - cell[p[i]] - 1
- for i in range(len(cell)))
- for p, s in product(permutations(range(dimensions)),
- product(*((True, False),) * dimensions)))
- # Transforms an expanded solution (full coordinates of each cell) to a solution
- # trace containing the significant (lowest order) coordinates only.
- def SolutionToTrace(solution):
- return (cell[-1] for cell in sorted(solution))
- # Transforms a solution trace containing the significant (lowest order)
- # coordinates only to an expanded solution (full coordinates of each cell).
- def TraceToSolution(trace, side):
- dimensions = Dimensions(trace, side)
- return (p + (s,)
- for p, s in zip(product(*(range(side),) * (dimensions - 1)), trace))
- # Generates all symmetries for the given trace, based on its dimensionality.
- # For example, there will be 8 symmetries in 2D, 48 in 3D, 384 in 4D etc.
- def ExpandSymmetries(traces, side):
- for t, trace in enumerate(traces):
- for s, sym in enumerate(Symmetries(Dimensions(trace, side), side)):
- yield SolutionToTrace(tuple(sym(tuple(c)))
- for c in TraceToSolution(trace, side)), t, s
- # Based on a set of canonical solutions (solution seeds), generates all existing
- # solutions using symmetries and identifies duplicates (while describing which
- # canonical solutions and symmetries each duplicate came from).
- def SummarizeSolutions(traces, side):
- traces_to_recipes = {}
- for trace, t, s in ExpandSymmetries(traces, side):
- traces_to_recipes.setdefault(tuple(trace), []).append((t, s))
- n_unique, n_total = 0, 0
- for n, trace in enumerate(sorted(traces_to_recipes)):
- recipes = traces_to_recipes[trace]
- n_total += len(recipes)
- n_unique += 1
- recipe = ' or '.join(f'canonical {t} and symetry {s}' for t, s in recipes)
- print(f'Solution {n} from {recipe}:\n{trace}\n')
- print(f'{len(traces)} canonical solutions\n'
- f'{n_unique} unique solutions\n'
- f'{n_total} canonical solutions × symmetries\n'
- f'{n_total - n_unique} overlaps')
- CANONICALS_11 = [
- [0, 2, 4, 6, 8, 10, 1, 3, 5, 7, 9, 4, 6, 8, 10, 1, 3, 5, 7, 9, 0, 2, 8, 10, 1, 3, 5, 7, 9, 0, 2, 4, 6, 1, 3, 5, 7, 9, 0, 2, 4, 6, 8, 10, 5, 7, 9, 0, 2, 4, 6, 8, 10, 1, 3, 9, 0, 2, 4, 6, 8, 10, 1, 3, 5, 7, 2, 4, 6, 8, 10, 1, 3, 5, 7, 9, 0, 6, 8, 10, 1, 3, 5, 7, 9, 0, 2, 4, 10, 1, 3, 5, 7, 9, 0, 2, 4, 6, 8, 3, 5, 7, 9, 0, 2, 4, 6, 8, 10, 1, 7, 9, 0, 2, 4, 6, 8, 10, 1, 3, 5],
- [0, 2, 4, 6, 8, 10, 1, 3, 5, 7, 9, 5, 7, 9, 0, 2, 4, 6, 8, 10, 1, 3, 10, 1, 3, 5, 7, 9, 0, 2, 4, 6, 8, 4, 6, 8, 10, 1, 3, 5, 7, 9, 0, 2, 9, 0, 2, 4, 6, 8, 10, 1, 3, 5, 7, 3, 5, 7, 9, 0, 2, 4, 6, 8, 10, 1, 8, 10, 1, 3, 5, 7, 9, 0, 2, 4, 6, 2, 4, 6, 8, 10, 1, 3, 5, 7, 9, 0, 7, 9, 0, 2, 4, 6, 8, 10, 1, 3, 5, 1, 3, 5, 7, 9, 0, 2, 4, 6, 8, 10, 6, 8, 10, 1, 3, 5, 7, 9, 0, 2, 4],
- [0, 2, 4, 6, 8, 10, 1, 3, 5, 7, 9, 6, 8, 10, 1, 3, 5, 7, 9, 0, 2, 4, 1, 3, 5, 7, 9, 0, 2, 4, 6, 8, 10, 7, 9, 0, 2, 4, 6, 8, 10, 1, 3, 5, 2, 4, 6, 8, 10, 1, 3, 5, 7, 9, 0, 8, 10, 1, 3, 5, 7, 9, 0, 2, 4, 6, 3, 5, 7, 9, 0, 2, 4, 6, 8, 10, 1, 9, 0, 2, 4, 6, 8, 10, 1, 3, 5, 7, 4, 6, 8, 10, 1, 3, 5, 7, 9, 0, 2, 10, 1, 3, 5, 7, 9, 0, 2, 4, 6, 8, 5, 7, 9, 0, 2, 4, 6, 8, 10, 1, 3],
- [0, 5, 10, 4, 9, 3, 8, 2, 7, 1, 6, 8, 2, 7, 1, 6, 0, 5, 10, 4, 9, 3, 5, 10, 4, 9, 3, 8, 2, 7, 1, 6, 0, 2, 7, 1, 6, 0, 5, 10, 4, 9, 3, 8, 10, 4, 9, 3, 8, 2, 7, 1, 6, 0, 5, 7, 1, 6, 0, 5, 10, 4, 9, 3, 8, 2, 4, 9, 3, 8, 2, 7, 1, 6, 0, 5, 10, 1, 6, 0, 5, 10, 4, 9, 3, 8, 2, 7, 9, 3, 8, 2, 7, 1, 6, 0, 5, 10, 4, 6, 0, 5, 10, 4, 9, 3, 8, 2, 7, 1, 3, 8, 2, 7, 1, 6, 0, 5, 10, 4, 9],
- [1, 4, 7, 10, 2, 5, 8, 0, 3, 6, 9, 6, 9, 1, 4, 7, 10, 2, 5, 8, 0, 3, 0, 3, 6, 9, 1, 4, 7, 10, 2, 5, 8, 5, 8, 0, 3, 6, 9, 1, 4, 7, 10, 2, 10, 2, 5, 8, 0, 3, 6, 9, 1, 4, 7, 4, 7, 10, 2, 5, 8, 0, 3, 6, 9, 1, 9, 1, 4, 7, 10, 2, 5, 8, 0, 3, 6, 3, 6, 9, 1, 4, 7, 10, 2, 5, 8, 0, 8, 0, 3, 6, 9, 1, 4, 7, 10, 2, 5, 2, 5, 8, 0, 3, 6, 9, 1, 4, 7, 10, 7, 10, 2, 5, 8, 0, 3, 6, 9, 1, 4],
- [1, 6, 0, 5, 10, 4, 9, 3, 8, 2, 7, 10, 4, 9, 3, 8, 2, 7, 1, 6, 0, 5, 8, 2, 7, 1, 6, 0, 5, 10, 4, 9, 3, 6, 0, 5, 10, 4, 9, 3, 8, 2, 7, 1, 4, 9, 3, 8, 2, 7, 1, 6, 0, 5, 10, 2, 7, 1, 6, 0, 5, 10, 4, 9, 3, 8, 0, 5, 10, 4, 9, 3, 8, 2, 7, 1, 6, 9, 3, 8, 2, 7, 1, 6, 0, 5, 10, 4, 7, 1, 6, 0, 5, 10, 4, 9, 3, 8, 2, 5, 10, 4, 9, 3, 8, 2, 7, 1, 6, 0, 3, 8, 2, 7, 1, 6, 0, 5, 10, 4, 9]]
- CANONICALS_13 = [
- [0, 2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11, 0, 2, 8, 10, 12, 1, 3, 5, 7, 9, 11, 0, 2, 4, 6, 12, 1, 3, 5, 7, 9, 11, 0, 2, 4, 6, 8, 10, 3, 5, 7, 9, 11, 0, 2, 4, 6, 8, 10, 12, 1, 7, 9, 11, 0, 2, 4, 6, 8, 10, 12, 1, 3, 5, 11, 0, 2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11, 0, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11, 0, 2, 4, 10, 12, 1, 3, 5, 7, 9, 11, 0, 2, 4, 6, 8, 1, 3, 5, 7, 9, 11, 0, 2, 4, 6, 8, 10, 12, 5, 7, 9, 11, 0, 2, 4, 6, 8, 10, 12, 1, 3, 9, 11, 0, 2, 4, 6, 8, 10, 12, 1, 3, 5, 7],
- [0, 2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11, 5, 7, 9, 11, 0, 2, 4, 6, 8, 10, 12, 1, 3, 10, 12, 1, 3, 5, 7, 9, 11, 0, 2, 4, 6, 8, 2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11, 0, 7, 9, 11, 0, 2, 4, 6, 8, 10, 12, 1, 3, 5, 12, 1, 3, 5, 7, 9, 11, 0, 2, 4, 6, 8, 10, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11, 0, 2, 9, 11, 0, 2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 1, 3, 5, 7, 9, 11, 0, 2, 4, 6, 8, 10, 12, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11, 0, 2, 4, 11, 0, 2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 3, 5, 7, 9, 11, 0, 2, 4, 6, 8, 10, 12, 1, 8, 10, 12, 1, 3, 5, 7, 9, 11, 0, 2, 4, 6],
- [0, 2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11, 0, 2, 4, 12, 1, 3, 5, 7, 9, 11, 0, 2, 4, 6, 8, 10, 5, 7, 9, 11, 0, 2, 4, 6, 8, 10, 12, 1, 3, 11, 0, 2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11, 0, 2, 10, 12, 1, 3, 5, 7, 9, 11, 0, 2, 4, 6, 8, 3, 5, 7, 9, 11, 0, 2, 4, 6, 8, 10, 12, 1, 9, 11, 0, 2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11, 0, 8, 10, 12, 1, 3, 5, 7, 9, 11, 0, 2, 4, 6, 1, 3, 5, 7, 9, 11, 0, 2, 4, 6, 8, 10, 12, 7, 9, 11, 0, 2, 4, 6, 8, 10, 12, 1, 3, 5],
- [0, 2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11, 7, 9, 11, 0, 2, 4, 6, 8, 10, 12, 1, 3, 5, 1, 3, 5, 7, 9, 11, 0, 2, 4, 6, 8, 10, 12, 8, 10, 12, 1, 3, 5, 7, 9, 11, 0, 2, 4, 6, 2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11, 0, 9, 11, 0, 2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 3, 5, 7, 9, 11, 0, 2, 4, 6, 8, 10, 12, 1, 10, 12, 1, 3, 5, 7, 9, 11, 0, 2, 4, 6, 8, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11, 0, 2, 11, 0, 2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 5, 7, 9, 11, 0, 2, 4, 6, 8, 10, 12, 1, 3, 12, 1, 3, 5, 7, 9, 11, 0, 2, 4, 6, 8, 10, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11, 0, 2, 4],
- [0, 2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11, 8, 10, 12, 1, 3, 5, 7, 9, 11, 0, 2, 4, 6, 3, 5, 7, 9, 11, 0, 2, 4, 6, 8, 10, 12, 1, 11, 0, 2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11, 0, 2, 4, 1, 3, 5, 7, 9, 11, 0, 2, 4, 6, 8, 10, 12, 9, 11, 0, 2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11, 0, 2, 12, 1, 3, 5, 7, 9, 11, 0, 2, 4, 6, 8, 10, 7, 9, 11, 0, 2, 4, 6, 8, 10, 12, 1, 3, 5, 2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11, 0, 10, 12, 1, 3, 5, 7, 9, 11, 0, 2, 4, 6, 8, 5, 7, 9, 11, 0, 2, 4, 6, 8, 10, 12, 1, 3],
- [0, 3, 6, 9, 12, 2, 5, 8, 11, 1, 4, 7, 10, 6, 9, 12, 2, 5, 8, 11, 1, 4, 7, 10, 0, 3, 12, 2, 5, 8, 11, 1, 4, 7, 10, 0, 3, 6, 9, 5, 8, 11, 1, 4, 7, 10, 0, 3, 6, 9, 12, 2, 11, 1, 4, 7, 10, 0, 3, 6, 9, 12, 2, 5, 8, 4, 7, 10, 0, 3, 6, 9, 12, 2, 5, 8, 11, 1, 10, 0, 3, 6, 9, 12, 2, 5, 8, 11, 1, 4, 7, 3, 6, 9, 12, 2, 5, 8, 11, 1, 4, 7, 10, 0, 9, 12, 2, 5, 8, 11, 1, 4, 7, 10, 0, 3, 6, 2, 5, 8, 11, 1, 4, 7, 10, 0, 3, 6, 9, 12, 8, 11, 1, 4, 7, 10, 0, 3, 6, 9, 12, 2, 5, 1, 4, 7, 10, 0, 3, 6, 9, 12, 2, 5, 8, 11, 7, 10, 0, 3, 6, 9, 12, 2, 5, 8, 11, 1, 4],
- [0, 3, 6, 9, 12, 2, 5, 8, 11, 1, 4, 7, 10, 8, 11, 1, 4, 7, 10, 0, 3, 6, 9, 12, 2, 5, 3, 6, 9, 12, 2, 5, 8, 11, 1, 4, 7, 10, 0, 11, 1, 4, 7, 10, 0, 3, 6, 9, 12, 2, 5, 8, 6, 9, 12, 2, 5, 8, 11, 1, 4, 7, 10, 0, 3, 1, 4, 7, 10, 0, 3, 6, 9, 12, 2, 5, 8, 11, 9, 12, 2, 5, 8, 11, 1, 4, 7, 10, 0, 3, 6, 4, 7, 10, 0, 3, 6, 9, 12, 2, 5, 8, 11, 1, 12, 2, 5, 8, 11, 1, 4, 7, 10, 0, 3, 6, 9, 7, 10, 0, 3, 6, 9, 12, 2, 5, 8, 11, 1, 4, 2, 5, 8, 11, 1, 4, 7, 10, 0, 3, 6, 9, 12, 10, 0, 3, 6, 9, 12, 2, 5, 8, 11, 1, 4, 7, 5, 8, 11, 1, 4, 7, 10, 0, 3, 6, 9, 12, 2],
- [0, 4, 8, 12, 3, 7, 11, 2, 6, 10, 1, 5, 9, 6, 10, 1, 5, 9, 0, 4, 8, 12, 3, 7, 11, 2, 12, 3, 7, 11, 2, 6, 10, 1, 5, 9, 0, 4, 8, 5, 9, 0, 4, 8, 12, 3, 7, 11, 2, 6, 10, 1, 11, 2, 6, 10, 1, 5, 9, 0, 4, 8, 12, 3, 7, 4, 8, 12, 3, 7, 11, 2, 6, 10, 1, 5, 9, 0, 10, 1, 5, 9, 0, 4, 8, 12, 3, 7, 11, 2, 6, 3, 7, 11, 2, 6, 10, 1, 5, 9, 0, 4, 8, 12, 9, 0, 4, 8, 12, 3, 7, 11, 2, 6, 10, 1, 5, 2, 6, 10, 1, 5, 9, 0, 4, 8, 12, 3, 7, 11, 8, 12, 3, 7, 11, 2, 6, 10, 1, 5, 9, 0, 4, 1, 5, 9, 0, 4, 8, 12, 3, 7, 11, 2, 6, 10, 7, 11, 2, 6, 10, 1, 5, 9, 0, 4, 8, 12, 3],
- [1, 4, 7, 10, 0, 3, 6, 9, 12, 2, 5, 8, 11, 6, 9, 12, 2, 5, 8, 11, 1, 4, 7, 10, 0, 3, 11, 1, 4, 7, 10, 0, 3, 6, 9, 12, 2, 5, 8, 3, 6, 9, 12, 2, 5, 8, 11, 1, 4, 7, 10, 0, 8, 11, 1, 4, 7, 10, 0, 3, 6, 9, 12, 2, 5, 0, 3, 6, 9, 12, 2, 5, 8, 11, 1, 4, 7, 10, 5, 8, 11, 1, 4, 7, 10, 0, 3, 6, 9, 12, 2, 10, 0, 3, 6, 9, 12, 2, 5, 8, 11, 1, 4, 7, 2, 5, 8, 11, 1, 4, 7, 10, 0, 3, 6, 9, 12, 7, 10, 0, 3, 6, 9, 12, 2, 5, 8, 11, 1, 4, 12, 2, 5, 8, 11, 1, 4, 7, 10, 0, 3, 6, 9, 4, 7, 10, 0, 3, 6, 9, 12, 2, 5, 8, 11, 1, 9, 12, 2, 5, 8, 11, 1, 4, 7, 10, 0, 3, 6],
- [1, 4, 7, 10, 0, 3, 6, 9, 12, 2, 5, 8, 11, 7, 10, 0, 3, 6, 9, 12, 2, 5, 8, 11, 1, 4, 0, 3, 6, 9, 12, 2, 5, 8, 11, 1, 4, 7, 10, 6, 9, 12, 2, 5, 8, 11, 1, 4, 7, 10, 0, 3, 12, 2, 5, 8, 11, 1, 4, 7, 10, 0, 3, 6, 9, 5, 8, 11, 1, 4, 7, 10, 0, 3, 6, 9, 12, 2, 11, 1, 4, 7, 10, 0, 3, 6, 9, 12, 2, 5, 8, 4, 7, 10, 0, 3, 6, 9, 12, 2, 5, 8, 11, 1, 10, 0, 3, 6, 9, 12, 2, 5, 8, 11, 1, 4, 7, 3, 6, 9, 12, 2, 5, 8, 11, 1, 4, 7, 10, 0, 9, 12, 2, 5, 8, 11, 1, 4, 7, 10, 0, 3, 6, 2, 5, 8, 11, 1, 4, 7, 10, 0, 3, 6, 9, 12, 8, 11, 1, 4, 7, 10, 0, 3, 6, 9, 12, 2, 5],
- [1, 5, 9, 0, 4, 8, 12, 3, 7, 11, 2, 6, 10, 8, 12, 3, 7, 11, 2, 6, 10, 1, 5, 9, 0, 4, 2, 6, 10, 1, 5, 9, 0, 4, 8, 12, 3, 7, 11, 9, 0, 4, 8, 12, 3, 7, 11, 2, 6, 10, 1, 5, 3, 7, 11, 2, 6, 10, 1, 5, 9, 0, 4, 8, 12, 10, 1, 5, 9, 0, 4, 8, 12, 3, 7, 11, 2, 6, 4, 8, 12, 3, 7, 11, 2, 6, 10, 1, 5, 9, 0, 11, 2, 6, 10, 1, 5, 9, 0, 4, 8, 12, 3, 7, 5, 9, 0, 4, 8, 12, 3, 7, 11, 2, 6, 10, 1, 12, 3, 7, 11, 2, 6, 10, 1, 5, 9, 0, 4, 8, 6, 10, 1, 5, 9, 0, 4, 8, 12, 3, 7, 11, 2, 0, 4, 8, 12, 3, 7, 11, 2, 6, 10, 1, 5, 9, 7, 11, 2, 6, 10, 1, 5, 9, 0, 4, 8, 12, 3],
- [1, 6, 11, 3, 8, 0, 5, 10, 2, 7, 12, 4, 9, 12, 4, 9, 1, 6, 11, 3, 8, 0, 5, 10, 2, 7, 10, 2, 7, 12, 4, 9, 1, 6, 11, 3, 8, 0, 5, 8, 0, 5, 10, 2, 7, 12, 4, 9, 1, 6, 11, 3, 6, 11, 3, 8, 0, 5, 10, 2, 7, 12, 4, 9, 1, 4, 9, 1, 6, 11, 3, 8, 0, 5, 10, 2, 7, 12, 2, 7, 12, 4, 9, 1, 6, 11, 3, 8, 0, 5, 10, 0, 5, 10, 2, 7, 12, 4, 9, 1, 6, 11, 3, 8, 11, 3, 8, 0, 5, 10, 2, 7, 12, 4, 9, 1, 6, 9, 1, 6, 11, 3, 8, 0, 5, 10, 2, 7, 12, 4, 7, 12, 4, 9, 1, 6, 11, 3, 8, 0, 5, 10, 2, 5, 10, 2, 7, 12, 4, 9, 1, 6, 11, 3, 8, 0, 3, 8, 0, 5, 10, 2, 7, 12, 4, 9, 1, 6, 11],
- [1, 7, 0, 6, 12, 5, 11, 4, 10, 3, 9, 2, 8, 11, 4, 10, 3, 9, 2, 8, 1, 7, 0, 6, 12, 5, 8, 1, 7, 0, 6, 12, 5, 11, 4, 10, 3, 9, 2, 5, 11, 4, 10, 3, 9, 2, 8, 1, 7, 0, 6, 12, 2, 8, 1, 7, 0, 6, 12, 5, 11, 4, 10, 3, 9, 12, 5, 11, 4, 10, 3, 9, 2, 8, 1, 7, 0, 6, 9, 2, 8, 1, 7, 0, 6, 12, 5, 11, 4, 10, 3, 6, 12, 5, 11, 4, 10, 3, 9, 2, 8, 1, 7, 0, 3, 9, 2, 8, 1, 7, 0, 6, 12, 5, 11, 4, 10, 0, 6, 12, 5, 11, 4, 10, 3, 9, 2, 8, 1, 7, 10, 3, 9, 2, 8, 1, 7, 0, 6, 12, 5, 11, 4, 7, 0, 6, 12, 5, 11, 4, 10, 3, 9, 2, 8, 1, 4, 10, 3, 9, 2, 8, 1, 7, 0, 6, 12, 5, 11],
- [1, 8, 2, 9, 3, 10, 4, 11, 5, 12, 6, 0, 7, 11, 5, 12, 6, 0, 7, 1, 8, 2, 9, 3, 10, 4, 8, 2, 9, 3, 10, 4, 11, 5, 12, 6, 0, 7, 1, 5, 12, 6, 0, 7, 1, 8, 2, 9, 3, 10, 4, 11, 2, 9, 3, 10, 4, 11, 5, 12, 6, 0, 7, 1, 8, 12, 6, 0, 7, 1, 8, 2, 9, 3, 10, 4, 11, 5, 9, 3, 10, 4, 11, 5, 12, 6, 0, 7, 1, 8, 2, 6, 0, 7, 1, 8, 2, 9, 3, 10, 4, 11, 5, 12, 3, 10, 4, 11, 5, 12, 6, 0, 7, 1, 8, 2, 9, 0, 7, 1, 8, 2, 9, 3, 10, 4, 11, 5, 12, 6, 10, 4, 11, 5, 12, 6, 0, 7, 1, 8, 2, 9, 3, 7, 1, 8, 2, 9, 3, 10, 4, 11, 5, 12, 6, 0, 4, 11, 5, 12, 6, 0, 7, 1, 8, 2, 9, 3, 10]]
- CANONICALS_17 = [
- [0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11],
- [0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10],
- [0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9],
- [0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8],
- [0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7],
- [0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6],
- [0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5],
- [0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4],
- [0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 10, 12, 14, 16, 1, 3, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 5, 7, 9, 11, 13, 15, 0, 2, 4, 6, 8, 10, 12, 14, 16, 1, 3],
- [0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9],
- [0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8],
- [0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4],
- [0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2],
- [0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6],
- [0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5],
- [0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2],
- [0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4],
- [0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2],
- [0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14],
- [0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12],
- [1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10],
- [1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9],
- [1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8],
- [1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 11, 14, 0, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 2, 5, 8, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7, 10, 13, 16, 10, 13, 16, 2, 5, 8, 11, 14, 0, 3, 6, 9, 12, 15, 1, 4, 7],
- [1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8],
- [1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7],
- [1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6],
- [1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5],
- [1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 13, 0, 4, 8, 12, 16, 3, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 7, 11, 15, 2, 6, 10, 14, 1, 5, 9, 13, 0, 4, 8, 12, 16, 3],
- [1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6],
- [1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5],
- [1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3],
- [1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 9, 14, 2, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 7, 12, 0, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 5, 10, 15, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 3, 8, 13, 1, 6, 11, 16, 4, 9, 14, 2, 7, 12, 0, 5, 10, 15],
- [1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4],
- [1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3],
- [1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15, 4, 7, 13, 2, 8, 14, 3, 9, 15, 4, 10, 16, 5, 11, 0, 6, 12, 1, 4, 10, 16, 5, 11, 0, 6, 12, 1, 7, 13, 2, 8, 14, 3, 9, 15],
- [1, 8, 15, 5, 12, 2, 9, 16, 6, 13, 3, 10, 0, 7, 14, 4, 11, 14, 4, 11, 1, 8, 15, 5, 12, 2, 9, 16, 6, 13, 3, 10, 0, 7, 10, 0, 7, 14, 4, 11, 1, 8, 15, 5, 12, 2, 9, 16, 6, 13, 3, 6, 13, 3, 10, 0, 7, 14, 4, 11, 1, 8, 15, 5, 12, 2, 9, 16, 2, 9, 16, 6, 13, 3, 10, 0, 7, 14, 4, 11, 1, 8, 15, 5, 12, 15, 5, 12, 2, 9, 16, 6, 13, 3, 10, 0, 7, 14, 4, 11, 1, 8, 11, 1, 8, 15, 5, 12, 2, 9, 16, 6, 13, 3, 10, 0, 7, 14, 4, 7, 14, 4, 11, 1, 8, 15, 5, 12, 2, 9, 16, 6, 13, 3, 10, 0, 3, 10, 0, 7, 14, 4, 11, 1, 8, 15, 5, 12, 2, 9, 16, 6, 13, 16, 6, 13, 3, 10, 0, 7, 14, 4, 11, 1, 8, 15, 5, 12, 2, 9, 12, 2, 9, 16, 6, 13, 3, 10, 0, 7, 14, 4, 11, 1, 8, 15, 5, 8, 15, 5, 12, 2, 9, 16, 6, 13, 3, 10, 0, 7, 14, 4, 11, 1, 4, 11, 1, 8, 15, 5, 12, 2, 9, 16, 6, 13, 3, 10, 0, 7, 14, 0, 7, 14, 4, 11, 1, 8, 15, 5, 12, 2, 9, 16, 6, 13, 3, 10, 13, 3, 10, 0, 7, 14, 4, 11, 1, 8, 15, 5, 12, 2, 9, 16, 6, 9, 16, 6, 13, 3, 10, 0, 7, 14, 4, 11, 1, 8, 15, 5, 12, 2, 5, 12, 2, 9, 16, 6, 13, 3, 10, 0, 7, 14, 4, 11, 1, 8, 15],
- [1, 8, 15, 5, 12, 2, 9, 16, 6, 13, 3, 10, 0, 7, 14, 4, 11, 16, 6, 13, 3, 10, 0, 7, 14, 4, 11, 1, 8, 15, 5, 12, 2, 9, 14, 4, 11, 1, 8, 15, 5, 12, 2, 9, 16, 6, 13, 3, 10, 0, 7, 12, 2, 9, 16, 6, 13, 3, 10, 0, 7, 14, 4, 11, 1, 8, 15, 5, 10, 0, 7, 14, 4, 11, 1, 8, 15, 5, 12, 2, 9, 16, 6, 13, 3, 8, 15, 5, 12, 2, 9, 16, 6, 13, 3, 10, 0, 7, 14, 4, 11, 1, 6, 13, 3, 10, 0, 7, 14, 4, 11, 1, 8, 15, 5, 12, 2, 9, 16, 4, 11, 1, 8, 15, 5, 12, 2, 9, 16, 6, 13, 3, 10, 0, 7, 14, 2, 9, 16, 6, 13, 3, 10, 0, 7, 14, 4, 11, 1, 8, 15, 5, 12, 0, 7, 14, 4, 11, 1, 8, 15, 5, 12, 2, 9, 16, 6, 13, 3, 10, 15, 5, 12, 2, 9, 16, 6, 13, 3, 10, 0, 7, 14, 4, 11, 1, 8, 13, 3, 10, 0, 7, 14, 4, 11, 1, 8, 15, 5, 12, 2, 9, 16, 6, 11, 1, 8, 15, 5, 12, 2, 9, 16, 6, 13, 3, 10, 0, 7, 14, 4, 9, 16, 6, 13, 3, 10, 0, 7, 14, 4, 11, 1, 8, 15, 5, 12, 2, 7, 14, 4, 11, 1, 8, 15, 5, 12, 2, 9, 16, 6, 13, 3, 10, 0, 5, 12, 2, 9, 16, 6, 13, 3, 10, 0, 7, 14, 4, 11, 1, 8, 15, 3, 10, 0, 7, 14, 4, 11, 1, 8, 15, 5, 12, 2, 9, 16, 6, 13],
- [1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15],
- [1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14],
- [1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 7, 15, 6, 14, 5, 13, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 4, 12, 3, 11, 2, 10, 1, 9, 0, 8, 16, 7, 15, 6, 14, 5, 13],
- [1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13],
- [1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12],
- [1, 11, 4, 14, 7, 0, 10, 3, 13, 6, 16, 9, 2, 12, 5, 15, 8, 15, 8, 1, 11, 4, 14, 7, 0, 10, 3, 13, 6, 16, 9, 2, 12, 5, 12, 5, 15, 8, 1, 11, 4, 14, 7, 0, 10, 3, 13, 6, 16, 9, 2, 9, 2, 12, 5, 15, 8, 1, 11, 4, 14, 7, 0, 10, 3, 13, 6, 16, 6, 16, 9, 2, 12, 5, 15, 8, 1, 11, 4, 14, 7, 0, 10, 3, 13, 3, 13, 6, 16, 9, 2, 12, 5, 15, 8, 1, 11, 4, 14, 7, 0, 10, 0, 10, 3, 13, 6, 16, 9, 2, 12, 5, 15, 8, 1, 11, 4, 14, 7, 14, 7, 0, 10, 3, 13, 6, 16, 9, 2, 12, 5, 15, 8, 1, 11, 4, 11, 4, 14, 7, 0, 10, 3, 13, 6, 16, 9, 2, 12, 5, 15, 8, 1, 8, 1, 11, 4, 14, 7, 0, 10, 3, 13, 6, 16, 9, 2, 12, 5, 15, 5, 15, 8, 1, 11, 4, 14, 7, 0, 10, 3, 13, 6, 16, 9, 2, 12, 2, 12, 5, 15, 8, 1, 11, 4, 14, 7, 0, 10, 3, 13, 6, 16, 9, 16, 9, 2, 12, 5, 15, 8, 1, 11, 4, 14, 7, 0, 10, 3, 13, 6, 13, 6, 16, 9, 2, 12, 5, 15, 8, 1, 11, 4, 14, 7, 0, 10, 3, 10, 3, 13, 6, 16, 9, 2, 12, 5, 15, 8, 1, 11, 4, 14, 7, 0, 7, 0, 10, 3, 13, 6, 16, 9, 2, 12, 5, 15, 8, 1, 11, 4, 14, 4, 14, 7, 0, 10, 3, 13, 6, 16, 9, 2, 12, 5, 15, 8, 1, 11],
- [2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 14, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8, 0, 9, 1, 6, 15, 7, 16, 8, 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14]]
- print(f'\n{'=' * 30}11{'=' * 30}\n')
- SummarizeSolutions(CANONICALS_11, 11)
- print(f'\n{'=' * 30}13{'=' * 30}\n')
- SummarizeSolutions(CANONICALS_13, 13)
- print(f'\n{'=' * 30}17{'=' * 30}\n')
- SummarizeSolutions(CANONICALS_17, 17)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement