{
if(l == r)
{
for(int i = 1; i <= 7; i++) sum[rt][i] = 0;
sum[rt][2] = x[r + 1] - x[l];
}
else
{
sum[rt][7] = sum[lch(rt)][5] + sum[rch(rt)][5] + sum[lch(rt)][7] + sum[rch(rt)][7];
sum[rt][6] = sum[lch(rt)][4] + sum[rch(rt)][4] + sum[lch(rt)][6] + sum[rch(rt)][6];
sum[rt][5] = 0;
sum[rt][4] = 0;
sum[rt][3] = sum[lch(rt)][1] + sum[rch(rt)][1] + sum[lch(rt)][3] + sum[rch(rt)][3];
sum[rt][2] = x[r + 1] - x[l] - sum[rt][7] - sum[rt][6] - sum[rt][3];
sum[rt][1] = 0;
}
}
else if(cnt[rt] == 1)
{
if(l == r)
{
for(int i = 1; i <= 7; i++) sum[rt][i] = 0;
sum[rt][1] = x[r + 1] - x[l];
}
else
{
sum[rt][7] = sum[lch(rt)][7] + sum[rch(rt)][7] + sum[lch(rt)][6] + sum[rch(rt)][6];
sum[rt][6] = 0;
sum[rt][5] = sum[lch(rt)][4] + sum[rch(rt)][4] + sum[lch(rt)][5] + sum[rch(rt)][5];
sum[rt][4] = 0;
sum[rt][3] = sum[lch(rt)][2] + sum[rch(rt)][2] + sum[lch(rt)][3] + sum[rch(rt)][3];
sum[rt][2] = 0;
sum[rt][1] = x[r + 1] - x[l] - sum[rt][7] - sum[rt][5] - sum[rt][3];
}
}
else
{
if(l == r)
{
for(int i = 1; i <= 7; i++) sum[rt][i] = 0;
}
else
{
for(int i = 1; i <= 7; i++) sum[rt][i] = sum[lch(rt)][i] + sum[rch(rt)][i];
}
}
}
void update(int L, int R, int v, int l, int r, int rt)
{
if(L <= l && R >= r)
{
if(v > 0)cnt[rt] |= v, num[rt][v]++;
else
{
v = -v;
if(cnt[rt] & v)
{
num[rt][v]--;
if(num[rt][v] == 0)cnt[rt] = cnt[rt] ^ v;
}
}
up(rt, l, r);
return;
}
int m = (l + r) >> 1;
if(R > m) update(L, R, v, rson);
up(rt, l, r);
}
int main()
{
int T;
scanf("%d", &T);
int cas = 0;
while(T--)
{
memset(ans, 0, sizeof(ans));
memset(sum, 0, sizeof(sum));
memset(cnt, 0, sizeof(cnt));
memset(num, 0, sizeof(num));
int m = 0;
scanf("%d", &n);
for(int i = 1; i <= n; i++)
{
scanf("%s%I64d%I64d%I64d%I64d", p[i].op, &p[i].lx, &p[i].ly, &p[i].rx, &p[i].ry);
x[m] = p[i].lx;
seg[m++] = Seg(get(p[i].op), p[i].lx, p[i].rx, p[i].ly, 1);
x[m] = p[i].rx;
seg[m++] = Seg(-get(p[i].op), p[i].lx, p[i].rx, p[i].ry, -1);
}
sort(x, x + m);
sort(seg, seg + m);
int kx = unique(x, x + m) - x;
for(int i = 0; i < m - 1; i++)
{
int l = bin(0, kx - 1, seg[i].l);
int r = bin(0, kx - 1, seg[i].r) - 1;
if(l <= r){
update(l, r, seg[i].co, 0, kx - 1, 1);
}
for(int j = 1; j <= 7; j++)
ans[j] += sum[1][j] * (seg[i + 1].h - seg[i].h) ;
}
printf("Case %d:\n", ++cas);
printf("%I64d\n", ans[1]);
printf("%I64d\n", ans[2]);
printf("%I64d\n", ans[4]);
printf("%I64d\n", ans[3]);
printf("%I64d\n", ans[5]);
printf("%I64d\n", ans[6]);
printf("%I64d\n", ans[7]);
}
return 0;
}
#include
#include
#include
#include
#include
#include
#include
#include