1 for (int c0 = 1; c0 <= M; c0 += 1)
2   for (int c1 = 1; c1 < 2 * N; c1 += 1) {
3     for (int c2 = max(1, -N + c1); c2 < (c1 + 1) / 2; c2 += 1)
4       S1(c0, c1 - c2, c2);
5     if ((c1 + 1) % 2 == 0)
6       S2(c0, (c1 + 1) / 2);
7   }
8