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