#include <map>
#include <set>
#include <algorithm>
#include <stdio.h>
#include <iostream>
using namespace std;
typedef long long lld;
set<int> se1, se2;
#define maxn 15000
int X[maxn*2], Y[maxn*2];
map<int, int> mat;

struct nodes {
    int x, y1, y2;
    int no,cl;
} ;
nodes In[maxn], Out[maxn];
struct Tnode {
    int len[8];
    int a[3];
};
Tnode tree[maxn*10];
bool cmp(nodes a, nodes b) {
    return a.x < b.x;
}
void debug(int p){
    return ;
    int i;
    printf("%d----\n",p);
    for (i=0;i<8;i++) printf("%d ",tree[p].len[i]);
    printf("[%d %d %d]\n",tree[p].a[0],tree[p].a[1],tree[p].a[2]);
}
void buildtree(int p, int left, int right) {
    memset(tree[p].a,0,sizeof(tree[p].a));
    memset(tree[p].len,0,sizeof(tree[p].len));
    tree[p].len[0] = Y[right + 1] - Y[left];
    if (left == right) {

        return;
    }
    int mid = (left + right) / 2;
    buildtree(p * 2, left, mid);
    buildtree(p * 2 + 1, mid + 1, right);
    return;
}
void update(int &p,int &left,int &right){
    int i,j,st = 0;
    memset(tree[p].len,0,sizeof(tree[p].len));
    for (i=0;i<3;i++)
        if (tree[p].a[i])
            st|=(1<<i);
    if (left==right){
        tree[p].len[st] = Y[right+1]-Y[left];
        return ;
    }
    for (i=0;i<2;i++)
        for (j=0;j<8;j++)
            tree[p].len[j|st]+=tree[2*p+i].len[j];
}

void Tinsert(int p, int left, int right, int l, int r, int v) {

   // printf("%d %d %d %d %d %d\n",p,left,right,l,r,v);
    if (left == l && right == r) {
            if (v>=0) tree[p].a[v]++;
            else tree[p].a[-v-1]--;
            update(p,left,right);
        return;
    }
    int mid = (left + right) / 2;
    if (mid < l) {
        Tinsert(p * 2 + 1, mid + 1, right, l, r, v);
    } else if (mid >= r) {
        Tinsert(p * 2, left, mid, l, r, v);
    } else {
        Tinsert(p * 2, left, mid, l, mid, v);
        Tinsert(p * 2 + 1, mid + 1, right, mid + 1, r, v);
    }
    update(p,left,right);
    /* printf("%d %d %d %d %d %d\n",p,left,right,l,r,v);
     printf("%d %lf----\n",tree[p].tim,tree[p].len);*/
}
int code(int c){
    if (c=='R') return 0;
    if (c=='G') return 1;
    if (c=='B') return 2;
}

int main() {
    int tcase = 0;
    int n, i ,j;
    int x1, x2, y1, y2;
    int nx,ny,n1,n2,tcas = 1;
    char op[10];
    int tt;
    scanf("%d",&tt);
    while (tt--) {
        scanf("%d", &n);
        se1.clear(), se2.clear();
        mat.clear();
        for (i = 1; i <= n; i++) {
            scanf("%s%d%d%d%d", op,&x1, &y1, &x2, &y2);
            In[i].no = i, In[i].x = x1, In[i].y1 = y1, In[i].y2 = y2, In[i].cl = code(op[0]);
            Out[i].no = i, Out[i].x = x2, Out[i].y1 = y1, Out[i].y2 = y2,Out[i].cl = code(op[0]);
            se1.insert(x1), se1.insert(x2);
            se2.insert(y1), se2.insert(y2);
        }
        sort(In + 1, In + 1 + n, cmp);
        sort(Out + 1, Out + 1 + n, cmp);
        nx = 1, ny = 1;
        for (set<int>::iterator p = se1.begin(); p != se1.end(); p++) X[nx++] = *p;
        for (set<int>::iterator p = se2.begin(); p != se2.end(); p++) Y[ny++] = *p;
        nx--,ny--;
        for (i = 1; i<= ny; i++)
        {
            mat[Y[i]] = i;
           // printf("%lf %d\n",Y[i],mat[Y[i]]);
        }
        buildtree(1, 1, ny-1);
        n1 = 1, n2 = 1;
        lld sum[8];
        //printf("%d ny\n",ny);
        memset(sum,0,sizeof(sum));
        for (i = 1; i < nx ; i++) {
            while (In[n1].x == X[i] && n1 <= n) {
                // printf("1 1 %d %d %d 1====\n",ny-1, mat[In[n1].y1], mat[In[n1].y2] - 1) ;
               Tinsert(1, 1, ny-1, mat[In[n1].y1], mat[In[n1].y2] - 1, In[n1].cl);
               
                n1++;
            }
            while (Out[n2].x == X[i] && n2 <= n) {
               Tinsert(1, 1, ny-1, mat[Out[n2].y1], mat[Out[n2].y2] - 1, -Out[n2].cl-1), n2++;
            }
             debug(1);
           // printf("%lf %lf %lf\n",tree[1].len,X[i+1],X[i]);
            for (j=0;j<8;j++)
                {
                    sum[j] += 1LL*tree[1].len[j] * (X[i + 1] - X[i]);
                    //printf("%lld ---\n",sum[j]);
                }
        }
        int order[8] = {0,1,2,4,3,5,6,7};
        printf("Case %d:\n",tcas++);
        for (i=1;i<8;i++)
                cout<<sum[order[i]]<<endl;



    }
}
