diff options
| author | Louis Burda <quent.burda@gmail.com> | 2020-12-08 21:53:34 +0100 |
|---|---|---|
| committer | Louis Burda <quent.burda@gmail.com> | 2020-12-08 21:53:34 +0100 |
| commit | 61c19fd58a9c32919b9b06d38dd9ba202cf43bfb (patch) | |
| tree | 716d58ee8979d3df123acfedcd5cb8472722d422 /src/16 | |
| download | aoc2018-python-61c19fd58a9c32919b9b06d38dd9ba202cf43bfb.tar.gz aoc2018-python-61c19fd58a9c32919b9b06d38dd9ba202cf43bfb.zip | |
Solve 25 days
Diffstat (limited to 'src/16')
| -rw-r--r-- | src/16/input.txt | 4148 | ||||
| -rw-r--r-- | src/16/notes.txt | 47 | ||||
| -rw-r--r-- | src/16/solve.py | 121 |
3 files changed, 4316 insertions, 0 deletions
diff --git a/src/16/input.txt b/src/16/input.txt new file mode 100644 index 0000000..71f3ecd --- /dev/null +++ b/src/16/input.txt @@ -0,0 +1,4148 @@ +Before: [1, 1, 0, 1]
+0 1 0 1
+After: [1, 1, 0, 1]
+
+Before: [2, 2, 2, 1]
+2 1 2 2
+After: [2, 2, 1, 1]
+
+Before: [1, 3, 2, 2]
+1 2 2 0
+After: [4, 3, 2, 2]
+
+Before: [2, 2, 1, 1]
+8 0 2 1
+After: [2, 3, 1, 1]
+
+Before: [0, 1, 2, 2]
+7 3 1 1
+After: [0, 3, 2, 2]
+
+Before: [1, 2, 2, 0]
+8 2 0 1
+After: [1, 3, 2, 0]
+
+Before: [2, 2, 2, 0]
+2 1 2 0
+After: [1, 2, 2, 0]
+
+Before: [0, 1, 1, 1]
+3 1 0 1
+After: [0, 1, 1, 1]
+
+Before: [2, 3, 2, 2]
+15 1 2 2
+After: [2, 3, 6, 2]
+
+Before: [0, 3, 1, 1]
+9 0 0 3
+After: [0, 3, 1, 0]
+
+Before: [2, 0, 1, 1]
+4 2 3 2
+After: [2, 0, 0, 1]
+
+Before: [1, 1, 3, 3]
+6 0 3 3
+After: [1, 1, 3, 0]
+
+Before: [3, 2, 3, 2]
+11 1 3 3
+After: [3, 2, 3, 1]
+
+Before: [3, 2, 1, 2]
+14 3 3 1
+After: [3, 6, 1, 2]
+
+Before: [1, 0, 1, 2]
+10 1 0 1
+After: [1, 1, 1, 2]
+
+Before: [1, 2, 0, 2]
+11 1 3 2
+After: [1, 2, 1, 2]
+
+Before: [3, 3, 0, 0]
+14 0 3 2
+After: [3, 3, 9, 0]
+
+Before: [2, 0, 2, 3]
+6 0 3 1
+After: [2, 0, 2, 3]
+
+Before: [3, 2, 2, 2]
+11 1 3 1
+After: [3, 1, 2, 2]
+
+Before: [2, 2, 0, 2]
+13 1 2 1
+After: [2, 4, 0, 2]
+
+Before: [2, 2, 2, 0]
+8 3 1 3
+After: [2, 2, 2, 2]
+
+Before: [2, 3, 1, 3]
+6 0 3 2
+After: [2, 3, 0, 3]
+
+Before: [3, 3, 1, 1]
+14 1 3 1
+After: [3, 9, 1, 1]
+
+Before: [2, 2, 1, 3]
+6 0 3 2
+After: [2, 2, 0, 3]
+
+Before: [2, 3, 2, 3]
+15 3 3 0
+After: [9, 3, 2, 3]
+
+Before: [1, 0, 0, 3]
+10 1 0 1
+After: [1, 1, 0, 3]
+
+Before: [1, 3, 1, 3]
+15 1 3 3
+After: [1, 3, 1, 9]
+
+Before: [1, 1, 2, 3]
+15 1 2 3
+After: [1, 1, 2, 2]
+
+Before: [1, 1, 3, 0]
+0 1 0 0
+After: [1, 1, 3, 0]
+
+Before: [1, 2, 3, 2]
+13 3 2 2
+After: [1, 2, 4, 2]
+
+Before: [0, 1, 1, 2]
+9 0 0 0
+After: [0, 1, 1, 2]
+
+Before: [2, 2, 0, 0]
+12 1 1 3
+After: [2, 2, 0, 1]
+
+Before: [1, 0, 2, 3]
+6 0 3 2
+After: [1, 0, 0, 3]
+
+Before: [1, 1, 0, 3]
+6 0 3 3
+After: [1, 1, 0, 0]
+
+Before: [0, 2, 0, 0]
+9 0 0 2
+After: [0, 2, 0, 0]
+
+Before: [0, 2, 2, 3]
+5 0 3 0
+After: [3, 2, 2, 3]
+
+Before: [1, 0, 2, 1]
+5 1 2 3
+After: [1, 0, 2, 2]
+
+Before: [1, 1, 3, 3]
+0 1 0 2
+After: [1, 1, 1, 3]
+
+Before: [2, 0, 3, 1]
+12 2 3 0
+After: [0, 0, 3, 1]
+
+Before: [0, 3, 2, 0]
+5 0 2 0
+After: [2, 3, 2, 0]
+
+Before: [2, 1, 2, 2]
+1 2 2 0
+After: [4, 1, 2, 2]
+
+Before: [1, 2, 1, 3]
+6 0 3 2
+After: [1, 2, 0, 3]
+
+Before: [0, 2, 3, 1]
+14 1 3 2
+After: [0, 2, 6, 1]
+
+Before: [1, 3, 3, 3]
+5 0 3 2
+After: [1, 3, 3, 3]
+
+Before: [3, 1, 0, 3]
+14 3 2 3
+After: [3, 1, 0, 6]
+
+Before: [2, 0, 3, 3]
+12 3 2 0
+After: [1, 0, 3, 3]
+
+Before: [1, 2, 1, 2]
+11 1 3 3
+After: [1, 2, 1, 1]
+
+Before: [2, 1, 2, 1]
+1 0 2 1
+After: [2, 4, 2, 1]
+
+Before: [0, 1, 1, 0]
+3 1 0 1
+After: [0, 1, 1, 0]
+
+Before: [0, 2, 3, 0]
+9 0 0 2
+After: [0, 2, 0, 0]
+
+Before: [3, 1, 2, 3]
+15 2 3 3
+After: [3, 1, 2, 6]
+
+Before: [0, 1, 0, 0]
+3 1 0 0
+After: [1, 1, 0, 0]
+
+Before: [0, 0, 1, 2]
+5 2 3 2
+After: [0, 0, 3, 2]
+
+Before: [0, 2, 2, 2]
+8 0 3 1
+After: [0, 2, 2, 2]
+
+Before: [1, 2, 0, 3]
+15 0 1 0
+After: [2, 2, 0, 3]
+
+Before: [2, 1, 0, 3]
+6 0 3 2
+After: [2, 1, 0, 3]
+
+Before: [0, 2, 3, 2]
+11 1 3 1
+After: [0, 1, 3, 2]
+
+Before: [1, 1, 2, 1]
+0 1 0 1
+After: [1, 1, 2, 1]
+
+Before: [2, 2, 2, 0]
+12 1 1 1
+After: [2, 1, 2, 0]
+
+Before: [3, 1, 2, 2]
+1 2 2 2
+After: [3, 1, 4, 2]
+
+Before: [0, 1, 3, 0]
+3 1 0 3
+After: [0, 1, 3, 1]
+
+Before: [3, 0, 2, 0]
+1 2 2 2
+After: [3, 0, 4, 0]
+
+Before: [2, 3, 3, 2]
+15 1 3 2
+After: [2, 3, 6, 2]
+
+Before: [3, 0, 2, 0]
+1 2 2 0
+After: [4, 0, 2, 0]
+
+Before: [3, 2, 3, 2]
+12 1 1 0
+After: [1, 2, 3, 2]
+
+Before: [2, 3, 3, 2]
+13 0 2 0
+After: [4, 3, 3, 2]
+
+Before: [1, 0, 2, 2]
+10 1 0 0
+After: [1, 0, 2, 2]
+
+Before: [2, 0, 0, 0]
+8 1 0 1
+After: [2, 2, 0, 0]
+
+Before: [0, 2, 2, 1]
+12 2 1 0
+After: [1, 2, 2, 1]
+
+Before: [0, 3, 2, 1]
+9 0 0 3
+After: [0, 3, 2, 0]
+
+Before: [2, 2, 2, 1]
+1 0 2 1
+After: [2, 4, 2, 1]
+
+Before: [0, 1, 2, 3]
+3 1 0 2
+After: [0, 1, 1, 3]
+
+Before: [1, 1, 0, 2]
+0 1 0 0
+After: [1, 1, 0, 2]
+
+Before: [3, 2, 1, 2]
+11 1 3 0
+After: [1, 2, 1, 2]
+
+Before: [3, 1, 3, 3]
+8 1 0 0
+After: [3, 1, 3, 3]
+
+Before: [3, 1, 2, 3]
+15 0 2 2
+After: [3, 1, 6, 3]
+
+Before: [0, 2, 2, 1]
+2 1 2 3
+After: [0, 2, 2, 1]
+
+Before: [1, 1, 0, 2]
+0 1 0 3
+After: [1, 1, 0, 1]
+
+Before: [2, 2, 3, 2]
+11 1 3 0
+After: [1, 2, 3, 2]
+
+Before: [1, 1, 3, 1]
+0 1 0 2
+After: [1, 1, 1, 1]
+
+Before: [1, 2, 3, 0]
+8 3 1 0
+After: [2, 2, 3, 0]
+
+Before: [1, 0, 2, 3]
+10 1 0 0
+After: [1, 0, 2, 3]
+
+Before: [1, 3, 3, 1]
+12 1 2 1
+After: [1, 1, 3, 1]
+
+Before: [0, 1, 2, 2]
+3 1 0 0
+After: [1, 1, 2, 2]
+
+Before: [2, 2, 2, 3]
+6 0 3 2
+After: [2, 2, 0, 3]
+
+Before: [3, 2, 3, 0]
+13 1 2 0
+After: [4, 2, 3, 0]
+
+Before: [0, 1, 0, 1]
+9 0 0 2
+After: [0, 1, 0, 1]
+
+Before: [2, 3, 3, 2]
+13 3 2 1
+After: [2, 4, 3, 2]
+
+Before: [2, 2, 1, 3]
+4 1 2 2
+After: [2, 2, 1, 3]
+
+Before: [1, 3, 0, 1]
+8 0 1 2
+After: [1, 3, 3, 1]
+
+Before: [0, 1, 2, 0]
+3 1 0 1
+After: [0, 1, 2, 0]
+
+Before: [0, 2, 0, 2]
+11 1 3 1
+After: [0, 1, 0, 2]
+
+Before: [3, 2, 3, 1]
+14 2 3 3
+After: [3, 2, 3, 9]
+
+Before: [0, 1, 1, 3]
+3 1 0 0
+After: [1, 1, 1, 3]
+
+Before: [2, 2, 2, 1]
+2 1 2 0
+After: [1, 2, 2, 1]
+
+Before: [0, 2, 1, 2]
+4 3 3 3
+After: [0, 2, 1, 0]
+
+Before: [0, 1, 1, 2]
+7 3 1 3
+After: [0, 1, 1, 3]
+
+Before: [1, 0, 1, 0]
+10 1 0 0
+After: [1, 0, 1, 0]
+
+Before: [3, 2, 2, 1]
+12 1 1 3
+After: [3, 2, 2, 1]
+
+Before: [0, 1, 0, 0]
+9 0 0 2
+After: [0, 1, 0, 0]
+
+Before: [2, 2, 2, 1]
+2 1 2 1
+After: [2, 1, 2, 1]
+
+Before: [1, 3, 0, 3]
+2 1 3 0
+After: [1, 3, 0, 3]
+
+Before: [1, 1, 2, 2]
+0 1 0 2
+After: [1, 1, 1, 2]
+
+Before: [0, 2, 0, 2]
+11 1 3 3
+After: [0, 2, 0, 1]
+
+Before: [0, 2, 3, 2]
+11 1 3 0
+After: [1, 2, 3, 2]
+
+Before: [2, 3, 2, 1]
+7 3 2 0
+After: [3, 3, 2, 1]
+
+Before: [2, 1, 1, 3]
+14 3 2 0
+After: [6, 1, 1, 3]
+
+Before: [1, 1, 3, 2]
+0 1 0 0
+After: [1, 1, 3, 2]
+
+Before: [2, 2, 2, 3]
+1 0 2 2
+After: [2, 2, 4, 3]
+
+Before: [1, 1, 0, 3]
+0 1 0 3
+After: [1, 1, 0, 1]
+
+Before: [1, 0, 3, 0]
+10 1 0 2
+After: [1, 0, 1, 0]
+
+Before: [0, 2, 0, 2]
+11 1 3 2
+After: [0, 2, 1, 2]
+
+Before: [1, 3, 2, 1]
+7 3 2 0
+After: [3, 3, 2, 1]
+
+Before: [2, 2, 1, 0]
+14 0 3 2
+After: [2, 2, 6, 0]
+
+Before: [0, 1, 0, 0]
+5 0 1 3
+After: [0, 1, 0, 1]
+
+Before: [0, 2, 2, 3]
+15 2 3 0
+After: [6, 2, 2, 3]
+
+Before: [3, 3, 0, 3]
+15 0 3 0
+After: [9, 3, 0, 3]
+
+Before: [0, 3, 3, 0]
+14 2 3 0
+After: [9, 3, 3, 0]
+
+Before: [0, 1, 1, 2]
+7 3 1 2
+After: [0, 1, 3, 2]
+
+Before: [1, 3, 1, 3]
+2 1 3 0
+After: [1, 3, 1, 3]
+
+Before: [1, 0, 3, 3]
+10 1 0 2
+After: [1, 0, 1, 3]
+
+Before: [0, 1, 3, 2]
+3 1 0 3
+After: [0, 1, 3, 1]
+
+Before: [0, 1, 3, 1]
+3 1 0 2
+After: [0, 1, 1, 1]
+
+Before: [1, 1, 2, 0]
+0 1 0 1
+After: [1, 1, 2, 0]
+
+Before: [0, 3, 0, 2]
+15 1 3 3
+After: [0, 3, 0, 6]
+
+Before: [0, 2, 1, 1]
+4 1 2 2
+After: [0, 2, 1, 1]
+
+Before: [0, 2, 2, 1]
+4 3 3 0
+After: [0, 2, 2, 1]
+
+Before: [1, 2, 1, 2]
+8 1 0 1
+After: [1, 3, 1, 2]
+
+Before: [1, 2, 2, 0]
+15 0 2 1
+After: [1, 2, 2, 0]
+
+Before: [2, 2, 3, 1]
+4 3 3 1
+After: [2, 0, 3, 1]
+
+Before: [1, 2, 1, 0]
+8 3 1 3
+After: [1, 2, 1, 2]
+
+Before: [3, 0, 2, 2]
+8 1 0 2
+After: [3, 0, 3, 2]
+
+Before: [0, 0, 2, 0]
+9 0 0 2
+After: [0, 0, 0, 0]
+
+Before: [1, 2, 2, 3]
+4 1 0 2
+After: [1, 2, 1, 3]
+
+Before: [2, 1, 2, 2]
+1 3 2 1
+After: [2, 4, 2, 2]
+
+Before: [2, 3, 0, 3]
+2 1 3 1
+After: [2, 1, 0, 3]
+
+Before: [1, 2, 0, 2]
+11 1 3 1
+After: [1, 1, 0, 2]
+
+Before: [3, 1, 0, 2]
+7 3 1 1
+After: [3, 3, 0, 2]
+
+Before: [0, 2, 2, 3]
+1 1 2 3
+After: [0, 2, 2, 4]
+
+Before: [1, 2, 3, 3]
+6 0 3 0
+After: [0, 2, 3, 3]
+
+Before: [2, 0, 2, 1]
+7 3 2 0
+After: [3, 0, 2, 1]
+
+Before: [0, 2, 2, 2]
+8 0 3 2
+After: [0, 2, 2, 2]
+
+Before: [1, 0, 3, 1]
+10 1 0 2
+After: [1, 0, 1, 1]
+
+Before: [0, 1, 2, 1]
+4 3 3 2
+After: [0, 1, 0, 1]
+
+Before: [0, 2, 2, 0]
+2 1 2 3
+After: [0, 2, 2, 1]
+
+Before: [0, 0, 2, 2]
+5 1 2 0
+After: [2, 0, 2, 2]
+
+Before: [1, 0, 0, 3]
+10 1 0 3
+After: [1, 0, 0, 1]
+
+Before: [1, 0, 3, 1]
+10 1 0 3
+After: [1, 0, 3, 1]
+
+Before: [0, 0, 3, 2]
+9 0 0 3
+After: [0, 0, 3, 0]
+
+Before: [1, 0, 1, 3]
+10 1 0 2
+After: [1, 0, 1, 3]
+
+Before: [3, 2, 3, 2]
+4 3 3 2
+After: [3, 2, 0, 2]
+
+Before: [0, 1, 1, 3]
+3 1 0 2
+After: [0, 1, 1, 3]
+
+Before: [1, 2, 3, 3]
+4 1 0 1
+After: [1, 1, 3, 3]
+
+Before: [0, 0, 0, 2]
+9 0 0 1
+After: [0, 0, 0, 2]
+
+Before: [1, 0, 2, 1]
+10 1 0 1
+After: [1, 1, 2, 1]
+
+Before: [1, 2, 3, 2]
+5 0 3 2
+After: [1, 2, 3, 2]
+
+Before: [2, 2, 3, 2]
+12 1 1 0
+After: [1, 2, 3, 2]
+
+Before: [2, 2, 2, 2]
+12 2 1 2
+After: [2, 2, 1, 2]
+
+Before: [2, 2, 2, 3]
+1 2 2 1
+After: [2, 4, 2, 3]
+
+Before: [3, 1, 3, 2]
+7 3 1 2
+After: [3, 1, 3, 2]
+
+Before: [2, 2, 0, 0]
+13 0 2 1
+After: [2, 4, 0, 0]
+
+Before: [0, 2, 1, 3]
+15 1 3 1
+After: [0, 6, 1, 3]
+
+Before: [0, 1, 1, 2]
+3 1 0 0
+After: [1, 1, 1, 2]
+
+Before: [2, 1, 0, 0]
+8 3 0 1
+After: [2, 2, 0, 0]
+
+Before: [0, 1, 3, 3]
+15 2 3 0
+After: [9, 1, 3, 3]
+
+Before: [0, 1, 1, 2]
+3 1 0 1
+After: [0, 1, 1, 2]
+
+Before: [0, 1, 1, 1]
+8 0 2 0
+After: [1, 1, 1, 1]
+
+Before: [1, 2, 2, 3]
+12 1 1 3
+After: [1, 2, 2, 1]
+
+Before: [3, 3, 1, 2]
+12 1 0 1
+After: [3, 1, 1, 2]
+
+Before: [3, 0, 0, 3]
+14 3 2 2
+After: [3, 0, 6, 3]
+
+Before: [3, 3, 3, 1]
+12 2 3 3
+After: [3, 3, 3, 0]
+
+Before: [2, 3, 2, 0]
+14 2 3 1
+After: [2, 6, 2, 0]
+
+Before: [2, 3, 0, 2]
+15 1 3 2
+After: [2, 3, 6, 2]
+
+Before: [3, 2, 3, 2]
+11 1 3 1
+After: [3, 1, 3, 2]
+
+Before: [1, 2, 2, 1]
+15 3 2 1
+After: [1, 2, 2, 1]
+
+Before: [1, 2, 2, 1]
+5 0 2 1
+After: [1, 3, 2, 1]
+
+Before: [1, 2, 3, 3]
+6 0 3 2
+After: [1, 2, 0, 3]
+
+Before: [1, 2, 2, 0]
+5 0 2 2
+After: [1, 2, 3, 0]
+
+Before: [3, 0, 0, 2]
+4 3 3 1
+After: [3, 0, 0, 2]
+
+Before: [1, 2, 1, 3]
+8 1 0 2
+After: [1, 2, 3, 3]
+
+Before: [2, 0, 2, 1]
+1 2 2 1
+After: [2, 4, 2, 1]
+
+Before: [2, 1, 2, 3]
+1 2 2 3
+After: [2, 1, 2, 4]
+
+Before: [1, 1, 0, 1]
+14 3 2 1
+After: [1, 2, 0, 1]
+
+Before: [1, 0, 2, 1]
+1 2 2 1
+After: [1, 4, 2, 1]
+
+Before: [2, 2, 0, 3]
+15 0 3 3
+After: [2, 2, 0, 6]
+
+Before: [3, 0, 2, 2]
+1 3 2 0
+After: [4, 0, 2, 2]
+
+Before: [2, 2, 3, 2]
+13 3 2 1
+After: [2, 4, 3, 2]
+
+Before: [1, 1, 2, 1]
+0 1 0 2
+After: [1, 1, 1, 1]
+
+Before: [0, 2, 3, 2]
+11 1 3 2
+After: [0, 2, 1, 2]
+
+Before: [2, 1, 1, 2]
+7 3 1 0
+After: [3, 1, 1, 2]
+
+Before: [3, 0, 2, 0]
+14 2 3 3
+After: [3, 0, 2, 6]
+
+Before: [2, 2, 0, 2]
+14 0 3 3
+After: [2, 2, 0, 6]
+
+Before: [0, 0, 3, 2]
+9 0 0 0
+After: [0, 0, 3, 2]
+
+Before: [1, 1, 3, 1]
+0 1 0 1
+After: [1, 1, 3, 1]
+
+Before: [1, 1, 1, 1]
+0 1 0 1
+After: [1, 1, 1, 1]
+
+Before: [1, 0, 2, 0]
+10 1 0 1
+After: [1, 1, 2, 0]
+
+Before: [1, 1, 0, 3]
+0 1 0 0
+After: [1, 1, 0, 3]
+
+Before: [0, 1, 0, 2]
+13 3 2 1
+After: [0, 4, 0, 2]
+
+Before: [2, 1, 0, 0]
+14 1 2 3
+After: [2, 1, 0, 2]
+
+Before: [3, 3, 2, 2]
+4 3 3 1
+After: [3, 0, 2, 2]
+
+Before: [0, 2, 0, 0]
+12 1 1 3
+After: [0, 2, 0, 1]
+
+Before: [1, 0, 2, 1]
+1 2 2 2
+After: [1, 0, 4, 1]
+
+Before: [0, 1, 2, 1]
+9 0 0 2
+After: [0, 1, 0, 1]
+
+Before: [1, 1, 3, 2]
+0 1 0 2
+After: [1, 1, 1, 2]
+
+Before: [3, 0, 3, 2]
+15 0 3 0
+After: [6, 0, 3, 2]
+
+Before: [2, 1, 2, 0]
+5 3 2 0
+After: [2, 1, 2, 0]
+
+Before: [3, 2, 2, 2]
+1 2 2 2
+After: [3, 2, 4, 2]
+
+Before: [1, 1, 0, 0]
+0 1 0 3
+After: [1, 1, 0, 1]
+
+Before: [1, 2, 0, 3]
+12 1 1 2
+After: [1, 2, 1, 3]
+
+Before: [2, 2, 2, 0]
+1 0 2 1
+After: [2, 4, 2, 0]
+
+Before: [0, 2, 1, 3]
+8 0 2 2
+After: [0, 2, 1, 3]
+
+Before: [3, 2, 0, 0]
+14 1 3 1
+After: [3, 6, 0, 0]
+
+Before: [0, 2, 2, 3]
+15 3 3 3
+After: [0, 2, 2, 9]
+
+Before: [1, 0, 3, 2]
+10 1 0 0
+After: [1, 0, 3, 2]
+
+Before: [1, 2, 2, 0]
+2 1 2 2
+After: [1, 2, 1, 0]
+
+Before: [0, 0, 3, 3]
+9 0 0 1
+After: [0, 0, 3, 3]
+
+Before: [0, 1, 2, 3]
+3 1 0 1
+After: [0, 1, 2, 3]
+
+Before: [1, 0, 1, 1]
+10 1 0 3
+After: [1, 0, 1, 1]
+
+Before: [2, 0, 2, 3]
+6 0 3 0
+After: [0, 0, 2, 3]
+
+Before: [0, 2, 3, 0]
+13 1 2 1
+After: [0, 4, 3, 0]
+
+Before: [0, 1, 3, 2]
+3 1 0 1
+After: [0, 1, 3, 2]
+
+Before: [1, 1, 0, 3]
+6 0 3 0
+After: [0, 1, 0, 3]
+
+Before: [3, 2, 0, 1]
+13 1 2 0
+After: [4, 2, 0, 1]
+
+Before: [2, 1, 3, 1]
+5 0 1 2
+After: [2, 1, 3, 1]
+
+Before: [1, 1, 3, 2]
+0 1 0 1
+After: [1, 1, 3, 2]
+
+Before: [2, 0, 0, 3]
+6 0 3 0
+After: [0, 0, 0, 3]
+
+Before: [1, 2, 1, 0]
+13 1 2 1
+After: [1, 4, 1, 0]
+
+Before: [2, 2, 1, 2]
+11 1 3 3
+After: [2, 2, 1, 1]
+
+Before: [0, 1, 2, 3]
+5 1 3 3
+After: [0, 1, 2, 3]
+
+Before: [2, 0, 3, 3]
+6 0 3 2
+After: [2, 0, 0, 3]
+
+Before: [2, 2, 1, 0]
+12 1 0 0
+After: [1, 2, 1, 0]
+
+Before: [2, 2, 2, 2]
+11 1 3 0
+After: [1, 2, 2, 2]
+
+Before: [1, 1, 0, 1]
+0 1 0 0
+After: [1, 1, 0, 1]
+
+Before: [0, 2, 2, 2]
+11 1 3 0
+After: [1, 2, 2, 2]
+
+Before: [2, 2, 0, 2]
+11 1 3 3
+After: [2, 2, 0, 1]
+
+Before: [2, 2, 2, 0]
+2 1 2 2
+After: [2, 2, 1, 0]
+
+Before: [3, 1, 1, 2]
+7 3 1 3
+After: [3, 1, 1, 3]
+
+Before: [0, 2, 1, 3]
+9 0 0 0
+After: [0, 2, 1, 3]
+
+Before: [0, 2, 2, 2]
+11 1 3 3
+After: [0, 2, 2, 1]
+
+Before: [3, 3, 3, 1]
+7 3 2 2
+After: [3, 3, 3, 1]
+
+Before: [2, 0, 3, 3]
+6 0 3 1
+After: [2, 0, 3, 3]
+
+Before: [0, 0, 2, 3]
+5 1 3 1
+After: [0, 3, 2, 3]
+
+Before: [3, 3, 2, 0]
+5 3 2 2
+After: [3, 3, 2, 0]
+
+Before: [3, 1, 2, 0]
+14 2 3 3
+After: [3, 1, 2, 6]
+
+Before: [1, 1, 2, 0]
+1 2 2 2
+After: [1, 1, 4, 0]
+
+Before: [1, 3, 1, 1]
+4 2 3 1
+After: [1, 0, 1, 1]
+
+Before: [1, 1, 2, 3]
+0 1 0 1
+After: [1, 1, 2, 3]
+
+Before: [3, 3, 3, 2]
+15 2 3 0
+After: [6, 3, 3, 2]
+
+Before: [1, 1, 0, 1]
+0 1 0 3
+After: [1, 1, 0, 1]
+
+Before: [2, 1, 1, 1]
+13 0 2 1
+After: [2, 4, 1, 1]
+
+Before: [3, 3, 2, 1]
+1 2 2 1
+After: [3, 4, 2, 1]
+
+Before: [0, 2, 2, 3]
+2 1 2 3
+After: [0, 2, 2, 1]
+
+Before: [2, 0, 1, 3]
+6 0 3 2
+After: [2, 0, 0, 3]
+
+Before: [1, 3, 3, 3]
+6 0 3 2
+After: [1, 3, 0, 3]
+
+Before: [0, 1, 0, 2]
+7 3 1 3
+After: [0, 1, 0, 3]
+
+Before: [0, 2, 2, 1]
+12 2 1 2
+After: [0, 2, 1, 1]
+
+Before: [1, 3, 2, 3]
+6 0 3 1
+After: [1, 0, 2, 3]
+
+Before: [1, 3, 1, 3]
+15 1 3 2
+After: [1, 3, 9, 3]
+
+Before: [0, 3, 2, 2]
+1 2 2 1
+After: [0, 4, 2, 2]
+
+Before: [3, 3, 2, 3]
+2 1 3 2
+After: [3, 3, 1, 3]
+
+Before: [0, 0, 2, 3]
+5 0 2 0
+After: [2, 0, 2, 3]
+
+Before: [3, 0, 2, 3]
+15 2 3 0
+After: [6, 0, 2, 3]
+
+Before: [2, 3, 0, 3]
+14 3 2 1
+After: [2, 6, 0, 3]
+
+Before: [2, 0, 2, 1]
+1 0 2 2
+After: [2, 0, 4, 1]
+
+Before: [0, 1, 3, 1]
+9 0 0 2
+After: [0, 1, 0, 1]
+
+Before: [1, 2, 2, 2]
+2 1 2 3
+After: [1, 2, 2, 1]
+
+Before: [0, 0, 3, 1]
+9 0 0 0
+After: [0, 0, 3, 1]
+
+Before: [0, 1, 3, 3]
+3 1 0 2
+After: [0, 1, 1, 3]
+
+Before: [2, 1, 2, 3]
+12 2 0 0
+After: [1, 1, 2, 3]
+
+Before: [1, 2, 3, 2]
+11 1 3 2
+After: [1, 2, 1, 2]
+
+Before: [3, 2, 0, 2]
+11 1 3 3
+After: [3, 2, 0, 1]
+
+Before: [2, 1, 2, 2]
+12 2 0 1
+After: [2, 1, 2, 2]
+
+Before: [0, 1, 0, 2]
+13 3 2 2
+After: [0, 1, 4, 2]
+
+Before: [0, 1, 1, 0]
+9 0 0 3
+After: [0, 1, 1, 0]
+
+Before: [2, 1, 1, 3]
+5 1 3 1
+After: [2, 3, 1, 3]
+
+Before: [0, 2, 2, 2]
+1 2 2 1
+After: [0, 4, 2, 2]
+
+Before: [0, 1, 1, 2]
+5 0 1 2
+After: [0, 1, 1, 2]
+
+Before: [1, 1, 1, 2]
+0 1 0 1
+After: [1, 1, 1, 2]
+
+Before: [3, 3, 1, 2]
+12 1 0 0
+After: [1, 3, 1, 2]
+
+Before: [3, 2, 1, 0]
+14 0 3 0
+After: [9, 2, 1, 0]
+
+Before: [2, 2, 1, 1]
+15 3 1 0
+After: [2, 2, 1, 1]
+
+Before: [1, 3, 2, 1]
+7 3 2 2
+After: [1, 3, 3, 1]
+
+Before: [0, 2, 0, 0]
+9 0 0 3
+After: [0, 2, 0, 0]
+
+Before: [1, 2, 1, 3]
+4 1 0 1
+After: [1, 1, 1, 3]
+
+Before: [1, 1, 3, 2]
+15 2 3 1
+After: [1, 6, 3, 2]
+
+Before: [2, 3, 3, 1]
+7 3 2 0
+After: [3, 3, 3, 1]
+
+Before: [0, 1, 2, 2]
+5 0 1 0
+After: [1, 1, 2, 2]
+
+Before: [3, 1, 0, 2]
+7 3 1 0
+After: [3, 1, 0, 2]
+
+Before: [1, 3, 3, 3]
+15 2 3 3
+After: [1, 3, 3, 9]
+
+Before: [3, 2, 2, 3]
+15 3 3 1
+After: [3, 9, 2, 3]
+
+Before: [0, 0, 0, 2]
+9 0 0 2
+After: [0, 0, 0, 2]
+
+Before: [2, 1, 3, 0]
+5 1 2 3
+After: [2, 1, 3, 3]
+
+Before: [3, 0, 2, 1]
+1 2 2 0
+After: [4, 0, 2, 1]
+
+Before: [1, 0, 2, 3]
+10 1 0 3
+After: [1, 0, 2, 1]
+
+Before: [0, 3, 1, 2]
+14 3 3 2
+After: [0, 3, 6, 2]
+
+Before: [0, 3, 3, 3]
+2 1 3 2
+After: [0, 3, 1, 3]
+
+Before: [0, 2, 2, 0]
+5 3 2 3
+After: [0, 2, 2, 2]
+
+Before: [1, 1, 2, 1]
+5 2 1 0
+After: [3, 1, 2, 1]
+
+Before: [1, 2, 0, 2]
+11 1 3 3
+After: [1, 2, 0, 1]
+
+Before: [3, 0, 2, 1]
+7 3 2 3
+After: [3, 0, 2, 3]
+
+Before: [0, 2, 1, 3]
+9 0 0 2
+After: [0, 2, 0, 3]
+
+Before: [2, 2, 2, 2]
+11 1 3 3
+After: [2, 2, 2, 1]
+
+Before: [1, 3, 2, 3]
+1 2 2 0
+After: [4, 3, 2, 3]
+
+Before: [1, 3, 1, 3]
+2 1 3 2
+After: [1, 3, 1, 3]
+
+Before: [0, 1, 2, 3]
+5 0 3 1
+After: [0, 3, 2, 3]
+
+Before: [2, 2, 1, 2]
+11 1 3 1
+After: [2, 1, 1, 2]
+
+Before: [1, 0, 3, 1]
+7 3 2 0
+After: [3, 0, 3, 1]
+
+Before: [1, 2, 1, 3]
+6 0 3 0
+After: [0, 2, 1, 3]
+
+Before: [3, 2, 2, 2]
+2 1 2 0
+After: [1, 2, 2, 2]
+
+Before: [3, 0, 0, 3]
+5 1 3 0
+After: [3, 0, 0, 3]
+
+Before: [2, 3, 3, 3]
+6 0 3 2
+After: [2, 3, 0, 3]
+
+Before: [1, 2, 3, 2]
+11 1 3 0
+After: [1, 2, 3, 2]
+
+Before: [2, 3, 3, 3]
+6 0 3 1
+After: [2, 0, 3, 3]
+
+Before: [2, 1, 0, 3]
+6 0 3 0
+After: [0, 1, 0, 3]
+
+Before: [3, 2, 3, 1]
+4 3 3 1
+After: [3, 0, 3, 1]
+
+Before: [1, 2, 2, 3]
+1 2 2 1
+After: [1, 4, 2, 3]
+
+Before: [0, 2, 0, 2]
+12 1 1 2
+After: [0, 2, 1, 2]
+
+Before: [3, 3, 1, 3]
+2 1 3 3
+After: [3, 3, 1, 1]
+
+Before: [1, 1, 2, 2]
+5 1 2 2
+After: [1, 1, 3, 2]
+
+Before: [0, 0, 2, 2]
+5 0 2 3
+After: [0, 0, 2, 2]
+
+Before: [0, 1, 3, 1]
+9 0 0 0
+After: [0, 1, 3, 1]
+
+Before: [0, 1, 0, 0]
+3 1 0 1
+After: [0, 1, 0, 0]
+
+Before: [1, 0, 0, 1]
+10 1 0 1
+After: [1, 1, 0, 1]
+
+Before: [1, 1, 1, 3]
+0 1 0 0
+After: [1, 1, 1, 3]
+
+Before: [0, 2, 2, 2]
+4 3 3 1
+After: [0, 0, 2, 2]
+
+Before: [1, 2, 1, 0]
+8 2 1 0
+After: [3, 2, 1, 0]
+
+Before: [0, 1, 2, 1]
+3 1 0 3
+After: [0, 1, 2, 1]
+
+Before: [1, 0, 2, 1]
+10 1 0 3
+After: [1, 0, 2, 1]
+
+Before: [1, 1, 3, 1]
+5 0 2 1
+After: [1, 3, 3, 1]
+
+Before: [2, 3, 2, 1]
+4 3 3 2
+After: [2, 3, 0, 1]
+
+Before: [3, 3, 0, 3]
+12 1 0 1
+After: [3, 1, 0, 3]
+
+Before: [3, 3, 1, 3]
+8 2 0 3
+After: [3, 3, 1, 3]
+
+Before: [1, 3, 3, 1]
+7 3 2 2
+After: [1, 3, 3, 1]
+
+Before: [3, 0, 3, 1]
+4 3 3 0
+After: [0, 0, 3, 1]
+
+Before: [1, 3, 2, 3]
+15 3 2 3
+After: [1, 3, 2, 6]
+
+Before: [3, 2, 2, 0]
+2 1 2 2
+After: [3, 2, 1, 0]
+
+Before: [3, 1, 2, 1]
+4 3 3 1
+After: [3, 0, 2, 1]
+
+Before: [2, 3, 1, 3]
+2 1 3 3
+After: [2, 3, 1, 1]
+
+Before: [2, 2, 0, 3]
+6 0 3 1
+After: [2, 0, 0, 3]
+
+Before: [2, 3, 2, 2]
+1 0 2 0
+After: [4, 3, 2, 2]
+
+Before: [0, 1, 3, 3]
+5 0 3 3
+After: [0, 1, 3, 3]
+
+Before: [2, 0, 3, 3]
+12 3 2 2
+After: [2, 0, 1, 3]
+
+Before: [1, 1, 3, 2]
+13 3 2 2
+After: [1, 1, 4, 2]
+
+Before: [1, 3, 3, 3]
+2 1 3 2
+After: [1, 3, 1, 3]
+
+Before: [3, 2, 2, 2]
+14 0 3 1
+After: [3, 9, 2, 2]
+
+Before: [1, 0, 3, 2]
+8 1 3 2
+After: [1, 0, 2, 2]
+
+Before: [0, 3, 3, 3]
+9 0 0 2
+After: [0, 3, 0, 3]
+
+Before: [3, 2, 0, 1]
+4 3 3 0
+After: [0, 2, 0, 1]
+
+Before: [3, 0, 3, 2]
+4 3 3 0
+After: [0, 0, 3, 2]
+
+Before: [3, 0, 3, 2]
+8 1 2 1
+After: [3, 3, 3, 2]
+
+Before: [0, 2, 1, 1]
+8 0 3 0
+After: [1, 2, 1, 1]
+
+Before: [2, 2, 2, 0]
+1 1 2 1
+After: [2, 4, 2, 0]
+
+Before: [2, 2, 1, 3]
+13 0 2 1
+After: [2, 4, 1, 3]
+
+Before: [0, 1, 3, 1]
+3 1 0 0
+After: [1, 1, 3, 1]
+
+Before: [0, 1, 2, 2]
+3 1 0 3
+After: [0, 1, 2, 1]
+
+Before: [1, 2, 2, 3]
+6 0 3 1
+After: [1, 0, 2, 3]
+
+Before: [3, 2, 0, 3]
+12 1 1 2
+After: [3, 2, 1, 3]
+
+Before: [2, 3, 1, 1]
+13 0 2 0
+After: [4, 3, 1, 1]
+
+Before: [2, 1, 1, 0]
+5 0 1 1
+After: [2, 3, 1, 0]
+
+Before: [3, 3, 2, 3]
+15 3 2 3
+After: [3, 3, 2, 6]
+
+Before: [0, 1, 0, 3]
+3 1 0 3
+After: [0, 1, 0, 1]
+
+Before: [1, 0, 3, 2]
+14 2 3 1
+After: [1, 9, 3, 2]
+
+Before: [0, 2, 3, 1]
+7 3 2 0
+After: [3, 2, 3, 1]
+
+Before: [2, 3, 0, 2]
+14 1 2 2
+After: [2, 3, 6, 2]
+
+Before: [2, 2, 3, 1]
+7 3 2 0
+After: [3, 2, 3, 1]
+
+Before: [0, 3, 3, 3]
+12 3 2 2
+After: [0, 3, 1, 3]
+
+Before: [0, 2, 2, 2]
+9 0 0 2
+After: [0, 2, 0, 2]
+
+Before: [0, 3, 1, 0]
+8 0 1 2
+After: [0, 3, 3, 0]
+
+Before: [0, 3, 3, 0]
+9 0 0 0
+After: [0, 3, 3, 0]
+
+Before: [0, 3, 0, 3]
+15 3 3 1
+After: [0, 9, 0, 3]
+
+Before: [2, 1, 1, 3]
+6 0 3 2
+After: [2, 1, 0, 3]
+
+Before: [2, 0, 0, 3]
+15 3 3 1
+After: [2, 9, 0, 3]
+
+Before: [0, 1, 0, 3]
+5 0 3 2
+After: [0, 1, 3, 3]
+
+Before: [1, 2, 2, 1]
+4 1 0 0
+After: [1, 2, 2, 1]
+
+Before: [0, 2, 3, 2]
+15 2 3 0
+After: [6, 2, 3, 2]
+
+Before: [0, 2, 2, 3]
+9 0 0 1
+After: [0, 0, 2, 3]
+
+Before: [3, 3, 3, 3]
+2 1 3 1
+After: [3, 1, 3, 3]
+
+Before: [1, 0, 2, 3]
+10 1 0 1
+After: [1, 1, 2, 3]
+
+Before: [2, 1, 1, 3]
+6 0 3 1
+After: [2, 0, 1, 3]
+
+Before: [0, 2, 2, 3]
+1 2 2 1
+After: [0, 4, 2, 3]
+
+Before: [1, 1, 1, 1]
+0 1 0 2
+After: [1, 1, 1, 1]
+
+Before: [0, 0, 2, 0]
+1 2 2 1
+After: [0, 4, 2, 0]
+
+Before: [1, 3, 0, 2]
+13 3 2 3
+After: [1, 3, 0, 4]
+
+Before: [1, 1, 0, 0]
+0 1 0 2
+After: [1, 1, 1, 0]
+
+Before: [1, 1, 1, 3]
+0 1 0 2
+After: [1, 1, 1, 3]
+
+Before: [1, 0, 3, 1]
+10 1 0 0
+After: [1, 0, 3, 1]
+
+Before: [2, 2, 1, 2]
+11 1 3 0
+After: [1, 2, 1, 2]
+
+Before: [0, 1, 0, 1]
+9 0 0 3
+After: [0, 1, 0, 0]
+
+Before: [0, 2, 1, 3]
+5 2 3 2
+After: [0, 2, 3, 3]
+
+Before: [1, 2, 2, 0]
+1 1 2 3
+After: [1, 2, 2, 4]
+
+Before: [1, 1, 0, 1]
+0 1 0 2
+After: [1, 1, 1, 1]
+
+Before: [0, 1, 2, 3]
+3 1 0 0
+After: [1, 1, 2, 3]
+
+Before: [0, 0, 2, 1]
+14 2 3 1
+After: [0, 6, 2, 1]
+
+Before: [2, 1, 2, 2]
+7 3 1 3
+After: [2, 1, 2, 3]
+
+Before: [1, 3, 3, 2]
+12 1 2 0
+After: [1, 3, 3, 2]
+
+Before: [3, 2, 2, 3]
+1 2 2 2
+After: [3, 2, 4, 3]
+
+Before: [0, 3, 2, 1]
+8 0 3 2
+After: [0, 3, 1, 1]
+
+Before: [1, 1, 0, 3]
+0 1 0 2
+After: [1, 1, 1, 3]
+
+Before: [3, 2, 1, 2]
+11 1 3 2
+After: [3, 2, 1, 2]
+
+Before: [0, 2, 1, 2]
+11 1 3 1
+After: [0, 1, 1, 2]
+
+Before: [1, 2, 1, 3]
+6 0 3 1
+After: [1, 0, 1, 3]
+
+Before: [2, 2, 2, 3]
+2 1 2 2
+After: [2, 2, 1, 3]
+
+Before: [3, 2, 2, 1]
+1 1 2 1
+After: [3, 4, 2, 1]
+
+Before: [1, 0, 0, 1]
+10 1 0 3
+After: [1, 0, 0, 1]
+
+Before: [0, 1, 0, 1]
+3 1 0 3
+After: [0, 1, 0, 1]
+
+Before: [1, 1, 1, 0]
+0 1 0 3
+After: [1, 1, 1, 1]
+
+Before: [1, 1, 1, 2]
+7 3 1 3
+After: [1, 1, 1, 3]
+
+Before: [3, 3, 1, 3]
+2 1 3 0
+After: [1, 3, 1, 3]
+
+Before: [1, 0, 0, 2]
+10 1 0 0
+After: [1, 0, 0, 2]
+
+Before: [0, 2, 1, 3]
+13 1 2 3
+After: [0, 2, 1, 4]
+
+Before: [1, 0, 2, 0]
+10 1 0 3
+After: [1, 0, 2, 1]
+
+Before: [2, 3, 3, 0]
+13 0 2 3
+After: [2, 3, 3, 4]
+
+Before: [3, 1, 2, 3]
+5 1 3 3
+After: [3, 1, 2, 3]
+
+Before: [1, 1, 1, 3]
+0 1 0 1
+After: [1, 1, 1, 3]
+
+Before: [2, 1, 2, 1]
+7 3 2 3
+After: [2, 1, 2, 3]
+
+Before: [1, 0, 0, 0]
+10 1 0 0
+After: [1, 0, 0, 0]
+
+Before: [1, 1, 0, 2]
+0 1 0 1
+After: [1, 1, 0, 2]
+
+Before: [3, 1, 2, 2]
+1 2 2 0
+After: [4, 1, 2, 2]
+
+Before: [1, 1, 1, 2]
+0 1 0 3
+After: [1, 1, 1, 1]
+
+Before: [1, 2, 3, 2]
+11 1 3 1
+After: [1, 1, 3, 2]
+
+Before: [3, 0, 2, 1]
+1 2 2 3
+After: [3, 0, 2, 4]
+
+Before: [0, 1, 0, 2]
+3 1 0 1
+After: [0, 1, 0, 2]
+
+Before: [1, 0, 3, 3]
+10 1 0 3
+After: [1, 0, 3, 1]
+
+Before: [1, 3, 1, 2]
+5 0 3 2
+After: [1, 3, 3, 2]
+
+Before: [1, 0, 0, 2]
+10 1 0 2
+After: [1, 0, 1, 2]
+
+Before: [1, 1, 1, 3]
+6 0 3 3
+After: [1, 1, 1, 0]
+
+Before: [1, 2, 0, 2]
+11 1 3 0
+After: [1, 2, 0, 2]
+
+Before: [1, 2, 1, 2]
+11 1 3 1
+After: [1, 1, 1, 2]
+
+Before: [0, 0, 2, 0]
+9 0 0 3
+After: [0, 0, 2, 0]
+
+Before: [3, 2, 2, 2]
+1 3 2 2
+After: [3, 2, 4, 2]
+
+Before: [0, 1, 3, 2]
+3 1 0 2
+After: [0, 1, 1, 2]
+
+Before: [2, 2, 1, 2]
+11 1 3 2
+After: [2, 2, 1, 2]
+
+Before: [1, 3, 0, 2]
+13 3 2 0
+After: [4, 3, 0, 2]
+
+Before: [2, 1, 2, 3]
+6 0 3 2
+After: [2, 1, 0, 3]
+
+Before: [0, 2, 1, 2]
+11 1 3 2
+After: [0, 2, 1, 2]
+
+Before: [2, 2, 2, 2]
+2 1 2 1
+After: [2, 1, 2, 2]
+
+Before: [3, 0, 2, 2]
+1 2 2 3
+After: [3, 0, 2, 4]
+
+Before: [0, 0, 3, 2]
+13 3 2 0
+After: [4, 0, 3, 2]
+
+Before: [1, 2, 1, 1]
+4 1 0 1
+After: [1, 1, 1, 1]
+
+Before: [1, 0, 2, 1]
+10 1 0 0
+After: [1, 0, 2, 1]
+
+Before: [2, 0, 2, 3]
+6 0 3 3
+After: [2, 0, 2, 0]
+
+Before: [1, 2, 3, 1]
+4 3 3 3
+After: [1, 2, 3, 0]
+
+Before: [1, 1, 1, 2]
+5 2 3 2
+After: [1, 1, 3, 2]
+
+Before: [1, 2, 3, 0]
+14 1 3 1
+After: [1, 6, 3, 0]
+
+Before: [0, 0, 1, 3]
+5 2 3 0
+After: [3, 0, 1, 3]
+
+Before: [0, 0, 0, 1]
+9 0 0 0
+After: [0, 0, 0, 1]
+
+Before: [2, 1, 3, 1]
+5 0 1 3
+After: [2, 1, 3, 3]
+
+Before: [2, 1, 2, 3]
+6 0 3 3
+After: [2, 1, 2, 0]
+
+Before: [2, 3, 1, 3]
+2 1 3 1
+After: [2, 1, 1, 3]
+
+Before: [1, 2, 1, 2]
+4 3 3 3
+After: [1, 2, 1, 0]
+
+Before: [2, 2, 3, 2]
+11 1 3 1
+After: [2, 1, 3, 2]
+
+Before: [2, 3, 3, 3]
+13 0 2 1
+After: [2, 4, 3, 3]
+
+Before: [1, 3, 2, 3]
+6 0 3 2
+After: [1, 3, 0, 3]
+
+Before: [2, 2, 1, 1]
+4 1 2 0
+After: [1, 2, 1, 1]
+
+Before: [1, 0, 3, 3]
+5 1 3 2
+After: [1, 0, 3, 3]
+
+Before: [3, 3, 2, 1]
+7 3 2 1
+After: [3, 3, 2, 1]
+
+Before: [1, 0, 2, 2]
+10 1 0 1
+After: [1, 1, 2, 2]
+
+Before: [2, 1, 1, 3]
+13 0 2 0
+After: [4, 1, 1, 3]
+
+Before: [1, 1, 0, 0]
+0 1 0 0
+After: [1, 1, 0, 0]
+
+Before: [2, 2, 2, 0]
+2 1 2 1
+After: [2, 1, 2, 0]
+
+Before: [0, 1, 1, 0]
+3 1 0 2
+After: [0, 1, 1, 0]
+
+Before: [1, 1, 2, 2]
+1 3 2 3
+After: [1, 1, 2, 4]
+
+Before: [2, 2, 1, 2]
+13 3 2 0
+After: [4, 2, 1, 2]
+
+Before: [0, 1, 0, 0]
+9 0 0 1
+After: [0, 0, 0, 0]
+
+Before: [1, 3, 1, 1]
+14 1 2 2
+After: [1, 3, 6, 1]
+
+Before: [1, 3, 0, 3]
+6 0 3 1
+After: [1, 0, 0, 3]
+
+Before: [1, 2, 2, 2]
+11 1 3 1
+After: [1, 1, 2, 2]
+
+Before: [1, 2, 0, 1]
+12 1 1 2
+After: [1, 2, 1, 1]
+
+Before: [3, 3, 2, 2]
+4 3 3 0
+After: [0, 3, 2, 2]
+
+Before: [0, 0, 0, 2]
+4 3 3 3
+After: [0, 0, 0, 0]
+
+Before: [1, 1, 2, 0]
+0 1 0 2
+After: [1, 1, 1, 0]
+
+Before: [3, 0, 2, 1]
+7 3 2 2
+After: [3, 0, 3, 1]
+
+Before: [3, 1, 2, 1]
+7 3 2 1
+After: [3, 3, 2, 1]
+
+Before: [0, 0, 2, 2]
+1 3 2 2
+After: [0, 0, 4, 2]
+
+Before: [0, 1, 3, 1]
+3 1 0 3
+After: [0, 1, 3, 1]
+
+Before: [1, 3, 2, 2]
+14 3 3 3
+After: [1, 3, 2, 6]
+
+Before: [1, 3, 3, 0]
+8 0 1 0
+After: [3, 3, 3, 0]
+
+Before: [1, 3, 2, 3]
+1 2 2 1
+After: [1, 4, 2, 3]
+
+Before: [0, 1, 3, 2]
+7 3 1 3
+After: [0, 1, 3, 3]
+
+Before: [3, 3, 2, 2]
+15 1 2 2
+After: [3, 3, 6, 2]
+
+Before: [0, 3, 3, 1]
+7 3 2 3
+After: [0, 3, 3, 3]
+
+Before: [2, 3, 3, 3]
+2 1 3 1
+After: [2, 1, 3, 3]
+
+Before: [1, 1, 3, 1]
+14 0 2 2
+After: [1, 1, 2, 1]
+
+Before: [2, 1, 0, 3]
+8 1 0 2
+After: [2, 1, 3, 3]
+
+Before: [1, 2, 2, 0]
+2 1 2 0
+After: [1, 2, 2, 0]
+
+Before: [1, 0, 0, 0]
+10 1 0 2
+After: [1, 0, 1, 0]
+
+Before: [1, 3, 3, 3]
+2 1 3 3
+After: [1, 3, 3, 1]
+
+Before: [0, 2, 2, 1]
+1 1 2 3
+After: [0, 2, 2, 4]
+
+Before: [1, 2, 2, 3]
+6 0 3 3
+After: [1, 2, 2, 0]
+
+Before: [3, 2, 0, 2]
+11 1 3 2
+After: [3, 2, 1, 2]
+
+Before: [2, 2, 2, 2]
+1 2 2 0
+After: [4, 2, 2, 2]
+
+Before: [1, 0, 0, 1]
+4 3 3 1
+After: [1, 0, 0, 1]
+
+Before: [3, 1, 1, 2]
+4 3 3 1
+After: [3, 0, 1, 2]
+
+Before: [1, 1, 2, 3]
+6 0 3 3
+After: [1, 1, 2, 0]
+
+Before: [0, 3, 1, 3]
+9 0 0 2
+After: [0, 3, 0, 3]
+
+Before: [1, 3, 0, 0]
+8 2 1 0
+After: [3, 3, 0, 0]
+
+Before: [3, 2, 0, 2]
+13 1 2 3
+After: [3, 2, 0, 4]
+
+Before: [0, 0, 1, 2]
+13 3 2 2
+After: [0, 0, 4, 2]
+
+Before: [0, 2, 0, 2]
+11 1 3 0
+After: [1, 2, 0, 2]
+
+Before: [0, 3, 1, 3]
+9 0 0 3
+After: [0, 3, 1, 0]
+
+Before: [2, 2, 0, 2]
+11 1 3 0
+After: [1, 2, 0, 2]
+
+Before: [0, 3, 1, 2]
+8 2 1 0
+After: [3, 3, 1, 2]
+
+Before: [0, 3, 2, 2]
+9 0 0 2
+After: [0, 3, 0, 2]
+
+Before: [3, 2, 0, 2]
+13 1 2 2
+After: [3, 2, 4, 2]
+
+Before: [0, 3, 1, 1]
+14 1 3 2
+After: [0, 3, 9, 1]
+
+Before: [2, 0, 2, 0]
+1 0 2 1
+After: [2, 4, 2, 0]
+
+Before: [3, 2, 3, 2]
+11 1 3 0
+After: [1, 2, 3, 2]
+
+Before: [0, 0, 3, 1]
+7 3 2 0
+After: [3, 0, 3, 1]
+
+Before: [2, 2, 0, 2]
+12 1 1 2
+After: [2, 2, 1, 2]
+
+Before: [0, 3, 2, 1]
+8 0 1 0
+After: [3, 3, 2, 1]
+
+Before: [2, 0, 3, 1]
+7 3 2 0
+After: [3, 0, 3, 1]
+
+Before: [0, 0, 1, 2]
+8 0 3 2
+After: [0, 0, 2, 2]
+
+Before: [1, 1, 3, 0]
+0 1 0 3
+After: [1, 1, 3, 1]
+
+Before: [1, 2, 0, 3]
+4 1 0 1
+After: [1, 1, 0, 3]
+
+Before: [1, 1, 2, 1]
+0 1 0 0
+After: [1, 1, 2, 1]
+
+Before: [2, 3, 2, 3]
+6 0 3 3
+After: [2, 3, 2, 0]
+
+Before: [2, 1, 3, 2]
+7 3 1 3
+After: [2, 1, 3, 3]
+
+Before: [1, 0, 0, 2]
+4 3 3 2
+After: [1, 0, 0, 2]
+
+Before: [0, 0, 1, 1]
+4 2 3 2
+After: [0, 0, 0, 1]
+
+Before: [1, 1, 0, 2]
+0 1 0 2
+After: [1, 1, 1, 2]
+
+Before: [0, 1, 0, 2]
+3 1 0 2
+After: [0, 1, 1, 2]
+
+Before: [2, 2, 0, 1]
+13 0 2 0
+After: [4, 2, 0, 1]
+
+Before: [2, 2, 0, 3]
+6 0 3 3
+After: [2, 2, 0, 0]
+
+Before: [0, 2, 0, 2]
+13 3 2 0
+After: [4, 2, 0, 2]
+
+Before: [2, 2, 2, 2]
+1 0 2 3
+After: [2, 2, 2, 4]
+
+Before: [1, 2, 2, 3]
+2 1 2 3
+After: [1, 2, 2, 1]
+
+Before: [1, 2, 0, 0]
+15 0 1 3
+After: [1, 2, 0, 2]
+
+Before: [2, 2, 0, 2]
+11 1 3 1
+After: [2, 1, 0, 2]
+
+Before: [1, 0, 2, 3]
+5 0 2 0
+After: [3, 0, 2, 3]
+
+Before: [1, 0, 0, 1]
+10 1 0 2
+After: [1, 0, 1, 1]
+
+Before: [3, 1, 1, 1]
+14 0 3 2
+After: [3, 1, 9, 1]
+
+Before: [0, 1, 3, 3]
+3 1 0 3
+After: [0, 1, 3, 1]
+
+Before: [2, 1, 2, 2]
+1 0 2 2
+After: [2, 1, 4, 2]
+
+Before: [0, 2, 2, 1]
+12 1 1 0
+After: [1, 2, 2, 1]
+
+Before: [1, 2, 1, 2]
+11 1 3 2
+After: [1, 2, 1, 2]
+
+Before: [0, 1, 2, 2]
+3 1 0 1
+After: [0, 1, 2, 2]
+
+Before: [2, 2, 3, 2]
+11 1 3 3
+After: [2, 2, 3, 1]
+
+Before: [0, 2, 1, 2]
+12 1 1 1
+After: [0, 1, 1, 2]
+
+Before: [2, 1, 1, 3]
+6 0 3 0
+After: [0, 1, 1, 3]
+
+Before: [1, 2, 1, 3]
+8 0 1 3
+After: [1, 2, 1, 3]
+
+Before: [0, 3, 0, 2]
+9 0 0 3
+After: [0, 3, 0, 0]
+
+Before: [0, 2, 2, 2]
+11 1 3 1
+After: [0, 1, 2, 2]
+
+Before: [0, 1, 0, 2]
+3 1 0 0
+After: [1, 1, 0, 2]
+
+Before: [2, 0, 1, 2]
+13 0 2 2
+After: [2, 0, 4, 2]
+
+Before: [1, 0, 0, 2]
+10 1 0 3
+After: [1, 0, 0, 1]
+
+Before: [3, 1, 3, 2]
+14 0 3 3
+After: [3, 1, 3, 9]
+
+Before: [2, 2, 2, 3]
+15 2 3 0
+After: [6, 2, 2, 3]
+
+Before: [1, 0, 1, 0]
+10 1 0 2
+After: [1, 0, 1, 0]
+
+Before: [0, 2, 1, 0]
+9 0 0 3
+After: [0, 2, 1, 0]
+
+Before: [1, 2, 2, 2]
+11 1 3 0
+After: [1, 2, 2, 2]
+
+Before: [1, 2, 3, 1]
+15 3 1 0
+After: [2, 2, 3, 1]
+
+Before: [0, 0, 3, 1]
+8 0 2 2
+After: [0, 0, 3, 1]
+
+Before: [2, 0, 2, 1]
+14 0 3 1
+After: [2, 6, 2, 1]
+
+Before: [0, 0, 2, 3]
+15 2 3 1
+After: [0, 6, 2, 3]
+
+Before: [1, 2, 2, 0]
+12 1 1 2
+After: [1, 2, 1, 0]
+
+Before: [2, 2, 3, 0]
+12 1 0 2
+After: [2, 2, 1, 0]
+
+Before: [3, 2, 0, 2]
+11 1 3 1
+After: [3, 1, 0, 2]
+
+Before: [2, 2, 2, 3]
+6 0 3 3
+After: [2, 2, 2, 0]
+
+Before: [0, 1, 0, 0]
+3 1 0 2
+After: [0, 1, 1, 0]
+
+Before: [0, 1, 1, 3]
+3 1 0 3
+After: [0, 1, 1, 1]
+
+Before: [2, 0, 0, 3]
+6 0 3 1
+After: [2, 0, 0, 3]
+
+Before: [3, 1, 0, 0]
+8 1 0 0
+After: [3, 1, 0, 0]
+
+Before: [0, 1, 2, 1]
+3 1 0 1
+After: [0, 1, 2, 1]
+
+Before: [1, 0, 1, 0]
+10 1 0 3
+After: [1, 0, 1, 1]
+
+Before: [0, 0, 3, 1]
+12 2 3 3
+After: [0, 0, 3, 0]
+
+Before: [0, 1, 0, 1]
+4 3 3 2
+After: [0, 1, 0, 1]
+
+Before: [1, 0, 2, 1]
+7 3 2 2
+After: [1, 0, 3, 1]
+
+Before: [1, 1, 2, 2]
+15 0 2 0
+After: [2, 1, 2, 2]
+
+Before: [3, 3, 0, 3]
+2 1 3 2
+After: [3, 3, 1, 3]
+
+Before: [1, 0, 3, 3]
+10 1 0 0
+After: [1, 0, 3, 3]
+
+Before: [1, 3, 2, 1]
+14 2 3 2
+After: [1, 3, 6, 1]
+
+Before: [0, 1, 1, 1]
+3 1 0 0
+After: [1, 1, 1, 1]
+
+Before: [3, 3, 0, 1]
+4 3 3 3
+After: [3, 3, 0, 0]
+
+Before: [3, 3, 2, 1]
+7 3 2 2
+After: [3, 3, 3, 1]
+
+Before: [3, 2, 2, 1]
+2 1 2 3
+After: [3, 2, 2, 1]
+
+Before: [1, 1, 1, 3]
+6 0 3 0
+After: [0, 1, 1, 3]
+
+Before: [3, 0, 2, 3]
+5 1 3 3
+After: [3, 0, 2, 3]
+
+Before: [2, 2, 3, 3]
+15 1 3 2
+After: [2, 2, 6, 3]
+
+Before: [1, 2, 1, 2]
+8 2 1 3
+After: [1, 2, 1, 3]
+
+Before: [0, 2, 3, 1]
+15 3 1 0
+After: [2, 2, 3, 1]
+
+Before: [3, 3, 0, 3]
+12 3 0 2
+After: [3, 3, 1, 3]
+
+Before: [2, 2, 2, 2]
+11 1 3 2
+After: [2, 2, 1, 2]
+
+Before: [3, 0, 3, 0]
+8 1 2 1
+After: [3, 3, 3, 0]
+
+Before: [1, 1, 1, 2]
+5 0 3 2
+After: [1, 1, 3, 2]
+
+Before: [0, 3, 3, 2]
+9 0 0 2
+After: [0, 3, 0, 2]
+
+Before: [0, 3, 2, 1]
+9 0 0 0
+After: [0, 3, 2, 1]
+
+Before: [1, 3, 1, 3]
+5 2 3 3
+After: [1, 3, 1, 3]
+
+Before: [2, 1, 3, 3]
+6 0 3 3
+After: [2, 1, 3, 0]
+
+Before: [0, 1, 1, 0]
+9 0 0 0
+After: [0, 1, 1, 0]
+
+Before: [1, 0, 2, 3]
+6 0 3 0
+After: [0, 0, 2, 3]
+
+Before: [3, 3, 3, 1]
+7 3 2 0
+After: [3, 3, 3, 1]
+
+Before: [0, 1, 3, 0]
+3 1 0 2
+After: [0, 1, 1, 0]
+
+Before: [1, 2, 2, 2]
+4 3 3 1
+After: [1, 0, 2, 2]
+
+Before: [3, 2, 2, 2]
+11 1 3 3
+After: [3, 2, 2, 1]
+
+Before: [0, 1, 0, 2]
+9 0 0 0
+After: [0, 1, 0, 2]
+
+Before: [1, 0, 1, 3]
+10 1 0 0
+After: [1, 0, 1, 3]
+
+Before: [3, 3, 2, 3]
+2 1 3 1
+After: [3, 1, 2, 3]
+
+Before: [2, 3, 1, 0]
+8 3 0 1
+After: [2, 2, 1, 0]
+
+Before: [1, 1, 2, 1]
+0 1 0 3
+After: [1, 1, 2, 1]
+
+Before: [3, 3, 2, 3]
+15 3 2 1
+After: [3, 6, 2, 3]
+
+Before: [0, 2, 1, 2]
+4 1 2 3
+After: [0, 2, 1, 1]
+
+Before: [2, 2, 1, 0]
+13 1 2 1
+After: [2, 4, 1, 0]
+
+Before: [1, 0, 3, 3]
+10 1 0 1
+After: [1, 1, 3, 3]
+
+Before: [3, 3, 2, 0]
+1 2 2 2
+After: [3, 3, 4, 0]
+
+Before: [1, 2, 1, 2]
+11 1 3 0
+After: [1, 2, 1, 2]
+
+Before: [1, 3, 1, 3]
+6 0 3 3
+After: [1, 3, 1, 0]
+
+Before: [3, 3, 1, 3]
+8 2 1 1
+After: [3, 3, 1, 3]
+
+Before: [1, 0, 0, 1]
+4 3 3 0
+After: [0, 0, 0, 1]
+
+Before: [1, 2, 2, 2]
+11 1 3 3
+After: [1, 2, 2, 1]
+
+Before: [3, 1, 2, 1]
+8 1 0 0
+After: [3, 1, 2, 1]
+
+Before: [3, 0, 1, 2]
+8 1 3 3
+After: [3, 0, 1, 2]
+
+Before: [1, 1, 3, 3]
+0 1 0 3
+After: [1, 1, 3, 1]
+
+Before: [0, 0, 1, 2]
+13 3 2 1
+After: [0, 4, 1, 2]
+
+Before: [2, 3, 0, 1]
+13 0 2 0
+After: [4, 3, 0, 1]
+
+Before: [1, 2, 2, 0]
+2 1 2 1
+After: [1, 1, 2, 0]
+
+Before: [2, 3, 1, 0]
+13 0 2 2
+After: [2, 3, 4, 0]
+
+Before: [0, 1, 2, 3]
+3 1 0 3
+After: [0, 1, 2, 1]
+
+Before: [2, 3, 2, 2]
+15 1 3 1
+After: [2, 6, 2, 2]
+
+Before: [0, 1, 2, 0]
+3 1 0 3
+After: [0, 1, 2, 1]
+
+Before: [1, 2, 2, 2]
+15 0 2 2
+After: [1, 2, 2, 2]
+
+Before: [1, 2, 2, 1]
+12 1 1 2
+After: [1, 2, 1, 1]
+
+Before: [0, 1, 1, 0]
+3 1 0 0
+After: [1, 1, 1, 0]
+
+Before: [3, 3, 0, 1]
+14 0 3 1
+After: [3, 9, 0, 1]
+
+Before: [1, 0, 2, 1]
+10 1 0 2
+After: [1, 0, 1, 1]
+
+Before: [0, 3, 2, 3]
+9 0 0 2
+After: [0, 3, 0, 3]
+
+Before: [0, 2, 1, 2]
+11 1 3 3
+After: [0, 2, 1, 1]
+
+Before: [2, 0, 1, 3]
+6 0 3 1
+After: [2, 0, 1, 3]
+
+Before: [1, 1, 2, 3]
+0 1 0 3
+After: [1, 1, 2, 1]
+
+Before: [3, 0, 2, 2]
+1 2 2 1
+After: [3, 4, 2, 2]
+
+Before: [1, 3, 2, 0]
+5 3 2 3
+After: [1, 3, 2, 2]
+
+Before: [3, 3, 0, 3]
+8 2 0 1
+After: [3, 3, 0, 3]
+
+Before: [0, 0, 3, 3]
+9 0 0 3
+After: [0, 0, 3, 0]
+
+Before: [0, 3, 1, 3]
+8 2 1 3
+After: [0, 3, 1, 3]
+
+Before: [1, 1, 3, 2]
+0 1 0 3
+After: [1, 1, 3, 1]
+
+Before: [1, 0, 0, 3]
+10 1 0 2
+After: [1, 0, 1, 3]
+
+Before: [2, 0, 1, 2]
+13 3 2 3
+After: [2, 0, 1, 4]
+
+Before: [3, 2, 3, 2]
+13 1 2 0
+After: [4, 2, 3, 2]
+
+Before: [0, 1, 0, 2]
+3 1 0 3
+After: [0, 1, 0, 1]
+
+Before: [1, 1, 3, 1]
+0 1 0 0
+After: [1, 1, 3, 1]
+
+Before: [0, 1, 3, 0]
+3 1 0 0
+After: [1, 1, 3, 0]
+
+Before: [0, 1, 0, 1]
+3 1 0 1
+After: [0, 1, 0, 1]
+
+Before: [3, 2, 1, 2]
+4 1 2 2
+After: [3, 2, 1, 2]
+
+Before: [1, 1, 2, 3]
+0 1 0 0
+After: [1, 1, 2, 3]
+
+Before: [3, 2, 3, 2]
+11 1 3 2
+After: [3, 2, 1, 2]
+
+Before: [0, 1, 3, 1]
+3 1 0 1
+After: [0, 1, 3, 1]
+
+Before: [1, 1, 2, 0]
+0 1 0 3
+After: [1, 1, 2, 1]
+
+Before: [0, 1, 3, 0]
+9 0 0 3
+After: [0, 1, 3, 0]
+
+Before: [2, 2, 3, 1]
+14 2 3 2
+After: [2, 2, 9, 1]
+
+Before: [0, 1, 0, 1]
+3 1 0 2
+After: [0, 1, 1, 1]
+
+Before: [3, 3, 3, 3]
+15 0 3 3
+After: [3, 3, 3, 9]
+
+Before: [2, 1, 2, 3]
+6 0 3 0
+After: [0, 1, 2, 3]
+
+Before: [0, 2, 1, 2]
+8 0 3 1
+After: [0, 2, 1, 2]
+
+Before: [0, 2, 2, 1]
+2 1 2 1
+After: [0, 1, 2, 1]
+
+Before: [1, 0, 1, 2]
+10 1 0 0
+After: [1, 0, 1, 2]
+
+Before: [1, 2, 3, 3]
+15 1 3 3
+After: [1, 2, 3, 6]
+
+Before: [2, 1, 2, 3]
+15 1 2 3
+After: [2, 1, 2, 2]
+
+Before: [1, 2, 2, 1]
+14 1 3 3
+After: [1, 2, 2, 6]
+
+Before: [1, 1, 1, 0]
+0 1 0 1
+After: [1, 1, 1, 0]
+
+Before: [3, 2, 3, 1]
+4 3 3 0
+After: [0, 2, 3, 1]
+
+Before: [0, 2, 2, 2]
+11 1 3 2
+After: [0, 2, 1, 2]
+
+Before: [2, 1, 3, 1]
+14 3 2 3
+After: [2, 1, 3, 2]
+
+Before: [0, 2, 2, 3]
+2 1 2 0
+After: [1, 2, 2, 3]
+
+Before: [0, 1, 3, 3]
+5 0 3 2
+After: [0, 1, 3, 3]
+
+Before: [0, 3, 2, 2]
+15 1 2 0
+After: [6, 3, 2, 2]
+
+Before: [2, 2, 1, 2]
+14 3 3 1
+After: [2, 6, 1, 2]
+
+Before: [2, 2, 2, 2]
+11 1 3 1
+After: [2, 1, 2, 2]
+
+Before: [3, 2, 2, 2]
+11 1 3 0
+After: [1, 2, 2, 2]
+
+Before: [1, 3, 2, 1]
+15 0 2 0
+After: [2, 3, 2, 1]
+
+Before: [1, 2, 0, 0]
+15 0 1 2
+After: [1, 2, 2, 0]
+
+Before: [1, 2, 2, 3]
+1 1 2 1
+After: [1, 4, 2, 3]
+
+Before: [3, 2, 2, 1]
+7 3 2 0
+After: [3, 2, 2, 1]
+
+Before: [3, 2, 2, 0]
+12 1 1 2
+After: [3, 2, 1, 0]
+
+Before: [1, 0, 3, 3]
+6 0 3 1
+After: [1, 0, 3, 3]
+
+Before: [2, 0, 2, 1]
+1 0 2 3
+After: [2, 0, 2, 4]
+
+Before: [2, 0, 1, 2]
+13 0 2 0
+After: [4, 0, 1, 2]
+
+Before: [2, 2, 2, 2]
+12 2 1 0
+After: [1, 2, 2, 2]
+
+Before: [2, 2, 0, 2]
+13 3 2 1
+After: [2, 4, 0, 2]
+
+Before: [3, 3, 3, 0]
+14 2 3 1
+After: [3, 9, 3, 0]
+
+Before: [3, 1, 0, 2]
+4 3 3 3
+After: [3, 1, 0, 0]
+
+Before: [0, 2, 2, 3]
+1 1 2 0
+After: [4, 2, 2, 3]
+
+Before: [0, 1, 1, 2]
+9 0 0 1
+After: [0, 0, 1, 2]
+
+Before: [3, 3, 1, 0]
+14 1 3 2
+After: [3, 3, 9, 0]
+
+Before: [2, 0, 2, 3]
+5 1 2 2
+After: [2, 0, 2, 3]
+
+Before: [1, 1, 1, 2]
+0 1 0 0
+After: [1, 1, 1, 2]
+
+Before: [3, 2, 3, 3]
+15 1 3 0
+After: [6, 2, 3, 3]
+
+Before: [1, 3, 2, 1]
+14 1 3 0
+After: [9, 3, 2, 1]
+
+Before: [2, 0, 2, 2]
+1 2 2 0
+After: [4, 0, 2, 2]
+
+Before: [0, 2, 1, 2]
+11 1 3 0
+After: [1, 2, 1, 2]
+
+Before: [0, 1, 1, 1]
+3 1 0 3
+After: [0, 1, 1, 1]
+
+Before: [1, 0, 1, 0]
+10 1 0 1
+After: [1, 1, 1, 0]
+
+Before: [1, 1, 1, 1]
+4 3 3 3
+After: [1, 1, 1, 0]
+
+Before: [3, 2, 2, 2]
+14 0 3 3
+After: [3, 2, 2, 9]
+
+Before: [0, 1, 2, 1]
+9 0 0 0
+After: [0, 1, 2, 1]
+
+Before: [2, 0, 2, 3]
+1 2 2 0
+After: [4, 0, 2, 3]
+
+Before: [1, 1, 1, 3]
+0 1 0 3
+After: [1, 1, 1, 1]
+
+Before: [0, 1, 0, 3]
+3 1 0 1
+After: [0, 1, 0, 3]
+
+Before: [2, 0, 2, 1]
+5 1 2 0
+After: [2, 0, 2, 1]
+
+Before: [1, 3, 3, 1]
+14 0 2 0
+After: [2, 3, 3, 1]
+
+Before: [1, 0, 0, 3]
+6 0 3 1
+After: [1, 0, 0, 3]
+
+Before: [2, 3, 0, 3]
+6 0 3 3
+After: [2, 3, 0, 0]
+
+Before: [0, 1, 2, 2]
+1 3 2 3
+After: [0, 1, 2, 4]
+
+Before: [3, 1, 2, 3]
+1 2 2 2
+After: [3, 1, 4, 3]
+
+Before: [3, 1, 0, 3]
+8 2 0 3
+After: [3, 1, 0, 3]
+
+Before: [3, 3, 1, 2]
+14 0 3 3
+After: [3, 3, 1, 9]
+
+Before: [3, 0, 3, 2]
+4 3 3 3
+After: [3, 0, 3, 0]
+
+Before: [2, 3, 1, 0]
+8 2 1 0
+After: [3, 3, 1, 0]
+
+Before: [0, 1, 2, 1]
+3 1 0 2
+After: [0, 1, 1, 1]
+
+Before: [0, 1, 3, 2]
+3 1 0 0
+After: [1, 1, 3, 2]
+
+Before: [1, 1, 2, 0]
+15 0 2 1
+After: [1, 2, 2, 0]
+
+Before: [0, 3, 2, 2]
+1 3 2 0
+After: [4, 3, 2, 2]
+
+Before: [1, 0, 1, 2]
+10 1 0 3
+After: [1, 0, 1, 1]
+
+Before: [0, 2, 2, 0]
+12 1 1 0
+After: [1, 2, 2, 0]
+
+Before: [1, 1, 3, 3]
+0 1 0 1
+After: [1, 1, 3, 3]
+
+Before: [1, 0, 2, 0]
+10 1 0 2
+After: [1, 0, 1, 0]
+
+Before: [2, 3, 2, 1]
+15 1 2 1
+After: [2, 6, 2, 1]
+
+Before: [1, 2, 0, 0]
+8 1 0 1
+After: [1, 3, 0, 0]
+
+Before: [3, 2, 1, 2]
+11 1 3 3
+After: [3, 2, 1, 1]
+
+Before: [1, 1, 1, 1]
+0 1 0 3
+After: [1, 1, 1, 1]
+
+Before: [2, 3, 1, 3]
+6 0 3 3
+After: [2, 3, 1, 0]
+
+Before: [0, 2, 1, 3]
+13 1 2 2
+After: [0, 2, 4, 3]
+
+Before: [1, 0, 3, 1]
+7 3 2 3
+After: [1, 0, 3, 3]
+
+Before: [2, 1, 0, 0]
+8 3 0 3
+After: [2, 1, 0, 2]
+
+Before: [1, 1, 1, 2]
+0 1 0 2
+After: [1, 1, 1, 2]
+
+Before: [3, 2, 2, 2]
+1 3 2 3
+After: [3, 2, 2, 4]
+
+Before: [3, 1, 1, 1]
+14 0 3 3
+After: [3, 1, 1, 9]
+
+Before: [2, 2, 3, 3]
+6 0 3 0
+After: [0, 2, 3, 3]
+
+Before: [0, 1, 1, 2]
+3 1 0 2
+After: [0, 1, 1, 2]
+
+Before: [3, 2, 1, 2]
+14 0 3 0
+After: [9, 2, 1, 2]
+
+Before: [2, 0, 3, 1]
+7 3 2 3
+After: [2, 0, 3, 3]
+
+Before: [1, 2, 2, 1]
+2 1 2 0
+After: [1, 2, 2, 1]
+
+Before: [0, 0, 2, 1]
+4 3 3 3
+After: [0, 0, 2, 0]
+
+Before: [3, 2, 3, 3]
+12 3 0 3
+After: [3, 2, 3, 1]
+
+Before: [1, 1, 2, 2]
+0 1 0 3
+After: [1, 1, 2, 1]
+
+Before: [2, 3, 1, 1]
+14 1 3 2
+After: [2, 3, 9, 1]
+
+Before: [1, 0, 2, 1]
+15 0 2 1
+After: [1, 2, 2, 1]
+
+Before: [0, 1, 2, 3]
+9 0 0 3
+After: [0, 1, 2, 0]
+
+Before: [3, 0, 0, 2]
+4 3 3 0
+After: [0, 0, 0, 2]
+
+Before: [3, 0, 3, 1]
+7 3 2 3
+After: [3, 0, 3, 3]
+
+Before: [3, 2, 2, 3]
+12 2 1 1
+After: [3, 1, 2, 3]
+
+Before: [0, 3, 3, 3]
+2 1 3 1
+After: [0, 1, 3, 3]
+
+Before: [1, 0, 0, 0]
+10 1 0 1
+After: [1, 1, 0, 0]
+
+Before: [1, 3, 0, 3]
+2 1 3 3
+After: [1, 3, 0, 1]
+
+Before: [3, 2, 2, 3]
+12 3 0 2
+After: [3, 2, 1, 3]
+
+Before: [1, 1, 2, 0]
+0 1 0 0
+After: [1, 1, 2, 0]
+
+Before: [0, 2, 2, 1]
+2 1 2 2
+After: [0, 2, 1, 1]
+
+Before: [1, 0, 1, 2]
+10 1 0 2
+After: [1, 0, 1, 2]
+
+Before: [1, 0, 3, 0]
+14 0 2 2
+After: [1, 0, 2, 0]
+
+Before: [0, 2, 3, 2]
+11 1 3 3
+After: [0, 2, 3, 1]
+
+Before: [0, 1, 0, 3]
+3 1 0 2
+After: [0, 1, 1, 3]
+
+Before: [3, 3, 2, 1]
+12 1 0 0
+After: [1, 3, 2, 1]
+
+Before: [0, 2, 3, 3]
+13 1 2 0
+After: [4, 2, 3, 3]
+
+Before: [1, 1, 3, 0]
+0 1 0 1
+After: [1, 1, 3, 0]
+
+Before: [1, 2, 2, 2]
+2 1 2 2
+After: [1, 2, 1, 2]
+
+Before: [2, 1, 3, 3]
+13 0 2 2
+After: [2, 1, 4, 3]
+
+Before: [1, 0, 1, 3]
+10 1 0 3
+After: [1, 0, 1, 1]
+
+Before: [2, 1, 3, 2]
+7 3 1 1
+After: [2, 3, 3, 2]
+
+Before: [1, 1, 1, 0]
+0 1 0 0
+After: [1, 1, 1, 0]
+
+Before: [0, 2, 3, 2]
+13 3 2 3
+After: [0, 2, 3, 4]
+
+Before: [3, 2, 2, 3]
+12 3 0 3
+After: [3, 2, 2, 1]
+
+Before: [2, 3, 2, 3]
+2 1 3 1
+After: [2, 1, 2, 3]
+
+Before: [2, 3, 0, 3]
+6 0 3 1
+After: [2, 0, 0, 3]
+
+Before: [2, 2, 2, 3]
+1 2 2 0
+After: [4, 2, 2, 3]
+
+Before: [3, 2, 3, 2]
+4 3 3 1
+After: [3, 0, 3, 2]
+
+Before: [0, 2, 2, 0]
+12 1 1 1
+After: [0, 1, 2, 0]
+
+Before: [2, 2, 3, 2]
+11 1 3 2
+After: [2, 2, 1, 2]
+
+Before: [3, 0, 2, 3]
+1 2 2 2
+After: [3, 0, 4, 3]
+
+Before: [0, 3, 2, 0]
+9 0 0 0
+After: [0, 3, 2, 0]
+
+Before: [0, 2, 3, 1]
+9 0 0 2
+After: [0, 2, 0, 1]
+
+Before: [0, 1, 1, 1]
+3 1 0 2
+After: [0, 1, 1, 1]
+
+Before: [2, 2, 2, 3]
+2 1 2 0
+After: [1, 2, 2, 3]
+
+Before: [0, 1, 2, 3]
+15 3 2 0
+After: [6, 1, 2, 3]
+
+Before: [1, 1, 0, 2]
+7 3 1 3
+After: [1, 1, 0, 3]
+
+Before: [1, 1, 1, 1]
+0 1 0 0
+After: [1, 1, 1, 1]
+
+Before: [1, 2, 3, 3]
+15 0 1 3
+After: [1, 2, 3, 2]
+
+Before: [0, 3, 2, 3]
+2 1 3 1
+After: [0, 1, 2, 3]
+
+Before: [0, 3, 0, 0]
+8 2 1 3
+After: [0, 3, 0, 3]
+
+Before: [2, 0, 2, 3]
+1 0 2 0
+After: [4, 0, 2, 3]
+
+Before: [0, 3, 0, 3]
+5 0 3 3
+After: [0, 3, 0, 3]
+
+Before: [0, 1, 2, 0]
+3 1 0 0
+After: [1, 1, 2, 0]
+
+
+
+7 3 2 0
+7 2 1 1
+7 1 0 3
+8 1 0 1
+14 1 2 1
+1 2 1 2
+7 3 3 1
+7 2 0 0
+14 3 0 3
+13 3 2 3
+0 1 0 1
+14 1 1 1
+1 1 2 2
+7 2 2 1
+7 3 1 0
+7 1 0 3
+1 3 3 3
+14 3 3 3
+1 2 3 2
+3 2 1 0
+14 3 0 3
+13 3 0 3
+7 2 3 2
+14 2 0 1
+13 1 0 1
+6 3 2 2
+14 2 2 2
+1 0 2 0
+7 3 1 1
+7 2 2 3
+14 3 0 2
+13 2 0 2
+7 2 1 3
+14 3 3 3
+1 0 3 0
+7 0 0 3
+14 0 0 2
+13 2 3 2
+14 0 0 1
+13 1 1 1
+10 3 2 3
+14 3 2 3
+1 0 3 0
+3 0 1 1
+7 0 1 0
+7 1 1 2
+7 3 1 3
+9 3 2 0
+14 0 1 0
+1 1 0 1
+3 1 0 3
+14 0 0 2
+13 2 2 2
+7 3 2 1
+14 2 0 0
+13 0 1 0
+3 0 2 0
+14 0 2 0
+1 0 3 3
+3 3 2 1
+7 2 1 0
+14 2 0 2
+13 2 3 2
+14 0 0 3
+13 3 2 3
+8 0 2 2
+14 2 2 2
+1 1 2 1
+14 0 0 2
+13 2 0 2
+14 1 0 3
+13 3 1 3
+15 3 0 2
+14 2 1 2
+1 2 1 1
+3 1 0 0
+14 2 0 1
+13 1 3 1
+7 2 1 3
+7 2 0 2
+5 2 3 3
+14 3 2 3
+14 3 3 3
+1 0 3 0
+3 0 0 3
+7 1 1 2
+7 2 1 1
+7 3 0 0
+8 1 0 1
+14 1 2 1
+14 1 3 1
+1 3 1 3
+3 3 0 1
+7 0 0 3
+14 1 0 0
+13 0 0 0
+7 2 2 2
+7 3 2 0
+14 0 2 0
+1 1 0 1
+7 1 1 2
+14 2 0 3
+13 3 2 3
+7 3 3 0
+9 0 2 2
+14 2 1 2
+1 2 1 1
+3 1 2 2
+14 1 0 1
+13 1 0 1
+7 1 2 0
+7 3 1 3
+13 0 1 1
+14 1 1 1
+1 2 1 2
+3 2 0 1
+7 2 0 3
+7 2 3 2
+7 2 3 0
+5 0 3 2
+14 2 2 2
+1 1 2 1
+3 1 1 0
+14 0 0 1
+13 1 2 1
+14 0 0 2
+13 2 3 2
+14 2 0 3
+13 3 3 3
+8 1 2 1
+14 1 1 1
+1 1 0 0
+3 0 0 2
+7 3 3 0
+7 2 3 3
+7 0 0 1
+0 0 3 3
+14 3 2 3
+1 3 2 2
+3 2 0 3
+14 3 0 2
+13 2 2 2
+7 1 1 1
+12 2 0 0
+14 0 2 0
+1 0 3 3
+3 3 3 1
+7 0 2 3
+7 3 0 2
+7 2 3 0
+8 0 2 3
+14 3 3 3
+1 3 1 1
+7 3 3 3
+2 0 2 2
+14 2 2 2
+14 2 1 2
+1 2 1 1
+3 1 3 3
+7 1 0 0
+7 3 2 1
+7 2 3 2
+3 0 2 1
+14 1 1 1
+14 1 3 1
+1 1 3 3
+3 3 1 0
+14 1 0 1
+13 1 0 1
+7 3 2 2
+7 0 1 3
+7 2 1 1
+14 1 1 1
+1 0 1 0
+3 0 0 1
+7 2 0 0
+7 2 2 2
+7 2 2 3
+11 0 3 2
+14 2 3 2
+1 1 2 1
+14 1 0 2
+13 2 3 2
+7 0 3 3
+2 0 2 0
+14 0 2 0
+14 0 3 0
+1 1 0 1
+3 1 2 0
+7 2 3 2
+7 3 3 1
+7 3 2 3
+12 2 1 1
+14 1 3 1
+1 1 0 0
+7 0 0 1
+7 0 2 2
+7 2 0 3
+10 2 3 2
+14 2 3 2
+1 2 0 0
+3 0 3 1
+14 3 0 0
+13 0 0 0
+7 2 2 2
+5 2 3 3
+14 3 1 3
+1 3 1 1
+3 1 2 2
+7 1 0 3
+14 0 0 1
+13 1 2 1
+7 2 1 0
+4 0 3 1
+14 1 2 1
+1 2 1 2
+3 2 3 0
+7 3 1 3
+7 3 3 1
+7 1 0 2
+9 3 2 1
+14 1 3 1
+14 1 1 1
+1 0 1 0
+3 0 0 2
+7 0 3 3
+14 2 0 1
+13 1 3 1
+7 2 2 0
+12 0 1 0
+14 0 1 0
+1 0 2 2
+14 0 0 0
+13 0 2 0
+5 0 3 0
+14 0 2 0
+1 2 0 2
+3 2 2 0
+7 2 1 3
+7 2 1 2
+12 2 1 1
+14 1 2 1
+1 0 1 0
+3 0 2 2
+7 0 3 1
+7 2 3 0
+11 0 3 0
+14 0 3 0
+14 0 2 0
+1 0 2 2
+3 2 3 1
+7 1 0 0
+7 3 2 2
+7 3 3 3
+14 0 2 2
+14 2 2 2
+1 2 1 1
+3 1 3 2
+7 1 0 3
+7 3 1 1
+7 2 0 0
+15 3 0 3
+14 3 3 3
+1 3 2 2
+3 2 3 1
+7 1 0 3
+7 1 0 0
+14 1 0 2
+13 2 2 2
+1 0 3 3
+14 3 2 3
+14 3 2 3
+1 3 1 1
+3 1 2 3
+14 0 0 2
+13 2 3 2
+7 0 3 1
+13 0 1 1
+14 1 2 1
+1 1 3 3
+3 3 2 2
+14 3 0 3
+13 3 1 3
+7 2 0 1
+7 3 3 0
+1 3 3 1
+14 1 3 1
+1 1 2 2
+3 2 1 1
+7 2 2 0
+7 0 3 3
+7 2 1 2
+6 3 2 3
+14 3 1 3
+1 3 1 1
+3 1 1 3
+7 1 1 0
+7 1 0 1
+7 3 3 2
+14 1 2 2
+14 2 3 2
+14 2 1 2
+1 2 3 3
+7 3 3 1
+7 2 2 2
+3 0 2 2
+14 2 3 2
+1 2 3 3
+3 3 2 1
+7 0 3 3
+7 2 2 2
+7 3 2 0
+12 2 0 3
+14 3 3 3
+1 1 3 1
+7 0 3 3
+7 3 0 2
+14 1 0 0
+13 0 2 0
+2 0 2 2
+14 2 2 2
+1 1 2 1
+7 3 1 3
+7 3 0 2
+0 3 0 3
+14 3 1 3
+1 3 1 1
+14 2 0 3
+13 3 1 3
+4 0 3 3
+14 3 2 3
+14 3 1 3
+1 1 3 1
+3 1 1 0
+14 1 0 2
+13 2 2 2
+7 1 2 1
+7 0 2 3
+6 3 2 3
+14 3 1 3
+1 3 0 0
+3 0 2 3
+14 3 0 1
+13 1 0 1
+7 1 3 0
+3 0 2 0
+14 0 2 0
+14 0 2 0
+1 0 3 3
+14 0 0 0
+13 0 1 0
+7 0 0 2
+14 0 2 2
+14 2 1 2
+1 3 2 3
+7 2 2 2
+3 0 2 2
+14 2 3 2
+1 3 2 3
+3 3 2 2
+7 2 1 0
+7 2 0 3
+11 0 3 3
+14 3 2 3
+1 3 2 2
+3 2 0 0
+7 2 3 1
+7 0 2 3
+7 2 1 2
+6 3 2 3
+14 3 3 3
+14 3 1 3
+1 0 3 0
+7 0 3 3
+6 3 2 2
+14 2 1 2
+1 0 2 0
+14 0 0 3
+13 3 1 3
+7 1 0 1
+7 0 2 2
+14 1 2 2
+14 2 2 2
+14 2 2 2
+1 0 2 0
+3 0 1 3
+7 2 1 0
+7 3 3 2
+14 1 2 0
+14 0 2 0
+1 3 0 3
+3 3 0 0
+14 0 0 3
+13 3 2 3
+7 0 2 2
+10 2 3 2
+14 2 1 2
+1 2 0 0
+3 0 1 1
+14 0 0 2
+13 2 3 2
+14 1 0 3
+13 3 0 3
+7 3 2 0
+7 2 0 0
+14 0 1 0
+1 0 1 1
+7 0 1 2
+7 0 0 0
+7 2 1 3
+10 2 3 3
+14 3 2 3
+1 1 3 1
+7 2 0 3
+10 2 3 0
+14 0 1 0
+1 1 0 1
+7 2 3 2
+7 0 2 3
+7 3 1 0
+8 2 0 0
+14 0 3 0
+1 1 0 1
+7 3 0 3
+14 0 0 2
+13 2 0 2
+7 1 3 0
+9 3 2 3
+14 3 1 3
+1 1 3 1
+7 0 3 3
+7 3 2 2
+7 0 1 0
+10 3 2 3
+14 3 2 3
+1 1 3 1
+3 1 3 3
+7 3 3 0
+7 1 3 1
+7 0 2 2
+2 2 0 2
+14 2 1 2
+1 3 2 3
+3 3 1 1
+7 2 3 2
+7 2 0 0
+7 0 3 3
+6 3 2 2
+14 2 2 2
+1 2 1 1
+3 1 3 2
+7 1 2 1
+7 2 3 3
+15 1 0 3
+14 3 2 3
+14 3 3 3
+1 2 3 2
+7 1 0 3
+7 2 3 1
+4 0 3 0
+14 0 2 0
+1 0 2 2
+3 2 2 0
+14 2 0 2
+13 2 1 2
+7 0 3 3
+5 1 3 3
+14 3 1 3
+1 0 3 0
+3 0 2 1
+7 2 1 0
+7 1 3 3
+15 3 0 3
+14 3 3 3
+14 3 1 3
+1 1 3 1
+3 1 3 3
+7 1 2 1
+7 0 2 2
+7 1 1 0
+14 0 2 1
+14 1 2 1
+1 1 3 3
+3 3 1 2
+7 3 0 1
+7 2 0 0
+14 2 0 3
+13 3 1 3
+13 3 1 3
+14 3 2 3
+14 3 3 3
+1 3 2 2
+3 2 2 0
+7 0 0 2
+7 3 0 3
+9 3 2 1
+14 1 2 1
+14 1 3 1
+1 0 1 0
+7 0 1 3
+7 3 3 1
+7 2 0 2
+12 2 1 3
+14 3 1 3
+14 3 1 3
+1 3 0 0
+7 1 2 3
+14 0 0 2
+13 2 3 2
+1 3 3 3
+14 3 1 3
+1 3 0 0
+3 0 0 2
+7 2 2 3
+7 2 1 0
+11 0 3 0
+14 0 3 0
+1 0 2 2
+3 2 3 3
+7 3 1 2
+7 1 3 0
+13 0 1 2
+14 2 2 2
+1 3 2 3
+7 1 0 1
+7 2 1 0
+7 1 3 2
+15 1 0 1
+14 1 1 1
+14 1 1 1
+1 1 3 3
+3 3 3 0
+7 3 1 1
+7 3 1 3
+14 2 0 2
+13 2 0 2
+9 3 2 3
+14 3 2 3
+14 3 3 3
+1 3 0 0
+3 0 1 1
+7 2 1 0
+7 1 2 2
+7 2 1 3
+11 0 3 2
+14 2 2 2
+14 2 1 2
+1 1 2 1
+7 2 0 2
+7 0 2 0
+7 1 0 3
+1 3 3 3
+14 3 1 3
+1 1 3 1
+3 1 0 0
+14 2 0 1
+13 1 3 1
+7 0 2 2
+7 1 3 3
+1 3 3 2
+14 2 1 2
+1 0 2 0
+3 0 3 2
+7 0 3 0
+7 0 3 3
+7 2 2 1
+7 3 0 3
+14 3 1 3
+14 3 3 3
+1 2 3 2
+3 2 1 1
+7 2 2 2
+7 2 0 3
+7 3 0 0
+12 2 0 0
+14 0 3 0
+14 0 1 0
+1 0 1 1
+7 1 3 2
+7 2 0 0
+7 1 3 3
+4 0 3 3
+14 3 1 3
+1 3 1 1
+14 2 0 3
+13 3 0 3
+7 3 1 0
+14 0 0 2
+13 2 2 2
+6 3 2 3
+14 3 2 3
+1 3 1 1
+3 1 2 2
+7 0 0 1
+14 3 0 3
+13 3 1 3
+7 2 2 0
+15 3 0 0
+14 0 3 0
+1 2 0 2
+3 2 2 1
+7 0 0 2
+14 3 0 0
+13 0 3 0
+9 0 2 0
+14 0 2 0
+1 0 1 1
+7 2 2 0
+7 0 3 3
+7 3 1 2
+8 0 2 2
+14 2 1 2
+14 2 3 2
+1 2 1 1
+3 1 1 0
+14 1 0 1
+13 1 3 1
+7 2 0 2
+6 3 2 2
+14 2 3 2
+1 0 2 0
+3 0 1 1
+7 1 1 3
+7 2 0 0
+7 3 1 2
+7 2 3 0
+14 0 2 0
+1 0 1 1
+7 0 0 3
+14 0 0 0
+13 0 1 0
+10 3 2 2
+14 2 1 2
+1 2 1 1
+3 1 0 0
+14 3 0 2
+13 2 0 2
+7 0 2 1
+7 2 2 3
+10 2 3 1
+14 1 1 1
+1 0 1 0
+3 0 1 1
+14 2 0 0
+13 0 2 0
+7 3 1 2
+7 1 2 3
+8 0 2 0
+14 0 3 0
+1 1 0 1
+3 1 2 2
+7 2 3 1
+7 2 1 3
+7 2 3 0
+11 0 3 1
+14 1 1 1
+1 2 1 2
+3 2 0 1
+14 2 0 2
+13 2 2 2
+14 3 0 0
+13 0 3 0
+7 0 0 3
+6 3 2 2
+14 2 1 2
+1 1 2 1
+7 0 2 0
+7 2 1 2
+7 3 0 0
+14 0 3 0
+1 0 1 1
+3 1 0 3
+7 3 1 0
+7 3 3 2
+14 0 0 1
+13 1 2 1
+8 1 0 0
+14 0 3 0
+1 3 0 3
+3 3 2 1
+7 0 2 0
+7 0 2 3
+7 2 0 2
+6 3 2 2
+14 2 2 2
+14 2 3 2
+1 2 1 1
+3 1 1 0
+7 3 3 1
+7 1 3 3
+7 0 1 2
+9 1 2 1
+14 1 2 1
+1 0 1 0
+3 0 0 3
+7 2 0 1
+7 3 2 0
+9 0 2 2
+14 2 3 2
+1 2 3 3
+14 1 0 2
+13 2 2 2
+7 1 2 1
+12 2 0 1
+14 1 3 1
+14 1 1 1
+1 1 3 3
+3 3 1 2
+7 2 0 0
+7 1 2 3
+7 1 3 1
+4 0 3 1
+14 1 2 1
+14 1 3 1
+1 1 2 2
+7 3 3 1
+7 2 2 3
+12 0 1 0
+14 0 3 0
+1 0 2 2
+3 2 2 1
+7 3 1 2
+7 3 2 0
+0 0 3 2
+14 2 3 2
+1 1 2 1
+3 1 0 0
+7 2 1 2
+7 1 2 1
+15 1 3 2
+14 2 1 2
+14 2 2 2
+1 2 0 0
+3 0 2 1
+7 1 0 3
+7 1 2 2
+7 1 1 0
+1 3 3 2
+14 2 3 2
+14 2 2 2
+1 2 1 1
+3 1 0 2
+7 0 1 0
+7 2 3 1
+1 3 3 0
+14 0 1 0
+1 0 2 2
+3 2 0 0
+7 1 1 1
+7 2 0 3
+7 3 3 2
+15 1 3 3
+14 3 3 3
+1 0 3 0
+7 2 0 2
+7 0 1 3
+7 0 3 1
+6 3 2 1
+14 1 2 1
+14 1 1 1
+1 0 1 0
+3 0 2 3
+7 3 1 2
+7 3 3 0
+7 3 2 1
+7 2 0 2
+14 2 1 2
+1 2 3 3
+7 3 2 2
+7 1 2 1
+9 0 2 0
+14 0 2 0
+14 0 3 0
+1 3 0 3
+3 3 0 1
+7 1 3 3
+14 1 0 0
+13 0 3 0
+7 2 3 2
+12 2 0 3
+14 3 3 3
+1 1 3 1
+3 1 2 0
+7 3 1 2
+7 3 0 1
+7 1 1 3
+14 3 2 3
+14 3 2 3
+14 3 1 3
+1 0 3 0
+3 0 3 1
+7 1 3 3
+7 0 2 2
+7 2 3 0
+4 0 3 2
+14 2 2 2
+1 2 1 1
+7 1 2 0
+7 2 3 3
+7 0 0 2
+10 2 3 3
+14 3 1 3
+1 3 1 1
+7 3 1 3
+7 3 2 0
+2 2 0 2
+14 2 1 2
+14 2 1 2
+1 2 1 1
+14 2 0 0
+13 0 1 0
+7 3 0 2
+7 0 2 3
+7 2 0 0
+14 0 2 0
+1 0 1 1
+3 1 0 3
+14 1 0 0
+13 0 3 0
+7 2 0 2
+7 2 2 1
+8 2 0 1
+14 1 3 1
+14 1 3 1
+1 1 3 3
+3 3 2 2
+7 2 3 0
+7 2 1 3
+7 3 3 1
+0 1 0 3
+14 3 2 3
+14 3 1 3
+1 3 2 2
+3 2 3 1
+7 0 0 2
+7 3 0 0
+7 2 2 3
+9 0 2 0
+14 0 1 0
+1 0 1 1
+7 2 3 2
+7 0 1 3
+7 0 2 0
+5 2 3 2
+14 2 2 2
+1 1 2 1
+3 1 1 2
+7 2 0 1
+5 1 3 1
+14 1 1 1
+1 2 1 2
+3 2 3 1
+7 3 0 3
+7 0 0 2
+14 2 0 0
+13 0 1 0
+14 0 2 0
+14 0 3 0
+1 1 0 1
+3 1 1 3
+7 2 2 1
+7 3 2 0
+8 1 0 1
+14 1 3 1
+1 1 3 3
+3 3 2 1
+14 2 0 3
+13 3 0 3
+14 1 0 0
+13 0 0 0
+14 0 0 2
+13 2 3 2
+10 3 2 2
+14 2 1 2
+14 2 2 2
+1 1 2 1
+3 1 3 2
+7 2 3 0
+14 2 0 3
+13 3 1 3
+7 0 1 1
+1 3 3 1
+14 1 3 1
+1 1 2 2
+3 2 2 1
+14 0 0 2
+13 2 2 2
+7 1 1 0
+7 0 0 3
+3 0 2 0
+14 0 3 0
+1 0 1 1
+3 1 1 2
+7 2 2 3
+7 2 0 0
+7 3 0 1
+5 0 3 0
+14 0 3 0
+1 2 0 2
+7 2 3 0
+14 1 0 3
+13 3 0 3
+14 1 0 1
+13 1 1 1
+15 1 0 3
+14 3 1 3
+1 3 2 2
+3 2 2 1
+7 2 1 2
+14 0 0 3
+13 3 1 3
+7 0 1 0
+7 3 0 0
+14 0 2 0
+1 0 1 1
+3 1 1 2
+7 2 1 3
+7 3 0 1
+7 2 3 0
+11 0 3 3
+14 3 3 3
+1 2 3 2
+3 2 1 1
+7 2 2 3
+7 0 1 2
+14 1 0 0
+13 0 0 0
+10 2 3 2
+14 2 1 2
+14 2 3 2
+1 2 1 1
+7 3 3 0
+7 3 0 3
+7 3 2 2
+9 3 2 2
+14 2 1 2
+1 2 1 1
+3 1 2 2
+14 0 0 1
+13 1 0 1
+7 0 0 3
+7 1 1 0
+13 0 1 0
+14 0 1 0
+14 0 2 0
+1 2 0 2
+14 2 0 0
+13 0 2 0
+7 2 3 3
+11 0 3 1
+14 1 2 1
+1 1 2 2
+3 2 1 1
+7 3 3 3
+7 3 3 2
+2 0 2 3
+14 3 1 3
+14 3 3 3
+1 1 3 1
+3 1 0 3
+7 1 1 2
+7 3 0 1
+12 0 1 1
+14 1 2 1
+1 1 3 3
+3 3 3 1
+14 3 0 2
+13 2 0 2
+7 2 2 3
+11 0 3 3
+14 3 2 3
+1 1 3 1
+3 1 1 2
+7 3 3 1
+7 1 2 3
+4 0 3 3
+14 3 3 3
+14 3 2 3
+1 2 3 2
+3 2 0 0
+7 0 2 2
+14 2 0 3
+13 3 1 3
+1 3 3 1
+14 1 2 1
+14 1 2 1
+1 1 0 0
+3 0 2 2
+7 2 1 0
+7 1 0 1
+15 1 0 1
+14 1 2 1
+14 1 2 1
+1 2 1 2
+3 2 2 1
+7 3 3 3
+7 3 2 2
+8 0 2 0
+14 0 3 0
+1 0 1 1
+7 0 2 2
+7 2 1 3
+14 1 0 0
+13 0 3 0
+2 2 0 0
+14 0 3 0
+14 0 3 0
+1 0 1 1
+3 1 0 2
+7 2 2 0
+7 2 3 1
+11 0 3 0
+14 0 3 0
+14 0 1 0
+1 0 2 2
+3 2 2 3
+7 2 2 0
+7 1 3 2
+14 3 0 1
+13 1 3 1
+12 0 1 0
+14 0 2 0
+14 0 3 0
+1 3 0 3
+3 3 2 0
+7 2 2 2
+7 0 1 3
+6 3 2 3
+14 3 1 3
+1 3 0 0
diff --git a/src/16/notes.txt b/src/16/notes.txt new file mode 100644 index 0000000..c8cbf8b --- /dev/null +++ b/src/16/notes.txt @@ -0,0 +1,47 @@ +R4 = 65536
+n * 256 > 65536 <=> n = 257
+#
+0 : R1 = 123
+1 : R1 = R1 & 456
+2 : R1 = (R1 == 72)
+3 : R3 = R1 + R3
+4 : R3 = 0
+5 : R1 = 0
+6 : R4 = R1 | 65536
+7 : R1 = 3798839
+8 : R5 = R4 & 255
+9 : R1 = R1 + R5
+10 : R1 = R1 & 16777215
+11 : R1 = R1 * 65899
+12 : R1 = R1 & 16777215
+13 : R5 = (256 > R4)
+14 : R3 = R5 + R3
+15 : R3 = R3 + 1
+16 : R3 = 27
+17 : R5 = 0
+18 : R2 = R5 + 1
+19 : R2 = R2 * 256
+20 : R2 = (R2 > R4)
+21 : R3 = R2 + R3
+22 : R3 = R3 + 1
+23 : R3 = 25
+24 : R5 = R5 + 1
+25 : R3 = 17
+26 : R4 = R5
+27 : R3 = 7
+28 : R5 = (R1 == R0)
+29 : R3 = R5 + R3
+30 : R3 = 5
+
+6851325 (low)
+4903765 (low)
+4455450
+13530460
+
+16127846
+3319808
+
+11077029
+1993108
+
+11011493
\ No newline at end of file diff --git a/src/16/solve.py b/src/16/solve.py new file mode 100644 index 0000000..e2098e3 --- /dev/null +++ b/src/16/solve.py @@ -0,0 +1,121 @@ +from sys import argv as args
+
+
+def parseLog(ls):
+ data = list()
+ before = [int(v) for v in ls[0].split("[")[1].split("]")[0].split(",")]
+ ins = [int(v) for v in ls[1].split(" ")]
+ after = [int(v) for v in ls[2].split("[")[1].split("]")[0].split(",")]
+ return (before, ins, after)
+
+file = open("input.txt")
+inslog = list()
+input = file.readlines()
+file.close()
+progsec = None
+
+for i in range(0, len(input), 4):
+ if input[i] == "\n":
+ progsec = i
+ break
+ inslog.append(parseLog(input[i:i+4]))
+
+
+register = list()
+
+opmap = dict()
+opmap["addr"] = lambda a, b : register[a] + register[b]
+opmap["addi"] = lambda a, b : register[a] + b
+opmap["mulr"] = lambda a, b : register[a] * register[b]
+opmap["muli"] = lambda a, b : register[a] * b
+opmap["banr"] = lambda a, b : register[a] & register[b]
+opmap["bani"] = lambda a, b : register[a] & b
+opmap["borr"] = lambda a, b : register[a] | register[b]
+opmap["bori"] = lambda a, b : register[a] | b
+opmap["setr"] = lambda a, b : register[a]
+opmap["seti"] = lambda a, b : a
+opmap["gtir"] = lambda a, b : 1 * (a > register[b])
+opmap["gtri"] = lambda a, b : 1 * (register[a] > b)
+opmap["gtrr"] = lambda a, b : 1 * (register[a] > register[b])
+opmap["eqir"] = lambda a, b : 1 * (a == register[b])
+opmap["eqri"] = lambda a, b : 1 * (register[a] == b)
+opmap["eqrr"] = lambda a, b : 1 * (register[a] == register[b])
+
+def getPossible(ins):
+ global register
+ sregister = register[:]
+ before = ins[0]
+ after = ins[2]
+ register = before
+ a = ins[1][1]
+ b = ins[1][2]
+ c = ins[1][3]
+ ops = list(opmap.values())
+ possibles = list()
+ for i in range(len(ops)):
+ op = ops[i]
+ res = None
+ try:
+ res = op(a, b)
+ except:
+ continue
+ if res == after[c]:
+ possibles.append(i)
+ register = sregister
+ return possibles
+
+def solve1():
+ global register
+ uncertain = 0
+ for ins in inslog:
+ if len(getPossible(ins)) >= 3:
+ uncertain += 1
+ print(uncertain)
+ return
+
+def solve2():
+ possible = dict()
+ for ins in inslog:
+ o = ins[1][0]
+ if o in possible:
+ possible[o] = [op for op in getPossible(ins) if op in possible[o]]
+ else:
+ possible[o] = getPossible(ins)
+
+ certain = False
+ while not certain:
+ singles = [p[0] for p in possible.values() if len(p) == 1]
+ for p in possible:
+ if len(possible[p]) != 1:
+ possible[p] = [v for v in possible[p] if v not in singles]
+
+ certain = True
+ for p in possible.values():
+ if len(p) != 1:
+ certain = False
+ break
+
+ ntrans = dict()
+ for p in possible: # flatten
+ ntrans[p] = possible[p][0]
+
+ for i in range(progsec, len(input)): # execute program
+ l = input[i]
+ if l == "\n": continue
+ cmd = [int(v) for v in l.split(" ")]
+ while len(register)-1 < cmd[3]:
+ register.append(0)
+
+ register[cmd[3]] = list(opmap.values())[ntrans[cmd[0]]](cmd[1], cmd[2])
+
+
+ print(register[0])
+
+def main():
+ if len(args) > 1:
+ if args[1] == "1":
+ solve1()
+ elif args[1] == "2":
+ solve2()
+
+main()
|
