static void Main(string[] args)
{
Console.WriteLine("Test 1");
foreach (int i in GetElementsInAllGroups(new int[][] { new int[] { 1, 2, 3, 3 }, new int[] { 2, 2, 3, 4 } }))
Console.WriteLine("\t{0}", i);
Console.WriteLine("Test 2");
foreach (int i in GetElementsInAllGroups(new int[][] { new int[] { 1, 2, 3, 3 }, new int[] { 2, 2, 3, 4 }, new int[]{1, 5, 6} }))
Console.WriteLine("\t{0}", i);
Console.WriteLine("Test 3");
foreach (int i in GetElementsInAllGroups(new int[][] { new int[0] }))
Console.WriteLine("\t{0}", i);
Console.WriteLine("Test 4");
foreach (int i in GetElementsInAllGroups(new int[][] { new int[] { 1, 2, 3, 3 }, new int[0] }))
Console.WriteLine("\t{0}", i);
Console.WriteLine("Test 5");
foreach (int i in GetElementsInAllGroups(new int[][] { new int[] { 1, 2, 3, 3 }, null }))
Console.WriteLine("\t{0}", i);
Console.WriteLine("Test 6");
foreach (int i in GetElementsInAllGroups(new int[][] { null, new int[] { 1, 2, 3, 3 } }))
Console.WriteLine("\t{0}", i);
Console.WriteLine("Test 7");
foreach (int i in GetElementsInAllGroups(new int[][] { null }))
Console.WriteLine("\t{0}", i);
Console.WriteLine("Test 8");
foreach (int i in GetElementsInAllGroups(new int[0][]))
Console.WriteLine("\t{0}", i);
Console.WriteLine("Test 9");
foreach (int i in GetElementsInAllGroups<int>(null))
Console.WriteLine("\t{0}", i);
}