1 for (int c0 = 0; c0 <= floord(n - 1, 3); c0 += 1) 2 for (int c2 = 3 * c0 + 1; c2 <= min(n, 3 * c0 + 3); c2 += 1) 3 S1(c2, c0); 4 for (int c0 = floord(n, 3); c0 <= 2 * floord(n, 3); c0 += 1) 5 for (int c1 = 0; c1 < n; c1 += 1) 6 for (int c3 = max(1, (n % 3) - n + 3 * c0); c3 <= min(n, (n % 3) - n + 3 * c0 + 2); c3 += 1) 7 S2(c1 + 1, c3, 0, n / 3, c0 - n / 3); 8