public void CartesianProductDistinctPairs()
        {
            var expected = new[] {
                new []
                {
                    new[] { 1 },
                    new[] { 2 },
                    new[] { 3 },
                    new[] { 4 },
                    new[] { 5 },
                },
                new []
                {
                    new[] { 1, 2 },
                    new[] { 1, 3 },
                    new[] { 1, 4 },
                    new[] { 1, 5 },
                    new[] { 2, 3 },
                    new[] { 2, 4 },
                    new[] { 2, 5 },
                    new[] { 3, 4 },
                    new[] { 3, 5 },
                    new[] { 4, 5 },
                },
                new []
                {
                    new[] { 1, 2, 3 },
                    new[] { 1, 2, 4 },
                    new[] { 1, 2, 5 },
                    new[] { 1, 3, 4 },
                    new[] { 1, 3, 5 },
                    new[] { 1, 4, 5 },
                    new[] { 2, 3, 4 },
                    new[] { 2, 3, 5 },
                    new[] { 2, 4, 5 },
                    new[] { 3, 4, 5 },
                },
                new []
                {
                    new[] { 1, 2, 3, 4 },
                    new[] { 1, 2, 3, 5 },
                    new[] { 1, 2, 4, 5 },
                    new[] { 1, 3, 4, 5 },
                    new[] { 2, 3, 4, 5 },
                },
                new []
                {
                    new[] { 1, 2, 3, 4, 5 }
                }
            };

            Assert.Equal(expected, MatrixExtensions.CartesianProductDistinctPairs(5));
        }