isundil 7 years ago
parent
commit
7f29a0e028
3 changed files with 4289 additions and 0 deletions
  1. 3352 0
      d16/input
  2. 101 0
      d16/main.js
  3. 836 0
      d16/testprogram

+ 3352 - 0
d16/input

@@ -0,0 +1,3352 @@
+Before: [1, 0, 2, 1]
+2 3 2 0
+After:  [1, 0, 2, 1]
+
+Before: [1, 0, 2, 2]
+11 3 2 1
+After:  [1, 0, 2, 2]
+
+Before: [0, 2, 3, 0]
+7 0 3 3
+After:  [0, 2, 3, 0]
+
+Before: [1, 1, 2, 2]
+6 1 2 3
+After:  [1, 1, 2, 0]
+
+Before: [0, 0, 2, 2]
+11 3 2 0
+After:  [0, 0, 2, 2]
+
+Before: [2, 3, 3, 3]
+11 2 0 2
+After:  [2, 3, 1, 3]
+
+Before: [2, 1, 2, 1]
+13 0 2 3
+After:  [2, 1, 2, 4]
+
+Before: [2, 2, 0, 0]
+3 0 3 0
+After:  [1, 2, 0, 0]
+
+Before: [3, 2, 3, 3]
+1 3 2 2
+After:  [3, 2, 1, 3]
+
+Before: [0, 0, 2, 3]
+13 2 2 3
+After:  [0, 0, 2, 4]
+
+Before: [1, 2, 2, 0]
+13 1 2 0
+After:  [4, 2, 2, 0]
+
+Before: [0, 2, 1, 3]
+4 0 0 1
+After:  [0, 0, 1, 3]
+
+Before: [1, 1, 2, 2]
+15 0 2 1
+After:  [1, 0, 2, 2]
+
+Before: [1, 2, 2, 3]
+15 0 2 1
+After:  [1, 0, 2, 3]
+
+Before: [2, 2, 3, 3]
+1 3 2 0
+After:  [1, 2, 3, 3]
+
+Before: [0, 0, 0, 3]
+7 0 2 2
+After:  [0, 0, 0, 3]
+
+Before: [2, 3, 3, 1]
+1 2 3 2
+After:  [2, 3, 0, 1]
+
+Before: [0, 1, 2, 1]
+5 0 2 2
+After:  [0, 1, 0, 1]
+
+Before: [1, 1, 2, 0]
+6 1 2 0
+After:  [0, 1, 2, 0]
+
+Before: [0, 0, 3, 0]
+5 0 2 2
+After:  [0, 0, 0, 0]
+
+Before: [3, 0, 3, 3]
+1 3 2 1
+After:  [3, 1, 3, 3]
+
+Before: [1, 2, 0, 2]
+14 0 2 1
+After:  [1, 0, 0, 2]
+
+Before: [0, 2, 2, 3]
+13 2 2 2
+After:  [0, 2, 4, 3]
+
+Before: [0, 3, 3, 2]
+12 3 3 3
+After:  [0, 3, 3, 0]
+
+Before: [0, 1, 1, 2]
+12 3 3 3
+After:  [0, 1, 1, 0]
+
+Before: [3, 0, 1, 2]
+12 3 3 3
+After:  [3, 0, 1, 0]
+
+Before: [3, 3, 0, 3]
+1 3 0 2
+After:  [3, 3, 1, 3]
+
+Before: [0, 1, 3, 2]
+0 1 3 2
+After:  [0, 1, 0, 2]
+
+Before: [1, 1, 2, 0]
+6 1 2 1
+After:  [1, 0, 2, 0]
+
+Before: [1, 2, 2, 1]
+2 3 2 3
+After:  [1, 2, 2, 1]
+
+Before: [0, 2, 2, 1]
+2 3 2 3
+After:  [0, 2, 2, 1]
+
+Before: [1, 2, 2, 1]
+15 0 2 1
+After:  [1, 0, 2, 1]
+
+Before: [3, 1, 2, 0]
+6 1 2 3
+After:  [3, 1, 2, 0]
+
+Before: [2, 3, 1, 0]
+3 0 3 0
+After:  [1, 3, 1, 0]
+
+Before: [2, 1, 0, 0]
+3 0 3 2
+After:  [2, 1, 1, 0]
+
+Before: [0, 2, 1, 1]
+10 2 1 2
+After:  [0, 2, 2, 1]
+
+Before: [2, 0, 2, 1]
+13 2 2 1
+After:  [2, 4, 2, 1]
+
+Before: [2, 0, 3, 2]
+11 2 0 3
+After:  [2, 0, 3, 1]
+
+Before: [0, 1, 2, 0]
+6 1 2 0
+After:  [0, 1, 2, 0]
+
+Before: [1, 1, 1, 2]
+12 3 3 1
+After:  [1, 0, 1, 2]
+
+Before: [1, 2, 2, 2]
+11 3 2 2
+After:  [1, 2, 0, 2]
+
+Before: [1, 3, 2, 1]
+15 0 2 3
+After:  [1, 3, 2, 0]
+
+Before: [1, 1, 2, 1]
+15 0 2 2
+After:  [1, 1, 0, 1]
+
+Before: [3, 1, 2, 0]
+6 1 2 0
+After:  [0, 1, 2, 0]
+
+Before: [2, 2, 3, 0]
+3 0 3 2
+After:  [2, 2, 1, 0]
+
+Before: [0, 0, 0, 2]
+12 3 3 1
+After:  [0, 0, 0, 2]
+
+Before: [2, 3, 2, 0]
+3 0 3 0
+After:  [1, 3, 2, 0]
+
+Before: [2, 2, 0, 1]
+9 0 3 0
+After:  [1, 2, 0, 1]
+
+Before: [2, 1, 2, 1]
+2 3 2 2
+After:  [2, 1, 1, 1]
+
+Before: [1, 1, 1, 3]
+11 2 1 3
+After:  [1, 1, 1, 0]
+
+Before: [2, 1, 1, 1]
+12 2 3 1
+After:  [2, 0, 1, 1]
+
+Before: [0, 2, 3, 3]
+1 3 2 1
+After:  [0, 1, 3, 3]
+
+Before: [1, 2, 1, 2]
+10 2 1 2
+After:  [1, 2, 2, 2]
+
+Before: [2, 0, 1, 1]
+9 0 3 1
+After:  [2, 1, 1, 1]
+
+Before: [1, 3, 2, 1]
+15 0 2 0
+After:  [0, 3, 2, 1]
+
+Before: [2, 2, 2, 1]
+9 0 3 2
+After:  [2, 2, 1, 1]
+
+Before: [1, 1, 1, 1]
+12 3 3 3
+After:  [1, 1, 1, 0]
+
+Before: [1, 3, 0, 3]
+14 0 2 3
+After:  [1, 3, 0, 0]
+
+Before: [0, 2, 0, 0]
+4 0 0 2
+After:  [0, 2, 0, 0]
+
+Before: [2, 2, 2, 3]
+8 2 3 2
+After:  [2, 2, 0, 3]
+
+Before: [3, 1, 2, 0]
+6 1 2 1
+After:  [3, 0, 2, 0]
+
+Before: [1, 2, 0, 0]
+14 0 2 2
+After:  [1, 2, 0, 0]
+
+Before: [0, 2, 1, 3]
+10 2 1 1
+After:  [0, 2, 1, 3]
+
+Before: [0, 3, 0, 2]
+12 3 3 0
+After:  [0, 3, 0, 2]
+
+Before: [2, 2, 0, 0]
+3 0 3 1
+After:  [2, 1, 0, 0]
+
+Before: [3, 1, 2, 3]
+1 3 0 2
+After:  [3, 1, 1, 3]
+
+Before: [2, 3, 2, 2]
+13 2 2 1
+After:  [2, 4, 2, 2]
+
+Before: [2, 1, 2, 3]
+8 1 3 0
+After:  [0, 1, 2, 3]
+
+Before: [2, 2, 3, 0]
+11 2 0 2
+After:  [2, 2, 1, 0]
+
+Before: [0, 1, 1, 2]
+11 2 1 0
+After:  [0, 1, 1, 2]
+
+Before: [0, 2, 2, 3]
+8 2 3 2
+After:  [0, 2, 0, 3]
+
+Before: [0, 1, 1, 2]
+0 1 3 0
+After:  [0, 1, 1, 2]
+
+Before: [0, 3, 3, 1]
+4 0 0 3
+After:  [0, 3, 3, 0]
+
+Before: [3, 2, 1, 3]
+8 1 3 1
+After:  [3, 0, 1, 3]
+
+Before: [2, 1, 0, 3]
+8 1 3 0
+After:  [0, 1, 0, 3]
+
+Before: [2, 0, 2, 3]
+11 0 1 3
+After:  [2, 0, 2, 1]
+
+Before: [2, 1, 1, 2]
+0 1 3 3
+After:  [2, 1, 1, 0]
+
+Before: [2, 0, 2, 0]
+13 2 2 0
+After:  [4, 0, 2, 0]
+
+Before: [1, 0, 2, 1]
+2 3 2 2
+After:  [1, 0, 1, 1]
+
+Before: [2, 1, 1, 3]
+11 2 1 2
+After:  [2, 1, 0, 3]
+
+Before: [2, 3, 0, 1]
+12 3 3 2
+After:  [2, 3, 0, 1]
+
+Before: [0, 0, 3, 2]
+7 0 1 2
+After:  [0, 0, 0, 2]
+
+Before: [0, 1, 0, 0]
+7 0 3 0
+After:  [0, 1, 0, 0]
+
+Before: [3, 2, 2, 3]
+8 1 3 2
+After:  [3, 2, 0, 3]
+
+Before: [0, 0, 2, 2]
+5 0 2 0
+After:  [0, 0, 2, 2]
+
+Before: [0, 1, 0, 0]
+7 0 3 3
+After:  [0, 1, 0, 0]
+
+Before: [0, 1, 1, 3]
+11 2 1 2
+After:  [0, 1, 0, 3]
+
+Before: [0, 0, 2, 3]
+8 2 3 3
+After:  [0, 0, 2, 0]
+
+Before: [2, 2, 1, 3]
+10 2 1 0
+After:  [2, 2, 1, 3]
+
+Before: [1, 1, 2, 1]
+6 1 2 2
+After:  [1, 1, 0, 1]
+
+Before: [1, 0, 2, 0]
+15 0 2 0
+After:  [0, 0, 2, 0]
+
+Before: [0, 0, 2, 1]
+2 3 2 0
+After:  [1, 0, 2, 1]
+
+Before: [0, 2, 1, 3]
+10 2 1 2
+After:  [0, 2, 2, 3]
+
+Before: [0, 1, 2, 2]
+6 1 2 2
+After:  [0, 1, 0, 2]
+
+Before: [1, 1, 0, 2]
+14 0 2 2
+After:  [1, 1, 0, 2]
+
+Before: [2, 1, 3, 2]
+11 2 0 3
+After:  [2, 1, 3, 1]
+
+Before: [1, 0, 3, 1]
+1 2 3 2
+After:  [1, 0, 0, 1]
+
+Before: [0, 2, 1, 1]
+4 0 0 3
+After:  [0, 2, 1, 0]
+
+Before: [1, 1, 2, 1]
+15 0 2 3
+After:  [1, 1, 2, 0]
+
+Before: [1, 1, 3, 1]
+11 3 1 1
+After:  [1, 0, 3, 1]
+
+Before: [0, 3, 0, 0]
+7 0 2 1
+After:  [0, 0, 0, 0]
+
+Before: [2, 3, 3, 0]
+3 0 3 0
+After:  [1, 3, 3, 0]
+
+Before: [2, 3, 2, 1]
+2 3 2 1
+After:  [2, 1, 2, 1]
+
+Before: [1, 1, 2, 0]
+15 0 2 2
+After:  [1, 1, 0, 0]
+
+Before: [1, 0, 0, 1]
+14 0 2 1
+After:  [1, 0, 0, 1]
+
+Before: [3, 1, 2, 2]
+0 1 3 2
+After:  [3, 1, 0, 2]
+
+Before: [3, 1, 2, 1]
+6 1 2 2
+After:  [3, 1, 0, 1]
+
+Before: [3, 1, 1, 2]
+0 1 3 2
+After:  [3, 1, 0, 2]
+
+Before: [0, 0, 3, 1]
+4 0 0 0
+After:  [0, 0, 3, 1]
+
+Before: [1, 1, 1, 2]
+12 3 3 2
+After:  [1, 1, 0, 2]
+
+Before: [0, 2, 0, 1]
+4 0 0 3
+After:  [0, 2, 0, 0]
+
+Before: [3, 0, 1, 2]
+12 3 3 0
+After:  [0, 0, 1, 2]
+
+Before: [3, 1, 2, 3]
+8 1 3 3
+After:  [3, 1, 2, 0]
+
+Before: [1, 0, 0, 3]
+14 0 2 0
+After:  [0, 0, 0, 3]
+
+Before: [2, 0, 1, 0]
+3 0 3 0
+After:  [1, 0, 1, 0]
+
+Before: [0, 1, 1, 2]
+5 0 1 0
+After:  [0, 1, 1, 2]
+
+Before: [0, 1, 0, 1]
+7 0 2 1
+After:  [0, 0, 0, 1]
+
+Before: [1, 1, 2, 0]
+6 1 2 3
+After:  [1, 1, 2, 0]
+
+Before: [1, 2, 0, 1]
+14 0 2 0
+After:  [0, 2, 0, 1]
+
+Before: [2, 1, 2, 2]
+6 1 2 1
+After:  [2, 0, 2, 2]
+
+Before: [2, 1, 2, 3]
+13 0 2 1
+After:  [2, 4, 2, 3]
+
+Before: [2, 1, 3, 1]
+11 2 0 2
+After:  [2, 1, 1, 1]
+
+Before: [0, 3, 3, 2]
+5 0 1 1
+After:  [0, 0, 3, 2]
+
+Before: [0, 2, 2, 1]
+5 0 3 1
+After:  [0, 0, 2, 1]
+
+Before: [1, 1, 3, 2]
+0 1 3 2
+After:  [1, 1, 0, 2]
+
+Before: [0, 2, 3, 3]
+8 1 3 1
+After:  [0, 0, 3, 3]
+
+Before: [0, 3, 0, 0]
+4 0 0 3
+After:  [0, 3, 0, 0]
+
+Before: [0, 0, 0, 1]
+7 0 1 1
+After:  [0, 0, 0, 1]
+
+Before: [0, 1, 2, 3]
+6 1 2 1
+After:  [0, 0, 2, 3]
+
+Before: [2, 1, 2, 1]
+6 1 2 1
+After:  [2, 0, 2, 1]
+
+Before: [0, 3, 2, 1]
+2 3 2 2
+After:  [0, 3, 1, 1]
+
+Before: [0, 3, 2, 3]
+5 0 2 2
+After:  [0, 3, 0, 3]
+
+Before: [3, 1, 2, 2]
+6 1 2 3
+After:  [3, 1, 2, 0]
+
+Before: [0, 1, 2, 0]
+6 1 2 1
+After:  [0, 0, 2, 0]
+
+Before: [0, 1, 2, 1]
+13 2 2 1
+After:  [0, 4, 2, 1]
+
+Before: [1, 0, 0, 2]
+14 0 2 0
+After:  [0, 0, 0, 2]
+
+Before: [2, 0, 0, 1]
+9 0 3 0
+After:  [1, 0, 0, 1]
+
+Before: [2, 2, 2, 3]
+8 1 3 0
+After:  [0, 2, 2, 3]
+
+Before: [0, 2, 2, 0]
+1 2 1 1
+After:  [0, 1, 2, 0]
+
+Before: [2, 1, 2, 3]
+8 2 3 0
+After:  [0, 1, 2, 3]
+
+Before: [2, 1, 0, 2]
+0 1 3 2
+After:  [2, 1, 0, 2]
+
+Before: [3, 1, 3, 2]
+0 1 3 2
+After:  [3, 1, 0, 2]
+
+Before: [2, 1, 2, 1]
+6 1 2 0
+After:  [0, 1, 2, 1]
+
+Before: [2, 2, 1, 1]
+12 3 3 0
+After:  [0, 2, 1, 1]
+
+Before: [0, 2, 2, 0]
+7 0 3 3
+After:  [0, 2, 2, 0]
+
+Before: [2, 2, 1, 2]
+10 2 1 2
+After:  [2, 2, 2, 2]
+
+Before: [2, 3, 3, 1]
+9 0 3 2
+After:  [2, 3, 1, 1]
+
+Before: [2, 1, 0, 2]
+0 1 3 3
+After:  [2, 1, 0, 0]
+
+Before: [2, 2, 2, 1]
+2 3 2 3
+After:  [2, 2, 2, 1]
+
+Before: [2, 2, 2, 1]
+13 1 2 0
+After:  [4, 2, 2, 1]
+
+Before: [0, 2, 3, 1]
+12 3 3 3
+After:  [0, 2, 3, 0]
+
+Before: [1, 3, 2, 2]
+13 2 2 0
+After:  [4, 3, 2, 2]
+
+Before: [0, 1, 3, 3]
+1 3 2 0
+After:  [1, 1, 3, 3]
+
+Before: [1, 1, 2, 2]
+15 0 2 0
+After:  [0, 1, 2, 2]
+
+Before: [1, 1, 0, 2]
+14 0 2 0
+After:  [0, 1, 0, 2]
+
+Before: [0, 0, 1, 1]
+4 0 0 1
+After:  [0, 0, 1, 1]
+
+Before: [0, 3, 3, 2]
+5 0 2 1
+After:  [0, 0, 3, 2]
+
+Before: [3, 1, 3, 2]
+0 1 3 3
+After:  [3, 1, 3, 0]
+
+Before: [0, 0, 3, 3]
+4 0 0 0
+After:  [0, 0, 3, 3]
+
+Before: [1, 2, 1, 2]
+10 2 1 0
+After:  [2, 2, 1, 2]
+
+Before: [2, 0, 1, 0]
+3 0 3 3
+After:  [2, 0, 1, 1]
+
+Before: [3, 0, 3, 3]
+1 3 0 3
+After:  [3, 0, 3, 1]
+
+Before: [2, 0, 1, 0]
+3 0 3 1
+After:  [2, 1, 1, 0]
+
+Before: [2, 3, 0, 0]
+3 0 3 2
+After:  [2, 3, 1, 0]
+
+Before: [2, 2, 1, 1]
+10 2 1 2
+After:  [2, 2, 2, 1]
+
+Before: [1, 3, 2, 0]
+15 0 2 2
+After:  [1, 3, 0, 0]
+
+Before: [1, 1, 1, 1]
+12 2 3 2
+After:  [1, 1, 0, 1]
+
+Before: [1, 2, 2, 2]
+15 0 2 3
+After:  [1, 2, 2, 0]
+
+Before: [0, 3, 3, 1]
+4 0 0 2
+After:  [0, 3, 0, 1]
+
+Before: [2, 3, 2, 1]
+13 0 2 3
+After:  [2, 3, 2, 4]
+
+Before: [2, 2, 2, 3]
+8 1 3 3
+After:  [2, 2, 2, 0]
+
+Before: [2, 0, 2, 1]
+2 3 2 1
+After:  [2, 1, 2, 1]
+
+Before: [1, 3, 2, 3]
+15 0 2 0
+After:  [0, 3, 2, 3]
+
+Before: [2, 3, 3, 0]
+3 0 3 1
+After:  [2, 1, 3, 0]
+
+Before: [2, 0, 1, 3]
+11 0 1 0
+After:  [1, 0, 1, 3]
+
+Before: [0, 0, 3, 1]
+5 0 3 0
+After:  [0, 0, 3, 1]
+
+Before: [3, 3, 2, 1]
+2 3 2 1
+After:  [3, 1, 2, 1]
+
+Before: [3, 0, 0, 3]
+11 0 2 2
+After:  [3, 0, 1, 3]
+
+Before: [2, 2, 2, 1]
+1 2 1 2
+After:  [2, 2, 1, 1]
+
+Before: [1, 1, 2, 1]
+2 3 2 3
+After:  [1, 1, 2, 1]
+
+Before: [2, 2, 1, 2]
+10 2 1 0
+After:  [2, 2, 1, 2]
+
+Before: [2, 2, 1, 1]
+9 0 3 0
+After:  [1, 2, 1, 1]
+
+Before: [1, 1, 0, 2]
+0 1 3 0
+After:  [0, 1, 0, 2]
+
+Before: [1, 3, 2, 3]
+15 0 2 2
+After:  [1, 3, 0, 3]
+
+Before: [0, 3, 0, 0]
+4 0 0 0
+After:  [0, 3, 0, 0]
+
+Before: [1, 1, 1, 2]
+11 2 1 2
+After:  [1, 1, 0, 2]
+
+Before: [3, 1, 2, 2]
+0 1 3 1
+After:  [3, 0, 2, 2]
+
+Before: [3, 2, 1, 2]
+10 2 1 0
+After:  [2, 2, 1, 2]
+
+Before: [0, 1, 0, 0]
+5 0 1 3
+After:  [0, 1, 0, 0]
+
+Before: [1, 1, 2, 3]
+15 0 2 0
+After:  [0, 1, 2, 3]
+
+Before: [3, 1, 2, 1]
+6 1 2 1
+After:  [3, 0, 2, 1]
+
+Before: [2, 2, 3, 2]
+11 2 0 2
+After:  [2, 2, 1, 2]
+
+Before: [2, 1, 2, 1]
+2 3 2 0
+After:  [1, 1, 2, 1]
+
+Before: [3, 2, 1, 1]
+10 2 1 2
+After:  [3, 2, 2, 1]
+
+Before: [1, 2, 1, 3]
+10 2 1 1
+After:  [1, 2, 1, 3]
+
+Before: [3, 2, 2, 2]
+13 1 2 1
+After:  [3, 4, 2, 2]
+
+Before: [0, 0, 3, 3]
+4 0 0 3
+After:  [0, 0, 3, 0]
+
+Before: [1, 2, 2, 3]
+13 2 2 0
+After:  [4, 2, 2, 3]
+
+Before: [1, 0, 2, 2]
+13 2 2 0
+After:  [4, 0, 2, 2]
+
+Before: [2, 2, 2, 0]
+3 0 3 1
+After:  [2, 1, 2, 0]
+
+Before: [2, 3, 2, 2]
+1 2 0 0
+After:  [1, 3, 2, 2]
+
+Before: [1, 1, 2, 1]
+2 3 2 2
+After:  [1, 1, 1, 1]
+
+Before: [2, 3, 3, 1]
+1 2 3 3
+After:  [2, 3, 3, 0]
+
+Before: [0, 0, 1, 3]
+7 0 1 1
+After:  [0, 0, 1, 3]
+
+Before: [2, 1, 2, 2]
+13 2 2 3
+After:  [2, 1, 2, 4]
+
+Before: [0, 3, 1, 2]
+4 0 0 2
+After:  [0, 3, 0, 2]
+
+Before: [2, 2, 1, 0]
+10 2 1 3
+After:  [2, 2, 1, 2]
+
+Before: [2, 1, 3, 2]
+0 1 3 1
+After:  [2, 0, 3, 2]
+
+Before: [2, 2, 1, 3]
+8 2 3 0
+After:  [0, 2, 1, 3]
+
+Before: [2, 3, 2, 2]
+13 3 2 2
+After:  [2, 3, 4, 2]
+
+Before: [1, 1, 0, 2]
+14 0 2 1
+After:  [1, 0, 0, 2]
+
+Before: [0, 1, 1, 3]
+8 1 3 3
+After:  [0, 1, 1, 0]
+
+Before: [1, 1, 1, 2]
+0 1 3 1
+After:  [1, 0, 1, 2]
+
+Before: [2, 1, 2, 2]
+1 2 0 1
+After:  [2, 1, 2, 2]
+
+Before: [0, 3, 0, 1]
+12 3 3 1
+After:  [0, 0, 0, 1]
+
+Before: [0, 1, 2, 1]
+12 3 3 0
+After:  [0, 1, 2, 1]
+
+Before: [0, 2, 2, 2]
+13 3 2 2
+After:  [0, 2, 4, 2]
+
+Before: [2, 0, 3, 0]
+3 0 3 3
+After:  [2, 0, 3, 1]
+
+Before: [0, 3, 1, 3]
+8 2 3 1
+After:  [0, 0, 1, 3]
+
+Before: [0, 3, 2, 2]
+5 0 2 0
+After:  [0, 3, 2, 2]
+
+Before: [2, 3, 2, 0]
+3 0 3 3
+After:  [2, 3, 2, 1]
+
+Before: [1, 2, 2, 1]
+2 3 2 2
+After:  [1, 2, 1, 1]
+
+Before: [0, 0, 0, 2]
+7 0 2 0
+After:  [0, 0, 0, 2]
+
+Before: [1, 2, 0, 3]
+14 0 2 2
+After:  [1, 2, 0, 3]
+
+Before: [2, 3, 3, 2]
+11 2 0 2
+After:  [2, 3, 1, 2]
+
+Before: [0, 1, 2, 2]
+5 0 3 0
+After:  [0, 1, 2, 2]
+
+Before: [0, 2, 1, 1]
+10 2 1 0
+After:  [2, 2, 1, 1]
+
+Before: [0, 1, 3, 1]
+4 0 0 2
+After:  [0, 1, 0, 1]
+
+Before: [1, 0, 0, 2]
+14 0 2 3
+After:  [1, 0, 0, 0]
+
+Before: [0, 1, 1, 1]
+12 2 3 2
+After:  [0, 1, 0, 1]
+
+Before: [2, 2, 2, 0]
+3 0 3 3
+After:  [2, 2, 2, 1]
+
+Before: [0, 1, 1, 2]
+4 0 0 1
+After:  [0, 0, 1, 2]
+
+Before: [0, 1, 0, 3]
+8 1 3 3
+After:  [0, 1, 0, 0]
+
+Before: [2, 2, 2, 3]
+13 0 2 1
+After:  [2, 4, 2, 3]
+
+Before: [0, 2, 1, 2]
+10 2 1 0
+After:  [2, 2, 1, 2]
+
+Before: [1, 1, 1, 2]
+0 1 3 2
+After:  [1, 1, 0, 2]
+
+Before: [0, 1, 2, 3]
+6 1 2 2
+After:  [0, 1, 0, 3]
+
+Before: [3, 1, 2, 3]
+1 3 0 3
+After:  [3, 1, 2, 1]
+
+Before: [1, 1, 0, 3]
+8 1 3 3
+After:  [1, 1, 0, 0]
+
+Before: [2, 0, 1, 1]
+12 3 3 0
+After:  [0, 0, 1, 1]
+
+Before: [0, 1, 0, 2]
+0 1 3 3
+After:  [0, 1, 0, 0]
+
+Before: [1, 2, 2, 2]
+13 2 2 3
+After:  [1, 2, 2, 4]
+
+Before: [3, 3, 2, 2]
+12 3 3 1
+After:  [3, 0, 2, 2]
+
+Before: [1, 3, 0, 3]
+14 0 2 0
+After:  [0, 3, 0, 3]
+
+Before: [1, 2, 2, 2]
+15 0 2 1
+After:  [1, 0, 2, 2]
+
+Before: [2, 1, 1, 0]
+3 0 3 2
+After:  [2, 1, 1, 0]
+
+Before: [3, 1, 2, 0]
+6 1 2 2
+After:  [3, 1, 0, 0]
+
+Before: [0, 3, 0, 3]
+7 0 2 3
+After:  [0, 3, 0, 0]
+
+Before: [3, 0, 3, 3]
+1 3 0 0
+After:  [1, 0, 3, 3]
+
+Before: [0, 3, 2, 2]
+4 0 0 0
+After:  [0, 3, 2, 2]
+
+Before: [3, 2, 2, 2]
+13 3 2 2
+After:  [3, 2, 4, 2]
+
+Before: [0, 1, 0, 1]
+12 3 3 3
+After:  [0, 1, 0, 0]
+
+Before: [1, 2, 0, 1]
+14 0 2 3
+After:  [1, 2, 0, 0]
+
+Before: [1, 2, 1, 0]
+10 2 1 1
+After:  [1, 2, 1, 0]
+
+Before: [1, 0, 3, 2]
+12 3 3 3
+After:  [1, 0, 3, 0]
+
+Before: [0, 1, 2, 2]
+6 1 2 3
+After:  [0, 1, 2, 0]
+
+Before: [0, 0, 3, 0]
+7 0 1 3
+After:  [0, 0, 3, 0]
+
+Before: [1, 3, 0, 2]
+14 0 2 1
+After:  [1, 0, 0, 2]
+
+Before: [0, 1, 2, 2]
+0 1 3 3
+After:  [0, 1, 2, 0]
+
+Before: [1, 0, 2, 1]
+15 0 2 1
+After:  [1, 0, 2, 1]
+
+Before: [1, 3, 0, 1]
+14 0 2 0
+After:  [0, 3, 0, 1]
+
+Before: [1, 2, 2, 2]
+15 0 2 0
+After:  [0, 2, 2, 2]
+
+Before: [1, 2, 0, 1]
+14 0 2 1
+After:  [1, 0, 0, 1]
+
+Before: [3, 1, 1, 2]
+0 1 3 3
+After:  [3, 1, 1, 0]
+
+Before: [3, 2, 3, 3]
+1 3 0 2
+After:  [3, 2, 1, 3]
+
+Before: [3, 2, 2, 0]
+13 1 2 1
+After:  [3, 4, 2, 0]
+
+Before: [3, 1, 2, 1]
+6 1 2 3
+After:  [3, 1, 2, 0]
+
+Before: [1, 1, 1, 3]
+11 2 1 2
+After:  [1, 1, 0, 3]
+
+Before: [0, 2, 2, 3]
+8 1 3 0
+After:  [0, 2, 2, 3]
+
+Before: [0, 2, 1, 3]
+10 2 1 3
+After:  [0, 2, 1, 2]
+
+Before: [3, 3, 2, 1]
+2 3 2 2
+After:  [3, 3, 1, 1]
+
+Before: [2, 3, 0, 1]
+9 0 3 0
+After:  [1, 3, 0, 1]
+
+Before: [2, 0, 3, 0]
+3 0 3 0
+After:  [1, 0, 3, 0]
+
+Before: [1, 3, 0, 2]
+14 0 2 0
+After:  [0, 3, 0, 2]
+
+Before: [2, 3, 3, 3]
+11 2 0 0
+After:  [1, 3, 3, 3]
+
+Before: [1, 3, 3, 3]
+1 3 2 0
+After:  [1, 3, 3, 3]
+
+Before: [0, 0, 1, 0]
+4 0 0 0
+After:  [0, 0, 1, 0]
+
+Before: [0, 2, 0, 3]
+5 0 1 0
+After:  [0, 2, 0, 3]
+
+Before: [0, 2, 3, 2]
+4 0 0 1
+After:  [0, 0, 3, 2]
+
+Before: [2, 1, 1, 2]
+0 1 3 2
+After:  [2, 1, 0, 2]
+
+Before: [2, 2, 3, 1]
+9 0 3 3
+After:  [2, 2, 3, 1]
+
+Before: [2, 1, 3, 2]
+0 1 3 0
+After:  [0, 1, 3, 2]
+
+Before: [1, 1, 0, 1]
+14 0 2 0
+After:  [0, 1, 0, 1]
+
+Before: [1, 2, 0, 0]
+14 0 2 3
+After:  [1, 2, 0, 0]
+
+Before: [0, 1, 3, 1]
+5 0 2 0
+After:  [0, 1, 3, 1]
+
+Before: [2, 3, 2, 1]
+9 0 3 2
+After:  [2, 3, 1, 1]
+
+Before: [3, 1, 1, 0]
+11 2 1 3
+After:  [3, 1, 1, 0]
+
+Before: [1, 1, 0, 3]
+14 0 2 0
+After:  [0, 1, 0, 3]
+
+Before: [1, 1, 2, 3]
+6 1 2 3
+After:  [1, 1, 2, 0]
+
+Before: [3, 0, 1, 3]
+1 3 0 2
+After:  [3, 0, 1, 3]
+
+Before: [3, 1, 0, 3]
+1 3 0 3
+After:  [3, 1, 0, 1]
+
+Before: [2, 1, 2, 1]
+9 0 3 1
+After:  [2, 1, 2, 1]
+
+Before: [0, 1, 0, 0]
+5 0 1 0
+After:  [0, 1, 0, 0]
+
+Before: [2, 0, 2, 1]
+9 0 3 3
+After:  [2, 0, 2, 1]
+
+Before: [2, 0, 1, 0]
+11 0 1 2
+After:  [2, 0, 1, 0]
+
+Before: [1, 1, 0, 3]
+14 0 2 2
+After:  [1, 1, 0, 3]
+
+Before: [1, 3, 2, 1]
+15 0 2 2
+After:  [1, 3, 0, 1]
+
+Before: [3, 1, 1, 3]
+11 2 1 0
+After:  [0, 1, 1, 3]
+
+Before: [3, 3, 0, 1]
+11 0 2 2
+After:  [3, 3, 1, 1]
+
+Before: [1, 1, 2, 3]
+15 0 2 2
+After:  [1, 1, 0, 3]
+
+Before: [1, 3, 3, 1]
+1 2 3 0
+After:  [0, 3, 3, 1]
+
+Before: [0, 3, 1, 1]
+4 0 0 1
+After:  [0, 0, 1, 1]
+
+Before: [3, 2, 2, 0]
+1 2 1 2
+After:  [3, 2, 1, 0]
+
+Before: [2, 1, 0, 1]
+9 0 3 2
+After:  [2, 1, 1, 1]
+
+Before: [0, 0, 0, 3]
+5 0 3 1
+After:  [0, 0, 0, 3]
+
+Before: [0, 3, 0, 0]
+7 0 3 2
+After:  [0, 3, 0, 0]
+
+Before: [2, 0, 0, 0]
+3 0 3 3
+After:  [2, 0, 0, 1]
+
+Before: [3, 2, 1, 3]
+10 2 1 2
+After:  [3, 2, 2, 3]
+
+Before: [2, 3, 2, 1]
+9 0 3 3
+After:  [2, 3, 2, 1]
+
+Before: [1, 1, 3, 3]
+8 1 3 1
+After:  [1, 0, 3, 3]
+
+Before: [1, 3, 1, 3]
+8 2 3 0
+After:  [0, 3, 1, 3]
+
+Before: [1, 1, 2, 2]
+6 1 2 0
+After:  [0, 1, 2, 2]
+
+Before: [0, 2, 1, 2]
+12 3 3 1
+After:  [0, 0, 1, 2]
+
+Before: [3, 2, 1, 1]
+12 2 3 3
+After:  [3, 2, 1, 0]
+
+Before: [0, 2, 3, 2]
+5 0 2 1
+After:  [0, 0, 3, 2]
+
+Before: [2, 2, 2, 3]
+1 2 1 3
+After:  [2, 2, 2, 1]
+
+Before: [3, 3, 3, 3]
+1 3 0 1
+After:  [3, 1, 3, 3]
+
+Before: [0, 1, 3, 0]
+5 0 2 2
+After:  [0, 1, 0, 0]
+
+Before: [0, 3, 0, 2]
+7 0 2 1
+After:  [0, 0, 0, 2]
+
+Before: [0, 2, 1, 0]
+10 2 1 0
+After:  [2, 2, 1, 0]
+
+Before: [2, 0, 1, 1]
+9 0 3 2
+After:  [2, 0, 1, 1]
+
+Before: [2, 1, 2, 3]
+8 2 3 3
+After:  [2, 1, 2, 0]
+
+Before: [1, 1, 2, 2]
+15 0 2 3
+After:  [1, 1, 2, 0]
+
+Before: [1, 1, 0, 0]
+14 0 2 2
+After:  [1, 1, 0, 0]
+
+Before: [2, 0, 3, 1]
+11 2 0 3
+After:  [2, 0, 3, 1]
+
+Before: [3, 1, 2, 2]
+6 1 2 2
+After:  [3, 1, 0, 2]
+
+Before: [2, 0, 2, 2]
+11 0 1 0
+After:  [1, 0, 2, 2]
+
+Before: [3, 2, 2, 1]
+2 3 2 3
+After:  [3, 2, 2, 1]
+
+Before: [2, 1, 1, 0]
+3 0 3 0
+After:  [1, 1, 1, 0]
+
+Before: [1, 3, 2, 2]
+15 0 2 1
+After:  [1, 0, 2, 2]
+
+Before: [0, 2, 1, 3]
+8 1 3 1
+After:  [0, 0, 1, 3]
+
+Before: [2, 2, 3, 1]
+11 2 0 3
+After:  [2, 2, 3, 1]
+
+Before: [0, 3, 1, 2]
+5 0 3 1
+After:  [0, 0, 1, 2]
+
+Before: [1, 1, 2, 1]
+2 3 2 0
+After:  [1, 1, 2, 1]
+
+Before: [0, 2, 0, 1]
+12 3 3 3
+After:  [0, 2, 0, 0]
+
+Before: [3, 2, 2, 2]
+13 2 2 0
+After:  [4, 2, 2, 2]
+
+Before: [2, 3, 3, 0]
+3 0 3 3
+After:  [2, 3, 3, 1]
+
+Before: [1, 1, 2, 0]
+15 0 2 1
+After:  [1, 0, 2, 0]
+
+Before: [0, 1, 2, 3]
+4 0 0 1
+After:  [0, 0, 2, 3]
+
+Before: [0, 0, 2, 1]
+2 3 2 3
+After:  [0, 0, 2, 1]
+
+Before: [1, 1, 2, 3]
+6 1 2 0
+After:  [0, 1, 2, 3]
+
+Before: [0, 0, 3, 0]
+4 0 0 0
+After:  [0, 0, 3, 0]
+
+Before: [0, 2, 1, 1]
+10 2 1 1
+After:  [0, 2, 1, 1]
+
+Before: [0, 0, 0, 3]
+7 0 1 2
+After:  [0, 0, 0, 3]
+
+Before: [1, 1, 2, 2]
+6 1 2 1
+After:  [1, 0, 2, 2]
+
+Before: [0, 0, 3, 3]
+5 0 3 0
+After:  [0, 0, 3, 3]
+
+Before: [3, 0, 1, 3]
+8 2 3 0
+After:  [0, 0, 1, 3]
+
+Before: [2, 1, 0, 1]
+12 3 3 1
+After:  [2, 0, 0, 1]
+
+Before: [2, 1, 2, 1]
+13 2 2 1
+After:  [2, 4, 2, 1]
+
+Before: [2, 2, 1, 0]
+3 0 3 0
+After:  [1, 2, 1, 0]
+
+Before: [0, 2, 1, 2]
+10 2 1 2
+After:  [0, 2, 2, 2]
+
+Before: [2, 3, 1, 1]
+9 0 3 0
+After:  [1, 3, 1, 1]
+
+Before: [0, 0, 2, 3]
+8 2 3 0
+After:  [0, 0, 2, 3]
+
+Before: [0, 1, 0, 3]
+7 0 2 1
+After:  [0, 0, 0, 3]
+
+Before: [0, 3, 0, 0]
+7 0 2 3
+After:  [0, 3, 0, 0]
+
+Before: [2, 1, 3, 1]
+9 0 3 3
+After:  [2, 1, 3, 1]
+
+Before: [1, 0, 0, 2]
+14 0 2 2
+After:  [1, 0, 0, 2]
+
+Before: [2, 1, 1, 1]
+9 0 3 0
+After:  [1, 1, 1, 1]
+
+Before: [0, 1, 0, 2]
+4 0 0 1
+After:  [0, 0, 0, 2]
+
+Before: [2, 0, 2, 1]
+2 3 2 0
+After:  [1, 0, 2, 1]
+
+Before: [0, 1, 0, 0]
+5 0 1 2
+After:  [0, 1, 0, 0]
+
+Before: [0, 2, 3, 1]
+4 0 0 3
+After:  [0, 2, 3, 0]
+
+Before: [2, 3, 3, 0]
+3 0 3 2
+After:  [2, 3, 1, 0]
+
+Before: [2, 1, 2, 0]
+13 2 2 2
+After:  [2, 1, 4, 0]
+
+Before: [0, 1, 2, 2]
+6 1 2 0
+After:  [0, 1, 2, 2]
+
+Before: [2, 0, 0, 0]
+3 0 3 0
+After:  [1, 0, 0, 0]
+
+Before: [3, 1, 2, 1]
+11 3 1 0
+After:  [0, 1, 2, 1]
+
+Before: [0, 0, 3, 2]
+7 0 1 3
+After:  [0, 0, 3, 0]
+
+Before: [0, 1, 0, 1]
+11 3 1 3
+After:  [0, 1, 0, 0]
+
+Before: [2, 1, 1, 0]
+3 0 3 1
+After:  [2, 1, 1, 0]
+
+Before: [0, 0, 1, 0]
+4 0 0 2
+After:  [0, 0, 0, 0]
+
+Before: [2, 2, 1, 0]
+3 0 3 3
+After:  [2, 2, 1, 1]
+
+Before: [2, 0, 2, 1]
+12 3 3 2
+After:  [2, 0, 0, 1]
+
+Before: [0, 2, 1, 3]
+10 2 1 0
+After:  [2, 2, 1, 3]
+
+Before: [1, 2, 2, 3]
+8 1 3 1
+After:  [1, 0, 2, 3]
+
+Before: [1, 2, 0, 2]
+14 0 2 3
+After:  [1, 2, 0, 0]
+
+Before: [2, 1, 2, 1]
+9 0 3 0
+After:  [1, 1, 2, 1]
+
+Before: [1, 2, 1, 0]
+10 2 1 0
+After:  [2, 2, 1, 0]
+
+Before: [2, 1, 2, 2]
+6 1 2 0
+After:  [0, 1, 2, 2]
+
+Before: [0, 3, 0, 1]
+4 0 0 0
+After:  [0, 3, 0, 1]
+
+Before: [1, 0, 2, 2]
+15 0 2 0
+After:  [0, 0, 2, 2]
+
+Before: [2, 0, 2, 1]
+1 2 0 3
+After:  [2, 0, 2, 1]
+
+Before: [1, 2, 0, 3]
+14 0 2 3
+After:  [1, 2, 0, 0]
+
+Before: [2, 3, 2, 0]
+3 0 3 1
+After:  [2, 1, 2, 0]
+
+Before: [1, 0, 2, 3]
+15 0 2 0
+After:  [0, 0, 2, 3]
+
+Before: [3, 1, 2, 1]
+6 1 2 0
+After:  [0, 1, 2, 1]
+
+Before: [0, 3, 3, 1]
+1 2 3 1
+After:  [0, 0, 3, 1]
+
+Before: [1, 1, 2, 3]
+6 1 2 1
+After:  [1, 0, 2, 3]
+
+Before: [0, 3, 2, 0]
+7 0 3 0
+After:  [0, 3, 2, 0]
+
+Before: [0, 1, 3, 2]
+0 1 3 1
+After:  [0, 0, 3, 2]
+
+Before: [0, 1, 2, 0]
+6 1 2 2
+After:  [0, 1, 0, 0]
+
+Before: [1, 2, 1, 2]
+10 2 1 3
+After:  [1, 2, 1, 2]
+
+Before: [2, 1, 1, 2]
+11 2 1 0
+After:  [0, 1, 1, 2]
+
+Before: [0, 2, 1, 0]
+10 2 1 2
+After:  [0, 2, 2, 0]
+
+Before: [0, 0, 3, 0]
+4 0 0 1
+After:  [0, 0, 3, 0]
+
+Before: [1, 2, 2, 1]
+15 0 2 2
+After:  [1, 2, 0, 1]
+
+Before: [2, 1, 2, 0]
+13 0 2 0
+After:  [4, 1, 2, 0]
+
+Before: [0, 3, 2, 1]
+4 0 0 1
+After:  [0, 0, 2, 1]
+
+Before: [0, 1, 1, 1]
+4 0 0 2
+After:  [0, 1, 0, 1]
+
+Before: [1, 1, 2, 2]
+0 1 3 3
+After:  [1, 1, 2, 0]
+
+Before: [0, 0, 1, 1]
+5 0 2 2
+After:  [0, 0, 0, 1]
+
+Before: [0, 2, 3, 1]
+4 0 0 1
+After:  [0, 0, 3, 1]
+
+Before: [1, 1, 2, 0]
+15 0 2 0
+After:  [0, 1, 2, 0]
+
+Before: [1, 1, 2, 2]
+0 1 3 1
+After:  [1, 0, 2, 2]
+
+Before: [2, 1, 0, 1]
+9 0 3 1
+After:  [2, 1, 0, 1]
+
+Before: [3, 2, 1, 1]
+10 2 1 0
+After:  [2, 2, 1, 1]
+
+Before: [2, 3, 2, 1]
+9 0 3 1
+After:  [2, 1, 2, 1]
+
+Before: [1, 0, 0, 0]
+14 0 2 2
+After:  [1, 0, 0, 0]
+
+Before: [0, 2, 1, 3]
+8 1 3 0
+After:  [0, 2, 1, 3]
+
+Before: [0, 1, 2, 1]
+2 3 2 1
+After:  [0, 1, 2, 1]
+
+Before: [3, 2, 1, 0]
+10 2 1 1
+After:  [3, 2, 1, 0]
+
+Before: [2, 1, 0, 0]
+3 0 3 3
+After:  [2, 1, 0, 1]
+
+Before: [0, 3, 3, 1]
+1 2 3 3
+After:  [0, 3, 3, 0]
+
+Before: [2, 1, 2, 1]
+11 3 1 0
+After:  [0, 1, 2, 1]
+
+Before: [2, 2, 2, 1]
+2 3 2 0
+After:  [1, 2, 2, 1]
+
+Before: [0, 1, 0, 0]
+4 0 0 3
+After:  [0, 1, 0, 0]
+
+Before: [0, 1, 2, 2]
+12 3 3 0
+After:  [0, 1, 2, 2]
+
+Before: [1, 2, 1, 1]
+10 2 1 0
+After:  [2, 2, 1, 1]
+
+Before: [2, 2, 1, 3]
+8 1 3 3
+After:  [2, 2, 1, 0]
+
+Before: [3, 3, 1, 1]
+12 3 3 2
+After:  [3, 3, 0, 1]
+
+Before: [2, 0, 3, 0]
+3 0 3 1
+After:  [2, 1, 3, 0]
+
+Before: [2, 0, 2, 1]
+9 0 3 1
+After:  [2, 1, 2, 1]
+
+Before: [0, 1, 0, 2]
+5 0 3 2
+After:  [0, 1, 0, 2]
+
+Before: [1, 2, 1, 1]
+10 2 1 2
+After:  [1, 2, 2, 1]
+
+Before: [0, 0, 2, 3]
+8 2 3 1
+After:  [0, 0, 2, 3]
+
+Before: [3, 2, 1, 1]
+10 2 1 3
+After:  [3, 2, 1, 2]
+
+Before: [0, 1, 2, 1]
+6 1 2 3
+After:  [0, 1, 2, 0]
+
+Before: [3, 1, 2, 2]
+6 1 2 0
+After:  [0, 1, 2, 2]
+
+Before: [2, 0, 2, 3]
+13 0 2 3
+After:  [2, 0, 2, 4]
+
+Before: [2, 0, 2, 2]
+13 3 2 2
+After:  [2, 0, 4, 2]
+
+Before: [2, 0, 2, 1]
+2 3 2 3
+After:  [2, 0, 2, 1]
+
+Before: [0, 3, 2, 1]
+4 0 0 3
+After:  [0, 3, 2, 0]
+
+Before: [2, 0, 3, 1]
+11 0 1 1
+After:  [2, 1, 3, 1]
+
+Before: [2, 1, 1, 3]
+8 2 3 1
+After:  [2, 0, 1, 3]
+
+Before: [1, 1, 0, 2]
+0 1 3 3
+After:  [1, 1, 0, 0]
+
+Before: [1, 0, 2, 1]
+15 0 2 0
+After:  [0, 0, 2, 1]
+
+Before: [0, 0, 1, 3]
+5 0 3 1
+After:  [0, 0, 1, 3]
+
+Before: [0, 0, 0, 1]
+7 0 1 0
+After:  [0, 0, 0, 1]
+
+Before: [2, 3, 1, 1]
+9 0 3 1
+After:  [2, 1, 1, 1]
+
+Before: [2, 3, 3, 2]
+11 2 0 0
+After:  [1, 3, 3, 2]
+
+Before: [0, 1, 0, 2]
+0 1 3 1
+After:  [0, 0, 0, 2]
+
+Before: [2, 1, 1, 1]
+11 3 1 2
+After:  [2, 1, 0, 1]
+
+Before: [0, 2, 3, 1]
+1 2 3 1
+After:  [0, 0, 3, 1]
+
+Before: [1, 1, 1, 1]
+12 2 3 3
+After:  [1, 1, 1, 0]
+
+Before: [1, 1, 2, 1]
+15 0 2 0
+After:  [0, 1, 2, 1]
+
+Before: [2, 1, 2, 3]
+13 2 2 2
+After:  [2, 1, 4, 3]
+
+Before: [2, 1, 2, 3]
+1 2 0 0
+After:  [1, 1, 2, 3]
+
+Before: [1, 3, 2, 0]
+15 0 2 0
+After:  [0, 3, 2, 0]
+
+Before: [1, 0, 2, 0]
+15 0 2 3
+After:  [1, 0, 2, 0]
+
+Before: [0, 1, 2, 2]
+6 1 2 1
+After:  [0, 0, 2, 2]
+
+Before: [2, 1, 2, 0]
+13 0 2 1
+After:  [2, 4, 2, 0]
+
+Before: [3, 2, 2, 2]
+13 1 2 3
+After:  [3, 2, 2, 4]
+
+Before: [1, 2, 0, 1]
+14 0 2 2
+After:  [1, 2, 0, 1]
+
+Before: [0, 1, 3, 3]
+4 0 0 1
+After:  [0, 0, 3, 3]
+
+Before: [0, 0, 2, 1]
+4 0 0 1
+After:  [0, 0, 2, 1]
+
+Before: [2, 2, 0, 1]
+9 0 3 2
+After:  [2, 2, 1, 1]
+
+Before: [1, 3, 2, 1]
+15 0 2 1
+After:  [1, 0, 2, 1]
+
+Before: [1, 0, 2, 1]
+12 3 3 0
+After:  [0, 0, 2, 1]
+
+Before: [2, 3, 3, 1]
+9 0 3 1
+After:  [2, 1, 3, 1]
+
+Before: [2, 1, 2, 2]
+0 1 3 2
+After:  [2, 1, 0, 2]
+
+Before: [2, 1, 3, 0]
+3 0 3 1
+After:  [2, 1, 3, 0]
+
+Before: [3, 1, 1, 3]
+8 2 3 3
+After:  [3, 1, 1, 0]
+
+Before: [0, 3, 3, 3]
+1 3 2 0
+After:  [1, 3, 3, 3]
+
+Before: [1, 2, 2, 3]
+15 0 2 2
+After:  [1, 2, 0, 3]
+
+Before: [2, 3, 1, 2]
+12 3 3 0
+After:  [0, 3, 1, 2]
+
+Before: [0, 0, 1, 1]
+12 2 3 3
+After:  [0, 0, 1, 0]
+
+Before: [0, 2, 2, 1]
+12 3 3 2
+After:  [0, 2, 0, 1]
+
+Before: [2, 1, 3, 2]
+0 1 3 2
+After:  [2, 1, 0, 2]
+
+Before: [0, 1, 2, 3]
+6 1 2 0
+After:  [0, 1, 2, 3]
+
+Before: [1, 3, 2, 3]
+15 0 2 1
+After:  [1, 0, 2, 3]
+
+Before: [2, 1, 0, 1]
+9 0 3 3
+After:  [2, 1, 0, 1]
+
+Before: [1, 0, 2, 1]
+15 0 2 2
+After:  [1, 0, 0, 1]
+
+Before: [2, 1, 2, 1]
+1 2 0 1
+After:  [2, 1, 2, 1]
+
+Before: [0, 1, 2, 3]
+6 1 2 3
+After:  [0, 1, 2, 0]
+
+Before: [1, 0, 2, 1]
+2 3 2 1
+After:  [1, 1, 2, 1]
+
+Before: [0, 2, 0, 1]
+7 0 2 2
+After:  [0, 2, 0, 1]
+
+Before: [3, 2, 2, 3]
+8 2 3 3
+After:  [3, 2, 2, 0]
+
+Before: [0, 3, 0, 3]
+7 0 2 0
+After:  [0, 3, 0, 3]
+
+Before: [1, 1, 3, 2]
+0 1 3 1
+After:  [1, 0, 3, 2]
+
+Before: [1, 1, 0, 2]
+0 1 3 1
+After:  [1, 0, 0, 2]
+
+Before: [1, 0, 2, 3]
+15 0 2 1
+After:  [1, 0, 2, 3]
+
+Before: [2, 3, 0, 0]
+3 0 3 0
+After:  [1, 3, 0, 0]
+
+Before: [2, 2, 0, 1]
+9 0 3 3
+After:  [2, 2, 0, 1]
+
+Before: [2, 0, 2, 0]
+3 0 3 2
+After:  [2, 0, 1, 0]
+
+Before: [0, 2, 3, 0]
+7 0 3 1
+After:  [0, 0, 3, 0]
+
+Before: [3, 3, 0, 2]
+11 0 2 3
+After:  [3, 3, 0, 1]
+
+Before: [0, 2, 2, 0]
+7 0 3 0
+After:  [0, 2, 2, 0]
+
+Before: [1, 2, 0, 3]
+14 0 2 1
+After:  [1, 0, 0, 3]
+
+Before: [2, 0, 3, 0]
+11 2 0 1
+After:  [2, 1, 3, 0]
+
+Before: [0, 3, 3, 0]
+5 0 2 1
+After:  [0, 0, 3, 0]
+
+Before: [2, 1, 1, 1]
+9 0 3 2
+After:  [2, 1, 1, 1]
+
+Before: [1, 0, 2, 2]
+15 0 2 2
+After:  [1, 0, 0, 2]
+
+Before: [0, 3, 0, 1]
+7 0 2 2
+After:  [0, 3, 0, 1]
+
+Before: [0, 0, 3, 1]
+1 2 3 3
+After:  [0, 0, 3, 0]
+
+Before: [2, 2, 2, 2]
+13 0 2 0
+After:  [4, 2, 2, 2]
+
+Before: [1, 2, 1, 3]
+8 2 3 0
+After:  [0, 2, 1, 3]
+
+Before: [0, 1, 3, 0]
+7 0 3 2
+After:  [0, 1, 0, 0]
+
+Before: [0, 1, 3, 0]
+4 0 0 3
+After:  [0, 1, 3, 0]
+
+Before: [0, 1, 0, 3]
+7 0 2 3
+After:  [0, 1, 0, 0]
+
+Before: [0, 1, 1, 0]
+11 2 1 1
+After:  [0, 0, 1, 0]
+
+Before: [1, 1, 0, 1]
+14 0 2 3
+After:  [1, 1, 0, 0]
+
+Before: [0, 1, 0, 0]
+7 0 2 2
+After:  [0, 1, 0, 0]
+
+Before: [1, 0, 2, 3]
+15 0 2 2
+After:  [1, 0, 0, 3]
+
+Before: [2, 1, 1, 0]
+3 0 3 3
+After:  [2, 1, 1, 1]
+
+Before: [1, 3, 2, 0]
+15 0 2 1
+After:  [1, 0, 2, 0]
+
+Before: [3, 2, 1, 3]
+10 2 1 1
+After:  [3, 2, 1, 3]
+
+Before: [1, 1, 2, 1]
+6 1 2 1
+After:  [1, 0, 2, 1]
+
+Before: [1, 2, 2, 0]
+15 0 2 2
+After:  [1, 2, 0, 0]
+
+Before: [0, 1, 2, 2]
+13 2 2 2
+After:  [0, 1, 4, 2]
+
+Before: [2, 0, 3, 1]
+9 0 3 0
+After:  [1, 0, 3, 1]
+
+Before: [0, 3, 2, 1]
+2 3 2 0
+After:  [1, 3, 2, 1]
+
+Before: [0, 1, 2, 3]
+8 2 3 3
+After:  [0, 1, 2, 0]
+
+Before: [0, 3, 0, 2]
+7 0 2 3
+After:  [0, 3, 0, 0]
+
+Before: [0, 0, 2, 3]
+4 0 0 3
+After:  [0, 0, 2, 0]
+
+Before: [2, 1, 2, 3]
+6 1 2 1
+After:  [2, 0, 2, 3]
+
+Before: [0, 2, 1, 3]
+5 0 3 3
+After:  [0, 2, 1, 0]
+
+Before: [3, 3, 0, 1]
+12 3 3 3
+After:  [3, 3, 0, 0]
+
+Before: [2, 1, 2, 1]
+9 0 3 3
+After:  [2, 1, 2, 1]
+
+Before: [2, 3, 2, 2]
+13 2 2 3
+After:  [2, 3, 2, 4]
+
+Before: [2, 2, 1, 1]
+10 2 1 0
+After:  [2, 2, 1, 1]
+
+Before: [1, 1, 2, 0]
+15 0 2 3
+After:  [1, 1, 2, 0]
+
+Before: [0, 1, 3, 1]
+5 0 2 2
+After:  [0, 1, 0, 1]
+
+Before: [2, 1, 2, 0]
+6 1 2 3
+After:  [2, 1, 2, 0]
+
+Before: [2, 2, 1, 2]
+10 2 1 1
+After:  [2, 2, 1, 2]
+
+Before: [3, 1, 1, 2]
+11 2 1 3
+After:  [3, 1, 1, 0]
+
+Before: [2, 3, 2, 3]
+8 2 3 3
+After:  [2, 3, 2, 0]
+
+Before: [0, 1, 2, 2]
+13 3 2 1
+After:  [0, 4, 2, 2]
+
+Before: [1, 1, 2, 1]
+2 3 2 1
+After:  [1, 1, 2, 1]
+
+Before: [1, 2, 2, 2]
+15 0 2 2
+After:  [1, 2, 0, 2]
+
+Before: [1, 3, 0, 2]
+14 0 2 3
+After:  [1, 3, 0, 0]
+
+Before: [3, 2, 2, 1]
+2 3 2 1
+After:  [3, 1, 2, 1]
+
+Before: [0, 2, 1, 0]
+10 2 1 1
+After:  [0, 2, 1, 0]
+
+Before: [1, 2, 2, 3]
+13 1 2 2
+After:  [1, 2, 4, 3]
+
+Before: [2, 0, 3, 1]
+1 2 3 1
+After:  [2, 0, 3, 1]
+
+Before: [1, 3, 0, 3]
+14 0 2 2
+After:  [1, 3, 0, 3]
+
+Before: [0, 3, 0, 2]
+5 0 3 2
+After:  [0, 3, 0, 2]
+
+Before: [2, 3, 2, 0]
+1 2 0 0
+After:  [1, 3, 2, 0]
+
+Before: [3, 2, 1, 1]
+10 2 1 1
+After:  [3, 2, 1, 1]
+
+Before: [2, 2, 2, 1]
+2 3 2 2
+After:  [2, 2, 1, 1]
+
+Before: [2, 0, 0, 0]
+3 0 3 1
+After:  [2, 1, 0, 0]
+
+Before: [2, 0, 2, 2]
+1 2 0 3
+After:  [2, 0, 2, 1]
+
+Before: [2, 2, 0, 1]
+9 0 3 1
+After:  [2, 1, 0, 1]
+
+Before: [1, 3, 0, 0]
+14 0 2 3
+After:  [1, 3, 0, 0]
+
+Before: [2, 2, 1, 3]
+10 2 1 2
+After:  [2, 2, 2, 3]
+
+Before: [1, 3, 0, 3]
+14 0 2 1
+After:  [1, 0, 0, 3]
+
+Before: [0, 1, 3, 2]
+5 0 2 3
+After:  [0, 1, 3, 0]
+
+Before: [2, 0, 0, 1]
+9 0 3 3
+After:  [2, 0, 0, 1]
+
+Before: [1, 1, 0, 0]
+14 0 2 3
+After:  [1, 1, 0, 0]
+
+Before: [1, 3, 2, 2]
+15 0 2 3
+After:  [1, 3, 2, 0]
+
+Before: [0, 1, 3, 3]
+8 1 3 3
+After:  [0, 1, 3, 0]
+
+Before: [0, 0, 2, 3]
+8 2 3 2
+After:  [0, 0, 0, 3]
+
+Before: [0, 0, 1, 2]
+7 0 1 1
+After:  [0, 0, 1, 2]
+
+Before: [3, 1, 2, 2]
+12 3 3 1
+After:  [3, 0, 2, 2]
+
+Before: [2, 1, 3, 0]
+3 0 3 0
+After:  [1, 1, 3, 0]
+
+Before: [1, 1, 2, 3]
+15 0 2 1
+After:  [1, 0, 2, 3]
+
+Before: [1, 1, 0, 0]
+14 0 2 0
+After:  [0, 1, 0, 0]
+
+Before: [0, 1, 2, 2]
+0 1 3 1
+After:  [0, 0, 2, 2]
+
+Before: [0, 0, 3, 0]
+7 0 1 0
+After:  [0, 0, 3, 0]
+
+Before: [0, 1, 0, 2]
+7 0 2 1
+After:  [0, 0, 0, 2]
+
+Before: [0, 1, 3, 2]
+0 1 3 3
+After:  [0, 1, 3, 0]
+
+Before: [1, 3, 2, 3]
+13 2 2 0
+After:  [4, 3, 2, 3]
+
+Before: [1, 1, 2, 2]
+0 1 3 2
+After:  [1, 1, 0, 2]
+
+Before: [0, 0, 1, 0]
+7 0 3 0
+After:  [0, 0, 1, 0]
+
+Before: [1, 1, 2, 2]
+15 0 2 2
+After:  [1, 1, 0, 2]
+
+Before: [0, 2, 0, 0]
+5 0 1 2
+After:  [0, 2, 0, 0]
+
+Before: [2, 1, 2, 3]
+1 2 0 3
+After:  [2, 1, 2, 1]
+
+Before: [3, 1, 2, 1]
+2 3 2 3
+After:  [3, 1, 2, 1]
+
+Before: [2, 1, 2, 1]
+6 1 2 2
+After:  [2, 1, 0, 1]
+
+Before: [3, 2, 0, 3]
+11 0 2 0
+After:  [1, 2, 0, 3]
+
+Before: [1, 1, 2, 1]
+6 1 2 3
+After:  [1, 1, 2, 0]
+
+Before: [1, 0, 0, 2]
+12 3 3 2
+After:  [1, 0, 0, 2]
+
+Before: [1, 3, 2, 3]
+15 0 2 3
+After:  [1, 3, 2, 0]
+
+Before: [2, 2, 1, 0]
+10 2 1 1
+After:  [2, 2, 1, 0]
+
+Before: [2, 0, 3, 0]
+11 0 1 2
+After:  [2, 0, 1, 0]
+
+Before: [2, 0, 3, 2]
+11 0 1 0
+After:  [1, 0, 3, 2]
+
+Before: [1, 3, 0, 1]
+14 0 2 1
+After:  [1, 0, 0, 1]
+
+Before: [3, 1, 2, 2]
+0 1 3 3
+After:  [3, 1, 2, 0]
+
+Before: [3, 0, 2, 1]
+2 3 2 2
+After:  [3, 0, 1, 1]
+
+Before: [3, 2, 2, 1]
+1 2 1 1
+After:  [3, 1, 2, 1]
+
+Before: [1, 3, 2, 2]
+15 0 2 2
+After:  [1, 3, 0, 2]
+
+Before: [3, 1, 2, 3]
+6 1 2 3
+After:  [3, 1, 2, 0]
+
+Before: [0, 3, 2, 0]
+13 2 2 3
+After:  [0, 3, 2, 4]
+
+Before: [2, 0, 2, 0]
+11 0 1 0
+After:  [1, 0, 2, 0]
+
+Before: [2, 3, 3, 1]
+11 2 0 2
+After:  [2, 3, 1, 1]
+
+Before: [1, 0, 0, 2]
+14 0 2 1
+After:  [1, 0, 0, 2]
+
+Before: [0, 1, 3, 3]
+4 0 0 2
+After:  [0, 1, 0, 3]
+
+Before: [2, 3, 1, 1]
+12 2 3 0
+After:  [0, 3, 1, 1]
+
+Before: [0, 3, 1, 1]
+12 2 3 0
+After:  [0, 3, 1, 1]
+
+Before: [2, 3, 1, 1]
+9 0 3 3
+After:  [2, 3, 1, 1]
+
+Before: [1, 1, 0, 2]
+0 1 3 2
+After:  [1, 1, 0, 2]
+
+Before: [0, 3, 2, 1]
+2 3 2 1
+After:  [0, 1, 2, 1]
+
+Before: [3, 1, 2, 3]
+8 2 3 0
+After:  [0, 1, 2, 3]
+
+Before: [1, 1, 2, 3]
+15 0 2 3
+After:  [1, 1, 2, 0]
+
+Before: [3, 0, 2, 3]
+1 3 0 0
+After:  [1, 0, 2, 3]
+
+Before: [2, 0, 2, 3]
+8 2 3 3
+After:  [2, 0, 2, 0]
+
+Before: [0, 0, 1, 2]
+7 0 1 0
+After:  [0, 0, 1, 2]
+
+Before: [2, 1, 3, 1]
+11 2 0 0
+After:  [1, 1, 3, 1]
+
+Before: [3, 2, 1, 0]
+10 2 1 2
+After:  [3, 2, 2, 0]
+
+Before: [0, 1, 2, 1]
+2 3 2 0
+After:  [1, 1, 2, 1]
+
+Before: [3, 2, 1, 3]
+10 2 1 0
+After:  [2, 2, 1, 3]
+
+Before: [0, 0, 2, 0]
+7 0 1 2
+After:  [0, 0, 0, 0]
+
+Before: [2, 2, 3, 0]
+3 0 3 3
+After:  [2, 2, 3, 1]
+
+Before: [2, 3, 1, 0]
+3 0 3 1
+After:  [2, 1, 1, 0]
+
+Before: [0, 0, 3, 1]
+5 0 3 2
+After:  [0, 0, 0, 1]
+
+Before: [2, 2, 0, 0]
+3 0 3 2
+After:  [2, 2, 1, 0]
+
+Before: [2, 0, 1, 1]
+12 2 3 1
+After:  [2, 0, 1, 1]
+
+Before: [2, 1, 2, 3]
+6 1 2 0
+After:  [0, 1, 2, 3]
+
+Before: [2, 3, 2, 0]
+3 0 3 2
+After:  [2, 3, 1, 0]
+
+Before: [1, 2, 1, 1]
+10 2 1 1
+After:  [1, 2, 1, 1]
+
+Before: [2, 1, 2, 1]
+12 3 3 3
+After:  [2, 1, 2, 0]
+
+Before: [2, 0, 3, 1]
+9 0 3 3
+After:  [2, 0, 3, 1]
+
+Before: [1, 2, 1, 3]
+10 2 1 3
+After:  [1, 2, 1, 2]
+
+Before: [3, 1, 2, 3]
+6 1 2 1
+After:  [3, 0, 2, 3]
+
+Before: [2, 2, 3, 1]
+9 0 3 1
+After:  [2, 1, 3, 1]
+
+Before: [0, 2, 1, 2]
+10 2 1 3
+After:  [0, 2, 1, 2]
+
+Before: [3, 0, 2, 1]
+2 3 2 0
+After:  [1, 0, 2, 1]
+
+Before: [3, 1, 0, 2]
+11 0 2 3
+After:  [3, 1, 0, 1]
+
+Before: [2, 1, 2, 1]
+11 3 1 3
+After:  [2, 1, 2, 0]
+
+Before: [2, 0, 0, 0]
+3 0 3 2
+After:  [2, 0, 1, 0]
+
+Before: [0, 3, 0, 3]
+4 0 0 3
+After:  [0, 3, 0, 0]
+
+Before: [3, 3, 0, 1]
+12 3 3 1
+After:  [3, 0, 0, 1]
+
+Before: [2, 0, 2, 1]
+9 0 3 2
+After:  [2, 0, 1, 1]
+
+Before: [0, 0, 2, 2]
+5 0 3 1
+After:  [0, 0, 2, 2]
+
+Before: [0, 3, 1, 2]
+4 0 0 3
+After:  [0, 3, 1, 0]
+
+Before: [3, 2, 2, 3]
+1 3 0 2
+After:  [3, 2, 1, 3]
+
+Before: [2, 2, 1, 3]
+10 2 1 1
+After:  [2, 2, 1, 3]
+
+Before: [1, 2, 1, 2]
+10 2 1 1
+After:  [1, 2, 1, 2]
+
+Before: [1, 3, 2, 0]
+15 0 2 3
+After:  [1, 3, 2, 0]
+
+Before: [2, 3, 2, 1]
+1 2 0 2
+After:  [2, 3, 1, 1]
+
+Before: [2, 0, 1, 1]
+9 0 3 3
+After:  [2, 0, 1, 1]
+
+Before: [1, 1, 0, 1]
+14 0 2 2
+After:  [1, 1, 0, 1]
+
+Before: [2, 1, 2, 3]
+8 2 3 1
+After:  [2, 0, 2, 3]
+
+Before: [2, 2, 1, 1]
+12 2 3 1
+After:  [2, 0, 1, 1]
+
+Before: [2, 2, 1, 1]
+9 0 3 2
+After:  [2, 2, 1, 1]
+
+Before: [2, 1, 2, 3]
+6 1 2 2
+After:  [2, 1, 0, 3]
+
+Before: [0, 1, 3, 2]
+4 0 0 2
+After:  [0, 1, 0, 2]
+
+Before: [1, 1, 1, 0]
+11 2 1 2
+After:  [1, 1, 0, 0]
+
+Before: [0, 1, 3, 2]
+12 3 3 0
+After:  [0, 1, 3, 2]
+
+Before: [1, 3, 2, 1]
+2 3 2 0
+After:  [1, 3, 2, 1]
+
+Before: [0, 2, 3, 3]
+5 0 2 3
+After:  [0, 2, 3, 0]
+
+Before: [1, 1, 2, 2]
+13 3 2 3
+After:  [1, 1, 2, 4]
+
+Before: [0, 0, 3, 1]
+4 0 0 1
+After:  [0, 0, 3, 1]
+
+Before: [0, 1, 0, 2]
+0 1 3 0
+After:  [0, 1, 0, 2]
+
+Before: [1, 2, 2, 0]
+15 0 2 3
+After:  [1, 2, 2, 0]
+
+Before: [0, 1, 2, 1]
+2 3 2 2
+After:  [0, 1, 1, 1]
+
+Before: [2, 2, 1, 0]
+3 0 3 1
+After:  [2, 1, 1, 0]
+
+Before: [1, 2, 1, 3]
+8 1 3 3
+After:  [1, 2, 1, 0]
+
+Before: [3, 3, 1, 3]
+1 3 0 0
+After:  [1, 3, 1, 3]
+
+Before: [3, 2, 1, 3]
+8 1 3 2
+After:  [3, 2, 0, 3]
+
+Before: [1, 1, 1, 1]
+11 2 1 1
+After:  [1, 0, 1, 1]
+
+Before: [1, 1, 1, 2]
+0 1 3 0
+After:  [0, 1, 1, 2]
+
+Before: [1, 1, 2, 1]
+6 1 2 0
+After:  [0, 1, 2, 1]
+
+Before: [1, 1, 3, 2]
+0 1 3 0
+After:  [0, 1, 3, 2]
+
+Before: [0, 0, 2, 1]
+7 0 1 0
+After:  [0, 0, 2, 1]
+
+Before: [2, 1, 1, 3]
+8 2 3 3
+After:  [2, 1, 1, 0]
+
+Before: [2, 3, 2, 3]
+8 2 3 1
+After:  [2, 0, 2, 3]
+
+Before: [1, 0, 2, 3]
+15 0 2 3
+After:  [1, 0, 2, 0]
+
+Before: [0, 1, 1, 1]
+4 0 0 3
+After:  [0, 1, 1, 0]
+
+Before: [3, 1, 2, 2]
+6 1 2 1
+After:  [3, 0, 2, 2]
+
+Before: [1, 2, 2, 3]
+15 0 2 3
+After:  [1, 2, 2, 0]
+
+Before: [0, 3, 2, 3]
+8 2 3 2
+After:  [0, 3, 0, 3]
+
+Before: [3, 1, 1, 3]
+8 2 3 0
+After:  [0, 1, 1, 3]
+
+Before: [0, 0, 2, 3]
+7 0 1 1
+After:  [0, 0, 2, 3]
+
+Before: [3, 1, 2, 1]
+2 3 2 2
+After:  [3, 1, 1, 1]
+
+Before: [3, 1, 2, 3]
+6 1 2 2
+After:  [3, 1, 0, 3]
+
+Before: [2, 0, 1, 0]
+3 0 3 2
+After:  [2, 0, 1, 0]
+
+Before: [1, 2, 2, 2]
+1 2 1 3
+After:  [1, 2, 2, 1]
+
+Before: [2, 2, 1, 1]
+9 0 3 1
+After:  [2, 1, 1, 1]
+
+Before: [1, 2, 2, 2]
+13 1 2 2
+After:  [1, 2, 4, 2]
+
+Before: [0, 2, 2, 1]
+4 0 0 3
+After:  [0, 2, 2, 0]
+
+Before: [2, 0, 2, 0]
+3 0 3 3
+After:  [2, 0, 2, 1]
+
+Before: [1, 0, 2, 2]
+15 0 2 1
+After:  [1, 0, 2, 2]
+
+Before: [2, 3, 2, 1]
+13 2 2 1
+After:  [2, 4, 2, 1]
+
+Before: [0, 0, 1, 1]
+4 0 0 2
+After:  [0, 0, 0, 1]
+
+Before: [3, 2, 3, 2]
+12 3 3 3
+After:  [3, 2, 3, 0]
+
+Before: [2, 1, 0, 3]
+8 1 3 2
+After:  [2, 1, 0, 3]
+
+Before: [1, 1, 0, 1]
+14 0 2 1
+After:  [1, 0, 0, 1]
+
+Before: [3, 0, 0, 3]
+1 3 0 2
+After:  [3, 0, 1, 3]
+
+Before: [0, 1, 1, 1]
+12 3 3 3
+After:  [0, 1, 1, 0]
+
+Before: [1, 3, 2, 1]
+2 3 2 2
+After:  [1, 3, 1, 1]
+
+Before: [2, 2, 0, 0]
+3 0 3 3
+After:  [2, 2, 0, 1]
+
+Before: [3, 1, 1, 2]
+0 1 3 0
+After:  [0, 1, 1, 2]
+
+Before: [3, 0, 2, 1]
+2 3 2 3
+After:  [3, 0, 2, 1]
+
+Before: [2, 1, 3, 0]
+3 0 3 2
+After:  [2, 1, 1, 0]
+
+Before: [2, 3, 2, 2]
+1 2 0 3
+After:  [2, 3, 2, 1]
+
+Before: [0, 2, 2, 1]
+2 3 2 2
+After:  [0, 2, 1, 1]
+
+Before: [1, 0, 2, 0]
+15 0 2 2
+After:  [1, 0, 0, 0]
+
+Before: [3, 0, 2, 1]
+2 3 2 1
+After:  [3, 1, 2, 1]
+
+Before: [1, 1, 0, 2]
+14 0 2 3
+After:  [1, 1, 0, 0]
+
+Before: [1, 2, 2, 1]
+2 3 2 0
+After:  [1, 2, 2, 1]
+
+Before: [3, 1, 0, 1]
+11 3 1 0
+After:  [0, 1, 0, 1]
+
+Before: [1, 2, 0, 2]
+12 3 3 1
+After:  [1, 0, 0, 2]
+
+Before: [0, 3, 0, 1]
+5 0 1 2
+After:  [0, 3, 0, 1]
+
+Before: [2, 2, 1, 2]
+10 2 1 3
+After:  [2, 2, 1, 2]
+
+Before: [2, 1, 2, 0]
+13 2 2 1
+After:  [2, 4, 2, 0]
+
+Before: [3, 3, 2, 2]
+13 2 2 1
+After:  [3, 4, 2, 2]
+
+Before: [3, 3, 0, 3]
+11 0 2 3
+After:  [3, 3, 0, 1]
+
+Before: [0, 2, 2, 1]
+2 3 2 1
+After:  [0, 1, 2, 1]
+
+Before: [2, 0, 3, 0]
+3 0 3 2
+After:  [2, 0, 1, 0]
+
+Before: [2, 3, 2, 1]
+2 3 2 3
+After:  [2, 3, 2, 1]
+
+Before: [2, 2, 1, 3]
+10 2 1 3
+After:  [2, 2, 1, 2]
+
+Before: [2, 1, 2, 0]
+1 2 0 3
+After:  [2, 1, 2, 1]
+
+Before: [2, 1, 2, 0]
+3 0 3 2
+After:  [2, 1, 1, 0]
+
+Before: [0, 1, 1, 2]
+0 1 3 3
+After:  [0, 1, 1, 0]
+
+Before: [1, 3, 0, 1]
+14 0 2 2
+After:  [1, 3, 0, 1]
+
+Before: [0, 0, 2, 1]
+2 3 2 1
+After:  [0, 1, 2, 1]
+
+Before: [0, 3, 0, 0]
+7 0 3 1
+After:  [0, 0, 0, 0]
+
+Before: [2, 0, 0, 3]
+11 0 1 3
+After:  [2, 0, 0, 1]
+
+Before: [0, 0, 2, 1]
+2 3 2 2
+After:  [0, 0, 1, 1]
+
+Before: [3, 1, 0, 2]
+0 1 3 2
+After:  [3, 1, 0, 2]
+
+Before: [2, 2, 2, 0]
+3 0 3 0
+After:  [1, 2, 2, 0]
+
+Before: [2, 0, 2, 1]
+2 3 2 2
+After:  [2, 0, 1, 1]
+
+Before: [2, 1, 2, 1]
+9 0 3 2
+After:  [2, 1, 1, 1]
+
+Before: [2, 1, 2, 2]
+6 1 2 2
+After:  [2, 1, 0, 2]
+
+Before: [0, 3, 2, 0]
+13 2 2 0
+After:  [4, 3, 2, 0]
+
+Before: [3, 2, 1, 0]
+10 2 1 3
+After:  [3, 2, 1, 2]
+
+Before: [2, 3, 0, 1]
+9 0 3 2
+After:  [2, 3, 1, 1]
+
+Before: [2, 2, 2, 3]
+13 0 2 0
+After:  [4, 2, 2, 3]
+
+Before: [3, 3, 2, 3]
+1 3 0 0
+After:  [1, 3, 2, 3]
+
+Before: [2, 1, 2, 0]
+13 2 2 0
+After:  [4, 1, 2, 0]
+
+Before: [3, 0, 1, 3]
+8 2 3 1
+After:  [3, 0, 1, 3]
+
+Before: [0, 2, 3, 1]
+5 0 2 3
+After:  [0, 2, 3, 0]
+
+Before: [0, 2, 0, 3]
+4 0 0 1
+After:  [0, 0, 0, 3]
+
+Before: [2, 2, 1, 1]
+10 2 1 1
+After:  [2, 2, 1, 1]
+
+Before: [1, 2, 2, 1]
+15 0 2 0
+After:  [0, 2, 2, 1]
+
+Before: [2, 1, 2, 2]
+1 2 0 3
+After:  [2, 1, 2, 1]
+
+Before: [2, 2, 1, 1]
+9 0 3 3
+After:  [2, 2, 1, 1]
+
+Before: [0, 3, 2, 1]
+13 2 2 1
+After:  [0, 4, 2, 1]
+
+Before: [2, 1, 2, 1]
+6 1 2 3
+After:  [2, 1, 2, 0]
+
+Before: [2, 1, 2, 2]
+12 3 3 3
+After:  [2, 1, 2, 0]
+
+Before: [2, 1, 3, 1]
+9 0 3 2
+After:  [2, 1, 1, 1]
+
+Before: [2, 0, 2, 0]
+3 0 3 1
+After:  [2, 1, 2, 0]
+
+Before: [1, 0, 0, 3]
+14 0 2 2
+After:  [1, 0, 0, 3]
+
+Before: [3, 1, 3, 3]
+8 1 3 1
+After:  [3, 0, 3, 3]
+
+Before: [0, 1, 2, 1]
+2 3 2 3
+After:  [0, 1, 2, 1]
+
+Before: [0, 3, 1, 3]
+5 0 2 3
+After:  [0, 3, 1, 0]
+
+Before: [0, 1, 3, 2]
+12 3 3 1
+After:  [0, 0, 3, 2]
+
+Before: [0, 0, 3, 3]
+5 0 2 0
+After:  [0, 0, 3, 3]
+
+Before: [0, 2, 3, 3]
+4 0 0 3
+After:  [0, 2, 3, 0]
+
+Before: [0, 2, 3, 0]
+5 0 1 3
+After:  [0, 2, 3, 0]
+
+Before: [2, 1, 3, 0]
+3 0 3 3
+After:  [2, 1, 3, 1]
+
+Before: [1, 2, 0, 0]
+14 0 2 1
+After:  [1, 0, 0, 0]
+
+Before: [2, 3, 1, 0]
+3 0 3 2
+After:  [2, 3, 1, 0]
+
+Before: [0, 2, 0, 0]
+7 0 3 2
+After:  [0, 2, 0, 0]
+
+Before: [2, 3, 2, 1]
+9 0 3 0
+After:  [1, 3, 2, 1]
+
+Before: [0, 2, 2, 1]
+2 3 2 0
+After:  [1, 2, 2, 1]
+
+Before: [3, 3, 1, 3]
+8 2 3 1
+After:  [3, 0, 1, 3]
+
+Before: [0, 2, 1, 1]
+12 3 3 1
+After:  [0, 0, 1, 1]
+
+Before: [0, 0, 3, 2]
+4 0 0 1
+After:  [0, 0, 3, 2]
+
+Before: [0, 2, 2, 3]
+8 1 3 2
+After:  [0, 2, 0, 3]
+
+Before: [2, 0, 3, 1]
+9 0 3 2
+After:  [2, 0, 1, 1]
+
+Before: [0, 2, 2, 2]
+13 1 2 0
+After:  [4, 2, 2, 2]
+
+Before: [1, 0, 2, 1]
+2 3 2 3
+After:  [1, 0, 2, 1]
+
+Before: [3, 1, 0, 1]
+11 3 1 2
+After:  [3, 1, 0, 1]
+
+Before: [2, 2, 1, 0]
+3 0 3 2
+After:  [2, 2, 1, 0]
+
+Before: [0, 3, 3, 3]
+5 0 1 3
+After:  [0, 3, 3, 0]
+
+Before: [1, 0, 0, 1]
+14 0 2 0
+After:  [0, 0, 0, 1]
+
+Before: [0, 0, 3, 3]
+7 0 1 2
+After:  [0, 0, 0, 3]
+
+Before: [1, 1, 2, 2]
+13 2 2 3
+After:  [1, 1, 2, 4]
+
+Before: [3, 2, 1, 3]
+8 2 3 2
+After:  [3, 2, 0, 3]
+
+Before: [3, 3, 2, 1]
+2 3 2 0
+After:  [1, 3, 2, 1]
+
+Before: [2, 1, 2, 1]
+2 3 2 3
+After:  [2, 1, 2, 1]
+
+Before: [0, 2, 1, 0]
+4 0 0 0
+After:  [0, 2, 1, 0]
+
+Before: [3, 2, 2, 1]
+2 3 2 2
+After:  [3, 2, 1, 1]
+
+Before: [0, 0, 1, 1]
+7 0 1 1
+After:  [0, 0, 1, 1]
+
+Before: [2, 2, 2, 0]
+1 2 1 1
+After:  [2, 1, 2, 0]
+
+Before: [1, 2, 1, 1]
+10 2 1 3
+After:  [1, 2, 1, 2]
+
+Before: [0, 1, 1, 2]
+0 1 3 2
+After:  [0, 1, 0, 2]
+
+Before: [3, 1, 3, 2]
+0 1 3 1
+After:  [3, 0, 3, 2]
+
+Before: [2, 1, 2, 0]
+3 0 3 1
+After:  [2, 1, 2, 0]
+
+Before: [3, 1, 0, 2]
+0 1 3 1
+After:  [3, 0, 0, 2]
+
+Before: [0, 2, 1, 2]
+10 2 1 1
+After:  [0, 2, 1, 2]
+
+Before: [0, 0, 3, 3]
+7 0 1 0
+After:  [0, 0, 3, 3]
+
+Before: [3, 2, 2, 2]
+13 2 2 1
+After:  [3, 4, 2, 2]
+
+Before: [0, 1, 1, 0]
+11 2 1 0
+After:  [0, 1, 1, 0]
+
+Before: [2, 0, 2, 2]
+13 2 2 1
+After:  [2, 4, 2, 2]
+
+Before: [2, 0, 3, 3]
+11 0 1 1
+After:  [2, 1, 3, 3]
+
+Before: [1, 0, 2, 0]
+15 0 2 1
+After:  [1, 0, 2, 0]
+
+Before: [3, 0, 2, 3]
+8 2 3 1
+After:  [3, 0, 2, 3]
+
+Before: [3, 2, 1, 0]
+10 2 1 0
+After:  [2, 2, 1, 0]
+
+Before: [1, 2, 1, 0]
+10 2 1 2
+After:  [1, 2, 2, 0]
+
+Before: [1, 2, 2, 0]
+15 0 2 0
+After:  [0, 2, 2, 0]
+
+Before: [0, 0, 0, 0]
+7 0 2 3
+After:  [0, 0, 0, 0]
+
+Before: [1, 0, 0, 1]
+14 0 2 3
+After:  [1, 0, 0, 0]
+
+Before: [1, 2, 2, 1]
+2 3 2 1
+After:  [1, 1, 2, 1]
+
+Before: [1, 1, 2, 0]
+6 1 2 2
+After:  [1, 1, 0, 0]
+
+Before: [1, 1, 2, 3]
+6 1 2 2
+After:  [1, 1, 0, 3]
+
+Before: [3, 1, 2, 1]
+2 3 2 1
+After:  [3, 1, 2, 1]
+
+Before: [0, 0, 3, 3]
+5 0 2 3
+After:  [0, 0, 3, 0]
+
+Before: [0, 3, 2, 1]
+5 0 2 0
+After:  [0, 3, 2, 1]
+
+Before: [1, 2, 1, 1]
+12 2 3 1
+After:  [1, 0, 1, 1]
+
+Before: [2, 2, 1, 1]
+10 2 1 3
+After:  [2, 2, 1, 2]
+
+Before: [3, 3, 1, 3]
+8 2 3 2
+After:  [3, 3, 0, 3]
+
+Before: [3, 1, 2, 1]
+2 3 2 0
+After:  [1, 1, 2, 1]
+
+Before: [3, 1, 0, 3]
+8 1 3 2
+After:  [3, 1, 0, 3]
+
+Before: [2, 1, 2, 1]
+2 3 2 1
+After:  [2, 1, 2, 1]
+
+Before: [2, 3, 3, 1]
+9 0 3 3
+After:  [2, 3, 3, 1]
+
+Before: [1, 2, 1, 0]
+10 2 1 3
+After:  [1, 2, 1, 2]
+
+Before: [2, 3, 0, 0]
+3 0 3 1
+After:  [2, 1, 0, 0]
+
+Before: [2, 1, 1, 3]
+11 2 1 3
+After:  [2, 1, 1, 0]
+
+Before: [3, 3, 2, 1]
+2 3 2 3
+After:  [3, 3, 2, 1]
+
+Before: [1, 1, 2, 2]
+6 1 2 2
+After:  [1, 1, 0, 2]
+
+Before: [0, 0, 1, 2]
+12 3 3 0
+After:  [0, 0, 1, 2]
+
+Before: [0, 2, 2, 1]
+12 3 3 1
+After:  [0, 0, 2, 1]
+
+Before: [2, 1, 2, 2]
+0 1 3 1
+After:  [2, 0, 2, 2]
+
+Before: [2, 3, 2, 1]
+2 3 2 0
+After:  [1, 3, 2, 1]
+
+Before: [1, 2, 1, 3]
+10 2 1 2
+After:  [1, 2, 2, 3]
+
+Before: [3, 2, 2, 1]
+12 3 3 0
+After:  [0, 2, 2, 1]
+
+Before: [0, 2, 1, 3]
+5 0 1 2
+After:  [0, 2, 0, 3]
+
+Before: [1, 2, 2, 3]
+15 0 2 0
+After:  [0, 2, 2, 3]
+
+Before: [2, 1, 2, 2]
+0 1 3 0
+After:  [0, 1, 2, 2]
+
+Before: [2, 1, 2, 2]
+13 3 2 1
+After:  [2, 4, 2, 2]
+
+Before: [0, 0, 2, 0]
+7 0 1 1
+After:  [0, 0, 2, 0]
+
+Before: [1, 3, 0, 1]
+12 3 3 0
+After:  [0, 3, 0, 1]
+
+Before: [1, 1, 0, 3]
+8 1 3 2
+After:  [1, 1, 0, 3]
+
+Before: [3, 1, 0, 2]
+0 1 3 3
+After:  [3, 1, 0, 0]
+
+Before: [0, 3, 2, 1]
+13 2 2 2
+After:  [0, 3, 4, 1]
+
+Before: [2, 0, 3, 1]
+9 0 3 1
+After:  [2, 1, 3, 1]
+
+Before: [2, 1, 1, 1]
+12 2 3 2
+After:  [2, 1, 0, 1]
+
+Before: [0, 1, 1, 0]
+7 0 3 1
+After:  [0, 0, 1, 0]
+
+Before: [2, 0, 2, 0]
+3 0 3 0
+After:  [1, 0, 2, 0]
+
+Before: [0, 3, 2, 1]
+2 3 2 3
+After:  [0, 3, 2, 1]
+
+Before: [2, 0, 2, 0]
+11 0 1 3
+After:  [2, 0, 2, 1]
+
+Before: [1, 2, 2, 1]
+12 3 3 0
+After:  [0, 2, 2, 1]
+
+Before: [3, 2, 1, 2]
+10 2 1 2
+After:  [3, 2, 2, 2]
+
+Before: [1, 2, 2, 3]
+1 2 1 2
+After:  [1, 2, 1, 3]
+
+Before: [1, 1, 0, 0]
+14 0 2 1
+After:  [1, 0, 0, 0]
+
+Before: [1, 3, 0, 0]
+14 0 2 0
+After:  [0, 3, 0, 0]
+
+Before: [2, 1, 0, 2]
+0 1 3 1
+After:  [2, 0, 0, 2]
+
+Before: [2, 1, 1, 1]
+9 0 3 1
+After:  [2, 1, 1, 1]
+
+Before: [1, 1, 1, 1]
+11 2 1 0
+After:  [0, 1, 1, 1]
+
+Before: [1, 0, 0, 0]
+14 0 2 0
+After:  [0, 0, 0, 0]
+
+Before: [2, 1, 3, 1]
+11 3 1 3
+After:  [2, 1, 3, 0]
+
+Before: [0, 2, 3, 2]
+5 0 2 3
+After:  [0, 2, 3, 0]
+
+Before: [2, 1, 2, 3]
+8 1 3 2
+After:  [2, 1, 0, 3]
+
+Before: [1, 1, 2, 1]
+15 0 2 1
+After:  [1, 0, 2, 1]
+
+Before: [0, 2, 0, 2]
+5 0 3 1
+After:  [0, 0, 0, 2]
+
+Before: [0, 3, 2, 1]
+5 0 2 2
+After:  [0, 3, 0, 1]
+

+ 101 - 0
d16/main.js

@@ -0,0 +1,101 @@
+
+function readAllSamples(cb) {
+    require("fs").readFile('./input', 'utf8', (err, data) => {
+        var samples = data.split("\n\n").map(l => {
+            var args = l.match(/(\d+)/g);
+            if (args)
+                return new Sample(args);
+        }).filter(i => !!i);
+        cb(samples);
+    });
+}
+
+function readProgram(cb) {
+    require("fs").readFile('./testprogram', 'utf8', (err, data) => {
+        cb(data.split("\n").filter(i => !!i).map(i => i.match(/(\d+)/g).map(i => parseInt(i))));
+    });
+}
+
+var ops = {
+    "addr": function(args, reg) { reg[args[3]] = reg[args[1]] +reg[args[2]]; },
+    "addi": function(args, reg) { reg[args[3]] = reg[args[1]] +args[2]; },
+    "mulr": function(args, reg) { reg[args[3]] = reg[args[1]] *reg[args[2]]; },
+    "muli": function(args, reg) { reg[args[3]] = reg[args[1]] *args[2]; },
+    "banr": function(args, reg) { reg[args[3]] = reg[args[1]] & reg[args[2]]; },
+    "bani": function(args, reg) { reg[args[3]] = reg[args[1]] & args[2]; },
+    "borr": function(args, reg) { reg[args[3]] = reg[args[1]] | reg[args[2]]; },
+    "bori": function(args, reg) { reg[args[3]] = reg[args[1]] | args[2]; },
+    "setr": function(args, reg) { reg[args[3]] = reg[args[1]] },
+    "seti": function(args, reg) { reg[args[3]] = args[1] },
+    "gtir": function(args, reg) { reg[args[3]] = args[1] > reg[args[2]] ? 1 : 0 },
+    "gtri": function(args, reg) { reg[args[3]] = reg[args[1]] > args[2] ? 1 : 0 },
+    "gtrr": function(args, reg) { reg[args[3]] = reg[args[1]] > reg[args[2]] ? 1 : 0 },
+    "eqir": function(args, reg) { reg[args[3]] = args[1] == reg[args[2]] ? 1 : 0 },
+    "eqri": function(args, reg) { reg[args[3]] = reg[args[1]] == args[2] ? 1 : 0 },
+    "eqrr": function(args, reg) { reg[args[3]] = reg[args[1]] == reg[args[2]] ? 1 : 0 }
+};
+
+function Sample(args) {
+    this.from = args.splice(0, 4).map(i => parseInt(i));
+    this.args = args.splice(0, 4).map(i => parseInt(i));
+    this.to = args.splice(0, 4).map(i => parseInt(i));
+}
+
+Sample.prototype.getNotPossibleOps = function() {
+    var notPossibleOps = [];
+    for (op in ops) {
+        var reg = this.from.slice();
+        ops[op](this.args, reg);
+        var found = true;
+        for (var i =0; i < reg.length && found; ++i)
+            if (reg[i] !== this.to[i])
+                found = false;
+        if (!found)
+            notPossibleOps.push(op);
+    }
+    return notPossibleOps;
+}
+
+function runSampleProgram(opCodeMap) {
+    readProgram(instrs => {
+        var reg = [ 0, 0, 0, 0 ];
+        instrs.forEach(instr => opCodeMap[instr[0]](instr, reg));
+        console.log("Registers: ", reg);
+    });
+}
+
+function run() {
+    readAllSamples(samples => {
+        var sampleBehavingLikeThreeOrMoreOpcodes = 0,
+            possibleOpCodes = [];
+        for (var i in ops)
+            possibleOpCodes.push(Object.keys(ops));
+        samples.forEach(s => {
+            var notPossibleOps = s.getNotPossibleOps();
+            if (notPossibleOps.length <= possibleOpCodes.length -3)
+                ++sampleBehavingLikeThreeOrMoreOpcodes;
+            notPossibleOps.forEach(o => {
+                var index = possibleOpCodes[s.args[0]].indexOf(o);
+                if (index >= 0)
+                    possibleOpCodes[s.args[0]].splice(index, 1);
+            });
+        });
+        console.log("Number of sample behaving like 3 or more opcodes: ", sampleBehavingLikeThreeOrMoreOpcodes);
+        var found = true;
+        while (found) {
+            found = false;
+            for (var i =0; i < possibleOpCodes.length; ++i)
+                if (possibleOpCodes[i].length == 1)
+                    for (var j =0; j < possibleOpCodes.length; ++j)
+                        if (j != i && possibleOpCodes[j].indexOf(possibleOpCodes[i][0]) >= 0) {
+                            possibleOpCodes[j].splice(possibleOpCodes[j].indexOf(possibleOpCodes[i][0]), 1);
+                            found = true;
+                        }
+        }
+        var opCodeMap = possibleOpCodes.map(i => ops[i[0]]);
+        runSampleProgram(opCodeMap);
+    });
+}
+
+run();
+

+ 836 - 0
d16/testprogram

@@ -0,0 +1,836 @@
+5 2 0 2
+10 2 0 2
+15 3 2 3
+15 2 3 0
+6 3 2 3
+5 3 1 3
+5 3 3 3
+13 1 3 1
+2 1 0 3
+15 1 0 0
+15 2 1 2
+15 0 1 1
+2 0 2 0
+5 0 3 0
+13 0 3 3
+2 3 3 2
+15 2 2 1
+15 2 0 0
+15 1 0 3
+9 0 3 1
+5 1 3 1
+13 1 2 2
+15 1 2 1
+15 0 1 0
+13 1 3 1
+5 1 2 1
+13 2 1 2
+2 2 0 1
+15 2 1 3
+15 2 1 2
+4 2 3 2
+5 2 2 2
+13 2 1 1
+2 1 3 0
+5 2 0 1
+10 1 3 1
+15 2 3 2
+0 1 3 3
+5 3 2 3
+13 3 0 0
+2 0 2 2
+15 1 1 0
+15 1 2 3
+15 1 2 1
+13 1 3 1
+5 1 1 1
+13 1 2 2
+2 2 2 1
+5 0 0 3
+10 3 0 3
+15 2 3 2
+15 3 1 0
+7 2 0 3
+5 3 2 3
+13 3 1 1
+2 1 3 0
+15 3 0 1
+15 0 1 3
+8 3 2 1
+5 1 2 1
+13 1 0 0
+2 0 3 1
+15 1 2 0
+15 2 2 3
+14 0 3 2
+5 2 3 2
+13 2 1 1
+15 0 0 2
+15 2 2 0
+1 0 3 3
+5 3 3 3
+13 3 1 1
+2 1 3 0
+15 2 1 2
+15 2 3 1
+15 1 1 3
+13 3 3 2
+5 2 3 2
+5 2 1 2
+13 0 2 0
+2 0 1 3
+15 1 2 0
+15 3 3 1
+15 3 0 2
+6 1 2 1
+5 1 3 1
+13 1 3 3
+2 3 3 1
+5 3 0 2
+10 2 0 2
+15 1 2 3
+5 3 0 0
+10 0 3 0
+12 2 0 2
+5 2 2 2
+5 2 1 2
+13 2 1 1
+2 1 3 2
+15 1 0 0
+15 2 3 3
+15 3 1 1
+0 1 3 0
+5 0 1 0
+13 2 0 2
+2 2 3 1
+15 0 0 3
+15 3 0 2
+15 1 2 0
+5 0 2 0
+5 0 3 0
+5 0 2 0
+13 0 1 1
+2 1 3 2
+15 1 2 3
+15 1 1 0
+15 3 3 1
+10 3 1 3
+5 3 3 3
+13 3 2 2
+2 2 1 1
+15 0 0 2
+15 1 3 3
+15 0 0 0
+15 2 3 3
+5 3 3 3
+13 1 3 1
+2 1 0 2
+15 1 3 1
+5 1 0 0
+10 0 2 0
+15 3 1 3
+0 3 0 0
+5 0 3 0
+13 2 0 2
+2 2 0 0
+15 2 2 1
+15 3 0 2
+0 3 1 3
+5 3 1 3
+13 3 0 0
+5 1 0 1
+10 1 3 1
+15 1 3 3
+5 3 2 1
+5 1 1 1
+5 1 1 1
+13 0 1 0
+2 0 2 2
+15 3 3 1
+15 2 0 0
+9 0 3 1
+5 1 3 1
+13 1 2 2
+2 2 2 3
+5 0 0 0
+10 0 3 0
+15 2 0 1
+5 2 0 2
+10 2 0 2
+12 2 0 0
+5 0 3 0
+13 3 0 3
+15 1 3 0
+5 1 0 1
+10 1 0 1
+5 0 2 1
+5 1 1 1
+13 3 1 3
+2 3 0 2
+15 3 1 1
+15 0 3 3
+15 2 0 0
+11 0 1 3
+5 3 2 3
+13 3 2 2
+2 2 1 1
+15 3 1 2
+15 3 3 3
+12 0 2 2
+5 2 3 2
+5 2 3 2
+13 2 1 1
+15 0 3 2
+15 1 1 3
+15 0 0 0
+15 2 3 2
+5 2 2 2
+5 2 3 2
+13 1 2 1
+15 1 1 2
+15 2 1 0
+14 3 0 2
+5 2 1 2
+13 2 1 1
+5 1 0 3
+10 3 2 3
+15 3 0 0
+15 3 0 2
+0 0 3 3
+5 3 2 3
+13 1 3 1
+15 1 2 0
+15 2 1 2
+5 0 0 3
+10 3 0 3
+8 3 2 3
+5 3 3 3
+13 1 3 1
+2 1 0 2
+5 3 0 0
+10 0 2 0
+15 2 1 3
+5 1 0 1
+10 1 0 1
+1 0 3 1
+5 1 3 1
+13 1 2 2
+2 2 0 3
+15 0 3 2
+15 1 3 1
+15 1 0 0
+5 0 2 0
+5 0 1 0
+13 3 0 3
+2 3 1 0
+5 3 0 3
+10 3 2 3
+3 2 3 2
+5 2 2 2
+13 0 2 0
+2 0 2 2
+15 2 3 1
+15 1 2 3
+5 1 0 0
+10 0 1 0
+13 0 3 3
+5 3 3 3
+13 3 2 2
+5 1 0 1
+10 1 0 1
+15 2 1 3
+15 1 3 0
+5 0 3 0
+5 0 2 0
+13 0 2 2
+2 2 2 1
+15 2 0 2
+15 0 1 3
+15 2 2 0
+4 0 3 3
+5 3 1 3
+13 3 1 1
+2 1 2 2
+15 1 3 1
+5 3 0 3
+10 3 1 3
+15 1 3 0
+15 3 1 1
+5 1 3 1
+13 1 2 2
+15 2 3 1
+15 3 3 0
+15 3 1 3
+0 3 1 1
+5 1 1 1
+13 1 2 2
+2 2 2 3
+15 1 1 0
+15 2 3 2
+5 0 0 1
+10 1 0 1
+10 0 1 2
+5 2 2 2
+5 2 2 2
+13 3 2 3
+2 3 0 2
+15 1 2 3
+15 2 1 0
+15 3 2 1
+0 1 0 0
+5 0 2 0
+13 2 0 2
+15 2 2 0
+15 2 2 3
+0 1 3 3
+5 3 3 3
+13 3 2 2
+2 2 2 3
+15 0 0 2
+15 0 3 1
+15 3 3 0
+12 2 0 1
+5 1 3 1
+13 1 3 3
+2 3 2 0
+15 0 3 1
+15 1 1 3
+15 1 3 2
+10 3 1 2
+5 2 2 2
+13 0 2 0
+2 0 0 2
+15 1 0 1
+15 1 1 0
+13 3 3 0
+5 0 1 0
+13 0 2 2
+15 2 0 1
+15 2 1 0
+15 2 2 3
+4 1 3 0
+5 0 3 0
+13 0 2 2
+2 2 0 0
+15 2 3 2
+15 1 3 1
+4 2 3 1
+5 1 1 1
+13 1 0 0
+2 0 2 3
+5 3 0 1
+10 1 2 1
+15 2 2 0
+15 3 2 2
+12 0 2 1
+5 1 2 1
+5 1 1 1
+13 3 1 3
+2 3 3 1
+15 1 1 0
+5 1 0 2
+10 2 2 2
+15 2 2 3
+14 0 3 0
+5 0 3 0
+13 1 0 1
+2 1 0 0
+15 1 3 1
+15 1 0 2
+14 1 3 1
+5 1 1 1
+5 1 2 1
+13 0 1 0
+2 0 2 2
+5 3 0 1
+10 1 1 1
+15 1 0 0
+14 1 3 3
+5 3 2 3
+5 3 2 3
+13 3 2 2
+2 2 3 3
+15 3 1 2
+15 3 1 1
+15 0 3 0
+6 1 2 2
+5 2 1 2
+13 3 2 3
+5 0 0 2
+10 2 3 2
+15 2 1 1
+5 2 0 0
+10 0 1 0
+7 1 2 1
+5 1 3 1
+5 1 3 1
+13 1 3 3
+2 3 0 1
+15 1 1 2
+15 2 0 0
+15 3 0 3
+0 3 0 0
+5 0 1 0
+13 0 1 1
+2 1 0 0
+5 0 0 2
+10 2 3 2
+15 1 1 1
+5 1 2 3
+5 3 3 3
+13 3 0 0
+2 0 1 2
+15 2 0 0
+15 2 0 3
+4 0 3 3
+5 3 1 3
+13 3 2 2
+2 2 3 0
+15 3 2 2
+15 0 1 3
+3 3 2 2
+5 2 2 2
+13 0 2 0
+2 0 0 3
+15 2 3 1
+15 1 2 0
+15 2 2 2
+2 0 2 2
+5 2 3 2
+13 2 3 3
+2 3 3 2
+15 0 1 1
+15 1 0 3
+10 0 1 3
+5 3 2 3
+5 3 3 3
+13 3 2 2
+2 2 1 0
+15 3 3 3
+15 1 1 2
+6 3 2 2
+5 2 3 2
+13 2 0 0
+2 0 1 1
+15 3 2 0
+15 0 0 2
+15 1 1 3
+13 3 3 0
+5 0 3 0
+13 0 1 1
+2 1 2 3
+15 2 3 0
+15 3 0 2
+15 0 3 1
+12 0 2 0
+5 0 2 0
+5 0 2 0
+13 3 0 3
+2 3 0 1
+15 3 2 0
+15 2 1 3
+15 2 1 2
+11 2 0 0
+5 0 3 0
+13 1 0 1
+2 1 2 0
+15 1 0 3
+15 1 2 1
+15 0 1 2
+5 1 2 1
+5 1 2 1
+13 0 1 0
+2 0 3 2
+15 2 2 0
+15 2 2 1
+9 0 3 3
+5 3 2 3
+13 2 3 2
+15 3 1 3
+0 3 0 3
+5 3 1 3
+13 2 3 2
+2 2 3 1
+15 3 3 2
+5 3 0 3
+10 3 0 3
+3 3 2 0
+5 0 1 0
+13 0 1 1
+2 1 1 2
+15 3 0 1
+15 2 1 0
+15 2 2 3
+1 0 3 3
+5 3 2 3
+13 2 3 2
+15 2 2 3
+15 0 3 1
+1 0 3 0
+5 0 2 0
+5 0 1 0
+13 2 0 2
+15 2 2 0
+15 1 2 1
+5 1 0 3
+10 3 1 3
+9 0 3 3
+5 3 3 3
+13 3 2 2
+2 2 0 1
+15 2 2 3
+5 3 0 2
+10 2 3 2
+15 1 3 0
+5 0 2 2
+5 2 1 2
+13 2 1 1
+15 2 1 2
+15 3 1 0
+11 2 0 2
+5 2 1 2
+13 2 1 1
+15 1 0 2
+15 1 0 3
+15 2 3 0
+9 0 3 2
+5 2 2 2
+5 2 2 2
+13 1 2 1
+2 1 0 0
+15 3 2 2
+5 0 0 1
+10 1 3 1
+10 3 1 1
+5 1 2 1
+13 1 0 0
+2 0 0 1
+15 2 1 2
+5 2 0 0
+10 0 0 0
+15 0 2 3
+8 3 2 0
+5 0 1 0
+13 1 0 1
+2 1 2 2
+15 3 0 1
+15 2 2 3
+15 1 2 0
+14 0 3 3
+5 3 2 3
+5 3 1 3
+13 2 3 2
+15 0 0 0
+15 1 2 3
+13 3 3 1
+5 1 1 1
+13 1 2 2
+2 2 2 1
+15 2 3 3
+15 0 3 2
+15 1 0 0
+14 0 3 3
+5 3 1 3
+5 3 2 3
+13 3 1 1
+2 1 3 3
+15 2 1 0
+15 3 2 1
+15 1 2 2
+6 1 2 2
+5 2 1 2
+13 3 2 3
+15 2 3 1
+15 3 3 2
+12 0 2 0
+5 0 2 0
+5 0 3 0
+13 3 0 3
+2 3 2 1
+15 0 2 2
+15 2 1 0
+5 2 0 3
+10 3 1 3
+9 0 3 2
+5 2 3 2
+13 1 2 1
+2 1 2 0
+15 3 0 1
+15 2 3 2
+10 3 1 1
+5 1 1 1
+5 1 3 1
+13 1 0 0
+2 0 0 3
+15 2 3 0
+15 3 0 1
+11 2 1 2
+5 2 1 2
+13 2 3 3
+2 3 2 1
+15 3 2 0
+15 0 2 2
+5 0 0 3
+10 3 3 3
+12 2 0 2
+5 2 2 2
+5 2 3 2
+13 1 2 1
+15 3 1 2
+15 1 3 0
+5 1 0 3
+10 3 2 3
+14 0 3 0
+5 0 2 0
+13 0 1 1
+2 1 3 0
+15 0 0 3
+15 2 3 2
+15 2 2 1
+4 1 3 2
+5 2 3 2
+13 0 2 0
+2 0 0 2
+5 1 0 0
+10 0 1 0
+15 1 1 3
+13 0 3 1
+5 1 3 1
+5 1 2 1
+13 1 2 2
+15 0 2 3
+5 3 0 0
+10 0 2 0
+15 3 2 1
+0 1 0 3
+5 3 1 3
+13 2 3 2
+15 0 2 1
+15 0 1 0
+15 1 3 3
+10 3 1 3
+5 3 1 3
+13 2 3 2
+2 2 3 1
+5 1 0 2
+10 2 0 2
+15 3 3 0
+15 2 3 3
+6 0 2 2
+5 2 3 2
+5 2 3 2
+13 2 1 1
+2 1 3 2
+15 0 2 3
+5 1 0 0
+10 0 2 0
+15 3 0 1
+11 0 1 0
+5 0 1 0
+5 0 3 0
+13 0 2 2
+2 2 2 3
+15 2 2 0
+15 1 2 1
+15 1 0 2
+14 1 0 1
+5 1 2 1
+13 3 1 3
+5 3 0 1
+10 1 3 1
+5 1 0 2
+10 2 3 2
+12 0 2 0
+5 0 1 0
+13 0 3 3
+2 3 1 0
+15 0 1 2
+5 2 0 3
+10 3 2 3
+15 0 1 1
+3 2 3 2
+5 2 1 2
+13 0 2 0
+2 0 2 1
+15 1 0 0
+15 2 3 2
+2 0 2 2
+5 2 3 2
+13 1 2 1
+2 1 0 2
+15 2 3 0
+5 1 0 3
+10 3 0 3
+15 1 3 1
+14 1 0 3
+5 3 1 3
+13 2 3 2
+2 2 0 0
+15 2 1 1
+15 2 2 3
+15 3 1 2
+7 1 2 3
+5 3 2 3
+13 0 3 0
+2 0 1 1
+15 0 3 2
+15 3 1 3
+5 2 0 0
+10 0 2 0
+0 3 0 0
+5 0 1 0
+13 1 0 1
+2 1 0 3
+15 2 0 0
+5 0 0 1
+10 1 1 1
+5 1 2 2
+5 2 1 2
+5 2 1 2
+13 3 2 3
+5 2 0 0
+10 0 3 0
+15 1 3 2
+6 0 2 2
+5 2 2 2
+13 3 2 3
+2 3 0 1
+15 2 1 2
+15 1 3 0
+15 2 1 3
+2 0 2 0
+5 0 1 0
+5 0 1 0
+13 0 1 1
+2 1 0 2
+15 3 3 1
+15 1 2 3
+15 1 3 0
+10 3 1 0
+5 0 3 0
+5 0 2 0
+13 0 2 2
+15 1 0 1
+15 1 2 0
+13 0 3 3
+5 3 2 3
+13 3 2 2
+15 1 0 3
+15 0 2 1
+15 2 3 0
+14 3 0 1
+5 1 3 1
+5 1 3 1
+13 1 2 2
+2 2 1 3
+5 1 0 0
+10 0 1 0
+15 0 2 2
+15 0 1 1
+10 0 1 2
+5 2 1 2
+13 3 2 3
+2 3 2 1
+15 3 0 0
+15 2 1 2
+5 0 0 3
+10 3 0 3
+4 2 3 3
+5 3 3 3
+13 3 1 1
+2 1 0 0
+5 1 0 3
+10 3 1 3
+15 3 2 1
+10 3 1 3
+5 3 2 3
+5 3 1 3
+13 3 0 0
+2 0 3 3
+5 0 0 2
+10 2 3 2
+15 1 3 0
+15 0 2 1
+13 0 0 1
+5 1 2 1
+5 1 3 1
+13 3 1 3
+2 3 1 1
+15 1 1 3
+15 2 3 0
+9 0 3 3
+5 3 1 3
+13 3 1 1
+2 1 1 3
+15 1 1 0
+15 0 1 1
+5 2 0 2
+10 2 0 2
+10 0 1 0
+5 0 1 0
+13 3 0 3
+15 1 1 0
+5 0 2 0
+5 0 1 0
+5 0 1 0
+13 3 0 3
+15 1 2 1
+15 2 2 0
+5 2 0 2
+10 2 2 2
+14 1 0 0
+5 0 3 0
+13 0 3 3
+2 3 3 0
+5 1 0 1
+10 1 3 1
+15 3 0 2
+15 1 2 3
+6 1 2 2
+5 2 2 2
+13 2 0 0
+2 0 1 1
+15 3 1 2
+15 2 0 0
+9 0 3 0
+5 0 2 0
+13 1 0 1
+15 1 2 0
+5 1 0 3
+10 3 0 3
+15 2 1 2
+8 3 2 2
+5 2 3 2
+13 1 2 1
+2 1 0 0
+5 0 0 2
+10 2 2 2
+15 3 2 1
+8 3 2 3
+5 3 1 3
+13 3 0 0
+2 0 3 3
+15 1 2 0
+5 3 0 1
+10 1 2 1
+13 0 0 0
+5 0 1 0
+5 0 1 0
+13 0 3 3
+2 3 1 2
+15 1 0 3
+15 2 1 0
+15 3 3 1
+9 0 3 0
+5 0 2 0
+5 0 3 0
+13 2 0 2
+2 2 0 3
+15 3 2 0
+15 3 3 2
+15 2 3 1
+7 1 0 2
+5 2 3 2
+5 2 1 2
+13 3 2 3
+2 3 3 0