Advertisement
andrejpodzimek

Solutions to the 11³, 13³ and 17³ Queens Puzzle

Feb 25th, 2025 (edited)
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 56.15 KB | Source Code | 0 0
  1. #!/usr/bin/env python
  2.  
  3. from itertools import permutations, product
  4.  
  5. class WrongSize(Exception):
  6. pass
  7.  
  8. # Finds out how many dimensions the solution trace has.
  9. def Dimensions(trace, side):
  10. power, exponent = 1, 1
  11. while power < len(trace):
  12. power *= side
  13. exponent += 1
  14. if power != len(trace):
  15. raise WrongSize()
  16. return exponent
  17.  
  18. # Generates functions that transform a cell's coordinates to its image.
  19. # For a number of dimensions D, there are {factorial(D) * 2**D} symmetries.
  20. def Symmetries(dimensions, side):
  21. return (lambda cell: (cell[p[i]] if s[i] else side - cell[p[i]] - 1
  22. for i in range(len(cell)))
  23. for p, s in product(permutations(range(dimensions)),
  24. product(*((True, False),) * dimensions)))
  25.  
  26. # Transforms an expanded solution (full coordinates of each cell) to a solution
  27. # trace containing the significant (lowest order) coordinates only.
  28. def SolutionToTrace(solution):
  29. return (cell[-1] for cell in sorted(solution))
  30.  
  31. # Transforms a solution trace containing the significant (lowest order)
  32. # coordinates only to an expanded solution (full coordinates of each cell).
  33. def TraceToSolution(trace, side):
  34. dimensions = Dimensions(trace, side)
  35. return (p + (s,)
  36. for p, s in zip(product(*(range(side),) * (dimensions - 1)), trace))
  37.  
  38. # Generates all symmetries for the given trace, based on its dimensionality.
  39. # For example, there will be 8 symmetries in 2D, 48 in 3D, 384 in 4D etc.
  40. def ExpandSymmetries(traces, side):
  41. for t, trace in enumerate(traces):
  42. for s, sym in enumerate(Symmetries(Dimensions(trace, side), side)):
  43. yield SolutionToTrace(tuple(sym(tuple(c)))
  44. for c in TraceToSolution(trace, side)), t, s
  45.  
  46. # Based on a set of canonical solutions (solution seeds), generates all existing
  47. # solutions using symmetries and identifies duplicates (while describing which
  48. # canonical solutions and symmetries each duplicate came from).
  49. def SummarizeSolutions(traces, side):
  50. traces_to_recipes = {}
  51. for trace, t, s in ExpandSymmetries(traces, side):
  52. traces_to_recipes.setdefault(tuple(trace), []).append((t, s))
  53. n_unique, n_total = 0, 0
  54. for n, trace in enumerate(sorted(traces_to_recipes)):
  55. recipes = traces_to_recipes[trace]
  56. n_total += len(recipes)
  57. n_unique += 1
  58. recipe = ' or '.join(f'canonical {t} and symetry {s}' for t, s in recipes)
  59. print(f'Solution {n} from {recipe}:\n{trace}\n')
  60. print(f'{len(traces)} canonical solutions\n'
  61. f'{n_unique} unique solutions\n'
  62. f'{n_total} canonical solutions × symmetries\n'
  63. f'{n_total - n_unique} overlaps')
  64.  
  65. CANONICALS_11 = [
  66. [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],
  67. [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],
  68. [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],
  69. [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],
  70. [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],
  71. [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]]
  72.  
  73. CANONICALS_13 = [
  74. [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],
  75. [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],
  76. [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],
  77. [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],
  78. [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],
  79. [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],
  80. [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],
  81. [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],
  82. [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],
  83. [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],
  84. [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],
  85. [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],
  86. [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],
  87. [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]]
  88.  
  89. CANONICALS_17 = [
  90. [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],
  91. [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],
  92. [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],
  93. [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],
  94. [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],
  95. [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],
  96. [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],
  97. [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],
  98. [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],
  99. [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],
  100. [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],
  101. [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],
  102. [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],
  103. [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],
  104. [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],
  105. [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],
  106. [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],
  107. [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],
  108. [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],
  109. [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],
  110. [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],
  111. [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],
  112. [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],
  113. [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],
  114. [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],
  115. [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],
  116. [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],
  117. [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],
  118. [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],
  119. [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],
  120. [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],
  121. [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],
  122. [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],
  123. [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],
  124. [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],
  125. [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],
  126. [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],
  127. [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],
  128. [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],
  129. [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],
  130. [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],
  131. [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],
  132. [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],
  133. [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],
  134. [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]]
  135.  
  136. print(f'\n{'=' * 30}11{'=' * 30}\n')
  137. SummarizeSolutions(CANONICALS_11, 11)
  138. print(f'\n{'=' * 30}13{'=' * 30}\n')
  139. SummarizeSolutions(CANONICALS_13, 13)
  140. print(f'\n{'=' * 30}17{'=' * 30}\n')
  141. SummarizeSolutions(CANONICALS_17, 17)
  142.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement