#include <iostream>
using namespace std;
const int MAXP = 100;
int dis(int *p1, int *p2)
{
    int d = 0;
    for(int i = 0; i < 3; ++i)
    {
        d += abs(p1[i] - p2[i]);
    }
    return d;
}
int main()
{
    int N;
    cin>>N;
    int points[MAXP][3];
    for(int no = 0; no < N; ++no)
    {
        int P;
        cin>>P;
        fscanf(stdin, "%d,%d,%d", &points[0][0], &points[0][1], &points[0][2]);
        int area = 6;
        bool iscorrect = true;
        cout<<no + 1<<" ";
        for(int i = 1; i < P; ++i)
        {
            fscanf(stdin, "%d,%d,%d", &points[i][0], &points[i][1], &points[i][2]);
            if(!iscorrect)
            {
                continue;
            }
            area += 6;
            int j = 0;
            bool isconnected = false;
            while(j < i)
            {
                int d = dis(points[i], points[j]);
                if(d == 0)
                {
                    break;
                }
                if(d == 1)
                {
                    isconnected = true;
                    area -= 2;
                }
                j++;
            }
            if(j != i || !isconnected)
            {
                iscorrect = false;
                cout<<"NO "<<i + 1<<endl;
            }
        }
        if(iscorrect)
        {
            cout<<area<<endl;
        }
    }
    return 0;
}