for (int c0 = 1; c0 <= floord(Ny, 2) + 2; c0 += 1)
for (int c1 = max(c0 - 1, c0 / 2 + 1); c1 <= min(c0, (Ny + 2 * c0) / 4); c1 += 1) {
if (Ny + 2 * c0 >= 4 * c1 + 1) {
for (int c2 = 1; c2 <= 2; c2 += 1) {
S1(c0 - c1, c1, 2 * c0 - 2 * c1, -2 * c0 + 4 * c1, c2);
S2(c0 - c1, c1, 2 * c0 - 2 * c1, -2 * c0 + 4 * c1 - 1, c2);
}
} else {
for (int c2 = 1; c2 <= 2; c2 += 1)
S2((-Ny + 2 * c0) / 4, (Ny + 2 * c0) / 4, (-Ny / 2) + c0, Ny - 1, c2);
}
}