bastien.monsarrat 6 年之前
父節點
當前提交
bf700cb3e2
共有 5 個文件被更改,包括 4294 次插入0 次删除
  1. 6 0
      Adv2018.sln
  2. 9 0
      D16.1/D16.1.csproj
  3. 131 0
      D16.1/Program.cs
  4. 8 0
      D16.1/Properties/launchSettings.json
  5. 4140 0
      D16.1/input.txt

+ 6 - 0
Adv2018.sln

@@ -67,6 +67,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "D15.1", "D15.1\D15.1.csproj
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D15.2", "D15.2\D15.2.csproj", "{B3178FFF-996C-4876-96A1-68DA9590A7D3}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "D16.1", "D16.1\D16.1.csproj", "{12EF2505-6012-4829-B24A-9BD683915DBC}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -201,6 +203,10 @@ Global
 		{B3178FFF-996C-4876-96A1-68DA9590A7D3}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{B3178FFF-996C-4876-96A1-68DA9590A7D3}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{B3178FFF-996C-4876-96A1-68DA9590A7D3}.Release|Any CPU.Build.0 = Release|Any CPU
+		{12EF2505-6012-4829-B24A-9BD683915DBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{12EF2505-6012-4829-B24A-9BD683915DBC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{12EF2505-6012-4829-B24A-9BD683915DBC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{12EF2505-6012-4829-B24A-9BD683915DBC}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

+ 9 - 0
D16.1/D16.1.csproj

@@ -0,0 +1,9 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+    <OutputType>Exe</OutputType>
+    <TargetFramework>netcoreapp2.1</TargetFramework>
+    <RootNamespace>D16._1</RootNamespace>
+  </PropertyGroup>
+
+</Project>

+ 131 - 0
D16.1/Program.cs

@@ -0,0 +1,131 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+
+namespace D16._1
+{
+    public class Computer
+    {
+        public ProcessUnit CPU { get; private set; }
+
+        public Computer() => CPU = new ProcessUnit();
+
+        public class ProcessUnit
+        {
+            public delegate void OpCode(ushort a, ushort b, ushort c);
+
+            public Register[] Registers = new Register[4] { 0, 0, 0, 0 };
+
+            public OpCode[] OpCodes;
+
+            public void SetRegisters(ushort[] registers)
+            {
+                for (var i = 0; i < Registers.Length; ++i)
+                    Registers[i] = registers[i];
+            }
+
+            public ProcessUnit()
+            {
+                OpCodes = new OpCode[]
+                {
+                    (a, b, c) => { Registers[c] = Registers[a] + Registers[b]; },
+                    (a, b, c) => { Registers[c] = Registers[a] + b; },
+                    (a, b, c) => { Registers[c] = Registers[a] * Registers[b]; },
+                    (a, b, c) => { Registers[c] = Registers[a] * b; },
+                    (a, b, c) => { Registers[c] = Registers[a] & Registers[b]; },
+                    (a, b, c) => { Registers[c] = Registers[a] & b; },
+                    (a, b, c) => { Registers[c] = Registers[a] | Registers[b]; },
+                    (a, b, c) => { Registers[c] = Registers[a] | b; },
+                    (a, b, c) => { Registers[c] = Registers[a]; },
+                    (a, b, c) => { Registers[c] = a; },
+                    (a, b, c) => { Registers[c] = a > Registers[b] ? 1 : 0; },
+                    (a, b, c) => { Registers[c] = Registers[a] > b ? 1 : 0; },
+                    (a, b, c) => { Registers[c] = Registers[a] > Registers[b] ? 1 : 0; },
+                    (a, b, c) => { Registers[c] = a == Registers[b] ? 1 : 0; },
+                    (a, b, c) => { Registers[c] = Registers[a] == b ? 1 : 0; },
+                    (a, b, c) => { Registers[c] = Registers[a] == Registers[b] ? 1 : 0; },
+                };
+            }
+
+            public class Register
+            {
+                ushort Value { get; set; }
+
+                public static implicit operator Register(ushort a) => new Register { Value = a };
+                public static implicit operator ushort(Register a) => a.Value;
+                public static implicit operator Register(int a) => new Register { Value = (ushort)a };
+                public static bool operator >(Register a, Register b) => a.Value > b.Value;
+                public static bool operator <(Register a, Register b) => a.Value < b.Value;
+                public static bool operator ==(Register a, Register b) => a.Value == b.Value;
+                public static bool operator !=(Register a, Register b) => a.Value != b.Value;
+
+                public override bool Equals(object obj)
+                {
+                    var register = obj as Register;
+                    return register != null &&
+                           Value == register.Value;
+                }
+
+                public override int GetHashCode() => HashCode.Combine(Value);
+            }
+        }
+    }
+
+    class Program
+    {
+        static void Main(string[] args)
+        {
+            if (args.Length < 1) return;
+            if (File.Exists(args[0]) == false) return;
+            var file = File.OpenText(args[0]);
+
+            var pc = new Computer();
+
+            var result = new Dictionary<int, int>();
+
+            bool prevIsBlank = false;
+            int sample = 0;
+            do
+            {
+                var line = file.ReadLine();
+                if (line == null) break;
+
+                if (line == string.Empty || line.StartsWith("//"))
+                {
+                    if (prevIsBlank) break;
+                    prevIsBlank = true;
+                    continue;
+                }
+                else prevIsBlank = false;
+
+                result.Add(sample, 0);
+
+                string before = line;
+                string op = file.ReadLine();
+                string after = file.ReadLine();
+
+                var regBefore = before.Substring(9, before.Length - 10).Split(", ").Select(s => ushort.Parse(s)).ToArray();
+                var regAfter = after.Substring(9, after.Length - 10).Split(", ").Select(s => ushort.Parse(s)).ToArray();
+                var opParams = op.Split(" ").Select(s => ushort.Parse(s)).ToArray();
+
+                foreach (var opc in pc.CPU.OpCodes)
+                {
+                    pc.CPU.SetRegisters(regBefore);
+
+                    opc(opParams[1], opParams[2], opParams[3]);
+
+                    var regresult = pc.CPU.Registers;
+
+                    bool isSame = regresult[opParams[3]] == regAfter[opParams[3]];
+                    if (isSame) result[sample]++;
+                }
+
+                sample++;
+            } while (true);
+            
+            var resultCount = result.Count(r => r.Value >= 3);
+            Console.WriteLine($"The result is : {resultCount}");
+        }
+    }
+}

+ 8 - 0
D16.1/Properties/launchSettings.json

@@ -0,0 +1,8 @@
+{
+  "profiles": {
+    "D16.1": {
+      "commandName": "Project",
+      "commandLineArgs": "\"D:\\adv\\Adv2018\\D16.1\\input.txt\" "
+    }
+  }
+}

+ 4140 - 0
D16.1/input.txt

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