#include<bits/stdc++.h>
using namespace std;
#define LL long long
int TEMX,TEMY;
struct point
{
    LL x,y;
    int id;
    point() {}
    point(LL a,LL b): x(a),y(b) {};
    point(LL a,LL b,int i): x(a),y(b),id(i) {}
    void input(int i=0)
    {
        scanf("%d%d",&TEMX,&TEMY);
        id=i;x=TEMX;y=TEMY;
    }
    void output()
    {
        printf("%d %lld %lld\n",id,x,y);
    }
    friend point operator + (point a,point b)
    {
        return point(a.x+b.x,a.y+b.y);
    }
    friend point operator - (point a,point b)
    {
        return point(a.x-b.x,a.y-b.y);
    }
    friend bool operator == (point a,point b)
    {
        return a.x==b.x && a.y==b.y;
    }
    friend point operator * (point a,LL b)
    {
        return point(a.x*b,a.y*b);
    }
    friend point operator * (LL a,point b)
    {
        return point(a*b.x,a*b.y);
    }
};
LL det(point a,point b)
{
    return a.x*b.y-a.y*b.x;
}
LL dot(point a,point b)
{
    return a.x*b.x+a.y*b.y;
}
struct polygon_convex
{
    vector<point> P;
    polygon_convex(int Size=0) {P.resize(Size);}
};
bool cmp_less(point a,point b)
{
    return a.x<b.x || a.x==b.x && a.y<b.y;
}
vector<point> a;
vector<point> ans;
void convex_hull()
{
    polygon_convex res(2*a.size()+5);
    sort(a.begin(),a.end(),cmp_less);
    a.erase(unique(a.begin(),a.end()),a.end());
    int m=0;
    for (int i=0;i<a.size();i++)
    {
        while (m>1 && det(res.P[m-1]-res.P[m-2],a[i]-res.P[m-2])<0) --m;
        res.P[m++]=a[i];
    }
    int k=m;
    for (int i=int(a.size())-2;i>=0;i--)
    {
        while (m>k && det(res.P[m-1]-res.P[m-2],a[i]-res.P[m-2])<0) --m;
        res.P[m++]=a[i];
    }
    res.P.resize(m);
    if (a.size()>1) res.P.resize(m-1);
    ans=res.P;
}

vector<point> p[411];
int n;
int cnt[411];
int w[411][411];

vector<int> turn;
int cnn[411];

int solve(int idl,int idr)
{
	int AL,AR;
	AL=idl;AR=idr;
    int tot=0;
    a.resize(0);
    //for (int i=0;i<p[idl].size();i++) a.push_back(p[idl][i]);
    //for (int i=0;i<p[idr].size();i++) a.push_back(p[idr][i]);
    
    int R=0,L=0;
    while (L<p[idl].size() || R<p[idr].size())
    {
    	if (L>=p[idl].size())
    	{
    		a.push_back(p[idr][R]);
    		R++;
		}
		else if (R>=p[idr].size())
		{
			a.push_back(p[idl][L]);
			L++;
		}
		else
		{
			if (cmp_less(p[idl][L],p[idr][R])==true)
			{
				a.push_back(p[idl][L]);
				L++;
			}
			else
			{
				a.push_back(p[idr][R]);
				R++;
			}
		}
	}
    
    
    
	//printf("ST: %d %d\n",idl,idr);
	//puts("AAA");
	//for (int i=0;i<a.size();i++) a[i].output();
    /*sort(a.begin(),a.end(),cmp_less);
    puts("AFTER");
    for (int i=0;i<a.size();i++) a[i].output();*/
    convex_hull();
    
    //puts("WHT?");
    //for (int i=0;i<ans.size();i++) ans[i].output();
    //puts("");
    
    int siz=ans.size();
    for (int i=0;i<siz;i++) ans.push_back(ans[i]);
    turn.resize(0);
    
    for (int i=0;i<siz;i++)
    {
    	idl=i-1+siz;idl%=siz;
    	idr=i+1;idr%=siz;
    	
    	if (det(ans[i]-ans[idl],ans[i]-ans[idr])!=0) turn.push_back(i);
	}
	turn.push_back(turn[0]+siz);
	
	//for (int i=1;i<turn.size();i++) printf("%d ",turn[i]);puts("");
	
	
	for (int i=0;i<turn.size()-1;i++)
	{
		cnn[AL]=cnn[AR]=0;
		cnn[ans[turn[i]].id]++;
		for (int j=turn[i]+1;j<=turn[i+1];j++)
		{
			cnn[ans[j].id]++;
		}
		if (cnn[AL]*cnn[AR]!=0) tot++;
	}
    
    
    
    
    return tot;
}
    
int main()
{
    //cout<<"*";
    scanf("%d",&n);
    point tem;
    for (int i=1;i<=n;i++)
    {
        scanf("%d",&cnt[i]);
        p[i].resize(0);
        for (int j=1;j<=cnt[i];j++)
        {
            tem.input(i);
            p[i].push_back(tem);
        }
        sort(p[i].begin(),p[i].end(),cmp_less);
    }
    /*for (int i=1;i<=n;i++)
    {
    	printf("FUCK %d\n",i);
    	for (int j=0;j<p[i].size();j++) p[i][j].output();
	}*/
    
    for (int i=1;i<=n;i++)
    {
        for (int j=i+1;j<=n;j++)
        {
            w[i][j]=w[j][i]=solve(i,j);
        }
    }
    for (int i=1;i<=n;i++)
    {
        for (int j=1;j<=n;j++)
        {
            printf("%d ",w[i][j]);
        }
        puts("");
    }
}
    
    
