1 S1(0, 0);
2 for (int c0 = 1; c0 <= N; c0 += 1) {
3   S2(c0, 0);
4   for (int c1 = 1; c1 < c0; c1 += 1)
5     S6(c0, c1);
6   S3(c0, c0);
7 }
8 S7(N + 1, 0);
9 for (int c1 = 1; c1 <= N; c1 += 1) {
10   S6(N + 1, c1);
11   S8(N + 1, c1);
12 }
13 for (int c0 = N + 2; c0 < 2 * M - N - 1; c0 += 1) {
14   S7(c0, -N + (N + c0 + 1) / 2 - 1);
15   if ((N + c0) % 2 == 0) {
16     S5(c0, (-N + c0) / 2);
17     S8(c0, (-N + c0) / 2);
18   }
19   for (int c1 = -N + (N + c0) / 2 + 1; c1 < (N + c0 + 1) / 2; c1 += 1) {
20     S6(c0, c1);
21     S8(c0, c1);
22   }
23   if ((N + c0) % 2 == 0) {
24     S4(c0, (N + c0) / 2);
25     S8(c0, (N + c0) / 2);
26   }
27 }
28 for (int c0 = 2 * M - N - 1; c0 < 2 * M - 1; c0 += 1)
29   for (int c1 = -M + c0 + 1; c1 < M; c1 += 1)
30     S6(c0, c1);
31