public void OJ047_PermutationsIITest2()
        {
            IList<IList<int>> result = new OJ047_PermutationsII().PermuteUnique(new int[] { 2, 2, 1, 1 });

            Assert.AreEqual(6, result.Count);

            ArrayAssert.AreEqual(new int[] { 1, 1, 2, 2 }, (int[])result[5]);
            ArrayAssert.AreEqual(new int[] { 1, 2, 1, 2 }, (int[])result[4]);
            ArrayAssert.AreEqual(new int[] { 1, 2, 2, 1 }, (int[])result[3]);
            ArrayAssert.AreEqual(new int[] { 2, 1, 1, 2 }, (int[])result[2]);
            ArrayAssert.AreEqual(new int[] { 2, 1, 2, 1 }, (int[])result[1]);
            ArrayAssert.AreEqual(new int[] { 2, 2, 1, 1 }, (int[])result[0]);
        }
        public void OJ047_PermutationsIITest1()
        {
            IList<IList<int>> result = new OJ047_PermutationsII().PermuteUnique(new int[] { 1, 1, 2 });

            Assert.AreEqual(3, result.Count);

            Assert.AreEqual(1, result[0][0]);
            Assert.AreEqual(1, result[0][1]);
            Assert.AreEqual(2, result[0][2]);

            Assert.AreEqual(1, result[1][0]);
            Assert.AreEqual(2, result[1][1]);
            Assert.AreEqual(1, result[1][2]);

            Assert.AreEqual(2, result[2][0]);
            Assert.AreEqual(1, result[2][1]);
            Assert.AreEqual(1, result[2][2]);
        }