From 87ab487d59fa85dbe2afa55cc841b02805ae42ca Mon Sep 17 00:00:00 2001 From: Louis Burda Date: Fri, 7 Apr 2023 17:18:18 -0400 Subject: Reorder days into src --- src/16/input | 4148 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/16/part1 | 136 ++ src/16/part2 | 32 + src/16/solve.py | 109 ++ 4 files changed, 4425 insertions(+) create mode 100644 src/16/input create mode 100644 src/16/part1 create mode 100644 src/16/part2 create mode 100644 src/16/solve.py (limited to 'src/16') diff --git a/src/16/input b/src/16/input new file mode 100644 index 0000000..71f3ecd --- /dev/null +++ b/src/16/input @@ -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/part1 b/src/16/part1 new file mode 100644 index 0000000..d0582fd --- /dev/null +++ b/src/16/part1 @@ -0,0 +1,136 @@ +--- Day 16: Chronal Classification --- + +As you see the Elves defend their hot chocolate successfully, you go back to falling through time. +This is going to become a problem. + +If you're ever going to return to your own time, you need to understand how this device on your +wrist works. You have a little while before you reach your next destination, and with a bit of trial +and error, you manage to pull up a programming manual on the device's tiny screen. + +According to the manual, the device has four registers (numbered 0 through 3) that can be +manipulated by instructions containing one of 16 opcodes. The registers start with the value 0. + +Every instruction consists of four values: an opcode, two inputs (named A and B), and an +output (named C), in that order. The opcode specifies the behavior of the instruction and how the +inputs are interpreted. The output, C, is always treated as a register. + +In the opcode descriptions below, if something says "value A", it means to take the number given as +A literally. (This is also called an "immediate" value.) If something says "register A", it means to +use the number given as A to read from (or write to) the register with that number. So, if the +opcode addi adds register A and value B, storing the result in register C, and the instruction addi +0 7 3 is encountered, it would add 7 to the value contained by register 0 and store the sum in +register 3, never modifying registers 0, 1, or 2 in the process. + +Many opcodes are similar except for how they interpret their arguments. The opcodes fall into seven +general categories: + +Addition: + + + - addr (add register) stores into register C the result of adding register A and register B. + + - addi (add immediate) stores into register C the result of adding register A and value B. + + +Multiplication: + + + - mulr (multiply register) stores into register C the result of multiplying register A and register +B. + + - muli (multiply immediate) stores into register C the result of multiplying register A and value +B. + + +Bitwise AND: + + + - banr (bitwise AND register) stores into register C the result of the bitwise AND of register A +and register B. + + - bani (bitwise AND immediate) stores into register C the result of the bitwise AND of register A +and value B. + + +Bitwise OR: + + + - borr (bitwise OR register) stores into register C the result of the bitwise OR of register A and +register B. + + - bori (bitwise OR immediate) stores into register C the result of the bitwise OR of register A and +value B. + + +Assignment: + + + - setr (set register) copies the contents of register A into register C. (Input B is ignored.) + + - seti (set immediate) stores value A into register C. (Input B is ignored.) + + +Greater-than testing: + + + - gtir (greater-than immediate/register) sets register C to 1 if value A is greater than register +B. Otherwise, register C is set to 0. + + - gtri (greater-than register/immediate) sets register C to 1 if register A is greater than value +B. Otherwise, register C is set to 0. + + - gtrr (greater-than register/register) sets register C to 1 if register A is greater than register +B. Otherwise, register C is set to 0. + + +Equality testing: + + + - eqir (equal immediate/register) sets register C to 1 if value A is equal to register B. +Otherwise, register C is set to 0. + + - eqri (equal register/immediate) sets register C to 1 if register A is equal to value B. +Otherwise, register C is set to 0. + + - eqrr (equal register/register) sets register C to 1 if register A is equal to register B. +Otherwise, register C is set to 0. + + +Unfortunately, while the manual gives the name of each opcode, it doesn't seem to indicate the +number. However, you can monitor the CPU to see the contents of the registers before and after +instructions are executed to try to work them out. Each opcode has a number from 0 through 15, but +the manual doesn't say which is which. For example, suppose you capture the following sample: + +Before: [3, 2, 1, 1] +9 2 1 2 +After: [3, 2, 2, 1] + +This sample shows the effect of the instruction 9 2 1 2 on the registers. Before the instruction is +executed, register 0 has value 3, register 1 has value 2, and registers 2 and 3 have value 1. After +the instruction is executed, register 2's value becomes 2. + +The instruction itself, 9 2 1 2, means that opcode 9 was executed with A=2, B=1, and C=2. Opcode 9 +could be any of the 16 opcodes listed above, but only three of them behave in a way that would cause +the result shown in the sample: + + + - Opcode 9 could be mulr: register 2 (which has a value of 1) times register 1 (which has a value +of 2) produces 2, which matches the value stored in the output register, register 2. + + - Opcode 9 could be addi: register 2 (which has a value of 1) plus value 1 produces 2, which +matches the value stored in the output register, register 2. + + - Opcode 9 could be seti: value 2 matches the value stored in the output register, register 2; the +number given for B is irrelevant. + + +None of the other opcodes produce the result captured in the sample. Because of this, the sample +above behaves like three opcodes. + +You collect many of these samples (the first section of your puzzle input). The manual also includes +a small test program (the second section of your puzzle input) - you can ignore it for now. + +Ignoring the opcode numbers, how many samples in your puzzle input behave like three or more +opcodes? + + diff --git a/src/16/part2 b/src/16/part2 new file mode 100644 index 0000000..609807e --- /dev/null +++ b/src/16/part2 @@ -0,0 +1,32 @@ +--- Part Two --- + +Now that your FFT is working, you can decode the real signal. + +The real signal is your puzzle input repeated 10000 times. Treat this new signal as a single input +list. Patterns are still calculated as before, and 100 phases of FFT are still applied. + +The first seven digits of your initial input signal also represent the message offset. The message +offset is the location of the eight-digit message in the final output list. Specifically, the +message offset indicates the number of digits to skip before reading the eight-digit message. For +example, if the first seven digits of your initial input signal were 1234567, the eight-digit +message would be the eight digits after skipping 1,234,567 digits of the final output list. Or, if +the message offset were 7 and your final output list were 98765432109876543210, the eight-digit +message would be 21098765. (Of course, your real message offset will be a seven-digit number, not a +one-digit number like 7.) + +Here is the eight-digit message in the final output list after 100 phases. The message offset given +in each input has been highlighted. (Note that the inputs given below are repeated 10000 times to +find the actual starting input lists.) + + + - 03036732577212944063491565474664 becomes 84462026. + + - 02935109699940807407585447034323 becomes 78725270. + + - 03081770884921959731165446850517 becomes 53553731. + + +After repeating your input signal 10000 times and running 100 phases of FFT, what is the eight-digit +message embedded in the final output list? + + diff --git a/src/16/solve.py b/src/16/solve.py new file mode 100644 index 0000000..f9a11b6 --- /dev/null +++ b/src/16/solve.py @@ -0,0 +1,109 @@ +import sys +sys.path.append("../common") +import aoc + +def parse_log(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) + +inslog = [] +data = aoc.data.split("\n") +progsec = None +for i in range(0, len(data), 4): + if data[i] == "\n": + progsec = i + break + inslog.append(parse_log(data[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 get_possible(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(args): + global register + uncertain = 0 + for ins in inslog: + if len(get_possible(ins)) >= 3: + uncertain += 1 + return uncertain + +def solve2(args): + possible = dict() + for ins in inslog: + o = ins[1][0] + if o in possible: + possible[o] = [op for op in get_possible(ins) if op in possible[o]] + else: + possible[o] = get_possible(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(data)): # execute program + l = data[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]) + + return register[0] + +aoc.run(solve1, solve2, sols=[531, 649]) -- cgit v1.2.3-71-gd317