#include<stdio.h>
using namespace std;
#define max 1005
struct L{
int x;
int y;
};
L dustbin[max];
int main(){
int n;
scanf("%d",&n);
int i,j;
for(i=0;i<n;i++){
scanf("%d",&dustbin[i].x);
scanf("%d",&dustbin[i].y);
}
int a,b,c;
int judge[n];
for(i=0;i<n;i++){
a=dustbin[i].x;b=dustbin[i].y;
c=0;
for(j=0;j<n;j++){
if(a==dustbin[j].x){
if(dustbin[j].y==b-1){
c++;
}
if(dustbin[j].y==b+1){
c++;
}
}
if(b==dustbin[j].y){
if(dustbin[j].x==a-1){
c++;
}
if(dustbin[j].x==a+1){
c++;
}
}
}
if(c==4){
judge[i]=1;
}
else{
judge[i]=0;
}
}
int dust[5];
for(i=0;i<5;i++){
dust[i]=0;
}
int d;
for(i=0;i<n;i++){
d=0;
if(judge[i]==1){
a=dustbin[i].x;b=dustbin[i].y;
for(j=0;j<n;j++){
if(a-1==dustbin[j].x&&b+1==dustbin[j].y) d++;
if(a-1==dustbin[j].x&&b-1==dustbin[j].y) d++;
if(a+1==dustbin[j].x&&b+1==dustbin[j].y) d++;
if(a+1==dustbin[j].x&&b-1==dustbin[j].y) d++;
}
dust[d]++;
}
}
for(i=0;i<5;i++){
printf("%d\n",dust[i]);
}
}