#include <iostream>
#include <cstdio>
#include <map>
using namespace std;
const int maxn = 100010;
struct node
{
int x,y;
}Node[3010];
map<pair<int,int>, int> m;
bool select(int x, int y)
{
if(m[make_pair(x,y+1)] && m[make_pair(x, y-1)] && m[make_pair(x-1,y)] && m[make_pair(x + 1,y)]) return true;
else return false;
}
int score(int x, int y)
{
int s = 0;
if(m[make_pair(x-1,y+1)]) s++;
if(m[make_pair(x-1,y - 1)]) s++;
if(m[make_pair(x+1,y+1)]) s++;
if(m[make_pair(x+1,y-1)]) s++;
return s;
}
int main()
{
int n, x, y;
cin >> n;
int hash[6] = {0};
for(int i = 0; i < n; i++)
{
cin >> x >> y;
Node[i].x = x;
Node[i].y = y;
m[make_pair(x,y)] = 1;
}
for(int i = 0; i < n; i++)
{
if(select(Node[i].x, Node[i].y))
{
hash[score(Node[i].x, Node[i].y)]++;
}
}
for(int i = 0; i < 5; i++)
{
cout << hash[i] << endl;
}
return 0;
}