#include<bits/stdc++.h>
using namespace std;
struct point{
long long x;
long long y;
int flag;
};
bool is_build(int x,int y,int n,point arr[])//判断建不建站
{
int temp=0;
for(int i=0;i<n;i++)
{
if(arr[i].x==x&&arr[i].y==y-1)
{
temp++;
}
if(arr[i].x==x&&arr[i].y==y+1)
{
temp++;
}
if(arr[i].x==x-1&&arr[i].y==y)
{
temp++;
}
if(arr[i].x==x+1&&arr[i].y==y)
{
temp++;
}
}
if(temp==4)
return true;
else
return false;
}
int count(int x,int y,int n,point arr[])//打分
{
int temp=0;
for(int i=0;i<n;i++)
{
if(arr[i].x==x+1&&arr[i].y==y-1)
{
temp++;
}
if(arr[i].x==x+1&&arr[i].y==y+1)
{
temp++;
}
if(arr[i].x==x-1&&arr[i].y==y+1)
{
temp++;
}
if(arr[i].x==x-1&&arr[i].y==y-1)
{
temp++;
}
}
return temp;
}
int main()
{
int n;
cin>>n;
point arr[n];
int a[5]={};
for(int i=0;i<n;i++)
{
cin>>arr[i].x>>arr[i].y;
arr[i].flag=0;
}
for(int i=0;i<n;i++)
{
if(is_build(arr[i].x,arr[i].y,n,arr))
{
arr[i].flag=1;
}
}
for(int i=0;i<n;i++)
{
if(arr[i].flag==1)
{
int temp=count(arr[i].x,arr[i].y,n,arr);
a[temp]++;
}
}
for(int i=0;i<5;i++)
{
cout<<a[i]<<endl;
}
return 0;
}