1{
2  for (int c1 = 1; c1 <= M; c1 += 1) {
3    S1(c1);
4    for (int c2 = c1 + 1; c2 <= M; c2 += 1)
5      S4(c1, c2);
6  }
7  for (int c0 = 1; c0 < 3 * M - 1; c0 += 3) {
8    S3((c0 + 2) / 3);
9    if (3 * M >= c0 + 8) {
10      for (int c1 = (c0 + 5) / 3; c1 <= M; c1 += 1) {
11        S6((c0 + 2) / 3, c1);
12        for (int c4 = (c0 + 5) / 3; c4 < c1; c4 += 1)
13          S5(c4, c1, (c0 + 2) / 3);
14      }
15    } else if (c0 + 5 == 3 * M)
16      S6(M - 1, M);
17    for (int c1 = (c0 + 5) / 3; c1 <= M; c1 += 1)
18      S2(c1, (c0 + 2) / 3);
19  }
20}
21