#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int x;
int y;
int record;
int v_record;//统计邻接点的垃圾个数
int m_record;//统计4个角的垃圾个数
};
void find(node* m, node* n);
int main()
{
int m = 0;
scanf("%d", &m);
node* matrix = (node*)malloc(m*sizeof(node));
for (int i = 0; i < m; i++)
{
scanf("%d%d", &matrix[i].x, &matrix[i].y);
matrix[i].record = 0;
matrix[i].v_record = 0;
matrix[i].m_record = 0;
}
for (int i = 0; i < m; i++)
{
for (int j = 0; j < m; j++)
{
if(i!=j)
find(&matrix[i], &matrix[j]);
}
}
int s[5] = { 0 };
for (int i = 0; i < m; i++)
{
if (matrix[i].v_record == 4)
{
int k = matrix[i].m_record;
s[k]++;
}
}
for (int i = 0; i < 5; i++)
{
printf("%d\n", s[i]);
}
return 0;
}
void find(node* m, node* n)
{
if ((abs(m->x - n->x) == 1 && m->y == n->y)||((abs(m->y-n->y)==1)&&m->x==n->x))
{
m->v_record++;
}
if ((abs(m->x - n->x) == 1) && (abs(m->y - n->y) == 1))
{
m->m_record++;
}
}