From 4fa6998369165c76013f53f30ec32b31245d3d53 Mon Sep 17 00:00:00 2001 From: Bert Peters Date: Sun, 16 Dec 2018 11:12:32 +0100 Subject: [PATCH] Implement day 16 part 1. --- 2018/inputs/16.txt | 4174 ++++++++++++++++++++++++++++++++++++++++++++ 2018/src/day16.rs | 161 +- 2 files changed, 4330 insertions(+), 5 deletions(-) create mode 100644 2018/inputs/16.txt diff --git a/2018/inputs/16.txt b/2018/inputs/16.txt new file mode 100644 index 0000000..218b7d3 --- /dev/null +++ b/2018/inputs/16.txt @@ -0,0 +1,4174 @@ +Before: [0, 3, 3, 0] +5 0 2 1 +After: [0, 0, 3, 0] + +Before: [0, 2, 3, 2] +3 3 2 3 +After: [0, 2, 3, 4] + +Before: [2, 1, 0, 0] +10 1 2 3 +After: [2, 1, 0, 2] + +Before: [0, 2, 3, 3] +14 2 2 3 +After: [0, 2, 3, 2] + +Before: [3, 2, 2, 2] +10 0 3 1 +After: [3, 9, 2, 2] + +Before: [2, 2, 1, 0] +10 0 3 2 +After: [2, 2, 6, 0] + +Before: [1, 1, 2, 0] +7 0 2 2 +After: [1, 1, 2, 0] + +Before: [2, 1, 0, 1] +9 2 1 3 +After: [2, 1, 0, 1] + +Before: [1, 2, 0, 0] +0 0 1 1 +After: [1, 3, 0, 0] + +Before: [2, 2, 1, 0] +3 0 2 3 +After: [2, 2, 1, 4] + +Before: [2, 0, 0, 1] +3 0 2 3 +After: [2, 0, 0, 4] + +Before: [1, 1, 0, 2] +9 2 1 1 +After: [1, 1, 0, 2] + +Before: [2, 1, 3, 3] +15 1 3 0 +After: [3, 1, 3, 3] + +Before: [1, 3, 2, 1] +4 0 1 1 +After: [1, 1, 2, 1] + +Before: [0, 1, 3, 0] +14 2 2 0 +After: [2, 1, 3, 0] + +Before: [1, 2, 3, 2] +3 3 2 0 +After: [4, 2, 3, 2] + +Before: [0, 1, 3, 2] +5 0 2 3 +After: [0, 1, 3, 0] + +Before: [0, 1, 3, 0] +15 0 1 0 +After: [1, 1, 3, 0] + +Before: [0, 0, 2, 1] +12 3 2 2 +After: [0, 0, 3, 1] + +Before: [1, 1, 1, 2] +2 2 1 2 +After: [1, 1, 1, 2] + +Before: [0, 3, 1, 2] +3 3 2 0 +After: [4, 3, 1, 2] + +Before: [0, 3, 1, 3] +4 2 1 3 +After: [0, 3, 1, 1] + +Before: [2, 2, 1, 2] +10 3 3 1 +After: [2, 6, 1, 2] + +Before: [1, 1, 3, 1] +12 3 2 2 +After: [1, 1, 3, 1] + +Before: [3, 3, 2, 1] +12 3 2 1 +After: [3, 3, 2, 1] + +Before: [0, 2, 2, 0] +5 0 1 1 +After: [0, 0, 2, 0] + +Before: [0, 1, 3, 2] +7 2 3 0 +After: [6, 1, 3, 2] + +Before: [1, 0, 3, 2] +10 2 3 1 +After: [1, 9, 3, 2] + +Before: [3, 0, 1, 0] +0 2 0 2 +After: [3, 0, 3, 0] + +Before: [0, 1, 3, 2] +12 3 1 0 +After: [3, 1, 3, 2] + +Before: [0, 3, 3, 1] +0 0 1 1 +After: [0, 3, 3, 1] + +Before: [3, 0, 1, 2] +0 1 3 0 +After: [2, 0, 1, 2] + +Before: [1, 0, 3, 2] +11 2 3 3 +After: [1, 0, 3, 2] + +Before: [2, 0, 2, 3] +1 0 2 2 +After: [2, 0, 4, 3] + +Before: [1, 2, 1, 0] +7 0 1 1 +After: [1, 2, 1, 0] + +Before: [1, 2, 3, 1] +7 3 1 0 +After: [2, 2, 3, 1] + +Before: [1, 2, 3, 1] +14 2 2 1 +After: [1, 2, 3, 1] + +Before: [0, 1, 0, 2] +9 2 1 2 +After: [0, 1, 1, 2] + +Before: [2, 0, 2, 0] +1 0 2 1 +After: [2, 4, 2, 0] + +Before: [1, 2, 1, 1] +0 1 2 2 +After: [1, 2, 3, 1] + +Before: [1, 2, 2, 3] +7 2 3 0 +After: [6, 2, 2, 3] + +Before: [2, 0, 3, 3] +7 2 3 0 +After: [9, 0, 3, 3] + +Before: [2, 3, 3, 1] +14 2 2 3 +After: [2, 3, 3, 2] + +Before: [0, 2, 2, 2] +1 3 2 1 +After: [0, 4, 2, 2] + +Before: [2, 3, 2, 1] +8 2 2 3 +After: [2, 3, 2, 2] + +Before: [0, 2, 0, 0] +13 0 0 0 +After: [0, 2, 0, 0] + +Before: [1, 1, 2, 1] +6 3 0 3 +After: [1, 1, 2, 1] + +Before: [2, 1, 3, 3] +14 2 2 2 +After: [2, 1, 2, 3] + +Before: [3, 2, 2, 0] +15 3 2 1 +After: [3, 2, 2, 0] + +Before: [2, 3, 1, 0] +4 2 1 3 +After: [2, 3, 1, 1] + +Before: [3, 1, 1, 0] +2 2 1 1 +After: [3, 1, 1, 0] + +Before: [0, 3, 3, 3] +8 3 1 0 +After: [3, 3, 3, 3] + +Before: [0, 1, 0, 2] +9 2 1 1 +After: [0, 1, 0, 2] + +Before: [1, 1, 0, 0] +9 2 1 2 +After: [1, 1, 1, 0] + +Before: [0, 0, 1, 1] +13 0 0 0 +After: [0, 0, 1, 1] + +Before: [0, 2, 1, 1] +13 0 0 0 +After: [0, 2, 1, 1] + +Before: [3, 1, 2, 1] +12 3 2 2 +After: [3, 1, 3, 1] + +Before: [2, 2, 1, 2] +3 1 2 2 +After: [2, 2, 4, 2] + +Before: [2, 2, 3, 1] +11 2 0 3 +After: [2, 2, 3, 2] + +Before: [1, 0, 3, 2] +7 2 3 3 +After: [1, 0, 3, 6] + +Before: [2, 2, 3, 2] +11 2 0 2 +After: [2, 2, 2, 2] + +Before: [2, 1, 0, 1] +2 3 1 2 +After: [2, 1, 1, 1] + +Before: [1, 1, 2, 2] +15 0 3 2 +After: [1, 1, 3, 2] + +Before: [2, 2, 0, 3] +3 0 2 1 +After: [2, 4, 0, 3] + +Before: [3, 3, 1, 2] +10 0 3 3 +After: [3, 3, 1, 9] + +Before: [2, 1, 1, 1] +2 2 1 1 +After: [2, 1, 1, 1] + +Before: [0, 3, 1, 0] +13 0 0 3 +After: [0, 3, 1, 0] + +Before: [3, 3, 3, 0] +10 2 3 1 +After: [3, 9, 3, 0] + +Before: [0, 1, 2, 0] +5 0 2 2 +After: [0, 1, 0, 0] + +Before: [2, 1, 0, 2] +12 3 1 1 +After: [2, 3, 0, 2] + +Before: [3, 2, 2, 2] +1 2 2 0 +After: [4, 2, 2, 2] + +Before: [1, 1, 1, 0] +9 3 1 1 +After: [1, 1, 1, 0] + +Before: [0, 1, 3, 2] +12 3 1 2 +After: [0, 1, 3, 2] + +Before: [1, 3, 1, 1] +6 2 0 2 +After: [1, 3, 1, 1] + +Before: [0, 0, 3, 3] +8 3 0 2 +After: [0, 0, 3, 3] + +Before: [2, 1, 2, 3] +1 0 2 1 +After: [2, 4, 2, 3] + +Before: [1, 3, 1, 1] +4 2 1 3 +After: [1, 3, 1, 1] + +Before: [1, 1, 3, 1] +12 3 2 0 +After: [3, 1, 3, 1] + +Before: [0, 2, 2, 3] +14 3 2 0 +After: [2, 2, 2, 3] + +Before: [1, 3, 2, 1] +10 1 3 0 +After: [9, 3, 2, 1] + +Before: [3, 2, 2, 3] +14 3 2 2 +After: [3, 2, 2, 3] + +Before: [0, 0, 3, 3] +8 3 1 2 +After: [0, 0, 3, 3] + +Before: [1, 2, 3, 3] +14 2 2 1 +After: [1, 2, 3, 3] + +Before: [2, 0, 1, 2] +3 0 2 2 +After: [2, 0, 4, 2] + +Before: [1, 3, 2, 2] +1 3 2 1 +After: [1, 4, 2, 2] + +Before: [1, 2, 3, 1] +12 3 2 1 +After: [1, 3, 3, 1] + +Before: [1, 3, 1, 3] +6 2 0 3 +After: [1, 3, 1, 1] + +Before: [0, 2, 1, 2] +0 0 1 2 +After: [0, 2, 2, 2] + +Before: [0, 0, 3, 1] +12 3 2 2 +After: [0, 0, 3, 1] + +Before: [3, 3, 0, 0] +10 0 3 2 +After: [3, 3, 9, 0] + +Before: [2, 2, 2, 2] +1 3 2 3 +After: [2, 2, 2, 4] + +Before: [3, 0, 2, 3] +7 0 2 3 +After: [3, 0, 2, 6] + +Before: [0, 2, 1, 0] +13 0 0 2 +After: [0, 2, 0, 0] + +Before: [1, 3, 1, 3] +15 0 3 2 +After: [1, 3, 3, 3] + +Before: [3, 0, 2, 1] +1 2 2 1 +After: [3, 4, 2, 1] + +Before: [2, 1, 0, 1] +9 2 1 2 +After: [2, 1, 1, 1] + +Before: [1, 0, 0, 1] +6 3 0 0 +After: [1, 0, 0, 1] + +Before: [0, 3, 1, 1] +10 1 3 2 +After: [0, 3, 9, 1] + +Before: [3, 2, 2, 0] +0 3 1 0 +After: [2, 2, 2, 0] + +Before: [3, 1, 0, 0] +9 2 1 1 +After: [3, 1, 0, 0] + +Before: [0, 3, 0, 3] +13 0 0 3 +After: [0, 3, 0, 0] + +Before: [1, 1, 0, 0] +9 2 1 3 +After: [1, 1, 0, 1] + +Before: [0, 0, 1, 3] +15 0 3 2 +After: [0, 0, 3, 3] + +Before: [0, 3, 2, 2] +14 1 2 0 +After: [2, 3, 2, 2] + +Before: [0, 3, 3, 0] +10 2 3 0 +After: [9, 3, 3, 0] + +Before: [0, 3, 3, 3] +0 0 1 1 +After: [0, 3, 3, 3] + +Before: [0, 2, 3, 0] +11 2 1 1 +After: [0, 2, 3, 0] + +Before: [0, 1, 3, 2] +7 2 3 2 +After: [0, 1, 6, 2] + +Before: [1, 3, 1, 2] +4 2 1 1 +After: [1, 1, 1, 2] + +Before: [1, 3, 1, 1] +6 3 0 2 +After: [1, 3, 1, 1] + +Before: [0, 1, 1, 3] +2 2 1 0 +After: [1, 1, 1, 3] + +Before: [2, 1, 1, 1] +2 3 1 1 +After: [2, 1, 1, 1] + +Before: [2, 3, 2, 1] +14 1 2 1 +After: [2, 2, 2, 1] + +Before: [1, 1, 1, 1] +2 2 1 1 +After: [1, 1, 1, 1] + +Before: [1, 1, 0, 1] +9 2 1 3 +After: [1, 1, 0, 1] + +Before: [1, 2, 3, 3] +7 0 1 0 +After: [2, 2, 3, 3] + +Before: [3, 1, 1, 2] +15 1 3 2 +After: [3, 1, 3, 2] + +Before: [0, 3, 1, 1] +0 0 2 0 +After: [1, 3, 1, 1] + +Before: [3, 2, 0, 0] +5 2 0 1 +After: [3, 0, 0, 0] + +Before: [1, 0, 1, 1] +6 2 0 1 +After: [1, 1, 1, 1] + +Before: [3, 1, 0, 3] +9 2 1 0 +After: [1, 1, 0, 3] + +Before: [2, 0, 2, 2] +1 3 2 0 +After: [4, 0, 2, 2] + +Before: [3, 0, 2, 2] +1 3 2 3 +After: [3, 0, 2, 4] + +Before: [3, 3, 1, 2] +4 2 1 2 +After: [3, 3, 1, 2] + +Before: [2, 3, 3, 1] +14 2 2 2 +After: [2, 3, 2, 1] + +Before: [0, 3, 1, 0] +13 0 0 2 +After: [0, 3, 0, 0] + +Before: [0, 3, 3, 2] +10 2 3 3 +After: [0, 3, 3, 9] + +Before: [0, 3, 3, 2] +10 3 3 2 +After: [0, 3, 6, 2] + +Before: [0, 0, 1, 0] +5 1 0 0 +After: [0, 0, 1, 0] + +Before: [2, 3, 1, 2] +3 0 2 3 +After: [2, 3, 1, 4] + +Before: [2, 1, 2, 0] +1 0 2 0 +After: [4, 1, 2, 0] + +Before: [1, 2, 0, 3] +3 1 2 2 +After: [1, 2, 4, 3] + +Before: [1, 1, 2, 1] +2 3 1 3 +After: [1, 1, 2, 1] + +Before: [2, 1, 0, 1] +9 2 1 0 +After: [1, 1, 0, 1] + +Before: [1, 2, 3, 1] +4 3 1 1 +After: [1, 1, 3, 1] + +Before: [0, 0, 2, 3] +15 1 2 3 +After: [0, 0, 2, 2] + +Before: [3, 3, 1, 1] +10 1 3 1 +After: [3, 9, 1, 1] + +Before: [3, 1, 0, 2] +9 2 1 2 +After: [3, 1, 1, 2] + +Before: [0, 1, 2, 1] +15 2 1 1 +After: [0, 3, 2, 1] + +Before: [1, 0, 3, 0] +10 0 2 2 +After: [1, 0, 2, 0] + +Before: [1, 2, 3, 1] +12 3 2 3 +After: [1, 2, 3, 3] + +Before: [0, 1, 3, 0] +13 0 0 2 +After: [0, 1, 0, 0] + +Before: [1, 2, 1, 3] +6 2 0 3 +After: [1, 2, 1, 1] + +Before: [0, 0, 2, 1] +5 0 3 2 +After: [0, 0, 0, 1] + +Before: [3, 1, 3, 1] +2 3 1 1 +After: [3, 1, 3, 1] + +Before: [2, 0, 2, 2] +1 3 2 1 +After: [2, 4, 2, 2] + +Before: [1, 1, 0, 2] +9 2 1 0 +After: [1, 1, 0, 2] + +Before: [1, 3, 3, 2] +4 0 1 1 +After: [1, 1, 3, 2] + +Before: [1, 1, 3, 0] +9 3 1 2 +After: [1, 1, 1, 0] + +Before: [0, 1, 1, 2] +12 3 1 1 +After: [0, 3, 1, 2] + +Before: [3, 1, 2, 3] +14 3 2 2 +After: [3, 1, 2, 3] + +Before: [1, 2, 3, 3] +7 3 3 0 +After: [9, 2, 3, 3] + +Before: [0, 0, 2, 1] +8 2 2 2 +After: [0, 0, 2, 1] + +Before: [1, 3, 0, 1] +4 0 1 3 +After: [1, 3, 0, 1] + +Before: [1, 1, 2, 1] +6 3 0 1 +After: [1, 1, 2, 1] + +Before: [2, 2, 3, 2] +14 2 2 0 +After: [2, 2, 3, 2] + +Before: [2, 3, 0, 3] +3 0 2 0 +After: [4, 3, 0, 3] + +Before: [2, 0, 3, 2] +5 1 0 2 +After: [2, 0, 0, 2] + +Before: [3, 2, 2, 3] +7 0 3 1 +After: [3, 9, 2, 3] + +Before: [0, 0, 1, 0] +0 0 2 2 +After: [0, 0, 1, 0] + +Before: [2, 3, 1, 3] +7 1 3 1 +After: [2, 9, 1, 3] + +Before: [2, 1, 1, 0] +9 3 1 0 +After: [1, 1, 1, 0] + +Before: [2, 0, 3, 1] +11 2 0 1 +After: [2, 2, 3, 1] + +Before: [0, 2, 1, 1] +5 0 1 0 +After: [0, 2, 1, 1] + +Before: [3, 1, 1, 2] +12 3 1 0 +After: [3, 1, 1, 2] + +Before: [1, 3, 3, 2] +7 2 3 0 +After: [6, 3, 3, 2] + +Before: [2, 1, 0, 2] +3 0 2 3 +After: [2, 1, 0, 4] + +Before: [2, 3, 2, 2] +8 2 2 2 +After: [2, 3, 2, 2] + +Before: [0, 3, 1, 3] +7 3 3 3 +After: [0, 3, 1, 9] + +Before: [2, 2, 3, 1] +11 2 0 2 +After: [2, 2, 2, 1] + +Before: [0, 2, 1, 0] +5 0 1 2 +After: [0, 2, 0, 0] + +Before: [2, 0, 2, 1] +10 0 3 1 +After: [2, 6, 2, 1] + +Before: [1, 3, 2, 0] +14 1 2 0 +After: [2, 3, 2, 0] + +Before: [1, 3, 3, 0] +4 0 1 0 +After: [1, 3, 3, 0] + +Before: [1, 3, 2, 2] +10 3 3 3 +After: [1, 3, 2, 6] + +Before: [1, 1, 2, 0] +7 1 2 0 +After: [2, 1, 2, 0] + +Before: [1, 2, 0, 1] +6 3 0 1 +After: [1, 1, 0, 1] + +Before: [0, 2, 3, 1] +11 2 1 0 +After: [2, 2, 3, 1] + +Before: [0, 3, 1, 2] +3 3 2 1 +After: [0, 4, 1, 2] + +Before: [2, 3, 1, 1] +10 1 3 2 +After: [2, 3, 9, 1] + +Before: [1, 2, 1, 3] +15 2 3 1 +After: [1, 3, 1, 3] + +Before: [1, 1, 3, 2] +14 2 2 3 +After: [1, 1, 3, 2] + +Before: [2, 1, 0, 0] +9 3 1 0 +After: [1, 1, 0, 0] + +Before: [1, 3, 1, 0] +4 0 1 1 +After: [1, 1, 1, 0] + +Before: [3, 1, 1, 1] +10 0 3 2 +After: [3, 1, 9, 1] + +Before: [1, 2, 3, 0] +10 1 3 1 +After: [1, 6, 3, 0] + +Before: [3, 2, 3, 0] +0 3 1 2 +After: [3, 2, 2, 0] + +Before: [0, 2, 2, 2] +8 2 0 3 +After: [0, 2, 2, 2] + +Before: [2, 1, 2, 2] +15 1 3 1 +After: [2, 3, 2, 2] + +Before: [0, 1, 2, 1] +2 3 1 0 +After: [1, 1, 2, 1] + +Before: [3, 2, 1, 2] +10 0 3 0 +After: [9, 2, 1, 2] + +Before: [2, 0, 0, 0] +3 0 2 0 +After: [4, 0, 0, 0] + +Before: [1, 1, 0, 2] +12 3 1 0 +After: [3, 1, 0, 2] + +Before: [3, 1, 3, 3] +7 3 3 1 +After: [3, 9, 3, 3] + +Before: [2, 2, 2, 3] +8 2 0 1 +After: [2, 2, 2, 3] + +Before: [0, 1, 2, 3] +14 3 2 2 +After: [0, 1, 2, 3] + +Before: [1, 3, 1, 3] +4 2 1 0 +After: [1, 3, 1, 3] + +Before: [2, 3, 1, 3] +3 0 2 3 +After: [2, 3, 1, 4] + +Before: [2, 1, 2, 2] +1 0 2 0 +After: [4, 1, 2, 2] + +Before: [1, 1, 1, 3] +2 2 1 1 +After: [1, 1, 1, 3] + +Before: [1, 3, 2, 1] +4 0 1 2 +After: [1, 3, 1, 1] + +Before: [0, 2, 1, 0] +5 0 2 2 +After: [0, 2, 0, 0] + +Before: [3, 0, 3, 3] +8 3 0 0 +After: [3, 0, 3, 3] + +Before: [1, 2, 2, 2] +7 0 2 1 +After: [1, 2, 2, 2] + +Before: [0, 3, 2, 0] +5 0 1 1 +After: [0, 0, 2, 0] + +Before: [3, 2, 3, 1] +12 3 2 3 +After: [3, 2, 3, 3] + +Before: [1, 2, 3, 2] +3 3 2 1 +After: [1, 4, 3, 2] + +Before: [1, 3, 2, 2] +7 0 2 0 +After: [2, 3, 2, 2] + +Before: [3, 0, 2, 3] +15 1 3 1 +After: [3, 3, 2, 3] + +Before: [2, 2, 3, 1] +4 3 1 2 +After: [2, 2, 1, 1] + +Before: [2, 2, 0, 1] +3 1 2 1 +After: [2, 4, 0, 1] + +Before: [0, 0, 2, 3] +14 3 2 1 +After: [0, 2, 2, 3] + +Before: [1, 0, 2, 1] +6 3 0 2 +After: [1, 0, 1, 1] + +Before: [1, 3, 2, 3] +4 0 1 2 +After: [1, 3, 1, 3] + +Before: [0, 3, 1, 2] +5 0 3 1 +After: [0, 0, 1, 2] + +Before: [0, 2, 3, 2] +0 0 2 0 +After: [3, 2, 3, 2] + +Before: [0, 1, 0, 0] +9 3 1 0 +After: [1, 1, 0, 0] + +Before: [3, 2, 3, 2] +14 2 2 1 +After: [3, 2, 3, 2] + +Before: [0, 3, 2, 0] +5 0 1 3 +After: [0, 3, 2, 0] + +Before: [3, 2, 3, 1] +14 2 2 0 +After: [2, 2, 3, 1] + +Before: [3, 1, 1, 3] +8 3 1 0 +After: [3, 1, 1, 3] + +Before: [0, 3, 0, 1] +13 0 0 1 +After: [0, 0, 0, 1] + +Before: [2, 2, 0, 0] +3 1 2 3 +After: [2, 2, 0, 4] + +Before: [1, 0, 2, 1] +6 3 0 0 +After: [1, 0, 2, 1] + +Before: [1, 3, 0, 2] +4 0 1 3 +After: [1, 3, 0, 1] + +Before: [1, 3, 2, 2] +0 0 1 3 +After: [1, 3, 2, 3] + +Before: [0, 2, 2, 0] +1 2 2 2 +After: [0, 2, 4, 0] + +Before: [0, 3, 1, 2] +0 2 1 2 +After: [0, 3, 3, 2] + +Before: [0, 2, 0, 2] +0 0 1 0 +After: [2, 2, 0, 2] + +Before: [0, 1, 1, 1] +13 0 0 3 +After: [0, 1, 1, 0] + +Before: [2, 1, 3, 0] +9 3 1 2 +After: [2, 1, 1, 0] + +Before: [1, 2, 0, 3] +7 1 3 2 +After: [1, 2, 6, 3] + +Before: [0, 0, 3, 3] +0 1 2 2 +After: [0, 0, 3, 3] + +Before: [1, 2, 3, 2] +3 1 2 1 +After: [1, 4, 3, 2] + +Before: [0, 2, 0, 0] +3 1 2 0 +After: [4, 2, 0, 0] + +Before: [2, 2, 1, 3] +7 3 3 3 +After: [2, 2, 1, 9] + +Before: [3, 0, 0, 3] +10 3 2 2 +After: [3, 0, 6, 3] + +Before: [1, 1, 0, 0] +9 3 1 2 +After: [1, 1, 1, 0] + +Before: [2, 2, 0, 3] +3 0 2 3 +After: [2, 2, 0, 4] + +Before: [0, 1, 2, 3] +1 2 2 1 +After: [0, 4, 2, 3] + +Before: [1, 0, 1, 0] +6 2 0 3 +After: [1, 0, 1, 1] + +Before: [1, 2, 0, 3] +0 1 0 0 +After: [3, 2, 0, 3] + +Before: [0, 1, 3, 0] +9 3 1 3 +After: [0, 1, 3, 1] + +Before: [0, 1, 0, 3] +9 2 1 1 +After: [0, 1, 0, 3] + +Before: [1, 3, 2, 0] +4 0 1 3 +After: [1, 3, 2, 1] + +Before: [2, 0, 3, 3] +3 0 2 1 +After: [2, 4, 3, 3] + +Before: [2, 2, 3, 1] +11 2 1 3 +After: [2, 2, 3, 2] + +Before: [3, 2, 0, 2] +3 1 2 1 +After: [3, 4, 0, 2] + +Before: [0, 1, 0, 1] +13 0 0 3 +After: [0, 1, 0, 0] + +Before: [1, 3, 2, 3] +7 3 3 0 +After: [9, 3, 2, 3] + +Before: [0, 2, 2, 1] +4 3 1 2 +After: [0, 2, 1, 1] + +Before: [0, 3, 1, 3] +13 0 0 2 +After: [0, 3, 0, 3] + +Before: [0, 2, 1, 1] +0 2 1 3 +After: [0, 2, 1, 3] + +Before: [3, 1, 0, 3] +10 3 2 3 +After: [3, 1, 0, 6] + +Before: [2, 2, 1, 1] +7 3 1 2 +After: [2, 2, 2, 1] + +Before: [0, 1, 0, 2] +15 1 3 1 +After: [0, 3, 0, 2] + +Before: [2, 3, 3, 2] +7 2 3 0 +After: [6, 3, 3, 2] + +Before: [2, 1, 3, 1] +2 3 1 1 +After: [2, 1, 3, 1] + +Before: [1, 1, 2, 3] +15 1 2 0 +After: [3, 1, 2, 3] + +Before: [3, 2, 3, 0] +14 2 2 2 +After: [3, 2, 2, 0] + +Before: [0, 3, 0, 2] +0 0 1 1 +After: [0, 3, 0, 2] + +Before: [0, 3, 3, 1] +13 0 0 1 +After: [0, 0, 3, 1] + +Before: [1, 1, 0, 1] +9 2 1 2 +After: [1, 1, 1, 1] + +Before: [1, 3, 2, 1] +10 2 3 2 +After: [1, 3, 6, 1] + +Before: [2, 1, 1, 1] +2 3 1 2 +After: [2, 1, 1, 1] + +Before: [0, 0, 0, 1] +5 2 0 0 +After: [0, 0, 0, 1] + +Before: [0, 1, 2, 3] +5 0 2 2 +After: [0, 1, 0, 3] + +Before: [2, 3, 3, 0] +11 2 0 3 +After: [2, 3, 3, 2] + +Before: [2, 1, 3, 3] +7 0 3 0 +After: [6, 1, 3, 3] + +Before: [3, 2, 1, 0] +0 2 0 1 +After: [3, 3, 1, 0] + +Before: [3, 1, 1, 2] +2 2 1 2 +After: [3, 1, 1, 2] + +Before: [1, 1, 2, 0] +1 2 2 2 +After: [1, 1, 4, 0] + +Before: [2, 2, 0, 3] +7 1 3 0 +After: [6, 2, 0, 3] + +Before: [3, 1, 0, 0] +9 3 1 3 +After: [3, 1, 0, 1] + +Before: [3, 0, 0, 3] +0 1 0 2 +After: [3, 0, 3, 3] + +Before: [3, 1, 3, 0] +9 3 1 2 +After: [3, 1, 1, 0] + +Before: [0, 1, 3, 0] +5 0 1 1 +After: [0, 0, 3, 0] + +Before: [2, 2, 0, 1] +4 3 1 0 +After: [1, 2, 0, 1] + +Before: [0, 0, 2, 2] +1 2 2 1 +After: [0, 4, 2, 2] + +Before: [0, 1, 3, 2] +14 2 2 3 +After: [0, 1, 3, 2] + +Before: [1, 3, 1, 0] +4 2 1 1 +After: [1, 1, 1, 0] + +Before: [2, 3, 1, 2] +15 2 3 0 +After: [3, 3, 1, 2] + +Before: [1, 1, 0, 2] +12 3 1 2 +After: [1, 1, 3, 2] + +Before: [1, 1, 3, 1] +10 0 2 2 +After: [1, 1, 2, 1] + +Before: [2, 0, 1, 0] +0 0 2 1 +After: [2, 3, 1, 0] + +Before: [0, 1, 1, 2] +12 3 1 3 +After: [0, 1, 1, 3] + +Before: [3, 1, 0, 0] +9 3 1 2 +After: [3, 1, 1, 0] + +Before: [3, 3, 0, 3] +7 0 3 0 +After: [9, 3, 0, 3] + +Before: [3, 0, 2, 2] +5 1 0 2 +After: [3, 0, 0, 2] + +Before: [0, 3, 0, 3] +0 2 1 2 +After: [0, 3, 3, 3] + +Before: [2, 1, 1, 0] +0 2 0 0 +After: [3, 1, 1, 0] + +Before: [0, 0, 2, 1] +13 0 0 1 +After: [0, 0, 2, 1] + +Before: [1, 3, 2, 1] +6 3 0 3 +After: [1, 3, 2, 1] + +Before: [0, 3, 0, 2] +3 3 2 3 +After: [0, 3, 0, 4] + +Before: [0, 3, 3, 3] +13 0 0 0 +After: [0, 3, 3, 3] + +Before: [2, 0, 2, 2] +1 3 2 3 +After: [2, 0, 2, 4] + +Before: [1, 3, 0, 1] +6 3 0 3 +After: [1, 3, 0, 1] + +Before: [0, 2, 3, 1] +13 0 0 3 +After: [0, 2, 3, 0] + +Before: [1, 0, 0, 3] +8 3 3 1 +After: [1, 3, 0, 3] + +Before: [1, 1, 3, 1] +6 3 0 0 +After: [1, 1, 3, 1] + +Before: [1, 0, 2, 1] +6 3 0 1 +After: [1, 1, 2, 1] + +Before: [0, 1, 2, 3] +13 0 0 1 +After: [0, 0, 2, 3] + +Before: [2, 2, 3, 1] +11 2 1 0 +After: [2, 2, 3, 1] + +Before: [2, 0, 2, 1] +12 3 2 0 +After: [3, 0, 2, 1] + +Before: [0, 3, 3, 3] +14 2 2 3 +After: [0, 3, 3, 2] + +Before: [3, 2, 2, 1] +12 3 2 1 +After: [3, 3, 2, 1] + +Before: [3, 1, 0, 3] +15 2 3 2 +After: [3, 1, 3, 3] + +Before: [0, 3, 2, 2] +8 2 0 1 +After: [0, 2, 2, 2] + +Before: [2, 1, 0, 3] +0 1 0 0 +After: [3, 1, 0, 3] + +Before: [3, 1, 1, 3] +2 2 1 0 +After: [1, 1, 1, 3] + +Before: [1, 0, 2, 2] +1 2 2 0 +After: [4, 0, 2, 2] + +Before: [2, 3, 2, 3] +1 2 2 2 +After: [2, 3, 4, 3] + +Before: [1, 3, 2, 0] +14 1 2 1 +After: [1, 2, 2, 0] + +Before: [3, 1, 1, 1] +0 2 0 2 +After: [3, 1, 3, 1] + +Before: [1, 2, 3, 2] +11 2 3 3 +After: [1, 2, 3, 2] + +Before: [1, 3, 3, 3] +8 3 3 2 +After: [1, 3, 3, 3] + +Before: [0, 3, 3, 2] +13 0 0 0 +After: [0, 3, 3, 2] + +Before: [0, 3, 2, 0] +1 2 2 3 +After: [0, 3, 2, 4] + +Before: [3, 1, 2, 0] +10 2 3 3 +After: [3, 1, 2, 6] + +Before: [3, 1, 2, 0] +9 3 1 0 +After: [1, 1, 2, 0] + +Before: [3, 0, 2, 0] +5 1 0 2 +After: [3, 0, 0, 0] + +Before: [0, 2, 3, 3] +13 0 0 2 +After: [0, 2, 0, 3] + +Before: [2, 3, 1, 1] +0 0 2 3 +After: [2, 3, 1, 3] + +Before: [1, 2, 2, 1] +0 1 0 3 +After: [1, 2, 2, 3] + +Before: [1, 2, 2, 1] +4 3 1 1 +After: [1, 1, 2, 1] + +Before: [1, 1, 1, 0] +2 2 1 2 +After: [1, 1, 1, 0] + +Before: [1, 0, 1, 1] +6 2 0 0 +After: [1, 0, 1, 1] + +Before: [0, 0, 1, 1] +13 0 0 1 +After: [0, 0, 1, 1] + +Before: [3, 1, 2, 0] +9 3 1 3 +After: [3, 1, 2, 1] + +Before: [3, 3, 0, 3] +8 3 3 0 +After: [3, 3, 0, 3] + +Before: [3, 1, 0, 2] +5 2 0 1 +After: [3, 0, 0, 2] + +Before: [2, 1, 3, 2] +11 2 3 3 +After: [2, 1, 3, 2] + +Before: [1, 1, 1, 1] +6 3 0 2 +After: [1, 1, 1, 1] + +Before: [3, 1, 0, 0] +9 2 1 3 +After: [3, 1, 0, 1] + +Before: [0, 2, 0, 3] +8 3 0 1 +After: [0, 3, 0, 3] + +Before: [1, 2, 2, 3] +0 1 0 0 +After: [3, 2, 2, 3] + +Before: [1, 1, 3, 3] +15 1 2 1 +After: [1, 3, 3, 3] + +Before: [1, 2, 2, 3] +7 0 1 3 +After: [1, 2, 2, 2] + +Before: [3, 3, 3, 3] +14 2 2 1 +After: [3, 2, 3, 3] + +Before: [0, 1, 3, 3] +8 3 1 3 +After: [0, 1, 3, 3] + +Before: [2, 2, 3, 3] +11 2 1 3 +After: [2, 2, 3, 2] + +Before: [0, 0, 2, 1] +8 2 2 0 +After: [2, 0, 2, 1] + +Before: [1, 3, 3, 1] +12 3 2 1 +After: [1, 3, 3, 1] + +Before: [0, 3, 0, 2] +0 0 3 0 +After: [2, 3, 0, 2] + +Before: [1, 1, 3, 2] +3 3 2 2 +After: [1, 1, 4, 2] + +Before: [1, 2, 0, 0] +3 1 2 3 +After: [1, 2, 0, 4] + +Before: [2, 0, 2, 1] +0 1 0 0 +After: [2, 0, 2, 1] + +Before: [0, 3, 2, 3] +1 2 2 2 +After: [0, 3, 4, 3] + +Before: [2, 1, 2, 0] +7 1 2 2 +After: [2, 1, 2, 0] + +Before: [3, 2, 3, 1] +4 3 1 0 +After: [1, 2, 3, 1] + +Before: [2, 1, 3, 1] +12 3 2 0 +After: [3, 1, 3, 1] + +Before: [0, 1, 0, 2] +13 0 0 2 +After: [0, 1, 0, 2] + +Before: [2, 2, 0, 1] +3 1 2 2 +After: [2, 2, 4, 1] + +Before: [1, 2, 1, 3] +6 2 0 1 +After: [1, 1, 1, 3] + +Before: [3, 3, 1, 0] +10 1 3 2 +After: [3, 3, 9, 0] + +Before: [3, 1, 0, 1] +10 1 2 0 +After: [2, 1, 0, 1] + +Before: [1, 1, 0, 2] +9 2 1 3 +After: [1, 1, 0, 1] + +Before: [2, 3, 1, 1] +4 2 1 2 +After: [2, 3, 1, 1] + +Before: [0, 2, 2, 0] +1 1 2 2 +After: [0, 2, 4, 0] + +Before: [0, 1, 1, 1] +2 3 1 0 +After: [1, 1, 1, 1] + +Before: [1, 3, 2, 1] +14 1 2 1 +After: [1, 2, 2, 1] + +Before: [1, 2, 2, 1] +7 3 1 1 +After: [1, 2, 2, 1] + +Before: [2, 2, 3, 0] +3 1 2 1 +After: [2, 4, 3, 0] + +Before: [2, 2, 3, 3] +3 0 2 3 +After: [2, 2, 3, 4] + +Before: [3, 2, 0, 1] +4 3 1 3 +After: [3, 2, 0, 1] + +Before: [1, 2, 0, 2] +10 0 2 0 +After: [2, 2, 0, 2] + +Before: [1, 1, 2, 1] +6 3 0 2 +After: [1, 1, 1, 1] + +Before: [0, 3, 2, 3] +13 0 0 1 +After: [0, 0, 2, 3] + +Before: [3, 1, 2, 2] +14 0 2 3 +After: [3, 1, 2, 2] + +Before: [1, 2, 1, 0] +6 2 0 0 +After: [1, 2, 1, 0] + +Before: [3, 3, 3, 0] +14 2 2 1 +After: [3, 2, 3, 0] + +Before: [0, 1, 0, 3] +8 3 0 1 +After: [0, 3, 0, 3] + +Before: [1, 3, 2, 1] +14 1 2 0 +After: [2, 3, 2, 1] + +Before: [0, 1, 2, 1] +5 0 3 1 +After: [0, 0, 2, 1] + +Before: [3, 3, 3, 2] +10 0 3 2 +After: [3, 3, 9, 2] + +Before: [0, 3, 1, 1] +4 2 1 2 +After: [0, 3, 1, 1] + +Before: [3, 0, 0, 0] +5 1 0 0 +After: [0, 0, 0, 0] + +Before: [2, 0, 0, 3] +5 1 0 1 +After: [2, 0, 0, 3] + +Before: [1, 3, 2, 1] +1 2 2 0 +After: [4, 3, 2, 1] + +Before: [2, 3, 2, 3] +8 2 0 0 +After: [2, 3, 2, 3] + +Before: [1, 2, 1, 1] +6 2 0 2 +After: [1, 2, 1, 1] + +Before: [3, 1, 1, 1] +2 2 1 3 +After: [3, 1, 1, 1] + +Before: [3, 2, 2, 0] +1 1 2 2 +After: [3, 2, 4, 0] + +Before: [2, 0, 3, 3] +8 3 3 1 +After: [2, 3, 3, 3] + +Before: [1, 1, 3, 1] +6 3 0 1 +After: [1, 1, 3, 1] + +Before: [0, 0, 2, 3] +14 3 2 3 +After: [0, 0, 2, 2] + +Before: [1, 2, 1, 0] +6 2 0 2 +After: [1, 2, 1, 0] + +Before: [3, 0, 2, 1] +7 0 2 0 +After: [6, 0, 2, 1] + +Before: [0, 2, 3, 1] +11 2 1 2 +After: [0, 2, 2, 1] + +Before: [2, 0, 3, 3] +3 0 2 2 +After: [2, 0, 4, 3] + +Before: [0, 3, 3, 2] +14 2 2 3 +After: [0, 3, 3, 2] + +Before: [1, 3, 1, 3] +6 2 0 1 +After: [1, 1, 1, 3] + +Before: [1, 2, 3, 2] +11 2 3 0 +After: [2, 2, 3, 2] + +Before: [1, 1, 2, 2] +12 3 1 1 +After: [1, 3, 2, 2] + +Before: [3, 1, 3, 3] +14 2 2 0 +After: [2, 1, 3, 3] + +Before: [3, 2, 3, 1] +4 3 1 2 +After: [3, 2, 1, 1] + +Before: [0, 3, 2, 0] +8 2 0 2 +After: [0, 3, 2, 0] + +Before: [3, 0, 2, 0] +10 2 3 3 +After: [3, 0, 2, 6] + +Before: [1, 0, 3, 2] +14 2 2 0 +After: [2, 0, 3, 2] + +Before: [1, 1, 2, 2] +12 3 1 2 +After: [1, 1, 3, 2] + +Before: [0, 3, 2, 0] +5 0 1 2 +After: [0, 3, 0, 0] + +Before: [1, 1, 1, 2] +2 2 1 1 +After: [1, 1, 1, 2] + +Before: [0, 1, 0, 1] +9 2 1 2 +After: [0, 1, 1, 1] + +Before: [2, 3, 3, 3] +11 2 0 3 +After: [2, 3, 3, 2] + +Before: [0, 0, 1, 3] +15 2 3 1 +After: [0, 3, 1, 3] + +Before: [1, 2, 1, 1] +3 1 2 2 +After: [1, 2, 4, 1] + +Before: [2, 3, 0, 2] +3 3 2 0 +After: [4, 3, 0, 2] + +Before: [3, 1, 3, 2] +12 3 1 3 +After: [3, 1, 3, 3] + +Before: [3, 0, 1, 3] +15 2 3 3 +After: [3, 0, 1, 3] + +Before: [1, 1, 1, 0] +9 3 1 0 +After: [1, 1, 1, 0] + +Before: [2, 2, 3, 1] +10 2 3 2 +After: [2, 2, 9, 1] + +Before: [0, 1, 1, 2] +12 3 1 0 +After: [3, 1, 1, 2] + +Before: [0, 0, 0, 3] +15 0 3 1 +After: [0, 3, 0, 3] + +Before: [3, 1, 1, 2] +2 2 1 1 +After: [3, 1, 1, 2] + +Before: [1, 0, 0, 1] +6 3 0 2 +After: [1, 0, 1, 1] + +Before: [1, 0, 1, 2] +6 2 0 2 +After: [1, 0, 1, 2] + +Before: [1, 1, 1, 2] +2 2 1 3 +After: [1, 1, 1, 1] + +Before: [1, 1, 1, 1] +6 2 0 1 +After: [1, 1, 1, 1] + +Before: [2, 1, 2, 3] +8 3 1 3 +After: [2, 1, 2, 3] + +Before: [3, 1, 1, 3] +7 3 3 2 +After: [3, 1, 9, 3] + +Before: [2, 2, 3, 1] +11 2 1 1 +After: [2, 2, 3, 1] + +Before: [1, 3, 0, 2] +4 0 1 0 +After: [1, 3, 0, 2] + +Before: [0, 0, 3, 3] +0 0 2 1 +After: [0, 3, 3, 3] + +Before: [0, 1, 3, 1] +2 3 1 0 +After: [1, 1, 3, 1] + +Before: [3, 1, 1, 3] +8 3 0 2 +After: [3, 1, 3, 3] + +Before: [1, 2, 1, 0] +6 2 0 1 +After: [1, 1, 1, 0] + +Before: [1, 1, 0, 0] +9 3 1 0 +After: [1, 1, 0, 0] + +Before: [3, 1, 0, 1] +9 2 1 1 +After: [3, 1, 0, 1] + +Before: [0, 0, 2, 3] +8 2 0 3 +After: [0, 0, 2, 2] + +Before: [0, 2, 3, 3] +14 2 2 0 +After: [2, 2, 3, 3] + +Before: [2, 1, 1, 1] +15 0 1 3 +After: [2, 1, 1, 3] + +Before: [3, 1, 1, 2] +3 3 2 0 +After: [4, 1, 1, 2] + +Before: [0, 3, 1, 1] +5 0 3 3 +After: [0, 3, 1, 0] + +Before: [0, 0, 2, 0] +15 3 2 1 +After: [0, 2, 2, 0] + +Before: [1, 2, 0, 3] +8 3 3 0 +After: [3, 2, 0, 3] + +Before: [1, 0, 1, 1] +6 3 0 0 +After: [1, 0, 1, 1] + +Before: [0, 1, 1, 2] +0 0 2 3 +After: [0, 1, 1, 1] + +Before: [1, 1, 3, 1] +6 3 0 3 +After: [1, 1, 3, 1] + +Before: [1, 1, 2, 3] +8 2 2 2 +After: [1, 1, 2, 3] + +Before: [0, 1, 2, 0] +9 3 1 2 +After: [0, 1, 1, 0] + +Before: [1, 2, 1, 1] +6 3 0 0 +After: [1, 2, 1, 1] + +Before: [2, 1, 1, 0] +9 3 1 1 +After: [2, 1, 1, 0] + +Before: [1, 2, 3, 3] +0 0 1 2 +After: [1, 2, 3, 3] + +Before: [0, 1, 0, 0] +13 0 0 1 +After: [0, 0, 0, 0] + +Before: [2, 1, 3, 2] +12 3 1 1 +After: [2, 3, 3, 2] + +Before: [3, 1, 2, 1] +2 3 1 2 +After: [3, 1, 1, 1] + +Before: [0, 2, 2, 0] +5 0 2 3 +After: [0, 2, 2, 0] + +Before: [1, 3, 0, 3] +4 0 1 0 +After: [1, 3, 0, 3] + +Before: [2, 1, 2, 2] +12 3 1 3 +After: [2, 1, 2, 3] + +Before: [2, 2, 0, 3] +3 0 2 2 +After: [2, 2, 4, 3] + +Before: [2, 1, 2, 2] +8 2 0 3 +After: [2, 1, 2, 2] + +Before: [1, 3, 1, 2] +6 2 0 3 +After: [1, 3, 1, 1] + +Before: [0, 1, 2, 0] +15 0 1 3 +After: [0, 1, 2, 1] + +Before: [2, 2, 1, 2] +3 3 2 0 +After: [4, 2, 1, 2] + +Before: [3, 1, 2, 0] +1 2 2 1 +After: [3, 4, 2, 0] + +Before: [1, 2, 2, 3] +7 1 3 3 +After: [1, 2, 2, 6] + +Before: [2, 1, 1, 2] +0 1 0 2 +After: [2, 1, 3, 2] + +Before: [0, 3, 3, 2] +11 2 3 1 +After: [0, 2, 3, 2] + +Before: [0, 1, 0, 0] +9 3 1 1 +After: [0, 1, 0, 0] + +Before: [1, 3, 3, 2] +11 2 3 2 +After: [1, 3, 2, 2] + +Before: [1, 2, 1, 3] +6 2 0 0 +After: [1, 2, 1, 3] + +Before: [1, 0, 1, 3] +6 2 0 3 +After: [1, 0, 1, 1] + +Before: [0, 2, 2, 2] +15 0 2 1 +After: [0, 2, 2, 2] + +Before: [3, 3, 0, 3] +5 2 0 2 +After: [3, 3, 0, 3] + +Before: [3, 3, 3, 3] +14 2 2 0 +After: [2, 3, 3, 3] + +Before: [3, 0, 0, 3] +8 3 3 3 +After: [3, 0, 0, 3] + +Before: [0, 3, 2, 0] +13 0 0 1 +After: [0, 0, 2, 0] + +Before: [3, 1, 3, 0] +9 3 1 3 +After: [3, 1, 3, 1] + +Before: [0, 1, 0, 3] +9 2 1 2 +After: [0, 1, 1, 3] + +Before: [3, 3, 1, 1] +4 2 1 1 +After: [3, 1, 1, 1] + +Before: [0, 1, 3, 1] +12 3 2 1 +After: [0, 3, 3, 1] + +Before: [1, 3, 2, 0] +8 2 2 3 +After: [1, 3, 2, 2] + +Before: [0, 0, 3, 1] +13 0 0 2 +After: [0, 0, 0, 1] + +Before: [0, 2, 3, 2] +13 0 0 3 +After: [0, 2, 3, 0] + +Before: [0, 0, 3, 1] +13 0 0 0 +After: [0, 0, 3, 1] + +Before: [1, 3, 2, 0] +7 1 2 1 +After: [1, 6, 2, 0] + +Before: [3, 3, 0, 2] +0 2 0 1 +After: [3, 3, 0, 2] + +Before: [3, 2, 0, 0] +10 1 3 1 +After: [3, 6, 0, 0] + +Before: [3, 2, 1, 0] +10 0 3 0 +After: [9, 2, 1, 0] + +Before: [1, 1, 1, 1] +2 2 1 2 +After: [1, 1, 1, 1] + +Before: [2, 1, 3, 3] +11 2 0 1 +After: [2, 2, 3, 3] + +Before: [2, 3, 3, 3] +14 2 2 0 +After: [2, 3, 3, 3] + +Before: [0, 1, 1, 0] +9 3 1 0 +After: [1, 1, 1, 0] + +Before: [1, 1, 2, 0] +9 3 1 3 +After: [1, 1, 2, 1] + +Before: [2, 3, 2, 0] +1 2 2 0 +After: [4, 3, 2, 0] + +Before: [3, 2, 1, 0] +3 1 2 1 +After: [3, 4, 1, 0] + +Before: [1, 3, 2, 3] +15 0 2 1 +After: [1, 3, 2, 3] + +Before: [2, 0, 1, 3] +8 3 3 3 +After: [2, 0, 1, 3] + +Before: [3, 1, 0, 1] +2 3 1 3 +After: [3, 1, 0, 1] + +Before: [0, 1, 1, 0] +13 0 0 3 +After: [0, 1, 1, 0] + +Before: [1, 3, 1, 3] +0 0 1 1 +After: [1, 3, 1, 3] + +Before: [1, 0, 2, 2] +15 0 2 1 +After: [1, 3, 2, 2] + +Before: [1, 2, 2, 1] +12 3 2 2 +After: [1, 2, 3, 1] + +Before: [1, 3, 3, 1] +10 0 2 0 +After: [2, 3, 3, 1] + +Before: [2, 1, 0, 1] +2 3 1 0 +After: [1, 1, 0, 1] + +Before: [1, 0, 1, 1] +6 3 0 1 +After: [1, 1, 1, 1] + +Before: [3, 3, 1, 1] +4 2 1 0 +After: [1, 3, 1, 1] + +Before: [0, 3, 0, 3] +13 0 0 0 +After: [0, 3, 0, 3] + +Before: [0, 1, 0, 3] +13 0 0 0 +After: [0, 1, 0, 3] + +Before: [2, 2, 3, 2] +11 2 0 3 +After: [2, 2, 3, 2] + +Before: [2, 3, 1, 1] +4 2 1 1 +After: [2, 1, 1, 1] + +Before: [1, 3, 3, 2] +11 2 3 3 +After: [1, 3, 3, 2] + +Before: [1, 3, 0, 0] +4 0 1 0 +After: [1, 3, 0, 0] + +Before: [0, 1, 1, 2] +2 2 1 2 +After: [0, 1, 1, 2] + +Before: [1, 2, 2, 1] +0 2 0 3 +After: [1, 2, 2, 3] + +Before: [2, 0, 3, 1] +12 3 2 0 +After: [3, 0, 3, 1] + +Before: [0, 1, 1, 2] +2 2 1 3 +After: [0, 1, 1, 1] + +Before: [1, 1, 0, 3] +7 3 3 3 +After: [1, 1, 0, 9] + +Before: [1, 3, 1, 1] +6 2 0 0 +After: [1, 3, 1, 1] + +Before: [3, 1, 3, 3] +8 3 3 0 +After: [3, 1, 3, 3] + +Before: [3, 3, 2, 2] +14 0 2 0 +After: [2, 3, 2, 2] + +Before: [0, 2, 0, 2] +3 1 2 2 +After: [0, 2, 4, 2] + +Before: [0, 1, 1, 1] +2 2 1 2 +After: [0, 1, 1, 1] + +Before: [1, 3, 0, 3] +4 0 1 1 +After: [1, 1, 0, 3] + +Before: [0, 3, 2, 1] +0 0 1 2 +After: [0, 3, 3, 1] + +Before: [3, 2, 2, 2] +1 3 2 1 +After: [3, 4, 2, 2] + +Before: [0, 3, 2, 3] +8 2 2 3 +After: [0, 3, 2, 2] + +Before: [2, 0, 3, 2] +3 0 2 3 +After: [2, 0, 3, 4] + +Before: [1, 2, 3, 1] +11 2 1 1 +After: [1, 2, 3, 1] + +Before: [0, 2, 3, 0] +11 2 1 3 +After: [0, 2, 3, 2] + +Before: [1, 0, 1, 2] +6 2 0 0 +After: [1, 0, 1, 2] + +Before: [0, 0, 2, 3] +13 0 0 0 +After: [0, 0, 2, 3] + +Before: [0, 0, 3, 2] +11 2 3 0 +After: [2, 0, 3, 2] + +Before: [0, 3, 1, 2] +4 2 1 1 +After: [0, 1, 1, 2] + +Before: [0, 1, 1, 2] +15 2 3 0 +After: [3, 1, 1, 2] + +Before: [0, 1, 2, 2] +13 0 0 0 +After: [0, 1, 2, 2] + +Before: [2, 1, 0, 1] +2 3 1 1 +After: [2, 1, 0, 1] + +Before: [2, 1, 1, 1] +2 3 1 3 +After: [2, 1, 1, 1] + +Before: [0, 0, 0, 0] +5 3 0 0 +After: [0, 0, 0, 0] + +Before: [1, 2, 2, 1] +10 1 3 3 +After: [1, 2, 2, 6] + +Before: [3, 3, 2, 3] +14 1 2 1 +After: [3, 2, 2, 3] + +Before: [1, 1, 1, 1] +6 3 0 3 +After: [1, 1, 1, 1] + +Before: [2, 3, 3, 0] +11 2 0 1 +After: [2, 2, 3, 0] + +Before: [1, 0, 3, 3] +8 3 3 2 +After: [1, 0, 3, 3] + +Before: [1, 3, 1, 1] +10 1 2 2 +After: [1, 3, 6, 1] + +Before: [3, 0, 0, 2] +5 2 0 2 +After: [3, 0, 0, 2] + +Before: [3, 1, 3, 0] +14 2 2 0 +After: [2, 1, 3, 0] + +Before: [3, 3, 3, 2] +11 2 3 3 +After: [3, 3, 3, 2] + +Before: [3, 3, 3, 3] +8 3 1 3 +After: [3, 3, 3, 3] + +Before: [0, 0, 2, 0] +8 2 0 0 +After: [2, 0, 2, 0] + +Before: [2, 2, 2, 1] +1 2 2 0 +After: [4, 2, 2, 1] + +Before: [2, 2, 3, 0] +11 2 1 1 +After: [2, 2, 3, 0] + +Before: [3, 2, 2, 3] +14 0 2 3 +After: [3, 2, 2, 2] + +Before: [2, 1, 2, 3] +1 0 2 0 +After: [4, 1, 2, 3] + +Before: [3, 1, 1, 0] +9 3 1 0 +After: [1, 1, 1, 0] + +Before: [1, 3, 1, 3] +4 2 1 1 +After: [1, 1, 1, 3] + +Before: [2, 0, 0, 1] +3 0 2 2 +After: [2, 0, 4, 1] + +Before: [2, 0, 3, 2] +14 2 2 2 +After: [2, 0, 2, 2] + +Before: [0, 1, 3, 1] +5 0 1 0 +After: [0, 1, 3, 1] + +Before: [0, 3, 1, 3] +8 3 0 0 +After: [3, 3, 1, 3] + +Before: [1, 2, 3, 1] +15 0 2 2 +After: [1, 2, 3, 1] + +Before: [2, 2, 3, 2] +11 2 3 2 +After: [2, 2, 2, 2] + +Before: [0, 3, 3, 3] +14 2 2 1 +After: [0, 2, 3, 3] + +Before: [1, 0, 3, 0] +14 2 2 0 +After: [2, 0, 3, 0] + +Before: [1, 2, 1, 0] +6 2 0 3 +After: [1, 2, 1, 1] + +Before: [2, 0, 2, 2] +0 1 3 0 +After: [2, 0, 2, 2] + +Before: [0, 1, 2, 1] +8 2 2 0 +After: [2, 1, 2, 1] + +Before: [0, 2, 2, 1] +12 3 2 3 +After: [0, 2, 2, 3] + +Before: [1, 3, 2, 3] +7 2 3 3 +After: [1, 3, 2, 6] + +Before: [3, 1, 0, 0] +0 2 0 3 +After: [3, 1, 0, 3] + +Before: [1, 3, 2, 3] +4 0 1 1 +After: [1, 1, 2, 3] + +Before: [0, 2, 2, 1] +13 0 0 0 +After: [0, 2, 2, 1] + +Before: [3, 1, 2, 3] +8 3 3 2 +After: [3, 1, 3, 3] + +Before: [0, 1, 1, 3] +2 2 1 1 +After: [0, 1, 1, 3] + +Before: [2, 2, 1, 1] +4 3 1 2 +After: [2, 2, 1, 1] + +Before: [2, 1, 0, 0] +9 3 1 1 +After: [2, 1, 0, 0] + +Before: [3, 1, 2, 2] +12 3 1 0 +After: [3, 1, 2, 2] + +Before: [0, 1, 1, 2] +3 3 2 2 +After: [0, 1, 4, 2] + +Before: [0, 2, 3, 0] +11 2 1 0 +After: [2, 2, 3, 0] + +Before: [2, 0, 1, 3] +3 0 2 2 +After: [2, 0, 4, 3] + +Before: [3, 2, 3, 2] +11 2 1 3 +After: [3, 2, 3, 2] + +Before: [1, 1, 1, 0] +6 2 0 0 +After: [1, 1, 1, 0] + +Before: [1, 1, 1, 3] +2 2 1 0 +After: [1, 1, 1, 3] + +Before: [1, 2, 2, 1] +7 0 2 3 +After: [1, 2, 2, 2] + +Before: [3, 2, 0, 2] +3 3 2 2 +After: [3, 2, 4, 2] + +Before: [1, 2, 0, 3] +3 1 2 0 +After: [4, 2, 0, 3] + +Before: [1, 2, 3, 1] +4 3 1 2 +After: [1, 2, 1, 1] + +Before: [3, 2, 2, 1] +14 0 2 2 +After: [3, 2, 2, 1] + +Before: [2, 1, 3, 2] +11 2 3 2 +After: [2, 1, 2, 2] + +Before: [0, 3, 1, 3] +5 0 3 3 +After: [0, 3, 1, 0] + +Before: [3, 3, 2, 0] +1 2 2 1 +After: [3, 4, 2, 0] + +Before: [1, 1, 0, 2] +9 2 1 2 +After: [1, 1, 1, 2] + +Before: [3, 0, 2, 1] +12 3 2 3 +After: [3, 0, 2, 3] + +Before: [3, 3, 0, 1] +10 0 3 1 +After: [3, 9, 0, 1] + +Before: [0, 2, 3, 1] +10 1 3 2 +After: [0, 2, 6, 1] + +Before: [2, 0, 2, 0] +10 2 3 3 +After: [2, 0, 2, 6] + +Before: [0, 3, 2, 1] +5 0 2 0 +After: [0, 3, 2, 1] + +Before: [3, 1, 3, 0] +9 3 1 1 +After: [3, 1, 3, 0] + +Before: [0, 2, 2, 3] +8 3 0 3 +After: [0, 2, 2, 3] + +Before: [0, 3, 0, 1] +13 0 0 2 +After: [0, 3, 0, 1] + +Before: [0, 0, 0, 1] +13 0 0 0 +After: [0, 0, 0, 1] + +Before: [1, 2, 0, 1] +6 3 0 2 +After: [1, 2, 1, 1] + +Before: [2, 3, 2, 0] +15 3 2 1 +After: [2, 2, 2, 0] + +Before: [1, 0, 2, 2] +0 2 0 1 +After: [1, 3, 2, 2] + +Before: [2, 2, 0, 2] +10 0 3 3 +After: [2, 2, 0, 6] + +Before: [2, 2, 3, 3] +8 3 3 1 +After: [2, 3, 3, 3] + +Before: [0, 2, 3, 3] +5 0 3 2 +After: [0, 2, 0, 3] + +Before: [0, 1, 2, 2] +8 2 2 0 +After: [2, 1, 2, 2] + +Before: [2, 2, 2, 2] +8 2 2 3 +After: [2, 2, 2, 2] + +Before: [1, 3, 1, 2] +4 0 1 0 +After: [1, 3, 1, 2] + +Before: [2, 2, 3, 1] +14 2 2 0 +After: [2, 2, 3, 1] + +Before: [3, 1, 1, 0] +9 3 1 1 +After: [3, 1, 1, 0] + +Before: [1, 3, 3, 1] +6 3 0 2 +After: [1, 3, 1, 1] + +Before: [3, 1, 0, 2] +9 2 1 1 +After: [3, 1, 0, 2] + +Before: [2, 0, 3, 0] +11 2 0 3 +After: [2, 0, 3, 2] + +Before: [0, 0, 3, 3] +8 3 3 2 +After: [0, 0, 3, 3] + +Before: [3, 1, 3, 1] +15 1 2 0 +After: [3, 1, 3, 1] + +Before: [3, 3, 2, 1] +12 3 2 3 +After: [3, 3, 2, 3] + +Before: [1, 0, 1, 2] +6 2 0 1 +After: [1, 1, 1, 2] + +Before: [2, 3, 1, 0] +4 2 1 2 +After: [2, 3, 1, 0] + +Before: [2, 1, 2, 0] +9 3 1 1 +After: [2, 1, 2, 0] + +Before: [2, 3, 2, 3] +8 3 1 0 +After: [3, 3, 2, 3] + +Before: [0, 2, 1, 1] +4 3 1 2 +After: [0, 2, 1, 1] + +Before: [0, 0, 0, 1] +13 0 0 3 +After: [0, 0, 0, 0] + +Before: [0, 1, 2, 1] +8 2 2 3 +After: [0, 1, 2, 2] + +Before: [1, 1, 0, 1] +10 3 2 1 +After: [1, 2, 0, 1] + +Before: [1, 1, 1, 3] +6 2 0 0 +After: [1, 1, 1, 3] + +Before: [1, 3, 1, 3] +6 2 0 2 +After: [1, 3, 1, 3] + +Before: [2, 3, 3, 2] +11 2 3 0 +After: [2, 3, 3, 2] + +Before: [1, 2, 0, 3] +8 3 3 2 +After: [1, 2, 3, 3] + +Before: [2, 1, 1, 3] +10 3 2 0 +After: [6, 1, 1, 3] + +Before: [2, 1, 1, 3] +2 2 1 1 +After: [2, 1, 1, 3] + +Before: [1, 0, 2, 3] +1 2 2 2 +After: [1, 0, 4, 3] + +Before: [3, 2, 2, 1] +8 2 2 3 +After: [3, 2, 2, 2] + +Before: [1, 1, 0, 2] +12 3 1 3 +After: [1, 1, 0, 3] + +Before: [0, 2, 3, 3] +5 0 2 1 +After: [0, 0, 3, 3] + +Before: [0, 1, 3, 2] +3 3 2 1 +After: [0, 4, 3, 2] + +Before: [0, 2, 3, 1] +14 2 2 3 +After: [0, 2, 3, 2] + +Before: [3, 3, 3, 2] +7 2 3 3 +After: [3, 3, 3, 6] + +Before: [1, 3, 2, 3] +14 3 2 1 +After: [1, 2, 2, 3] + +Before: [0, 2, 3, 0] +13 0 0 2 +After: [0, 2, 0, 0] + +Before: [0, 1, 0, 3] +13 0 0 2 +After: [0, 1, 0, 3] + +Before: [1, 1, 1, 1] +6 2 0 3 +After: [1, 1, 1, 1] + +Before: [1, 2, 3, 0] +3 1 2 1 +After: [1, 4, 3, 0] + +Before: [0, 0, 3, 3] +15 0 3 1 +After: [0, 3, 3, 3] + +Before: [0, 2, 3, 1] +11 2 1 3 +After: [0, 2, 3, 2] + +Before: [1, 3, 2, 3] +14 1 2 0 +After: [2, 3, 2, 3] + +Before: [0, 1, 0, 1] +2 3 1 0 +After: [1, 1, 0, 1] + +Before: [0, 3, 1, 1] +13 0 0 3 +After: [0, 3, 1, 0] + +Before: [0, 1, 3, 2] +11 2 3 1 +After: [0, 2, 3, 2] + +Before: [3, 1, 1, 2] +12 3 1 2 +After: [3, 1, 3, 2] + +Before: [3, 2, 3, 2] +3 1 2 0 +After: [4, 2, 3, 2] + +Before: [0, 2, 3, 3] +5 0 3 0 +After: [0, 2, 3, 3] + +Before: [3, 3, 0, 1] +5 2 0 1 +After: [3, 0, 0, 1] + +Before: [1, 1, 1, 0] +6 2 0 2 +After: [1, 1, 1, 0] + +Before: [1, 3, 1, 0] +6 2 0 1 +After: [1, 1, 1, 0] + +Before: [0, 3, 1, 2] +0 0 3 1 +After: [0, 2, 1, 2] + +Before: [0, 3, 1, 3] +0 2 1 0 +After: [3, 3, 1, 3] + +Before: [1, 2, 3, 1] +6 3 0 1 +After: [1, 1, 3, 1] + +Before: [0, 3, 1, 1] +4 2 1 3 +After: [0, 3, 1, 1] + +Before: [1, 1, 1, 2] +12 3 1 3 +After: [1, 1, 1, 3] + +Before: [3, 1, 3, 2] +10 0 3 3 +After: [3, 1, 3, 9] + +Before: [0, 3, 0, 0] +5 2 0 2 +After: [0, 3, 0, 0] + +Before: [2, 1, 1, 2] +12 3 1 0 +After: [3, 1, 1, 2] + +Before: [2, 2, 3, 3] +7 1 3 1 +After: [2, 6, 3, 3] + +Before: [1, 2, 2, 3] +7 0 1 0 +After: [2, 2, 2, 3] + +Before: [2, 2, 0, 1] +3 0 2 2 +After: [2, 2, 4, 1] + +Before: [1, 2, 0, 1] +3 1 2 3 +After: [1, 2, 0, 4] + +Before: [0, 2, 0, 1] +4 3 1 1 +After: [0, 1, 0, 1] + +Before: [3, 2, 2, 2] +1 1 2 1 +After: [3, 4, 2, 2] + +Before: [2, 2, 1, 1] +0 1 2 0 +After: [3, 2, 1, 1] + +Before: [1, 3, 3, 3] +4 0 1 3 +After: [1, 3, 3, 1] + +Before: [1, 3, 1, 3] +8 3 3 0 +After: [3, 3, 1, 3] + +Before: [3, 1, 1, 1] +10 0 3 3 +After: [3, 1, 1, 9] + +Before: [2, 2, 0, 3] +3 1 2 3 +After: [2, 2, 0, 4] + +Before: [1, 1, 3, 1] +15 0 2 3 +After: [1, 1, 3, 3] + +Before: [1, 3, 2, 2] +1 3 2 3 +After: [1, 3, 2, 4] + +Before: [3, 0, 2, 1] +8 2 2 0 +After: [2, 0, 2, 1] + +Before: [3, 3, 2, 1] +7 0 2 2 +After: [3, 3, 6, 1] + +Before: [3, 3, 2, 3] +14 1 2 2 +After: [3, 3, 2, 3] + +Before: [3, 2, 0, 2] +3 3 2 0 +After: [4, 2, 0, 2] + +Before: [2, 1, 1, 0] +2 2 1 2 +After: [2, 1, 1, 0] + +Before: [1, 0, 3, 3] +14 2 2 1 +After: [1, 2, 3, 3] + +Before: [1, 3, 2, 2] +14 1 2 2 +After: [1, 3, 2, 2] + +Before: [1, 0, 3, 1] +12 3 2 0 +After: [3, 0, 3, 1] + +Before: [3, 1, 3, 2] +11 2 3 1 +After: [3, 2, 3, 2] + +Before: [2, 2, 2, 1] +1 2 2 1 +After: [2, 4, 2, 1] + +Before: [3, 1, 3, 0] +9 3 1 0 +After: [1, 1, 3, 0] + +Before: [3, 2, 2, 2] +1 1 2 3 +After: [3, 2, 2, 4] + +Before: [1, 3, 2, 1] +6 3 0 1 +After: [1, 1, 2, 1] + +Before: [0, 2, 2, 0] +0 0 1 2 +After: [0, 2, 2, 0] + +Before: [0, 0, 0, 0] +5 1 0 1 +After: [0, 0, 0, 0] + +Before: [0, 1, 2, 0] +1 2 2 0 +After: [4, 1, 2, 0] + +Before: [2, 0, 3, 3] +11 2 0 2 +After: [2, 0, 2, 3] + +Before: [3, 3, 2, 2] +14 1 2 1 +After: [3, 2, 2, 2] + +Before: [1, 1, 0, 1] +9 2 1 0 +After: [1, 1, 0, 1] + +Before: [2, 3, 0, 3] +7 0 3 2 +After: [2, 3, 6, 3] + +Before: [2, 3, 3, 1] +12 3 2 2 +After: [2, 3, 3, 1] + +Before: [0, 2, 3, 3] +11 2 1 3 +After: [0, 2, 3, 2] + +Before: [3, 3, 0, 2] +5 2 0 1 +After: [3, 0, 0, 2] + +Before: [1, 1, 1, 1] +6 3 0 1 +After: [1, 1, 1, 1] + +Before: [2, 3, 0, 3] +10 3 2 1 +After: [2, 6, 0, 3] + +Before: [2, 1, 2, 2] +7 1 2 0 +After: [2, 1, 2, 2] + +Before: [0, 2, 2, 2] +1 1 2 0 +After: [4, 2, 2, 2] + +Before: [0, 3, 1, 2] +10 3 3 2 +After: [0, 3, 6, 2] + +Before: [3, 2, 3, 3] +3 1 2 3 +After: [3, 2, 3, 4] + +Before: [1, 1, 2, 3] +7 3 3 1 +After: [1, 9, 2, 3] + +Before: [2, 3, 3, 3] +3 0 2 2 +After: [2, 3, 4, 3] + +Before: [1, 3, 1, 1] +6 2 0 1 +After: [1, 1, 1, 1] + +Before: [3, 1, 1, 3] +15 2 3 3 +After: [3, 1, 1, 3] + +Before: [1, 0, 2, 3] +8 3 0 3 +After: [1, 0, 2, 3] + +Before: [0, 3, 2, 2] +14 1 2 3 +After: [0, 3, 2, 2] + +Before: [1, 1, 0, 0] +9 3 1 1 +After: [1, 1, 0, 0] + +Before: [2, 2, 3, 3] +3 1 2 2 +After: [2, 2, 4, 3] + +Before: [2, 2, 3, 3] +11 2 0 1 +After: [2, 2, 3, 3] + +Before: [0, 2, 0, 2] +3 3 2 3 +After: [0, 2, 0, 4] + +Before: [2, 3, 2, 0] +10 2 3 1 +After: [2, 6, 2, 0] + +Before: [3, 2, 3, 0] +11 2 1 3 +After: [3, 2, 3, 2] + +Before: [1, 2, 3, 0] +15 0 2 2 +After: [1, 2, 3, 0] + +Before: [0, 3, 1, 1] +4 2 1 0 +After: [1, 3, 1, 1] + +Before: [1, 0, 3, 3] +7 2 3 1 +After: [1, 9, 3, 3] + +Before: [2, 1, 3, 1] +11 2 0 0 +After: [2, 1, 3, 1] + +Before: [0, 1, 2, 0] +15 0 1 0 +After: [1, 1, 2, 0] + +Before: [1, 2, 1, 2] +6 2 0 0 +After: [1, 2, 1, 2] + +Before: [3, 0, 2, 1] +12 3 2 1 +After: [3, 3, 2, 1] + +Before: [0, 3, 2, 1] +12 3 2 3 +After: [0, 3, 2, 3] + +Before: [0, 1, 0, 0] +9 2 1 3 +After: [0, 1, 0, 1] + +Before: [1, 1, 1, 1] +2 2 1 3 +After: [1, 1, 1, 1] + +Before: [3, 2, 3, 2] +11 2 3 1 +After: [3, 2, 3, 2] + +Before: [3, 2, 3, 1] +10 2 3 3 +After: [3, 2, 3, 9] + +Before: [1, 1, 3, 2] +11 2 3 3 +After: [1, 1, 3, 2] + +Before: [0, 2, 1, 0] +3 1 2 2 +After: [0, 2, 4, 0] + +Before: [0, 0, 1, 1] +5 0 3 3 +After: [0, 0, 1, 0] + +Before: [1, 1, 1, 2] +6 2 0 3 +After: [1, 1, 1, 1] + +Before: [0, 3, 1, 3] +4 2 1 2 +After: [0, 3, 1, 3] + +Before: [2, 0, 1, 0] +5 1 0 3 +After: [2, 0, 1, 0] + +Before: [2, 3, 2, 1] +14 1 2 2 +After: [2, 3, 2, 1] + +Before: [0, 0, 1, 3] +15 1 3 3 +After: [0, 0, 1, 3] + +Before: [2, 3, 0, 2] +7 1 3 0 +After: [6, 3, 0, 2] + +Before: [1, 3, 0, 1] +6 3 0 2 +After: [1, 3, 1, 1] + +Before: [3, 1, 3, 1] +12 3 2 2 +After: [3, 1, 3, 1] + +Before: [2, 1, 3, 1] +10 3 2 3 +After: [2, 1, 3, 2] + +Before: [0, 1, 0, 0] +9 2 1 1 +After: [0, 1, 0, 0] + +Before: [2, 1, 2, 1] +8 2 0 0 +After: [2, 1, 2, 1] + +Before: [3, 2, 2, 2] +10 0 3 3 +After: [3, 2, 2, 9] + +Before: [0, 1, 3, 1] +2 3 1 2 +After: [0, 1, 1, 1] + +Before: [1, 3, 3, 3] +15 0 2 0 +After: [3, 3, 3, 3] + +Before: [3, 2, 2, 1] +12 3 2 0 +After: [3, 2, 2, 1] + +Before: [0, 3, 2, 1] +12 3 2 1 +After: [0, 3, 2, 1] + +Before: [0, 0, 2, 0] +8 2 2 1 +After: [0, 2, 2, 0] + +Before: [0, 3, 0, 3] +7 3 3 2 +After: [0, 3, 9, 3] + +Before: [1, 2, 2, 2] +7 0 1 0 +After: [2, 2, 2, 2] + +Before: [0, 1, 1, 3] +5 0 3 0 +After: [0, 1, 1, 3] + +Before: [2, 0, 3, 3] +0 1 2 2 +After: [2, 0, 3, 3] + +Before: [3, 1, 0, 0] +9 2 1 2 +After: [3, 1, 1, 0] + +Before: [0, 0, 0, 3] +8 3 0 1 +After: [0, 3, 0, 3] + +Before: [3, 1, 2, 1] +12 3 2 3 +After: [3, 1, 2, 3] + +Before: [3, 2, 0, 2] +5 2 0 0 +After: [0, 2, 0, 2] + +Before: [0, 2, 1, 3] +7 3 3 3 +After: [0, 2, 1, 9] + +Before: [2, 3, 2, 2] +1 2 2 0 +After: [4, 3, 2, 2] + +Before: [1, 3, 2, 0] +7 0 2 1 +After: [1, 2, 2, 0] + +Before: [0, 3, 3, 1] +12 3 2 2 +After: [0, 3, 3, 1] + +Before: [3, 3, 1, 2] +4 2 1 1 +After: [3, 1, 1, 2] + +Before: [0, 1, 3, 3] +15 1 2 0 +After: [3, 1, 3, 3] + +Before: [0, 3, 1, 3] +8 3 0 2 +After: [0, 3, 3, 3] + +Before: [3, 1, 2, 2] +15 1 3 3 +After: [3, 1, 2, 3] + +Before: [0, 1, 2, 0] +13 0 0 1 +After: [0, 0, 2, 0] + +Before: [1, 0, 1, 3] +7 3 3 2 +After: [1, 0, 9, 3] + +Before: [2, 0, 1, 3] +7 0 3 3 +After: [2, 0, 1, 6] + +Before: [0, 3, 1, 0] +4 2 1 0 +After: [1, 3, 1, 0] + +Before: [0, 0, 0, 3] +13 0 0 3 +After: [0, 0, 0, 0] + +Before: [2, 1, 0, 2] +9 2 1 0 +After: [1, 1, 0, 2] + +Before: [1, 0, 0, 2] +3 3 2 3 +After: [1, 0, 0, 4] + +Before: [0, 1, 0, 0] +9 2 1 2 +After: [0, 1, 1, 0] + +Before: [3, 3, 0, 0] +10 1 3 2 +After: [3, 3, 9, 0] + +Before: [0, 0, 2, 2] +15 1 2 3 +After: [0, 0, 2, 2] + +Before: [1, 3, 1, 0] +4 2 1 2 +After: [1, 3, 1, 0] + +Before: [0, 3, 0, 3] +13 0 0 1 +After: [0, 0, 0, 3] + +Before: [0, 0, 3, 0] +5 1 0 0 +After: [0, 0, 3, 0] + +Before: [0, 1, 1, 3] +2 2 1 3 +After: [0, 1, 1, 1] + +Before: [0, 0, 2, 1] +12 3 2 0 +After: [3, 0, 2, 1] + +Before: [0, 2, 2, 2] +5 0 1 0 +After: [0, 2, 2, 2] + +Before: [0, 3, 1, 2] +13 0 0 1 +After: [0, 0, 1, 2] + +Before: [0, 1, 2, 2] +7 1 2 2 +After: [0, 1, 2, 2] + +Before: [1, 3, 1, 1] +4 0 1 1 +After: [1, 1, 1, 1] + +Before: [0, 1, 0, 1] +9 2 1 0 +After: [1, 1, 0, 1] + +Before: [0, 2, 3, 3] +7 3 3 3 +After: [0, 2, 3, 9] + +Before: [0, 0, 2, 1] +10 2 3 1 +After: [0, 6, 2, 1] + +Before: [3, 2, 3, 2] +11 2 3 3 +After: [3, 2, 3, 2] + +Before: [2, 1, 1, 2] +12 3 1 3 +After: [2, 1, 1, 3] + +Before: [0, 3, 3, 3] +13 0 0 1 +After: [0, 0, 3, 3] + +Before: [0, 0, 2, 0] +13 0 0 3 +After: [0, 0, 2, 0] + +Before: [2, 2, 3, 3] +3 1 2 0 +After: [4, 2, 3, 3] + +Before: [1, 3, 3, 2] +10 1 3 1 +After: [1, 9, 3, 2] + +Before: [0, 1, 2, 1] +2 3 1 3 +After: [0, 1, 2, 1] + +Before: [2, 3, 1, 1] +0 2 1 1 +After: [2, 3, 1, 1] + +Before: [1, 1, 0, 1] +9 2 1 1 +After: [1, 1, 0, 1] + +Before: [3, 2, 1, 2] +10 3 3 1 +After: [3, 6, 1, 2] + +Before: [1, 0, 2, 2] +0 1 3 3 +After: [1, 0, 2, 2] + +Before: [3, 3, 2, 2] +14 0 2 3 +After: [3, 3, 2, 2] + +Before: [2, 3, 0, 2] +10 1 2 2 +After: [2, 3, 6, 2] + +Before: [1, 3, 2, 0] +4 0 1 0 +After: [1, 3, 2, 0] + +Before: [1, 1, 1, 0] +2 2 1 1 +After: [1, 1, 1, 0] + +Before: [1, 1, 2, 1] +2 3 1 0 +After: [1, 1, 2, 1] + +Before: [0, 3, 0, 3] +15 0 3 0 +After: [3, 3, 0, 3] + +Before: [0, 2, 2, 3] +8 2 0 2 +After: [0, 2, 2, 3] + +Before: [0, 3, 3, 0] +13 0 0 3 +After: [0, 3, 3, 0] + +Before: [3, 2, 2, 1] +4 3 1 1 +After: [3, 1, 2, 1] + +Before: [3, 2, 2, 0] +14 0 2 0 +After: [2, 2, 2, 0] + +Before: [0, 0, 1, 3] +7 3 3 3 +After: [0, 0, 1, 9] + +Before: [2, 3, 3, 2] +11 2 3 2 +After: [2, 3, 2, 2] + +Before: [1, 2, 3, 2] +11 2 1 0 +After: [2, 2, 3, 2] + +Before: [1, 1, 3, 1] +12 3 2 3 +After: [1, 1, 3, 3] + +Before: [2, 3, 1, 2] +3 0 2 1 +After: [2, 4, 1, 2] + +Before: [1, 2, 1, 1] +6 3 0 2 +After: [1, 2, 1, 1] + +Before: [0, 1, 2, 0] +9 3 1 3 +After: [0, 1, 2, 1] + +Before: [1, 0, 2, 1] +15 0 2 1 +After: [1, 3, 2, 1] + +Before: [1, 0, 2, 1] +12 3 2 0 +After: [3, 0, 2, 1] + +Before: [3, 1, 2, 3] +8 3 3 0 +After: [3, 1, 2, 3] + +Before: [1, 0, 2, 2] +15 1 2 2 +After: [1, 0, 2, 2] + +Before: [2, 0, 1, 2] +0 2 0 1 +After: [2, 3, 1, 2] + +Before: [1, 3, 1, 2] +4 2 1 3 +After: [1, 3, 1, 1] + +Before: [0, 0, 0, 3] +5 2 0 2 +After: [0, 0, 0, 3] + +Before: [2, 1, 2, 3] +1 2 2 0 +After: [4, 1, 2, 3] + +Before: [0, 1, 1, 0] +2 2 1 1 +After: [0, 1, 1, 0] + +Before: [1, 1, 1, 0] +6 2 0 1 +After: [1, 1, 1, 0] + +Before: [2, 2, 1, 1] +3 0 2 3 +After: [2, 2, 1, 4] + +Before: [0, 2, 3, 1] +4 3 1 2 +After: [0, 2, 1, 1] + +Before: [2, 0, 2, 2] +8 2 2 3 +After: [2, 0, 2, 2] + +Before: [1, 3, 1, 0] +0 0 1 2 +After: [1, 3, 3, 0] + +Before: [1, 2, 1, 1] +6 3 0 1 +After: [1, 1, 1, 1] + +Before: [1, 2, 0, 0] +7 0 1 0 +After: [2, 2, 0, 0] + +Before: [1, 2, 2, 1] +12 3 2 1 +After: [1, 3, 2, 1] + +Before: [0, 1, 1, 0] +2 2 1 2 +After: [0, 1, 1, 0] + + + +12 3 3 2 +12 3 2 0 +12 2 1 1 +0 1 2 1 +10 1 1 1 +1 1 3 3 +8 3 1 1 +10 2 0 2 +3 2 2 2 +12 0 2 3 +12 2 2 0 +9 3 2 3 +10 3 2 3 +1 1 3 1 +8 1 3 3 +10 0 0 1 +3 1 1 1 +10 2 0 0 +3 0 3 0 +0 2 0 1 +10 1 1 1 +1 3 1 3 +12 2 0 0 +10 1 0 1 +3 1 1 1 +12 3 1 2 +7 1 0 2 +10 2 1 2 +1 3 2 3 +8 3 2 2 +10 2 0 1 +3 1 2 1 +12 0 0 3 +12 3 0 0 +11 0 1 1 +10 1 2 1 +10 1 1 1 +1 1 2 2 +12 0 0 1 +12 1 3 3 +12 2 1 0 +12 3 1 0 +10 0 2 0 +1 2 0 2 +8 2 2 3 +10 1 0 1 +3 1 1 1 +10 3 0 0 +3 0 3 0 +12 0 2 2 +4 2 0 2 +10 2 3 2 +10 2 1 2 +1 3 2 3 +12 2 1 2 +10 0 0 1 +3 1 2 1 +6 2 0 0 +10 0 3 0 +1 3 0 3 +8 3 1 1 +12 0 1 2 +12 2 2 3 +12 2 3 0 +2 0 3 2 +10 2 1 2 +1 2 1 1 +12 1 1 3 +12 0 1 2 +13 0 3 0 +10 0 2 0 +1 0 1 1 +8 1 2 2 +12 2 0 1 +12 2 2 3 +12 2 0 0 +2 0 3 1 +10 1 3 1 +1 1 2 2 +8 2 0 1 +12 1 0 3 +10 3 0 0 +3 0 1 0 +12 2 0 2 +8 0 2 0 +10 0 2 0 +1 0 1 1 +8 1 3 0 +12 3 2 2 +12 3 1 1 +12 3 3 3 +12 2 3 1 +10 1 3 1 +1 0 1 0 +12 0 2 2 +12 0 3 3 +12 2 2 1 +15 1 3 3 +10 3 1 3 +1 0 3 0 +8 0 0 3 +12 2 3 0 +12 3 2 2 +12 3 0 1 +6 0 1 0 +10 0 3 0 +1 0 3 3 +8 3 3 1 +12 1 3 2 +12 2 1 0 +12 2 2 3 +2 0 3 0 +10 0 3 0 +1 1 0 1 +12 2 0 0 +10 3 0 2 +3 2 3 2 +15 0 3 2 +10 2 1 2 +10 2 3 2 +1 1 2 1 +10 2 0 0 +3 0 3 0 +12 0 1 2 +5 2 3 2 +10 2 1 2 +1 1 2 1 +8 1 2 0 +12 3 3 3 +12 1 3 2 +12 3 1 1 +14 1 2 3 +10 3 3 3 +10 3 1 3 +1 0 3 0 +8 0 2 2 +10 2 0 0 +3 0 3 0 +12 1 0 1 +12 2 1 3 +7 1 3 1 +10 1 3 1 +1 2 1 2 +8 2 1 1 +12 1 1 0 +12 2 0 2 +12 3 2 3 +8 0 2 0 +10 0 2 0 +1 1 0 1 +8 1 2 3 +12 0 1 2 +12 0 1 0 +10 1 0 1 +3 1 1 1 +12 2 1 1 +10 1 3 1 +1 1 3 3 +8 3 3 1 +12 0 1 3 +12 2 0 2 +12 1 2 0 +8 0 2 3 +10 3 1 3 +1 3 1 1 +8 1 0 2 +12 3 3 1 +12 3 0 3 +12 2 1 0 +11 1 0 0 +10 0 2 0 +10 0 3 0 +1 2 0 2 +8 2 1 0 +12 0 0 3 +12 3 2 2 +12 1 3 1 +5 3 2 1 +10 1 3 1 +1 1 0 0 +8 0 0 3 +12 0 1 1 +12 1 2 0 +10 0 2 2 +10 2 1 2 +1 2 3 3 +10 3 0 0 +3 0 2 0 +12 3 1 2 +10 0 0 1 +3 1 2 1 +0 1 2 2 +10 2 1 2 +1 3 2 3 +8 3 0 1 +12 3 3 2 +12 2 0 3 +0 0 2 3 +10 3 3 3 +1 1 3 1 +8 1 2 2 +12 1 2 0 +12 0 3 3 +12 3 0 1 +3 0 1 3 +10 3 3 3 +1 3 2 2 +8 2 2 1 +12 2 1 3 +12 0 2 2 +12 2 3 0 +2 0 3 0 +10 0 1 0 +1 0 1 1 +8 1 0 2 +12 0 0 1 +12 2 0 0 +15 0 3 1 +10 1 2 1 +1 1 2 2 +8 2 3 1 +12 3 1 2 +2 0 3 2 +10 2 2 2 +1 2 1 1 +12 3 3 0 +12 2 0 2 +6 2 0 3 +10 3 2 3 +1 1 3 1 +8 1 0 0 +12 2 3 3 +12 1 1 1 +12 1 2 2 +7 1 3 3 +10 3 2 3 +1 0 3 0 +8 0 0 3 +10 1 0 2 +3 2 0 2 +12 1 0 0 +10 1 2 1 +10 1 3 1 +10 1 1 1 +1 3 1 3 +8 3 0 2 +12 2 1 3 +12 2 2 0 +12 1 0 1 +2 0 3 0 +10 0 2 0 +1 0 2 2 +12 2 3 0 +10 3 0 3 +3 3 1 3 +12 0 0 1 +13 0 3 3 +10 3 1 3 +10 3 2 3 +1 2 3 2 +12 1 1 3 +10 1 0 1 +3 1 1 1 +7 1 0 1 +10 1 3 1 +1 2 1 2 +8 2 2 0 +12 0 3 3 +10 0 0 2 +3 2 3 2 +12 0 2 1 +5 3 2 3 +10 3 1 3 +1 0 3 0 +8 0 2 1 +12 1 1 0 +12 2 0 3 +1 0 0 0 +10 0 1 0 +1 1 0 1 +8 1 1 0 +12 0 3 2 +12 1 2 1 +12 0 3 3 +12 3 1 3 +10 3 3 3 +1 3 0 0 +8 0 1 3 +12 1 1 0 +10 0 2 1 +10 1 3 1 +1 3 1 3 +8 3 1 1 +12 3 2 0 +10 2 0 2 +3 2 3 2 +12 0 2 3 +5 3 2 2 +10 2 2 2 +1 2 1 1 +8 1 2 3 +12 2 0 0 +12 3 3 2 +12 3 0 1 +11 1 0 1 +10 1 3 1 +10 1 2 1 +1 1 3 3 +8 3 3 1 +12 1 1 0 +10 2 0 2 +3 2 2 2 +12 1 0 3 +8 0 2 2 +10 2 2 2 +1 2 1 1 +12 1 3 2 +1 3 3 0 +10 0 2 0 +10 0 1 0 +1 0 1 1 +12 3 3 2 +12 0 1 3 +12 1 2 0 +10 0 2 2 +10 2 1 2 +1 1 2 1 +8 1 3 3 +12 3 3 0 +10 0 0 2 +3 2 0 2 +12 1 3 1 +4 2 0 0 +10 0 1 0 +1 0 3 3 +8 3 3 1 +12 1 1 3 +12 2 2 2 +12 3 1 0 +1 3 3 2 +10 2 2 2 +1 2 1 1 +10 1 0 3 +3 3 0 3 +10 2 0 0 +3 0 1 0 +12 2 3 2 +9 3 2 0 +10 0 1 0 +1 0 1 1 +12 2 1 3 +12 1 3 2 +12 2 1 0 +2 0 3 2 +10 2 1 2 +1 1 2 1 +10 0 0 0 +3 0 3 0 +12 3 2 2 +10 0 0 3 +3 3 0 3 +5 3 2 3 +10 3 3 3 +1 3 1 1 +8 1 0 3 +12 0 1 2 +12 3 2 1 +4 2 0 0 +10 0 1 0 +1 0 3 3 +12 2 3 2 +12 1 3 0 +12 0 0 1 +3 0 1 0 +10 0 2 0 +10 0 3 0 +1 0 3 3 +8 3 1 1 +10 3 0 3 +3 3 2 3 +12 1 3 0 +12 0 1 2 +5 2 3 3 +10 3 1 3 +10 3 1 3 +1 3 1 1 +8 1 1 3 +12 2 3 1 +10 3 0 0 +3 0 2 0 +10 0 0 2 +3 2 3 2 +0 0 2 1 +10 1 3 1 +10 1 2 1 +1 3 1 3 +12 3 0 0 +12 2 2 2 +12 2 1 1 +0 2 0 0 +10 0 2 0 +1 3 0 3 +8 3 3 0 +12 0 2 3 +12 3 1 3 +10 3 3 3 +1 3 0 0 +12 3 1 1 +10 2 0 3 +3 3 0 3 +10 2 0 2 +3 2 1 2 +14 1 2 2 +10 2 2 2 +10 2 1 2 +1 2 0 0 +10 2 0 3 +3 3 3 3 +12 1 3 2 +14 1 2 1 +10 1 2 1 +1 0 1 0 +12 3 3 1 +12 2 1 2 +12 0 2 3 +6 2 1 2 +10 2 3 2 +10 2 1 2 +1 0 2 0 +8 0 1 3 +12 1 3 0 +12 3 0 2 +12 0 0 1 +3 0 1 1 +10 1 1 1 +1 3 1 3 +8 3 3 1 +10 2 0 2 +3 2 2 2 +10 2 0 3 +3 3 1 3 +12 2 1 0 +13 0 3 3 +10 3 1 3 +1 1 3 1 +12 2 1 3 +2 0 3 2 +10 2 3 2 +1 2 1 1 +8 1 0 2 +12 3 1 1 +10 1 0 3 +3 3 1 3 +3 3 1 1 +10 1 2 1 +1 2 1 2 +8 2 1 0 +12 0 2 3 +12 0 2 1 +12 3 1 2 +12 2 3 2 +10 2 1 2 +1 0 2 0 +8 0 1 2 +12 3 2 3 +12 0 2 0 +10 3 0 1 +3 1 2 1 +11 3 1 1 +10 1 2 1 +10 1 3 1 +1 2 1 2 +8 2 0 3 +12 0 1 2 +10 2 0 0 +3 0 1 0 +10 1 0 1 +3 1 2 1 +1 0 0 2 +10 2 2 2 +1 2 3 3 +12 0 2 2 +1 0 0 1 +10 1 2 1 +1 1 3 3 +12 3 1 0 +10 3 0 2 +3 2 2 2 +12 1 1 1 +6 2 0 1 +10 1 1 1 +1 1 3 3 +8 3 2 1 +12 0 1 2 +12 1 3 3 +12 2 2 0 +10 3 2 2 +10 2 3 2 +1 2 1 1 +8 1 0 0 +12 2 1 3 +12 0 3 1 +12 2 3 2 +15 2 3 2 +10 2 3 2 +1 0 2 0 +8 0 3 2 +10 0 0 0 +3 0 1 0 +12 1 3 3 +3 0 1 1 +10 1 1 1 +1 2 1 2 +8 2 1 1 +12 2 0 2 +12 2 1 0 +13 0 3 0 +10 0 2 0 +1 1 0 1 +8 1 0 0 +12 2 0 3 +12 3 1 2 +12 3 3 1 +14 1 2 3 +10 3 3 3 +10 3 3 3 +1 0 3 0 +8 0 3 2 +12 1 1 0 +12 2 3 3 +12 1 0 1 +7 1 3 1 +10 1 3 1 +1 2 1 2 +8 2 2 3 +10 0 0 0 +3 0 2 0 +12 2 1 2 +12 3 0 1 +6 2 1 0 +10 0 3 0 +1 0 3 3 +8 3 0 1 +10 1 0 3 +3 3 2 3 +10 3 0 0 +3 0 2 0 +2 0 3 3 +10 3 2 3 +1 1 3 1 +8 1 2 0 +12 1 3 1 +12 1 1 3 +10 0 0 2 +3 2 3 2 +10 1 2 3 +10 3 1 3 +1 0 3 0 +8 0 0 1 +12 0 0 3 +10 0 0 2 +3 2 2 2 +12 0 1 0 +9 3 2 0 +10 0 1 0 +1 1 0 1 +8 1 0 2 +12 2 1 0 +12 1 0 1 +12 1 2 3 +13 0 3 3 +10 3 3 3 +1 2 3 2 +8 2 1 0 +12 0 0 1 +12 0 2 2 +12 1 3 3 +3 3 1 1 +10 1 3 1 +1 0 1 0 +12 3 1 1 +12 2 3 3 +5 2 3 3 +10 3 2 3 +1 0 3 0 +8 0 1 2 +12 2 0 1 +12 2 2 0 +10 3 0 3 +3 3 2 3 +2 0 3 0 +10 0 1 0 +10 0 3 0 +1 2 0 2 +8 2 2 0 +12 2 2 2 +12 3 0 1 +6 2 1 1 +10 1 2 1 +1 0 1 0 +8 0 1 3 +12 2 1 1 +10 3 0 0 +3 0 1 0 +8 0 2 1 +10 1 2 1 +1 3 1 3 +12 3 0 1 +12 0 1 0 +6 2 1 1 +10 1 1 1 +1 1 3 3 +12 0 2 1 +12 3 3 0 +12 3 0 2 +12 1 2 1 +10 1 1 1 +10 1 1 1 +1 3 1 3 +12 1 0 0 +12 3 1 1 +12 0 2 2 +3 0 1 2 +10 2 1 2 +1 3 2 3 +12 3 3 2 +12 2 0 0 +12 1 0 1 +10 1 2 2 +10 2 3 2 +1 3 2 3 +8 3 0 2 +10 0 0 3 +3 3 1 3 +1 3 3 1 +10 1 2 1 +1 2 1 2 +8 2 1 3 +12 0 2 2 +12 3 0 0 +12 0 1 1 +4 2 0 2 +10 2 2 2 +1 2 3 3 +8 3 0 0 +10 2 0 1 +3 1 2 1 +12 0 0 3 +12 0 1 2 +15 1 3 2 +10 2 3 2 +10 2 1 2 +1 2 0 0 +8 0 0 2 +12 3 0 1 +12 3 3 3 +12 1 3 0 +3 0 1 1 +10 1 1 1 +1 1 2 2 +8 2 2 0 +10 1 0 3 +3 3 2 3 +12 0 2 2 +12 0 1 1 +5 2 3 2 +10 2 3 2 +1 0 2 0 +12 0 1 2 +5 2 3 1 +10 1 2 1 +1 1 0 0 +8 0 3 1 +12 1 3 0 +7 0 3 2 +10 2 1 2 +1 1 2 1 +8 1 3 2 +10 2 0 1 +3 1 0 1 +12 1 0 3 +3 3 1 0 +10 0 1 0 +10 0 2 0 +1 0 2 2 +8 2 2 0 +10 1 0 3 +3 3 3 3 +10 3 0 1 +3 1 1 1 +12 1 2 2 +14 3 2 2 +10 2 3 2 +1 0 2 0 +8 0 1 1 +12 2 0 3 +12 0 1 2 +12 2 1 0 +5 2 3 0 +10 0 2 0 +1 0 1 1 +12 3 2 0 +12 2 0 2 +10 1 0 3 +3 3 0 3 +6 2 0 2 +10 2 2 2 +10 2 3 2 +1 1 2 1 +12 2 2 3 +12 2 0 0 +12 3 3 2 +4 0 2 3 +10 3 1 3 +1 3 1 1 +8 1 3 3 +12 3 2 1 +0 0 2 0 +10 0 2 0 +1 0 3 3 +8 3 1 0 +12 1 3 3 +10 3 0 1 +3 1 1 1 +12 0 2 2 +10 1 2 1 +10 1 3 1 +1 1 0 0 +8 0 1 1 +12 2 2 3 +12 1 0 0 +12 3 1 2 +7 0 3 0 +10 0 3 0 +1 1 0 1 +8 1 2 2 +12 1 0 1 +10 2 0 0 +3 0 2 0 +12 1 0 3 +7 3 0 0 +10 0 2 0 +1 2 0 2 +12 2 3 3 +12 2 2 0 +2 0 3 1 +10 1 2 1 +1 2 1 2 +8 2 3 1 +12 0 1 0 +12 3 1 2 +12 1 0 3 +10 3 2 0 +10 0 2 0 +1 0 1 1 +8 1 1 2 +12 2 3 0 +12 0 3 1 +13 0 3 0 +10 0 3 0 +10 0 2 0 +1 2 0 2 +12 2 2 0 +12 3 3 1 +7 3 0 1 +10 1 3 1 +1 1 2 2 +8 2 2 0 +12 3 1 2 +10 3 0 1 +3 1 2 1 +0 1 2 3 +10 3 2 3 +10 3 3 3 +1 0 3 0 +12 3 2 1 +12 0 3 3 +5 3 2 1 +10 1 3 1 +10 1 1 1 +1 1 0 0 +8 0 0 3 +12 0 3 2 +12 2 2 0 +12 3 0 1 +11 1 0 0 +10 0 2 0 +1 3 0 3 +8 3 0 1 +12 0 3 3 +10 0 0 0 +3 0 3 0 +10 2 0 2 +3 2 2 2 +9 3 2 2 +10 2 3 2 +1 1 2 1 +12 2 1 2 +15 2 3 2 +10 2 2 2 +10 2 1 2 +1 2 1 1 +12 2 0 3 +12 0 3 2 +4 2 0 2 +10 2 3 2 +1 2 1 1 +8 1 3 3 +10 1 0 2 +3 2 3 2 +12 2 1 1 +12 0 2 0 +0 1 2 1 +10 1 3 1 +1 1 3 3 +8 3 1 1 +10 0 0 2 +3 2 0 2 +12 3 2 3 +10 3 0 0 +3 0 1 0 +10 0 2 0 +10 0 3 0 +10 0 2 0 +1 0 1 1 +8 1 2 2 +10 1 0 1 +3 1 2 1 +10 1 0 0 +3 0 2 0 +12 1 3 1 +10 1 2 1 +1 2 1 2 +12 1 3 3 +10 3 0 1 +3 1 3 1 +6 0 1 3 +10 3 3 3 +10 3 2 3 +1 3 2 2 +12 2 2 3 +12 1 3 0 +7 0 3 1 +10 1 3 1 +1 2 1 2 +10 1 0 0 +3 0 0 0 +10 3 0 3 +3 3 1 3 +12 1 0 1 +1 3 3 0 +10 0 1 0 +1 2 0 2 +8 2 3 1 +12 2 3 3 +12 1 3 0 +12 1 1 2 +7 0 3 3 +10 3 2 3 +1 3 1 1 +8 1 3 2 +12 2 0 0 +12 2 3 3 +12 3 2 1 +2 0 3 1 +10 1 3 1 +1 2 1 2 +8 2 3 1 +12 3 3 3 +12 3 2 0 +12 2 3 2 +0 2 0 2 +10 2 1 2 +10 2 1 2 +1 2 1 1 +8 1 1 0 diff --git a/2018/src/day16.rs b/2018/src/day16.rs index 6617825..64e1846 100644 --- a/2018/src/day16.rs +++ b/2018/src/day16.rs @@ -1,19 +1,157 @@ +use std::io::BufRead; +use std::io::BufReader; use std::io::Read; +use regex::Regex; + use common::Solution; +#[derive(Copy, Clone, Debug)] +enum OpCode { + ADDR, + ADDI, + MULR, + MULI, + BANR, + BANI, + BORR, + BORI, + SETR, + SETI, + GTIR, + GTRI, + GTRR, + EQIR, + EQRI, + EQRR, +} + +const OP_LIST: [OpCode; 16] = [ + OpCode::ADDR, + OpCode::ADDI, + OpCode::MULR, + OpCode::MULI, + OpCode::BANR, + OpCode::BANI, + OpCode::BORR, + OpCode::BORI, + OpCode::SETR, + OpCode::SETI, + OpCode::GTIR, + OpCode::GTRI, + OpCode::GTRR, + OpCode::EQIR, + OpCode::EQRI, + OpCode::EQRR, +]; + +enum CPUErr { + InvalidRegister(i32), +} + #[derive(Default)] -pub struct Day16 {} +struct CPU { + registers: [i32; 4], +} + +impl CPU { + pub fn execute(&mut self, op: OpCode, var: &[i32]) -> Result { + use self::OpCode::*; + let res = match op { + ADDR => self.reg(var[0])? + self.reg(var[1])?, + ADDI => self.reg(var[0])? + var[1], + MULR => self.reg(var[0])? * self.reg(var[1])?, + MULI => self.reg(var[0])? * var[1], + BANR => self.reg(var[0])? & self.reg(var[1])?, + BANI => self.reg(var[0])? & var[1], + BORR => self.reg(var[0])? | self.reg(var[1])?, + BORI => self.reg(var[0])? | var[1], + SETR => self.reg(var[0])?, + SETI => var[0], + GTRR => (self.reg(var[0])? > self.reg(var[1])?).into(), + GTIR => (var[0] > self.reg(var[1])?).into(), + GTRI => (self.reg(var[0])? > var[1]).into(), + EQRR => (self.reg(var[0])? == self.reg(var[1])?).into(), + EQIR => (var[0] == self.reg(var[1])?).into(), + EQRI => (self.reg(var[0])? == var[1]).into(), + }; + + self.registers[var[2] as usize] = res; + Ok(res) + } + + fn reg(&self, index: i32) -> Result { + if let Some(val) = self.registers.get(index as usize) { + Ok(*val) + } else { + Err(CPUErr::InvalidRegister(index)) + } + } +} + +pub struct Day16 { + matcher: Regex, + buf: String, +} impl Day16 { pub fn new() -> Self { - Default::default() + Day16 { + matcher: Regex::new(r"(\d+),? (\d+),? (\d+),? (\d+)").unwrap(), + buf: String::new(), + } + } + + fn read(&mut self, reader: &mut BufRead, target: &mut [i32; 4]) -> bool { + self.buf.clear(); + if let Err(_) = reader.read_line(&mut self.buf) { + return false; + } + + if let Some(captures) = self.matcher.captures(&self.buf) { + for i in 0..4 { + target[i] = captures[i + 1].parse().unwrap(); + } + + true + } else { + false + } } } impl Solution for Day16 { - fn part1(&mut self, _input: &mut Read) -> String { - unimplemented!() + fn part1(&mut self, input: &mut Read) -> String { + let mut reader = BufReader::new(input); + + let mut before = [0; 4]; + let mut op = [0; 4]; + let mut after = [0; 4]; + + let mut cpu: CPU = Default::default(); + let mut counter = 0; + + while self.read(&mut reader, &mut before) { + self.read(&mut reader, &mut op); + self.read(&mut reader, &mut after); + reader.read_line(&mut self.buf).unwrap_or(0); + + let mut valid = 0; + + for option in &OP_LIST { + cpu.registers = before; + if let Ok(val) = cpu.execute(*option, &op[1..4]) { + if val == after[op[3] as usize] { + valid += 1; + } + } + } + + if valid >= 3 { + counter += 1; + } + } + format!("{}", counter) } fn part2(&mut self, _input: &mut Read) -> String { @@ -22,4 +160,17 @@ impl Solution for Day16 { } #[cfg(test)] -mod tests {} +mod tests { + use common::Solution; + use day16::Day16; + + #[test] + fn sample_part1() { + let input: &[u8] = b"Before: [3, 2, 1, 1] +9 2 1 2 +After: [3, 2, 2, 1] +"; + let mut instance = Day16::new(); + assert_eq!("1", instance.part1(&mut input.as_ref())); + } +}