// recursive approach is easiest way to populate possibilities (colors ^ slots = 8 ^ 5 = 32768) private void generatePossibilities(ColorSequence c, int n) { if (n == DEPTH) { current_set.Add(c); return; } for(int i = 0; i < COLORS; i++) { ColorSequence c2 = (ColorSequence)c.Clone(); c2[n] = (byte)(1 << i); generatePossibilities(c2, n + 1); } }