var sol = new Solution(); var cases = new (int[][] grid, bool expected, string name)[] { ( new[] { new[] { 1, 4 }, new[] { 2, 3 } }, true, "Example 1" ), ( new[] { new[] { 1, 2 }, new[] { 3, 4 } }, true, "Example 2" ), ( new[] { new[] { 1, 2, 4 }, new[] { 2, 3, 5 } }, false, "Example 3" ), ( new[] { new[] { 4, 1, 8 }, new[] { 3, 2, 6 } }, false, "Example 4" ), ( new[] { new[] { 5, 5, 6, 2, 2, 2 } }, true, "Example 5" ), ( new[] { new[] { 100000 }, new[] { 86218 }, new[] { 100000 } }, true, "Example 6" ), ( new[] { new[] { 1, 2, 4 }, new[] { 1, 6, 6 }, new[] { 5, 6, 7 } }, true, "Example 7" ), ( new[] { new[] { 1, 2, 1, 1, 1 }, new[] { 1, 1, 1, 2, 1 } }, true, "Example 8" ), ( new[] { new[] { 1, 1 }, new[] { 2, 1 }, new[] { 1, 1 }, new[] { 1, 2 }, new[] { 1, 1 } }, true, "Example 9" ), ( new[] { new[] { 10, 5, 4, 5 } }, false, "Example 10" ), ( new[] { new[] { 1, 1 }, new[] { 2, 1 }, new[] { 4, 3 } }, false, "Example 11" ), ( new[] { new[] { 4 }, new[] { 3 }, new[] { 4 }, new[] { 4 }, new[] { 4 } }, false, "Example 12" ), ( new[] { new[] { 100000 }, new[] { 100000 }, new[] { 100000 }, new[] { 100000 }, new[] { 1 } }, true, "Example 13" ), }; foreach (var (grid, expected, name) in cases) { var actual = sol.CanPartitionGrid(grid); Console.WriteLine($"{name}: {actual} (expected: {expected})"); }