#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> POINT;//点类型
vector<POINT> points;//点集合
bool find_point(int x,int y)//点是否存在
{
pair<int,int> p(x,y);
if(find(points.begin(),points.end(),p)!=points.end())
return true;
return false;
}
int main()
{
int n;
cin>>n;
int a[5]={0};
for(int i=0;i<n;i++)
{
POINT p;
cin>>p.first>>p.second;
points.push_back(p);
}
for(vector<POINT>::iterator ch=points.begin();ch!=points.end();ch++)
{
int x=ch->first;
int y=ch->second;
int grade=0;
if(x==0 || y==0)
continue;
if(find_point(x-1,y) && find_point(x+1,y) && find_point(x,y-1) && find_point(x,y+1) )
{
if(find_point(x+1,y+1))
grade++;
if(find_point(x-1,y+1))
grade++;
if(find_point(x+1,y-1))
grade++;
if(find_point(x-1,y-1))
grade++;
a[grade]++;
}
}
for(int i=0;i<5;i++)
cout<<a[i]<<endl;
return 0;
}
/*
7
1 2
2 1
0 0
1 1
1 0
2 0
0 1
2
0 0
-100000 10
11
9 10
10 10
11 10
12 10
13 10
11 9
11 8
12 9
10 9
10 11
12 11
*/