1{
2  for (int c0 = a1; c0 <= min(a2 - 1, b1); c0 += 1)
3    for (int c1_0 = c1; c1_0 <= d1; c1_0 += 1)
4      s0(c0, c1_0);
5  if (c2 >= d2 + 1) {
6    for (int c0 = max(a1, a2); c0 <= min(b2, b1); c0 += 1)
7      for (int c1_0 = c1; c1_0 <= d1; c1_0 += 1)
8        s0(c0, c1_0);
9  } else
10    for (int c0 = a2; c0 <= b2; c0 += 1)
11      if (a1 >= c0 + 1) {
12        for (int c1_0 = c2; c1_0 <= d2; c1_0 += 1)
13          s1(c0, c1_0);
14      } else if (c0 >= b1 + 1) {
15        for (int c1_0 = c2; c1_0 <= d2; c1_0 += 1)
16          s1(c0, c1_0);
17      } else {
18        for (int c1_0 = c1; c1_0 <= min(c2 - 1, d1); c1_0 += 1)
19          s0(c0, c1_0);
20        for (int c1_0 = c2; c1_0 <= min(d2, c1 - 1); c1_0 += 1)
21          s1(c0, c1_0);
22        for (int c1_0 = max(c2, c1); c1_0 <= min(d1, d2); c1_0 += 1) {
23          s0(c0, c1_0);
24          s1(c0, c1_0);
25        }
26        for (int c1_0 = max(d2 + 1, c1); c1_0 <= d1; c1_0 += 1)
27          s0(c0, c1_0);
28        for (int c1_0 = max(max(d1 + 1, c1), c2); c1_0 <= d2; c1_0 += 1)
29          s1(c0, c1_0);
30      }
31  for (int c0 = max(max(a1, a2), b2 + 1); c0 <= b1; c0 += 1)
32    for (int c1_0 = c1; c1_0 <= d1; c1_0 += 1)
33      s0(c0, c1_0);
34}
35